#!/usr/bin/env bash
set -eu
os=$(uname -s)
linux_headless() {
  case "${DGE_ENROLL_HEADLESS:-}" in 1|true|yes|TRUE|YES) return 0 ;; esac
  [ -z "${DISPLAY:-}" ] && [ -z "${WAYLAND_DISPLAY:-}" ]
}
if [ "$os" != Linux ] && [ "$os" != Darwin ]; then
  echo 'This file is for Linux, macOS, or Ubuntu in WSL. On Windows, download Dorian Gray Worker.cmd from the setup page and open it.'
  exit 1
fi
if [ "$os" = Linux ] && [ ! -d /run/systemd/system ]; then
  echo 'This installer needs a Linux machine running systemd.'
  exit 1
fi
if [ "$os" = Darwin ] && [ "$(id -u)" -eq 0 ]; then
  echo 'Do not run this installer with sudo on a Mac. Run it as yourself.'
  exit 1
fi
if [ "$os" = Linux ] && [ "$(id -u)" -ne 0 ]; then
  echo 'Your computer may ask for its administrator password. It stays on this computer.'
  if ! linux_headless && command -v pkexec >/dev/null 2>&1 && { [ -n "${DISPLAY:-}" ] || [ -n "${WAYLAND_DISPLAY:-}" ]; }; then
    exec pkexec env DISPLAY="${DISPLAY:-}" WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-}" XAUTHORITY="${XAUTHORITY:-}" \
      DGE_ENROLL_NAME="${DGE_ENROLL_NAME:-}" DGE_ENROLL_EMAIL="${DGE_ENROLL_EMAIL:-}" \
      DGE_ENROLL_PHONE="${DGE_ENROLL_PHONE:-}" DGE_ENROLL_NOTE="${DGE_ENROLL_NOTE:-}" \
      DGE_ENROLL_HEADLESS="${DGE_ENROLL_HEADLESS:-}" bash "$0"
  fi
  exec sudo \
    DGE_ENROLL_NAME="${DGE_ENROLL_NAME:-}" DGE_ENROLL_EMAIL="${DGE_ENROLL_EMAIL:-}" \
    DGE_ENROLL_PHONE="${DGE_ENROLL_PHONE:-}" DGE_ENROLL_NOTE="${DGE_ENROLL_NOTE:-}" \
    DGE_ENROLL_HEADLESS="${DGE_ENROLL_HEADLESS:-}" bash "$0"
fi
gui_user="${SUDO_USER:-}"
if [ -z "$gui_user" ] && [ -n "${PKEXEC_UID:-}" ]; then
  gui_user=$(getent passwd "$PKEXEC_UID" | cut -d: -f1 || true)
fi
unset DOCKER_HOST DOCKER_CONTEXT
python_bin=python3
umask 077
printf '\nDGE Worker Setup\nPreparing this computer to run background tasks.\n\n'
macos_python() {
  local candidate
  local globbed
  globbed=()
  shopt -s nullglob
  globbed+=(
    /usr/local/Cellar/python@3.12/*/bin/python3.12
    /usr/local/Cellar/python@3.13/*/bin/python3.13
    /opt/homebrew/Cellar/python@3.12/*/bin/python3.12
    /opt/homebrew/Cellar/python@3.13/*/bin/python3.13
  )
  shopt -u nullglob
  for candidate in "${globbed[@]}" \
      /usr/local/opt/python@3.12/bin/python3.12 \
      /usr/local/opt/python@3.13/bin/python3.13 \
      /opt/homebrew/opt/python@3.12/bin/python3.12 \
      /opt/homebrew/opt/python@3.13/bin/python3.13 \
      /usr/local/bin/python3 \
      /opt/homebrew/bin/python3 \
      /usr/bin/python3 \
      python3; do
    if [ -x "$candidate" ] && "$candidate" -c 'import sys' >/dev/null 2>&1; then
      echo "$candidate"
      return 0
    fi
  done
  return 1
}
if [ "$os" = Darwin ]; then
  export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
  if [ -n "${SSH_CONNECTION:-}" ] && [ "${DGE_MAC_AQUA_LAUNCHED:-}" != 1 ]; then
    case "${DGE_ENROLL_HEADLESS:-}" in 1|true|yes|TRUE|YES) ;; *)
      script_file=$(cd "$(dirname "$0")" && pwd)/$(basename "$0")
      inner=$(printf 'export DGE_MAC_AQUA_LAUNCHED=1; exec bash %q' "$script_file")
      as=${inner//\\/\\\\}
      as=${as//\"/\\\"}
      osascript -e 'tell application "Terminal" to activate' \
        -e "tell application \"Terminal\" to do script \"$as\""
      exit 0
    ;; esac
  fi
  python_bin=$(macos_python) || python_bin=""
  if [ -z "$python_bin" ]; then
    echo 'This Mac needs Python 3. Install it from https://www.python.org/downloads/macos/ or Homebrew (brew install python), then run this installer again.'
    exit 1
  fi
  setup_directory=$(mktemp -d "${TMPDIR:-/tmp}/dge-worker-install.XXXXXX")
else
  if ! python3 -c 'import sys; assert sys.version_info >= (3, 11)' >/dev/null 2>&1; then
    . /etc/os-release
    case "${ID}:${VERSION_ID}" in
      ubuntu:24.*|ubuntu:25.*|ubuntu:26.*|debian:12|debian:13)
        echo 'Installing Python. This may take a few minutes...'
        apt-get update -qq && apt-get install -y -qq python3 ca-certificates || { echo 'Python installation failed. Check your internet connection and run setup again.'; exit 1; }
        ;;
      *) echo 'This Linux version needs Python 3.11 or newer installed first. Ask your administrator for help, then run this installer again.'; exit 1 ;;
    esac
  fi
  python3 -c 'import sys; assert sys.version_info >= (3, 11)' || { echo 'Python 3.11 or newer is required.'; exit 1; }
  setup_directory=$(mktemp -d /run/dge-worker-install.XXXXXX)
fi
trap 'rm -rf "$setup_directory"' EXIT
cat > "$setup_directory/payload" <<'DGE_SETUP_PAYLOAD'
eyJob3N0X2FwcC5weSI6IiMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblwiXCJcIkluc3RhbGwgYSBkdXJhYmxlIERvcmlhbiBHcmF5IFdvcmtlciBsYXVuY2hlciBzbyB2b2x1bnRlZXJzIHJlb3BlbiBpdCBsaWtlIGFueSBvdGhlciBhcHAuXCJcIlwiXG5pbXBvcnQgYmFzZTY0XG5pbXBvcnQganNvblxuaW1wb3J0IG9zXG5pbXBvcnQgcHdkXG5pbXBvcnQgc2hsZXhcbmltcG9ydCBzaHV0aWxcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdXJsbGliLmVycm9yXG5pbXBvcnQgdXJsbGliLnJlcXVlc3RcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuXG5BUFBfTkFNRSA9ICdEb3JpYW4gR3JheSBXb3JrZXInXG5BUFBfSUQgPSAnY29tLmRnZS53b3JrZXInXG5MSU5VWF9JQ09OX05BTUUgPSAnZGdlLXdvcmtlci1zZXR1cCdcbkxJTlVYX1dNX0NMQVNTID0gJ0RHRVdvcmtlclNldHVwJ1xuSE9TVF9BUFBfRU5WID0gJ0RHRV9IT1NUX0FQUCdcbkZJTEVTID0gKFxuICAgICdob3N0X2FwcC5weScsXG4gICAgJ2hvc3RfZ3VpLnB5JyxcbiAgICAnaG9zdF93ZWIuaHRtbCcsXG4gICAgJ2hvc3RfaW52ZW50b3J5LnB5JyxcbiAgICAnaG9zdF9pbnZlbnRvcnkucHMxJyxcbiAgICAnZGdlLWljb24ucG5nJyxcbiAgICAnZGdlLWljb24uaWNvJyxcbiAgICAnZGdlLWljb24ueHBtJyxcbiAgICAnY29uZmlnLmpzb24nLFxuICAgICdpbnN0YWxsLnB5JyxcbiAgICAnaW5zdGFsbF9tYWNvcy5weScsXG4gICAgJ21hY29zX3IyX3Byb3h5LnB5JyxcbiAgICAncHJlcGFyZV9tYWNoaW5lLnB5JyxcbiAgICAnc2V0dXAucHknLFxuICAgICdhZ2VudC5weScsXG4gICAgJ2xhdW5jaGVyLnB5JyxcbiAgICAnY29uZmlndXJlX2NpLnB5JyxcbiAgICAnaW52aXRhdGlvbi5qc29uJyxcbilcblJFRlJFU0hfTkFNRVMgPSAoXG4gICAgJ2hvc3RfYXBwLnB5JyxcbiAgICAnaG9zdF9ndWkucHknLFxuICAgICdob3N0X3dlYi5odG1sJyxcbiAgICAnaG9zdF9pbnZlbnRvcnkucHknLFxuICAgICdob3N0X2ludmVudG9yeS5wczEnLFxuICAgICdzZXR1cC5weScsXG4gICAgJ2luc3RhbGwucHknLFxuICAgICdpbnN0YWxsX21hY29zLnB5JyxcbiAgICAnbWFjb3NfcjJfcHJveHkucHknLFxuICAgICdwcmVwYXJlX21hY2hpbmUucHknLFxuICAgICdsYXVuY2hlci5weScsXG4gICAgJ2NvbmZpZ3VyZV9jaS5weScsXG4gICAgJ2FnZW50LnB5JyxcbiAgICAnZGdlLWljb24ucG5nJyxcbiAgICAnZGdlLWljb24uaWNvJyxcbiAgICAnZGdlLWljb24ueHBtJyxcbilcblxuXG5kZWYgc291cmNlX3Jvb3QoKTpcbiAgICByZXR1cm4gUGF0aChfX2ZpbGVfXykucmVzb2x2ZSgpLnBhcmVudFxuXG5cbmRlZiBydW5uaW5nX2luX3dzbCgpOlxuICAgIGlmIG9zLmVudmlyb24uZ2V0KCdXU0xfRElTVFJPX05BTUUnKTpcbiAgICAgICAgcmV0dXJuIFRydWVcbiAgICB0cnk6XG4gICAgICAgIHJldHVybiAnbWljcm9zb2Z0JyBpbiBQYXRoKCcvcHJvYy92ZXJzaW9uJykucmVhZF90ZXh0KCkubG93ZXIoKVxuICAgIGV4Y2VwdCBPU0Vycm9yOlxuICAgICAgICByZXR1cm4gRmFsc2VcblxuXG5kZWYgZ3VpX3VzZXIoKTpcbiAgICBpZiBvcy5nZXRldWlkKCkgIT0gMDpcbiAgICAgICAgcmV0dXJuIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSlcbiAgICBuYW1lID0gb3MuZW52aXJvbi5nZXQoJ1NVRE9fVVNFUicpXG4gICAgaWYgbmFtZSBhbmQgbmFtZSAhPSAncm9vdCc6XG4gICAgICAgIHJldHVybiBwd2QuZ2V0cHduYW0obmFtZSlcbiAgICB1aWQgPSBvcy5lbnZpcm9uLmdldCgnUEtFWEVDX1VJRCcpXG4gICAgaWYgdWlkIGFuZCB1aWQuaXNkaWdpdCgpIGFuZCBpbnQodWlkKSAhPSAwOlxuICAgICAgICByZXR1cm4gcHdkLmdldHB3dWlkKGludCh1aWQpKVxuICAgIHJldHVybiBwd2QuZ2V0cHd1aWQoMClcblxuXG5kZWYgZ3VpX2hvbWUoKTpcbiAgICByZXR1cm4gUGF0aChndWlfdXNlcigpLnB3X2RpcilcblxuXG5kZWYgbWFjX2FwcF9idW5kbGUoKTpcbiAgICByZXR1cm4gZ3VpX2hvbWUoKSAvICdBcHBsaWNhdGlvbnMnIC8gKEFQUF9OQU1FICsgJy5hcHAnKVxuXG5cbmRlZiBhcHBfaW5zdGFsbF9kaXIoKTpcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIHJldHVybiBtYWNfYXBwX2J1bmRsZSgpIC8gJ0NvbnRlbnRzJyAvICdSZXNvdXJjZXMnIC8gJ2FwcCdcbiAgICBpZiBydW5uaW5nX2luX3dzbCgpOlxuICAgICAgICByZXR1cm4gUGF0aCgnL29wdC9kZ2Utd29ya2VyL2hvc3QtdWknKVxuICAgIHJldHVybiBndWlfaG9tZSgpIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2RnZS13b3JrZXInIC8gJ2hvc3QtdWknXG5cblxuZGVmIHB5dGhvbl9mb3JfbGF1bmNoKCk6XG4gICAgZXhlID0gUGF0aChzeXMuZXhlY3V0YWJsZSkucmVzb2x2ZSgpXG4gICAgaWYgZXhlLm5hbWUgPT0gJ1B5dGhvbicgYW5kICdQeXRob24uYXBwJyBpbiBzdHIoZXhlKTpcbiAgICAgICAgY2FuZGlkYXRlID0gZXhlLnBhcmVudHNbM10gLyAnYmluJyAvICdweXRob24zJ1xuICAgICAgICBpZiBjYW5kaWRhdGUuZXhpc3RzKCk6XG4gICAgICAgICAgICByZXR1cm4gc3RyKGNhbmRpZGF0ZSlcbiAgICByZXR1cm4gc3RyKGV4ZSlcblxuXG5kZWYgY2hvd25fdHJlZShwYXRoLCB1c2VyKTpcbiAgICBpZiBvcy5nZXRldWlkKCkgIT0gMCBvciB1c2VyLnB3X3VpZCA9PSAwOlxuICAgICAgICByZXR1cm5cbiAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKTpcbiAgICAgICAgb3MuY2hvd24ocm9vdCwgdXNlci5wd191aWQsIHVzZXIucHdfZ2lkKVxuICAgICAgICBmb3IgbmFtZSBpbiBkaXJzICsgZmlsZXM6XG4gICAgICAgICAgICBvcy5jaG93bihvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSksIHVzZXIucHdfdWlkLCB1c2VyLnB3X2dpZClcblxuXG5kZWYgY29weV9hcHBfZmlsZXMoZGVzdCwgc2NyaXB0X3BhdGgpOlxuICAgIGRlc3QubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGRlc3QuY2htb2QoMG83NTUpXG4gICAgaWYgc3RyKGRlc3QpLnN0YXJ0c3dpdGgoJy9vcHQvZGdlLXdvcmtlcicpOlxuICAgICAgICBkZXN0LnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgICAgIGRlc3QucGFyZW50LmNobW9kKDBvNzU1KVxuICAgIHNyY19yb290ID0gc291cmNlX3Jvb3QoKVxuICAgIGZvciBuYW1lIGluIEZJTEVTOlxuICAgICAgICBzcmMgPSBzcmNfcm9vdCAvIG5hbWVcbiAgICAgICAgaWYgbm90IHNyYy5leGlzdHMoKTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHRhcmdldCA9IGRlc3QgLyBuYW1lXG4gICAgICAgIGlmIHNyYy5yZXNvbHZlKCkgPT0gdGFyZ2V0LnJlc29sdmUoKTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGlmIG5hbWUgPT0gJ2ludml0YXRpb24uanNvbicgYW5kIHRhcmdldC5leGlzdHMoKTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHNodXRpbC5jb3B5MihzcmMsIHRhcmdldClcbiAgICBpbnN0YWxsZXIgPSBQYXRoKHNjcmlwdF9wYXRoKSBpZiBzY3JpcHRfcGF0aCBlbHNlIE5vbmVcbiAgICBpZiBpbnN0YWxsZXIgYW5kIGluc3RhbGxlci5leGlzdHMoKSBhbmQgaW5zdGFsbGVyLnN1ZmZpeCBpbiAoJy5zaCcsICcuY29tbWFuZCcsICcucHMxJywgJy5jbWQnKTpcbiAgICAgICAgdGFyZ2V0ID0gZGVzdCAvICgnc2V0dXAtd29ya2VyJyArIGluc3RhbGxlci5zdWZmaXgpXG4gICAgICAgIGlmIGluc3RhbGxlci5yZXNvbHZlKCkgIT0gdGFyZ2V0LnJlc29sdmUoKTpcbiAgICAgICAgICAgIHNodXRpbC5jb3B5MihpbnN0YWxsZXIsIHRhcmdldClcbiAgICAoZGVzdCAvICdweXRob24ucGF0aCcpLndyaXRlX3RleHQocHl0aG9uX2Zvcl9sYXVuY2goKSArICdcXG4nKVxuICAgIGZvciBwYXRoIGluIGRlc3QuaXRlcmRpcigpOlxuICAgICAgICBpZiBwYXRoLnN1ZmZpeCBpbiAoJy5qc29uJywpOlxuICAgICAgICAgICAgcGF0aC5jaG1vZCgwbzYwMClcbiAgICAgICAgZWxpZiBwYXRoLmlzX2ZpbGUoKTpcbiAgICAgICAgICAgIHBhdGguY2htb2QoMG83NTUgaWYgcGF0aC5zdWZmaXggaW4gKCcucHknLCAnLnNoJywgJy5jb21tYW5kJykgZWxzZSAwbzY0NClcblxuXG5kZWYgY29uZmlndXJlZF9vcmlnaW4oKTpcbiAgICBwYXRoID0gc291cmNlX3Jvb3QoKSAvICdjb25maWcuanNvbidcbiAgICBpZiBub3QgcGF0aC5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICB0cnk6XG4gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHBhdGgucmVhZF90ZXh0KCkpLmdldCgnb3JpZ2luJylcbiAgICBleGNlcHQgKE9TRXJyb3IsIGpzb24uSlNPTkRlY29kZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgZmlsZV9ieXRlcyhlbnRyeSk6XG4gICAgYm9keSA9IChlbnRyeSBvciB7fSkuZ2V0KCdib2R5JylcbiAgICBlbmNvZGluZyA9IChlbnRyeSBvciB7fSkuZ2V0KCdlbmNvZGluZycpXG4gICAgaWYgZW5jb2RpbmcgPT0gJ2Jhc2U2NCcgYW5kIGlzaW5zdGFuY2UoYm9keSwgc3RyKTpcbiAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUoYm9keSlcbiAgICBpZiBlbmNvZGluZyA9PSAndXRmLTgnIGFuZCBpc2luc3RhbmNlKGJvZHksIHN0cik6XG4gICAgICAgIHJldHVybiBib2R5LmVuY29kZSgpXG4gICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgcmVmcmVzaF9mcm9tX29yaWdpbihvcmlnaW49Tm9uZSk6XG4gICAgb3JpZ2luID0gb3JpZ2luIG9yIGNvbmZpZ3VyZWRfb3JpZ2luKClcbiAgICBpZiBub3Qgb3JpZ2luOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICB0cnk6XG4gICAgICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KFxuICAgICAgICAgICAgb3JpZ2luLnJzdHJpcCgnLycpICsgJy9jb21wdXRlX2ZsZWV0L2Rvd25sb2FkL2hvc3RfZmlsZXMnLFxuICAgICAgICAgICAgaGVhZGVycz17J25ncm9rLXNraXAtYnJvd3Nlci13YXJuaW5nJzogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTI4LjAuMC4wIFNhZmFyaS81MzcuMzYnfSxcbiAgICAgICAgKVxuICAgICAgICB3aXRoIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgdGltZW91dD0xNSkgYXMgcmVzcG9uc2U6XG4gICAgICAgICAgICBwYXlsb2FkID0ganNvbi5sb2FkcyhyZXNwb25zZS5yZWFkKDJfMDk3XzE1MikpXG4gICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yLCBqc29uLkpTT05EZWNvZGVFcnJvciwgdXJsbGliLmVycm9yLlVSTEVycm9yKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgZGVzdCA9IHNvdXJjZV9yb290KClcbiAgICBjaGFuZ2VkID0gRmFsc2VcbiAgICBmb3IgbmFtZSwgZW50cnkgaW4gKHBheWxvYWQuZ2V0KCdmaWxlcycpIG9yIHt9KS5pdGVtcygpOlxuICAgICAgICBpZiBuYW1lIG5vdCBpbiBSRUZSRVNIX05BTUVTIG9yICcvJyBpbiBuYW1lIG9yIG5hbWUuc3RhcnRzd2l0aCgnLicpOlxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgZGF0YSA9IGZpbGVfYnl0ZXMoZW50cnkpXG4gICAgICAgIGlmIGRhdGEgaXMgTm9uZTpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHRhcmdldCA9IGRlc3QgLyBuYW1lXG4gICAgICAgIGlmIHRhcmdldC5leGlzdHMoKSBhbmQgdGFyZ2V0LnJlYWRfYnl0ZXMoKSA9PSBkYXRhOlxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgdGVtcG9yYXJ5ID0gZGVzdCAvIChuYW1lICsgJy5uZXcnKVxuICAgICAgICB0ZW1wb3Jhcnkud3JpdGVfYnl0ZXMoZGF0YSlcbiAgICAgICAgdGVtcG9yYXJ5LnJlcGxhY2UodGFyZ2V0KVxuICAgICAgICBpZiB0YXJnZXQuc3VmZml4ID09ICcucHknOlxuICAgICAgICAgICAgdGFyZ2V0LmNobW9kKDBvNzU1KVxuICAgICAgICBjaGFuZ2VkID0gVHJ1ZVxuICAgIHJldHVybiBjaGFuZ2VkXG5cblxuZGVmIHdyaXRlX21hY19pY25zKHBuZywgaWNucyk6XG4gICAgaWYgbm90IHBuZy5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaWNvbnNldCA9IGljbnMucGFyZW50IC8gJ2RnZS5pY29uc2V0J1xuICAgIGlmIGljb25zZXQuZXhpc3RzKCk6XG4gICAgICAgIHNodXRpbC5ybXRyZWUoaWNvbnNldClcbiAgICBpY29uc2V0Lm1rZGlyKClcbiAgICBmb3Igc2l6ZSwgbmFtZSBpbiAoXG4gICAgICAgICgxNiwgJ2ljb25fMTZ4MTYucG5nJyksXG4gICAgICAgICgzMiwgJ2ljb25fMTZ4MTZAMngucG5nJyksXG4gICAgICAgICgzMiwgJ2ljb25fMzJ4MzIucG5nJyksXG4gICAgICAgICg2NCwgJ2ljb25fMzJ4MzJAMngucG5nJyksXG4gICAgICAgICgxMjgsICdpY29uXzEyOHgxMjgucG5nJyksXG4gICAgICAgICgyNTYsICdpY29uXzEyOHgxMjhAMngucG5nJyksXG4gICAgICAgICgyNTYsICdpY29uXzI1NngyNTYucG5nJyksXG4gICAgICAgICg1MTIsICdpY29uXzI1NngyNTZAMngucG5nJyksXG4gICAgICAgICg1MTIsICdpY29uXzUxMng1MTIucG5nJyksXG4gICAgICAgICgxMDI0LCAnaWNvbl81MTJ4NTEyQDJ4LnBuZycpLFxuICAgICk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFxuICAgICAgICAgICAgWydzaXBzJywgJy16Jywgc3RyKHNpemUpLCBzdHIoc2l6ZSksIHN0cihwbmcpLCAnLS1vdXQnLCBzdHIoaWNvbnNldCAvIG5hbWUpXSxcbiAgICAgICAgICAgIGNoZWNrPUZhbHNlLFxuICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgIClcbiAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgWydpY29udXRpbCcsICctYycsICdpY25zJywgc3RyKGljb25zZXQpLCAnLW8nLCBzdHIoaWNucyldLFxuICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICApXG4gICAgc2h1dGlsLnJtdHJlZShpY29uc2V0LCBpZ25vcmVfZXJyb3JzPVRydWUpXG4gICAgaWYgcmVzdWx0LnJldHVybmNvZGUgPT0gMCBhbmQgaWNucy5leGlzdHMoKSBhbmQgaWNucy5zdGF0KCkuc3Rfc2l6ZSA+IDA6XG4gICAgICAgIHJldHVybiBUcnVlXG4gICAgaWYgc2h1dGlsLndoaWNoKCdzaXBzJyk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFxuICAgICAgICAgICAgWydzaXBzJywgJy1zJywgJ2Zvcm1hdCcsICdpY25zJywgc3RyKHBuZyksICctLW91dCcsIHN0cihpY25zKV0sXG4gICAgICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICApXG4gICAgcmV0dXJuIGljbnMuZXhpc3RzKCkgYW5kIGljbnMuc3RhdCgpLnN0X3NpemUgPiAwXG5cblxuZGVmIHdyaXRlX21hY19hcHAoZGVzdCk6XG4gICAgYnVuZGxlID0gbWFjX2FwcF9idW5kbGUoKVxuICAgIG1hY29zID0gYnVuZGxlIC8gJ0NvbnRlbnRzJyAvICdNYWNPUydcbiAgICByZXNvdXJjZXMgPSBidW5kbGUgLyAnQ29udGVudHMnIC8gJ1Jlc291cmNlcydcbiAgICBtYWNvcy5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgcmVzb3VyY2VzLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBweXRob24gPSBweXRob25fZm9yX2xhdW5jaCgpXG4gICAgbGF1bmNoZXIgPSBtYWNvcyAvICdkZ2Utd29ya2VyJ1xuICAgIHNjcmlwdCA9IGRlc3QgLyAnc2V0dXAtd29ya2VyLmNvbW1hbmQnXG4gICAgaWYgbm90IHNjcmlwdC5leGlzdHMoKTpcbiAgICAgICAgc2NyaXB0ID0gZGVzdCAvICdzZXR1cC13b3JrZXIuc2gnXG4gICAgaWYgbm90IHNjcmlwdC5leGlzdHMoKTpcbiAgICAgICAgc2NyaXB0ID0gZGVzdCAvICdob3N0X2d1aS5weSdcbiAgICBsYXVuY2hlci53cml0ZV90ZXh0KFxuICAgICAgICAnIyEvYmluL2Jhc2hcXG4nXG4gICAgICAgICdleHBvcnQgREdFX0hPU1RfQVBQPTFcXG4nXG4gICAgICAgICdleHBvcnQgREdFX01BQ19BUVVBX0xBVU5DSEVEPTFcXG4nXG4gICAgICAgICdjZCBcIiQoZGlybmFtZSBcIiQwXCIpLy4uL1Jlc291cmNlcy9hcHBcIlxcbidcbiAgICAgICAgJ1BZVEhPTj0kKGNhdCBweXRob24ucGF0aCAyPi9kZXYvbnVsbCB8fCBlY2hvICVzKVxcbidcbiAgICAgICAgJ2V4ZWMgXCIkUFlUSE9OXCIgaG9zdF9ndWkucHkgJXNcXG4nXG4gICAgICAgICUgKHNobGV4LnF1b3RlKHB5dGhvbiksIHNobGV4LnF1b3RlKHNjcmlwdC5uYW1lKSlcbiAgICApXG4gICAgbGF1bmNoZXIuY2htb2QoMG83NTUpXG4gICAgaWNvbiA9IGRlc3QgLyAnZGdlLWljb24ucG5nJ1xuICAgIGljbnMgPSByZXNvdXJjZXMgLyAnZGdlLWljb24uaWNucydcbiAgICB3cml0ZV9tYWNfaWNucyhpY29uLCBpY25zKVxuICAgIGlmIGljb24uZXhpc3RzKCk6XG4gICAgICAgIHNodXRpbC5jb3B5MihpY29uLCByZXNvdXJjZXMgLyAnZGdlLWljb24ucG5nJylcbiAgICBpY29uX2tleSA9ICdkZ2UtaWNvbicgaWYgaWNucy5leGlzdHMoKSBhbmQgaWNucy5zdGF0KCkuc3Rfc2l6ZSA+IDAgZWxzZSAnZGdlLWljb24ucG5nJ1xuICAgIHBsaXN0ID0gYnVuZGxlIC8gJ0NvbnRlbnRzJyAvICdJbmZvLnBsaXN0J1xuICAgIHBsaXN0LndyaXRlX3RleHQoJycnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG48IURPQ1RZUEUgcGxpc3QgUFVCTElDIFwiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOXCIgXCJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkXCI+XG48cGxpc3QgdmVyc2lvbj1cIjEuMFwiPjxkaWN0PlxuICA8a2V5PkNGQnVuZGxlTmFtZTwva2V5PjxzdHJpbmc+JXM8L3N0cmluZz5cbiAgPGtleT5DRkJ1bmRsZURpc3BsYXlOYW1lPC9rZXk+PHN0cmluZz4lczwvc3RyaW5nPlxuICA8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PjxzdHJpbmc+JXM8L3N0cmluZz5cbiAgPGtleT5DRkJ1bmRsZVZlcnNpb248L2tleT48c3RyaW5nPjI8L3N0cmluZz5cbiAgPGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PjxzdHJpbmc+MS4xPC9zdHJpbmc+XG4gIDxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PjxzdHJpbmc+QVBQTDwvc3RyaW5nPlxuICA8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PjxzdHJpbmc+ZGdlLXdvcmtlcjwvc3RyaW5nPlxuICA8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT48c3RyaW5nPiVzPC9zdHJpbmc+XG4gIDxrZXk+Q0ZCdW5kbGVJY29uTmFtZTwva2V5PjxzdHJpbmc+ZGdlLWljb248L3N0cmluZz5cbiAgPGtleT5MU01pbmltdW1TeXN0ZW1WZXJzaW9uPC9rZXk+PHN0cmluZz4xMi4wPC9zdHJpbmc+XG4gIDxrZXk+TlNIaWdoUmVzb2x1dGlvbkNhcGFibGU8L2tleT48dHJ1ZS8+XG48L2RpY3Q+PC9wbGlzdD5cbicnJyAlIChBUFBfTkFNRSwgQVBQX05BTUUsIEFQUF9JRCwgaWNvbl9rZXkpKVxuICAgIHN1YnByb2Nlc3MucnVuKFsndG91Y2gnLCBzdHIoYnVuZGxlKV0sIGNoZWNrPUZhbHNlKVxuICAgIGxzcmVnaXN0ZXIgPSBQYXRoKFxuICAgICAgICAnL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzLydcbiAgICAgICAgJ0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9TdXBwb3J0L2xzcmVnaXN0ZXInXG4gICAgKVxuICAgIGlmIGxzcmVnaXN0ZXIuZXhpc3RzKCk6XG4gICAgICAgIHN1YnByb2Nlc3MucnVuKFtzdHIobHNyZWdpc3RlciksICctZicsIHN0cihidW5kbGUpXSwgY2hlY2s9RmFsc2UpXG4gICAgY2hvd25fdHJlZShidW5kbGUsIGd1aV91c2VyKCkpXG5cblxuZGVmIHdyaXRlX2xpbnV4X2Rlc2t0b3AoZGVzdCwgc2NyaXB0X3BhdGgpOlxuICAgIGljb25fc3JjID0gZGVzdCAvICdkZ2UtaWNvbi5wbmcnXG4gICAgaWYgbm90IGljb25fc3JjLmV4aXN0cygpOlxuICAgICAgICByZXR1cm5cbiAgICBob21lID0gZ3VpX2hvbWUoKVxuICAgIGFwcHNfZGlyID0gaG9tZSAvICcubG9jYWwnIC8gJ3NoYXJlJyAvICdhcHBsaWNhdGlvbnMnXG4gICAgYXBwc19kaXIubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGZvciBzaXplIGluICg0OCwgMTI4LCAyNTYpOlxuICAgICAgICBpY29uX2RpciA9IGhvbWUgLyAnLmxvY2FsJyAvICdzaGFyZScgLyAnaWNvbnMnIC8gJ2hpY29sb3InIC8gZid7c2l6ZX14e3NpemV9JyAvICdhcHBzJ1xuICAgICAgICBpY29uX2Rpci5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgICAgIHRhcmdldCA9IGljb25fZGlyIC8gKExJTlVYX0lDT05fTkFNRSArICcucG5nJylcbiAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdjb252ZXJ0Jyk6XG4gICAgICAgICAgICBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgICAgICAgICBbJ2NvbnZlcnQnLCBzdHIoaWNvbl9zcmMpLCAnLXJlc2l6ZScsIGYne3NpemV9eHtzaXplfScsIHN0cih0YXJnZXQpXSxcbiAgICAgICAgICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgICAgICApXG4gICAgICAgIGVsaWYgbm90IHRhcmdldC5leGlzdHMoKTpcbiAgICAgICAgICAgIHNodXRpbC5jb3B5MihpY29uX3NyYywgdGFyZ2V0KVxuICAgIHBpeG1hcHMgPSBob21lIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ3BpeG1hcHMnXG4gICAgcGl4bWFwcy5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgc2h1dGlsLmNvcHkyKGljb25fc3JjLCBwaXhtYXBzIC8gKExJTlVYX0lDT05fTkFNRSArICcucG5nJykpXG4gICAgaWNvbl8xMjggPSBob21lIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2ljb25zJyAvICdoaWNvbG9yJyAvICcxMjh4MTI4JyAvICdhcHBzJyAvIChMSU5VWF9JQ09OX05BTUUgKyAnLnBuZycpXG4gICAgaWNvbl9wYXRoID0gc3RyKGljb25fMTI4IGlmIGljb25fMTI4LmV4aXN0cygpIGVsc2UgcGl4bWFwcyAvIChMSU5VWF9JQ09OX05BTUUgKyAnLnBuZycpKVxuICAgIHNjcmlwdCA9IGRlc3QgLyAnc2V0dXAtd29ya2VyLnNoJ1xuICAgIGlmIG5vdCBzY3JpcHQuZXhpc3RzKCk6XG4gICAgICAgIHNjcmlwdCA9IFBhdGgoc2NyaXB0X3BhdGgpIGlmIHNjcmlwdF9wYXRoIGVsc2UgZGVzdCAvICdob3N0X2d1aS5weSdcbiAgICBweXRob24gPSAoZGVzdCAvICdweXRob24ucGF0aCcpLnJlYWRfdGV4dCgpLnN0cmlwKCkgaWYgKGRlc3QgLyAncHl0aG9uLnBhdGgnKS5leGlzdHMoKSBlbHNlIHB5dGhvbl9mb3JfbGF1bmNoKClcbiAgICBleGVjX3BhcnRzID0gW1xuICAgICAgICAnZW52JyxcbiAgICAgICAgSE9TVF9BUFBfRU5WICsgJz0xJyxcbiAgICAgICAgJ0RHRV9MSU5VWF9ERVNLVE9QX0xBVU5DSEVEPTEnLFxuICAgICAgICAnR0RLX0JBQ0tFTkQ9eDExJyxcbiAgICAgICAgcHl0aG9uLFxuICAgICAgICBzdHIoZGVzdCAvICdob3N0X2d1aS5weScpLFxuICAgICAgICBzdHIoc2NyaXB0KSxcbiAgICBdXG4gICAgZGVza3RvcCA9ICcnJ1tEZXNrdG9wIEVudHJ5XVxuVmVyc2lvbj0xLjBcblR5cGU9QXBwbGljYXRpb25cbk5hbWU9JXNcbkNvbW1lbnQ9TGVuZCB0aGlzIGNvbXB1dGVyIGFzIGEgRG9yaWFuIEdyYXkgd29ya2VyXG5FeGVjPSVzXG5JY29uPSVzXG5UZXJtaW5hbD1mYWxzZVxuU3RhcnR1cFdNQ2xhc3M9JXNcbkNhdGVnb3JpZXM9VXRpbGl0eTtcbicnJyAlIChBUFBfTkFNRSwgJyAnLmpvaW4oc2hsZXgucXVvdGUocGFydCkgZm9yIHBhcnQgaW4gZXhlY19wYXJ0cyksIGljb25fcGF0aCwgTElOVVhfV01fQ0xBU1MpXG4gICAgZGVza3RvcF9wYXRoID0gYXBwc19kaXIgLyAoQVBQX0lEICsgJy5kZXNrdG9wJylcbiAgICBkZXNrdG9wX3BhdGgud3JpdGVfdGV4dChkZXNrdG9wKVxuICAgIGRlc2t0b3BfcGF0aC5jaG1vZCgwbzc1NSlcbiAgICBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgWyd1cGRhdGUtZGVza3RvcC1kYXRhYmFzZScsIHN0cihhcHBzX2RpcildLFxuICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICApXG4gICAgY2hvd25fdHJlZShob21lIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2RnZS13b3JrZXInLCBndWlfdXNlcigpKVxuICAgIGNob3duX3RyZWUoYXBwc19kaXIsIGd1aV91c2VyKCkpXG5cblxuZGVmIHdpbmRvd3NfcHJvZmlsZSgpOlxuICAgIGNtZCA9IFBhdGgoJy9tbnQvYy9XaW5kb3dzL1N5c3RlbTMyL2NtZC5leGUnKVxuICAgIGlmIG5vdCBjbWQuZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oW3N0cihjbWQpLCAnL2MnLCAnZWNobycsICclVVNFUlBST0ZJTEUlJ10sIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRleHQ9VHJ1ZSlcbiAgICBwcm9maWxlID0gKHJlc3VsdC5zdGRvdXQgb3IgJycpLnN0cmlwKCkuc3BsaXRsaW5lcygpWy0xXS5zdHJpcCgpIGlmIHJlc3VsdC5yZXR1cm5jb2RlID09IDAgZWxzZSAnJ1xuICAgIGlmIG5vdCBwcm9maWxlOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIGNvbnZlcnRlZCA9IHN1YnByb2Nlc3MucnVuKFsnd3NscGF0aCcsICctdScsIHByb2ZpbGVdLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0ZXh0PVRydWUpXG4gICAgcGF0aCA9IFBhdGgoKGNvbnZlcnRlZC5zdGRvdXQgb3IgJycpLnN0cmlwKCkpXG4gICAgcmV0dXJuIHBhdGggaWYgcGF0aC5leGlzdHMoKSBlbHNlIE5vbmVcblxuXG5kZWYgd2luX3BhdGgocGF0aCk6XG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oWyd3c2xwYXRoJywgJy13Jywgc3RyKHBhdGgpXSwgY2hlY2s9RmFsc2UsIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRleHQ9VHJ1ZSlcbiAgICByZXR1cm4gKHJlc3VsdC5zdGRvdXQgb3IgJycpLnN0cmlwKClcblxuXG5kZWYgd3JpdGVfd2luZG93c19zaG9ydGN1dChkZXN0KTpcbiAgICBwcm9maWxlID0gd2luZG93c19wcm9maWxlKClcbiAgICBwb3dlcnNoZWxsID0gUGF0aCgnL21udC9jL1dpbmRvd3MvU3lzdGVtMzIvV2luZG93c1Bvd2VyU2hlbGwvdjEuMC9wb3dlcnNoZWxsLmV4ZScpXG4gICAgaWYgbm90IHByb2ZpbGUgb3Igbm90IHBvd2Vyc2hlbGwuZXhpc3RzKCk6XG4gICAgICAgIHJldHVyblxuICAgIHByb2dyYW1zID0gcHJvZmlsZSAvICdBcHBEYXRhL1JvYW1pbmcvTWljcm9zb2Z0L1dpbmRvd3MvU3RhcnQgTWVudS9Qcm9ncmFtcydcbiAgICBwcm9ncmFtcy5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgaWNvX3NyYyA9IGRlc3QgLyAnZGdlLWljb24uaWNvJ1xuICAgIGljb193aW4gPSBwcm9maWxlIC8gJ0FwcERhdGEvTG9jYWwvZGdlLXdvcmtlci9kZ2UtaWNvbi5pY28nXG4gICAgaWNvX3dpbi5wYXJlbnQubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGlmIGljb19zcmMuZXhpc3RzKCk6XG4gICAgICAgIHNodXRpbC5jb3B5MihpY29fc3JjLCBpY29fd2luKVxuICAgIGRpc3RybyA9IG9zLmVudmlyb24uZ2V0KCdXU0xfRElTVFJPX05BTUUnKSBvciAnVWJ1bnR1J1xuICAgIGxuayA9IHByb2dyYW1zIC8gKEFQUF9OQU1FICsgJy5sbmsnKVxuICAgIGFyZ3MgPSAnLWQgJXMgLS1jZCAlcyAtLSBlbnYgJXM9MSBweXRob24zIGhvc3RfZ3VpLnB5IHNldHVwLXdvcmtlci5zaCcgJSAoXG4gICAgICAgIGRpc3RybywgZGVzdC5hc19wb3NpeCgpLCBIT1NUX0FQUF9FTlYsXG4gICAgKVxuICAgIGxua193aW4gPSB3aW5fcGF0aChsbmspLnJlcGxhY2UoXCInXCIsIFwiJydcIilcbiAgICBpY29uID0gd2luX3BhdGgoaWNvX3dpbikucmVwbGFjZShcIidcIiwgXCInJ1wiKSBpZiBpY29fd2luLmV4aXN0cygpIGVsc2UgJydcbiAgICBzY3JpcHQgPSAoXG4gICAgICAgIFwiJHMgPSBOZXctT2JqZWN0IC1Db21PYmplY3QgV1NjcmlwdC5TaGVsbDsgXCJcbiAgICAgICAgXCIkc2MgPSAkcy5DcmVhdGVTaG9ydGN1dCgnJXMnKTsgXCJcbiAgICAgICAgXCIkc2MuVGFyZ2V0UGF0aCA9ICdDOlxcXFxXaW5kb3dzXFxcXFN5c3RlbTMyXFxcXHdzbC5leGUnOyBcIlxuICAgICAgICBcIiRzYy5Bcmd1bWVudHMgPSAnJXMnOyBcIlxuICAgICAgICBcIiRzYy5XaW5kb3dTdHlsZSA9IDc7IFwiXG4gICAgICAgIFwiJHNjLkRlc2NyaXB0aW9uID0gJyVzJzsgXCJcbiAgICAgICAgJSAobG5rX3dpbiwgYXJncy5yZXBsYWNlKFwiJ1wiLCBcIicnXCIpLCBBUFBfTkFNRSlcbiAgICApXG4gICAgaWYgaWNvbjpcbiAgICAgICAgc2NyaXB0ICs9IFwiJHNjLkljb25Mb2NhdGlvbiA9ICclcyc7IFwiICUgaWNvblxuICAgIHNjcmlwdCArPSAnJHNjLlNhdmUoKSdcbiAgICBzdWJwcm9jZXNzLnJ1bihbc3RyKHBvd2Vyc2hlbGwpLCAnLU5vUHJvZmlsZScsICctQ29tbWFuZCcsIHNjcmlwdF0sIGNoZWNrPUZhbHNlKVxuICAgIGRlc2t0b3AgPSBwcm9maWxlIC8gJ0Rlc2t0b3AnXG4gICAgaWYgZGVza3RvcC5pc19kaXIoKSBhbmQgbG5rLmV4aXN0cygpOlxuICAgICAgICBzaHV0aWwuY29weTIobG5rLCBkZXNrdG9wIC8gbG5rLm5hbWUpXG5cblxuZGVmIGluc3RhbGxfaG9zdF9hcHAoc2NyaXB0X3BhdGgpOlxuICAgIGRlc3QgPSBhcHBfaW5zdGFsbF9kaXIoKVxuICAgIGNvcHlfYXBwX2ZpbGVzKGRlc3QsIHNjcmlwdF9wYXRoKVxuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzpcbiAgICAgICAgd3JpdGVfbWFjX2FwcChkZXN0KVxuICAgIGVsaWYgcnVubmluZ19pbl93c2woKTpcbiAgICAgICAgd3JpdGVfd2luZG93c19zaG9ydGN1dChkZXN0KVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBjaG93bl90cmVlKGRlc3QsIHB3ZC5nZXRwd3VpZCgxMDAwKSlcbiAgICAgICAgZXhjZXB0IEtleUVycm9yOlxuICAgICAgICAgICAgcGFzc1xuICAgICAgICBpZiBvcy5nZXRldWlkKCkgIT0gMDpcbiAgICAgICAgICAgIHdyaXRlX2xpbnV4X2Rlc2t0b3AoZGVzdCwgc2NyaXB0X3BhdGgpXG4gICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKTpcbiAgICAgICAgd3JpdGVfbGludXhfZGVza3RvcChkZXN0LCBzY3JpcHRfcGF0aClcbiAgICBjaG93bl90cmVlKGRlc3QsIGd1aV91c2VyKCkpXG4gICAgcmV0dXJuIGRlc3RcblxuXG5kZWYgZHJvcF9sb2dpbl9oZWxwZXIoKTpcbiAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6XG4gICAgICAgIHJldHVyblxuICAgIHBsaXN0ID0gZ3VpX2hvbWUoKSAvICdMaWJyYXJ5JyAvICdMYXVuY2hBZ2VudHMnIC8gJ2NvbS5kZ2UuY29tcHV0ZS1ob3N0LWd1aS5wbGlzdCdcbiAgICBpZiBub3QgcGxpc3QuZXhpc3RzKCk6XG4gICAgICAgIHJldHVyblxuICAgIHN1YnByb2Nlc3MucnVuKFxuICAgICAgICBbJ2xhdW5jaGN0bCcsICd1bmxvYWQnLCBzdHIocGxpc3QpXSxcbiAgICAgICAgY2hlY2s9RmFsc2UsXG4gICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgKVxuICAgIHBsaXN0LnVubGluaygpXG5cblxuZGVmIGVuc3VyZV9ydW5uaW5nX2Zyb21fYXBwKHNjcmlwdF9wYXRoKTpcbiAgICBkZXN0ID0gaW5zdGFsbF9ob3N0X2FwcChzY3JpcHRfcGF0aClcbiAgICBkcm9wX2xvZ2luX2hlbHBlcigpXG4gICAgaWYgc291cmNlX3Jvb3QoKSA9PSBkZXN0LnJlc29sdmUoKTpcbiAgICAgICAgb3MuZW52aXJvbltIT1NUX0FQUF9FTlZdID0gJzEnXG4gICAgICAgIHJldHVybiBkZXN0XG4gICAgc2NyaXB0ID0gZGVzdCAvICdzZXR1cC13b3JrZXIuc2gnXG4gICAgaWYgbm90IHNjcmlwdC5leGlzdHMoKTpcbiAgICAgICAgc2NyaXB0ID0gZGVzdCAvICdzZXR1cC13b3JrZXIuY29tbWFuZCdcbiAgICBpZiBub3Qgc2NyaXB0LmV4aXN0cygpOlxuICAgICAgICBzY3JpcHQgPSBkZXN0IC8gJ2hvc3RfZ3VpLnB5J1xuICAgIHB5dGhvbiA9IHB5dGhvbl9mb3JfbGF1bmNoKClcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIGxhdW5jaGVkID0gc3VicHJvY2Vzcy5ydW4oWydvcGVuJywgc3RyKG1hY19hcHBfYnVuZGxlKCkpXSwgY2hlY2s9RmFsc2UpXG4gICAgICAgIGlmIGxhdW5jaGVkLnJldHVybmNvZGUgPT0gMDpcbiAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoMClcbiAgICBvcy5lbnZpcm9uW0hPU1RfQVBQX0VOVl0gPSAnMSdcbiAgICBvcy5leGVjdihweXRob24sIFtweXRob24sIHN0cihkZXN0IC8gJ2hvc3RfZ3VpLnB5JyksIHN0cihzY3JpcHQpXSlcbiAgICByZXR1cm4gZGVzdFxuIiwiaG9zdF9ndWkucHkiOiIjIS91c3IvYmluL2VudiBweXRob24zXG5cIlwiXCJIb3N0IGVucm9sbG1lbnQgR1VJIGFuZCBwb3N0LWFwcHJvdmFsIGluc3RhbGxlciBzdXBlcnZpc29yLlwiXCJcIlxuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuaW1wb3J0IHNobGV4XG5pbXBvcnQgc2h1dGlsXG5pbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHN5c1xuaW1wb3J0IHRocmVhZGluZ1xuaW1wb3J0IHRpbWVcbmltcG9ydCB1cmxsaWIuZXJyb3JcbmltcG9ydCB1cmxsaWIucmVxdWVzdFxuaW1wb3J0IHV1aWRcbmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlXG5mcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGhcblxuUk9PVCA9IFBhdGgoX19maWxlX18pLnJlc29sdmUoKS5wYXJlbnRcbmlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpIGFuZCAnR0RLX0JBQ0tFTkQnIG5vdCBpbiBvcy5lbnZpcm9uOlxuICAgIG9zLmVudmlyb25bJ0dES19CQUNLRU5EJ10gPSAneDExJ1xuU1VQUE9SVF9NQUMgPSBQYXRoLmhvbWUoKSAvICdMaWJyYXJ5JyAvICdBcHBsaWNhdGlvbiBTdXBwb3J0JyAvICdkZ2Utd29ya2VyJ1xuU1VQUE9SVF9MSU5VWCA9IFBhdGgoJy9vcHQvZGdlLXdvcmtlcicpXG5TVEFURV9OQU1FID0gJ2Vucm9sbG1lbnQtc3RhdGUuanNvbidcbkRFU0tUT1BfQVBQX0lEID0gJ2NvbS5kZ2Uud29ya2VyJ1xuTElOVVhfV01fQ0xBU1MgPSAnREdFV29ya2VyU2V0dXAnXG5MSU5VWF9JQ09OX05BTUUgPSAnZGdlLXdvcmtlci1zZXR1cCdcblxuXG5CUk9XU0VSX1VBID0gJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyOC4wLjAuMCBTYWZhcmkvNTM3LjM2J1xuXG5cbmNsYXNzIE5vUmVkaXJlY3QodXJsbGliLnJlcXVlc3QuSFRUUFJlZGlyZWN0SGFuZGxlcik6XG4gICAgZGVmIHJlZGlyZWN0X3JlcXVlc3Qoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKTpcbiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgc2V0dXAgc2VydmVyIHJlZGlyZWN0ZWQgdGhpcyByZXF1ZXN0LicpXG5cblxuSFRUUCA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcihOb1JlZGlyZWN0KCkpXG5cblxuZGVmIHN1cHBvcnRfZGlyKCk6XG4gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOlxuICAgICAgICByZXR1cm4gU1VQUE9SVF9NQUNcbiAgICByZXR1cm4gU1VQUE9SVF9MSU5VWFxuXG5cbmRlZiBzdGF0ZV9wYXRoKCk6XG4gICAgcGF0aCA9IHN1cHBvcnRfZGlyKCkgLyBTVEFURV9OQU1FXG4gICAgaWYgc3lzLnBsYXRmb3JtICE9ICdkYXJ3aW4nIGFuZCBub3QgcGF0aC5wYXJlbnQuZXhpc3RzKCk6XG4gICAgICAgIHBhdGggPSBQYXRoKCcvdG1wL2RnZS13b3JrZXInKSAvIFNUQVRFX05BTUVcbiAgICByZXR1cm4gcGF0aFxuXG5cbmRlZiBsb2FkX3N0YXRlKCk6XG4gICAgcGF0aCA9IHN0YXRlX3BhdGgoKVxuICAgIGlmIHBhdGguZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHBhdGgucmVhZF90ZXh0KCkpXG4gICAgY2xhaW0gPSBzdHIodXVpZC51dWlkNCgpKVxuICAgIHN0YXRlID0geydjbGFpbV9pZCc6IGNsYWltfVxuICAgIHBhdGgucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBwYXRoLndyaXRlX3RleHQoanNvbi5kdW1wcyhzdGF0ZSkpXG4gICAgcGF0aC5jaG1vZCgwbzYwMClcbiAgICByZXR1cm4gc3RhdGVcblxuXG5kZWYgc2F2ZV9zdGF0ZShzdGF0ZSk6XG4gICAgcGF0aCA9IHN0YXRlX3BhdGgoKVxuICAgIHBhdGgucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBwYXRoLndyaXRlX3RleHQoanNvbi5kdW1wcyhzdGF0ZSkpXG4gICAgcGF0aC5jaG1vZCgwbzYwMClcblxuXG5kZWYgY29uZmlnKCk6XG4gICAgcmV0dXJuIGpzb24ubG9hZHMoKFJPT1QgLyAnY29uZmlnLmpzb24nKS5yZWFkX3RleHQoKSlcblxuXG5kZWYgaW52aXRhdGlvbl9wYXRoKCk6XG4gICAgcmV0dXJuIFJPT1QgLyAnaW52aXRhdGlvbi5qc29uJ1xuXG5cbmRlZiBlbnJvbGxtZW50X21vZGUoKTpcbiAgICBpZiBpbnZpdGF0aW9uX3BhdGgoKS5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgcGF5bG9hZCA9IGNvbmZpZygpXG4gICAgcmV0dXJuIGJvb2wocGF5bG9hZC5nZXQoJ2Vucm9sbG1lbnQnKSlcblxuXG5kZWYgcG9zdF9qc29uKG9yaWdpbiwgcGF0aCwgdG9rZW4sIGJvZHkpOlxuICAgIGhlYWRlcnMgPSB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ1VzZXItQWdlbnQnOiBCUk9XU0VSX1VBLCAnbmdyb2stc2tpcC1icm93c2VyLXdhcm5pbmcnOiAnMSd9XG4gICAgaWYgdG9rZW46XG4gICAgICAgIGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICdCZWFyZXIgJyArIHRva2VuXG4gICAgcmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QoXG4gICAgICAgIG9yaWdpbi5yc3RyaXAoJy8nKSArIHBhdGgsXG4gICAgICAgIGRhdGE9anNvbi5kdW1wcyhib2R5KS5lbmNvZGUoKSxcbiAgICAgICAgbWV0aG9kPSdQT1NUJyxcbiAgICAgICAgaGVhZGVycz1oZWFkZXJzLFxuICAgIClcbiAgICB3aXRoIEhUVFAub3BlbihyZXF1ZXN0LCB0aW1lb3V0PTIwKSBhcyByZXNwb25zZTpcbiAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMocmVzcG9uc2UucmVhZCg2NTUzNykpXG5cblxuZGVmIGdldF9qc29uKG9yaWdpbiwgcGF0aCwgdG9rZW4pOlxuICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KFxuICAgICAgICBvcmlnaW4ucnN0cmlwKCcvJykgKyBwYXRoLFxuICAgICAgICBtZXRob2Q9J0dFVCcsXG4gICAgICAgIGhlYWRlcnM9eydBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdG9rZW4sICdVc2VyLUFnZW50JzogQlJPV1NFUl9VQSwgJ25ncm9rLXNraXAtYnJvd3Nlci13YXJuaW5nJzogJzEnfSxcbiAgICApXG4gICAgd2l0aCBIVFRQLm9wZW4ocmVxdWVzdCwgdGltZW91dD0yMCkgYXMgcmVzcG9uc2U6XG4gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3BvbnNlLnJlYWQoNjU1MzcpKVxuXG5cbmRlZiBjb2xsZWN0X3NuYXBzaG90KG9yaWdpbik6XG4gICAgaW1wb3J0IGhvc3RfaW52ZW50b3J5XG4gICAgd2luZG93c19zbmFwc2hvdCA9IG9zLmVudmlyb24uZ2V0KCdER0VfV0lORE9XU19JTlZFTlRPUlknKVxuICAgIGlmIHdpbmRvd3Nfc25hcHNob3QgYW5kIFBhdGgod2luZG93c19zbmFwc2hvdCkuZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBob3N0X2ludmVudG9yeS5jb2xsZWN0KG9yaWdpbiwgd2luZG93c19zbmFwc2hvdClcbiAgICByZXR1cm4gaG9zdF9pbnZlbnRvcnkuY29sbGVjdChvcmlnaW4pXG5cblxuZGVmIHByZXZpZXdfc3VtbWFyeShzbmFwc2hvdCk6XG4gICAgaGFyZHdhcmUgPSBzbmFwc2hvdFsnaG9zdF9pbnZlbnRvcnknXVsnaGFyZHdhcmUnXVxuICAgIHJlYWRpbmVzcyA9IHNuYXBzaG90Wydob3N0X2ludmVudG9yeSddWydyZWFkaW5lc3MnXVxuICAgIGNvbm5lY3Rpdml0eSA9IHNuYXBzaG90Wydob3N0X2ludmVudG9yeSddWydjb25uZWN0aXZpdHknXVxuICAgIGNvbXB1dGVyID0gJyAnLmpvaW4oZmlsdGVyKE5vbmUsIFtoYXJkd2FyZS5nZXQoJ21hbnVmYWN0dXJlcicpLCBoYXJkd2FyZS5nZXQoJ2hhcmR3YXJlX21vZGVsJyldKSkgb3IgJ1RoaXMgY29tcHV0ZXInXG4gICAgc3lzdGVtID0gJyAnLmpvaW4oZmlsdGVyKE5vbmUsIFtoYXJkd2FyZS5nZXQoJ29zX25hbWUnKSwgaGFyZHdhcmUuZ2V0KCdvc192ZXJzaW9uJyldKSkgb3IgJ1Vua25vd24gc3lzdGVtJ1xuICAgIG1lbW9yeSA9IGZvcm1hdF9ieXRlcyhoYXJkd2FyZS5nZXQoJ21lbW9yeV9ieXRlcycpKVxuICAgIGNwdXMgPSBoYXJkd2FyZS5nZXQoJ2xvZ2ljYWxfY3B1cycpXG4gICAgcG93ZXIgPSBzbmFwc2hvdFsnaG9zdF9pbnZlbnRvcnknXVsndGVsZW1ldHJ5J11cbiAgICByZWFkeSA9IHJlYWRpbmVzcy5nZXQoJ2RvY2tlcicpIGFuZCByZWFkaW5lc3MuZ2V0KCd2aXJ0dWFsaXphdGlvbicpXG4gICAgY29ubmVjdGVkID0gY29ubmVjdGl2aXR5LmdldCgnc2VydmVyX3JlYWNoYWJsZScpXG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ2NvbXB1dGVyJzogY29tcHV0ZXIsXG4gICAgICAgICdzeXN0ZW0nOiBzeXN0ZW0sXG4gICAgICAgICdtZW1vcnknOiBtZW1vcnksXG4gICAgICAgICdjcHVzJzogY3B1cyxcbiAgICAgICAgJ3JlYWR5JzogcmVhZHksXG4gICAgICAgICdjb25uZWN0ZWQnOiBjb25uZWN0ZWQsXG4gICAgICAgICdvbl9wb3dlcic6IHBvd2VyLmdldCgnYWNfY29ubmVjdGVkJyksXG4gICAgICAgICdiYXR0ZXJ5X3BlcmNlbnQnOiBwb3dlci5nZXQoJ2JhdHRlcnlfcGVyY2VudCcpLFxuICAgIH1cblxuXG5kZWYgcHJldmlld19saW5lcyhzbmFwc2hvdCk6XG4gICAgcmV0dXJuIFtcbiAgICAgICAgJ1RoaXMgbGV0cyB5b3VyIGNvbXB1dGVyIGhlbHAgRG9yaWFuIEdyYXkgd2l0aCBiYWNrZ3JvdW5kIHRhc2tzIHdoZW4geW91IGFyZSBub3QgdXNpbmcgaXQuJyxcbiAgICAgICAgJ0ZpcnN0IHdlIHdpbGwgc2VuZCBiYXNpYyBkaWFnbm9zdGljIGRhdGEgdG8gRG9yaWFuIEdyYXkgc2VydmVycyB3aXRoIHlvdXIgcmVxdWVzdCAnXG4gICAgICAgICdzbyB3ZSBrbm93IHdoYXQgeW91ciBtYWNoaW5lIGNhbiBhbmQgY2Fubm90IGhhbmRsZS4nLFxuICAgICAgICAnT3VyIHRlYW0gcmV2aWV3cyBlYWNoIHJlcXVlc3QuIElmIGFwcHJvdmVkLCBzZXR1cCBydW5zIGF1dG9tYXRpY2FsbHkuJyxcbiAgICAgICAgJycsXG4gICAgICAgICdXZSBuZXZlciBjb2xsZWN0IHBhc3N3b3JkcywgZmlsZXMsIHBob3RvcywgYnJvd3NpbmcgaGlzdG9yeSwgc2VyaWFsIG51bWJlcnMsIG9yIG5ldHdvcmsgYWRkcmVzc2VzLicsXG4gICAgXVxuXG5cbkVOUk9MTE1FTlRfU1RFUFMgPSBbXG4gICAgKFxuICAgICAgICAnMScsXG4gICAgICAgICdBc2sgdG8gam9pbicsXG4gICAgICAgICdUZWxsIHVzIHdobyB5b3UgYXJlLiBXZSB3aWxsIHNlbmQgYSByZXF1ZXN0IGZyb20gdGhpcyBjb21wdXRlci4nLFxuICAgICksXG4gICAgKFxuICAgICAgICAnMicsXG4gICAgICAgICdXZSBjaGVjayB0aGUgYmFzaWNzJyxcbiAgICAgICAgJ0ZpcnN0IHdlIHNlbmQgYmFzaWMgZGlhZ25vc3RpYyBkYXRhIHdpdGggeW91ciByZXF1ZXN0IHNvIHdlIGtub3cgd2hhdCB0aGlzIG1hY2hpbmUgY2FuIGFuZCBjYW5ub3QgaGFuZGxlLicsXG4gICAgKSxcbiAgICAoXG4gICAgICAgICczJyxcbiAgICAgICAgJ1dlIHNldCBpdCB1cCcsXG4gICAgICAgICdTb21lb25lIG9uIG91ciB0ZWFtIHJldmlld3MgaXQuIElmIHRoZXkgc2F5IHllcywgc2V0dXAgaGFwcGVucyBoZXJlIGF1dG9tYXRpY2FsbHkuJyxcbiAgICApLFxuXVxuXG5cblNFVFVQX1NURVBTID0gW1xuICAgICgnQXBwcm92ZWQnLCAnRG9yaWFuIEdyYXkgYWNjZXB0ZWQgdGhpcyBjb21wdXRlci4gU2V0dXAgc3RhcnRzIG5vdy4nKSxcbiAgICAoJ0dldHRpbmcgdGhpcyBjb21wdXRlciByZWFkeScsICdDaGVja2luZyBtZW1vcnksIERvY2tlciwgYW5kIGEgZmV3IHN5c3RlbSBzZXR0aW5ncy4nKSxcbiAgICAoJ0luc3RhbGxpbmcgd2hhdCB3ZSBuZWVkJywgJ1RoZSBmaXJzdCB0aW1lIHRoaXMgY2FuIHRha2UgYSBmZXcgbWludXRlcy4nKSxcbiAgICAoJ1N0YXJ0aW5nIHRoZSBiYWNrZ3JvdW5kIHdvcmtlcicsICdJdCB3aWxsIGtlZXAgcnVubmluZyBhZnRlciB5b3UgY2xvc2UgdGhpcyB3aW5kb3cuJyksXG4gICAgKCdDb25uZWN0aW5nJywgJ0Rvd25sb2FkaW5nIHRoZSB3b3JrZXIgc29mdHdhcmUgYW5kIGNoZWNraW5nIGluIHdpdGggRG9yaWFuIEdyYXkuJyksXG4gICAgKCdBbGwgc2V0JywgJ1lvdSBjYW4gbGVhdmUgdGhpcyB3aW5kb3cgb3BlbiBvciBxdWl0LiBUaGUgd29ya2VyIHN0YXlzIG9uLicpLFxuXVxuXG5cbklOU1RBTExfTElORV9ISU5UUyA9IChcbiAgICAoJ0FwcHJvdmVkLiBTdGFydGluZyBzZXR1cCcsIDAsICdBcHByb3ZlZCcsICdTYXZpbmcgdGhpcyBjb21wdXRlciBvbiB0aGUgd29ya2VyIGxpc3QuJyksXG4gICAgKCdDaGVja2luZyB0aGlzIGNvbXB1dGVyJywgMSwgJ0NoZWNraW5nIHRoaXMgY29tcHV0ZXInLCAnTWFraW5nIHN1cmUgaXQgaGFzIGVub3VnaCBtZW1vcnkgYW5kIHRoZSByaWdodCB0b29scy4nKSxcbiAgICAoJ1ByZXBhcmluZyB0aGlzIGNvbXB1dGVyJywgMSwgJ1ByZXBhcmluZyB0aGlzIGNvbXB1dGVyJywgJ0FkanVzdGluZyBhIGZldyBzeXN0ZW0gc2V0dGluZ3Mgc28gd29yayBzdGF5cyBpbiBtZW1vcnkuJyksXG4gICAgKCdJbnN0YWxsaW5nIHJlcXVpcmVkIHRvb2xzJywgMiwgJ0luc3RhbGxpbmcgdG9vbHMnLCAnVGhpcyBjYW4gdGFrZSBhIGZldyBtaW51dGVzIHRoZSBmaXJzdCB0aW1lLicpLFxuICAgICgnSW5zdGFsbGluZyBMaW1hJywgMiwgJ0luc3RhbGxpbmcgYSBMaW51eCB2aXJ0dWFsIG1hY2hpbmUnLCAnVGhpcyBNYWMgcnVucyB0aGUgd29ya2VyIGluc2lkZSBMaW51eC4gRmlyc3QgZG93bmxvYWQgY2FuIHRha2UgYSB3aGlsZS4nKSxcbiAgICAoJ0NyZWF0aW5nIGEgTGludXggd29ya2VyIHZpcnR1YWwgbWFjaGluZScsIDIsICdDcmVhdGluZyBhIExpbnV4IHZpcnR1YWwgbWFjaGluZScsICdUaGUgZmlyc3QgZG93bmxvYWQgY2FuIHRha2Ugc2V2ZXJhbCBtaW51dGVzLicpLFxuICAgICgnU3RhcnRpbmcgdGhlIExpbnV4IHdvcmtlciB2aXJ0dWFsIG1hY2hpbmUnLCAyLCAnU3RhcnRpbmcgdGhlIExpbnV4IHZpcnR1YWwgbWFjaGluZScsICdUaGUgd29ya2VyIHJ1bnMgaW5zaWRlIHRoaXMgVk0gc28gaXQgbWF0Y2hlcyBhIExpbnV4IGhvc3QuJyksXG4gICAgKCdkaXNhYmxpbmcgZGlzayBzd2FwJywgMSwgJ0tlZXBpbmcgdGFzayBmaWxlcyBpbiBtZW1vcnknLCAnVGFzayBzY3JhdGNoIGlzIHRtcGZzOyB0aGUgd29ya2VyIGNncm91cCBkb2VzIG5vdCB1c2Ugc3dhcC4nKSxcbiAgICAoJ1NhdmluZyB0aGlzIGNvbXB1dGVyJywgMywgJ1NhdmluZyB0aGUgY29ubmVjdGlvbicsICdUaGlzIGNvbXB1dGVyIGNhbiBub3cgY2hlY2sgaW4gYXMgYSB3b3JrZXIuJyksXG4gICAgKCdJbnN0YWxsaW5nIHRoZSB3b3JrZXIgaW5zaWRlJywgMywgJ0luc3RhbGxpbmcgaW5zaWRlIHRoZSB2aXJ0dWFsIG1hY2hpbmUnLCAnVGhlIExpbnV4IGluc3RhbGxlciBpcyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLicpLFxuICAgICgnSW5zdGFsbGluZyB0aGUgYmFja2dyb3VuZCB3b3JrZXInLCAzLCAnU3RhcnRpbmcgdGhlIGJhY2tncm91bmQgd29ya2VyJywgJ1R1cm5pbmcgb24gdGhlIHNlcnZpY2UgdGhhdCBydW5zIGFmdGVyIHRoaXMgd2luZG93IGlzIGNsb3NlZC4nKSxcbiAgICAoJ01hYyBuZXR3b3JrIGhlbHBlcicsIDMsICdTdGFydGluZyBhIE1hYyBuZXR3b3JrIGhlbHBlcicsICdQaG90byBzdG9yYWdlIHdpbGwgdXNlIHRoaXMgY29tcHV0ZXLigJlzIG5ldHdvcmsuJyksXG4gICAgKCdDb25uZWN0aW5nIGFuZCBkb3dubG9hZGluZycsIDQsICdEb3dubG9hZGluZyB0aGUgd29ya2VyIHNvZnR3YXJlJywgJ1RoaXMgY2FuIHRha2Ugc2V2ZXJhbCBtaW51dGVzLiBZb3UgY2FuIGtlZXAgdXNpbmcgdGhpcyBjb21wdXRlci4nKSxcbiAgICAoJ1dvcmtlciBlbnJvbGxlZCcsIDMsICdXb3JrZXIgZW5yb2xsZWQnLCAnQ29uZmlndXJhdGlvbiBhbmQgdGFzayBpbWFnZXMgYXJlIG9idGFpbmVkIGF0IGNoZWNrLWluLicpLFxuICAgICgnQ29ubmVjdGVkIScsIDUsICdDb25uZWN0ZWQnLCAnVGhpcyBjb21wdXRlciBpcyBub3cgYW4gb2ZmaWNpYWwgd29ya2VyLicpLFxuICAgICgnU2V0dXAgbmVlZHMgYXR0ZW50aW9uJywgTm9uZSwgTm9uZSwgTm9uZSksXG4pXG5cblxuZGVmIGZyaWVuZGx5X2luc3RhbGxfbGluZShsaW5lKTpcbiAgICB0ZXh0ID0gJyAnLmpvaW4obGluZS5zdHJpcCgpLnNwbGl0KCkpXG4gICAgaWYgbm90IHRleHQ6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgZm9yIG5lZWRsZSwgc3RlcCwgdGl0bGUsIGRldGFpbCBpbiBJTlNUQUxMX0xJTkVfSElOVFM6XG4gICAgICAgIGlmIG5lZWRsZS5sb3dlcigpIGluIHRleHQubG93ZXIoKTpcbiAgICAgICAgICAgIHJldHVybiB7J3N0ZXAnOiBzdGVwLCAndGl0bGUnOiB0aXRsZSwgJ2RldGFpbCc6IGRldGFpbCBvciB0ZXh0LCAncmF3JzogdGV4dH1cbiAgICBpZiB0ZXh0LnN0YXJ0c3dpdGgoJ1NldHVwIG5lZWRzIGF0dGVudGlvbjonKTpcbiAgICAgICAgcmV0dXJuIHsnc3RlcCc6IE5vbmUsICd0aXRsZSc6IE5vbmUsICdkZXRhaWwnOiB0ZXh0LnNwbGl0KCc6JywgMSlbLTFdLnN0cmlwKCksICdyYXcnOiB0ZXh0LCAnZXJyb3InOiBUcnVlfVxuICAgIHJldHVybiB7J3N0ZXAnOiBOb25lLCAndGl0bGUnOiBOb25lLCAnZGV0YWlsJzogdGV4dCwgJ3Jhdyc6IHRleHR9XG5cblxuZGVmIGZyaWVuZGx5X2Jvb2wodmFsdWUpOlxuICAgIGlmIHZhbHVlIGlzIE5vbmU6XG4gICAgICAgIHJldHVybiAndW5rbm93bidcbiAgICByZXR1cm4gJ1llcycgaWYgdmFsdWUgZWxzZSAnTm8nXG5cblxuZGVmIGZvcm1hdF9ieXRlcyh2YWx1ZSk6XG4gICAgaWYgbm90IHZhbHVlOlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nXG4gICAgdW5pdHMgPSBbJ0InLCAnS2lCJywgJ01pQicsICdHaUInLCAnVGlCJ11cbiAgICBzaXplID0gZmxvYXQodmFsdWUpXG4gICAgZm9yIHVuaXQgaW4gdW5pdHM6XG4gICAgICAgIGlmIHNpemUgPCAxMDI0IG9yIHVuaXQgPT0gdW5pdHNbLTFdOlxuICAgICAgICAgICAgcmV0dXJuIGYne3NpemU6LjBmfSB7dW5pdH0nIGlmIHVuaXQgPT0gJ0InIGVsc2UgZid7c2l6ZTouMWZ9IHt1bml0fSdcbiAgICAgICAgc2l6ZSAvPSAxMDI0XG5cblxuZGVmIGRyYXdfc2VyaWVzKGNhbnZhcywgdmFsdWVzLCBsaW5lLCBmaWxsLCBmbG9vcj1Ob25lLCBjZWlsaW5nPU5vbmUpOlxuICAgIGNhbnZhcy5kZWxldGUoJ2FsbCcpXG4gICAgd2lkdGggPSBtYXgoaW50KGNhbnZhcy53aW5mb193aWR0aCgpIG9yIGNhbnZhcy5jZ2V0KCd3aWR0aCcpIG9yIDApLCAyKVxuICAgIGhlaWdodCA9IG1heChpbnQoY2FudmFzLndpbmZvX2hlaWdodCgpIG9yIGNhbnZhcy5jZ2V0KCdoZWlnaHQnKSBvciAwKSwgMilcbiAgICBjYW52YXMuY3JlYXRlX3JlY3RhbmdsZSgwLCAwLCB3aWR0aCwgaGVpZ2h0LCBmaWxsPScjZmZmY2Y4Jywgb3V0bGluZT0nJylcbiAgICBpZiBsZW4odmFsdWVzKSA8IDI6XG4gICAgICAgIHJldHVyblxuICAgIGxvID0gZmxvb3IgaWYgZmxvb3IgaXMgbm90IE5vbmUgZWxzZSBtaW4odmFsdWVzKVxuICAgIGhpID0gY2VpbGluZyBpZiBjZWlsaW5nIGlzIG5vdCBOb25lIGVsc2UgbWF4KHZhbHVlcylcbiAgICBpZiBoaSA8PSBsbzpcbiAgICAgICAgaGkgPSBsbyArIDFcbiAgICBwYWQgPSA2XG4gICAgaW5uZXJfdyA9IG1heCh3aWR0aCAtIHBhZCAqIDIsIDEpXG4gICAgaW5uZXJfaCA9IG1heChoZWlnaHQgLSBwYWQgKiAyLCAxKVxuICAgIHBvaW50cyA9IFtdXG4gICAgbGFzdCA9IG1heChsZW4odmFsdWVzKSAtIDEsIDEpXG4gICAgZm9yIGluZGV4LCB2YWx1ZSBpbiBlbnVtZXJhdGUodmFsdWVzKTpcbiAgICAgICAgeCA9IHBhZCArIGlubmVyX3cgKiBpbmRleCAvIGxhc3RcbiAgICAgICAgeSA9IHBhZCArIGlubmVyX2ggKiAoMSAtICh2YWx1ZSAtIGxvKSAvIChoaSAtIGxvKSlcbiAgICAgICAgcG9pbnRzLmV4dGVuZCgoeCwgeSkpXG4gICAgY2FudmFzLmNyZWF0ZV9wb2x5Z29uKHBhZCwgaGVpZ2h0IC0gcGFkLCAqcG9pbnRzLCBwYWQgKyBpbm5lcl93LCBoZWlnaHQgLSBwYWQsIGZpbGw9ZmlsbCwgb3V0bGluZT0nJylcbiAgICBjYW52YXMuY3JlYXRlX2xpbmUoKnBvaW50cywgZmlsbD1saW5lLCB3aWR0aD0yKVxuXG5cbmRlZiBzZXR1cF9wbGFuKG9yaWdpbik6XG4gICAgaW1hZ2UgPSAncmVnaXN0cnkuZ2l0bGFiLmNvbS9kb3JpYW4tZ3JheS1lbnRlcnByaXNlcy9hdXRvbWF0aW9uL2NvbXB1dGUtd29ya2VyJ1xuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICdUaGlzIE1hYyB3aWxsIHJ1biB0aGUgd29ya2VyIGluc2lkZSBhIExpbnV4IHZpcnR1YWwgbWFjaGluZSAoTGltYSArIFVidW50dSAyNC4wNCkuICdcbiAgICAgICAgICAgICdIb21lYnJldyBtYXkgaW5zdGFsbCBMaW1hLiBTZXR1cCBuZWVkcyB5b3VyIE1hYyBwYXNzd29yZCBmb3IgdGhlIExpbnV4IGluc3RhbGxlciBpbnNpZGUgdGhlIFZNLicsXG4gICAgICAgICAgICAnXFxuJy5qb2luKFtcbiAgICAgICAgICAgICAgICAnSG9zdDogbWFjT1MuIEd1ZXN0OiBMaW1hIGluc3RhbmNlIGBkZ2Utd29ya2VyYCBmcm9tIHRlbXBsYXRlOi8vdWJ1bnR1LTI0LjA0LicsXG4gICAgICAgICAgICAgICAgJ0hvc3QgaGVscGVyOiBtYWNvc19yMl9wcm94eS5weSBvbiAxMjcuMC4wLjE6MTg3ODkgc28gUjIgVExTIHN0YXlzIG9uIHRoZSBNYWMuJyxcbiAgICAgICAgICAgICAgICAnTGF1bmNoQWdlbnQ6IH4vTGlicmFyeS9MYXVuY2hBZ2VudHMvY29tLmRnZS5jb21wdXRlLWhvc3QtZ3VpLnBsaXN0JyxcbiAgICAgICAgICAgICAgICBmJ0d1ZXN0IGltYWdlOiB7aW1hZ2V9OnN0YWJsZSwgcmVzb2x2ZWQgdG8gYW4gaW1tdXRhYmxlIHNoYTI1NiBkaWdlc3QgYXQgYXBwcm92YWwuJyxcbiAgICAgICAgICAgICAgICAnR3Vlc3QgbGF5b3V0OiAvb3B0L2RnZS13b3JrZXIve2xhdW5jaGVyLnB5LGJvb3RzdHJhcC9hZ2VudC5weSxpZGVudGl0eS5qc29ufScsXG4gICAgICAgICAgICAgICAgJ0d1ZXN0IHNlcnZpY2U6IHN5c3RlbWQgZGdlLXdvcmtlci5zZXJ2aWNlIGluIGNvbXB1dGUuc2xpY2U7IHRtcGZzIC9ydW4vZGdlLXdvcmtlci90YXNrcy4nLFxuICAgICAgICAgICAgICAgICdHdWVzdCBEb2NrZXI6IGRvY2tlci5pbywgY2dyb3VwIHYyLCBNZW1vcnlTd2FwTWF4PTAgZm9yIHRoZSB3b3JrZXIsIGRvY2tlciBwdWxsIG9mIHRoZSBkaWdlc3QgYXQgY2hlY2staW4uJyxcbiAgICAgICAgICAgICAgICBmJ0NoZWNrLWluOiB7b3JpZ2lufS9jb21wdXRlX2ZsZWV0L3N0YXR1cyB3aXRoIGEgd29ya2VyIGJlYXJlciB0b2tlbi4nLFxuICAgICAgICAgICAgICAgICdDb21tYW5kcyBpbmNsdWRlOiBicmV3IGluc3RhbGwgbGltYTsgbGltYWN0bCBzdGFydDsgbGltYWN0bCBzaGVsbCBzdWRvIGJhc2ggL3RtcC9zZXR1cC13b3JrZXIuc2gnLFxuICAgICAgICAgICAgXSksXG4gICAgICAgIClcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICdXaW5kb3dzIHdpbGwgcnVuIHRoZSB3b3JrZXIgaW5zaWRlIFVidW50dSAoV1NMKSB3aXRoIHN5c3RlbWQuICdcbiAgICAgICAgICAgICdJZiBVYnVudHUgaXMgbWlzc2luZywgV2luZG93cyB3aWxsIGFzayBmb3IgcGVybWlzc2lvbiBhbmQgbWF5IG5lZWQgb25lIHJlc3RhcnQuJyxcbiAgICAgICAgICAgICdcXG4nLmpvaW4oW1xuICAgICAgICAgICAgICAgICdIb3N0OiBXaW5kb3dzLiBHdWVzdDogV1NMIFVidW50dSB3aXRoIHN5c3RlbWQ9dHJ1ZS4nLFxuICAgICAgICAgICAgICAgIGYnR3Vlc3QgaW1hZ2U6IHtpbWFnZX06c3RhYmxlLCByZXNvbHZlZCB0byBhbiBpbW11dGFibGUgc2hhMjU2IGRpZ2VzdCBhdCBhcHByb3ZhbC4nLFxuICAgICAgICAgICAgICAgICdHdWVzdCBsYXlvdXQ6IC9vcHQvZGdlLXdvcmtlci97bGF1bmNoZXIucHksYm9vdHN0cmFwL2FnZW50LnB5LGlkZW50aXR5Lmpzb259JyxcbiAgICAgICAgICAgICAgICAnR3Vlc3Qgc2VydmljZTogc3lzdGVtZCBkZ2Utd29ya2VyLnNlcnZpY2UgaW4gY29tcHV0ZS5zbGljZTsgdG1wZnMgL3J1bi9kZ2Utd29ya2VyL3Rhc2tzLicsXG4gICAgICAgICAgICAgICAgJ0d1ZXN0IERvY2tlcjogZG9ja2VyLmlvLCBjZ3JvdXAgdjIsIE1lbW9yeVN3YXBNYXg9MCBmb3IgdGhlIHdvcmtlciwgZG9ja2VyIHB1bGwgb2YgdGhlIGRpZ2VzdCBhdCBjaGVjay1pbi4nLFxuICAgICAgICAgICAgICAgIGYnQ2hlY2staW46IHtvcmlnaW59L2NvbXB1dGVfZmxlZXQvc3RhdHVzIHdpdGggYSB3b3JrZXIgYmVhcmVyIHRva2VuLicsXG4gICAgICAgICAgICAgICAgJ0NvbW1hbmRzIGluY2x1ZGU6IHdzbCAtLWluc3RhbGwgLWQgVWJ1bnR1OyB3c2wgLWQgVWJ1bnR1IC0tIHN1ZG8gcHl0aG9uMyBpbnN0YWxsLnB5JyxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICApXG4gICAgcmV0dXJuIChcbiAgICAgICAgJ1RoaXMgTGludXggY29tcHV0ZXIgd2lsbCBpbnN0YWxsIERvY2tlciBpZiBuZWVkZWQgJ1xuICAgICAgICAnYW5kIHJ1biBhIHN5c3RlbWQgd29ya2VyIHRoYXQgcHVsbHMgdGhlIHB1Ymxpc2hlZCBjb250YWluZXIgaW1hZ2UuIFNldHVwIG5lZWRzIHlvdXIgYWRtaW5pc3RyYXRvciBwYXNzd29yZC4nLFxuICAgICAgICAnXFxuJy5qb2luKFtcbiAgICAgICAgICAgICdIb3N0OiBMaW51eCAoVWJ1bnR1IDI04oCTMjYgb3IgRGViaWFuIDEy4oCTMTMpLiBQcml2aWxlZ2VkIHN0ZXBzIHVzZSBwa2V4ZWMvc3Vkby4nLFxuICAgICAgICAgICAgJ1BhY2thZ2VzIGlmIG1pc3Npbmc6IGRvY2tlci5pbyBpcHJvdXRlMiBwY2l1dGlscyB1dGlsLWxpbnV4IHZpYSBhcHQtZ2V0LicsXG4gICAgICAgICAgICAnSG9zdCBwcmVwOiBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGRvY2tlci5zZXJ2aWNlLiBIb3N0IHN3YXAgaXMgbGVmdCBlbmFibGVkLicsXG4gICAgICAgICAgICBmJ0ltYWdlOiB7aW1hZ2V9OnN0YWJsZSwgcmVzb2x2ZWQgdG8gYW4gaW1tdXRhYmxlIHNoYTI1NiBkaWdlc3QgYXQgYXBwcm92YWwuJyxcbiAgICAgICAgICAgICdMYXlvdXQ6IC9vcHQvZGdlLXdvcmtlci97bGF1bmNoZXIucHksYm9vdHN0cmFwL2FnZW50LnB5LGlkZW50aXR5Lmpzb24sY3VycmVudC5qc29ufScsXG4gICAgICAgICAgICAnU2VydmljZTogL2V0Yy9zeXN0ZW1kL3N5c3RlbS9kZ2Utd29ya2VyLnNlcnZpY2UgaW4gY29tcHV0ZS5zbGljZSwgTWVtb3J5U3dhcE1heD0wLicsXG4gICAgICAgICAgICAnU2NyYXRjaDogdG1wZnMgL3J1bi9kZ2Utd29ya2VyL3Rhc2tzICgyNTZtLCBub3N1aWQsbm9kZXYsbm9leGVjKS4nLFxuICAgICAgICAgICAgJ0lmIEdpdExhYiBSdW5uZXIgaXMgcHJlc2VudDogL2V0Yy9naXRsYWItcnVubmVyL2NvbmZpZy50b21sIGNncm91cF9wYXJlbnQ9Y2kuc2xpY2UuJyxcbiAgICAgICAgICAgICdBdCBjaGVjay1pbiB0aGUgYWdlbnQgZG9ja2VyLXB1bGxzIHRoZSBkaWdlc3QgYW5kIHJ1bnMgdGhlIHdvcmtlciBjb250YWluZXIgd2l0aCAtLW1lbW9yeS1zd2FwIGVxdWFsIHRvIC0tbWVtb3J5LicsXG4gICAgICAgICAgICBmJ0FQSTogUE9TVCB7b3JpZ2lufS9jb21wdXRlX2ZsZWV0L3N0YXR1cyB3aXRoIEF1dGhvcml6YXRpb246IEJlYXJlciA8d29ya2VyIHRva2VuPi4nLFxuICAgICAgICAgICAgJ1R5cGljYWwgY29tbWFuZHM6IGFwdC1nZXQgdXBkYXRlOyBhcHQtZ2V0IGluc3RhbGwgLXkgZG9ja2VyLmlvOyBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGRvY2tlcjsnLFxuICAgICAgICAgICAgJ3N5c3RlbWN0bCBkYWVtb24tcmVsb2FkOyBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGRnZS13b3JrZXIuc2VydmljZS4nLFxuICAgICAgICBdKSxcbiAgICApXG5cblxuZGVmIGluc3RhbGxfbGludXhfZGVza3RvcF9lbnRyeShndWlfc2NyaXB0LCBzY3JpcHRfcGF0aCk6XG4gICAgaWNvbl9zcmMgPSBST09UIC8gJ2RnZS1pY29uLnBuZydcbiAgICBpZiBub3QgaWNvbl9zcmMuZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuXG4gICAgYXBwc19kaXIgPSBQYXRoLmhvbWUoKSAvICcubG9jYWwnIC8gJ3NoYXJlJyAvICdhcHBsaWNhdGlvbnMnXG4gICAgYXBwc19kaXIubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGZvciBzaXplIGluICg0OCwgMTI4LCAyNTYpOlxuICAgICAgICBpY29uX2RpciA9IFBhdGguaG9tZSgpIC8gJy5sb2NhbCcgLyAnc2hhcmUnIC8gJ2ljb25zJyAvICdoaWNvbG9yJyAvIGYne3NpemV9eHtzaXplfScgLyAnYXBwcydcbiAgICAgICAgaWNvbl9kaXIubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgICAgICBkZXN0ID0gaWNvbl9kaXIgLyBmJ3tMSU5VWF9JQ09OX05BTUV9LnBuZydcbiAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdjb252ZXJ0Jyk6XG4gICAgICAgICAgICBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgICAgICAgICBbJ2NvbnZlcnQnLCBzdHIoaWNvbl9zcmMpLCAnLXJlc2l6ZScsIGYne3NpemV9eHtzaXplfScsIHN0cihkZXN0KV0sXG4gICAgICAgICAgICAgICAgY2hlY2s9RmFsc2UsXG4gICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICAgICAgKVxuICAgICAgICBlbGlmIG5vdCBkZXN0LmV4aXN0cygpOlxuICAgICAgICAgICAgc2h1dGlsLmNvcHkoaWNvbl9zcmMsIGRlc3QpXG5cbiAgICBwaXhtYXBzID0gUGF0aC5ob21lKCkgLyAnLmxvY2FsJyAvICdzaGFyZScgLyAncGl4bWFwcydcbiAgICBwaXhtYXBzLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBwaXhtYXBfaWNvbiA9IHBpeG1hcHMgLyBmJ3tMSU5VWF9JQ09OX05BTUV9LnBuZydcbiAgICBzaHV0aWwuY29weShpY29uX3NyYywgcGl4bWFwX2ljb24pXG4gICAgaWNvbl8xMjggPSBQYXRoLmhvbWUoKSAvICcubG9jYWwnIC8gJ3NoYXJlJyAvICdpY29ucycgLyAnaGljb2xvcicgLyAnMTI4eDEyOCcgLyAnYXBwcycgLyBmJ3tMSU5VWF9JQ09OX05BTUV9LnBuZydcbiAgICBpY29uX3BhdGggPSBzdHIoaWNvbl8xMjggaWYgaWNvbl8xMjguZXhpc3RzKCkgZWxzZSBwaXhtYXBfaWNvbilcbiAgICBleGVjX3BhcnRzID0gW1xuICAgICAgICAnZW52JyxcbiAgICAgICAgJ0RHRV9MSU5VWF9ERVNLVE9QX0xBVU5DSEVEPTEnLFxuICAgICAgICAnR0RLX0JBQ0tFTkQ9eDExJyxcbiAgICAgICAgc3lzLmV4ZWN1dGFibGUsXG4gICAgICAgIHN0cihndWlfc2NyaXB0KSxcbiAgICAgICAgc3RyKHNjcmlwdF9wYXRoKSxcbiAgICBdXG4gICAgZGVza3RvcCA9IGZcIlwiXCJbRGVza3RvcCBFbnRyeV1cblZlcnNpb249MS4wXG5UeXBlPUFwcGxpY2F0aW9uXG5OYW1lPURvcmlhbiBHcmF5IFdvcmtlclxuQ29tbWVudD1MZW5kIHRoaXMgY29tcHV0ZXIgYXMgYSBEb3JpYW4gR3JheSB3b3JrZXJcbkV4ZWM9eycgJy5qb2luKHNobGV4LnF1b3RlKHBhcnQpIGZvciBwYXJ0IGluIGV4ZWNfcGFydHMpfVxuSWNvbj17aWNvbl9wYXRofVxuVGVybWluYWw9ZmFsc2VcblN0YXJ0dXBXTUNsYXNzPXtMSU5VWF9XTV9DTEFTU31cbkNhdGVnb3JpZXM9VXRpbGl0eTtcblwiXCJcIlxuICAgIChhcHBzX2RpciAvIGYne0RFU0tUT1BfQVBQX0lEfS5kZXNrdG9wJykud3JpdGVfdGV4dChkZXNrdG9wKVxuICAgIHN1YnByb2Nlc3MucnVuKFxuICAgICAgICBbJ3VwZGF0ZS1kZXNrdG9wLWRhdGFiYXNlJywgc3RyKGFwcHNfZGlyKV0sXG4gICAgICAgIGNoZWNrPUZhbHNlLFxuICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgIClcbiAgICBpY29uX3RoZW1lID0gUGF0aC5ob21lKCkgLyAnLmxvY2FsJyAvICdzaGFyZScgLyAnaWNvbnMnIC8gJ2hpY29sb3InXG4gICAgaWYgaWNvbl90aGVtZS5leGlzdHMoKTpcbiAgICAgICAgc3VicHJvY2Vzcy5ydW4oXG4gICAgICAgICAgICBbJ2d0ay11cGRhdGUtaWNvbi1jYWNoZScsICctZicsICctdCcsIHN0cihpY29uX3RoZW1lKV0sXG4gICAgICAgICAgICBjaGVjaz1GYWxzZSxcbiAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLFxuICAgICAgICApXG4gICAgcmV0dXJuIFRydWVcblxuXG5kZWYgd2FudF9oZWFkbGVzcygpOlxuICAgIGZsYWcgPSBvcy5lbnZpcm9uLmdldCgnREdFX0VOUk9MTF9IRUFETEVTUycsICcnKS5zdHJpcCgpLmxvd2VyKClcbiAgICBpZiBmbGFnIGluICgnMScsICd0cnVlJywgJ3llcycpOlxuICAgICAgICByZXR1cm4gVHJ1ZVxuICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgcmV0dXJuIG5vdCAob3MuZW52aXJvbi5nZXQoJ0RJU1BMQVknKSBvciBvcy5lbnZpcm9uLmdldCgnV0FZTEFORF9ESVNQTEFZJykpXG5cblxuZGVmIGNsaV9jb250YWN0KCk6XG4gICAgbmFtZSA9IG9zLmVudmlyb24uZ2V0KCdER0VfRU5ST0xMX05BTUUnLCAnJykuc3RyaXAoKVxuICAgIGVtYWlsID0gb3MuZW52aXJvbi5nZXQoJ0RHRV9FTlJPTExfRU1BSUwnLCAnJykuc3RyaXAoKVxuICAgIHBob25lID0gb3MuZW52aXJvbi5nZXQoJ0RHRV9FTlJPTExfUEhPTkUnLCAnJykuc3RyaXAoKVxuICAgIG5vdGUgPSBvcy5lbnZpcm9uLmdldCgnREdFX0VOUk9MTF9OT1RFJywgJycpLnN0cmlwKClcbiAgICBpZiBuYW1lIGFuZCBlbWFpbCBhbmQgcGhvbmU6XG4gICAgICAgIHJldHVybiB7J2Rpc3BsYXlfbmFtZSc6IG5hbWUsICdlbWFpbCc6IGVtYWlsLCAncGhvbmUnOiBwaG9uZSwgJ25vdGUnOiBub3RlfVxuICAgIHJldHVybiBOb25lXG5cblxuZGVmIGxpbnV4X3JlbGF1bmNoX3ZpYV9kZXNrdG9wKHNjcmlwdF9wYXRoKTpcbiAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIGlmIHdhbnRfaGVhZGxlc3MoKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaWYgb3MuZW52aXJvbi5nZXQoJ0RHRV9MSU5VWF9ERVNLVE9QX0xBVU5DSEVEJykgPT0gJzEnOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBndWlfc2NyaXB0ID0gUk9PVCAvICdob3N0X2d1aS5weSdcbiAgICBpZiBub3QgaW5zdGFsbF9saW51eF9kZXNrdG9wX2VudHJ5KGd1aV9zY3JpcHQsIHNjcmlwdF9wYXRoKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgZGVza3RvcF9maWxlID0gUGF0aC5ob21lKCkgLyAnLmxvY2FsJyAvICdzaGFyZScgLyAnYXBwbGljYXRpb25zJyAvIGYne0RFU0tUT1BfQVBQX0lEfS5kZXNrdG9wJ1xuICAgIGZvciBjb21tYW5kIGluIChcbiAgICAgICAgKFsnZ2lvJywgJ2xhdW5jaCcsIHN0cihkZXNrdG9wX2ZpbGUpXSBpZiBzaHV0aWwud2hpY2goJ2dpbycpIGVsc2UgTm9uZSksXG4gICAgICAgIChbJ2d0ay1sYXVuY2gnLCBERVNLVE9QX0FQUF9JRF0gaWYgc2h1dGlsLndoaWNoKCdndGstbGF1bmNoJykgZWxzZSBOb25lKSxcbiAgICApOlxuICAgICAgICBpZiBub3QgY29tbWFuZDpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKGNvbW1hbmQsIGNoZWNrPUZhbHNlKVxuICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZSA9PSAwOlxuICAgICAgICAgICAgc3lzLmV4aXQoMClcbiAgICByZXR1cm4gRmFsc2VcblxuXG5kZWYgbWFjb3NfcmVsYXVuY2hfdmlhX2FxdWEoc2NyaXB0X3BhdGgpOlxuICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaWYgd2FudF9oZWFkbGVzcygpOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBpZiBvcy5lbnZpcm9uLmdldCgnREdFX01BQ19BUVVBX0xBVU5DSEVEJykgPT0gJzEnOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBpZiBub3Qgb3MuZW52aXJvbi5nZXQoJ1NTSF9DT05ORUNUSU9OJyk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIHJvb3QgPSBzdHIoUk9PVClcbiAgICBpZiByb290LnN0YXJ0c3dpdGgoKCcvdG1wLycsICcvdmFyL2ZvbGRlcnMvJykpIG9yICdkZ2Utd29ya2VyLWluc3RhbGwuJyBpbiByb290OlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBweXRob24gPSBzaGxleC5xdW90ZShzeXMuZXhlY3V0YWJsZSlcbiAgICBndWkgPSBzaGxleC5xdW90ZShzdHIoUk9PVCAvICdob3N0X2d1aS5weScpKVxuICAgIHNjcmlwdCA9IHNobGV4LnF1b3RlKHNjcmlwdF9wYXRoKVxuICAgIGNvbW1hbmQgPSBmJ2V4cG9ydCBER0VfTUFDX0FRVUFfTEFVTkNIRUQ9MTsgZXhlYyB7cHl0aG9ufSB7Z3VpfSB7c2NyaXB0fSdcbiAgICBlc2NhcGVkID0gY29tbWFuZC5yZXBsYWNlKCdcXFxcJywgJ1xcXFxcXFxcJykucmVwbGFjZSgnXCInLCAnXFxcXFwiJylcbiAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihcbiAgICAgICAgW1xuICAgICAgICAgICAgJ29zYXNjcmlwdCcsXG4gICAgICAgICAgICAnLWUnLCAndGVsbCBhcHBsaWNhdGlvbiBcIlRlcm1pbmFsXCIgdG8gYWN0aXZhdGUnLFxuICAgICAgICAgICAgJy1lJywgZid0ZWxsIGFwcGxpY2F0aW9uIFwiVGVybWluYWxcIiB0byBkbyBzY3JpcHQgXCJ7ZXNjYXBlZH1cIicsXG4gICAgICAgIF0sXG4gICAgICAgIGNoZWNrPUZhbHNlLFxuICAgIClcbiAgICBpZiByZXN1bHQucmV0dXJuY29kZSA9PSAwOlxuICAgICAgICBzeXMuZXhpdCgwKVxuICAgIHJldHVybiBGYWxzZVxuXG5cbmRlZiBsb2FkX2JyYW5kX2ljb24odGssIHNpemU9NDgpOlxuICAgIGljb25fcGF0aCA9IFJPT1QgLyAnZGdlLWljb24ucG5nJ1xuICAgIGlmIG5vdCBpY29uX3BhdGguZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgdHJ5OlxuICAgICAgICBpbWFnZSA9IHRrLlBob3RvSW1hZ2UoZmlsZT1zdHIoaWNvbl9wYXRoKSlcbiAgICAgICAgaWYgaW1hZ2Uud2lkdGgoKSA+IHNpemU6XG4gICAgICAgICAgICBmYWN0b3IgPSBtYXgoMSwgcm91bmQoaW1hZ2Uud2lkdGgoKSAvIHNpemUpKVxuICAgICAgICAgICAgaW1hZ2UgPSBpbWFnZS5zdWJzYW1wbGUoZmFjdG9yLCBmYWN0b3IpXG4gICAgICAgIHJldHVybiBpbWFnZVxuICAgIGV4Y2VwdCB0ay5UY2xFcnJvcjpcbiAgICAgICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgd2luZG93X2ljb25faW1hZ2VzKHRrKTpcbiAgICBpY29uX3BhdGggPSBST09UIC8gJ2RnZS1pY29uLnBuZydcbiAgICBpZiBub3QgaWNvbl9wYXRoLmV4aXN0cygpOlxuICAgICAgICByZXR1cm4gW11cbiAgICB0cnk6XG4gICAgICAgIG1hc3RlciA9IHRrLlBob3RvSW1hZ2UoZmlsZT1zdHIoaWNvbl9wYXRoKSlcbiAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgIHJldHVybiBbXVxuICAgIGljb25zID0gW11cbiAgICBzZWVuID0gc2V0KClcbiAgICBmb3IgdGFyZ2V0IGluICgxNiwgMjQsIDMyLCA0OCwgNjQsIDk2LCAxMjgsIDE5MiwgMjU2KTpcbiAgICAgICAgaWYgbWFzdGVyLndpZHRoKCkgPCB0YXJnZXQ6XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICBmYWN0b3IgPSBtYXgoMSwgbWFzdGVyLndpZHRoKCkgLy8gdGFyZ2V0KVxuICAgICAgICBzaXplID0gbWFzdGVyLndpZHRoKCkgLy8gZmFjdG9yXG4gICAgICAgIGlmIHNpemUgaW4gc2VlbjpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHNlZW4uYWRkKHNpemUpXG4gICAgICAgIGljb25zLmFwcGVuZChtYXN0ZXIuc3Vic2FtcGxlKGZhY3RvciwgZmFjdG9yKSlcbiAgICByZXR1cm4gaWNvbnMgb3IgW21hc3Rlcl1cblxuXG5kZWYgYXBwbHlfd2luZG93X2ljb24ocm9vdCk6XG4gICAgaW1wb3J0IHRraW50ZXIgYXMgdGtcblxuICAgIGljb25zID0gd2luZG93X2ljb25faW1hZ2VzKHRrKVxuICAgIGlmIGljb25zOlxuICAgICAgICByb290Ll93aW5kb3dfaWNvbnMgPSBpY29uc1xuICAgICAgICB0cnk6XG4gICAgICAgICAgICByb290Lmljb25waG90byhUcnVlLCAqaWNvbnMpXG4gICAgICAgIGV4Y2VwdCB0ay5UY2xFcnJvcjpcbiAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICByb290Lmljb25waG90byhUcnVlLCBpY29uc1stMV0pXG4gICAgICAgICAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgICAgICAgICAgaWNvbnMgPSBbXVxuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOlxuICAgICAgICBpY29uX3BhdGggPSBST09UIC8gJ2RnZS1pY29uLmljbydcbiAgICAgICAgaWYgaWNvbl9wYXRoLmV4aXN0cygpOlxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIHJvb3QuaWNvbmJpdG1hcChzdHIoaWNvbl9wYXRoKSlcbiAgICAgICAgICAgIGV4Y2VwdCB0ay5UY2xFcnJvcjpcbiAgICAgICAgICAgICAgICBwYXNzXG4gICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIGljb25fcGF0aCA9IFJPT1QgLyAnZGdlLWljb24ucG5nJ1xuICAgICAgICBpZiBpY29uX3BhdGguZXhpc3RzKCk6XG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgcm9vdC5pY29ucGhvdG8oVHJ1ZSwgdGsuUGhvdG9JbWFnZShmaWxlPXN0cihpY29uX3BhdGgpKSlcbiAgICAgICAgICAgIGV4Y2VwdCB0ay5UY2xFcnJvcjpcbiAgICAgICAgICAgICAgICBwYXNzXG4gICAgcmV0dXJuIGljb25zXG5cblxuZGVmIHByZXNlbnRfd2luZG93KHJvb3QpOlxuICAgIGltcG9ydCB0a2ludGVyIGFzIHRrXG5cbiAgICBhcHBseV93aW5kb3dfaWNvbihyb290KVxuICAgIHJvb3QuZGVpY29uaWZ5KClcbiAgICByb290LnVwZGF0ZV9pZGxldGFza3MoKVxuICAgIHRyeTpcbiAgICAgICAgaWYgcm9vdC5zdGF0ZSgpID09ICd6b29tZWQnOlxuICAgICAgICAgICAgcm9vdC5zdGF0ZSgnbm9ybWFsJylcbiAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgIHBhc3NcbiAgICBmb3IgZmxhZyBpbiAoJy16b29tZWQnLCAnLWZ1bGxzY3JlZW4nKTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgcm9vdC5hdHRyaWJ1dGVzKGZsYWcsIEZhbHNlKVxuICAgICAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgICAgICBwYXNzXG4gICAgc2NyZWVuX3cgPSByb290LndpbmZvX3NjcmVlbndpZHRoKClcbiAgICBzY3JlZW5faCA9IHJvb3Qud2luZm9fc2NyZWVuaGVpZ2h0KClcbiAgICB3aWR0aCA9IG1pbigxMTAwLCBtYXgoODIwLCBzY3JlZW5fdyAtIDI0MCkpXG4gICAgaGVpZ2h0ID0gbWluKDc2MCwgbWF4KDYwMCwgc2NyZWVuX2ggLSAyMDApKVxuICAgIHggPSBtYXgoNDAsIChzY3JlZW5fdyAtIHdpZHRoKSAvLyAyKVxuICAgIHkgPSBtYXgoNDAsIChzY3JlZW5faCAtIGhlaWdodCkgLy8gMilcbiAgICByb290Lmdlb21ldHJ5KGYne3dpZHRofXh7aGVpZ2h0fSt7eH0re3l9JylcbiAgICB0cnk6XG4gICAgICAgIHJvb3QuYXR0cmlidXRlcygnLXRvcG1vc3QnLCBUcnVlKVxuICAgICAgICByb290LmxpZnQoKVxuICAgICAgICByb290LmZvY3VzX2ZvcmNlKClcbiAgICAgICAgcm9vdC5hZnRlcig0MDAsIGxhbWJkYTogcm9vdC5hdHRyaWJ1dGVzKCctdG9wbW9zdCcsIEZhbHNlKSlcbiAgICBleGNlcHQgdGsuVGNsRXJyb3I6XG4gICAgICAgIHBhc3NcblxuXG5kZWYgaG9zdF93b3JrZXJfcnVubmluZygpOlxuICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOlxuICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihbJ3N5c3RlbWN0bCcsICdpcy1hY3RpdmUnLCAnLS1xdWlldCcsICdkZ2Utd29ya2VyLnNlcnZpY2UnXSwgY2hlY2s9RmFsc2UpXG4gICAgICAgIHJldHVybiByZXN1bHQucmV0dXJuY29kZSA9PSAwXG4gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOlxuICAgICAgICByZXR1cm4gbWFjX2xpbWFfd29ya2VyX3J1bm5pbmcoKVxuICAgIHJldHVybiBGYWxzZVxuXG5cbmRlZiBtYWNfbGltYV93b3JrZXJfcnVubmluZygpOlxuICAgIGltcG9ydCBpbnN0YWxsX21hY29zXG4gICAgaW5zdGFsbF9tYWNvcy5hZGRfbWFjX3ByZWZpeGVzKClcbiAgICBsaW1hY3RsID0gc2h1dGlsLndoaWNoKCdsaW1hY3RsJylcbiAgICBpZiBub3QgbGltYWN0bDpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oW2xpbWFjdGwsICdsaXN0J10sIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRleHQ9VHJ1ZSwgY2hlY2s9RmFsc2UpXG4gICAgaWYgcmVzdWx0LnJldHVybmNvZGUgIT0gMDpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgZm9yIGxpbmUgaW4gcmVzdWx0LnN0ZG91dC5zcGxpdGxpbmVzKClbMTpdOlxuICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoKVxuICAgICAgICBpZiBsZW4ocGFydHMpID49IDIgYW5kIHBhcnRzWzBdID09IGluc3RhbGxfbWFjb3MuSU5TVEFOQ0U6XG4gICAgICAgICAgICByZXR1cm4gcGFydHNbMV0gPT0gJ1J1bm5pbmcnXG4gICAgcmV0dXJuIEZhbHNlXG5cblxuZGVmIHN1Ym1pdF9lbnJvbGxtZW50KG9yaWdpbiwgc3RhdGUsIHNuYXBzaG90LCBkaXNwbGF5X25hbWUsIGVtYWlsLCBwaG9uZSwgbm90ZSk6XG4gICAgYm9keSA9IHtcbiAgICAgICAgJ2NsYWltX2lkJzogc3RhdGVbJ2NsYWltX2lkJ10sXG4gICAgICAgICdkaXNwbGF5X25hbWUnOiBkaXNwbGF5X25hbWUsXG4gICAgICAgICdlbWFpbCc6IGVtYWlsLFxuICAgICAgICAncGhvbmUnOiBwaG9uZSxcbiAgICAgICAgJ25vdGUnOiBub3RlLFxuICAgICAgICAnaG9zdF9vcyc6IHNuYXBzaG90Wydob3N0X29zJ10sXG4gICAgICAgICdob3N0X2ludmVudG9yeSc6IHNuYXBzaG90Wydob3N0X2ludmVudG9yeSddLFxuICAgICAgICAncGxhbm5lZF93b3JrZXJfY2FwYWNpdHknOiBzbmFwc2hvdFsncGxhbm5lZF93b3JrZXJfY2FwYWNpdHknXSxcbiAgICB9XG4gICAgcmVzcG9uc2UgPSBwb3N0X2pzb24ob3JpZ2luLCAnL2NvbXB1dGVfZmxlZXQvZW5yb2xsbWVudHMnLCAnJywgYm9keSlcbiAgICBzdGF0ZVsncG9sbF90b2tlbiddID0gcmVzcG9uc2VbJ3BvbGxfdG9rZW4nXVxuICAgIHNhdmVfc3RhdGUoc3RhdGUpXG4gICAgcmV0dXJuIHJlc3BvbnNlXG5cblxuZGVmIHBvbGxfZW5yb2xsbWVudChvcmlnaW4sIHN0YXRlKTpcbiAgICByZXR1cm4gZ2V0X2pzb24ob3JpZ2luLCAnL2NvbXB1dGVfZmxlZXQvZW5yb2xsbWVudHMnLCBzdGF0ZVsncG9sbF90b2tlbiddKVxuXG5cbmRlZiB3b3JrZXJfc3RhdHVzKG9yaWdpbiwgdG9rZW4pOlxuICAgIHJldHVybiBwb3N0X2pzb24ob3JpZ2luLCAnL2NvbXB1dGVfZmxlZXQvc3RhdHVzJywgdG9rZW4sIHt9KVxuXG5cbldPUktFUl9TVEFURV9DT1BZID0ge1xuICAgICdyZWFkeSc6ICdBdmFpbGFibGUnLFxuICAgICdidXN5JzogJ1dvcmtpbmcnLFxuICAgICdwYXVzZWQnOiAnUGF1c2VkJyxcbiAgICAnb2ZmbGluZSc6ICdPZmZsaW5lJyxcbiAgICAnbG93IGJhdHRlcnknOiAnV2FpdGluZyBmb3IgcG93ZXInLFxuICAgICd1cGRhdGluZyc6ICdVcGRhdGluZycsXG4gICAgJ3VwZGF0ZSBmYWlsZWQnOiAnTmVlZHMgYXR0ZW50aW9uJyxcbiAgICAncmV2b2tlZCc6ICdEaXNjb25uZWN0ZWQnLFxufVxuXG5cbmRlZiBob3N0X21lbW9yeV9zbmFwc2hvdCgpOlxuICAgIHRyeTpcbiAgICAgICAgaW1wb3J0IGhvc3RfaW52ZW50b3J5XG4gICAgICAgIHJldHVybiBob3N0X2ludmVudG9yeS5hdmFpbGFibGVfbWVtb3J5X2J5dGVzKCksIGhvc3RfaW52ZW50b3J5Lm1lbW9yeV9ieXRlcygpXG4gICAgZXhjZXB0IEV4Y2VwdGlvbjpcbiAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmVcblxuXG5kZWYgZnJpZW5kbHlfd29ya2VyX3N0YXRlKHBheWxvYWQpOlxuICAgIHN0YXRlID0gKHBheWxvYWQgb3Ige30pLmdldCgnc3RhdGUnKSBvciAndW5rbm93bidcbiAgICBpZiAocGF5bG9hZCBvciB7fSkuZ2V0KCdkcmFpbmluZycpIGFuZCBzdGF0ZSBub3QgaW4gKCdwYXVzZWQnLCAncmV2b2tlZCcpOlxuICAgICAgICByZXR1cm4gJ3BhdXNlZCdcbiAgICByZXR1cm4gc3RhdGVcblxuXG5kZWYgY3VycmVudF93b3JrX2NvcHkocGF5bG9hZCk6XG4gICAgdGFzayA9IChwYXlsb2FkIG9yIHt9KS5nZXQoJ2N1cnJlbnRfdGFzaycpIG9yIHt9XG4gICAgb3BlcmF0aW9uID0gKHRhc2suZ2V0KCdvcGVyYXRpb24nKSBvciAnJykucmVwbGFjZSgnXycsICcgJykuc3RyaXAoKVxuICAgIGlmIG9wZXJhdGlvbjpcbiAgICAgICAgcmV0dXJuICdXb3JraW5nIG9uICcgKyBvcGVyYXRpb25cbiAgICBzdGF0ZSA9IGZyaWVuZGx5X3dvcmtlcl9zdGF0ZShwYXlsb2FkKVxuICAgIGlmIHN0YXRlID09ICdidXN5JzpcbiAgICAgICAgcmV0dXJuICdXb3JraW5nIG9uIGEgdGFzaydcbiAgICBpZiBzdGF0ZSA9PSAncGF1c2VkJzpcbiAgICAgICAgcmV0dXJuICdOb3QgdGFraW5nIG5ldyB3b3JrJ1xuICAgIGlmIHN0YXRlID09ICdyZWFkeSc6XG4gICAgICAgIHJldHVybiAnV2FpdGluZyBmb3Igd29yaydcbiAgICBpZiBzdGF0ZSA9PSAnb2ZmbGluZSc6XG4gICAgICAgIHJldHVybiAnTm90IGNvbm5lY3RlZCB5ZXQnXG4gICAgcmV0dXJuIFdPUktFUl9TVEFURV9DT1BZLmdldChzdGF0ZSwgc3RhdGUucmVwbGFjZSgnXycsICcgJykpXG5cblxuZGVmIGluc3RhbGxfbGF1bmNoX2FnZW50KHNjcmlwdF9wYXRoKTpcbiAgICBpbXBvcnQgaG9zdF9hcHBcbiAgICBob3N0X2FwcC5pbnN0YWxsX2hvc3RfYXBwKHNjcmlwdF9wYXRoKVxuICAgIGhvc3RfYXBwLmRyb3BfbG9naW5faGVscGVyKClcblxuXG5kZWYgYXNrcGFzc19zY3JpcHQoKTpcbiAgICBwYXRoID0gUk9PVCAvICdkZ2UtYXNrcGFzcy5weSdcbiAgICBwYXRoLndyaXRlX3RleHQoJycnIyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuaW1wb3J0IHNodXRpbCwgc3VicHJvY2Vzcywgc3lzXG50aXRsZSA9IFwiRG9yaWFuIEdyYXkgV29ya2VyIFNldHVwXCJcbnByb21wdCA9IFwiQWRtaW5pc3RyYXRvciBwYXNzd29yZCBmb3IgaW5zdGFsbGluZyB0aGUgd29ya2VyXCJcbmlmIHN5cy5wbGF0Zm9ybSA9PSBcImRhcndpblwiOlxuICAgIHNjcmlwdCA9IFwiXCJcIlxudGVsbCBhcHBsaWNhdGlvbiBcIlN5c3RlbSBFdmVudHNcIlxuICBhY3RpdmF0ZVxuICB0cnlcbiAgICBzZXQgYW5zd2VyIHRvIGRpc3BsYXkgZGlhbG9nIFwiRG9yaWFuIEdyYXkgV29ya2VyIFNldHVwIG5lZWRzIHlvdXIgTWFjIHBhc3N3b3JkIHRvIGNvbnRpbnVlLlwiIGRlZmF1bHQgYW5zd2VyIFwiXCIgd2l0aCBoaWRkZW4gYW5zd2VyIHdpdGggdGl0bGUgXCJEb3JpYW4gR3JheSBXb3JrZXIgU2V0dXBcIiBidXR0b25zIHtcIkNhbmNlbFwiLCBcIk9LXCJ9IGRlZmF1bHQgYnV0dG9uIFwiT0tcIlxuICAgIGlmIGJ1dHRvbiByZXR1cm5lZCBvZiBhbnN3ZXIgaXMgXCJPS1wiIHRoZW5cbiAgICAgIHJldHVybiB0ZXh0IHJldHVybmVkIG9mIGFuc3dlclxuICAgIGVuZCBpZlxuICBvbiBlcnJvciBudW1iZXIgLTEyOFxuICAgIHJldHVybiBcIlwiXG4gIGVuZCB0cnlcbmVuZCB0ZWxsXG5cIlwiXCJcbiAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihbXCJvc2FzY3JpcHRcIiwgXCItZVwiLCBzY3JpcHRdLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0ZXh0PVRydWUpXG4gICAgc3lzLnN0ZG91dC53cml0ZShyZXN1bHQuc3Rkb3V0KVxuICAgIHN5cy5leGl0KDAgaWYgcmVzdWx0LnJldHVybmNvZGUgPT0gMCBhbmQgcmVzdWx0LnN0ZG91dC5zdHJpcCgpIGVsc2UgMSlcbmlmIHNodXRpbC53aGljaChcInplbml0eVwiKTpcbiAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihbXCJ6ZW5pdHlcIiwgXCItLXBhc3N3b3JkXCIsIFwiLS10aXRsZT1cIiArIHRpdGxlLCBcIi0tdGV4dD1cIiArIHByb21wdF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgdGV4dD1UcnVlKVxuICAgIHN5cy5zdGRvdXQud3JpdGUocmVzdWx0LnN0ZG91dClcbiAgICBzeXMuZXhpdCgwIGlmIHJlc3VsdC5yZXR1cm5jb2RlID09IDAgZWxzZSAxKVxuaWYgc2h1dGlsLndoaWNoKFwia2RpYWxvZ1wiKTpcbiAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihbXCJrZGlhbG9nXCIsIFwiLS1wYXNzd29yZFwiLCBwcm9tcHRdLCBjYXB0dXJlX291dHB1dD1UcnVlLCB0ZXh0PVRydWUpXG4gICAgc3lzLnN0ZG91dC53cml0ZShyZXN1bHQuc3Rkb3V0KVxuICAgIHN5cy5leGl0KDAgaWYgcmVzdWx0LnJldHVybmNvZGUgPT0gMCBlbHNlIDEpXG50cnk6XG4gICAgaW1wb3J0IHRraW50ZXIgYXMgdGtcbiAgICBmcm9tIHRraW50ZXIgaW1wb3J0IHNpbXBsZWRpYWxvZ1xuICAgIHJvb3QgPSB0ay5UaygpXG4gICAgcm9vdC53aXRoZHJhdygpXG4gICAgdmFsdWUgPSBzaW1wbGVkaWFsb2cuYXNrc3RyaW5nKHRpdGxlLCBwcm9tcHQsIHNob3c9XCIqXCIpXG4gICAgcm9vdC5kZXN0cm95KClcbiAgICBzeXMuc3Rkb3V0LndyaXRlKHZhbHVlIG9yIFwiXCIpXG4gICAgc3lzLmV4aXQoMCBpZiB2YWx1ZSBlbHNlIDEpXG5leGNlcHQgRXhjZXB0aW9uOlxuICAgIHN5cy5leGl0KDEpXG4nJycpXG4gICAgcGF0aC5jaG1vZCgwbzcwMClcbiAgICByZXR1cm4gcGF0aFxuXG5cbmRlZiBsaW51eF9pbnN0YWxsX2NvbW1hbmQoKTpcbiAgICBweXRob24gPSBzdHIoUGF0aChzeXMuZXhlY3V0YWJsZSkucmVzb2x2ZSgpKVxuICAgIHNjcmlwdCA9IHN0cigoUk9PVCAvICdpbnN0YWxsLnB5JykucmVzb2x2ZSgpKVxuICAgIGlmIG9zLmdldGV1aWQoKSA9PSAwOlxuICAgICAgICByZXR1cm4gW3B5dGhvbiwgJy11Jywgc2NyaXB0XVxuICAgIGlmIHdhbnRfaGVhZGxlc3MoKSBhbmQgc2h1dGlsLndoaWNoKCdzdWRvJyk6XG4gICAgICAgIHJldHVybiBbJ3N1ZG8nLCAnLUUnLCBweXRob24sICctdScsIHNjcmlwdF1cbiAgICBpZiBzaHV0aWwud2hpY2goJ3BrZXhlYycpOlxuICAgICAgICBlbnYgPSBbJ2VudicsICdQWVRIT05VTkJVRkZFUkVEPTEnXVxuICAgICAgICBkaXNwbGF5ID0gb3MuZW52aXJvbi5nZXQoJ0RJU1BMQVknKVxuICAgICAgICBhdXRob3JpdHkgPSBvcy5lbnZpcm9uLmdldCgnWEFVVEhPUklUWScpXG4gICAgICAgIGlmIGRpc3BsYXk6XG4gICAgICAgICAgICBlbnYuYXBwZW5kKCdESVNQTEFZPScgKyBkaXNwbGF5KVxuICAgICAgICBpZiBhdXRob3JpdHk6XG4gICAgICAgICAgICBlbnYuYXBwZW5kKCdYQVVUSE9SSVRZPScgKyBhdXRob3JpdHkpXG4gICAgICAgIHJldHVybiBbJ3BrZXhlYycsICplbnYsIHB5dGhvbiwgJy11Jywgc2NyaXB0XVxuICAgIGlmIHNodXRpbC53aGljaCgnc3VkbycpOlxuICAgICAgICBvcy5lbnZpcm9uWydTVURPX0FTS1BBU1MnXSA9IHN0cihhc2twYXNzX3NjcmlwdCgpKVxuICAgICAgICBvcy5lbnZpcm9uWydTVURPX1BST01QVCddID0gJydcbiAgICAgICAgcmV0dXJuIFsnc3VkbycsICctQScsICctRScsIHB5dGhvbiwgJy11Jywgc2NyaXB0XVxuICAgIHJldHVybiBbcHl0aG9uLCAnLXUnLCBzY3JpcHRdXG5cblxuZGVmIG1hY19uZWVkc19pbnN0YWxsKCk6XG4gICAgaWYgc3lzLnBsYXRmb3JtICE9ICdkYXJ3aW4nOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBpbXBvcnQgaW5zdGFsbF9tYWNvc1xuICAgIGluc3RhbGxfbWFjb3MuYWRkX21hY19wcmVmaXhlcygpXG4gICAgbGltYWN0bCA9IHNodXRpbC53aGljaCgnbGltYWN0bCcpXG4gICAgaWYgbm90IGxpbWFjdGw6XG4gICAgICAgIHJldHVybiBUcnVlXG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oW2xpbWFjdGwsICdsaXN0JywgJy1xJ10sIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRleHQ9VHJ1ZSwgY2hlY2s9RmFsc2UpXG4gICAgbmFtZXMgPSB7bGluZS5zdHJpcCgpIGZvciBsaW5lIGluIHJlc3VsdC5zdGRvdXQuc3BsaXRsaW5lcygpIGlmIGxpbmUuc3RyaXAoKX1cbiAgICByZXR1cm4gaW5zdGFsbF9tYWNvcy5JTlNUQU5DRSBub3QgaW4gbmFtZXNcblxuXG5kZWYgcnVuX2luc3RhbGxlcihzY3JpcHRfcGF0aCwgb25fbGluZT1Ob25lKTpcbiAgICBkZWYgZW1pdChsaW5lKTpcbiAgICAgICAgaWYgb25fbGluZSBhbmQgbGluZS5zdHJpcCgpOlxuICAgICAgICAgICAgb25fbGluZShsaW5lLnJzdHJpcCgpKVxuXG4gICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KClcbiAgICBlbnZbJ1BZVEhPTlVOQlVGRkVSRUQnXSA9ICcxJ1xuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzpcbiAgICAgICAgaW1wb3J0IGluc3RhbGxfbWFjb3NcbiAgICAgICAgaW5zdGFsbF9tYWNvcy5hZGRfbWFjX3ByZWZpeGVzKClcbiAgICAgICAgZW52WydQQVRIJ10gPSBvcy5lbnZpcm9uLmdldCgnUEFUSCcsIGVudi5nZXQoJ1BBVEgnLCAnJykpXG4gICAgICAgIHByb3h5ID0gUk9PVCAvICdtYWNvc19yMl9wcm94eS5weSdcbiAgICAgICAgaWYgcHJveHkuZXhpc3RzKCk6XG4gICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1sYW1iZGE6IHN1YnByb2Nlc3MucnVuKFtzeXMuZXhlY3V0YWJsZSwgc3RyKHByb3h5KV0sIGNoZWNrPUZhbHNlKSwgZGFlbW9uPVRydWUpLnN0YXJ0KClcbiAgICAgICAgZW52WydTVURPX0FTS1BBU1MnXSA9IHN0cihhc2twYXNzX3NjcmlwdCgpKVxuICAgICAgICBjb21tYW5kID0gW3N5cy5leGVjdXRhYmxlLCAnLXUnLCBzdHIoUk9PVCAvICdpbnN0YWxsX21hY29zLnB5JyksIHNjcmlwdF9wYXRoXVxuICAgICAgICBlbWl0KCdJZiBtYWNPUyBvciBIb21lYnJldyBuZWVkcyBhIHBhc3N3b3JkLCBhIE1hYyBkaWFsb2cgd2lsbCBhcHBlYXIuIEluc2lkZSB0aGUgTGludXggVk0sIHNldHVwIHVzZXMgdGhlIFZN4oCZcyBzdWRvLicpXG4gICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzpcbiAgICAgICAgY29tbWFuZCA9IGxpbnV4X2luc3RhbGxfY29tbWFuZCgpXG4gICAgICAgIGVtaXQoJ1dpbmRvd3MgdXNlcyBhIFVBQyBwcm9tcHQgdG8gaW5zdGFsbCBVYnVudHUgKFdTTCkuIEluc2lkZSBVYnVudHUgdGhlIGluc3RhbGxlciBydW5zIGFzIHJvb3QsIHNvIHRoZXJlIGlzIG5vIHNlY29uZCBwYXNzd29yZC4nKVxuICAgIGVsc2U6XG4gICAgICAgIGNvbW1hbmQgPSBsaW51eF9pbnN0YWxsX2NvbW1hbmQoKVxuICAgICAgICBpZiBjb21tYW5kWzBdID09ICdwa2V4ZWMnOlxuICAgICAgICAgICAgZW1pdCgnVWJ1bnR1IHdpbGwgYXNrIGZvciB5b3VyIGFkbWluaXN0cmF0b3IgcGFzc3dvcmQuIFRoYXQgcGVybWlzc2lvbiBpcyBuZWVkZWQgdG8gaW5zdGFsbCBEb2NrZXIgYW5kIHRoZSB3b3JrZXIgc2VydmljZS4nKVxuICAgICAgICBlbGlmIGNvbW1hbmRbMF0gPT0gJ3N1ZG8nOlxuICAgICAgICAgICAgZW1pdCgnRW50ZXIgeW91ciBhZG1pbmlzdHJhdG9yIHBhc3N3b3JkIHdoZW4gYXNrZWQuIFRoYXQgcGVybWlzc2lvbiBpcyBuZWVkZWQgdG8gaW5zdGFsbCBEb2NrZXIgYW5kIHRoZSB3b3JrZXIgc2VydmljZS4nKVxuICAgIGVtaXQoJyQgJyArIHNobGV4LmpvaW4oY29tbWFuZCkpXG4gICAgZW1pdCgnQXBwcm92ZWQuIFN0YXJ0aW5nIHNldHVwIG9uIHRoaXMgY29tcHV0ZXIuLi4nKVxuICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFxuICAgICAgICBjb21tYW5kLFxuICAgICAgICBjd2Q9c3RyKFJPT1QpLFxuICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLFxuICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsXG4gICAgICAgIHRleHQ9VHJ1ZSxcbiAgICAgICAgYnVmc2l6ZT0xLFxuICAgICAgICBlbnY9ZW52LFxuICAgIClcbiAgICBvdXRwdXQgPSBbXVxuICAgIGZvciBsaW5lIGluIHByb2Nlc3Muc3Rkb3V0OlxuICAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUucnN0cmlwKCkpXG4gICAgICAgIGVtaXQobGluZSlcbiAgICBwcm9jZXNzLndhaXQoKVxuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgcHJvY2Vzcy5yZXR1cm5jb2RlID09IDA6XG4gICAgICAgIGVtaXQoJ0tlZXBpbmcgdGhpcyB3aW5kb3cgYXZhaWxhYmxlIGFmdGVyIHJlc3RhcnQuLi4nKVxuICAgICAgICBpbnN0YWxsX2xhdW5jaF9hZ2VudChzY3JpcHRfcGF0aClcbiAgICBpZiBwcm9jZXNzLnJldHVybmNvZGU6XG4gICAgICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSBpbiAoMTI2LCAxMjcpIG9yIGFueSgnZGlzbWlzc2VkJyBpbiBpdGVtLmxvd2VyKCkgb3IgJ2NhbmNlbGxlZCcgaW4gaXRlbS5sb3dlcigpIGZvciBpdGVtIGluIG91dHB1dCk6XG4gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0FkbWluaXN0cmF0b3IgcGVybWlzc2lvbiBpcyByZXF1aXJlZCB0byBpbnN0YWxsIHRoZSB3b3JrZXIuIEFwcHJvdmUgdGhlIHBhc3N3b3JkIHByb21wdCBhbmQgdHJ5IGFnYWluLicpXG4gICAgICAgIG1lc3NhZ2UgPSBuZXh0KChpdGVtLnNwbGl0KCdTZXR1cCBuZWVkcyBhdHRlbnRpb246JywgMSlbLTFdLnN0cmlwKCkgZm9yIGl0ZW0gaW4gcmV2ZXJzZWQob3V0cHV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ1NldHVwIG5lZWRzIGF0dGVudGlvbjonIGluIGl0ZW0pLCBOb25lKVxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IobWVzc2FnZSBvciAob3V0cHV0Wy0xXSBpZiBvdXRwdXQgZWxzZSAnU2V0dXAgY291bGQgbm90IGZpbmlzaC4nKSlcblxuXG5kZWYgaGVhZGxlc3NfdXNhZ2Uob3JpZ2luKTpcbiAgICBvcmlnaW4gPSBvcmlnaW4ucnN0cmlwKCcvJylcbiAgICBwcmludChcbiAgICAgICAgJ1RoaXMgY29tcHV0ZXIgaGFzIG5vIGRlc2t0b3Agc2Vzc2lvbi4gRW5yb2xsIGZyb20gdGhlIHNoZWxsIHdpdGggbmFtZSwgZW1haWwsIGFuZCBwaG9uZTpcXG4nXG4gICAgICAgIGYnICBjdXJsIC1mc1NMIHtvcmlnaW59L2NvbXB1dGVfZmxlZXQvZG93bmxvYWQvc2NyaXB0IHwgXFxcXFxcbidcbiAgICAgICAgXCIgICAgc3VkbyBER0VfRU5ST0xMX05BTUU9J01hY2hpbmUgbmFtZScgREdFX0VOUk9MTF9FTUFJTD0neW91QGV4YW1wbGUuY29tJyBcIlxuICAgICAgICBcIkRHRV9FTlJPTExfUEhPTkU9JysxWFhYWFhYWFhYWCcgYmFzaFxcblwiXG4gICAgICAgICdPcHRpb25hbDogREdFX0VOUk9MTF9OT1RFLiBER0VfRU5ST0xMX0hFQURMRVNTPTEgc2tpcHMgYSBsZWZ0b3ZlciBncmFwaGljYWwgc2Vzc2lvbi4nLFxuICAgICAgICBmbHVzaD1UcnVlLFxuICAgIClcblxuXG5kZWYgYWRvcHRfZXhpc3RpbmdfaWRlbnRpdHkoKTpcbiAgICBpZiBpbnZpdGF0aW9uX3BhdGgoKS5leGlzdHMoKTpcbiAgICAgICAgcmV0dXJuIFRydWVcbiAgICBpZGVudGl0eSA9IHN1cHBvcnRfZGlyKCkgLyAnaWRlbnRpdHkuanNvbidcbiAgICBpZiBub3QgaWRlbnRpdHkuZXhpc3RzKCk6XG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIHRyeTpcbiAgICAgICAgZGF0YSA9IGpzb24ubG9hZHMoaWRlbnRpdHkucmVhZF90ZXh0KCkpXG4gICAgZXhjZXB0IChPU0Vycm9yLCBqc29uLkpTT05EZWNvZGVFcnJvciwgVW5pY29kZURlY29kZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgaWYgbm90IGRhdGEuZ2V0KCd0b2tlbicpOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBpbnZpdGF0aW9uX3BhdGgoKS53cml0ZV90ZXh0KGpzb24uZHVtcHMoe1xuICAgICAgICAnb3JpZ2luJzogZGF0YS5nZXQoJ29yaWdpbicpIG9yIGNvbmZpZygpLmdldCgnb3JpZ2luJyksXG4gICAgICAgICd0b2tlbic6IGRhdGFbJ3Rva2VuJ10sXG4gICAgICAgICd3b3JrZXJfaWQnOiBkYXRhLmdldCgnd29ya2VyX2lkJyksXG4gICAgfSkpXG4gICAgcmV0dXJuIFRydWVcblxuXG5kZWYgcHJvbXB0X2NvbnRhY3QoKTpcbiAgICBjb250YWN0ID0gY2xpX2NvbnRhY3QoKVxuICAgIGlmIGNvbnRhY3Q6XG4gICAgICAgIHJldHVybiBjb250YWN0XG4gICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBkaXNwbGF5X25hbWUgPSBpbnB1dCgnWW91ciBuYW1lOiAnKS5zdHJpcCgpXG4gICAgZW1haWwgPSBpbnB1dCgnRW1haWw6ICcpLnN0cmlwKClcbiAgICBwaG9uZSA9IGlucHV0KCdQaG9uZTogJykuc3RyaXAoKVxuICAgIG5vdGUgPSBpbnB1dCgnT3B0aW9uYWwgbm90ZTogJykuc3RyaXAoKVxuICAgIGNvbnNlbnQgPSBpbnB1dCgnU2VuZCB0aGlzIHJlcXVlc3Q/IFt5L05dICcpLnN0cmlwKCkubG93ZXIoKVxuICAgIGlmIGNvbnNlbnQgbm90IGluICgneScsICd5ZXMnKTpcbiAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgnU2V0dXAgY2FuY2VsbGVkLicpXG4gICAgaWYgbm90IGRpc3BsYXlfbmFtZSBvciBub3QgZW1haWwgb3Igbm90IHBob25lOlxuICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCdOYW1lLCBlbWFpbCwgYW5kIHBob25lIGFyZSByZXF1aXJlZC4nKVxuICAgIHJldHVybiB7J2Rpc3BsYXlfbmFtZSc6IGRpc3BsYXlfbmFtZSwgJ2VtYWlsJzogZW1haWwsICdwaG9uZSc6IHBob25lLCAnbm90ZSc6IG5vdGV9XG5cblxuZGVmIHRlcm1pbmFsX2Zsb3cob3JpZ2luLCBzY3JpcHRfcGF0aCk6XG4gICAgZGVmIGVtaXQobGluZSk6XG4gICAgICAgIGlmIGxpbmU6XG4gICAgICAgICAgICBwcmludChsaW5lLCBmbHVzaD1UcnVlKVxuXG4gICAgaWYgYWRvcHRfZXhpc3RpbmdfaWRlbnRpdHkoKTpcbiAgICAgICAgZW1pdCgnVGhpcyBjb21wdXRlciBhbHJlYWR5IGhhcyBhIHdvcmtlciBpZGVudGl0eS4gSW5zdGFsbGluZyBvciB1cGRhdGluZyB0aGUgd29ya2VyIHNlcnZpY2UuJylcbiAgICAgICAgcnVuX2luc3RhbGxlcihzY3JpcHRfcGF0aCwgb25fbGluZT1lbWl0KVxuICAgICAgICBlbWl0KCdXb3JrZXIgc2V0dXAgZmluaXNoZWQuJylcbiAgICAgICAgcmV0dXJuXG4gICAgY29udGFjdCA9IHByb21wdF9jb250YWN0KClcbiAgICBpZiBub3QgY29udGFjdDpcbiAgICAgICAgaGVhZGxlc3NfdXNhZ2Uob3JpZ2luKVxuICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KDEpXG4gICAgZW1pdCgnQ29sbGVjdGluZyBtYWNoaW5lIGRldGFpbHPigKYnKVxuICAgIHNuYXBzaG90ID0gY29sbGVjdF9zbmFwc2hvdChvcmlnaW4pXG4gICAgaWYgc3lzLnN0ZGluLmlzYXR0eSgpIGFuZCBub3QgY2xpX2NvbnRhY3QoKTpcbiAgICAgICAgZW1pdCgnXFxuJy5qb2luKHByZXZpZXdfbGluZXMoc25hcHNob3QpKSlcbiAgICBzdGF0ZSA9IGxvYWRfc3RhdGUoKVxuICAgIHN1Ym1pdF9lbnJvbGxtZW50KFxuICAgICAgICBvcmlnaW4sXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBzbmFwc2hvdCxcbiAgICAgICAgY29udGFjdFsnZGlzcGxheV9uYW1lJ10sXG4gICAgICAgIGNvbnRhY3RbJ2VtYWlsJ10sXG4gICAgICAgIGNvbnRhY3RbJ3Bob25lJ10sXG4gICAgICAgIGNvbnRhY3RbJ25vdGUnXSxcbiAgICApXG4gICAgZW1pdCgnUmVxdWVzdCBzZW50IGFzICVzLiBXYWl0aW5nIGZvciBhcHByb3ZhbCBpbiBXb3JrZXIgZW5yb2xsbWVudHPigKYnICUgY29udGFjdFsnZGlzcGxheV9uYW1lJ10pXG4gICAgd2hpbGUgVHJ1ZTpcbiAgICAgICAgcmVzdWx0ID0gcG9sbF9lbnJvbGxtZW50KG9yaWdpbiwgc3RhdGUpXG4gICAgICAgIHN0YXR1cyA9IHJlc3VsdC5nZXQoJ3N0YXR1cycpXG4gICAgICAgIGlmIHN0YXR1cyA9PSAncGVuZGluZyc6XG4gICAgICAgICAgICB0aW1lLnNsZWVwKDUpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICBpZiBzdGF0dXMgPT0gJ2FwcHJvdmVkJzpcbiAgICAgICAgICAgIHNhdmVfaW52aXRhdGlvbihyZXN1bHQsIG9yaWdpbilcbiAgICAgICAgICAgIGVtaXQoJ0FwcHJvdmVkLiBJbnN0YWxsaW5nIHRoZSB3b3JrZXIuJylcbiAgICAgICAgICAgIHJ1bl9pbnN0YWxsZXIoc2NyaXB0X3BhdGgsIG9uX2xpbmU9ZW1pdClcbiAgICAgICAgICAgIGVtaXQoJ1dvcmtlciBzZXR1cCBmaW5pc2hlZC4nKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQocmVzdWx0LmdldCgnbWVzc2FnZScpIG9yICdUaGlzIGVucm9sbG1lbnQgcmVxdWVzdCB3YXMgZGVuaWVkIG9yIGV4cGlyZWQuJylcblxuXG5kZWYgcGlja19mb250X2ZhbWlseShyb290KTpcbiAgICBmYW1pbGllcyA9IHtzdHIobmFtZSkgZm9yIG5hbWUgaW4gcm9vdC50ay5jYWxsKCdmb250JywgJ2ZhbWlsaWVzJyl9XG4gICAgZm9yIG5hbWUgaW4gKCdVYnVudHUnLCAnQ2FudGFyZWxsJywgJ05vdG8gU2FucycsICdEZWphVnUgU2FucycsICdTZWdvZSBVSScsICdIZWx2ZXRpY2EnKTpcbiAgICAgICAgaWYgbmFtZSBpbiBmYW1pbGllczpcbiAgICAgICAgICAgIHJldHVybiBuYW1lXG4gICAgcmV0dXJuICdUa0RlZmF1bHRGb250J1xuXG5cbmRlZiB0a2ludGVyX2Zsb3cob3JpZ2luLCBzY3JpcHRfcGF0aCk6XG4gICAgaW1wb3J0IHRraW50ZXIgYXMgdGtcbiAgICBmcm9tIHRraW50ZXIgaW1wb3J0IGZvbnQgYXMgdGtmb250XG4gICAgZnJvbSB0a2ludGVyIGltcG9ydCBzY3JvbGxlZHRleHRcblxuICAgIENPTE9SUyA9IHtcbiAgICAgICAgJ2luayc6ICcjMWMxOTE3JyxcbiAgICAgICAgJ211dGVkJzogJyM3ODcxNmMnLFxuICAgICAgICAncGFwZXInOiAnI2Y1ZjBlYScsXG4gICAgICAgICdjYXJkJzogJyNmZmZjZjgnLFxuICAgICAgICAnbGluZSc6ICcjZTdlMGQ2JyxcbiAgICAgICAgJ2hlYWRlcic6ICcjMWMxOTE3JyxcbiAgICAgICAgJ2hlYWRlcl90ZXh0JzogJyNmYWY3ZjInLFxuICAgICAgICAnaGVhZGVyX211dGVkJzogJyNjNGI4YWEnLFxuICAgICAgICAnYWNjZW50JzogJyM4YjFlMWUnLFxuICAgICAgICAnYWNjZW50X2hvdmVyJzogJyM2ZjE2MTYnLFxuICAgICAgICAnYWNjZW50X3NvZnQnOiAnI2Y0ZTdlNCcsXG4gICAgICAgICdvayc6ICcjM2Y2MjEyJyxcbiAgICAgICAgJ29rX3NvZnQnOiAnI2VlZjRlNCcsXG4gICAgICAgICd3YXJuJzogJyM5YTM0MTInLFxuICAgICAgICAnd2Fybl9zb2Z0JzogJyNmYWVjZTQnLFxuICAgICAgICAnd2hpdGUnOiAnI2ZmZmZmZicsXG4gICAgICAgICdiYWRnZSc6ICcjMWMxOTE3JyxcbiAgICB9XG5cbiAgICBzbmFwc2hvdCA9IHsndmFsdWUnOiBOb25lLCAnZXJyb3InOiBOb25lfVxuXG4gICAgZGVmIGxvYWRfc25hcHNob3QoKTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgc25hcHNob3RbJ3ZhbHVlJ10gPSBjb2xsZWN0X3NuYXBzaG90KG9yaWdpbilcbiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgIHNuYXBzaG90WydlcnJvciddID0gc3RyKGVycm9yKVxuXG4gICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bG9hZF9zbmFwc2hvdCwgZGFlbW9uPVRydWUpLnN0YXJ0KClcblxuICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOlxuICAgICAgICByb290ID0gdGsuVGsoY2xhc3NOYW1lPUxJTlVYX1dNX0NMQVNTLCBiYXNlTmFtZT1MSU5VWF9XTV9DTEFTUylcbiAgICBlbHNlOlxuICAgICAgICByb290ID0gdGsuVGsoKVxuICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzpcbiAgICAgICAgcm9vdC53aXRoZHJhdygpXG4gICAgcm9vdC50aXRsZSgnRG9yaWFuIEdyYXkgV29ya2VyJylcbiAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgcm9vdC50ay5jYWxsKCd3bScsICdjbGFzcycsIHJvb3QuX3csIExJTlVYX1dNX0NMQVNTICsgJyAnICsgTElOVVhfV01fQ0xBU1MpXG4gICAgICAgIGV4Y2VwdCB0ay5UY2xFcnJvcjpcbiAgICAgICAgICAgIHBhc3NcbiAgICByb290LmNvbmZpZ3VyZShiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgc2NyZWVuX3cgPSByb290LndpbmZvX3NjcmVlbndpZHRoKClcbiAgICBzY3JlZW5faCA9IHJvb3Qud2luZm9fc2NyZWVuaGVpZ2h0KClcbiAgICByb290Lm1pbnNpemUobWluKDcyMCwgc2NyZWVuX3cpLCBtaW4oNTIwLCBzY3JlZW5faCkpXG4gICAgYXBwbHlfd2luZG93X2ljb24ocm9vdClcbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6XG4gICAgICAgIHByZXNlbnRfd2luZG93KHJvb3QpXG4gICAgICAgIHJvb3QudXBkYXRlKClcbiAgICBmYW1pbHkgPSBwaWNrX2ZvbnRfZmFtaWx5KHJvb3QpXG4gICAgZm9udHMgPSB7XG4gICAgICAgICdkaXNwbGF5JzogdGtmb250LkZvbnQoZmFtaWx5PWZhbWlseSwgc2l6ZT0yNiwgd2VpZ2h0PSdib2xkJyksXG4gICAgICAgICd0aXRsZSc6IHRrZm9udC5Gb250KGZhbWlseT1mYW1pbHksIHNpemU9MTgsIHdlaWdodD0nYm9sZCcpLFxuICAgICAgICAnc3VidGl0bGUnOiB0a2ZvbnQuRm9udChmYW1pbHk9ZmFtaWx5LCBzaXplPTEyKSxcbiAgICAgICAgJ2hlYWRpbmcnOiB0a2ZvbnQuRm9udChmYW1pbHk9ZmFtaWx5LCBzaXplPTEzLCB3ZWlnaHQ9J2JvbGQnKSxcbiAgICAgICAgJ2JvZHknOiB0a2ZvbnQuRm9udChmYW1pbHk9ZmFtaWx5LCBzaXplPTEyKSxcbiAgICAgICAgJ3NtYWxsJzogdGtmb250LkZvbnQoZmFtaWx5PWZhbWlseSwgc2l6ZT0xMSksXG4gICAgICAgICdidXR0b24nOiB0a2ZvbnQuRm9udChmYW1pbHk9ZmFtaWx5LCBzaXplPTEyLCB3ZWlnaHQ9J2JvbGQnKSxcbiAgICAgICAgJ2JhZGdlJzogdGtmb250LkZvbnQoZmFtaWx5PWZhbWlseSwgc2l6ZT0xNCwgd2VpZ2h0PSdib2xkJyksXG4gICAgICAgICdsYWJlbCc6IHRrZm9udC5Gb250KGZhbWlseT1mYW1pbHksIHNpemU9MTEsIHdlaWdodD0nYm9sZCcpLFxuICAgICAgICAnbWV0cmljJzogdGtmb250LkZvbnQoZmFtaWx5PWZhbWlseSwgc2l6ZT0yMiwgd2VpZ2h0PSdib2xkJyksXG4gICAgICAgICdtb25vJzogdGtmb250LkZvbnQoZmFtaWx5PSdEZWphVnUgU2FucyBNb25vJywgc2l6ZT0xMCksXG4gICAgfVxuICAgIGJyYW5kX2ljb24gPSBsb2FkX2JyYW5kX2ljb24odGssIHNpemU9NTYpXG5cbiAgICBoZWFkZXIgPSB0ay5GcmFtZShyb290LCBiZz1DT0xPUlNbJ2hlYWRlciddLCBwYWR4PTM2LCBwYWR5PTIyKVxuICAgIGhlYWRlci5wYWNrKGZpbGw9J3gnKVxuICAgIGlmIGJyYW5kX2ljb246XG4gICAgICAgIHRrLkxhYmVsKGhlYWRlciwgaW1hZ2U9YnJhbmRfaWNvbiwgYmc9Q09MT1JTWydoZWFkZXInXSkucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMCwgMTgpKVxuICAgIHRpdGxlX2Jsb2NrID0gdGsuRnJhbWUoaGVhZGVyLCBiZz1DT0xPUlNbJ2hlYWRlciddKVxuICAgIHRpdGxlX2Jsb2NrLnBhY2soc2lkZT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgdGsuTGFiZWwodGl0bGVfYmxvY2ssIHRleHQ9J0RvcmlhbiBHcmF5JywgZm9udD1mb250c1sndGl0bGUnXSwgYmc9Q09MT1JTWydoZWFkZXInXSxcbiAgICAgICAgICAgICBmZz1DT0xPUlNbJ2hlYWRlcl90ZXh0J10pLnBhY2soYW5jaG9yPSd3JylcbiAgICBoZWFkZXJfc3VidGl0bGUgPSB0ay5MYWJlbCh0aXRsZV9ibG9jaywgdGV4dD0nV29ya2VyIHNldHVwJywgZm9udD1mb250c1snc3VidGl0bGUnXSwgYmc9Q09MT1JTWydoZWFkZXInXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2hlYWRlcl9tdXRlZCddKVxuICAgIGhlYWRlcl9zdWJ0aXRsZS5wYWNrKGFuY2hvcj0ndycsIHBhZHk9KDIsIDApKVxuXG4gICAgc2hlbGwgPSB0ay5GcmFtZShyb290LCBiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgc2hlbGwucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUpXG4gICAgYm9keSA9IHRrLkZyYW1lKHNoZWxsLCBiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgYm9keS5wYWNrKGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSwgcGFkeD00OCwgcGFkeT0zMilcblxuICAgIHN0YXR1c190b25lID0geyd2YWx1ZSc6ICdyZWFkeSd9XG4gICAgc3RhdHVzID0gdGsuU3RyaW5nVmFyKHZhbHVlPSdHZXR0aW5nIHRoaXMgY29tcHV0ZXIgcmVhZHnigKYnKVxuICAgIGJhbm5lciA9IHRrLkZyYW1lKGJvZHksIGJnPUNPTE9SU1snYWNjZW50X3NvZnQnXSwgcGFkeD0xOCwgcGFkeT0xMilcbiAgICBiYW5uZXIucGFjayhmaWxsPSd4JywgcGFkeT0oMCwgMjIpKVxuICAgIGJhbm5lcl9kb3QgPSB0ay5DYW52YXMoYmFubmVyLCB3aWR0aD0xMiwgaGVpZ2h0PTEyLCBiZz1DT0xPUlNbJ2FjY2VudF9zb2Z0J10sIGhpZ2hsaWdodHRoaWNrbmVzcz0wKVxuICAgIGJhbm5lcl9kb3QucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMCwgMTApKVxuICAgIGJhbm5lcl9kb3QuY3JlYXRlX292YWwoMiwgMiwgMTAsIDEwLCBmaWxsPUNPTE9SU1snYWNjZW50J10sIG91dGxpbmU9JycpXG4gICAgc3RhdHVzX2xhYmVsID0gdGsuTGFiZWwoYmFubmVyLCB0ZXh0dmFyaWFibGU9c3RhdHVzLCBmb250PWZvbnRzWydib2R5J10sIGJnPUNPTE9SU1snYWNjZW50X3NvZnQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddLCB3cmFwbGVuZ3RoPTkwMCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgc3RhdHVzX2xhYmVsLnBhY2soc2lkZT0nbGVmdCcsIGZpbGw9J3gnLCBleHBhbmQ9VHJ1ZSlcblxuICAgIGRlZiBwYWludF9iYW5uZXIodG9uZT0ncmVhZHknKTpcbiAgICAgICAgcGFsZXR0ZXMgPSB7XG4gICAgICAgICAgICAncmVhZHknOiAoQ09MT1JTWydhY2NlbnRfc29mdCddLCBDT0xPUlNbJ2FjY2VudCddLCBDT0xPUlNbJ2luayddKSxcbiAgICAgICAgICAgICd3YWl0JzogKENPTE9SU1snb2tfc29mdCddLCBDT0xPUlNbJ29rJ10sIENPTE9SU1snb2snXSksXG4gICAgICAgICAgICAnZXJyb3InOiAoQ09MT1JTWyd3YXJuX3NvZnQnXSwgQ09MT1JTWyd3YXJuJ10sIENPTE9SU1snd2FybiddKSxcbiAgICAgICAgfVxuICAgICAgICBiYWNrZ3JvdW5kLCBkb3QsIHRleHQgPSBwYWxldHRlcy5nZXQodG9uZSwgcGFsZXR0ZXNbJ3JlYWR5J10pXG4gICAgICAgIHN0YXR1c190b25lWyd2YWx1ZSddID0gdG9uZVxuICAgICAgICBiYW5uZXIuY29uZmlndXJlKGJnPWJhY2tncm91bmQpXG4gICAgICAgIGJhbm5lcl9kb3QuY29uZmlndXJlKGJnPWJhY2tncm91bmQpXG4gICAgICAgIGJhbm5lcl9kb3QuaXRlbWNvbmZpZ3VyZSgxLCBmaWxsPWRvdClcbiAgICAgICAgc3RhdHVzX2xhYmVsLmNvbmZpZ3VyZShiZz1iYWNrZ3JvdW5kLCBmZz10ZXh0KVxuXG4gICAgaGVybyA9IHRrLkZyYW1lKGJvZHksIGJnPUNPTE9SU1sncGFwZXInXSlcbiAgICBoZXJvLnBhY2soZmlsbD0neCcsIHBhZHk9KDAsIDIyKSlcbiAgICB0ay5MYWJlbChoZXJvLCB0ZXh0PSdMZW5kIHRoaXMgY29tcHV0ZXIgd2hlbiB5b3UgYXJlIG5vdCB1c2luZyBpdC4nLCBmb250PWZvbnRzWydkaXNwbGF5J10sXG4gICAgICAgICAgICAgYmc9Q09MT1JTWydwYXBlciddLCBmZz1DT0xPUlNbJ2luayddLCB3cmFwbGVuZ3RoPTk4MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpLnBhY2soZmlsbD0neCcpXG4gICAgdGsuTGFiZWwoXG4gICAgICAgIGhlcm8sXG4gICAgICAgIHRleHQ9J0RvcmlhbiBHcmF5IGNhbiBydW4gcXVpZXQgYmFja2dyb3VuZCB3b3JrIG9uIG1hY2hpbmVzIGxpa2UgdGhpcyBvbmUuICdcbiAgICAgICAgICAgICAnWW91IHN0YXkgaW4gY29udHJvbCDigJQgc2VuZCBhIHJlcXVlc3QsIHdhaXQgZm9yIGFwcHJvdmFsLCBhbmQgbGVhdmUgdGhpcyB3aW5kb3cgb3Blbi4nLFxuICAgICAgICBmb250PWZvbnRzWydzdWJ0aXRsZSddLCBiZz1DT0xPUlNbJ3BhcGVyJ10sIGZnPUNPTE9SU1snbXV0ZWQnXSwgd3JhcGxlbmd0aD05ODAsXG4gICAgICAgIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnLFxuICAgICkucGFjayhmaWxsPSd4JywgcGFkeT0oOCwgMCkpXG5cbiAgICBzdGVwcyA9IHRrLkZyYW1lKGJvZHksIGJnPUNPTE9SU1sncGFwZXInXSlcbiAgICBzdGVwcy5wYWNrKGZpbGw9J3gnLCBwYWR5PSgwLCAxOCkpXG4gICAgZm9yIGNvbHVtbiwgKG51bWJlciwgdGl0bGUsIGNvcHkpIGluIGVudW1lcmF0ZShFTlJPTExNRU5UX1NURVBTKTpcbiAgICAgICAgY2FyZCA9IHRrLkZyYW1lKHN0ZXBzLCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodHRoaWNrbmVzcz0xLCBwYWR4PTIwLCBwYWR5PTIyKVxuICAgICAgICBjYXJkLmdyaWQocm93PTAsIGNvbHVtbj1jb2x1bW4sIHN0aWNreT0nbnNldycsIHBhZHg9KDAgaWYgY29sdW1uID09IDAgZWxzZSAxMCwgMCkpXG4gICAgICAgIGJhZGdlID0gdGsuQ2FudmFzKGNhcmQsIHdpZHRoPTQwLCBoZWlnaHQ9NDAsIGJnPUNPTE9SU1snY2FyZCddLCBoaWdobGlnaHR0aGlja25lc3M9MClcbiAgICAgICAgYmFkZ2UucGFjayhhbmNob3I9J3cnKVxuICAgICAgICBiYWRnZS5jcmVhdGVfb3ZhbCgyLCAyLCAzOCwgMzgsIGZpbGw9Q09MT1JTWydiYWRnZSddLCBvdXRsaW5lPScnKVxuICAgICAgICBiYWRnZS5jcmVhdGVfdGV4dCgyMCwgMjAsIHRleHQ9bnVtYmVyLCBmaWxsPUNPTE9SU1snd2hpdGUnXSwgZm9udD1mb250c1snYmFkZ2UnXSlcbiAgICAgICAgdGsuTGFiZWwoY2FyZCwgdGV4dD10aXRsZSwgZm9udD1mb250c1snaGVhZGluZyddLCBiZz1DT0xPUlNbJ2NhcmQnXSwgZmc9Q09MT1JTWydpbmsnXSxcbiAgICAgICAgICAgICAgICAgd3JhcGxlbmd0aD0yNjAsIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnKS5wYWNrKGZpbGw9J3gnLCBwYWR5PSgxNCwgNikpXG4gICAgICAgIHRrLkxhYmVsKGNhcmQsIHRleHQ9Y29weSwgZm9udD1mb250c1snYm9keSddLCBiZz1DT0xPUlNbJ2NhcmQnXSwgZmc9Q09MT1JTWydtdXRlZCddLFxuICAgICAgICAgICAgICAgICB3cmFwbGVuZ3RoPTI2MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpLnBhY2soZmlsbD0neCcpXG4gICAgICAgIHN0ZXBzLmNvbHVtbmNvbmZpZ3VyZShjb2x1bW4sIHdlaWdodD0xLCB1bmlmb3JtPSdzdGVwcycpXG5cbiAgICBwcml2YWN5ID0gdGsuRnJhbWUoYm9keSwgYmc9Q09MT1JTWyd3aGl0ZSddLCBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLFxuICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xOCwgcGFkeT0xNClcbiAgICBwcml2YWN5LnBhY2soZmlsbD0neCcsIHBhZHk9KDAsIDIyKSlcbiAgICB0ay5MYWJlbChwcml2YWN5LCB0ZXh0PSdZb3VyIHByaXZhY3knLCBmb250PWZvbnRzWydsYWJlbCddLCBiZz1DT0xPUlNbJ3doaXRlJ10sXG4gICAgICAgICAgICAgZmc9Q09MT1JTWydpbmsnXSkucGFjayhhbmNob3I9J3cnKVxuICAgIHRrLkxhYmVsKFxuICAgICAgICBwcml2YWN5LFxuICAgICAgICB0ZXh0PSdXZSBuZXZlciBjb2xsZWN0IHBhc3N3b3JkcywgZmlsZXMsIHBob3RvcywgYnJvd3NpbmcgaGlzdG9yeSwgc2VyaWFsIG51bWJlcnMsIG9yIG5ldHdvcmsgYWRkcmVzc2VzLiAnXG4gICAgICAgICAgICAgJ1RoZSBkaWFnbm9zdGljIGRhdGEgaXMgb25seSBlbm91Z2ggdG8ga25vdyB3aGV0aGVyIHRoaXMgY29tcHV0ZXIgY2FuIHJ1biB0aGUgd29yay4nLFxuICAgICAgICBmb250PWZvbnRzWydzbWFsbCddLCBiZz1DT0xPUlNbJ3doaXRlJ10sIGZnPUNPTE9SU1snbXV0ZWQnXSwgd3JhcGxlbmd0aD05ODAsXG4gICAgICAgIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnLFxuICAgICkucGFjayhmaWxsPSd4JywgcGFkeT0oNCwgMCkpXG5cbiAgICBwbGFuX2JsdXJiLCBwbGFuX2RldGFpbHMgPSBzZXR1cF9wbGFuKG9yaWdpbilcbiAgICBkZXRhaWxzX2NhcmQgPSB0ay5GcmFtZShib2R5LCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xOCwgcGFkeT0xNClcbiAgICBkZXRhaWxzX2NhcmQucGFjayhmaWxsPSd4JywgcGFkeT0oMCwgMjIpKVxuICAgIHRrLkxhYmVsKGRldGFpbHNfY2FyZCwgdGV4dD0nSWYgeW91IGFwcHJvdmUsIHRoaXMgY29tcHV0ZXIgd2lsbCcsIGZvbnQ9Zm9udHNbJ2xhYmVsJ10sXG4gICAgICAgICAgICAgYmc9Q09MT1JTWydjYXJkJ10sIGZnPUNPTE9SU1snaW5rJ10pLnBhY2soYW5jaG9yPSd3JylcbiAgICB0ay5MYWJlbChkZXRhaWxzX2NhcmQsIHRleHQ9cGxhbl9ibHVyYiwgZm9udD1mb250c1snc21hbGwnXSwgYmc9Q09MT1JTWydjYXJkJ10sIGZnPUNPTE9SU1snbXV0ZWQnXSxcbiAgICAgICAgICAgICB3cmFwbGVuZ3RoPTk4MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpLnBhY2soZmlsbD0neCcsIHBhZHk9KDQsIDEwKSlcbiAgICBkZXRhaWxzX3Zpc2libGUgPSB7J3ZhbHVlJzogRmFsc2V9XG4gICAgZGV0YWlsc19ib2R5ID0gdGsuRnJhbWUoZGV0YWlsc19jYXJkLCBiZz0nIzFjMTkxNycpXG4gICAgZGV0YWlsc190ZXh0ID0gc2Nyb2xsZWR0ZXh0LlNjcm9sbGVkVGV4dChkZXRhaWxzX2JvZHksIGhlaWdodD0xMCwgd3JhcD0nd29yZCcsIGZvbnQ9Zm9udHNbJ21vbm8nXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJnPScjMWMxOTE3JywgZmc9JyNlN2UwZDYnLCByZWxpZWY9J2ZsYXQnLCBiZD0wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0YmFja2dyb3VuZD0nI2U3ZTBkNicpXG4gICAgZGV0YWlsc190ZXh0Lmluc2VydCgnMS4wJywgcGxhbl9kZXRhaWxzKVxuICAgIGRldGFpbHNfdGV4dC5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcbiAgICBkZXRhaWxzX3RleHQucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUsIHBhZHg9MTIsIHBhZHk9MTIpXG5cbiAgICBkZWYgdG9nZ2xlX2RldGFpbHMoKTpcbiAgICAgICAgZGV0YWlsc192aXNpYmxlWyd2YWx1ZSddID0gbm90IGRldGFpbHNfdmlzaWJsZVsndmFsdWUnXVxuICAgICAgICBpZiBkZXRhaWxzX3Zpc2libGVbJ3ZhbHVlJ106XG4gICAgICAgICAgICBkZXRhaWxzX2JvZHkucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUsIHBhZHk9KDQsIDApKVxuICAgICAgICAgICAgZGV0YWlsc19idXR0b24uY29uZmlndXJlKHRleHQ9J0hpZGUgdGhlIGRldGFpbHMnKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgZGV0YWlsc19ib2R5LnBhY2tfZm9yZ2V0KClcbiAgICAgICAgICAgIGRldGFpbHNfYnV0dG9uLmNvbmZpZ3VyZSh0ZXh0PSdHaXZlIG1lIHRoZSBkZXRhaWxzJylcblxuICAgIGRldGFpbHNfYnV0dG9uID0gdGsuQnV0dG9uKGRldGFpbHNfY2FyZCwgdGV4dD0nR2l2ZSBtZSB0aGUgZGV0YWlscycsIGNvbW1hbmQ9dG9nZ2xlX2RldGFpbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1mb250c1snYm9keSddLCByZWxpZWY9J2ZsYXQnLCBiZD0wLCBwYWR4PTEyLCBwYWR5PTgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmc9Q09MT1JTWyd3aGl0ZSddLCBmZz1DT0xPUlNbJ2luayddLCBjdXJzb3I9J2hhbmQyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSlcbiAgICBkZXRhaWxzX2J1dHRvbi5wYWNrKGFuY2hvcj0ndycpXG5cbiAgICBmb3JtX2NhcmQgPSB0ay5GcmFtZShib2R5LCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0yNCwgcGFkeT0yMilcbiAgICBmb3JtX2NhcmQucGFjayhmaWxsPSd4JylcbiAgICB0ay5MYWJlbChmb3JtX2NhcmQsIHRleHQ9J1NlbmQgYSByZXF1ZXN0JywgZm9udD1mb250c1snaGVhZGluZyddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5wYWNrKGFuY2hvcj0ndycpXG4gICAgdGsuTGFiZWwoZm9ybV9jYXJkLCB0ZXh0PSdXZSBuZWVkIGEgbmFtZSwgZW1haWwsIGFuZCBwaG9uZSBzbyB3ZSBjYW4gcmVhY2ggeW91IGFib3V0IHRoaXMgY29tcHV0ZXIuJyxcbiAgICAgICAgICAgICBmb250PWZvbnRzWydzbWFsbCddLCBiZz1DT0xPUlNbJ2NhcmQnXSwgZmc9Q09MT1JTWydtdXRlZCddKS5wYWNrKGFuY2hvcj0ndycsIHBhZHk9KDQsIDE2KSlcblxuICAgIGZpZWxkcyA9IHRrLkZyYW1lKGZvcm1fY2FyZCwgYmc9Q09MT1JTWydjYXJkJ10pXG4gICAgZmllbGRzLnBhY2soZmlsbD0neCcpXG5cbiAgICBkZWYgbGFiZWxlZF9lbnRyeShwYXJlbnQsIGxhYmVsLCByb3cpOlxuICAgICAgICB0ay5MYWJlbChwYXJlbnQsIHRleHQ9bGFiZWwsIGZvbnQ9Zm9udHNbJ2xhYmVsJ10sIGJnPUNPTE9SU1snY2FyZCddLFxuICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5ncmlkKHJvdz1yb3csIGNvbHVtbj0wLCBzdGlja3k9J3cnLCBwYWR5PSgwLCA4KSBpZiByb3cgZWxzZSAoMCwgMTIpKVxuICAgICAgICBlbnRyeSA9IHRrLkVudHJ5KHBhcmVudCwgZm9udD1mb250c1snYm9keSddLCByZWxpZWY9J2ZsYXQnLCBiZD0wLCBoaWdobGlnaHR0aGlja25lc3M9MSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLCBoaWdobGlnaHRjb2xvcj1DT0xPUlNbJ2FjY2VudCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGJnPUNPTE9SU1snd2hpdGUnXSwgZmc9Q09MT1JTWydpbmsnXSwgaW5zZXJ0YmFja2dyb3VuZD1DT0xPUlNbJ2luayddKVxuICAgICAgICBlbnRyeS5ncmlkKHJvdz1yb3csIGNvbHVtbj0xLCBzdGlja3k9J3dlJywgcGFkeD0oMTYsIDApLCBwYWR5PSgwLCA4KSBpZiByb3cgZWxzZSAoMCwgMTIpLCBpcGFkeT0xMCwgaXBhZHg9OClcbiAgICAgICAgcmV0dXJuIGVudHJ5XG5cbiAgICBuYW1lX2VudHJ5ID0gbGFiZWxlZF9lbnRyeShmaWVsZHMsICdZb3VyIG5hbWUnLCAwKVxuICAgIGVtYWlsX2VudHJ5ID0gbGFiZWxlZF9lbnRyeShmaWVsZHMsICdFbWFpbCcsIDEpXG4gICAgcGhvbmVfZW50cnkgPSBsYWJlbGVkX2VudHJ5KGZpZWxkcywgJ1Bob25lJywgMilcbiAgICBub3RlX2VudHJ5ID0gbGFiZWxlZF9lbnRyeShmaWVsZHMsICdOb3RlIChvcHRpb25hbCknLCAzKVxuICAgIGZpZWxkcy5jb2x1bW5jb25maWd1cmUoMSwgd2VpZ2h0PTEpXG5cbiAgICBhY3Rpb24gPSB0ay5TdHJpbmdWYXIodmFsdWU9J3dhaXRpbmcnKVxuICAgIGJ1dHRvbnMgPSB0ay5GcmFtZShmb3JtX2NhcmQsIGJnPUNPTE9SU1snY2FyZCddKVxuICAgIGJ1dHRvbnMucGFjayhmaWxsPSd4JywgcGFkeT0oMTAsIDApKVxuXG4gICAgZGVmIHN0eWxlZF9idXR0b24ocGFyZW50LCB0ZXh0LCBjb21tYW5kLCBwcmltYXJ5PUZhbHNlKTpcbiAgICAgICAgaWYgcHJpbWFyeTpcbiAgICAgICAgICAgIGJ1dHRvbiA9IHRrLkJ1dHRvbihcbiAgICAgICAgICAgICAgICBwYXJlbnQsIHRleHQ9dGV4dCwgY29tbWFuZD1jb21tYW5kLCBmb250PWZvbnRzWydidXR0b24nXSwgcmVsaWVmPSdmbGF0JywgYmQ9MCxcbiAgICAgICAgICAgICAgICBwYWR4PTIyLCBwYWR5PTEyLCBiZz1DT0xPUlNbJ2FjY2VudCddLCBhY3RpdmViYWNrZ3JvdW5kPUNPTE9SU1snYWNjZW50X2hvdmVyJ10sXG4gICAgICAgICAgICAgICAgZmc9Q09MT1JTWyd3aGl0ZSddLCBhY3RpdmVmb3JlZ3JvdW5kPUNPTE9SU1snd2hpdGUnXSwgY3Vyc29yPSdoYW5kMicsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWRmb3JlZ3JvdW5kPScjZWRjZGM4JyxcbiAgICAgICAgICAgIClcbiAgICAgICAgZWxzZTpcbiAgICAgICAgICAgIGJ1dHRvbiA9IHRrLkJ1dHRvbihcbiAgICAgICAgICAgICAgICBwYXJlbnQsIHRleHQ9dGV4dCwgY29tbWFuZD1jb21tYW5kLCBmb250PWZvbnRzWydib2R5J10sIHJlbGllZj0nZmxhdCcsIGJkPTAsXG4gICAgICAgICAgICAgICAgcGFkeD0xNiwgcGFkeT0xMiwgYmc9Q09MT1JTWyd3aGl0ZSddLCBhY3RpdmViYWNrZ3JvdW5kPUNPTE9SU1sncGFwZXInXSxcbiAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddLCBhY3RpdmVmb3JlZ3JvdW5kPUNPTE9SU1snaW5rJ10sIGN1cnNvcj0naGFuZDInLFxuICAgICAgICAgICAgICAgIGhpZ2hsaWdodHRoaWNrbmVzcz0xLCBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLFxuICAgICAgICAgICAgKVxuICAgICAgICByZXR1cm4gYnV0dG9uXG5cbiAgICBzZW5kX2J1dHRvbiA9IHN0eWxlZF9idXR0b24oYnV0dG9ucywgJ1NlbmQgcmVxdWVzdCcsIGxhbWJkYTogTm9uZSwgcHJpbWFyeT1UcnVlKVxuICAgIHNlbmRfYnV0dG9uLnBhY2soc2lkZT0nbGVmdCcpXG4gICAgcGF1c2VfYnV0dG9uID0gc3R5bGVkX2J1dHRvbihidXR0b25zLCAnUGF1c2UnLCBsYW1iZGE6IE5vbmUpXG4gICAgcmVzdW1lX2J1dHRvbiA9IHN0eWxlZF9idXR0b24oYnV0dG9ucywgJ1Jlc3VtZScsIGxhbWJkYTogTm9uZSlcbiAgICBxdWl0X2J1dHRvbiA9IHN0eWxlZF9idXR0b24oYnV0dG9ucywgJ1F1aXQnLCByb290LmRlc3Ryb3kpXG4gICAgcXVpdF9idXR0b24ucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMTAsIDApKVxuXG4gICAgc2V0dXBfdmlldyA9IHRrLkZyYW1lKGJvZHksIGJnPUNPTE9SU1sncGFwZXInXSlcbiAgICBzZXR1cF9oZWFkaW5nID0gdGsuTGFiZWwoc2V0dXBfdmlldywgdGV4dD0nU2V0dGluZyB1cCB0aGlzIGNvbXB1dGVyJywgZm9udD1mb250c1snZGlzcGxheSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZz1DT0xPUlNbJ3BhcGVyJ10sIGZnPUNPTE9SU1snaW5rJ10sIHdyYXBsZW5ndGg9OTgwLCBqdXN0aWZ5PSdsZWZ0JywgYW5jaG9yPSd3JylcbiAgICBzZXR1cF9oZWFkaW5nLnBhY2soZmlsbD0neCcpXG4gICAgc2V0dXBfY29weSA9IHRrLkxhYmVsKFxuICAgICAgICBzZXR1cF92aWV3LFxuICAgICAgICB0ZXh0PSdZb3UgY2FuIGtlZXAgdXNpbmcgdGhpcyBjb21wdXRlci4gV2Ugd2lsbCBoYW5kbGUgdGhlIHJlc3QgaW4gdGhlIGJhY2tncm91bmQgYW5kIHRlbGwgeW91IHdoYXQgaXMgaGFwcGVuaW5nLicsXG4gICAgICAgIGZvbnQ9Zm9udHNbJ3N1YnRpdGxlJ10sIGJnPUNPTE9SU1sncGFwZXInXSwgZmc9Q09MT1JTWydtdXRlZCddLCB3cmFwbGVuZ3RoPTk4MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycsXG4gICAgKVxuICAgIHNldHVwX2NvcHkucGFjayhmaWxsPSd4JywgcGFkeT0oOCwgMjIpKVxuXG4gICAgc2V0dXBfY2FyZCA9IHRrLkZyYW1lKHNldHVwX3ZpZXcsIGJnPUNPTE9SU1snY2FyZCddLCBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0yNCwgcGFkeT0yMilcbiAgICBzZXR1cF9jYXJkLnBhY2soZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlKVxuICAgIHRrLkxhYmVsKHNldHVwX2NhcmQsIHRleHQ9J1doYXQgaXMgaGFwcGVuaW5nJywgZm9udD1mb250c1snaGVhZGluZyddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5wYWNrKGFuY2hvcj0ndycsIHBhZHk9KDAsIDEyKSlcblxuICAgIHNldHVwX3Jvd3MgPSBbXVxuICAgIGZvciBpbmRleCwgKHRpdGxlLCBkZXRhaWwpIGluIGVudW1lcmF0ZShTRVRVUF9TVEVQUyk6XG4gICAgICAgIHJvdyA9IHRrLkZyYW1lKHNldHVwX2NhcmQsIGJnPUNPTE9SU1snY2FyZCddLCBwYWR5PTgpXG4gICAgICAgIHJvdy5wYWNrKGZpbGw9J3gnKVxuICAgICAgICBiYWRnZSA9IHRrLkNhbnZhcyhyb3csIHdpZHRoPTI4LCBoZWlnaHQ9MjgsIGJnPUNPTE9SU1snY2FyZCddLCBoaWdobGlnaHR0aGlja25lc3M9MClcbiAgICAgICAgYmFkZ2UucGFjayhzaWRlPSdsZWZ0JywgcGFkeD0oMCwgMTIpKVxuICAgICAgICBjaXJjbGUgPSBiYWRnZS5jcmVhdGVfb3ZhbCg0LCA0LCAyNCwgMjQsIG91dGxpbmU9Q09MT1JTWydsaW5lJ10sIHdpZHRoPTIsIGZpbGw9Q09MT1JTWydjYXJkJ10pXG4gICAgICAgIG1hcmsgPSBiYWRnZS5jcmVhdGVfdGV4dCgxNCwgMTQsIHRleHQ9c3RyKGluZGV4ICsgMSksIGZpbGw9Q09MT1JTWydtdXRlZCddLCBmb250PWZvbnRzWydzbWFsbCddKVxuICAgICAgICB0ZXh0X2Jsb2NrID0gdGsuRnJhbWUocm93LCBiZz1DT0xPUlNbJ2NhcmQnXSlcbiAgICAgICAgdGV4dF9ibG9jay5wYWNrKHNpZGU9J2xlZnQnLCBmaWxsPSd4JywgZXhwYW5kPVRydWUpXG4gICAgICAgIHRpdGxlX2xhYmVsID0gdGsuTGFiZWwodGV4dF9ibG9jaywgdGV4dD10aXRsZSwgZm9udD1mb250c1snaGVhZGluZyddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ211dGVkJ10sIGFuY2hvcj0ndycpXG4gICAgICAgIHRpdGxlX2xhYmVsLnBhY2soZmlsbD0neCcpXG4gICAgICAgIGRldGFpbF9sYWJlbCA9IHRrLkxhYmVsKHRleHRfYmxvY2ssIHRleHQ9ZGV0YWlsLCBmb250PWZvbnRzWydzbWFsbCddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9Q09MT1JTWydtdXRlZCddLCB3cmFwbGVuZ3RoPTc2MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgICAgIGRldGFpbF9sYWJlbC5wYWNrKGZpbGw9J3gnKVxuICAgICAgICBzZXR1cF9yb3dzLmFwcGVuZCh7XG4gICAgICAgICAgICAnYmFkZ2UnOiBiYWRnZSwgJ2NpcmNsZSc6IGNpcmNsZSwgJ21hcmsnOiBtYXJrLFxuICAgICAgICAgICAgJ3RpdGxlJzogdGl0bGVfbGFiZWwsICdkZXRhaWwnOiBkZXRhaWxfbGFiZWwsICdkZWZhdWx0JzogZGV0YWlsLFxuICAgICAgICB9KVxuXG4gICAgYWN0aXZpdHkgPSB0ay5GcmFtZShzZXR1cF92aWV3LCBiZz1DT0xPUlNbJ3doaXRlJ10sIGhpZ2hsaWdodGJhY2tncm91bmQ9Q09MT1JTWydsaW5lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xOCwgcGFkeT0xNClcbiAgICBhY3Rpdml0eS5wYWNrKGZpbGw9J3gnLCBwYWR5PSgxOCwgMCkpXG4gICAgdGsuTGFiZWwoYWN0aXZpdHksIHRleHQ9J1JpZ2h0IG5vdycsIGZvbnQ9Zm9udHNbJ2xhYmVsJ10sIGJnPUNPTE9SU1snd2hpdGUnXSxcbiAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5wYWNrKGFuY2hvcj0ndycpXG4gICAgYWN0aXZpdHlfdGV4dCA9IHRrLlN0cmluZ1Zhcih2YWx1ZT0nV2FpdGluZyB0byBzdGFydOKApicpXG4gICAgYWN0aXZpdHlfbGFiZWwgPSB0ay5MYWJlbChhY3Rpdml0eSwgdGV4dHZhcmlhYmxlPWFjdGl2aXR5X3RleHQsIGZvbnQ9Zm9udHNbJ2JvZHknXSwgYmc9Q09MT1JTWyd3aGl0ZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9Q09MT1JTWydtdXRlZCddLCB3cmFwbGVuZ3RoPTk4MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgYWN0aXZpdHlfbGFiZWwucGFjayhmaWxsPSd4JywgcGFkeT0oNCwgMCkpXG4gICAgY29uc29sZV9jYXJkID0gdGsuRnJhbWUoc2V0dXBfdmlldywgYmc9JyMxYzE5MTcnLCBoaWdobGlnaHRiYWNrZ3JvdW5kPUNPTE9SU1snbGluZSddLCBoaWdobGlnaHR0aGlja25lc3M9MSlcbiAgICBjb25zb2xlX2NhcmQucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUsIHBhZHk9KDE4LCAwKSlcbiAgICB0ay5MYWJlbChjb25zb2xlX2NhcmQsIHRleHQ9J0NvbW1hbmRzJywgZm9udD1mb250c1snbGFiZWwnXSwgYmc9JyMxYzE5MTcnLFxuICAgICAgICAgICAgIGZnPScjYzRiOGFhJykucGFjayhhbmNob3I9J3cnLCBwYWR4PTE0LCBwYWR5PSgxMiwgMCkpXG4gICAgY29uc29sZSA9IHNjcm9sbGVkdGV4dC5TY3JvbGxlZFRleHQoY29uc29sZV9jYXJkLCBoZWlnaHQ9OCwgd3JhcD0nd29yZCcsIGZvbnQ9Zm9udHNbJ21vbm8nXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZz0nIzFjMTkxNycsIGZnPScjZTdlMGQ2JywgcmVsaWVmPSdmbGF0JywgYmQ9MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRiYWNrZ3JvdW5kPScjZTdlMGQ2JylcbiAgICBjb25zb2xlLnBhY2soZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlLCBwYWR4PTEyLCBwYWR5PSg2LCAxMikpXG4gICAgY29uc29sZS5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcblxuICAgIGRlZiBhcHBlbmRfY29uc29sZShsaW5lKTpcbiAgICAgICAgY29uc29sZS5jb25maWd1cmUoc3RhdGU9J25vcm1hbCcpXG4gICAgICAgIGNvbnNvbGUuaW5zZXJ0KCdlbmQnLCBsaW5lICsgJ1xcbicpXG4gICAgICAgIGNvbnNvbGUuc2VlKCdlbmQnKVxuICAgICAgICBjb25zb2xlLmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKVxuICAgIHNldHVwX2J1dHRvbnMgPSB0ay5GcmFtZShzZXR1cF92aWV3LCBiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgc2V0dXBfYnV0dG9ucy5wYWNrKGZpbGw9J3gnLCBwYWR5PSgxOCwgMCkpXG4gICAgc2V0dXBfcXVpdCA9IHN0eWxlZF9idXR0b24oc2V0dXBfYnV0dG9ucywgJ1F1aXQnLCByb290LmRlc3Ryb3kpXG4gICAgc2V0dXBfcXVpdC5wYWNrKHNpZGU9J2xlZnQnKVxuICAgIHNldHVwX3BhdXNlID0gc3R5bGVkX2J1dHRvbihzZXR1cF9idXR0b25zLCAnUGF1c2UnLCBsYW1iZGE6IE5vbmUpXG4gICAgc2V0dXBfcmVzdW1lID0gc3R5bGVkX2J1dHRvbihzZXR1cF9idXR0b25zLCAnUmVzdW1lJywgbGFtYmRhOiBOb25lKVxuXG4gICAgc3RhdHVzX3ZpZXcgPSB0ay5GcmFtZShib2R5LCBiZz1DT0xPUlNbJ3BhcGVyJ10pXG4gICAgc3RhdHVzX2hlYWRpbmcgPSB0ay5MYWJlbChzdGF0dXNfdmlldywgdGV4dD0nVGhpcyBjb21wdXRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250PWZvbnRzWyd0aXRsZSddLCBiZz1DT0xPUlNbJ3BhcGVyJ10sIGZnPUNPTE9SU1snaW5rJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwbGVuZ3RoPTcyMCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgc3RhdHVzX2hlYWRpbmcucGFjayhmaWxsPSd4JylcbiAgICBzdGF0dXNfY29weSA9IHRrLkxhYmVsKFxuICAgICAgICBzdGF0dXNfdmlldyxcbiAgICAgICAgdGV4dD0nVGhlIHdvcmtlciBzdGF5cyBvbiBhZnRlciB5b3UgY2xvc2UgdGhpcyB3aW5kb3cuIFBhdXNlIGl0IHdoZW4geW91IG5lZWQgdGhlIG1hY2hpbmUgdG8geW91cnNlbGYuJyxcbiAgICAgICAgZm9udD1mb250c1snc21hbGwnXSwgYmc9Q09MT1JTWydwYXBlciddLCBmZz1DT0xPUlNbJ211dGVkJ10sIHdyYXBsZW5ndGg9NzIwLFxuICAgICAgICBqdXN0aWZ5PSdsZWZ0JywgYW5jaG9yPSd3JyxcbiAgICApXG4gICAgc3RhdHVzX2NvcHkucGFjayhmaWxsPSd4JywgcGFkeT0oNCwgMTIpKVxuXG4gICAgZmFjdHMgPSB0ay5GcmFtZShzdGF0dXNfdmlldywgYmc9Q09MT1JTWydjYXJkJ10sIGhpZ2hsaWdodGJhY2tncm91bmQ9Q09MT1JTWydsaW5lJ10sXG4gICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xNiwgcGFkeT0xMilcbiAgICBmYWN0cy5wYWNrKGZpbGw9J3gnKVxuICAgIHN0YXRlX3ZhbHVlID0gdGsuU3RyaW5nVmFyKHZhbHVlPSdDb25uZWN0aW5n4oCmJylcbiAgICBhY3Rpdml0eV92YWx1ZSA9IHRrLlN0cmluZ1Zhcih2YWx1ZT0nQ2hlY2tpbmfigKYnKVxuICAgIHRhc2tzX3ZhbHVlID0gdGsuU3RyaW5nVmFyKHZhbHVlPScwJylcbiAgICBtZW1vcnlfdmFsdWUgPSB0ay5TdHJpbmdWYXIodmFsdWU9J+KAlCcpXG4gICAgZmFjdF9zcGVjcyA9IChcbiAgICAgICAgKCdTdGF0dXMnLCBzdGF0ZV92YWx1ZSksXG4gICAgICAgICgnUmlnaHQgbm93JywgYWN0aXZpdHlfdmFsdWUpLFxuICAgICAgICAoJ1Rhc2tzIGZpbmlzaGVkJywgdGFza3NfdmFsdWUpLFxuICAgICAgICAoJ0ZyZWUgbWVtb3J5JywgbWVtb3J5X3ZhbHVlKSxcbiAgICApXG4gICAgZmFjdF9sYWJlbHMgPSBbXVxuICAgIGZvciBjb2x1bW4sIChsYWJlbCwgdmFyaWFibGUpIGluIGVudW1lcmF0ZShmYWN0X3NwZWNzKTpcbiAgICAgICAgY2VsbCA9IHRrLkZyYW1lKGZhY3RzLCBiZz1DT0xPUlNbJ2NhcmQnXSlcbiAgICAgICAgY2VsbC5ncmlkKHJvdz0wLCBjb2x1bW49Y29sdW1uLCBzdGlja3k9J253JywgcGFkeD0oMCBpZiBjb2x1bW4gPT0gMCBlbHNlIDE4LCAwKSlcbiAgICAgICAgdGsuTGFiZWwoY2VsbCwgdGV4dD1sYWJlbCwgZm9udD1mb250c1snbGFiZWwnXSwgYmc9Q09MT1JTWydjYXJkJ10sXG4gICAgICAgICAgICAgICAgIGZnPUNPTE9SU1snbXV0ZWQnXSkucGFjayhhbmNob3I9J3cnKVxuICAgICAgICB2YWx1ZV9sYWJlbCA9IHRrLkxhYmVsKGNlbGwsIHRleHR2YXJpYWJsZT12YXJpYWJsZSwgZm9udD1mb250c1snYm9keSddLCBiZz1DT0xPUlNbJ2NhcmQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddLCB3cmFwbGVuZ3RoPTE2MCwganVzdGlmeT0nbGVmdCcsIGFuY2hvcj0ndycpXG4gICAgICAgIHZhbHVlX2xhYmVsLnBhY2soYW5jaG9yPSd3JywgcGFkeT0oMiwgMCkpXG4gICAgICAgIGZhY3RfbGFiZWxzLmFwcGVuZCh2YWx1ZV9sYWJlbClcbiAgICAgICAgZmFjdHMuY29sdW1uY29uZmlndXJlKGNvbHVtbiwgd2VpZ2h0PTEpXG5cbiAgICBjaGFydHMgPSB0ay5GcmFtZShzdGF0dXNfdmlldywgYmc9Q09MT1JTWydwYXBlciddKVxuICAgIGNoYXJ0cy5wYWNrKGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSwgcGFkeT0oMTIsIDApKVxuICAgIG1lbW9yeV9oaXN0b3J5ID0gZGVxdWUobWF4bGVuPTkwKVxuICAgIHRhc2tzX2hpc3RvcnkgPSBkZXF1ZShtYXhsZW49OTApXG5cbiAgICBkZWYgY2hhcnRfY2FyZChwYXJlbnQsIHRpdGxlLCBjb2x1bW4pOlxuICAgICAgICBjYXJkID0gdGsuRnJhbWUocGFyZW50LCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0YmFja2dyb3VuZD1DT0xPUlNbJ2xpbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodHRoaWNrbmVzcz0xLCBwYWR4PTEyLCBwYWR5PTEwKVxuICAgICAgICBjYXJkLmdyaWQocm93PTAsIGNvbHVtbj1jb2x1bW4sIHN0aWNreT0nbnNldycsIHBhZHg9KDAgaWYgY29sdW1uID09IDAgZWxzZSAxMCwgMCkpXG4gICAgICAgIHRrLkxhYmVsKGNhcmQsIHRleHQ9dGl0bGUsIGZvbnQ9Zm9udHNbJ2xhYmVsJ10sIGJnPUNPTE9SU1snY2FyZCddLFxuICAgICAgICAgICAgICAgICBmZz1DT0xPUlNbJ2luayddKS5wYWNrKGFuY2hvcj0ndycpXG4gICAgICAgIGNhbnZhcyA9IHRrLkNhbnZhcyhjYXJkLCBoZWlnaHQ9MTIwLCBiZz1DT0xPUlNbJ2NhcmQnXSwgaGlnaGxpZ2h0dGhpY2tuZXNzPTApXG4gICAgICAgIGNhbnZhcy5wYWNrKGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSwgcGFkeT0oOCwgMCkpXG4gICAgICAgIHBhcmVudC5jb2x1bW5jb25maWd1cmUoY29sdW1uLCB3ZWlnaHQ9MSlcbiAgICAgICAgcmV0dXJuIGNhbnZhc1xuXG4gICAgbWVtb3J5X2NoYXJ0ID0gY2hhcnRfY2FyZChjaGFydHMsICdNZW1vcnkgaW4gdXNlJywgMClcbiAgICB0YXNrc19jaGFydCA9IGNoYXJ0X2NhcmQoY2hhcnRzLCAnVGFza3MgZmluaXNoZWQnLCAxKVxuICAgIGNoYXJ0cy5yb3djb25maWd1cmUoMCwgd2VpZ2h0PTEpXG5cbiAgICBzdGF0dXNfbm90ZSA9IHRrLkZyYW1lKHN0YXR1c192aWV3LCBiZz1DT0xPUlNbJ3doaXRlJ10sIGhpZ2hsaWdodGJhY2tncm91bmQ9Q09MT1JTWydsaW5lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHR0aGlja25lc3M9MSwgcGFkeD0xNCwgcGFkeT0xMClcbiAgICBzdGF0dXNfbm90ZS5wYWNrKGZpbGw9J3gnLCBwYWR5PSgxMiwgMCkpXG4gICAgdGsuTGFiZWwoc3RhdHVzX25vdGUsIHRleHQ9J1BhdXNlJywgZm9udD1mb250c1snbGFiZWwnXSwgYmc9Q09MT1JTWyd3aGl0ZSddLFxuICAgICAgICAgICAgIGZnPUNPTE9SU1snaW5rJ10pLnBhY2soYW5jaG9yPSd3JylcbiAgICBzdGF0dXNfbm90ZV90ZXh0ID0gdGsuTGFiZWwoXG4gICAgICAgIHN0YXR1c19ub3RlLFxuICAgICAgICB0ZXh0PSdQYXVzZSBzdG9wcyBuZXcgd29yay4gQSB0YXNrIGFscmVhZHkgcnVubmluZyBpcyBhbGxvd2VkIHRvIGZpbmlzaC4nLFxuICAgICAgICBmb250PWZvbnRzWydzbWFsbCddLCBiZz1DT0xPUlNbJ3doaXRlJ10sIGZnPUNPTE9SU1snbXV0ZWQnXSwgd3JhcGxlbmd0aD03MjAsXG4gICAgICAgIGp1c3RpZnk9J2xlZnQnLCBhbmNob3I9J3cnLFxuICAgIClcbiAgICBzdGF0dXNfbm90ZV90ZXh0LnBhY2soZmlsbD0neCcsIHBhZHk9KDIsIDApKVxuXG4gICAgc3RhdHVzX2J1dHRvbnMgPSB0ay5GcmFtZShzdGF0dXNfdmlldywgYmc9Q09MT1JTWydwYXBlciddKVxuICAgIHN0YXR1c19idXR0b25zLnBhY2soZmlsbD0neCcsIHBhZHk9KDEyLCAwKSlcbiAgICBzdGF0dXNfcGF1c2UgPSBzdHlsZWRfYnV0dG9uKHN0YXR1c19idXR0b25zLCAnUGF1c2UnLCBsYW1iZGE6IE5vbmUsIHByaW1hcnk9VHJ1ZSlcbiAgICBzdGF0dXNfcmVzdW1lID0gc3R5bGVkX2J1dHRvbihzdGF0dXNfYnV0dG9ucywgJ1Jlc3VtZScsIGxhbWJkYTogTm9uZSwgcHJpbWFyeT1UcnVlKVxuICAgIHN0YXR1c19xdWl0ID0gc3R5bGVkX2J1dHRvbihzdGF0dXNfYnV0dG9ucywgJ1F1aXQnLCByb290LmRlc3Ryb3kpXG4gICAgc3RhdHVzX3F1aXQucGFjayhzaWRlPSdsZWZ0JylcblxuICAgIGRlZiByZWZyZXNoX2NoYXJ0cygpOlxuICAgICAgICB1c2VkX3NoYXJlID0gbWVtb3J5X2hpc3RvcnlbLTFdIGlmIG1lbW9yeV9oaXN0b3J5IGVsc2UgMFxuICAgICAgICBkcmF3X3NlcmllcyhtZW1vcnlfY2hhcnQsIGxpc3QobWVtb3J5X2hpc3RvcnkpIG9yIFt1c2VkX3NoYXJlLCB1c2VkX3NoYXJlXSxcbiAgICAgICAgICAgICAgICAgICAgQ09MT1JTWydhY2NlbnQnXSwgJyNmNGU3ZTQnLCBmbG9vcj0wLCBjZWlsaW5nPTEpXG4gICAgICAgIHBlYWsgPSBtYXgobGlzdCh0YXNrc19oaXN0b3J5KSBvciBbMF0pXG4gICAgICAgIGRyYXdfc2VyaWVzKHRhc2tzX2NoYXJ0LCBsaXN0KHRhc2tzX2hpc3RvcnkpIG9yIFswLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgQ09MT1JTWydvayddLCBDT0xPUlNbJ29rX3NvZnQnXSwgZmxvb3I9MCwgY2VpbGluZz1tYXgocGVhaywgMSkpXG5cbiAgICBkZWYgcmVjb3JkX3NhbXBsZShwYXlsb2FkKTpcbiAgICAgICAgYXZhaWxhYmxlLCB0b3RhbCA9IGhvc3RfbWVtb3J5X3NuYXBzaG90KClcbiAgICAgICAgaWYgYXZhaWxhYmxlIGFuZCB0b3RhbDpcbiAgICAgICAgICAgIG1lbW9yeV9oaXN0b3J5LmFwcGVuZChtYXgoMC4wLCBtaW4oMS4wLCAxLjAgLSAoYXZhaWxhYmxlIC8gdG90YWwpKSkpXG4gICAgICAgICAgICBtZW1vcnlfdmFsdWUuc2V0KGZvcm1hdF9ieXRlcyhhdmFpbGFibGUpICsgJyBmcmVlJylcbiAgICAgICAgZWxpZiBhdmFpbGFibGU6XG4gICAgICAgICAgICBtZW1vcnlfdmFsdWUuc2V0KGZvcm1hdF9ieXRlcyhhdmFpbGFibGUpICsgJyBmcmVlJylcbiAgICAgICAgaWYgcGF5bG9hZCBhbmQgJ3Rhc2tzX2NvbXBsZXRlZCcgaW4gcGF5bG9hZDpcbiAgICAgICAgICAgIHRhc2tzX3ZhbHVlLnNldChzdHIocGF5bG9hZC5nZXQoJ3Rhc2tzX2NvbXBsZXRlZCcpIG9yIDApKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICB0YXNrc19oaXN0b3J5LmFwcGVuZChpbnQodGFza3NfdmFsdWUuZ2V0KCkpKVxuICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjpcbiAgICAgICAgICAgIHRhc2tzX2hpc3RvcnkuYXBwZW5kKDApXG4gICAgICAgIHJlZnJlc2hfY2hhcnRzKClcblxuICAgIGRlZiBwYWludF9zZXR1cF9zdGVwKGluZGV4LCBzdGF0ZSk6XG4gICAgICAgIHJvdyA9IHNldHVwX3Jvd3NbaW5kZXhdXG4gICAgICAgIGlmIHN0YXRlID09ICdkb25lJzpcbiAgICAgICAgICAgIHJvd1snYmFkZ2UnXS5pdGVtY29uZmlndXJlKHJvd1snY2lyY2xlJ10sIGZpbGw9Q09MT1JTWydvayddLCBvdXRsaW5lPUNPTE9SU1snb2snXSlcbiAgICAgICAgICAgIHJvd1snYmFkZ2UnXS5pdGVtY29uZmlndXJlKHJvd1snbWFyayddLCB0ZXh0PSfinJMnLCBmaWxsPUNPTE9SU1snd2hpdGUnXSlcbiAgICAgICAgICAgIHJvd1sndGl0bGUnXS5jb25maWd1cmUoZmc9Q09MT1JTWydpbmsnXSlcbiAgICAgICAgICAgIHJvd1snZGV0YWlsJ10uY29uZmlndXJlKGZnPUNPTE9SU1snbXV0ZWQnXSlcbiAgICAgICAgZWxpZiBzdGF0ZSA9PSAnY3VycmVudCc6XG4gICAgICAgICAgICByb3dbJ2JhZGdlJ10uaXRlbWNvbmZpZ3VyZShyb3dbJ2NpcmNsZSddLCBmaWxsPUNPTE9SU1snYWNjZW50J10sIG91dGxpbmU9Q09MT1JTWydhY2NlbnQnXSlcbiAgICAgICAgICAgIHJvd1snYmFkZ2UnXS5pdGVtY29uZmlndXJlKHJvd1snbWFyayddLCB0ZXh0PXN0cihpbmRleCArIDEpLCBmaWxsPUNPTE9SU1snd2hpdGUnXSlcbiAgICAgICAgICAgIHJvd1sndGl0bGUnXS5jb25maWd1cmUoZmc9Q09MT1JTWydpbmsnXSlcbiAgICAgICAgICAgIHJvd1snZGV0YWlsJ10uY29uZmlndXJlKGZnPUNPTE9SU1snaW5rJ10pXG4gICAgICAgIGVsaWYgc3RhdGUgPT0gJ2Vycm9yJzpcbiAgICAgICAgICAgIHJvd1snYmFkZ2UnXS5pdGVtY29uZmlndXJlKHJvd1snY2lyY2xlJ10sIGZpbGw9Q09MT1JTWyd3YXJuJ10sIG91dGxpbmU9Q09MT1JTWyd3YXJuJ10pXG4gICAgICAgICAgICByb3dbJ2JhZGdlJ10uaXRlbWNvbmZpZ3VyZShyb3dbJ21hcmsnXSwgdGV4dD0nIScsIGZpbGw9Q09MT1JTWyd3aGl0ZSddKVxuICAgICAgICAgICAgcm93Wyd0aXRsZSddLmNvbmZpZ3VyZShmZz1DT0xPUlNbJ3dhcm4nXSlcbiAgICAgICAgICAgIHJvd1snZGV0YWlsJ10uY29uZmlndXJlKGZnPUNPTE9SU1snd2FybiddKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgcm93WydiYWRnZSddLml0ZW1jb25maWd1cmUocm93WydjaXJjbGUnXSwgZmlsbD1DT0xPUlNbJ2NhcmQnXSwgb3V0bGluZT1DT0xPUlNbJ2xpbmUnXSlcbiAgICAgICAgICAgIHJvd1snYmFkZ2UnXS5pdGVtY29uZmlndXJlKHJvd1snbWFyayddLCB0ZXh0PXN0cihpbmRleCArIDEpLCBmaWxsPUNPTE9SU1snbXV0ZWQnXSlcbiAgICAgICAgICAgIHJvd1sndGl0bGUnXS5jb25maWd1cmUoZmc9Q09MT1JTWydtdXRlZCddKVxuICAgICAgICAgICAgcm93WydkZXRhaWwnXS5jb25maWd1cmUoZmc9Q09MT1JTWydtdXRlZCddKVxuXG4gICAgZGVmIGhpZGVfaW50cm8oKTpcbiAgICAgICAgaGVyby5wYWNrX2ZvcmdldCgpXG4gICAgICAgIHN0ZXBzLnBhY2tfZm9yZ2V0KClcbiAgICAgICAgcHJpdmFjeS5wYWNrX2ZvcmdldCgpXG4gICAgICAgIGZvcm1fY2FyZC5wYWNrX2ZvcmdldCgpXG4gICAgICAgIGRldGFpbHNfY2FyZC5wYWNrX2ZvcmdldCgpXG5cbiAgICBkZWYgc2hvd19zZXR1cF92aWV3KCk6XG4gICAgICAgIGhpZGVfaW50cm8oKVxuICAgICAgICBzdGF0dXNfdmlldy5wYWNrX2ZvcmdldCgpXG4gICAgICAgIGhlYWRlcl9zdWJ0aXRsZS5jb25maWd1cmUodGV4dD0nV29ya2VyIHNldHVwJylcbiAgICAgICAgcm9vdC50aXRsZSgnRG9yaWFuIEdyYXkgV29ya2VyIFNldHVwJylcbiAgICAgICAgc2V0dXBfdmlldy5wYWNrKGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSlcblxuICAgIGRlZiBzaG93X3N0YXR1c192aWV3KCk6XG4gICAgICAgIGhpZGVfaW50cm8oKVxuICAgICAgICBzZXR1cF92aWV3LnBhY2tfZm9yZ2V0KClcbiAgICAgICAgaGVhZGVyX3N1YnRpdGxlLmNvbmZpZ3VyZSh0ZXh0PSdUaGlzIGNvbXB1dGVyJylcbiAgICAgICAgcm9vdC50aXRsZSgnRG9yaWFuIEdyYXkgV29ya2VyJylcbiAgICAgICAgc3RhdHVzX3ZpZXcucGFjayhmaWxsPSdib3RoJywgZXhwYW5kPVRydWUpXG5cbiAgICBjdXJyZW50X3NldHVwX3N0ZXAgPSB7J2luZGV4JzogMH1cblxuICAgIGRlZiBhZHZhbmNlX3NldHVwKGluZGV4LCBkZXRhaWw9Tm9uZSk6XG4gICAgICAgIGluZGV4ID0gbWF4KDAsIG1pbihpbmRleCwgbGVuKHNldHVwX3Jvd3MpIC0gMSkpXG4gICAgICAgIGZvciBwcmlvciBpbiByYW5nZShpbmRleCk6XG4gICAgICAgICAgICBwYWludF9zZXR1cF9zdGVwKHByaW9yLCAnZG9uZScpXG4gICAgICAgIHBhaW50X3NldHVwX3N0ZXAoaW5kZXgsICdjdXJyZW50JylcbiAgICAgICAgZm9yIGxhdGVyIGluIHJhbmdlKGluZGV4ICsgMSwgbGVuKHNldHVwX3Jvd3MpKTpcbiAgICAgICAgICAgIHBhaW50X3NldHVwX3N0ZXAobGF0ZXIsICdwZW5kaW5nJylcbiAgICAgICAgaWYgZGV0YWlsOlxuICAgICAgICAgICAgc2V0dXBfcm93c1tpbmRleF1bJ2RldGFpbCddLmNvbmZpZ3VyZSh0ZXh0PWRldGFpbClcbiAgICAgICAgICAgIGFjdGl2aXR5X3RleHQuc2V0KGRldGFpbClcbiAgICAgICAgY3VycmVudF9zZXR1cF9zdGVwWydpbmRleCddID0gaW5kZXhcblxuICAgIGRlZiBoYW5kbGVfaW5zdGFsbF9saW5lKGxpbmUpOlxuICAgICAgICBoaW50ID0gZnJpZW5kbHlfaW5zdGFsbF9saW5lKGxpbmUpXG4gICAgICAgIGlmIGxpbmUubHN0cmlwKCkuc3RhcnRzd2l0aCgnJCAnKSBvciAoaGludCBhbmQgaGludC5nZXQoJ3JhdycsICcnKS5sc3RyaXAoKS5zdGFydHN3aXRoKCckICcpKTpcbiAgICAgICAgICAgIGFwcGVuZF9jb25zb2xlKGxpbmUgaWYgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKCckICcpIGVsc2UgaGludFsncmF3J10pXG4gICAgICAgIGlmIG5vdCBoaW50OlxuICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKCckICcpOlxuICAgICAgICAgICAgICAgIGFjdGl2aXR5X3RleHQuc2V0KCdSdW5uaW5nICcgKyBsaW5lLmxzdHJpcCgpWzI6XSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiBoaW50LmdldCgnZXJyb3InKTpcbiAgICAgICAgICAgIGFjdGl2aXR5X3RleHQuc2V0KGhpbnRbJ2RldGFpbCddKVxuICAgICAgICAgICAgcGFpbnRfc2V0dXBfc3RlcChjdXJyZW50X3NldHVwX3N0ZXBbJ2luZGV4J10sICdlcnJvcicpXG4gICAgICAgICAgICBzdGF0dXMuc2V0KGhpbnRbJ2RldGFpbCddKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgaWYgaGludFsnc3RlcCddIGlzIG5vdCBOb25lOlxuICAgICAgICAgICAgYWR2YW5jZV9zZXR1cChoaW50WydzdGVwJ10sIGhpbnRbJ2RldGFpbCddKVxuICAgICAgICAgICAgc3RhdHVzLnNldChoaW50Wyd0aXRsZSddIG9yIGhpbnRbJ2RldGFpbCddKVxuICAgICAgICBlbGlmIGhpbnRbJ2RldGFpbCddIGFuZCBub3QgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKCckICcpOlxuICAgICAgICAgICAgYWN0aXZpdHlfdGV4dC5zZXQoaGludFsnZGV0YWlsJ10pXG5cbiAgICBkZWYgc2hvd19lbnJvbGxtZW50X2NvbnRyb2xzKCk6XG4gICAgICAgIHNlbmRfYnV0dG9uLnBhY2soc2lkZT0nbGVmdCcpXG4gICAgICAgIHBhdXNlX2J1dHRvbi5wYWNrX2ZvcmdldCgpXG4gICAgICAgIHJlc3VtZV9idXR0b24ucGFja19mb3JnZXQoKVxuXG4gICAgZGVmIHNob3dfcnVubmluZ19jb250cm9scygpOlxuICAgICAgICBzZW5kX2J1dHRvbi5wYWNrX2ZvcmdldCgpXG4gICAgICAgIHBhdXNlX2J1dHRvbi5wYWNrKHNpZGU9J2xlZnQnKVxuICAgICAgICByZXN1bWVfYnV0dG9uLnBhY2soc2lkZT0nbGVmdCcsIHBhZHg9KDEwLCAwKSlcblxuICAgIGRlZiByZWZyZXNoX3ByZXZpZXcoKTpcbiAgICAgICAgaWYgc25hcHNob3RbJ2Vycm9yJ106XG4gICAgICAgICAgICBzdGF0dXMuc2V0KHNuYXBzaG90WydlcnJvciddKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgaWYgbm90IHNuYXBzaG90Wyd2YWx1ZSddOlxuICAgICAgICAgICAgcm9vdC5hZnRlcigyNTAsIHJlZnJlc2hfcHJldmlldylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBzdGF0dXMuc2V0KCdSZWFkeSB3aGVuIHlvdSBhcmUuIEFkZCB5b3VyIG5hbWUsIGVtYWlsLCBhbmQgcGhvbmUsIHRoZW4gc2VuZCBhIHJlcXVlc3QuJylcbiAgICAgICAgcGFpbnRfYmFubmVyKCdyZWFkeScpXG4gICAgICAgIGFjdGlvbi5zZXQoJ3JlYWR5JylcbiAgICAgICAgc2VuZF9idXR0b24uY29uZmlndXJlKHN0YXRlPSdub3JtYWwnKVxuXG4gICAgZGVmIHNlbmRfcmVxdWVzdCgpOlxuICAgICAgICBpZiBhY3Rpb24uZ2V0KCkgIT0gJ3JlYWR5JzpcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBkaXNwbGF5X25hbWUgPSBuYW1lX2VudHJ5LmdldCgpLnN0cmlwKClcbiAgICAgICAgZW1haWwgPSBlbWFpbF9lbnRyeS5nZXQoKS5zdHJpcCgpXG4gICAgICAgIHBob25lID0gcGhvbmVfZW50cnkuZ2V0KCkuc3RyaXAoKVxuICAgICAgICBpZiBub3QgZGlzcGxheV9uYW1lOlxuICAgICAgICAgICAgc3RhdHVzLnNldCgnQWRkIHlvdXIgbmFtZSBiZWZvcmUgc2VuZGluZyB0aGUgcmVxdWVzdC4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgICAgICBuYW1lX2VudHJ5LmZvY3VzX3NldCgpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgaWYgbm90IGVtYWlsOlxuICAgICAgICAgICAgc3RhdHVzLnNldCgnQWRkIHlvdXIgZW1haWwgYmVmb3JlIHNlbmRpbmcgdGhlIHJlcXVlc3QuJylcbiAgICAgICAgICAgIHBhaW50X2Jhbm5lcignZXJyb3InKVxuICAgICAgICAgICAgZW1haWxfZW50cnkuZm9jdXNfc2V0KClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiBub3QgcGhvbmU6XG4gICAgICAgICAgICBzdGF0dXMuc2V0KCdBZGQgeW91ciBwaG9uZSBudW1iZXIgYmVmb3JlIHNlbmRpbmcgdGhlIHJlcXVlc3QuJylcbiAgICAgICAgICAgIHBhaW50X2Jhbm5lcignZXJyb3InKVxuICAgICAgICAgICAgcGhvbmVfZW50cnkuZm9jdXNfc2V0KClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBhY3Rpb24uc2V0KCdzdWJtaXR0aW5nJylcbiAgICAgICAgc3RhdHVzLnNldCgnU2VuZGluZyB5b3VyIHJlcXVlc3TigKYnKVxuICAgICAgICBwYWludF9iYW5uZXIoJ3dhaXQnKVxuICAgICAgICBzZW5kX2J1dHRvbi5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcblxuICAgICAgICBkZWYgc3VibWl0KCk6XG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBsb2FkX3N0YXRlKClcbiAgICAgICAgICAgICAgICBzdWJtaXRfZW5yb2xsbWVudChvcmlnaW4sIHN0YXRlLCBzbmFwc2hvdFsndmFsdWUnXSwgZGlzcGxheV9uYW1lLCBlbWFpbCwgcGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZV9lbnRyeS5nZXQoKS5zdHJpcCgpKVxuICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXIoMCwgbGFtYmRhOiBiZWdpbl9wb2xsKHN0YXRlKSlcbiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgZGVmIGZhaWwobWVzc2FnZT1zdHIoZXJyb3IpKTpcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnNldChtZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICBwYWludF9iYW5uZXIoJ2Vycm9yJylcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNldCgncmVhZHknKVxuICAgICAgICAgICAgICAgICAgICBzZW5kX2J1dHRvbi5jb25maWd1cmUoc3RhdGU9J25vcm1hbCcpXG4gICAgICAgICAgICAgICAgcm9vdC5hZnRlcigwLCBmYWlsKVxuXG4gICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXN1Ym1pdCwgZGFlbW9uPVRydWUpLnN0YXJ0KClcblxuICAgIHNlbmRfYnV0dG9uLmNvbmZpZ3VyZShjb21tYW5kPXNlbmRfcmVxdWVzdCwgc3RhdGU9J2Rpc2FibGVkJylcblxuICAgIGRlZiBiZWdpbl9wb2xsKHN0YXRlKTpcbiAgICAgICAgc3RhdHVzLnNldCgnUmVxdWVzdCBzZW50LiBZb3UgY2FuIGxlYXZlIHRoaXMgd2luZG93IG9wZW4gd2hpbGUgd2UgcmV2aWV3IGl0LicpXG4gICAgICAgIHBhaW50X2Jhbm5lcignd2FpdCcpXG4gICAgICAgIGFjdGlvbi5zZXQoJ3BvbGxpbmcnKVxuICAgICAgICBuYW1lX2VudHJ5LmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKVxuICAgICAgICBlbWFpbF9lbnRyeS5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJylcbiAgICAgICAgcGhvbmVfZW50cnkuY29uZmlndXJlKHN0YXRlPSdkaXNhYmxlZCcpXG4gICAgICAgIG5vdGVfZW50cnkuY29uZmlndXJlKHN0YXRlPSdkaXNhYmxlZCcpXG4gICAgICAgIHNlbmRfYnV0dG9uLmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKVxuXG4gICAgICAgIGRlZiBwb2xsX2xvb3AoKTpcbiAgICAgICAgICAgIHdoaWxlIGFjdGlvbi5nZXQoKSA9PSAncG9sbGluZyc6XG4gICAgICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwb2xsX2Vucm9sbG1lbnQob3JpZ2luLCBzdGF0ZSlcbiAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICAgICAgICAgICAgICByb290LmFmdGVyKDAsIGxhbWJkYTogKHN0YXR1cy5zZXQoc3RyKGVycm9yKSksIHBhaW50X2Jhbm5lcignZXJyb3InKSkpXG4gICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMylcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICBpZiByZXN1bHQuZ2V0KCdzdGF0dXMnKSA9PSAncGVuZGluZyc6XG4gICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMylcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICBpZiByZXN1bHQuZ2V0KCdzdGF0dXMnKSA9PSAnYXBwcm92ZWQnOlxuICAgICAgICAgICAgICAgICAgICBpbnZpdGF0aW9uX3BhdGgoKS53cml0ZV90ZXh0KGpzb24uZHVtcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgJ29yaWdpbic6IG9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbic6IHJlc3VsdFsndG9rZW4nXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3b3JrZXJfaWQnOiByZXN1bHRbJ3dvcmtlcl9pZCddLFxuICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5hZnRlcigwLCBsYW1iZGE6IGJlZ2luX2luc3RhbGwocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgcm9vdC5hZnRlcigwLCBsYW1iZGE6IChzdGF0dXMuc2V0KCdUaGlzIHJlcXVlc3Qgd2FzIGRlbmllZCBvciBleHBpcmVkLicpLCBwYWludF9iYW5uZXIoJ2Vycm9yJykpKVxuICAgICAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXBvbGxfbG9vcCwgZGFlbW9uPVRydWUpLnN0YXJ0KClcblxuICAgIGRlZiBiZWdpbl9pbnN0YWxsKHJlc3VsdCk6XG4gICAgICAgIHN0YXR1cy5zZXQoJ0FwcHJvdmVkLiBTZXR0aW5nIHRoaXMgY29tcHV0ZXIgdXAgbm93IOKAlCB5b3UgY2FuIGxlYXZlIHRoaXMgd2luZG93IG9wZW4uJylcbiAgICAgICAgcGFpbnRfYmFubmVyKCd3YWl0JylcbiAgICAgICAgYWN0aW9uLnNldCgnaW5zdGFsbGluZycpXG4gICAgICAgIHNob3dfc2V0dXBfdmlldygpXG4gICAgICAgIGFkdmFuY2Vfc2V0dXAoMCwgJ0RvcmlhbiBHcmF5IGFjY2VwdGVkIHRoaXMgY29tcHV0ZXIuIFNldHVwIGlzIHN0YXJ0aW5nLicpXG4gICAgICAgIGFwcGVuZF9jb25zb2xlKCcjICcgKyBwbGFuX2JsdXJiKVxuICAgICAgICBmb3IgbGluZSBpbiBwbGFuX2RldGFpbHMuc3BsaXRsaW5lcygpOlxuICAgICAgICAgICAgYXBwZW5kX2NvbnNvbGUoJyMgJyArIGxpbmUpXG5cbiAgICAgICAgZGVmIGluc3RhbGwoKTpcbiAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICBydW5faW5zdGFsbGVyKHNjcmlwdF9wYXRoLCBvbl9saW5lPWxhbWJkYSBsaW5lOiByb290LmFmdGVyKDAsIGxhbWJkYSB0ZXh0PWxpbmU6IGhhbmRsZV9pbnN0YWxsX2xpbmUodGV4dCkpKVxuICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXIoMCwgbGFtYmRhOiBiZWdpbl9zdGF0dXMocmVzdWx0KSlcbiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgZGVmIGZhaWwobWVzc2FnZT1zdHIoZXJyb3IpKTpcbiAgICAgICAgICAgICAgICAgICAgcGFpbnRfc2V0dXBfc3RlcChjdXJyZW50X3NldHVwX3N0ZXBbJ2luZGV4J10sICdlcnJvcicpXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5X3RleHQuc2V0KG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5zZXQobWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdlcnJvcicpXG4gICAgICAgICAgICAgICAgcm9vdC5hZnRlcigwLCBmYWlsKVxuXG4gICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWluc3RhbGwsIGRhZW1vbj1UcnVlKS5zdGFydCgpXG5cbiAgICBkZWYgYmVnaW5fc3RhdHVzKHJlc3VsdCk6XG4gICAgICAgIGFjdGlvbi5zZXQoJ3J1bm5pbmcnKVxuICAgICAgICBzaG93X3N0YXR1c192aWV3KClcbiAgICAgICAgdG9rZW4gPSByZXN1bHRbJ3Rva2VuJ11cbiAgICAgICAgb3JpZ2luX3ZhbHVlID0gb3JpZ2luXG4gICAgICAgIGFwcGx5X3N0YXR1cyh7J3N0YXRlJzogJ29mZmxpbmUnfSlcblxuICAgICAgICBkZWYgcG9sbF9zdGF0dXMoKTpcbiAgICAgICAgICAgIHdoaWxlIGFjdGlvbi5nZXQoKSA9PSAncnVubmluZyc6XG4gICAgICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkID0gd29ya2VyX3N0YXR1cyhvcmlnaW5fdmFsdWUsIHRva2VuKVxuICAgICAgICAgICAgICAgICAgICByb290LmFmdGVyKDAsIGxhbWJkYSBkYXRhPXBheWxvYWQ6IGFwcGx5X3N0YXR1cyhkYXRhKSlcbiAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICAgICAgICAgICAgICByb290LmFmdGVyKDAsIGxhbWJkYSBtZXNzYWdlPXN0cihlcnJvcik6IGFwcGx5X3N0YXR1cyhOb25lLCBlcnJvcj1tZXNzYWdlKSlcbiAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDIpXG5cbiAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cG9sbF9zdGF0dXMsIGRhZW1vbj1UcnVlKS5zdGFydCgpXG5cbiAgICBkZWYgYXBwbHlfc3RhdHVzKHBheWxvYWQsIGVycm9yPU5vbmUpOlxuICAgICAgICByZWNvcmRfc2FtcGxlKHBheWxvYWQpXG4gICAgICAgIGxvY2FsX3J1bm5pbmcgPSBob3N0X3dvcmtlcl9ydW5uaW5nKClcbiAgICAgICAgaWYgZXJyb3I6XG4gICAgICAgICAgICBpZiBsb2NhbF9ydW5uaW5nOlxuICAgICAgICAgICAgICAgIHN0YXRlX3ZhbHVlLnNldCgnUnVubmluZycpXG4gICAgICAgICAgICAgICAgYWN0aXZpdHlfdmFsdWUuc2V0KCdDaGVja2luZyBpbicpXG4gICAgICAgICAgICAgICAgc3RhdHVzLnNldCgnVGhlIHdvcmtlciBpcyBydW5uaW5nIG9uIHRoaXMgY29tcHV0ZXIuIFN0YXR1cyBmcm9tIERvcmlhbiBHcmF5IGNvdWxkIG5vdCBiZSByZWZyZXNoZWQuJylcbiAgICAgICAgICAgICAgICBwYWludF9iYW5uZXIoJ3dhaXQnKVxuICAgICAgICAgICAgICAgIHNob3dfcGF1c2VfY29udHJvbHMoRmFsc2UpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBzdGF0ZV92YWx1ZS5zZXQoJ1VucmVhY2hhYmxlJylcbiAgICAgICAgICAgIGFjdGl2aXR5X3ZhbHVlLnNldCgnQ291bGQgbm90IHJlZnJlc2gnKVxuICAgICAgICAgICAgc3RhdHVzLnNldChlcnJvcilcbiAgICAgICAgICAgIHBhaW50X2Jhbm5lcignZXJyb3InKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIHBheWxvYWQgPSBwYXlsb2FkIG9yIHt9XG4gICAgICAgIHN0YXRlX25hbWUgPSBmcmllbmRseV93b3JrZXJfc3RhdGUocGF5bG9hZClcbiAgICAgICAgaWYgc3RhdGVfbmFtZSA9PSAnb2ZmbGluZScgYW5kIGxvY2FsX3J1bm5pbmc6XG4gICAgICAgICAgICBzdGF0ZV92YWx1ZS5zZXQoJ1J1bm5pbmcnKVxuICAgICAgICAgICAgYWN0aXZpdHlfdmFsdWUuc2V0KCdDaGVja2luZyBpbicpXG4gICAgICAgICAgICBzdGF0dXMuc2V0KCdUaGUgd29ya2VyIGlzIHJ1bm5pbmcgb24gdGhpcyBjb21wdXRlciBhbmQgY2hlY2tpbmcgaW4gd2l0aCBEb3JpYW4gR3JheS4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCd3YWl0JylcbiAgICAgICAgICAgIHNob3dfcGF1c2VfY29udHJvbHMoYm9vbChwYXlsb2FkLmdldCgnZHJhaW5pbmcnKSkpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgc3RhdGVfdmFsdWUuc2V0KFdPUktFUl9TVEFURV9DT1BZLmdldChzdGF0ZV9uYW1lLCBzdGF0ZV9uYW1lLnJlcGxhY2UoJ18nLCAnICcpKSlcbiAgICAgICAgYWN0aXZpdHlfdmFsdWUuc2V0KGN1cnJlbnRfd29ya19jb3B5KHBheWxvYWQpKVxuICAgICAgICBkcmFpbmluZyA9IGJvb2wocGF5bG9hZC5nZXQoJ2RyYWluaW5nJykgb3Igc3RhdGVfbmFtZSA9PSAncGF1c2VkJylcbiAgICAgICAgc2hvd19wYXVzZV9jb250cm9scyhkcmFpbmluZylcbiAgICAgICAgaWYgZHJhaW5pbmc6XG4gICAgICAgICAgICBzdGF0dXMuc2V0KCdUaGlzIGNvbXB1dGVyIGlzIHBhdXNlZC4gSXQgd2lsbCBmaW5pc2ggYW55IGN1cnJlbnQgdGFzaywgdGhlbiBzdG9wIHRha2luZyBuZXcgd29yay4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCdyZWFkeScpXG4gICAgICAgIGVsaWYgcGF5bG9hZC5nZXQoJ2N1cnJlbnRfdGFzaycpIG9yIHN0YXRlX25hbWUgPT0gJ2J1c3knOlxuICAgICAgICAgICAgc3RhdHVzLnNldCgnVGhpcyBjb21wdXRlciBpcyB3b3JraW5nIG9uIGEgdGFzay4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCd3YWl0JylcbiAgICAgICAgZWxpZiBzdGF0ZV9uYW1lID09ICdyZWFkeSc6XG4gICAgICAgICAgICBzdGF0dXMuc2V0KCdUaGlzIGNvbXB1dGVyIGlzIGNvbm5lY3RlZCBhbmQgd2FpdGluZyBmb3Igd29yay4nKVxuICAgICAgICAgICAgcGFpbnRfYmFubmVyKCd3YWl0JylcbiAgICAgICAgZWxpZiBzdGF0ZV9uYW1lID09ICdvZmZsaW5lJzpcbiAgICAgICAgICAgIHN0YXR1cy5zZXQoJ1RoZSB3b3JrZXIgaXMgbm90IGNvbm5lY3RlZCB5ZXQuIEl0IHdpbGwga2VlcCB0cnlpbmcgaW4gdGhlIGJhY2tncm91bmQuJylcbiAgICAgICAgICAgIHBhaW50X2Jhbm5lcignZXJyb3InKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgc3RhdHVzLnNldCgnVGhpcyBjb21wdXRlciBpcyAnICsgc3RhdGVfbmFtZS5yZXBsYWNlKCdfJywgJyAnKSArICcuJylcbiAgICAgICAgICAgIHBhaW50X2Jhbm5lcignd2FpdCcpXG5cbiAgICBkZWYgc2hvd19wYXVzZV9jb250cm9scyhkcmFpbmluZyk6XG4gICAgICAgIHN0YXR1c19wYXVzZS5wYWNrX2ZvcmdldCgpXG4gICAgICAgIHN0YXR1c19yZXN1bWUucGFja19mb3JnZXQoKVxuICAgICAgICBzdGF0dXNfcXVpdC5wYWNrX2ZvcmdldCgpXG4gICAgICAgIGlmIGRyYWluaW5nOlxuICAgICAgICAgICAgc3RhdHVzX3Jlc3VtZS5wYWNrKHNpZGU9J2xlZnQnKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgc3RhdHVzX3BhdXNlLnBhY2soc2lkZT0nbGVmdCcpXG4gICAgICAgIHN0YXR1c19xdWl0LnBhY2soc2lkZT0nbGVmdCcsIHBhZHg9KDEwLCAwKSlcblxuICAgIGRlZiBpbnZpdGF0aW9uX2NyZWRlbnRpYWxzKCk6XG4gICAgICAgIHNhdmVkID0ganNvbi5sb2FkcyhpbnZpdGF0aW9uX3BhdGgoKS5yZWFkX3RleHQoKSlcbiAgICAgICAgcmV0dXJuIG9yaWdpbiBvciBzYXZlZC5nZXQoJ29yaWdpbicpLCBzYXZlZFsndG9rZW4nXVxuXG4gICAgZGVmIHJlcXVlc3RfcGF1c2UocGF1c2UpOlxuICAgICAgICBzdGF0dXNfcGF1c2UuY29uZmlndXJlKHN0YXRlPSdkaXNhYmxlZCcpXG4gICAgICAgIHN0YXR1c19yZXN1bWUuY29uZmlndXJlKHN0YXRlPSdkaXNhYmxlZCcpXG5cbiAgICAgICAgZGVmIHdvcmsoKTpcbiAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICBvcmlnaW5fdmFsdWUsIHRva2VuID0gaW52aXRhdGlvbl9jcmVkZW50aWFscygpXG4gICAgICAgICAgICAgICAgcGF0aCA9ICcvY29tcHV0ZV9mbGVldC9kcmFpbicgaWYgcGF1c2UgZWxzZSAnL2NvbXB1dGVfZmxlZXQvcmVzdW1lJ1xuICAgICAgICAgICAgICAgIHBvc3RfanNvbihvcmlnaW5fdmFsdWUsIHBhdGgsIHRva2VuLCB7fSlcbiAgICAgICAgICAgICAgICBwYXlsb2FkID0gd29ya2VyX3N0YXR1cyhvcmlnaW5fdmFsdWUsIHRva2VuKVxuICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXIoMCwgbGFtYmRhIGRhdGE9cGF5bG9hZDogYXBwbHlfc3RhdHVzKGRhdGEpKVxuICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgICAgICBkZWYgZmFpbChtZXNzYWdlPXN0cihlcnJvcikpOlxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuc2V0KG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgIHBhaW50X2Jhbm5lcignZXJyb3InKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNfcGF1c2UuY29uZmlndXJlKHN0YXRlPSdub3JtYWwnKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNfcmVzdW1lLmNvbmZpZ3VyZShzdGF0ZT0nbm9ybWFsJylcbiAgICAgICAgICAgICAgICByb290LmFmdGVyKDAsIGZhaWwpXG4gICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAgICAgIHJvb3QuYWZ0ZXIoMCwgbGFtYmRhOiAoXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c19wYXVzZS5jb25maWd1cmUoc3RhdGU9J25vcm1hbCcpLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNfcmVzdW1lLmNvbmZpZ3VyZShzdGF0ZT0nbm9ybWFsJyksXG4gICAgICAgICAgICAgICAgKSlcblxuICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD13b3JrLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuXG4gICAgZGVmIHBhdXNlX3dvcmtlcigpOlxuICAgICAgICByZXF1ZXN0X3BhdXNlKFRydWUpXG5cbiAgICBkZWYgcmVzdW1lX3dvcmtlcigpOlxuICAgICAgICByZXF1ZXN0X3BhdXNlKEZhbHNlKVxuXG4gICAgZGVmIG9uX3Jlc2l6ZShfZXZlbnQ9Tm9uZSk6XG4gICAgICAgIHdyYXAgPSBtYXgoNDIwLCBib2R5LndpbmZvX3dpZHRoKCkgLSA4KVxuICAgICAgICBzdGF0dXNfbGFiZWwuY29uZmlndXJlKHdyYXBsZW5ndGg9d3JhcClcbiAgICAgICAgZm9yIHdpZGdldCBpbiBoZXJvLndpbmZvX2NoaWxkcmVuKCk6XG4gICAgICAgICAgICB3aWRnZXQuY29uZmlndXJlKHdyYXBsZW5ndGg9d3JhcClcbiAgICAgICAgZm9yIHdpZGdldCBpbiBwcml2YWN5LndpbmZvX2NoaWxkcmVuKCk6XG4gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHdpZGdldCwgdGsuTGFiZWwpIGFuZCB3aWRnZXQuY2dldCgnd3JhcGxlbmd0aCcpOlxuICAgICAgICAgICAgICAgIHdpZGdldC5jb25maWd1cmUod3JhcGxlbmd0aD1tYXgoMzIwLCB3cmFwIC0gMjQpKVxuICAgICAgICBjYXJkX3dyYXAgPSBtYXgoMTgwLCAoYm9keS53aW5mb193aWR0aCgpIC8vIDMpIC0gNjQpXG4gICAgICAgIGZvciBjaGlsZCBpbiBzdGVwcy53aW5mb19jaGlsZHJlbigpOlxuICAgICAgICAgICAgZm9yIHdpZGdldCBpbiBjaGlsZC53aW5mb19jaGlsZHJlbigpOlxuICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uod2lkZ2V0LCB0ay5MYWJlbCk6XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldC5jb25maWd1cmUod3JhcGxlbmd0aD1jYXJkX3dyYXApXG4gICAgICAgIGFjdGl2aXR5X2xhYmVsLmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPXdyYXApXG4gICAgICAgIHNldHVwX2hlYWRpbmcuY29uZmlndXJlKHdyYXBsZW5ndGg9d3JhcClcbiAgICAgICAgc2V0dXBfY29weS5jb25maWd1cmUod3JhcGxlbmd0aD13cmFwKVxuICAgICAgICBzdGF0dXNfaGVhZGluZy5jb25maWd1cmUod3JhcGxlbmd0aD13cmFwKVxuICAgICAgICBzdGF0dXNfY29weS5jb25maWd1cmUod3JhcGxlbmd0aD13cmFwKVxuICAgICAgICBzdGF0dXNfbm90ZV90ZXh0LmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPXdyYXApXG4gICAgICAgIGZhY3Rfd3JhcCA9IG1heCg5MCwgKGJvZHkud2luZm9fd2lkdGgoKSAvLyA0KSAtIDI0KVxuICAgICAgICBmb3Igd2lkZ2V0IGluIGZhY3RfbGFiZWxzOlxuICAgICAgICAgICAgd2lkZ2V0LmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPWZhY3Rfd3JhcClcbiAgICAgICAgcmVmcmVzaF9jaGFydHMoKVxuICAgICAgICBmb3Igcm93IGluIHNldHVwX3Jvd3M6XG4gICAgICAgICAgICByb3dbJ2RldGFpbCddLmNvbmZpZ3VyZSh3cmFwbGVuZ3RoPW1heCgzMjAsIHdyYXAgLSA4MCkpXG5cbiAgICBtZW1vcnlfY2hhcnQuYmluZCgnPENvbmZpZ3VyZT4nLCBsYW1iZGEgX2V2ZW50OiByZWZyZXNoX2NoYXJ0cygpKVxuICAgIHRhc2tzX2NoYXJ0LmJpbmQoJzxDb25maWd1cmU+JywgbGFtYmRhIF9ldmVudDogcmVmcmVzaF9jaGFydHMoKSlcbiAgICBib2R5LmJpbmQoJzxDb25maWd1cmU+Jywgb25fcmVzaXplKVxuICAgIHBhdXNlX2J1dHRvbi5jb25maWd1cmUoY29tbWFuZD1wYXVzZV93b3JrZXIpXG4gICAgcmVzdW1lX2J1dHRvbi5jb25maWd1cmUoY29tbWFuZD1yZXN1bWVfd29ya2VyKVxuICAgIHNldHVwX3BhdXNlLmNvbmZpZ3VyZShjb21tYW5kPXBhdXNlX3dvcmtlcilcbiAgICBzZXR1cF9yZXN1bWUuY29uZmlndXJlKGNvbW1hbmQ9cmVzdW1lX3dvcmtlcilcbiAgICBzdGF0dXNfcGF1c2UuY29uZmlndXJlKGNvbW1hbmQ9cGF1c2Vfd29ya2VyKVxuICAgIHN0YXR1c19yZXN1bWUuY29uZmlndXJlKGNvbW1hbmQ9cmVzdW1lX3dvcmtlcilcbiAgICBzaG93X2Vucm9sbG1lbnRfY29udHJvbHMoKVxuICAgIGlmIGludml0YXRpb25fcGF0aCgpLmV4aXN0cygpOlxuICAgICAgICBzYXZlZCA9IGpzb24ubG9hZHMoaW52aXRhdGlvbl9wYXRoKCkucmVhZF90ZXh0KCkpXG4gICAgICAgIHJvb3QuYWZ0ZXIoMjAwLCBsYW1iZGE6IGJlZ2luX3N0YXR1cyhzYXZlZCkpXG4gICAgZWxzZTpcbiAgICAgICAgcmVmcmVzaF9wcmV2aWV3KClcbiAgICAgICAgbmFtZV9lbnRyeS5mb2N1c19zZXQoKVxuICAgIHByZXNlbnRfd2luZG93KHJvb3QpXG4gICAgcm9vdC5kZWljb25pZnkoKVxuICAgIHJvb3QubGlmdCgpXG4gICAgcm9vdC5mb2N1c19mb3JjZSgpXG4gICAgcm9vdC5hZnRlcig4MCwgbGFtYmRhOiBwcmVzZW50X3dpbmRvdyhyb290KSlcbiAgICByb290Lm1haW5sb29wKClcblxuXG5kZWYgdGtfd2luZG93X2F2YWlsYWJsZSgpOlxuICAgIHRyeTpcbiAgICAgICAgaW1wb3J0IHRraW50ZXJcbiAgICAgICAgcm9vdCA9IHRraW50ZXIuVGsoKVxuICAgICAgICByb290LndpdGhkcmF3KClcbiAgICAgICAgcm9vdC51cGRhdGVfaWRsZXRhc2tzKClcbiAgICAgICAgZXhpc3RzID0gYm9vbChyb290LndpbmZvX2V4aXN0cygpKVxuICAgICAgICByb290LmRlc3Ryb3koKVxuICAgICAgICByZXR1cm4gZXhpc3RzXG4gICAgZXhjZXB0IEV4Y2VwdGlvbjpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG5cblxuZGVmIG9wZW5fc3lzdGVtX2Jyb3dzZXIodXJsKTpcbiAgICBudWxsID0gc3VicHJvY2Vzcy5ERVZOVUxMXG4gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOlxuICAgICAgICBlc2NhcGVkID0gdXJsLnJlcGxhY2UoJ1xcXFwnLCAnXFxcXFxcXFwnKS5yZXBsYWNlKCdcIicsICdcXFxcXCInKVxuICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFsnb3BlbicsIHVybF0sIHN0ZG91dD1udWxsLCBzdGRlcnI9bnVsbClcbiAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihbJ29zYXNjcmlwdCcsICctZScsICdvcGVuIGxvY2F0aW9uIFwiJXNcIicgJSBlc2NhcGVkXSwgc3Rkb3V0PW51bGwsIHN0ZGVycj1udWxsKVxuICAgICAgICByZXR1cm5cbiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzpcbiAgICAgICAgb3Muc3RhcnRmaWxlKHVybClcbiAgICAgICAgcmV0dXJuXG4gICAgd2luZG93c19jbWQgPSBQYXRoKCcvbW50L2MvV2luZG93cy9TeXN0ZW0zMi9jbWQuZXhlJylcbiAgICBpZiB3aW5kb3dzX2NtZC5leGlzdHMoKTpcbiAgICAgICAgc3VicHJvY2Vzcy5Qb3Blbihbc3RyKHdpbmRvd3NfY21kKSwgJy9jJywgJ3N0YXJ0JywgJycsIHVybF0sIHN0ZG91dD1udWxsLCBzdGRlcnI9bnVsbClcbiAgICAgICAgcmV0dXJuXG4gICAgZm9yIGNvbW1hbmQgaW4gKFxuICAgICAgICAoWyd4ZGctb3BlbicsIHVybF0gaWYgc2h1dGlsLndoaWNoKCd4ZGctb3BlbicpIGVsc2UgTm9uZSksXG4gICAgICAgIChbJ2dpbycsICdvcGVuJywgdXJsXSBpZiBzaHV0aWwud2hpY2goJ2dpbycpIGVsc2UgTm9uZSksXG4gICAgICAgIChbJ3dzbHZpZXcnLCB1cmxdIGlmIHNodXRpbC53aGljaCgnd3NsdmlldycpIGVsc2UgTm9uZSksXG4gICAgKTpcbiAgICAgICAgaWYgY29tbWFuZDpcbiAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgc3Rkb3V0PW51bGwsIHN0ZGVycj1udWxsKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgaW1wb3J0IHdlYmJyb3dzZXJcbiAgICB3ZWJicm93c2VyLm9wZW4odXJsKVxuXG5cbmRlZiBjb25maWd1cmVkX29yaWdpbigqY2FuZGlkYXRlcyk6XG4gICAgdmFsdWVzID0gW2NvbmZpZygpLmdldCgnb3JpZ2luJyksICpjYW5kaWRhdGVzXVxuICAgIHJldHVybiBuZXh0KCh2YWx1ZSBmb3IgdmFsdWUgaW4gdmFsdWVzIGlmIHZhbHVlKSwgTm9uZSlcblxuXG5kZWYgaW52aXRhdGlvbl9wYXlsb2FkKHJlc3VsdD1Ob25lKTpcbiAgICBpZiByZXN1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnb3JpZ2luJzogY29uZmlndXJlZF9vcmlnaW4ocmVzdWx0LmdldCgnb3JpZ2luJykpLFxuICAgICAgICAgICAgJ3Rva2VuJzogcmVzdWx0Wyd0b2tlbiddLFxuICAgICAgICAgICAgJ3dvcmtlcl9pZCc6IHJlc3VsdC5nZXQoJ3dvcmtlcl9pZCcpLFxuICAgICAgICB9XG4gICAgaWYgaW52aXRhdGlvbl9wYXRoKCkuZXhpc3RzKCk6XG4gICAgICAgIHNhdmVkID0ganNvbi5sb2FkcyhpbnZpdGF0aW9uX3BhdGgoKS5yZWFkX3RleHQoKSlcbiAgICAgICAgb3JpZ2luID0gY29uZmlndXJlZF9vcmlnaW4oc2F2ZWQuZ2V0KCdvcmlnaW4nKSlcbiAgICAgICAgaWYgb3JpZ2luIGFuZCBzYXZlZC5nZXQoJ29yaWdpbicpICE9IG9yaWdpbjpcbiAgICAgICAgICAgIHNhdmVkWydvcmlnaW4nXSA9IG9yaWdpblxuICAgICAgICAgICAgaW52aXRhdGlvbl9wYXRoKCkud3JpdGVfdGV4dChqc29uLmR1bXBzKHNhdmVkKSlcbiAgICAgICAgcmV0dXJuIHNhdmVkXG4gICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgc2F2ZV9pbnZpdGF0aW9uKHJlc3VsdCwgb3JpZ2luKTpcbiAgICBwYXlsb2FkID0ge1xuICAgICAgICAnb3JpZ2luJzogY29uZmlndXJlZF9vcmlnaW4ob3JpZ2luLCByZXN1bHQuZ2V0KCdvcmlnaW4nKSksXG4gICAgICAgICd0b2tlbic6IHJlc3VsdFsndG9rZW4nXSxcbiAgICAgICAgJ3dvcmtlcl9pZCc6IHJlc3VsdC5nZXQoJ3dvcmtlcl9pZCcpLFxuICAgIH1cbiAgICBpbnZpdGF0aW9uX3BhdGgoKS53cml0ZV90ZXh0KGpzb24uZHVtcHMocGF5bG9hZCkpXG4gICAgcmV0dXJuIHBheWxvYWRcblxuXG5kZWYgcHVibGljX3N0YXRlKGRhdGEpOlxuICAgIHJldHVybiB7XG4gICAgICAgICdwaGFzZSc6IGRhdGFbJ3BoYXNlJ10sXG4gICAgICAgICdwcmV2aWV3JzogZGF0YVsncHJldmlldyddLFxuICAgICAgICAnZXJyb3InOiBkYXRhWydlcnJvciddLFxuICAgICAgICAnbWVzc2FnZSc6IGRhdGFbJ21lc3NhZ2UnXSxcbiAgICAgICAgJ2xvZ3MnOiBsaXN0KGRhdGFbJ2xvZ3MnXSksXG4gICAgICAgICd3b3JrZXInOiBkYXRhWyd3b3JrZXInXSxcbiAgICAgICAgJ2xvY2FsX3J1bm5pbmcnOiBkYXRhWydsb2NhbF9ydW5uaW5nJ10sXG4gICAgICAgICdtZW1vcnlfZnJlZSc6IGRhdGFbJ21lbW9yeV9mcmVlJ10sXG4gICAgICAgICdkcmFpbmluZyc6IGRhdGFbJ2RyYWluaW5nJ10sXG4gICAgfVxuXG5cbmRlZiBmZXRjaF93b3JrZXJfdmlldyhvcmlnaW4pOlxuICAgIHNhdmVkID0gaW52aXRhdGlvbl9wYXlsb2FkKClcbiAgICBpZiBub3Qgc2F2ZWQ6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgb3JpZ2luX3ZhbHVlID0gY29uZmlndXJlZF9vcmlnaW4oc2F2ZWQuZ2V0KCdvcmlnaW4nKSwgb3JpZ2luKVxuICAgIGF2YWlsYWJsZSwgX3RvdGFsID0gaG9zdF9tZW1vcnlfc25hcHNob3QoKVxuICAgIGxvY2FsX3J1bm5pbmcgPSBob3N0X3dvcmtlcl9ydW5uaW5nKClcbiAgICB0cnk6XG4gICAgICAgIHBheWxvYWQgPSB3b3JrZXJfc3RhdHVzKG9yaWdpbl92YWx1ZSwgc2F2ZWRbJ3Rva2VuJ10pXG4gICAgICAgIHJldHVybiB7J3BheWxvYWQnOiBwYXlsb2FkLCAnZXJyb3InOiBOb25lLCAnYXZhaWxhYmxlJzogYXZhaWxhYmxlLCAnbG9jYWxfcnVubmluZyc6IGxvY2FsX3J1bm5pbmd9XG4gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgcmV0dXJuIHsncGF5bG9hZCc6IE5vbmUsICdlcnJvcic6IHN0cihlcnJvciksICdhdmFpbGFibGUnOiBhdmFpbGFibGUsICdsb2NhbF9ydW5uaW5nJzogbG9jYWxfcnVubmluZ31cblxuXG5kZWYgYXBwbHlfd29ya2VyX3ZpZXcoZGF0YSwgdmlldyk6XG4gICAgaWYgbm90IHZpZXc6XG4gICAgICAgIHJldHVyblxuICAgIHJlcG9ydGVkID0gKHZpZXcuZ2V0KCdwYXlsb2FkJykgb3Ige30pLmdldCgnbWVtb3J5X2F2YWlsYWJsZV9ieXRlcycpXG4gICAgYXZhaWxhYmxlID0gcmVwb3J0ZWQgb3Igdmlld1snYXZhaWxhYmxlJ11cbiAgICBkYXRhWydtZW1vcnlfZnJlZSddID0gZm9ybWF0X2J5dGVzKGF2YWlsYWJsZSkgaWYgYXZhaWxhYmxlIGVsc2UgTm9uZVxuICAgIGRhdGFbJ2xvY2FsX3J1bm5pbmcnXSA9IHZpZXdbJ2xvY2FsX3J1bm5pbmcnXVxuICAgIGlmIHZpZXdbJ2Vycm9yJ106XG4gICAgICAgIGRhdGFbJ3dvcmtlciddID0gTm9uZVxuICAgICAgICBpZiB2aWV3Wydsb2NhbF9ydW5uaW5nJ106XG4gICAgICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSAoXG4gICAgICAgICAgICAgICAgJ1RoZSB3b3JrZXIgaXMgcnVubmluZyBvbiB0aGlzIGNvbXB1dGVyLiBTdGF0dXMgZnJvbSBEb3JpYW4gR3JheSBjb3VsZCBub3QgYmUgcmVmcmVzaGVkLidcbiAgICAgICAgICAgIClcbiAgICAgICAgZWxzZTpcbiAgICAgICAgICAgIGRhdGFbJ2Vycm9yJ10gPSB2aWV3WydlcnJvciddXG4gICAgICAgIHJldHVyblxuICAgIGRhdGFbJ2Vycm9yJ10gPSBOb25lXG4gICAgZGF0YVsnd29ya2VyJ10gPSB2aWV3WydwYXlsb2FkJ11cbiAgICBzdGF0ZV9uYW1lID0gZnJpZW5kbHlfd29ya2VyX3N0YXRlKHZpZXdbJ3BheWxvYWQnXSlcbiAgICBkYXRhWydkcmFpbmluZyddID0gYm9vbCh2aWV3WydwYXlsb2FkJ10uZ2V0KCdkcmFpbmluZycpIG9yIHN0YXRlX25hbWUgPT0gJ3BhdXNlZCcpXG4gICAgaWYgZGF0YVsnZHJhaW5pbmcnXTpcbiAgICAgICAgZGF0YVsnbWVzc2FnZSddID0gJ1RoaXMgY29tcHV0ZXIgaXMgcGF1c2VkLiBJdCB3aWxsIGZpbmlzaCBhbnkgY3VycmVudCB0YXNrLCB0aGVuIHN0b3AgdGFraW5nIG5ldyB3b3JrLidcbiAgICBlbGlmIHZpZXdbJ3BheWxvYWQnXS5nZXQoJ2N1cnJlbnRfdGFzaycpIG9yIHN0YXRlX25hbWUgPT0gJ2J1c3knOlxuICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSAnVGhpcyBjb21wdXRlciBpcyB3b3JraW5nIG9uIGEgdGFzay4nXG4gICAgZWxpZiBzdGF0ZV9uYW1lID09ICdyZWFkeSc6XG4gICAgICAgIGRhdGFbJ21lc3NhZ2UnXSA9ICdUaGlzIGNvbXB1dGVyIGlzIGNvbm5lY3RlZCBhbmQgd2FpdGluZyBmb3Igd29yay4nXG4gICAgZWxpZiBzdGF0ZV9uYW1lID09ICdvZmZsaW5lJyBhbmQgZGF0YVsnbG9jYWxfcnVubmluZyddOlxuICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSAnVGhlIHdvcmtlciBpcyBydW5uaW5nIG9uIHRoaXMgY29tcHV0ZXIgYW5kIGNoZWNraW5nIGluIHdpdGggRG9yaWFuIEdyYXkuJ1xuICAgIGVsaWYgc3RhdGVfbmFtZSA9PSAnb2ZmbGluZSc6XG4gICAgICAgIGRhdGFbJ21lc3NhZ2UnXSA9ICdUaGUgd29ya2VyIGlzIG5vdCBjb25uZWN0ZWQgeWV0LiBJdCB3aWxsIGtlZXAgdHJ5aW5nIGluIHRoZSBiYWNrZ3JvdW5kLidcbiAgICBlbHNlOlxuICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSAnVGhpcyBjb21wdXRlciBpcyAnICsgc3RhdGVfbmFtZS5yZXBsYWNlKCdfJywgJyAnKSArICcuJ1xuXG5cbmRlZiBicm93c2VyX2Zsb3cob3JpZ2luLCBzY3JpcHRfcGF0aCk6XG4gICAgZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgVGhyZWFkaW5nSFRUUFNlcnZlclxuXG4gICAgc3RhdGUgPSBsb2FkX3N0YXRlKClcbiAgICBwYWdlID0gKFJPT1QgLyAnaG9zdF93ZWIuaHRtbCcpLnJlYWRfdGV4dCgpXG4gICAgaWNvbl9wYXRoID0gUk9PVCAvICdkZ2UtaWNvbi5wbmcnXG4gICAgZGF0YSA9IHtcbiAgICAgICAgJ3BoYXNlJzogJ2xvYWRpbmcnLFxuICAgICAgICAncHJldmlldyc6IE5vbmUsXG4gICAgICAgICdlcnJvcic6IE5vbmUsXG4gICAgICAgICdtZXNzYWdlJzogJycsXG4gICAgICAgICdzbmFwc2hvdCc6IE5vbmUsXG4gICAgICAgICdsb2dzJzogZGVxdWUobWF4bGVuPTQwMCksXG4gICAgICAgICd3b3JrZXInOiBOb25lLFxuICAgICAgICAnbG9jYWxfcnVubmluZyc6IEZhbHNlLFxuICAgICAgICAnbWVtb3J5X2ZyZWUnOiBOb25lLFxuICAgICAgICAnZHJhaW5pbmcnOiBGYWxzZSxcbiAgICAgICAgJ2FsaXZlJzogVHJ1ZSxcbiAgICB9XG4gICAgbG9jayA9IHRocmVhZGluZy5Mb2NrKClcblxuICAgIGRlZiBjb2xsZWN0KCk6XG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHNuYXBzaG90ID0gY29sbGVjdF9zbmFwc2hvdChvcmlnaW4pXG4gICAgICAgICAgICB3aXRoIGxvY2s6XG4gICAgICAgICAgICAgICAgZGF0YVsnc25hcHNob3QnXSA9IHNuYXBzaG90XG4gICAgICAgICAgICAgICAgZGF0YVsncHJldmlldyddID0gcHJldmlld19zdW1tYXJ5KHNuYXBzaG90KVxuICAgICAgICAgICAgICAgIGlmIGRhdGFbJ3BoYXNlJ10gPT0gJ2xvYWRpbmcnOlxuICAgICAgICAgICAgICAgICAgICBkYXRhWydwaGFzZSddID0gJ2Zvcm0nXG4gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICB3aXRoIGxvY2s6XG4gICAgICAgICAgICAgICAgZGF0YVsnZXJyb3InXSA9IHN0cihlcnJvcilcblxuICAgIGRlZiBhcHBlbmRfbG9nKGxpbmUpOlxuICAgICAgICB0ZXh0ID0gbGluZS5yc3RyaXAoKVxuICAgICAgICBpZiBub3QgdGV4dDpcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBoaW50ID0gZnJpZW5kbHlfaW5zdGFsbF9saW5lKHRleHQpXG4gICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgIGRhdGFbJ2xvZ3MnXS5hcHBlbmQodGV4dClcbiAgICAgICAgICAgIGlmIGhpbnQgYW5kIGhpbnQuZ2V0KCdkZXRhaWwnKTpcbiAgICAgICAgICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSBoaW50WydkZXRhaWwnXVxuXG4gICAgZGVmIHBvbGxfc3RhdHVzKCk6XG4gICAgICAgIHdoaWxlIGRhdGFbJ2FsaXZlJ106XG4gICAgICAgICAgICB2aWV3ID0gZmV0Y2hfd29ya2VyX3ZpZXcob3JpZ2luKVxuICAgICAgICAgICAgd2l0aCBsb2NrOlxuICAgICAgICAgICAgICAgIGFwcGx5X3dvcmtlcl92aWV3KGRhdGEsIHZpZXcpXG4gICAgICAgICAgICB0aW1lLnNsZWVwKDIpXG5cbiAgICBkZWYgZmluaXNoX3NldHVwKCk6XG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICBkYXRhWydwaGFzZSddID0gJ3NldHVwJ1xuICAgICAgICAgICAgICAgIGRhdGFbJ21lc3NhZ2UnXSA9ICdBcHByb3ZlZC4gU2V0dXAgaXMgcnVubmluZyBvbiB0aGlzIGNvbXB1dGVyLidcbiAgICAgICAgICAgIHJ1bl9pbnN0YWxsZXIoc2NyaXB0X3BhdGgsIG9uX2xpbmU9YXBwZW5kX2xvZylcbiAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICBkYXRhWydwaGFzZSddID0gJ3J1bm5pbmcnXG4gICAgICAgICAgICAgICAgZGF0YVsnbWVzc2FnZSddID0gJ1NldHVwIGZpbmlzaGVkLiBUaGlzIGNvbXB1dGVyIGlzIGNoZWNraW5nIGluIGFzIGEgd29ya2VyLidcbiAgICAgICAgICAgIHBvbGxfc3RhdHVzKClcbiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICBkYXRhWydlcnJvciddID0gc3RyKGVycm9yKVxuXG4gICAgZGVmIHdhaXRfYW5kX2luc3RhbGwoKTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgd2hpbGUgVHJ1ZTpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBwb2xsX2Vucm9sbG1lbnQob3JpZ2luLCBzdGF0ZSlcbiAgICAgICAgICAgICAgICBzdGF0dXMgPSByZXN1bHQuZ2V0KCdzdGF0dXMnKVxuICAgICAgICAgICAgICAgIGlmIHN0YXR1cyA9PSAnYXBwcm92ZWQnOlxuICAgICAgICAgICAgICAgICAgICBzYXZlX2ludml0YXRpb24ocmVzdWx0LCBvcmlnaW4pXG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zZXR1cCgpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIHN0YXR1cyAhPSAncGVuZGluZyc6XG4gICAgICAgICAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2Vycm9yJ10gPSAnVGhpcyByZXF1ZXN0IHdhcyBub3QgYXBwcm92ZWQuJ1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDMpXG4gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICB3aXRoIGxvY2s6XG4gICAgICAgICAgICAgICAgZGF0YVsnZXJyb3InXSA9IHN0cihlcnJvcilcblxuICAgIGNsYXNzIEhhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6XG4gICAgICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCAqX2FyZ3MpOlxuICAgICAgICAgICAgcmV0dXJuXG5cbiAgICAgICAgZGVmIHNlbmRfYnl0ZXMoc2VsZiwgYm9keSwgY29udGVudF90eXBlLCBzdGF0dXM9MjAwKTpcbiAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShzdGF0dXMpXG4gICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCBjb250ZW50X3R5cGUpXG4gICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ25vLXN0b3JlJylcbiAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgc3RyKGxlbihib2R5KSkpXG4gICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKClcbiAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoYm9keSlcblxuICAgICAgICBkZWYgc2VuZF9qc29uKHNlbGYsIHBheWxvYWQsIHN0YXR1cz0yMDApOlxuICAgICAgICAgICAgc2VsZi5zZW5kX2J5dGVzKGpzb24uZHVtcHMocGF5bG9hZCkuZW5jb2RlKCksICdhcHBsaWNhdGlvbi9qc29uJywgc3RhdHVzKVxuXG4gICAgICAgIGRlZiByZWFkX2pzb24oc2VsZik6XG4gICAgICAgICAgICBsZW5ndGggPSBpbnQoc2VsZi5oZWFkZXJzLmdldCgnQ29udGVudC1MZW5ndGgnKSBvciAwKVxuICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMoc2VsZi5yZmlsZS5yZWFkKGxlbmd0aCkgb3IgYid7fScpXG5cbiAgICAgICAgZGVmIGRvX0dFVChzZWxmKTpcbiAgICAgICAgICAgIGlmIHNlbGYucGF0aCA9PSAnLycgb3Igc2VsZi5wYXRoLnN0YXJ0c3dpdGgoJy9pbmRleCcpOlxuICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9ieXRlcyhwYWdlLmVuY29kZSgpLCAndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JylcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIGlmIHNlbGYucGF0aCBpbiAoJy9pY29uLnBuZycsICcvZmF2aWNvbi5pY28nKSBhbmQgaWNvbl9wYXRoLmV4aXN0cygpOlxuICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9ieXRlcyhpY29uX3BhdGgucmVhZF9ieXRlcygpLCAnaW1hZ2UvcG5nJylcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIGlmIHNlbGYucGF0aCA9PSAnL2FwaS9zdGF0ZSc6XG4gICAgICAgICAgICAgICAgd2l0aCBsb2NrOlxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfanNvbihwdWJsaWNfc3RhdGUoZGF0YSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0KVxuXG4gICAgICAgIGRlZiBkb19QT1NUKHNlbGYpOlxuICAgICAgICAgICAgaWYgc2VsZi5wYXRoID09ICcvYXBpL2Vucm9sbCc6XG4gICAgICAgICAgICAgICAgYm9keSA9IHNlbGYucmVhZF9qc29uKClcbiAgICAgICAgICAgICAgICB3aXRoIGxvY2s6XG4gICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gZGF0YVsnc25hcHNob3QnXVxuICAgICAgICAgICAgICAgIGlmIG5vdCBzbmFwc2hvdDpcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2pzb24oeydlcnJvcic6ICdTdGlsbCByZWFkaW5nIHRoaXMgY29tcHV0ZXIuJ30sIDQwOSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgbmFtZSA9IChib2R5LmdldCgnZGlzcGxheV9uYW1lJykgb3IgJycpLnN0cmlwKClcbiAgICAgICAgICAgICAgICBlbWFpbCA9IChib2R5LmdldCgnZW1haWwnKSBvciAnJykuc3RyaXAoKVxuICAgICAgICAgICAgICAgIHBob25lID0gKGJvZHkuZ2V0KCdwaG9uZScpIG9yICcnKS5zdHJpcCgpXG4gICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9qc29uKHsnZXJyb3InOiAnQWRkIHlvdXIgbmFtZS4nfSwgNDAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICBpZiBub3QgZW1haWw6XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9qc29uKHsnZXJyb3InOiAnQWRkIHlvdXIgZW1haWwuJ30sIDQwMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgaWYgbm90IHBob25lOlxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfanNvbih7J2Vycm9yJzogJ0FkZCB5b3VyIHBob25lIG51bWJlci4nfSwgNDAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdF9lbnJvbGxtZW50KG9yaWdpbiwgc3RhdGUsIHNuYXBzaG90LCBuYW1lLCBlbWFpbCwgcGhvbmUsIChib2R5LmdldCgnbm90ZScpIG9yICcnKS5zdHJpcCgpKVxuICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9qc29uKHsnZXJyb3InOiBzdHIoZXJyb3IpfSwgNDAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB3aXRoIGxvY2s6XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbJ3BoYXNlJ10gPSAncGVuZGluZydcbiAgICAgICAgICAgICAgICAgICAgZGF0YVsnbWVzc2FnZSddID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1JlcXVlc3Qgc2VudC4gV2Ugd2lsbCBzZXQgdGhpcyBjb21wdXRlciB1cCBoZXJlIGFmdGVyIHNvbWVvbmUgb24gdGhlIHRlYW0gYXBwcm92ZXMgaXQuJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d2FpdF9hbmRfaW5zdGFsbCwgZGFlbW9uPVRydWUpLnN0YXJ0KClcbiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfanNvbih7J29rJzogVHJ1ZX0pXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBpZiBzZWxmLnBhdGggaW4gKCcvYXBpL3BhdXNlJywgJy9hcGkvcmVzdW1lJyk6XG4gICAgICAgICAgICAgICAgc2F2ZWQgPSBpbnZpdGF0aW9uX3BheWxvYWQoKVxuICAgICAgICAgICAgICAgIGlmIG5vdCBzYXZlZDpcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2pzb24oeydlcnJvcic6ICdUaGlzIGNvbXB1dGVyIGlzIG5vdCBlbnJvbGxlZCB5ZXQuJ30sIDQwOSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgb3JpZ2luX3ZhbHVlID0gY29uZmlndXJlZF9vcmlnaW4oc2F2ZWQuZ2V0KCdvcmlnaW4nKSwgb3JpZ2luKVxuICAgICAgICAgICAgICAgIHBhdGggPSAnL2NvbXB1dGVfZmxlZXQvZHJhaW4nIGlmIHNlbGYucGF0aC5lbmRzd2l0aCgncGF1c2UnKSBlbHNlICcvY29tcHV0ZV9mbGVldC9yZXN1bWUnXG4gICAgICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgICAgICBwb3N0X2pzb24ob3JpZ2luX3ZhbHVlLCBwYXRoLCBzYXZlZFsndG9rZW4nXSwge30pXG4gICAgICAgICAgICAgICAgICAgIHZpZXcgPSBmZXRjaF93b3JrZXJfdmlldyhvcmlnaW4pXG4gICAgICAgICAgICAgICAgICAgIHdpdGggbG9jazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X3dvcmtlcl92aWV3KGRhdGEsIHZpZXcpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfanNvbihwdWJsaWNfc3RhdGUoZGF0YSkpXG4gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjpcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2pzb24oeydlcnJvcic6IHN0cihlcnJvcil9LCA0MDApXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0KVxuXG4gICAgaWYgaW52aXRhdGlvbl9wYXRoKCkuZXhpc3RzKCk6XG4gICAgICAgIGlmIG1hY19uZWVkc19pbnN0YWxsKCk6XG4gICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1maW5pc2hfc2V0dXAsIGRhZW1vbj1UcnVlKS5zdGFydCgpXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICBkYXRhWydwaGFzZSddID0gJ3J1bm5pbmcnXG4gICAgICAgICAgICBkYXRhWydtZXNzYWdlJ10gPSAnQ2hlY2tpbmcgaW4gd2l0aCBEb3JpYW4gR3JheeKApidcbiAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXBvbGxfc3RhdHVzLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuICAgIGVsc2U6XG4gICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWNvbGxlY3QsIGRhZW1vbj1UcnVlKS5zdGFydCgpXG4gICAgc2VydmVyID0gVGhyZWFkaW5nSFRUUFNlcnZlcigoJzEyNy4wLjAuMScsIDApLCBIYW5kbGVyKVxuICAgIHVybCA9ICdodHRwOi8vMTI3LjAuMC4xOiVzLycgJSBzZXJ2ZXIuc2VydmVyX2FkZHJlc3NbMV1cbiAgICBwcmludCgnT3BlbmluZyBEb3JpYW4gR3JheSBXb3JrZXIgaW4geW91ciBicm93c2VyOlxcbiAgJyArIHVybCwgZmx1c2g9VHJ1ZSlcbiAgICBwcmludCgnSWYgYSB3aW5kb3cgZG9lcyBub3QgYXBwZWFyLCBvcGVuIHRoYXQgYWRkcmVzcyBpbiBhbnkgYnJvd3NlciBvbiB0aGlzIGNvbXB1dGVyLicsIGZsdXNoPVRydWUpXG4gICAgb3Blbl9zeXN0ZW1fYnJvd3Nlcih1cmwpXG4gICAgdHJ5OlxuICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpXG4gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OlxuICAgICAgICBkYXRhWydhbGl2ZSddID0gRmFsc2VcbiAgICAgICAgcmV0dXJuXG5cblxuZGVmIG1haW4oKTpcbiAgICBwYXlsb2FkID0gY29uZmlnKClcbiAgICBvcmlnaW4gPSBwYXlsb2FkWydvcmlnaW4nXVxuICAgIHNjcmlwdF9wYXRoID0gc3lzLmFyZ3ZbMV0gaWYgbGVuKHN5cy5hcmd2KSA+IDEgZWxzZSBfX2ZpbGVfX1xuICAgIGltcG9ydCBob3N0X2FwcFxuICAgIGhvc3RfYXBwLmVuc3VyZV9ydW5uaW5nX2Zyb21fYXBwKHNjcmlwdF9wYXRoKVxuICAgIGlmIGhvc3RfYXBwLnJlZnJlc2hfZnJvbV9vcmlnaW4ob3JpZ2luKTpcbiAgICAgICAgcHl0aG9uID0gaG9zdF9hcHAucHl0aG9uX2Zvcl9sYXVuY2goKVxuICAgICAgICBvcy5leGVjdihweXRob24sIFtweXRob24sIHN0cihob3N0X2FwcC5zb3VyY2Vfcm9vdCgpIC8gJ2hvc3RfZ3VpLnB5JyksIHNjcmlwdF9wYXRoXSlcbiAgICBpZiB3YW50X2hlYWRsZXNzKCk6XG4gICAgICAgIHRlcm1pbmFsX2Zsb3cob3JpZ2luLCBzY3JpcHRfcGF0aClcbiAgICAgICAgcmV0dXJuXG4gICAgbGludXhfcmVsYXVuY2hfdmlhX2Rlc2t0b3Aoc2NyaXB0X3BhdGgpXG4gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOlxuICAgICAgICBtYWNvc19yZWxhdW5jaF92aWFfYXF1YShzY3JpcHRfcGF0aClcbiAgICAgICAgYnJvd3Nlcl9mbG93KG9yaWdpbiwgc2NyaXB0X3BhdGgpXG4gICAgICAgIHJldHVyblxuICAgIGlmIHRrX3dpbmRvd19hdmFpbGFibGUoKTpcbiAgICAgICAgdGtpbnRlcl9mbG93KG9yaWdpbiwgc2NyaXB0X3BhdGgpXG4gICAgICAgIHJldHVyblxuICAgIGJyb3dzZXJfZmxvdyhvcmlnaW4sIHNjcmlwdF9wYXRoKVxuXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgbWFpbigpXG4iLCJob3N0X3dlYi5odG1sIjoiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbjxoZWFkPlxuICA8bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cbiAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCI+XG4gIDx0aXRsZT5Eb3JpYW4gR3JheSBXb3JrZXI8L3RpdGxlPlxuICA8bGluayByZWw9XCJpY29uXCIgaHJlZj1cIi9pY29uLnBuZ1wiPlxuICA8c3R5bGU+XG4gICAgOnJvb3QgeyBjb2xvci1zY2hlbWU6IGxpZ2h0OyB9XG4gICAgYm9keSB7IG1hcmdpbjogMDsgZm9udDogMTZweC8xLjQ1IHVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgc2Fucy1zZXJpZjsgY29sb3I6ICMxYzE5MTc7IGJhY2tncm91bmQ6ICNmNWYwZWE7IH1cbiAgICBoZWFkZXIgeyBiYWNrZ3JvdW5kOiAjMWMxOTE3OyBjb2xvcjogI2ZhZjdmMjsgcGFkZGluZzogMjhweCAzMnB4IDI0cHg7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTZweDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgICBoZWFkZXIgaW1nIHsgd2lkdGg6IDQ4cHg7IGhlaWdodDogNDhweDsgYm9yZGVyLXJhZGl1czogMTBweDsgfVxuICAgIGhlYWRlciBwIHsgbWFyZ2luOiA4cHggMCAwOyBjb2xvcjogI2M0YjhhYTsgbWF4LXdpZHRoOiA0MHJlbTsgfVxuICAgIG1haW4geyBtYXgtd2lkdGg6IDQycmVtOyBtYXJnaW46IDAgYXV0bzsgcGFkZGluZzogMjhweCAyNHB4IDQ4cHg7IH1cbiAgICAuY2FyZCB7IGJhY2tncm91bmQ6ICNmZmZjZjg7IGJvcmRlcjogMXB4IHNvbGlkICNlN2UwZDY7IGJvcmRlci1yYWRpdXM6IDE0cHg7IHBhZGRpbmc6IDIwcHggMjJweDsgbWFyZ2luOiAwIDAgMTZweDsgfVxuICAgIGxhYmVsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtd2VpZ2h0OiA2MDA7IG1hcmdpbjogMTJweCAwIDZweDsgfVxuICAgIGlucHV0LCB0ZXh0YXJlYSB7IHdpZHRoOiAxMDAlOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250OiBpbmhlcml0OyBwYWRkaW5nOiAxMHB4IDEycHg7IGJvcmRlcjogMXB4IHNvbGlkICNlN2UwZDY7IGJvcmRlci1yYWRpdXM6IDEwcHg7IGJhY2tncm91bmQ6ICNmZmY7IH1cbiAgICBidXR0b24geyBmb250OiBpbmhlcml0OyBmb250LXdlaWdodDogNjUwOyBiYWNrZ3JvdW5kOiAjOGIxZTFlOyBjb2xvcjogI2ZmZjsgYm9yZGVyOiAwOyBib3JkZXItcmFkaXVzOiA5OTlweDsgcGFkZGluZzogMTJweCAyMnB4OyBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgICBidXR0b24uc2Vjb25kYXJ5IHsgYmFja2dyb3VuZDogIzFjMTkxNzsgfVxuICAgIGJ1dHRvbjpkaXNhYmxlZCB7IG9wYWNpdHk6IC41NTsgY3Vyc29yOiBkZWZhdWx0OyB9XG4gICAgLm11dGVkIHsgY29sb3I6ICM3ODcxNmM7IH1cbiAgICAuZmFjdHMsIC5zdGF0cyB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgZ2FwOiAxMHB4IDE2cHg7IH1cbiAgICAuZXJyIHsgY29sb3I6ICM5YTM0MTI7IGJhY2tncm91bmQ6ICNmYWVjZTQ7IHBhZGRpbmc6IDEycHggMTRweDsgYm9yZGVyLXJhZGl1czogMTBweDsgfVxuICAgIHByZSB7IG1hcmdpbjogMTJweCAwIDA7IG1heC1oZWlnaHQ6IDE2cmVtOyBvdmVyZmxvdzogYXV0bzsgYmFja2dyb3VuZDogIzFjMTkxNzsgY29sb3I6ICNmYWY3ZjI7IGJvcmRlci1yYWRpdXM6IDEwcHg7IHBhZGRpbmc6IDEycHggMTRweDsgZm9udDogMTJweC8xLjQgdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIG1vbm9zcGFjZTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9XG4gICAgLmFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDEwcHg7IGZsZXgtd3JhcDogd3JhcDsgbWFyZ2luLXRvcDogMTRweDsgfVxuICA8L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG4gIDxoZWFkZXI+XG4gICAgPGltZyBzcmM9XCIvaWNvbi5wbmdcIiBhbHQ9XCJcIj5cbiAgICA8ZGl2PlxuICAgICAgPGgxPkxlbmQgdGhpcyBjb21wdXRlciBhIHF1aWV0IGpvYjwvaDE+XG4gICAgICA8cD5XaGVuIHlvdSBhcmUgbm90IHVzaW5nIGl0LCBpdCBjYW4gaGVscCBEb3JpYW4gR3JheSB3aXRoIGJhY2tncm91bmQgd29yay4gV2UgcmV2aWV3IGVhY2ggcmVxdWVzdCBiZWZvcmUgYW55dGhpbmcgaXMgaW5zdGFsbGVkLjwvcD5cbiAgICA8L2Rpdj5cbiAgPC9oZWFkZXI+XG4gIDxtYWluPlxuICAgIDxkaXYgaWQ9XCJzdGF0dXNcIiBjbGFzcz1cImNhcmQgbXV0ZWRcIj5SZWFkaW5nIHRoaXMgY29tcHV0ZXLigKY8L2Rpdj5cbiAgICA8Zm9ybSBpZD1cImZvcm1cIiBjbGFzcz1cImNhcmRcIiBoaWRkZW4+XG4gICAgICA8cCBjbGFzcz1cIm11dGVkXCI+V2UgbmV2ZXIgY29sbGVjdCBwYXNzd29yZHMsIGZpbGVzLCBwaG90b3MsIGJyb3dzaW5nIGhpc3RvcnksIHNlcmlhbCBudW1iZXJzLCBvciBuZXR3b3JrIGFkZHJlc3Nlcy48L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmFjdHNcIiBpZD1cImZhY3RzXCI+PC9kaXY+XG4gICAgICA8bGFiZWwgZm9yPVwibmFtZVwiPllvdXIgbmFtZTwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJuYW1lXCIgbmFtZT1cIm5hbWVcIiBhdXRvY29tcGxldGU9XCJuYW1lXCIgcmVxdWlyZWQ+XG4gICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIj5FbWFpbDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJlbWFpbFwiIG5hbWU9XCJlbWFpbFwiIHR5cGU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cImVtYWlsXCIgcmVxdWlyZWQ+XG4gICAgICA8bGFiZWwgZm9yPVwicGhvbmVcIj5QaG9uZTwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJwaG9uZVwiIG5hbWU9XCJwaG9uZVwiIHR5cGU9XCJ0ZWxcIiBhdXRvY29tcGxldGU9XCJ0ZWxcIiByZXF1aXJlZD5cbiAgICAgIDxsYWJlbCBmb3I9XCJub3RlXCI+T3B0aW9uYWwgbm90ZTwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgaWQ9XCJub3RlXCIgbmFtZT1cIm5vdGVcIiByb3dzPVwiM1wiIHBsYWNlaG9sZGVyPVwiQW55dGhpbmcgd2Ugc2hvdWxkIGtub3dcIj48L3RleHRhcmVhPlxuICAgICAgPHA+PGJ1dHRvbiB0eXBlPVwic3VibWl0XCI+U2VuZCByZXF1ZXN0PC9idXR0b24+PC9wPlxuICAgICAgPHAgaWQ9XCJmb3JtLWVycm9yXCIgY2xhc3M9XCJlcnJcIiBoaWRkZW4+PC9wPlxuICAgIDwvZm9ybT5cbiAgICA8c2VjdGlvbiBpZD1cInNldHVwXCIgY2xhc3M9XCJjYXJkXCIgaGlkZGVuPlxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkXCI+U2V0dXAgbG9nPC9kaXY+XG4gICAgICA8cHJlIGlkPVwibG9nXCI+PC9wcmU+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uIGlkPVwicnVubmluZ1wiIGNsYXNzPVwiY2FyZFwiIGhpZGRlbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0c1wiIGlkPVwic3RhdHNcIj48L2Rpdj5cbiAgICAgIDxwIGNsYXNzPVwibXV0ZWRcIiBzdHlsZT1cIm1hcmdpbjogMTRweCAwIDA7XCI+UGF1c2Ugc3RvcHMgbmV3IHdvcmsuIEEgdGFzayBhbHJlYWR5IHJ1bm5pbmcgaXMgYWxsb3dlZCB0byBmaW5pc2guPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInBhdXNlXCIgdHlwZT1cImJ1dHRvblwiPlBhdXNlPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyZXN1bWVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZWNvbmRhcnlcIiBoaWRkZW4+UmVzdW1lPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxwIGlkPVwiY29udHJvbC1lcnJvclwiIGNsYXNzPVwiZXJyXCIgaGlkZGVuPjwvcD5cbiAgICA8L3NlY3Rpb24+XG4gIDwvbWFpbj5cbiAgPHNjcmlwdD5cbiAgICBjb25zdCBzdGF0dXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHVzJyk7XG4gICAgY29uc3QgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtJyk7XG4gICAgY29uc3Qgc2V0dXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2V0dXAnKTtcbiAgICBjb25zdCBydW5uaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J1bm5pbmcnKTtcbiAgICBjb25zdCBmYWN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmYWN0cycpO1xuICAgIGNvbnN0IHN0YXRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzJyk7XG4gICAgY29uc3QgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpO1xuICAgIGNvbnN0IHBhdXNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhdXNlJyk7XG4gICAgY29uc3QgcmVzdW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VtZScpO1xuXG4gICAgZnVuY3Rpb24gc2hvdyhpZCwgdGV4dCkge1xuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICBlbC5oaWRkZW4gPSAhdGV4dDtcbiAgICAgIGVsLnRleHRDb250ZW50ID0gdGV4dCB8fCAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGF0KGxhYmVsLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGA8ZGl2PjxkaXYgY2xhc3M9XCJtdXRlZFwiPiR7bGFiZWx9PC9kaXY+PGRpdj4ke3ZhbHVlID8/ICfigJQnfTwvZGl2PjwvZGl2PmA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd29ya2VyQ29weShkYXRhKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gZGF0YS53b3JrZXIgfHwge307XG4gICAgICBjb25zdCByYXcgPSBwYXlsb2FkLnN0YXRlIHx8IChkYXRhLmxvY2FsX3J1bm5pbmcgPyAncnVubmluZycgOiAnb2ZmbGluZScpO1xuICAgICAgY29uc3Qgc3RhdGUgPSAocmF3ID09PSAnb2ZmbGluZScgJiYgZGF0YS5sb2NhbF9ydW5uaW5nKSA/ICdjaGVja2luZyBpbicgOiByYXc7XG4gICAgICBjb25zdCB0YXNrID0gcGF5bG9hZC5jdXJyZW50X3Rhc2sgfHwge307XG4gICAgICBjb25zdCBvcGVyYXRpb24gPSAodGFzay5vcGVyYXRpb24gfHwgJycpLnJlcGxhY2UoL18vZywgJyAnKS50cmltKCk7XG4gICAgICBjb25zdCBydW5uaW5nID0gcGF5bG9hZC50YXNrc19ydW5uaW5nIHx8IChvcGVyYXRpb24gPyAxIDogMCk7XG4gICAgICBsZXQgYWN0aXZpdHkgPSAnV2FpdGluZyBmb3Igd29yayc7XG4gICAgICBpZiAocnVubmluZyA+IDEpIGFjdGl2aXR5ID0gJ1dvcmtpbmcgb24gJyArIHJ1bm5pbmcgKyAnIHRhc2tzJztcbiAgICAgIGVsc2UgaWYgKG9wZXJhdGlvbikgYWN0aXZpdHkgPSAnV29ya2luZyBvbiAnICsgb3BlcmF0aW9uO1xuICAgICAgZWxzZSBpZiAoZGF0YS5kcmFpbmluZyB8fCBzdGF0ZSA9PT0gJ3BhdXNlZCcpIGFjdGl2aXR5ID0gJ05vdCB0YWtpbmcgbmV3IHdvcmsnO1xuICAgICAgZWxzZSBpZiAoc3RhdGUgPT09ICdidXN5JykgYWN0aXZpdHkgPSAnV29ya2luZyBvbiBhIHRhc2snO1xuICAgICAgZWxzZSBpZiAoc3RhdGUgPT09ICdvZmZsaW5lJyAmJiBkYXRhLmxvY2FsX3J1bm5pbmcpIGFjdGl2aXR5ID0gJ0NoZWNraW5nIGluJztcbiAgICAgIGVsc2UgaWYgKHN0YXRlID09PSAnb2ZmbGluZScpIGFjdGl2aXR5ID0gJ05vdCBjb25uZWN0ZWQgeWV0JztcbiAgICAgIHJldHVybiB7IHN0YXRlLCBhY3Rpdml0eSwgcnVubmluZywgdGFza3M6IHBheWxvYWQudGFza3NfY29tcGxldGVkIH07XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gbG9hZCgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKCcvYXBpL3N0YXRlJyk7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgIGlmIChkYXRhLmVycm9yICYmIGRhdGEucGhhc2UgIT09ICdydW5uaW5nJykge1xuICAgICAgICBzdGF0dXMuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnZXJyJztcbiAgICAgICAgc3RhdHVzLnRleHRDb250ZW50ID0gZGF0YS5lcnJvcjtcbiAgICAgICAgZm9ybS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICBzZXR1cC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICBydW5uaW5nLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLnBoYXNlID09PSAncGVuZGluZycpIHtcbiAgICAgICAgc3RhdHVzLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBzdGF0dXMuY2xhc3NOYW1lID0gJ2NhcmQnO1xuICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSBkYXRhLm1lc3NhZ2UgfHwgJ1JlcXVlc3Qgc2VudC4gV2Ugd2lsbCBzZXQgdGhpcyBjb21wdXRlciB1cCBoZXJlIGFmdGVyIHNvbWVvbmUgb24gdGhlIHRlYW0gYXBwcm92ZXMgaXQuJztcbiAgICAgICAgZm9ybS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICBzZXR1cC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICBydW5uaW5nLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLnBoYXNlID09PSAnc2V0dXAnKSB7XG4gICAgICAgIHN0YXR1cy5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgc3RhdHVzLmNsYXNzTmFtZSA9ICdjYXJkJztcbiAgICAgICAgc3RhdHVzLnRleHRDb250ZW50ID0gZGF0YS5tZXNzYWdlIHx8ICdBcHByb3ZlZC4gU2V0dXAgaXMgcnVubmluZyBvbiB0aGlzIGNvbXB1dGVyLic7XG4gICAgICAgIGZvcm0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgc2V0dXAuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIHJ1bm5pbmcuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgbG9nLnRleHRDb250ZW50ID0gKGRhdGEubG9ncyB8fCBbXSkuam9pbignXFxuJyk7XG4gICAgICAgIGxvZy5zY3JvbGxUb3AgPSBsb2cuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5waGFzZSA9PT0gJ3J1bm5pbmcnKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSB3b3JrZXJDb3B5KGRhdGEpO1xuICAgICAgICBzdGF0dXMuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnY2FyZCc7XG4gICAgICAgIHN0YXR1cy50ZXh0Q29udGVudCA9IGRhdGEubWVzc2FnZSB8fCAnVGhpcyBjb21wdXRlciBpcyBjb25uZWN0ZWQgYXMgYSB3b3JrZXIuJztcbiAgICAgICAgZm9ybS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICBzZXR1cC5oaWRkZW4gPSAhKGRhdGEubG9ncyB8fCBbXSkubGVuZ3RoO1xuICAgICAgICBpZiAoIXNldHVwLmhpZGRlbikge1xuICAgICAgICAgIGxvZy50ZXh0Q29udGVudCA9IChkYXRhLmxvZ3MgfHwgW10pLmpvaW4oJ1xcbicpO1xuICAgICAgICAgIGxvZy5zY3JvbGxUb3AgPSBsb2cuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJ1bm5pbmcuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIHN0YXRzLmlubmVySFRNTCA9IFtcbiAgICAgICAgICBzdGF0KCdTdGF0dXMnLCBjb3B5LnN0YXRlLnJlcGxhY2UoL18vZywgJyAnKSksXG4gICAgICAgICAgc3RhdCgnQWN0aXZpdHknLCBjb3B5LmFjdGl2aXR5KSxcbiAgICAgICAgICBzdGF0KCdNZW1vcnkgZnJlZScsIGRhdGEubWVtb3J5X2ZyZWUpLFxuICAgICAgICAgIHN0YXQoJ1Rhc2tzIHJ1bm5pbmcnLCBjb3B5LnJ1bm5pbmcpLFxuICAgICAgICAgIHN0YXQoJ1Rhc2tzIGZpbmlzaGVkJywgY29weS50YXNrcyksXG4gICAgICAgIF0uam9pbignJyk7XG4gICAgICAgIHBhdXNlLmhpZGRlbiA9IGRhdGEuZHJhaW5pbmc7XG4gICAgICAgIHJlc3VtZS5oaWRkZW4gPSAhZGF0YS5kcmFpbmluZztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEucHJldmlldykge1xuICAgICAgICBzdGF0dXMuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgZm9ybS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgc2V0dXAuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcnVubmluZy5oaWRkZW4gPSB0cnVlO1xuICAgICAgICBjb25zdCBwID0gZGF0YS5wcmV2aWV3O1xuICAgICAgICBmYWN0cy5pbm5lckhUTUwgPSBbXG4gICAgICAgICAgWydDb21wdXRlcicsIHAuY29tcHV0ZXJdLFxuICAgICAgICAgIFsnU3lzdGVtJywgcC5zeXN0ZW1dLFxuICAgICAgICAgIFsnTWVtb3J5JywgcC5tZW1vcnldLFxuICAgICAgICAgIFsnQ1BVcycsIHAuY3B1c10sXG4gICAgICAgICAgWydSZWFkeScsIHAucmVhZHkgPyAnWWVzJyA6ICdOb3QgeWV0J10sXG4gICAgICAgICAgWydSZWFjaGFibGUnLCBwLmNvbm5lY3RlZCA/ICdZZXMnIDogJ05vJ10sXG4gICAgICAgIF0ubWFwKChbaywgdl0pID0+IHN0YXQoaywgdikpLmpvaW4oJycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvcm0uYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZm9ybS5xdWVyeVNlbGVjdG9yKCdidXR0b24nKS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICBzaG93KCdmb3JtLWVycm9yJywgJycpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goJy9hcGkvZW5yb2xsJywge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGRpc3BsYXlfbmFtZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hbWUnKS52YWx1ZSxcbiAgICAgICAgICAgIGVtYWlsOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1haWwnKS52YWx1ZSxcbiAgICAgICAgICAgIHBob25lOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGhvbmUnKS52YWx1ZSxcbiAgICAgICAgICAgIG5vdGU6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub3RlJykudmFsdWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgaWYgKCFyZXMub2spIHRocm93IG5ldyBFcnJvcihkYXRhLmVycm9yIHx8ICdDb3VsZCBub3Qgc2VuZCB0aGUgcmVxdWVzdC4nKTtcbiAgICAgICAgYXdhaXQgbG9hZCgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc2hvdygnZm9ybS1lcnJvcicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb250cm9sKGFjdGlvbikge1xuICAgICAgcGF1c2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgcmVzdW1lLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHNob3coJ2NvbnRyb2wtZXJyb3InLCAnJyk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS8nICsgYWN0aW9uLCB7IG1ldGhvZDogJ1BPU1QnIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgaWYgKCFyZXMub2spIHRocm93IG5ldyBFcnJvcihkYXRhLmVycm9yIHx8ICdDb3VsZCBub3QgdXBkYXRlIHRoaXMgY29tcHV0ZXIuJyk7XG4gICAgICAgIGF3YWl0IGxvYWQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3coJ2NvbnRyb2wtZXJyb3InLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHBhdXNlLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHJlc3VtZS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhdXNlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gY29udHJvbCgncGF1c2UnKSk7XG4gICAgcmVzdW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gY29udHJvbCgncmVzdW1lJykpO1xuICAgIGxvYWQoKTtcbiAgICBzZXRJbnRlcnZhbChsb2FkLCAyMDAwKTtcbiAgPC9zY3JpcHQ+XG48L2JvZHk+XG48L2h0bWw+XG4iLCJob3N0X2ludmVudG9yeS5weSI6IlwiXCJcIkNvbGxlY3QgaG9zdCBvcGVyYXRpb25hbCBpbnZlbnRvcnkgZm9yIGVucm9sbG1lbnQgcmVxdWVzdHMuXCJcIlwiXG5pbXBvcnQganNvblxuaW1wb3J0IG9zXG5pbXBvcnQgcGxhdGZvcm1cbmltcG9ydCByZVxuaW1wb3J0IHNodXRpbFxuaW1wb3J0IHNvY2tldFxuaW1wb3J0IHN1YnByb2Nlc3NcbmltcG9ydCBzeXNcbmltcG9ydCB0ZW1wZmlsZVxuaW1wb3J0IHRpbWVcbmltcG9ydCB1cmxsaWIuZXJyb3JcbmltcG9ydCB1cmxsaWIucmVxdWVzdFxuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cblBST0JFX0hPU1QgPSAnc3BlZWQuY2xvdWRmbGFyZS5jb20nXG5QUk9CRV9QQVRIID0gJy9fX3VwJ1xuUFJPQkVfQllURVMgPSAyICogMTAyNCAqIDEwMjRcblBST0JFX1RJTUVPVVQgPSAxMFxuXG5cbmRlZiBjb21tYW5kX291dHB1dChhcmdzLCB0aW1lb3V0PTgpOlxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MucnVuKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsIGNoZWNrPUZhbHNlKS5zdGRvdXQuZGVjb2RlKGVycm9ycz0ncmVwbGFjZScpXG4gICAgZXhjZXB0IChPU0Vycm9yLCBzdWJwcm9jZXNzLlN1YnByb2Nlc3NFcnJvcik6XG4gICAgICAgIHJldHVybiAnJ1xuXG5cbmRlZiBudW1iZXIodmFsdWUpOlxuICAgIHRyeTpcbiAgICAgICAgbnVtYmVyX3ZhbHVlID0gZmxvYXQodmFsdWUpXG4gICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIGlmIG5vdCBudW1iZXJfdmFsdWUgb3IgbnVtYmVyX3ZhbHVlIDwgMCBvciBudW1iZXJfdmFsdWUgIT0gbnVtYmVyX3ZhbHVlOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIHJldHVybiBpbnQobnVtYmVyX3ZhbHVlKSBpZiBudW1iZXJfdmFsdWUgPT0gaW50KG51bWJlcl92YWx1ZSkgZWxzZSBudW1iZXJfdmFsdWVcblxuXG5kZWYgaG9zdF9vc19uYW1lKCk6XG4gICAgc3lzdGVtID0gcGxhdGZvcm0uc3lzdGVtKClcbiAgICBpZiBzeXN0ZW0gPT0gJ0Rhcndpbic6XG4gICAgICAgIHJldHVybiAnbWFjb3MnXG4gICAgaWYgc3lzdGVtID09ICdXaW5kb3dzJzpcbiAgICAgICAgcmV0dXJuICd3aW5kb3dzJ1xuICAgIHJldHVybiAnbGludXgnXG5cblxuZGVmIGxpbnV4X3JlbGVhc2UoKTpcbiAgICB0cnk6XG4gICAgICAgIHJldHVybiBwbGF0Zm9ybS5mcmVlZGVza3RvcF9vc19yZWxlYXNlKClcbiAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgcmV0dXJuIHt9XG5cblxuZGVmIG1lbW9yeV9ieXRlcygpOlxuICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdEYXJ3aW4nOlxuICAgICAgICByZXR1cm4gbnVtYmVyKGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3Lm1lbXNpemUnXSkpXG4gICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ1dpbmRvd3MnOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIHJldHVybiBuZXh0KChudW1iZXIobGluZS5zcGxpdCgpWzFdKSAqIDEwMjQgZm9yIGxpbmUgaW4gUGF0aCgnL3Byb2MvbWVtaW5mbycpLnJlYWRfdGV4dCgpLnNwbGl0bGluZXMoKVxuICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ01lbVRvdGFsOicpKSwgTm9uZSlcblxuXG5kZWYgbWVtaW5mb19wYWdlcygpOlxuICAgIGluZm8gPSB7fVxuICAgIGZvciBsaW5lIGluIFBhdGgoJy9wcm9jL21lbWluZm8nKS5yZWFkX3RleHQoKS5zcGxpdGxpbmVzKCk6XG4gICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgpXG4gICAgICAgIGlmIGxlbihwYXJ0cykgPT0gMzpcbiAgICAgICAgICAgIGluZm9bcGFydHNbMF0ucnN0cmlwKCc6JyldID0gaW50KHBhcnRzWzFdKVxuICAgIHJldHVybiBpbmZvXG5cblxuZGVmIGRhcndpbl92bV9wYWdlcygpOlxuICAgIHRleHQgPSBjb21tYW5kX291dHB1dChbJ3ZtX3N0YXQnXSlcbiAgICBwYWdlcyA9IHt9XG4gICAgcGFnZV9zaXplID0gbnVtYmVyKGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3LnBhZ2VzaXplJ10pKVxuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHIncGFnZSBzaXplIG9mIChcXGQrKSBieXRlcycsIGxpbmUpXG4gICAgICAgIGlmIG1hdGNoOlxuICAgICAgICAgICAgcGFnZV9zaXplID0gaW50KG1hdGNoLmdyb3VwKDEpKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAga2V5LCBfLCByYXcgPSBsaW5lLnBhcnRpdGlvbignOicpXG4gICAgICAgIGRpZ2l0cyA9IHJhdy5zdHJpcCgpLnJzdHJpcCgnLicpXG4gICAgICAgIGlmIGRpZ2l0cy5pc2RpZ2l0KCk6XG4gICAgICAgICAgICBwYWdlc1trZXkuc3RyaXAoKV0gPSBpbnQoZGlnaXRzKVxuICAgIHJlY2xhaW1hYmxlID0gc3VtKHBhZ2VzLmdldChuYW1lLCAwKSBmb3IgbmFtZSBpbiAoXG4gICAgICAgICdQYWdlcyBmcmVlJywgJ1BhZ2VzIGluYWN0aXZlJywgJ1BhZ2VzIHNwZWN1bGF0aXZlJywgJ1BhZ2VzIHB1cmdlYWJsZScpKVxuICAgIHJldHVybiBwYWdlX3NpemUsIHJlY2xhaW1hYmxlXG5cblxuZGVmIGF2YWlsYWJsZV9tZW1vcnlfYnl0ZXMoKTpcbiAgICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAnTGludXgnOlxuICAgICAgICBpbmZvID0gbWVtaW5mb19wYWdlcygpXG4gICAgICAgIGtpYiA9IGluZm8uZ2V0KCdNZW1BdmFpbGFibGUnLCBpbmZvLmdldCgnTWVtRnJlZScpKVxuICAgICAgICByZXR1cm4ga2liICogMTAyNCBpZiBraWIgZWxzZSBOb25lXG4gICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0Rhcndpbic6XG4gICAgICAgIHBhZ2Vfc2l6ZSwgcmVjbGFpbWFibGUgPSBkYXJ3aW5fdm1fcGFnZXMoKVxuICAgICAgICByZXR1cm4gcGFnZV9zaXplICogcmVjbGFpbWFibGUgaWYgcGFnZV9zaXplIGFuZCByZWNsYWltYWJsZSBlbHNlIE5vbmVcbiAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBjcHVfaW52ZW50b3J5KCk6XG4gICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0Rhcndpbic6XG4gICAgICAgIG1vZGVsID0gY29tbWFuZF9vdXRwdXQoWydzeXNjdGwnLCAnLW4nLCAnbWFjaGRlcC5jcHUuYnJhbmRfc3RyaW5nJ10pLnN0cmlwKCkgb3IgTm9uZVxuICAgICAgICBsb2dpY2FsID0gbnVtYmVyKGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3LmxvZ2ljYWxjcHUnXSkpXG4gICAgICAgIHBoeXNpY2FsID0gbnVtYmVyKGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3LnBoeXNpY2FsY3B1J10pKVxuICAgICAgICBzb2NrZXRzID0gbnVtYmVyKGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3LnBhY2thZ2VzJ10pKVxuICAgICAgICBtaW5fbWh6ID0gbnVtYmVyKGNvbW1hbmRfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3LmNwdWZyZXF1ZW5jeV9taW4nXSkpXG4gICAgICAgIG1heF9taHogPSBudW1iZXIoY29tbWFuZF9vdXRwdXQoWydzeXNjdGwnLCAnLW4nLCAnaHcuY3B1ZnJlcXVlbmN5X21heCddKSlcbiAgICAgICAgaWYgbWluX21oejpcbiAgICAgICAgICAgIG1pbl9taHogLz0gMV8wMDBfMDAwXG4gICAgICAgIGlmIG1heF9taHo6XG4gICAgICAgICAgICBtYXhfbWh6IC89IDFfMDAwXzAwMFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ2NwdV9tb2RlbCc6IG1vZGVsLFxuICAgICAgICAgICAgJ2NwdV92ZW5kb3InOiBtb2RlbC5zcGxpdCgpWzBdIGlmIG1vZGVsIGVsc2UgTm9uZSxcbiAgICAgICAgICAgICdjcHVfc29ja2V0cyc6IHNvY2tldHMsXG4gICAgICAgICAgICAncGh5c2ljYWxfY3B1X2NvcmVzJzogcGh5c2ljYWwsXG4gICAgICAgICAgICAnbG9naWNhbF9jcHVzJzogbG9naWNhbCBvciBvc19jcHVfY291bnQoKSxcbiAgICAgICAgICAgICdjcHVfbWluX21oeic6IG1pbl9taHosXG4gICAgICAgICAgICAnY3B1X21heF9taHonOiBtYXhfbWh6LFxuICAgICAgICB9XG4gICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0xpbnV4JzpcbiAgICAgICAgbW9kZWwgPSBOb25lXG4gICAgICAgIHZlbmRvciA9IE5vbmVcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgZm9yIGxpbmUgaW4gUGF0aCgnL3Byb2MvY3B1aW5mbycpLnJlYWRfdGV4dCgpLnNwbGl0bGluZXMoKTpcbiAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ21vZGVsIG5hbWUnKTpcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKVxuICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgndmVuZG9yX2lkJyk6XG4gICAgICAgICAgICAgICAgICAgIHZlbmRvciA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpXG4gICAgICAgIGV4Y2VwdCBPU0Vycm9yOlxuICAgICAgICAgICAgcGFzc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ2NwdV9tb2RlbCc6IG1vZGVsLFxuICAgICAgICAgICAgJ2NwdV92ZW5kb3InOiB2ZW5kb3IsXG4gICAgICAgICAgICAnY3B1X3NvY2tldHMnOiBOb25lLFxuICAgICAgICAgICAgJ3BoeXNpY2FsX2NwdV9jb3Jlcyc6IE5vbmUsXG4gICAgICAgICAgICAnbG9naWNhbF9jcHVzJzogb3NfY3B1X2NvdW50KCksXG4gICAgICAgICAgICAnY3B1X21pbl9taHonOiBOb25lLFxuICAgICAgICAgICAgJ2NwdV9tYXhfbWh6JzogTm9uZSxcbiAgICAgICAgfVxuICAgIHJldHVybiB7J2xvZ2ljYWxfY3B1cyc6IG9zX2NwdV9jb3VudCgpfVxuXG5cbmRlZiBvc19jcHVfY291bnQoKTpcbiAgICByZXR1cm4gb3MuY3B1X2NvdW50KCkgb3IgMVxuXG5cbmRlZiBkaXNrX2ludmVudG9yeV9kYXJ3aW4oKTpcbiAgICBkaXNrcyA9IFtdXG4gICAgbGlzdGluZyA9IGNvbW1hbmRfb3V0cHV0KFsnZGlza3V0aWwnLCAnbGlzdCcsICdwbGlzdCddKVxuICAgIGlmIG5vdCBsaXN0aW5nOlxuICAgICAgICByZXR1cm4gZGlza3NcbiAgICB0cnk6XG4gICAgICAgIGltcG9ydCBwbGlzdGxpYlxuICAgICAgICBwYXlsb2FkID0gcGxpc3RsaWIubG9hZHMobGlzdGluZy5lbmNvZGUoKSlcbiAgICBleGNlcHQgKEltcG9ydEVycm9yLCBWYWx1ZUVycm9yLCBwbGlzdGxpYi5JbnZhbGlkRmlsZUV4Y2VwdGlvbik6XG4gICAgICAgIHJldHVybiBkaXNrc1xuICAgIGZvciBpbmRleCwgZW50cnkgaW4gZW51bWVyYXRlKHBheWxvYWQuZ2V0KCdBbGxEaXNrc0FuZFBhcnRpdGlvbnMnLCBbXSlbOjY0XSk6XG4gICAgICAgIHNpemUgPSBudW1iZXIoZW50cnkuZ2V0KCdTaXplJykpXG4gICAgICAgIG1vZGVsID0gZW50cnkuZ2V0KCdEZXZpY2VJZGVudGlmaWVyJykgb3IgZW50cnkuZ2V0KCdDb250ZW50JywgJycpXG4gICAgICAgIG1lZGlhID0gJ3NzZCcgaWYgZW50cnkuZ2V0KCdTb2xpZFN0YXRlJykgZWxzZSAnaGRkJ1xuICAgICAgICBkaXNrcy5hcHBlbmQoe1xuICAgICAgICAgICAgJ2RldmljZV9rZXknOiBmJ2Rpc2ste2luZGV4fScsXG4gICAgICAgICAgICAnbW9kZWwnOiBzdHIobW9kZWwpWzoyNTVdLFxuICAgICAgICAgICAgJ21lZGlhX3R5cGUnOiBtZWRpYSxcbiAgICAgICAgICAgICd0cmFuc3BvcnQnOiBOb25lLFxuICAgICAgICAgICAgJ2NhcGFjaXR5X2J5dGVzJzogc2l6ZSxcbiAgICAgICAgICAgICdyZW1vdmFibGUnOiBib29sKGVudHJ5LmdldCgnUmVtb3ZhYmxlJykpLFxuICAgICAgICB9KVxuICAgIHJldHVybiBkaXNrc1xuXG5cbmRlZiBkaXNrX2J5dGVzX3RvdGFsKCk6XG4gICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0Rhcndpbic6XG4gICAgICAgIHRvdGFsID0gMFxuICAgICAgICBmb3IgZGlzayBpbiBkaXNrX2ludmVudG9yeV9kYXJ3aW4oKTpcbiAgICAgICAgICAgIGlmIGRpc2suZ2V0KCdjYXBhY2l0eV9ieXRlcycpOlxuICAgICAgICAgICAgICAgIHRvdGFsICs9IGRpc2tbJ2NhcGFjaXR5X2J5dGVzJ11cbiAgICAgICAgcmV0dXJuIHRvdGFsIG9yIE5vbmVcbiAgICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAnTGludXgnOlxuICAgICAgICByZXR1cm4gc2h1dGlsLmRpc2tfdXNhZ2UoJy8nKS50b3RhbFxuICAgIHJldHVybiBOb25lXG5cblxuZGVmIHBvd2VyX2ludmVudG9yeV9kYXJ3aW4oKTpcbiAgICB0ZXh0ID0gY29tbWFuZF9vdXRwdXQoWydwbXNldCcsICctZycsICdiYXR0J10pXG4gICAgYWMgPSAnQUMgUG93ZXInIGluIHRleHQgb3IgXCJOb3cgZHJhd2luZyBmcm9tICdBQyBQb3dlcidcIiBpbiB0ZXh0XG4gICAgcGVyY2VudCA9IE5vbmVcbiAgICBtYXRjaCA9IHJlLnNlYXJjaChyJyhcXGQrKSUnLCB0ZXh0KVxuICAgIGlmIG1hdGNoOlxuICAgICAgICBwZXJjZW50ID0gaW50KG1hdGNoLmdyb3VwKDEpKVxuICAgIGJhdHRlcnlfcHJlc2VudCA9ICdJbnRlcm5hbEJhdHRlcnknIGluIHRleHQgb3IgcGVyY2VudCBpcyBub3QgTm9uZVxuICAgIHJldHVybiB7XG4gICAgICAgICdiYXR0ZXJ5X3ByZXNlbnQnOiBiYXR0ZXJ5X3ByZXNlbnQsXG4gICAgICAgICdhY19jb25uZWN0ZWQnOiBhYyxcbiAgICAgICAgJ2JhdHRlcnlfcGVyY2VudCc6IHBlcmNlbnQsXG4gICAgICAgICdiYXR0ZXJ5X3N0YXR1cyc6ICdEaXNjaGFyZ2luZycgaWYgJ2Rpc2NoYXJnaW5nJyBpbiB0ZXh0Lmxvd2VyKCkgZWxzZSBOb25lLFxuICAgICAgICAnYmF0dGVyeV9yZW1haW5pbmdfc2Vjb25kcyc6IE5vbmUsXG4gICAgICAgICdwb3dlcl9wcm9maWxlJzogTm9uZSxcbiAgICB9XG5cblxuZGVmIG1hY19tb2RlbCgpOlxuICAgIHRleHQgPSBjb21tYW5kX291dHB1dChbJ3N5c2N0bCcsICctbicsICdody5tb2RlbCddKS5zdHJpcCgpXG4gICAgcmV0dXJuICdBcHBsZScsIHRleHQgb3IgTm9uZVxuXG5cbmRlZiBuZXR3b3JrX2ludmVudG9yeV9kYXJ3aW4oKTpcbiAgICBpbnRlcmZhY2VzID0gW11cbiAgICB0ZXh0ID0gY29tbWFuZF9vdXRwdXQoWyduZXR3b3Jrc2V0dXAnLCAnLWxpc3RhbGxoYXJkd2FyZXBvcnRzJ10pXG4gICAgY3VycmVudCA9IHt9XG4gICAgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKCk6XG4gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnSGFyZHdhcmUgUG9ydDonKTpcbiAgICAgICAgICAgIGN1cnJlbnQgPSB7J2Nvbm5lY3Rpb25fdHlwZSc6IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpfVxuICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnRGV2aWNlOicpOlxuICAgICAgICAgICAgZGV2aWNlID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKClcbiAgICAgICAgICAgIHNwZWVkID0gbnVtYmVyKGNvbW1hbmRfb3V0cHV0KFsnaWZjb25maWcnLCBkZXZpY2VdKS5zcGxpdCgnbWVkaWE6JylbLTFdLnNwbGl0KClbMF0ucmVwbGFjZSgnYmFzZVQnLCAnJykpIGlmIHNodXRpbC53aGljaCgnaWZjb25maWcnKSBlbHNlIE5vbmVcbiAgICAgICAgICAgIGludGVyZmFjZXMuYXBwZW5kKHtcbiAgICAgICAgICAgICAgICAnZGV2aWNlX2tleSc6IGRldmljZSxcbiAgICAgICAgICAgICAgICAnY29ubmVjdGlvbl90eXBlJzogY3VycmVudC5nZXQoJ2Nvbm5lY3Rpb25fdHlwZScpLFxuICAgICAgICAgICAgICAgICdsaW5rX3N0YXRlJzogJ3VwJyxcbiAgICAgICAgICAgICAgICAnc3BlZWRfbWJwcyc6IHNwZWVkLFxuICAgICAgICAgICAgfSlcbiAgICByZXR1cm4gaW50ZXJmYWNlc1s6NjRdXG5cblxuZGVmIHJlYWRpbmVzc19kYXJ3aW4oKTpcbiAgICByZXR1cm4ge1xuICAgICAgICAnZG9ja2VyJzogc2h1dGlsLndoaWNoKCdkb2NrZXInKSBpcyBub3QgTm9uZSxcbiAgICAgICAgJ3N5c3RlbWRfY2dyb3Vwc192Mic6IE5vbmUsXG4gICAgICAgICd2aXJ0dWFsaXphdGlvbic6IHNodXRpbC53aGljaCgnbGltYWN0bCcpIGlzIG5vdCBOb25lIG9yIHNodXRpbC53aGljaCgncWVtdS1zeXN0ZW0tYWFyY2g2NCcpIGlzIG5vdCBOb25lLFxuICAgICAgICAnbGltYSc6IHNodXRpbC53aGljaCgnbGltYWN0bCcpIGlzIG5vdCBOb25lLFxuICAgICAgICAnaG9tZWJyZXcnOiBzaHV0aWwud2hpY2goJ2JyZXcnKSBpcyBub3QgTm9uZSxcbiAgICAgICAgJ3dzbCc6IE5vbmUsXG4gICAgICAgICd1YnVudHUnOiBOb25lLFxuICAgICAgICAnd3NsZyc6IE5vbmUsXG4gICAgICAgICdzd2FwX2VuYWJsZWQnOiBGYWxzZSxcbiAgICAgICAgJ2FkbWluX3JlcXVpcmVkJzogb3MuZ2V0ZXVpZCgpICE9IDAsXG4gICAgICAgICdyZXN0YXJ0X3JlcXVpcmVkJzogRmFsc2UsXG4gICAgfVxuXG5cbmRlZiBwbGFubmVkX2NhcGFjaXR5X2RhcndpbihtZW1vcnksIGNwdXMpOlxuICAgIGhvc3RfZ2liID0gbWF4KG1lbW9yeSBvciAwLCAxKSAvLyAoMTAyNCAqKiAzKVxuICAgIGdpYiA9IG1heCg0LCBtaW4oMzIsIGhvc3RfZ2liIC8vIDIpKVxuICAgIGlmIGdpYiA+PSBob3N0X2dpYjpcbiAgICAgICAgZ2liID0gbWF4KDIsIGhvc3RfZ2liIC0gMilcbiAgICBjb3JlcyA9IG1heCgyLCBtaW4oOCwgbWF4KGludChjcHVzIG9yIDIpLCAyKSAvLyAyKSlcbiAgICByZXR1cm4geydtZW1vcnlfYnl0ZXMnOiBnaWIgKiAxMDI0ICoqIDMsICdsb2dpY2FsX2NwdXMnOiBjb3JlcywgJ2NpX21lbW9yeV9yZXNlcnZlZF9ieXRlcyc6IE5vbmV9XG5cblxuZGVmIHJlYWRpbmVzc19saW51eCgpOlxuICAgIHN3YXBfdG90YWwgPSAwXG4gICAgdHJ5OlxuICAgICAgICBzd2FwX3RvdGFsID0gbmV4dChpbnQobGluZS5zcGxpdCgpWzFdKSBmb3IgbGluZSBpbiBQYXRoKCcvcHJvYy9tZW1pbmZvJykucmVhZF90ZXh0KCkuc3BsaXRsaW5lcygpIGlmIGxpbmUuc3RhcnRzd2l0aCgnU3dhcFRvdGFsOicpKVxuICAgIGV4Y2VwdCAoU3RvcEl0ZXJhdGlvbiwgVmFsdWVFcnJvciwgT1NFcnJvcik6XG4gICAgICAgIHBhc3NcbiAgICBkb2NrZXJfb2sgPSBGYWxzZVxuICAgIGNncm91cF9vayA9IEZhbHNlXG4gICAgaWYgc2h1dGlsLndoaWNoKCdkb2NrZXInKTpcbiAgICAgICAgaW5mbyA9IGNvbW1hbmRfb3V0cHV0KFsnZG9ja2VyJywgJ2luZm8nLCAnLS1mb3JtYXQnLCAne3suQ2dyb3VwRHJpdmVyfX0ge3suQ2dyb3VwVmVyc2lvbn19J10pXG4gICAgICAgIGRvY2tlcl9vayA9IFRydWVcbiAgICAgICAgY2dyb3VwX29rID0gaW5mby5zdHJpcCgpID09ICdzeXN0ZW1kIDInXG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ2RvY2tlcic6IGRvY2tlcl9vayxcbiAgICAgICAgJ3N5c3RlbWRfY2dyb3Vwc192Mic6IGNncm91cF9vayxcbiAgICAgICAgJ3ZpcnR1YWxpemF0aW9uJzogUGF0aCgnL3J1bi9zeXN0ZW1kL3N5c3RlbScpLmV4aXN0cygpLFxuICAgICAgICAnbGltYSc6IE5vbmUsXG4gICAgICAgICdob21lYnJldyc6IE5vbmUsXG4gICAgICAgICd3c2wnOiBOb25lLFxuICAgICAgICAndWJ1bnR1JzogbGludXhfcmVsZWFzZSgpLmdldCgnSUQnKSA9PSAndWJ1bnR1JyxcbiAgICAgICAgJ3dzbGcnOiBib29sKG9zLmVudmlyb24uZ2V0KCdXQVlMQU5EX0RJU1BMQVknKSBvciBvcy5lbnZpcm9uLmdldCgnRElTUExBWScpKSxcbiAgICAgICAgJ3N3YXBfZW5hYmxlZCc6IHN3YXBfdG90YWwgPiAwLFxuICAgICAgICAnYWRtaW5fcmVxdWlyZWQnOiBvcy5nZXRldWlkKCkgIT0gMCxcbiAgICAgICAgJ3Jlc3RhcnRfcmVxdWlyZWQnOiBGYWxzZSxcbiAgICB9XG5cblxuZGVmIHBsYW5uZWRfY2FwYWNpdHlfbGludXgobWVtb3J5LCBjcHVzLCByZXNlcnZlZD1Ob25lKTpcbiAgICBtZW1vcnkgPSBtZW1vcnkgb3IgMFxuICAgIGNwdXMgPSBjcHVzIG9yIDFcbiAgICByZXNlcnZlZCA9IHJlc2VydmVkIG9yIDBcbiAgICBidWRnZXQgPSBtYXgobWVtb3J5IC0gcmVzZXJ2ZWQgLSA1MTIgKiAxMDI0ICogMTAyNCwgMClcbiAgICByZXR1cm4geydtZW1vcnlfYnl0ZXMnOiBidWRnZXQsICdsb2dpY2FsX2NwdXMnOiBjcHVzLCAnY2lfbWVtb3J5X3Jlc2VydmVkX2J5dGVzJzogcmVzZXJ2ZWQgb3IgTm9uZX1cblxuXG5kZWYgbG9hZF93aW5kb3dzX3NuYXBzaG90KHBhdGgpOlxuICAgIHJldHVybiBqc29uLmxvYWRzKFBhdGgocGF0aCkucmVhZF90ZXh0KCkpXG5cblxuZGVmIGNvbGxlY3Rfd2luZG93cyhwYXRoKTpcbiAgICBzbmFwc2hvdCA9IGxvYWRfd2luZG93c19zbmFwc2hvdChwYXRoKVxuICAgIGhhcmR3YXJlID0gc25hcHNob3QuZ2V0KCdoYXJkd2FyZScsIHt9KVxuICAgIHRlbGVtZXRyeSA9IHNuYXBzaG90LmdldCgndGVsZW1ldHJ5Jywge30pXG4gICAgcmVhZGluZXNzID0gc25hcHNob3QuZ2V0KCdyZWFkaW5lc3MnLCB7fSlcbiAgICBjb25uZWN0aXZpdHkgPSBzbmFwc2hvdC5nZXQoJ2Nvbm5lY3Rpdml0eScsIHt9KVxuICAgIGNhcGFjaXR5ID0gc25hcHNob3QuZ2V0KCdwbGFubmVkX3dvcmtlcl9jYXBhY2l0eScsIHt9KVxuICAgIHJldHVybiBoYXJkd2FyZSwgdGVsZW1ldHJ5LCByZWFkaW5lc3MsIGNvbm5lY3Rpdml0eSwgY2FwYWNpdHlcblxuXG5kZWYgY29sbGVjdF9kYXJ3aW4oKTpcbiAgICBtYW51ZmFjdHVyZXIsIG1vZGVsID0gbWFjX21vZGVsKClcbiAgICByZWxlYXNlID0gbGludXhfcmVsZWFzZSgpIGlmIEZhbHNlIGVsc2Uge31cbiAgICBtZW1vcnkgPSBtZW1vcnlfYnl0ZXMoKVxuICAgIGNwdXMgPSBjcHVfaW52ZW50b3J5KClcbiAgICBoYXJkd2FyZSA9IHtcbiAgICAgICAgJ2hvc3RuYW1lJzogc29ja2V0LmdldGhvc3RuYW1lKCksXG4gICAgICAgICdtYW51ZmFjdHVyZXInOiBtYW51ZmFjdHVyZXIsXG4gICAgICAgICdoYXJkd2FyZV9tb2RlbCc6IG1vZGVsLFxuICAgICAgICAnYXJjaGl0ZWN0dXJlJzogcGxhdGZvcm0ubWFjaGluZSgpLFxuICAgICAgICAnb3NfbmFtZSc6ICdtYWNPUycsXG4gICAgICAgICdvc192ZXJzaW9uJzogcGxhdGZvcm0ubWFjX3ZlcigpWzBdLFxuICAgICAgICAna2VybmVsX3ZlcnNpb24nOiBwbGF0Zm9ybS5yZWxlYXNlKCksXG4gICAgICAgICdtZW1vcnlfYnl0ZXMnOiBtZW1vcnksXG4gICAgICAgICdkaXNrX2J5dGVzJzogZGlza19ieXRlc190b3RhbCgpLFxuICAgICAgICAnbG9naWNhbF9jcHVzJzogY3B1cy5nZXQoJ2xvZ2ljYWxfY3B1cycpLFxuICAgICAgICAqKmNwdXMsXG4gICAgICAgICdkaXNrcyc6IGRpc2tfaW52ZW50b3J5X2RhcndpbigpLFxuICAgICAgICAnbmV0d29ya19pbnRlcmZhY2VzJzogbmV0d29ya19pbnZlbnRvcnlfZGFyd2luKCksXG4gICAgfVxuICAgIHRlbGVtZXRyeSA9IHtcbiAgICAgICAgJ21lbW9yeV9hdmFpbGFibGVfYnl0ZXMnOiBhdmFpbGFibGVfbWVtb3J5X2J5dGVzKCksXG4gICAgICAgICoqcG93ZXJfaW52ZW50b3J5X2RhcndpbigpLFxuICAgIH1cbiAgICByZWFkaW5lc3MgPSByZWFkaW5lc3NfZGFyd2luKClcbiAgICBjb25uZWN0aXZpdHkgPSBwcm9iZV9jb25uZWN0aXZpdHkob3MuZW52aXJvbi5nZXQoJ0RHRV9PUklHSU4nLCAnJykpXG4gICAgY2FwYWNpdHkgPSBwbGFubmVkX2NhcGFjaXR5X2RhcndpbihtZW1vcnksIGhhcmR3YXJlWydsb2dpY2FsX2NwdXMnXSlcbiAgICByZXR1cm4gaGFyZHdhcmUsIHRlbGVtZXRyeSwgcmVhZGluZXNzLCBjb25uZWN0aXZpdHksIGNhcGFjaXR5XG5cblxuZGVmIGNvbGxlY3RfbGludXgoKTpcbiAgICByZWxlYXNlID0gbGludXhfcmVsZWFzZSgpXG4gICAgbWVtb3J5ID0gbWVtb3J5X2J5dGVzKClcbiAgICBjcHVzID0gY3B1X2ludmVudG9yeSgpXG4gICAgcmVzZXJ2ZWQgPSBOb25lXG4gICAgcmVzZXJ2YXRpb24gPSBQYXRoKCcvc3lzL2ZzL2Nncm91cC9jaS5zbGljZS9tZW1vcnkubWF4JylcbiAgICBpZiByZXNlcnZhdGlvbi5leGlzdHMoKTpcbiAgICAgICAgcmF3ID0gcmVzZXJ2YXRpb24ucmVhZF90ZXh0KCkuc3RyaXAoKVxuICAgICAgICByZXNlcnZlZCA9IGludChyYXcpIGlmIHJhdy5pc2RpZ2l0KCkgZWxzZSBOb25lXG4gICAgaGFyZHdhcmUgPSB7XG4gICAgICAgICdob3N0bmFtZSc6IHNvY2tldC5nZXRob3N0bmFtZSgpLFxuICAgICAgICAnbWFudWZhY3R1cmVyJzogcmVhZF90ZXh0KCcvc3lzL2NsYXNzL2RtaS9pZC9zeXNfdmVuZG9yJyksXG4gICAgICAgICdoYXJkd2FyZV9tb2RlbCc6IHJlYWRfdGV4dCgnL3N5cy9jbGFzcy9kbWkvaWQvcHJvZHVjdF9uYW1lJyksXG4gICAgICAgICdhcmNoaXRlY3R1cmUnOiBwbGF0Zm9ybS5tYWNoaW5lKCksXG4gICAgICAgICdvc19uYW1lJzogcmVsZWFzZS5nZXQoJ05BTUUnKSxcbiAgICAgICAgJ29zX3ZlcnNpb24nOiByZWxlYXNlLmdldCgnVkVSU0lPTl9JRCcpLFxuICAgICAgICAna2VybmVsX3ZlcnNpb24nOiBwbGF0Zm9ybS5yZWxlYXNlKCksXG4gICAgICAgICdtZW1vcnlfYnl0ZXMnOiBtZW1vcnksXG4gICAgICAgICdkaXNrX2J5dGVzJzogZGlza19ieXRlc190b3RhbCgpLFxuICAgICAgICAnY2lfbWVtb3J5X3Jlc2VydmVkX2J5dGVzJzogcmVzZXJ2ZWQsXG4gICAgICAgICoqY3B1cyxcbiAgICB9XG4gICAgdGVsZW1ldHJ5ID0geydtZW1vcnlfYXZhaWxhYmxlX2J5dGVzJzogYXZhaWxhYmxlX21lbW9yeV9ieXRlcygpfVxuICAgIHJlYWRpbmVzcyA9IHJlYWRpbmVzc19saW51eCgpXG4gICAgY29ubmVjdGl2aXR5ID0gcHJvYmVfY29ubmVjdGl2aXR5KG9zLmVudmlyb24uZ2V0KCdER0VfT1JJR0lOJywgJycpKVxuICAgIGNhcGFjaXR5ID0gcGxhbm5lZF9jYXBhY2l0eV9saW51eChtZW1vcnksIGhhcmR3YXJlLmdldCgnbG9naWNhbF9jcHVzJyksIHJlc2VydmVkKVxuICAgIHJldHVybiBoYXJkd2FyZSwgdGVsZW1ldHJ5LCByZWFkaW5lc3MsIGNvbm5lY3Rpdml0eSwgY2FwYWNpdHlcblxuXG5kZWYgcmVhZF90ZXh0KHBhdGgpOlxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIFBhdGgocGF0aCkucmVhZF90ZXh0KCkuc3RyaXAoKSBvciBOb25lXG4gICAgZXhjZXB0IE9TRXJyb3I6XG4gICAgICAgIHJldHVybiBOb25lXG5cblxuZGVmIHByb2JlX2Nvbm5lY3Rpdml0eShvcmlnaW4pOlxuICAgIHJlc3VsdCA9IHsnc2VydmVyX3JlYWNoYWJsZSc6IEZhbHNlLCAndXBsaW5rX3Byb2JlX29rJzogTm9uZSwgJ3VwbGlua19wcm9iZV9icHMnOiBOb25lfVxuICAgIGlmIG9yaWdpbjpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgcmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3Qob3JpZ2luICsgJy91cCcsIG1ldGhvZD0nR0VUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz17J25ncm9rLXNraXAtYnJvd3Nlci13YXJuaW5nJzogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoWDExOyBMaW51eCB4ODZfNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjguMC4wLjAgU2FmYXJpLzUzNy4zNid9KVxuICAgICAgICAgICAgd2l0aCB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcXVlc3QsIHRpbWVvdXQ9MTApIGFzIHJlc3BvbnNlOlxuICAgICAgICAgICAgICAgIHJlc3VsdFsnc2VydmVyX3JlYWNoYWJsZSddID0gcmVzcG9uc2Uuc3RhdHVzID09IDIwMFxuICAgICAgICBleGNlcHQgKHVybGxpYi5lcnJvci5VUkxFcnJvciwgVmFsdWVFcnJvciwgVGltZW91dEVycm9yLCBPU0Vycm9yKTpcbiAgICAgICAgICAgIHJlc3VsdFsnc2VydmVyX3JlYWNoYWJsZSddID0gRmFsc2VcbiAgICBzdGFydGVkID0gdGltZS5tb25vdG9uaWMoKVxuICAgIGJvZHkgPSBiJ3gnICogNjU1MzZcbiAgICB0cnk6XG4gICAgICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KGYnaHR0cHM6Ly97UFJPQkVfSE9TVH17UFJPQkVfUEFUSH0nLCBkYXRhPWJvZHksIG1ldGhvZD0nUE9TVCcpXG4gICAgICAgIHdpdGggdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXF1ZXN0LCB0aW1lb3V0PVBST0JFX1RJTUVPVVQpIGFzIHJlc3BvbnNlOlxuICAgICAgICAgICAgcmVzcG9uc2UucmVhZCgpXG4gICAgICAgIGVsYXBzZWQgPSBtYXgodGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0ZWQsIDAuMDAxKVxuICAgICAgICByZXN1bHRbJ3VwbGlua19wcm9iZV9vayddID0gVHJ1ZVxuICAgICAgICByZXN1bHRbJ3VwbGlua19wcm9iZV9icHMnXSA9IGludChsZW4oYm9keSkgLyBlbGFwc2VkKVxuICAgIGV4Y2VwdCAodXJsbGliLmVycm9yLlVSTEVycm9yLCBUaW1lb3V0RXJyb3IsIE9TRXJyb3IpOlxuICAgICAgICByZXN1bHRbJ3VwbGlua19wcm9iZV9vayddID0gRmFsc2VcbiAgICAgICAgcmVzdWx0Wyd1cGxpbmtfcHJvYmVfYnBzJ10gPSAwXG4gICAgcmV0dXJuIHJlc3VsdFxuXG5cbmRlZiBjb2xsZWN0KG9yaWdpbj0nJywgd2luZG93c19zbmFwc2hvdD1Ob25lKTpcbiAgICBpZiB3aW5kb3dzX3NuYXBzaG90OlxuICAgICAgICBoYXJkd2FyZSwgdGVsZW1ldHJ5LCByZWFkaW5lc3MsIGNvbm5lY3Rpdml0eSwgY2FwYWNpdHkgPSBjb2xsZWN0X3dpbmRvd3Mod2luZG93c19zbmFwc2hvdClcbiAgICBlbGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdEYXJ3aW4nOlxuICAgICAgICBvcy5lbnZpcm9uWydER0VfT1JJR0lOJ10gPSBvcmlnaW5cbiAgICAgICAgaGFyZHdhcmUsIHRlbGVtZXRyeSwgcmVhZGluZXNzLCBjb25uZWN0aXZpdHksIGNhcGFjaXR5ID0gY29sbGVjdF9kYXJ3aW4oKVxuICAgIGVsc2U6XG4gICAgICAgIG9zLmVudmlyb25bJ0RHRV9PUklHSU4nXSA9IG9yaWdpblxuICAgICAgICBoYXJkd2FyZSwgdGVsZW1ldHJ5LCByZWFkaW5lc3MsIGNvbm5lY3Rpdml0eSwgY2FwYWNpdHkgPSBjb2xsZWN0X2xpbnV4KClcbiAgICByZXR1cm4ge1xuICAgICAgICAnaG9zdF9vcyc6IGhvc3Rfb3NfbmFtZSgpLFxuICAgICAgICAnaG9zdF9pbnZlbnRvcnknOiB7XG4gICAgICAgICAgICAnaGFyZHdhcmUnOiBoYXJkd2FyZSxcbiAgICAgICAgICAgICd0ZWxlbWV0cnknOiB0ZWxlbWV0cnksXG4gICAgICAgICAgICAncmVhZGluZXNzJzogcmVhZGluZXNzLFxuICAgICAgICAgICAgJ2Nvbm5lY3Rpdml0eSc6IGNvbm5lY3Rpdml0eSxcbiAgICAgICAgfSxcbiAgICAgICAgJ3BsYW5uZWRfd29ya2VyX2NhcGFjaXR5JzogY2FwYWNpdHksXG4gICAgfVxuXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgc25hcHNob3QgPSBzeXMuYXJndlsxXSBpZiBsZW4oc3lzLmFyZ3YpID4gMSBlbHNlIE5vbmVcbiAgICBwcmludChqc29uLmR1bXBzKGNvbGxlY3Qob3MuZW52aXJvbi5nZXQoJ0RHRV9PUklHSU4nLCAnJyksIHNuYXBzaG90KSwgaW5kZW50PTIpKVxuIiwiaG9zdF9pbnZlbnRvcnkucHMxIjoiJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICdTdG9wJ1xuXG5mdW5jdGlvbiBSZWFkTnVtYmVyKFtvYmplY3RdJFZhbHVlKSB7XG4gIGlmICgkbnVsbCAtZXEgJFZhbHVlKSB7IHJldHVybiAkbnVsbCB9XG4gICRwYXJzZWQgPSAwLjBcbiAgaWYgKFtkb3VibGVdOjpUcnlQYXJzZShbc3RyaW5nXSRWYWx1ZSwgW3JlZl0kcGFyc2VkKSAtYW5kICRwYXJzZWQgLWdlIDApIHtcbiAgICByZXR1cm4gW2ludDY0XSRwYXJzZWRcbiAgfVxuICByZXR1cm4gJG51bGxcbn1cblxuJGNvbXB1dGVyID0gR2V0LUNpbUluc3RhbmNlIFdpbjMyX0NvbXB1dGVyU3lzdGVtXG4kb3MgPSBHZXQtQ2ltSW5zdGFuY2UgV2luMzJfT3BlcmF0aW5nU3lzdGVtXG4kY3B1cyA9IEdldC1DaW1JbnN0YW5jZSBXaW4zMl9Qcm9jZXNzb3JcbiRsb2dpY2FsID0gKCRjcHVzIHwgTWVhc3VyZS1PYmplY3QgLVByb3BlcnR5IE51bWJlck9mTG9naWNhbFByb2Nlc3NvcnMgLVN1bSkuU3VtXG4kcGh5c2ljYWwgPSAoJGNwdXMgfCBNZWFzdXJlLU9iamVjdCAtUHJvcGVydHkgTnVtYmVyT2ZDb3JlcyAtU3VtKS5TdW1cbiRtZW1vcnkgPSBSZWFkTnVtYmVyKCRjb21wdXRlci5Ub3RhbFBoeXNpY2FsTWVtb3J5KVxuJGZyZWUgPSBSZWFkTnVtYmVyKCRvcy5GcmVlUGh5c2ljYWxNZW1vcnkpXG5pZiAoJGZyZWUpIHsgJGZyZWUgPSAkZnJlZSAqIDEwMjQgfVxuXG4kZGlza3MgPSBAKEdldC1QaHlzaWNhbERpc2sgfCBTZWxlY3QtT2JqZWN0IC1GaXJzdCA2NCB8IEZvckVhY2gtT2JqZWN0IHtcbiAgQHtcbiAgICBkZXZpY2Vfa2V5ID0gJF8uRGV2aWNlSWRcbiAgICBtb2RlbCA9ICRfLkZyaWVuZGx5TmFtZVxuICAgIG1lZGlhX3R5cGUgPSBpZiAoJF8uTWVkaWFUeXBlIC1lcSAnU1NEJykgeyAnc3NkJyB9IGVsc2VpZiAoJF8uTWVkaWFUeXBlIC1lcSAnSEREJykgeyAnaGRkJyB9IGVsc2UgeyAkbnVsbCB9XG4gICAgdHJhbnNwb3J0ID0gJF8uQnVzVHlwZVxuICAgIGNhcGFjaXR5X2J5dGVzID0gUmVhZE51bWJlcigkXy5TaXplKVxuICAgIHJlbW92YWJsZSA9IFtib29sXSRfLklzUmVtb3ZhYmxlXG4gIH1cbn0pXG5cbiRpbnRlcmZhY2VzID0gQChHZXQtTmV0QWRhcHRlciB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDY0IHwgRm9yRWFjaC1PYmplY3Qge1xuICBAe1xuICAgIGRldmljZV9rZXkgPSAkXy5OYW1lXG4gICAgY29ubmVjdGlvbl90eXBlID0gJF8uSW50ZXJmYWNlRGVzY3JpcHRpb25cbiAgICBsaW5rX3N0YXRlID0gJF8uU3RhdHVzXG4gICAgc3BlZWRfbWJwcyA9IGlmICgkXy5MaW5rU3BlZWQpIHsgW2ludF0oJF8uTGlua1NwZWVkIC8gMTAwMDAwMCkgfSBlbHNlIHsgJG51bGwgfVxuICB9XG59KVxuXG4kYmF0dGVyeSA9IEdldC1DaW1JbnN0YW5jZSBXaW4zMl9CYXR0ZXJ5IC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMVxuJHBvd2VyID0gR2V0LUNpbUluc3RhbmNlIEJhdHRlcnlTdGF0dXMgLU5hbWVzcGFjZSByb290L1dNSSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDFcblxuJHdzbCA9IEdldC1Db21tYW5kIHdzbC5leGUgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWVcbiRkaXN0cm9zID0gQCgpXG5pZiAoJHdzbCkge1xuICAkcmF3ID0gJiB3c2wuZXhlIC1sIC1xIDI+JG51bGxcbiAgaWYgKCRyYXcpIHtcbiAgICAkdGV4dCA9IGlmICgkcmF3IC1pcyBbYXJyYXldKSB7ICRyYXcgLWpvaW4gXCJgblwiIH0gZWxzZSB7IFtzdHJpbmddJHJhdyB9XG4gICAgJGRpc3Ryb3MgPSBAKCR0ZXh0IC1yZXBsYWNlIFwiYDBcIiwgJycgLXNwbGl0IFwiYHI/YG5cIiB8IEZvckVhY2gtT2JqZWN0IHsgJF8uVHJpbSgpIH0gfCBXaGVyZS1PYmplY3QgeyAkXyB9KVxuICB9XG59XG5cbiR3c2xNZW1vcnkgPSAkbnVsbFxuJHdzbENwdXMgPSAkbnVsbFxuJGNvbmZpZyA9IEpvaW4tUGF0aCAkZW52OlVTRVJQUk9GSUxFICcud3NsY29uZmlnJ1xuaWYgKFRlc3QtUGF0aCAkY29uZmlnKSB7XG4gIGZvcmVhY2ggKCRsaW5lIGluIEdldC1Db250ZW50ICRjb25maWcpIHtcbiAgICBpZiAoJGxpbmUgLW1hdGNoICdeXFxzKm1lbW9yeVxccyo9XFxzKihcXGQrKUdCJykgeyAkd3NsTWVtb3J5ID0gW2ludDY0XSRNYXRjaGVzWzFdICogMUdCIH1cbiAgICBpZiAoJGxpbmUgLW1hdGNoICdeXFxzKnByb2Nlc3NvcnNcXHMqPVxccyooXFxkKyknKSB7ICR3c2xDcHVzID0gW2ludF0kTWF0Y2hlc1sxXSB9XG4gIH1cbn1cbmlmICgtbm90ICR3c2xNZW1vcnkpIHtcbiAgJGhvc3RHaUIgPSBbTWF0aF06Ok1heChbaW50XSgkbWVtb3J5IC8gMUdCKSwgMSlcbiAgJGd1ZXN0R2lCID0gW01hdGhdOjpNYXgoNCwgW01hdGhdOjpNaW4oMTYsIFtpbnRdKCRob3N0R2lCIC8gMikpKVxuICAkd3NsTWVtb3J5ID0gW2ludDY0XSRndWVzdEdpQiAqIDFHQlxufVxuaWYgKC1ub3QgJHdzbENwdXMpIHtcbiAgJHdzbENwdXMgPSBbTWF0aF06Ok1heCgyLCBbTWF0aF06Ok1pbig4LCBbaW50XSgkbG9naWNhbCAvIDIpKSlcbn1cblxuJHBheWxvYWQgPSBAe1xuICBoYXJkd2FyZSA9IEB7XG4gICAgaG9zdG5hbWUgPSAkZW52OkNPTVBVVEVSTkFNRVxuICAgIG1hbnVmYWN0dXJlciA9ICRjb21wdXRlci5NYW51ZmFjdHVyZXJcbiAgICBoYXJkd2FyZV9tb2RlbCA9ICRjb21wdXRlci5Nb2RlbFxuICAgIGFyY2hpdGVjdHVyZSA9ICRlbnY6UFJPQ0VTU09SX0FSQ0hJVEVDVFVSRVxuICAgIG9zX25hbWUgPSAnV2luZG93cydcbiAgICBvc192ZXJzaW9uID0gJG9zLlZlcnNpb25cbiAgICBrZXJuZWxfdmVyc2lvbiA9ICRvcy5CdWlsZE51bWJlclxuICAgIGNwdV9tb2RlbCA9ICgkY3B1cyB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDEpLk5hbWVcbiAgICBjcHVfdmVuZG9yID0gKCRjcHVzIHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMSkuTWFudWZhY3R1cmVyXG4gICAgY3B1X3NvY2tldHMgPSAoJGNwdXMgfCBNZWFzdXJlLU9iamVjdCkuQ291bnRcbiAgICBwaHlzaWNhbF9jcHVfY29yZXMgPSAkcGh5c2ljYWxcbiAgICBsb2dpY2FsX2NwdXMgPSAkbG9naWNhbFxuICAgIG1lbW9yeV9ieXRlcyA9ICRtZW1vcnlcbiAgICBkaXNrX2J5dGVzID0gKEdldC1DaW1JbnN0YW5jZSBXaW4zMl9Mb2dpY2FsRGlzayAtRmlsdGVyIFwiRHJpdmVUeXBlPTNcIiB8IE1lYXN1cmUtT2JqZWN0IFNpemUgLVN1bSkuU3VtXG4gICAgZGlza3MgPSAkZGlza3NcbiAgICBuZXR3b3JrX2ludGVyZmFjZXMgPSAkaW50ZXJmYWNlc1xuICB9XG4gIHRlbGVtZXRyeSA9IEB7XG4gICAgbWVtb3J5X2F2YWlsYWJsZV9ieXRlcyA9ICRmcmVlXG4gICAgYmF0dGVyeV9wcmVzZW50ID0gW2Jvb2xdJGJhdHRlcnlcbiAgICBhY19jb25uZWN0ZWQgPSBpZiAoJHBvd2VyKSB7ICRwb3dlci5Qb3dlck9ubGluZSAtZXEgMSB9IGVsc2UgeyAkbnVsbCB9XG4gICAgYmF0dGVyeV9wZXJjZW50ID0gaWYgKCRiYXR0ZXJ5KSB7IFtpbnRdJGJhdHRlcnkuRXN0aW1hdGVkQ2hhcmdlUmVtYWluaW5nIH0gZWxzZSB7ICRudWxsIH1cbiAgICBiYXR0ZXJ5X3N0YXR1cyA9ICRiYXR0ZXJ5LlN0YXR1c1xuICAgIGJhdHRlcnlfcmVtYWluaW5nX3NlY29uZHMgPSAkbnVsbFxuICAgIHBvd2VyX3Byb2ZpbGUgPSAkbnVsbFxuICB9XG4gIHJlYWRpbmVzcyA9IEB7XG4gICAgZG9ja2VyID0gJGZhbHNlXG4gICAgc3lzdGVtZF9jZ3JvdXBzX3YyID0gJG51bGxcbiAgICB2aXJ0dWFsaXphdGlvbiA9IFtib29sXSR3c2xcbiAgICBsaW1hID0gJGZhbHNlXG4gICAgaG9tZWJyZXcgPSAkZmFsc2VcbiAgICB3c2wgPSBbYm9vbF0kd3NsXG4gICAgdWJ1bnR1ID0gQCgnVWJ1bnR1JywgJ1VidW50dS0yNC4wNCcsICdVYnVudHUtMjIuMDQnKSB8IFdoZXJlLU9iamVjdCB7ICRkaXN0cm9zIC1jb250YWlucyAkXyB9IHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMVxuICAgIHdzbGcgPSAkdHJ1ZVxuICAgIHN3YXBfZW5hYmxlZCA9ICRmYWxzZVxuICAgIGFkbWluX3JlcXVpcmVkID0gJGZhbHNlXG4gICAgcmVzdGFydF9yZXF1aXJlZCA9ICRmYWxzZVxuICB9XG4gIGNvbm5lY3Rpdml0eSA9IEB7XG4gICAgc2VydmVyX3JlYWNoYWJsZSA9ICRudWxsXG4gICAgdXBsaW5rX3Byb2JlX29rID0gJG51bGxcbiAgICB1cGxpbmtfcHJvYmVfYnBzID0gJG51bGxcbiAgfVxuICBwbGFubmVkX3dvcmtlcl9jYXBhY2l0eSA9IEB7XG4gICAgbWVtb3J5X2J5dGVzID0gJHdzbE1lbW9yeVxuICAgIGxvZ2ljYWxfY3B1cyA9ICR3c2xDcHVzXG4gICAgY2lfbWVtb3J5X3Jlc2VydmVkX2J5dGVzID0gJG51bGxcbiAgfVxufVxuXG4kcGF5bG9hZCB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCA2IC1Db21wcmVzc1xuIiwic2V0dXAucHkiOiIjIS91c3IvYmluL2VudiBweXRob24zXG5cIlwiXCJJZGVtcG90ZW50IExpbnV4L3N5c3RlbWQgaW5zdGFsbGVyOyBydW4gZnJvbSB0aGUgd29ya2VyIHNldHVwIGJ1bmRsZS5cblRoZSBlbnJvbGxtZW50IHRva2VuIGlzIHJlYWQgd2l0aG91dCBlY2hvLiBSZS1ydW5uaW5nIHByZXNlcnZlcyBlbnJvbGxtZW50XG5hbmQgYWN0aXZlIHJlbGVhc2UuIE5vIHRhc2sgZGF0YSBpcyB3cml0dGVuIHVuZGVyIC9vcHQvZGdlLXdvcmtlci5cblwiXCJcIlxuaW1wb3J0IGFyZ3BhcnNlXG5pbXBvcnQgZ2V0cGFzc1xuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5pbXBvcnQgc2hsZXhcbmltcG9ydCBzaHV0aWxcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdXJsbGliLnBhcnNlXG5cblxuZGVmIHJ1bigqYXJncyk6XG4gICAgcHJpbnQoJyQgJyArIHNobGV4LmpvaW4oc3RyKGl0ZW0pIGZvciBpdGVtIGluIGFyZ3MpLCBmbHVzaD1UcnVlKVxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCkuc3RyaXAoKVxuICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlcnJvcjpcbiAgICAgICAgb3V0cHV0ID0gZXJyb3Iub3V0cHV0LmRlY29kZSgpLnN0cmlwKCkgaWYgZXJyb3Iub3V0cHV0IGVsc2UgJydcbiAgICAgICAgaWYgb3V0cHV0OlxuICAgICAgICAgICAgcHJpbnQob3V0cHV0LCBmbHVzaD1UcnVlKVxuICAgICAgICByYWlzZVxuXG5cbmRlZiBtYWluKCk6XG4gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKVxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3JpZ2luJylcbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWVucm9sbG1lbnQtZmlsZScsIGRlZmF1bHQ9J2Vucm9sbG1lbnQuanNvbicpXG4gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcbiAgICBlbnJvbGxtZW50X3BhdGggPSBQYXRoKGFyZ3MuZW5yb2xsbWVudF9maWxlKVxuICAgIGVucm9sbG1lbnQgPSBqc29uLmxvYWRzKGVucm9sbG1lbnRfcGF0aC5yZWFkX3RleHQoKSkgaWYgZW5yb2xsbWVudF9wYXRoLmV4aXN0cygpIGVsc2Uge31cbiAgICBhcmdzLm9yaWdpbiA9IGFyZ3Mub3JpZ2luIG9yIGVucm9sbG1lbnQuZ2V0KCdvcmlnaW4nLCAnJylcbiAgICBvcmlnaW4gPSB1cmxsaWIucGFyc2UudXJsc3BsaXQoYXJncy5vcmlnaW4pXG4gICAgbG9jYWwgPSBvcmlnaW4uaG9zdG5hbWUgaW4gKCcxMjcuMC4wLjEnLCAnbG9jYWxob3N0JywgJzo6MScpXG4gICAgaHR0cHNfb2sgPSBvcmlnaW4uc2NoZW1lID09ICdodHRwcycgYW5kIG5vdCBvcmlnaW4ucGF0aCBhbmQgbm90IG9yaWdpbi5xdWVyeSBhbmQgbm90IG9yaWdpbi5mcmFnbWVudFxuICAgIGh0dHBfbG9jYWxfb2sgPSBvcmlnaW4uc2NoZW1lID09ICdodHRwJyBhbmQgbG9jYWwgYW5kIG5vdCBvcmlnaW4ucGF0aCBhbmQgbm90IG9yaWdpbi5xdWVyeSBhbmQgbm90IG9yaWdpbi5mcmFnbWVudFxuICAgIGlmIG5vdCBodHRwc19vayBhbmQgbm90IGh0dHBfbG9jYWxfb2s6XG4gICAgICAgIHBhcnNlci5lcnJvcignVXNlIGFuIEhUVFBTIG9yaWdpbiB3aXRob3V0IGEgcGF0aCcpXG4gICAgaWYgb3MuZ2V0ZXVpZCgpICE9IDAgb3Igc3lzLnZlcnNpb25faW5mbyA8ICgzLCAxMSk6XG4gICAgICAgIHBhcnNlci5lcnJvcignUnVuIGFzIHJvb3Qgb24gTGludXggd2l0aCBQeXRob24gMy4xMSBvciBuZXdlcicpXG4gICAgaWYgcnVuKCdkb2NrZXInLCAnaW5mbycsICctLWZvcm1hdCcsICd7ey5DZ3JvdXBEcml2ZXJ9fSB7ey5DZ3JvdXBWZXJzaW9ufX0nKSAhPSAnc3lzdGVtZCAyJzpcbiAgICAgICAgcGFyc2VyLmVycm9yKCdEb2NrZXIgbXVzdCB1c2Ugc3lzdGVtZCBjZ3JvdXBzIHYyJylcbiAgICByb290ID0gUGF0aCgnL29wdC9kZ2Utd29ya2VyJylcbiAgICBwcmludCgnJCBta2RpciAtcCAtbSA3MDAgL29wdC9kZ2Utd29ya2VyIC9vcHQvZGdlLXdvcmtlci9ib290c3RyYXAnLCBmbHVzaD1UcnVlKVxuICAgIHJvb3QubWtkaXIobW9kZT0wbzcwMCwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBvcy5jaG1vZChyb290LCAwbzcwMClcbiAgICBzb3VyY2UgPSBQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50XG4gICAgYm9vdHN0cmFwID0gcm9vdCAvICdib290c3RyYXAnXG4gICAgYm9vdHN0cmFwLm1rZGlyKG1vZGU9MG83MDAsIGV4aXN0X29rPVRydWUpXG4gICAgcHJpbnQoJyQgY3AgbGF1bmNoZXIucHkgL29wdC9kZ2Utd29ya2VyL2xhdW5jaGVyLnB5JywgZmx1c2g9VHJ1ZSlcbiAgICBzaHV0aWwuY29weWZpbGUoc291cmNlIC8gJ2xhdW5jaGVyLnB5Jywgcm9vdCAvICdsYXVuY2hlci5weScpXG4gICAgcHJpbnQoJyQgY3AgYWdlbnQucHkgL29wdC9kZ2Utd29ya2VyL2Jvb3RzdHJhcC9hZ2VudC5weScsIGZsdXNoPVRydWUpXG4gICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZSAvICdhZ2VudC5weScsIGJvb3RzdHJhcCAvICdhZ2VudC5weScpXG4gICAgaWRlbnRpdHkgPSByb290IC8gJ2lkZW50aXR5Lmpzb24nXG4gICAgaWYgbm90IGlkZW50aXR5LmV4aXN0cygpOlxuICAgICAgICB0b2tlbiA9IGVucm9sbG1lbnQuZ2V0KCd0b2tlbicpIG9yIGdldHBhc3MuZ2V0cGFzcygnV29ya2VyIGVucm9sbG1lbnQgdG9rZW4gKGhpZGRlbik6ICcpXG4gICAgICAgIGlmIG5vdCB0b2tlbjpcbiAgICAgICAgICAgIHBhcnNlci5lcnJvcignRW5yb2xsbWVudCB0b2tlbiBpcyByZXF1aXJlZCcpXG4gICAgICAgIGlkZW50aXR5LndyaXRlX3RleHQoanNvbi5kdW1wcyhkaWN0KG9yaWdpbj1hcmdzLm9yaWdpbiwgdG9rZW49dG9rZW4pKSlcbiAgICAgICAgaWRlbnRpdHkuY2htb2QoMG82MDApXG4gICAgZWxpZiBqc29uLmxvYWRzKGlkZW50aXR5LnJlYWRfdGV4dCgpKVsnb3JpZ2luJ10gIT0gYXJncy5vcmlnaW46XG4gICAgICAgIHBhcnNlci5lcnJvcignRXhpc3RpbmcgZW5yb2xsbWVudCB1c2VzIGEgZGlmZmVyZW50IG9yaWdpbicpXG4gICAgcG9pbnRlciA9IHJvb3QgLyAnY3VycmVudC5qc29uJ1xuICAgIGlmIG5vdCBwb2ludGVyLmV4aXN0cygpOlxuICAgICAgICBwb2ludGVyLndyaXRlX3RleHQoanNvbi5kdW1wcyhzdHIoYm9vdHN0cmFwKSkpXG4gICAgICAgIHBvaW50ZXIuY2htb2QoMG82MDApXG4gICAgc2NyYXRjaCA9IFBhdGgoJy9ydW4vZGdlLXdvcmtlci90YXNrcycpXG4gICAgc2NyYXRjaC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgaWYgbm90IG9zLnBhdGguaXNtb3VudChzY3JhdGNoKTpcbiAgICAgICAgcnVuKCdtb3VudCcsICctdCcsICd0bXBmcycsICctbycsICdzaXplPTI1Nm0sbW9kZT0wNzAwLG5vc3VpZCxub2Rldixub2V4ZWMnLCAndG1wZnMnLCBzdHIoc2NyYXRjaCkpXG4gICAgdW5pdF9yb290ID0gUGF0aCgnL2V0Yy9zeXN0ZW1kL3N5c3RlbScpXG4gICAgIyBQcmVzZXJ2ZSBDSSdzIGFscmVhZHkgcHJvdmlzaW9uZWQgY29tcHV0ZS5zbGljZSBtZW1vcnkgYnVkZ2V0LlxuICAgIGNvbXB1dGVfc2xpY2UgPSB1bml0X3Jvb3QgLyAnY29tcHV0ZS5zbGljZSdcbiAgICBpZiBub3QgY29tcHV0ZV9zbGljZS5leGlzdHMoKTpcbiAgICAgICAgY29tcHV0ZV9zbGljZS53cml0ZV90ZXh0KCdbU2xpY2VdXFxuQ1BVV2VpZ2h0PTEwMDBcXG5JT1dlaWdodD0xMDAwXFxuTWVtb3J5U3dhcE1heD0wXFxuJylcbiAgICBwcmludCgnJCBjYXQgPiAvZXRjL3N5c3RlbWQvc3lzdGVtL2RnZS13b3JrZXIuc2VydmljZScsIGZsdXNoPVRydWUpXG4gICAgKHVuaXRfcm9vdCAvICdkZ2Utd29ya2VyLnNlcnZpY2UnKS53cml0ZV90ZXh0KCcnJ1tVbml0XVxuRGVzY3JpcHRpb249REdFIG1hbmFnZWQgY29tcHV0ZSB3b3JrZXJcblJlcXVpcmVzPWRvY2tlci5zZXJ2aWNlIGNvbXB1dGUuc2xpY2VcbkFmdGVyPWRvY2tlci5zZXJ2aWNlIG5ldHdvcmstb25saW5lLnRhcmdldFxuV2FudHM9bmV0d29yay1vbmxpbmUudGFyZ2V0XG5cbltTZXJ2aWNlXVxuVHlwZT1zaW1wbGVcblNsaWNlPWNvbXB1dGUuc2xpY2VcbkVudmlyb25tZW50RmlsZT0tL29wdC9kZ2Utd29ya2VyL3N0b3JhZ2UuZW52XG5FbnZpcm9ubWVudEZpbGU9LS9vcHQvZGdlLXdvcmtlci9wcm94eS5lbnZcbkV4ZWNTdGFydFByZT0vdXNyL2Jpbi9ta2RpciAtcCAvcnVuL2RnZS13b3JrZXIvdGFza3NcbkV4ZWNTdGFydFByZT0vYmluL3NoIC1jICdtb3VudHBvaW50IC1xIC9ydW4vZGdlLXdvcmtlci90YXNrcyB8fCBtb3VudCAtdCB0bXBmcyAtbyBzaXplPTI1Nm0sbW9kZT0wNzAwLG5vc3VpZCxub2Rldixub2V4ZWMgdG1wZnMgL3J1bi9kZ2Utd29ya2VyL3Rhc2tzJ1xuRXhlY1N0YXJ0PS91c3IvYmluL3B5dGhvbjMgL29wdC9kZ2Utd29ya2VyL2xhdW5jaGVyLnB5XG5SZXN0YXJ0PWFsd2F5c1xuUmVzdGFydFNlYz0xMFxuVGltZW91dFN0b3BTZWM9OTYwXG5MaW1pdENPUkU9MFxuTWVtb3J5U3dhcE1heD0wXG5VTWFzaz0wMDc3XG5cbltJbnN0YWxsXVxuV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXRcbicnJylcbiAgICBmcm9tIGNvbmZpZ3VyZV9jaSBpbXBvcnQgY29uZmlndXJlXG4gICAgY29uZmlndXJlKClcbiAgICBydW4oJ3N5c3RlbWN0bCcsICdkYWVtb24tcmVsb2FkJylcbiAgICBydW4oJ3N5c3RlbWN0bCcsICdlbmFibGUnLCAnLS1ub3cnLCAnZGdlLXdvcmtlci5zZXJ2aWNlJylcbiAgICBwcmludCgnV29ya2VyIGVucm9sbGVkLiBDb25maWd1cmF0aW9uIGFuZCB0YXNrIGltYWdlcyBhcmUgb2J0YWluZWQgYXQgY2hlY2staW4uJywgZmx1c2g9VHJ1ZSlcblxuXG5pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOlxuICAgIG1haW4oKVxuIiwiYWdlbnQucHkiOiIjIS91c3IvYmluL2VudiBweXRob24zXG5cIlwiXCJUcnVzdGVkIExpbnV4IGhvc3Qgc3VwZXJ2aXNvci4gUGVyc2lzdGVudCBzdGF0ZSBjb250YWlucyBjb2RlL2NvbmZpZyBvbmx5LlxuVGFzayBzY3JhdGNoIGlzIHRtcGZzLiBUaGUgd29ya2VyIGNncm91cCBhbmQgdGFzayBjb250YWluZXJzIHNldCBNZW1vcnlTd2FwTWF4PTBcbnNvIHRhc2sgcGFnZXMgZG8gbm90IHVzZSBob3N0IHN3YXAgZXZlbiB3aGVuIHRoZSBtYWNoaW5lIGhhcyBzd2FwIGVuYWJsZWQuXG5UYXNrIGNvbnRhaW5lcnMgaGF2ZSBubyBuZXR3b3JrLCBEb2NrZXIgc29ja2V0LCB3b3JrZXIgaWRlbnRpdHksIG9yIHN0b3JhZ2UgY3JlZGVudGlhbHMuXG5cIlwiXCJcbmltcG9ydCBiYXNlNjRcbmltcG9ydCBjc3ZcbmltcG9ydCBtYXRoXG5pbXBvcnQgaGFzaGxpYlxuaW1wb3J0IGhtYWNcbmltcG9ydCBodHRwLmNsaWVudFxuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWVcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuaW1wb3J0IHBsYXRmb3JtXG5pbXBvcnQgc2h1dGlsXG5pbXBvcnQgc2lnbmFsXG5pbXBvcnQgc29ja2V0XG5pbXBvcnQgc3NsXG5pbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHN5c1xuaW1wb3J0IHRlbXBmaWxlXG5pbXBvcnQgdGFyZmlsZVxuaW1wb3J0IHRocmVhZGluZ1xuaW1wb3J0IHRpbWVcbmltcG9ydCB1cmxsaWIuZXJyb3JcbmltcG9ydCB1cmxsaWIucGFyc2VcbmltcG9ydCB1cmxsaWIucmVxdWVzdFxuXG4jIENsb3VkZmxhcmUgYm90IGZpZ2h0IDQwM3MgUHl0aG9uJ3MgZGVmYXVsdCBVQTsgdGhlIHdvcmtlciB0YWxrcyBIVFRQUyB0aHJvdWdoIGl0LlxuQlJPV1NFUl9VQSA9ICdNb3ppbGxhLzUuMCAoWDExOyBMaW51eCB4ODZfNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjguMC4wLjAgU2FmYXJpLzUzNy4zNidcblxuUkVHSVNUUllfQVVUSF9WRVJTSU9OID0gMVxuQ0FQQUJJTElUWV9URVNUX1ZFUlNJT04gPSAxXG5SVU5USU1FX0FCSSA9ICdfX1JVTlRJTUVfQUJJX18nXG5WRVJTSU9OID0gJzEuMy4wKycgKyBoYXNobGliLnNoYTI1NihQYXRoKF9fZmlsZV9fKS5yZWFkX2J5dGVzKCkpLmhleGRpZ2VzdCgpWzoxMl1cblJPT1QgPSBQYXRoKG9zLmVudmlyb24uZ2V0KCdER0VfV09SS0VSX1JPT1QnLCAnL29wdC9kZ2Utd29ya2VyJykpXG5TQ1JBVENIID0gUGF0aChvcy5lbnZpcm9uLmdldCgnREdFX1dPUktFUl9TQ1JBVENIJywgJy9ydW4vZGdlLXdvcmtlci90YXNrcycpKVxuU1RPUCA9IHRocmVhZGluZy5FdmVudCgpXG5TVEFURV9MT0NLID0gdGhyZWFkaW5nLkxvY2soKVxuUE9TVF9MT0NLID0gdGhyZWFkaW5nLkxvY2soKVxuUkVQT1JUID0ge31cblRBU0tTID0gW11cbkNPTlRST0wgPSB7fVxuTE9HUyA9IGRlcXVlKG1heGxlbj00MClcblxuXG5jbGFzcyBOb1JlZGlyZWN0KHVybGxpYi5yZXF1ZXN0LkhUVFBSZWRpcmVjdEhhbmRsZXIpOlxuICAgIGRlZiByZWRpcmVjdF9yZXF1ZXN0KHNlbGYsICphcmdzLCAqKmt3YXJncyk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1JlZGlyZWN0cyBhcmUgbm90IHBlcm1pdHRlZCcpXG5cblxuSFRUUCA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcihOb1JlZGlyZWN0KCkpXG5IVFRQLmFkZGhlYWRlcnMgPSBbKCdVc2VyLUFnZW50JywgQlJPV1NFUl9VQSldXG5TVE9SQUdFX0hUVFAgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoKVxuU1RPUkFHRV9IVFRQLmFkZGhlYWRlcnMgPSBbKCdVc2VyLUFnZW50JywgQlJPV1NFUl9VQSldXG5cblxuZGVmIHN0b3JhZ2VfcHJveHkoKTpcbiAgICBwcm94eSA9IG9zLmVudmlyb24uZ2V0KCdER0VfU1RPUkFHRV9QUk9YWScpXG4gICAgaWYgbm90IHByb3h5OlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIHBhcnNlZCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdChwcm94eSlcbiAgICBpZiAocGFyc2VkLnNjaGVtZSAhPSAnaHR0cCcgb3IgcGFyc2VkLnVzZXJuYW1lIG9yIG5vdCBwYXJzZWQuaG9zdG5hbWVcbiAgICAgICAgICAgIG9yIHBhcnNlZC5wYXRoIG5vdCBpbiAoJycsICcvJykgb3IgcGFyc2VkLnF1ZXJ5IG9yIHBhcnNlZC5mcmFnbWVudCk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1N0b3JhZ2UgcHJveHkgbXVzdCBiZSBhbiBIVFRQIFVSTCcpXG4gICAgcmV0dXJuIHBhcnNlZFxuXG5cbmRlZiBzdG9yYWdlX3Byb3h5X2Zvcih1cmwpOlxuICAgIHByb3h5ID0gc3RvcmFnZV9wcm94eSgpXG4gICAgaWYgcHJveHkgaXMgTm9uZTpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICBob3N0ID0gKHVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmwpLmhvc3RuYW1lIG9yICcnKS5sb3dlcigpLnJzdHJpcCgnLicpXG4gICAgaWYgaG9zdC5lbmRzd2l0aCgnLnIyLmNsb3VkZmxhcmVzdG9yYWdlLmNvbScpOlxuICAgICAgICByZXR1cm4gcHJveHlcbiAgICByZXR1cm4gTm9uZVxuXG5cbmNsYXNzIFByb3hpZWRSZXNwb25zZTpcbiAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubmVjdGlvbiwgcmVzcG9uc2UpOlxuICAgICAgICBzZWxmLl9jb25uZWN0aW9uID0gY29ubmVjdGlvblxuICAgICAgICBzZWxmLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c1xuICAgICAgICBzZWxmLnJlYWQgPSByZXNwb25zZS5yZWFkXG5cbiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOlxuICAgICAgICByZXR1cm4gc2VsZlxuXG4gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKTpcbiAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5jbG9zZSgpXG5cblxuU1RPUkFHRV9QUk9YWV9USU1FT1VUID0gNjAwXG5VUExJTktfSU5URVJWQUwgPSAzMDBcblVQTElOS19MT0NLID0gdGhyZWFkaW5nLkxvY2soKVxuVVBMSU5LID0ge1xuICAgICd1cGxpbmtfa2luZCc6ICd1bmtub3duJyxcbiAgICAndXBsaW5rX3Byb2JlX29rJzogRmFsc2UsXG4gICAgJ3VwbGlua19wcm9iZV9icHMnOiAwLFxuICAgICd1cGxpbmtfcHJvYmVkX2F0JzogTm9uZSxcbn1cbkhPU1QgPSB7fVxuVVBMSU5LX0FUID0gMC4wXG5QUk9CRV9IT1NUID0gJ3NwZWVkLmNsb3VkZmxhcmUuY29tJ1xuUFJPQkVfUEFUSCA9ICcvX191cCdcblBST0JFX0JZVEVTID0gMiAqIDEwMjQgKiAxMDI0XG5QUk9CRV9USU1FT1VUID0gMTBcblxuXG5kZWYgc3RvcmFnZV9nZXQodXJsKTpcbiAgICBwYXJzZWQgPSBzdG9yYWdlX3Byb3h5X2Zvcih1cmwpXG4gICAgaWYgcGFyc2VkIGlzIE5vbmU6XG4gICAgICAgIHJldHVybiBTVE9SQUdFX0hUVFAub3Blbih1cmwsIHRpbWVvdXQ9MzApXG4gICAgY29ubmVjdGlvbiA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKHBhcnNlZC5ob3N0bmFtZSwgcGFyc2VkLnBvcnQgb3IgODAsIHRpbWVvdXQ9U1RPUkFHRV9QUk9YWV9USU1FT1VUKVxuICAgIGNvbm5lY3Rpb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKVxuICAgIGNvbm5lY3Rpb24ucHV0aGVhZGVyKCdYLURHRS1UYXJnZXQnLCB1cmwpXG4gICAgY29ubmVjdGlvbi5lbmRoZWFkZXJzKClcbiAgICByZXNwb25zZSA9IGNvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKVxuICAgIGlmIHJlc3BvbnNlLnN0YXR1cyAhPSAyMDA6XG4gICAgICAgIHN0YXR1cywgcmVhc29uID0gcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5yZWFzb25cbiAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpXG4gICAgICAgIHJhaXNlIHVybGxpYi5lcnJvci5IVFRQRXJyb3IodXJsLCBzdGF0dXMsIHJlYXNvbiwge30sIE5vbmUpXG4gICAgcmV0dXJuIFByb3hpZWRSZXNwb25zZShjb25uZWN0aW9uLCByZXNwb25zZSlcblxuXG5kZWYgc3RvcmFnZV9wdXRfY29ubmVjdGlvbih1cmwpOlxuICAgIHBhcnNlZCA9IHN0b3JhZ2VfcHJveHlfZm9yKHVybClcbiAgICB1cmkgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKVxuICAgIGlmIHBhcnNlZCBpcyBOb25lOlxuICAgICAgICBjb25uZWN0aW9uID0gaHR0cC5jbGllbnQuSFRUUFNDb25uZWN0aW9uKHVyaS5ob3N0bmFtZSwgdXJpLnBvcnQgb3IgNDQzLCB0aW1lb3V0PTMwKVxuICAgICAgICByZXR1cm4gY29ubmVjdGlvbiwgdXJpLnBhdGggKyAoJz8nICsgdXJpLnF1ZXJ5IGlmIHVyaS5xdWVyeSBlbHNlICcnKVxuICAgIGNvbm5lY3Rpb24gPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbihwYXJzZWQuaG9zdG5hbWUsIHBhcnNlZC5wb3J0IG9yIDgwLCB0aW1lb3V0PVNUT1JBR0VfUFJPWFlfVElNRU9VVClcbiAgICByZXR1cm4gY29ubmVjdGlvbiwgJy8nXG5cblxuZGVmIG5vdGUobWVzc2FnZSk6XG4gICAgbGluZSA9IHRpbWUuc3RyZnRpbWUoJyVIOiVNOiVTWicsIHRpbWUuZ210aW1lKCkpICsgJyAnICsgJyAnLmpvaW4oc3RyKG1lc3NhZ2UpLnNwbGl0KCkpWzozNjBdXG4gICAgcHJpbnQobWVzc2FnZSwgZmx1c2g9VHJ1ZSlcbiAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgIExPR1MuYXBwZW5kKGxpbmUpXG5cblxuZGVmIGRlc2NyaWJlX2Vycm9yKGVycm9yKTpcbiAgICB0ZXh0ID0gdHlwZShlcnJvcikuX19uYW1lX18gKyAnOiAnICsgc3RyKGVycm9yKVxuICAgIHN0ZGVyciA9IGdldGF0dHIoZXJyb3IsICdzdGRlcnInLCBiJycpIG9yIGInJ1xuICAgIGlmIHN0ZGVycjpcbiAgICAgICAgdGV4dCArPSAnICcgKyAoc3RkZXJyLmRlY29kZShlcnJvcnM9J3JlcGxhY2UnKSBpZiBpc2luc3RhbmNlKHN0ZGVyciwgKGJ5dGVzLCBieXRlYXJyYXkpKSBlbHNlIHN0cihzdGRlcnIpKVxuICAgIHJldHVybiAnICcuam9pbih0ZXh0LnNwbGl0KCkpWzo0MDBdXG5cblxuZGVmIGNvbW1hbmQoYXJncywgdGltZW91dD02MCk6XG4gICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oYXJncywgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsIHRpbWVvdXQ9dGltZW91dClcbiAgICBpZiByZXN1bHQucmV0dXJuY29kZTpcbiAgICAgICAgcmFpc2Ugc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IocmVzdWx0LnJldHVybmNvZGUsIGFyZ3MsIHJlc3VsdC5zdGRvdXQsIHJlc3VsdC5zdGRlcnIpXG4gICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQuZGVjb2RlKCkuc3RyaXAoKVxuXG5cbmRlZiByZWFkX2pzb24ocGF0aCwgZGVmYXVsdD1Ob25lKTpcbiAgICByZXR1cm4ganNvbi5sb2FkcyhwYXRoLnJlYWRfdGV4dCgpKSBpZiBwYXRoLmV4aXN0cygpIGVsc2UgZGVmYXVsdFxuXG5cbmRlZiB3cml0ZV9qc29uKHBhdGgsIHZhbHVlKTpcbiAgICB0ZW1wID0gcGF0aC53aXRoX3N1ZmZpeCgnLnRtcCcpXG4gICAgdGVtcC53cml0ZV90ZXh0KGpzb24uZHVtcHModmFsdWUpKVxuICAgIHRlbXAuY2htb2QoMG82MDApXG4gICAgb3MucmVwbGFjZSh0ZW1wLCBwYXRoKVxuXG5cbmRlZiBtZW1vcnkoKTpcbiAgICByZXR1cm4ge2xpbmUuc3BsaXQoJzonKVswXTogaW50KGxpbmUuc3BsaXQoKVsxXSkgKiAxMDI0XG4gICAgICAgICAgICBmb3IgbGluZSBpbiBQYXRoKCcvcHJvYy9tZW1pbmZvJykucmVhZF90ZXh0KCkuc3BsaXRsaW5lcygpIGlmIGxlbihsaW5lLnNwbGl0KCkpID09IDN9XG5cblxuZGVmIHJlYWRfdGV4dChwYXRoKTpcbiAgICB0cnk6XG4gICAgICAgIHJldHVybiBQYXRoKHBhdGgpLnJlYWRfdGV4dCgpLnN0cmlwKClcbiAgICBleGNlcHQgKE9TRXJyb3IsIFZhbHVlRXJyb3IpOlxuICAgICAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBvcHRpb25hbF9jb21tYW5kKGFyZ3MpOlxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIGNvbW1hbmQoYXJncywgNSlcbiAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuU3VicHJvY2Vzc0Vycm9yKTpcbiAgICAgICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgbnVtYmVyKHZhbHVlLCBzY2FsZT0xKTpcbiAgICB0cnk6XG4gICAgICAgIHJlc3VsdCA9IGZsb2F0KHZhbHVlKSAqIHNjYWxlXG4gICAgICAgIHJldHVybiByZXN1bHQgaWYgcmVzdWx0ID49IDAgYW5kIG1hdGguaXNmaW5pdGUocmVzdWx0KSBlbHNlIE5vbmVcbiAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6XG4gICAgICAgIHJldHVybiBOb25lXG5cblxuZGVmIHBjaV9kZXRhaWxzKGRldmljZSk6XG4gICAgZGV0YWlscyA9IHt9XG4gICAgb3V0cHV0ID0gb3B0aW9uYWxfY29tbWFuZChbJ2xzcGNpJywgJy12bW0nLCAnLXMnLCBkZXZpY2UubmFtZV0pXG4gICAgZm9yIGxpbmUgaW4gKG91dHB1dCBvciAnJykuc3BsaXRsaW5lcygpOlxuICAgICAgICBrZXksIHNlcGFyYXRvciwgdmFsdWUgPSBsaW5lLnBhcnRpdGlvbignOicpXG4gICAgICAgIGlmIHNlcGFyYXRvcjpcbiAgICAgICAgICAgIGRldGFpbHNba2V5XSA9IHZhbHVlLnN0cmlwKClcbiAgICByZXR1cm4gZGljdCh2ZW5kb3I9ZGV0YWlscy5nZXQoJ1ZlbmRvcicpIG9yIHJlYWRfdGV4dChkZXZpY2UgLyAndmVuZG9yJyksXG4gICAgICAgICAgICAgICAgbW9kZWw9ZGV0YWlscy5nZXQoJ0RldmljZScpIG9yIHJlYWRfdGV4dChkZXZpY2UgLyAnZGV2aWNlJykpXG5cblxuZGVmIGNwdV9pbnZlbnRvcnkoKTpcbiAgICBibG9ja3MgPSBQYXRoKCcvcHJvYy9jcHVpbmZvJykucmVhZF90ZXh0KCkuc3RyaXAoKS5zcGxpdCgnXFxuXFxuJylcbiAgICBjcHVzID0gW2RpY3QobGluZS5zcGxpdCgnOicsIDEpIGZvciBsaW5lIGluIGJsb2NrLnNwbGl0bGluZXMoKSBpZiAnOicgaW4gbGluZSkgZm9yIGJsb2NrIGluIGJsb2Nrc11cbiAgICBjcHVzID0gW3trZXkuc3RyaXAoKTogdmFsdWUuc3RyaXAoKSBmb3Iga2V5LCB2YWx1ZSBpbiBjcHUuaXRlbXMoKX0gZm9yIGNwdSBpbiBjcHVzXVxuICAgIGZpcnN0ID0gY3B1c1swXSBpZiBjcHVzIGVsc2Uge31cbiAgICBzb2NrZXRzID0ge2NwdVsncGh5c2ljYWwgaWQnXSBmb3IgY3B1IGluIGNwdXMgaWYgJ3BoeXNpY2FsIGlkJyBpbiBjcHV9XG4gICAgY29yZXMgPSB7KGNwdVsncGh5c2ljYWwgaWQnXSwgY3B1Wydjb3JlIGlkJ10pIGZvciBjcHUgaW4gY3B1cyBpZiAncGh5c2ljYWwgaWQnIGluIGNwdSBhbmQgJ2NvcmUgaWQnIGluIGNwdX1cbiAgICBwb2xpY2llcyA9IGxpc3QoUGF0aCgnL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1ZnJlcScpLmdsb2IoJ3BvbGljeSonKSlcbiAgICBtaW5pbXVtID0gW251bWJlcihyZWFkX3RleHQocCAvICdjcHVpbmZvX21pbl9mcmVxJyksIC4wMDEpIGZvciBwIGluIHBvbGljaWVzXVxuICAgIG1heGltdW0gPSBbbnVtYmVyKHJlYWRfdGV4dChwIC8gJ2NwdWluZm9fbWF4X2ZyZXEnKSwgLjAwMSkgZm9yIHAgaW4gcG9saWNpZXNdXG4gICAgcmV0dXJuIGRpY3QoY3B1X21vZGVsPWZpcnN0LmdldCgnbW9kZWwgbmFtZScpIG9yIGZpcnN0LmdldCgnUHJvY2Vzc29yJyksIGNwdV92ZW5kb3I9Zmlyc3QuZ2V0KCd2ZW5kb3JfaWQnKSxcbiAgICAgICAgICAgICAgICBjcHVfc29ja2V0cz1sZW4oc29ja2V0cykgb3IgTm9uZSwgcGh5c2ljYWxfY3B1X2NvcmVzPWxlbihjb3Jlcykgb3IgTm9uZSxcbiAgICAgICAgICAgICAgICBsb2dpY2FsX2NwdXM9b3MuY3B1X2NvdW50KCksIGNwdV9taW5fbWh6PW1pbigoeCBmb3IgeCBpbiBtaW5pbXVtIGlmIHggaXMgbm90IE5vbmUpLCBkZWZhdWx0PU5vbmUpLFxuICAgICAgICAgICAgICAgIGNwdV9tYXhfbWh6PW1heCgoeCBmb3IgeCBpbiBtYXhpbXVtIGlmIHggaXMgbm90IE5vbmUpLCBkZWZhdWx0PU5vbmUpKVxuXG5cbmRlZiBkaXNrX2ludmVudG9yeSgpOlxuICAgIG91dHB1dCA9IG9wdGlvbmFsX2NvbW1hbmQoWydsc2JsaycsICctLWpzb24nLCAnLS1ieXRlcycsICctLW5vZGVwcycsICctLW91dHB1dCcsICdOQU1FLFRZUEUsU0laRSxNT0RFTCxWRU5ET1IsVFJBTixST1RBLFJNJ10pXG4gICAgaWYgb3V0cHV0IGlzIE5vbmU6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgdHJ5OlxuICAgICAgICBkZXZpY2VzID0ganNvbi5sb2FkcyhvdXRwdXQpWydibG9ja2RldmljZXMnXVxuICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgS2V5RXJyb3IsIFR5cGVFcnJvcik6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcmVzdWx0ID0gW11cbiAgICBmb3IgZGlzayBpbiBkZXZpY2VzOlxuICAgICAgICBpZiBkaXNrLmdldCgndHlwZScpICE9ICdkaXNrJzpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHJvdGF0aW9uYWwgPSBkaXNrLmdldCgncm90YScpXG4gICAgICAgIG1lZGlhID0gJ2hkZCcgaWYgcm90YXRpb25hbCBlbHNlICdzc2QnIGlmIHJvdGF0aW9uYWwgaXMgbm90IE5vbmUgZWxzZSBOb25lXG4gICAgICAgIHJlc3VsdC5hcHBlbmQoZGljdChkZXZpY2Vfa2V5PWRpc2tbJ25hbWUnXSwgbW9kZWw9KGRpc2suZ2V0KCdtb2RlbCcpIG9yICcnKS5zdHJpcCgpIG9yIE5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZW5kb3I9KGRpc2suZ2V0KCd2ZW5kb3InKSBvciAnJykuc3RyaXAoKSBvciBOb25lLCBjYXBhY2l0eV9ieXRlcz1udW1iZXIoZGlzay5nZXQoJ3NpemUnKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQ9ZGlzay5nZXQoJ3RyYW4nKSwgbWVkaWFfdHlwZT1tZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uYWw9Ym9vbChyb3RhdGlvbmFsKSBpZiByb3RhdGlvbmFsIGlzIG5vdCBOb25lIGVsc2UgTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92YWJsZT1ib29sKGRpc2tbJ3JtJ10pIGlmIGRpc2suZ2V0KCdybScpIGlzIG5vdCBOb25lIGVsc2UgTm9uZSkpXG4gICAgcmV0dXJuIHJlc3VsdFs6NjRdXG5cblxuZGVmIGdwdV9pbnZlbnRvcnkoKTpcbiAgICByZXN1bHQgPSBbXVxuICAgIGZvciBkZXZpY2UgaW4gUGF0aCgnL3N5cy9idXMvcGNpL2RldmljZXMnKS5nbG9iKCcqJyk6XG4gICAgICAgIGlmIG5vdCAocmVhZF90ZXh0KGRldmljZSAvICdjbGFzcycpIG9yICcnKS5zdGFydHN3aXRoKCcweDAzJyk6XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICBncHUgPSBkaWN0KGRldmljZV9rZXk9ZGV2aWNlLm5hbWUsIHBjaV9hZGRyZXNzPWRldmljZS5uYW1lLCAqKnBjaV9kZXRhaWxzKGRldmljZSkpXG4gICAgICAgIGdwdVsnbWVtb3J5X2J5dGVzJ10gPSBudW1iZXIocmVhZF90ZXh0KGRldmljZSAvICdtZW1faW5mb192cmFtX3RvdGFsJykpXG4gICAgICAgIHJlc3VsdC5hcHBlbmQoZ3B1KVxuICAgIG91dHB1dCA9IG9wdGlvbmFsX2NvbW1hbmQoWydudmlkaWEtc21pJywgJy0tcXVlcnktZ3B1PXBjaS5idXNfaWQsbmFtZSxkcml2ZXJfdmVyc2lvbixtZW1vcnkudG90YWwsY2xvY2tzLm1heC5ncmFwaGljcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZm9ybWF0PWNzdixub2hlYWRlcixub3VuaXRzJ10pXG4gICAgcXVlcnlfaGVscCA9IG9wdGlvbmFsX2NvbW1hbmQoWydudmlkaWEtc21pJywgJy0taGVscC1xdWVyeS1ncHUnXSkgaWYgb3V0cHV0IGVsc2UgTm9uZVxuICAgIGZvciByb3cgaW4gY3N2LnJlYWRlcigob3V0cHV0IG9yICcnKS5zcGxpdGxpbmVzKCksIHNraXBpbml0aWFsc3BhY2U9VHJ1ZSk6XG4gICAgICAgIGlmIGxlbihyb3cpICE9IDU6XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICBhZGRyZXNzID0gcm93WzBdLmxvd2VyKClbLTEyOl1cbiAgICAgICAgZ3B1ID0gbmV4dCgoaXRlbSBmb3IgaXRlbSBpbiByZXN1bHQgaWYgaXRlbVsncGNpX2FkZHJlc3MnXS5sb3dlcigpID09IGFkZHJlc3MpLCBOb25lKVxuICAgICAgICBpZiBncHUgaXMgTm9uZTpcbiAgICAgICAgICAgIGdwdSA9IGRpY3QoZGV2aWNlX2tleT1hZGRyZXNzLCBwY2lfYWRkcmVzcz1hZGRyZXNzKVxuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChncHUpXG4gICAgICAgIGdwdS51cGRhdGUodmVuZG9yPSdOVklESUEnLCBtb2RlbD1yb3dbMV0sIGRyaXZlcl92ZXJzaW9uPXJvd1syXSwgbWVtb3J5X2J5dGVzPW51bWJlcihyb3dbM10sIDEwMjQqKjIpLFxuICAgICAgICAgICAgICAgICAgIG1heF9jbG9ja19taHo9bnVtYmVyKHJvd1s0XSkpXG4gICAgICAgIGZvciBmaWVsZCwga2V5IGluIFsoJ251bV9jb3JlcycsICdjb3JlX2NvdW50JyksICgnbXVsdGlwcm9jZXNzb3JfY291bnQnLCAnbXVsdGlwcm9jZXNzb3JfY291bnQnKV06XG4gICAgICAgICAgICBpZiBxdWVyeV9oZWxwIGFuZCAoJ1xcXCInICsgZmllbGQgKyAnXFxcIicpIGluIHF1ZXJ5X2hlbHA6XG4gICAgICAgICAgICAgICAgZ3B1W2tleV0gPSBudW1iZXIob3B0aW9uYWxfY29tbWFuZChbJ252aWRpYS1zbWknLCAnLS1pZD0nICsgcm93WzBdLCAnLS1xdWVyeS1ncHU9JyArIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1mb3JtYXQ9Y3N2LG5vaGVhZGVyLG5vdW5pdHMnXSkpXG4gICAgcmV0dXJuIHJlc3VsdFs6NjRdXG5cblxuZGVmIG5ldHdvcmtfaW52ZW50b3J5KCk6XG4gICAgb3V0cHV0ID0gb3B0aW9uYWxfY29tbWFuZChbJ2lwJywgJy1qc29uJywgJ2FkZHJlc3MnLCAnc2hvdyddKVxuICAgIGlmIG91dHB1dCBpcyBOb25lOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIHRyeTpcbiAgICAgICAgaW50ZXJmYWNlcyA9IGpzb24ubG9hZHMob3V0cHV0KVxuICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICByZXR1cm4gTm9uZVxuICAgIHJlc3VsdCA9IFtdXG4gICAgZm9yIGludGVyZmFjZSBpbiBpbnRlcmZhY2VzOlxuICAgICAgICBuYW1lID0gaW50ZXJmYWNlWydpZm5hbWUnXVxuICAgICAgICBwYXRoID0gUGF0aCgnL3N5cy9jbGFzcy9uZXQnKSAvIG5hbWVcbiAgICAgICAgZGV2aWNlID0gKHBhdGggLyAnZGV2aWNlJykucmVzb2x2ZSgpXG4gICAgICAgIGRldGFpbHMgPSBwY2lfZGV0YWlscyhkZXZpY2UpIGlmIChkZXZpY2UgLyAndmVuZG9yJykuZXhpc3RzKCkgZWxzZSBkaWN0KG1vZGVsPU5vbmUsIHZlbmRvcj1Ob25lKVxuICAgICAgICBjb25uZWN0aW9uID0gJ3dpZmknIGlmIChwYXRoIC8gJ3dpcmVsZXNzJykuZXhpc3RzKCkgZWxzZSAnZXRoZXJuZXQnIGlmIChwYXRoIC8gJ2RldmljZScpLmV4aXN0cygpIGVsc2UgJ3ZpcnR1YWwnXG4gICAgICAgIGRyaXZlciA9IChwYXRoIC8gJ2RldmljZS9kcml2ZXInKS5yZXNvbHZlKCkubmFtZSBpZiAocGF0aCAvICdkZXZpY2UvZHJpdmVyJykuZXhpc3RzKCkgZWxzZSBOb25lXG4gICAgICAgIGFkZHJlc3NlcyA9IFtkaWN0KGFkZHJlc3M9aXRlbVsnbG9jYWwnXSwgcHJlZml4X2xlbmd0aD1pdGVtWydwcmVmaXhsZW4nXSwgc2NvcGU9aXRlbS5nZXQoJ3Njb3BlJykpXG4gICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpbnRlcmZhY2UuZ2V0KCdhZGRyX2luZm8nLCBbXSkgaWYgaXRlbS5nZXQoJ2ZhbWlseScpIGluICgnaW5ldCcsICdpbmV0NicpXVxuICAgICAgICByZXN1bHQuYXBwZW5kKGRpY3QoZGV2aWNlX2tleT1uYW1lLCAqKmRldGFpbHMsIGRyaXZlcj1kcml2ZXIsIGNvbm5lY3Rpb25fdHlwZT1jb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjX2FkZHJlc3M9aW50ZXJmYWNlLmdldCgnYWRkcmVzcycpLCBsaW5rX3N0YXRlPWludGVyZmFjZS5nZXQoJ29wZXJzdGF0ZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWRfbWJwcz1udW1iZXIocmVhZF90ZXh0KHBhdGggLyAnc3BlZWQnKSksIG10dT1pbnRlcmZhY2UuZ2V0KCdtdHUnKSwgYWRkcmVzc2VzPWFkZHJlc3Nlc1s6MzJdKSlcbiAgICByZXR1cm4gcmVzdWx0Wzo2NF1cblxuXG5kZWYgY2lfcmVzZXJ2YXRpb24oKTpcbiAgICBwYXRoID0gUGF0aCgnL3N5cy9mcy9jZ3JvdXAvY2kuc2xpY2UvbWVtb3J5Lm1heCcpXG4gICAgdmFsdWUgPSBwYXRoLnJlYWRfdGV4dCgpLnN0cmlwKCkgaWYgcGF0aC5leGlzdHMoKSBlbHNlICcnXG4gICAgcmV0dXJuIGludCh2YWx1ZSkgaWYgdmFsdWUuaXNkaWdpdCgpIGVsc2UgTm9uZVxuXG5cbmRlZiBpbnZlbnRvcnkoKTpcbiAgICB0cnk6XG4gICAgICAgIHJlbGVhc2UgPSBwbGF0Zm9ybS5mcmVlZGVza3RvcF9vc19yZWxlYXNlKClcbiAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgcmVsZWFzZSA9IHt9XG4gICAgcmVzdWx0ID0gZGljdChob3N0bmFtZT1zb2NrZXQuZ2V0aG9zdG5hbWUoKSwgbWFudWZhY3R1cmVyPXJlYWRfdGV4dCgnL3N5cy9jbGFzcy9kbWkvaWQvc3lzX3ZlbmRvcicpLFxuICAgICAgICAgICAgICAgICAgaGFyZHdhcmVfbW9kZWw9cmVhZF90ZXh0KCcvc3lzL2NsYXNzL2RtaS9pZC9wcm9kdWN0X25hbWUnKSwgYXJjaGl0ZWN0dXJlPXBsYXRmb3JtLm1hY2hpbmUoKSxcbiAgICAgICAgICAgICAgICAgIG9zX25hbWU9cmVsZWFzZS5nZXQoJ05BTUUnKSwgb3NfdmVyc2lvbj1yZWxlYXNlLmdldCgnVkVSU0lPTl9JRCcpLCBrZXJuZWxfdmVyc2lvbj1wbGF0Zm9ybS5yZWxlYXNlKCksXG4gICAgICAgICAgICAgICAgICBjaV9tZW1vcnlfcmVzZXJ2ZWRfYnl0ZXM9Y2lfcmVzZXJ2YXRpb24oKSxcbiAgICAgICAgICAgICAgICAgIG1lbW9yeV9ieXRlcz1tZW1vcnkoKS5nZXQoJ01lbVRvdGFsJyksIGRpc2tfYnl0ZXM9c2h1dGlsLmRpc2tfdXNhZ2UoUk9PVCkudG90YWwsICoqY3B1X2ludmVudG9yeSgpKVxuICAgIGlmIEhPU1QuZ2V0KCdoYXJkd2FyZV9tb2RlbCcpOlxuICAgICAgICByZXN1bHRbJ21hbnVmYWN0dXJlciddID0gSE9TVC5nZXQoJ21hbnVmYWN0dXJlcicpIG9yIHJlc3VsdFsnbWFudWZhY3R1cmVyJ10gb3IgJ0FwcGxlJ1xuICAgICAgICByZXN1bHRbJ2hhcmR3YXJlX21vZGVsJ10gPSBIT1NUWydoYXJkd2FyZV9tb2RlbCddXG4gICAgZm9yIGtleSwgY29sbGVjdG9yIGluIFsoJ2Rpc2tzJywgZGlza19pbnZlbnRvcnkpLCAoJ2dwdXMnLCBncHVfaW52ZW50b3J5KSwgKCduZXR3b3JrX2ludGVyZmFjZXMnLCBuZXR3b3JrX2ludmVudG9yeSldOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICB2YWx1ZSA9IGNvbGxlY3RvcigpXG4gICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZTpcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlXG4gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgVmFsdWVFcnJvciwgS2V5RXJyb3IsIFR5cGVFcnJvcik6XG4gICAgICAgICAgICBwYXNzXG4gICAgcmV0dXJuIHJlc3VsdFxuXG5cbmRlZiBhcHBseV9ob3N0X3Bvd2VyKHJlc3VsdCk6XG4gICAgZm9yIGtleSBpbiAoJ2JhdHRlcnlfcHJlc2VudCcsICdhY19jb25uZWN0ZWQnLCAnYmF0dGVyeV9wZXJjZW50JywgJ2JhdHRlcnlfc3RhdHVzJywgJ2JhdHRlcnlfcmVtYWluaW5nX3NlY29uZHMnKTpcbiAgICAgICAgaWYgSE9TVC5nZXQoa2V5KSBpcyBub3QgTm9uZTpcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gSE9TVFtrZXldXG4gICAgcmV0dXJuIHJlc3VsdFxuXG5cbmRlZiBwb3dlcl9pbnZlbnRvcnkocm9vdD1QYXRoKCcvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseScpKTpcbiAgICByZXN1bHQgPSBkaWN0KGJhdHRlcnlfcHJlc2VudD1Ob25lLCBhY19jb25uZWN0ZWQ9Tm9uZSwgYmF0dGVyeV9wZXJjZW50PU5vbmUsXG4gICAgICAgICAgICAgICAgICBiYXR0ZXJ5X3N0YXR1cz1Ob25lLCBiYXR0ZXJ5X3JlbWFpbmluZ19zZWNvbmRzPU5vbmUsXG4gICAgICAgICAgICAgICAgICBwb3dlcl9wcm9maWxlPXJlYWRfdGV4dCgnL3N5cy9maXJtd2FyZS9hY3BpL3BsYXRmb3JtX3Byb2ZpbGUnKSlcbiAgICB0cnk6XG4gICAgICAgIHN1cHBsaWVzID0gbGlzdChyb290Lml0ZXJkaXIoKSlcbiAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgcmV0dXJuIGFwcGx5X2hvc3RfcG93ZXIocmVzdWx0KVxuICAgIGJhdHRlcmllcywgZXh0ZXJuYWwgPSBbXSwgW11cbiAgICBmb3Igc3VwcGx5IGluIHN1cHBsaWVzOlxuICAgICAgICBpZiByZWFkX3RleHQoc3VwcGx5IC8gJ3Njb3BlJykgPT0gJ0RldmljZSc6XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICBraW5kID0gcmVhZF90ZXh0KHN1cHBseSAvICd0eXBlJylcbiAgICAgICAgaWYga2luZCA9PSAnQmF0dGVyeScgYW5kIHJlYWRfdGV4dChzdXBwbHkgLyAncHJlc2VudCcpICE9ICcwJzpcbiAgICAgICAgICAgIGJhdHRlcmllcy5hcHBlbmQoc3VwcGx5KVxuICAgICAgICBlbGlmIGtpbmQgaW4gKCdNYWlucycsICdVU0InLCAnVVNCX0MnLCAnVVNCX1BEJywgJ1VTQl9QRF9EUlAnLCAnV2lyZWxlc3MnKTpcbiAgICAgICAgICAgIG9ubGluZSA9IHJlYWRfdGV4dChzdXBwbHkgLyAnb25saW5lJylcbiAgICAgICAgICAgIGlmIG9ubGluZSBpbiAoJzAnLCAnMScpOlxuICAgICAgICAgICAgICAgIGV4dGVybmFsLmFwcGVuZChvbmxpbmUgPT0gJzEnKVxuICAgIHJlc3VsdFsnYmF0dGVyeV9wcmVzZW50J10gPSBib29sKGJhdHRlcmllcylcbiAgICBpZiBleHRlcm5hbDpcbiAgICAgICAgcmVzdWx0WydhY19jb25uZWN0ZWQnXSA9IGFueShleHRlcm5hbClcbiAgICBwZXJjZW50YWdlcywgc3RhdHVzZXMsIHJ1bnRpbWVzID0gW10sIFtdLCBbXVxuICAgIGZvciBiYXR0ZXJ5IGluIGJhdHRlcmllczpcbiAgICAgICAgcGVyY2VudCA9IG51bWJlcihyZWFkX3RleHQoYmF0dGVyeSAvICdjYXBhY2l0eScpKVxuICAgICAgICBpZiBwZXJjZW50IGlzIG5vdCBOb25lIGFuZCBwZXJjZW50IDw9IDEwMDpcbiAgICAgICAgICAgIHBlcmNlbnRhZ2VzLmFwcGVuZChwZXJjZW50KVxuICAgICAgICBzdGF0dXMgPSByZWFkX3RleHQoYmF0dGVyeSAvICdzdGF0dXMnKVxuICAgICAgICBpZiBzdGF0dXM6XG4gICAgICAgICAgICBzdGF0dXNlcy5hcHBlbmQoc3RhdHVzKVxuICAgICAgICBpZiBzdGF0dXMgPT0gJ0Rpc2NoYXJnaW5nJzpcbiAgICAgICAgICAgIHNlY29uZHMgPSBudW1iZXIocmVhZF90ZXh0KGJhdHRlcnkgLyAndGltZV90b19lbXB0eV9ub3cnKSlcbiAgICAgICAgICAgIGVuZXJneSwgd2F0dHMgPSBudW1iZXIocmVhZF90ZXh0KGJhdHRlcnkgLyAnZW5lcmd5X25vdycpKSwgbnVtYmVyKHJlYWRfdGV4dChiYXR0ZXJ5IC8gJ3Bvd2VyX25vdycpKVxuICAgICAgICAgICAgaWYgc2Vjb25kcyBpcyBOb25lIGFuZCBlbmVyZ3kgaXMgbm90IE5vbmUgYW5kIHdhdHRzOlxuICAgICAgICAgICAgICAgIHNlY29uZHMgPSBlbmVyZ3kgLyB3YXR0cyAqIDM2MDBcbiAgICAgICAgICAgIGlmIHNlY29uZHMgaXMgbm90IE5vbmU6XG4gICAgICAgICAgICAgICAgcnVudGltZXMuYXBwZW5kKGludChzZWNvbmRzKSlcbiAgICByZXN1bHRbJ2JhdHRlcnlfcGVyY2VudCddID0gbWluKHBlcmNlbnRhZ2VzLCBkZWZhdWx0PU5vbmUpXG4gICAgcmVzdWx0WydiYXR0ZXJ5X3JlbWFpbmluZ19zZWNvbmRzJ10gPSBtaW4ocnVudGltZXMsIGRlZmF1bHQ9Tm9uZSlcbiAgICByZXN1bHRbJ2JhdHRlcnlfc3RhdHVzJ10gPSAnRGlzY2hhcmdpbmcnIGlmICdEaXNjaGFyZ2luZycgaW4gc3RhdHVzZXMgZWxzZSBzdGF0dXNlc1swXSBpZiBzdGF0dXNlcyBlbHNlIE5vbmVcbiAgICBpZiByZXN1bHRbJ2FjX2Nvbm5lY3RlZCddIGlzIE5vbmUgYW5kICdEaXNjaGFyZ2luZycgaW4gc3RhdHVzZXM6XG4gICAgICAgIHJlc3VsdFsnYWNfY29ubmVjdGVkJ10gPSBGYWxzZVxuICAgIHJldHVybiBhcHBseV9ob3N0X3Bvd2VyKHJlc3VsdClcblxuXG5kZWYgdXBsaW5rX2tpbmQod2lmaSwgaWZhY2UpOlxuICAgIGlmIHdpZmk6XG4gICAgICAgIHJldHVybiAnd2lmaSdcbiAgICBpZiBpZmFjZTpcbiAgICAgICAgcmV0dXJuICdldGhlcm5ldCdcbiAgICByZXR1cm4gJ3Vua25vd24nXG5cblxuZGVmIGlzb19mcm9tX3VuaXgodmFsdWUpOlxuICAgIHRyeTpcbiAgICAgICAgc3RhbXAgPSBmbG9hdCh2YWx1ZSlcbiAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgaWYgc3RhbXAgPD0gMDpcbiAgICAgICAgcmV0dXJuIE5vbmVcbiAgICByZXR1cm4gdGltZS5zdHJmdGltZSgnJVktJW0tJWRUJUg6JU06JVNaJywgdGltZS5nbXRpbWUoc3RhbXApKVxuXG5cbmRlZiBmYWlsZWRfdXBsaW5rKGtpbmQ9J3Vua25vd24nKTpcbiAgICByZXR1cm4ge1xuICAgICAgICAndXBsaW5rX2tpbmQnOiBraW5kLFxuICAgICAgICAndXBsaW5rX3Byb2JlX29rJzogRmFsc2UsXG4gICAgICAgICd1cGxpbmtfcHJvYmVfYnBzJzogMCxcbiAgICAgICAgJ3VwbGlua19wcm9iZWRfYXQnOiB0aW1lLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolU1onLCB0aW1lLmdtdGltZSgpKSxcbiAgICB9XG5cblxuZGVmIG9wdGlvbmFsX2Jvb2woYm9keSwga2V5KTpcbiAgICB2YWx1ZSA9IGJvZHkuZ2V0KGtleSlcbiAgICByZXR1cm4gdmFsdWUgaWYgdmFsdWUgaW4gKFRydWUsIEZhbHNlKSBlbHNlIE5vbmVcblxuXG5kZWYgYXBwbHlfaG9zdF9mcm9tX2hlbHBlcihib2R5KTpcbiAgICBtb2RlbCA9IGJvZHkuZ2V0KCdoYXJkd2FyZV9tb2RlbCcpXG4gICAgaWYgaXNpbnN0YW5jZShtb2RlbCwgc3RyKSBhbmQgbW9kZWwuc3RyaXAoKTpcbiAgICAgICAgSE9TVFsnaGFyZHdhcmVfbW9kZWwnXSA9IG1vZGVsLnN0cmlwKClbOjI1NV1cbiAgICAgICAgbWFudWZhY3R1cmVyID0gYm9keS5nZXQoJ21hbnVmYWN0dXJlcicpXG4gICAgICAgIEhPU1RbJ21hbnVmYWN0dXJlciddID0gbWFudWZhY3R1cmVyLnN0cmlwKClbOjI1NV0gaWYgaXNpbnN0YW5jZShtYW51ZmFjdHVyZXIsIHN0cikgYW5kIG1hbnVmYWN0dXJlci5zdHJpcCgpIGVsc2UgJ0FwcGxlJ1xuICAgIGZvciBrZXkgaW4gKCdiYXR0ZXJ5X3ByZXNlbnQnLCAnYWNfY29ubmVjdGVkJyk6XG4gICAgICAgIHZhbHVlID0gb3B0aW9uYWxfYm9vbChib2R5LCBrZXkpXG4gICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOlxuICAgICAgICAgICAgSE9TVFtrZXldID0gdmFsdWVcbiAgICBwZXJjZW50ID0gYm9keS5nZXQoJ2JhdHRlcnlfcGVyY2VudCcpXG4gICAgaWYgaXNpbnN0YW5jZShwZXJjZW50LCAoaW50LCBmbG9hdCkpIGFuZCAwIDw9IHBlcmNlbnQgPD0gMTAwOlxuICAgICAgICBIT1NUWydiYXR0ZXJ5X3BlcmNlbnQnXSA9IGludChwZXJjZW50KVxuICAgIHN0YXR1cyA9IGJvZHkuZ2V0KCdiYXR0ZXJ5X3N0YXR1cycpXG4gICAgaWYgaXNpbnN0YW5jZShzdGF0dXMsIHN0cikgYW5kIHN0YXR1cy5zdHJpcCgpOlxuICAgICAgICBIT1NUWydiYXR0ZXJ5X3N0YXR1cyddID0gc3RhdHVzLnN0cmlwKClbOjI1NV1cblxuXG5kZWYgcmVhZF9oZWxwZXJfdXBsaW5rKCk6XG4gICAgcGFyc2VkID0gc3RvcmFnZV9wcm94eSgpXG4gICAgY29ubmVjdGlvbiA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKHBhcnNlZC5ob3N0bmFtZSwgcGFyc2VkLnBvcnQgb3IgODAsIHRpbWVvdXQ9MTUpXG4gICAgdHJ5OlxuICAgICAgICBjb25uZWN0aW9uLnJlcXVlc3QoJ0dFVCcsICcvdXBsaW5rJylcbiAgICAgICAgcmVzcG9uc2UgPSBjb25uZWN0aW9uLmdldHJlc3BvbnNlKClcbiAgICAgICAgcmF3ID0gcmVzcG9uc2UucmVhZCg2NTUzNylcbiAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzICE9IDIwMCBvciBsZW4ocmF3KSA+IDY1NTM2OlxuICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigndXBsaW5rIHByb2JlIHVuYXZhaWxhYmxlJylcbiAgICAgICAgYm9keSA9IGpzb24ubG9hZHMocmF3LmRlY29kZSgpKVxuICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShib2R5LCBkaWN0KTpcbiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ3VwbGluayBwcm9iZSB1bmF2YWlsYWJsZScpXG4gICAgICAgIGFwcGx5X2hvc3RfZnJvbV9oZWxwZXIoYm9keSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICd1cGxpbmtfa2luZCc6IHVwbGlua19raW5kKGJvb2woYm9keS5nZXQoJ3dpZmknKSksIGJvZHkuZ2V0KCdpZmFjZScpKSxcbiAgICAgICAgICAgICd1cGxpbmtfcHJvYmVfb2snOiBib2R5LmdldCgnb2snKSBpcyBUcnVlLFxuICAgICAgICAgICAgJ3VwbGlua19wcm9iZV9icHMnOiBpbnQoYm9keS5nZXQoJ2JwcycpIG9yIDApLFxuICAgICAgICAgICAgJ3VwbGlua19wcm9iZWRfYXQnOiBpc29fZnJvbV91bml4KGJvZHkuZ2V0KCdwcm9iZWRfYXQnKSksXG4gICAgICAgIH1cbiAgICBmaW5hbGx5OlxuICAgICAgICBjb25uZWN0aW9uLmNsb3NlKClcblxuXG5kZWYgcHJvYmVfY2xvdWRmbGFyZV91cGxpbmsoKTpcbiAgICBzdGFydGVkID0gdGltZS5tb25vdG9uaWMoKVxuICAgIHBheWxvYWQgPSBiJ1xcMCcgKiBQUk9CRV9CWVRFU1xuICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KClcbiAgICBjdHgubWluaW11bV92ZXJzaW9uID0gc3NsLlRMU1ZlcnNpb24uVExTdjFfMlxuICAgIGNvbm4gPSBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oUFJPQkVfSE9TVCwgNDQzLCB0aW1lb3V0PVBST0JFX1RJTUVPVVQsIGNvbnRleHQ9Y3R4KVxuICAgIHRyeTpcbiAgICAgICAgY29ubi5yZXF1ZXN0KCdQVVQnLCBQUk9CRV9QQVRILCBib2R5PXBheWxvYWQsIGhlYWRlcnM9eydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pXG4gICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpXG4gICAgICAgIHJlc3BvbnNlLnJlYWQoKVxuICAgICAgICBlbGFwc2VkID0gbWF4KHRpbWUubW9ub3RvbmljKCkgLSBzdGFydGVkLCAwLjAwMSlcbiAgICAgICAgb2sgPSByZXNwb25zZS5zdGF0dXMgaW4gKDIwMCwgNDAzKVxuICAgICAgICByZXR1cm4gb2ssIGludChQUk9CRV9CWVRFUyAvIGVsYXBzZWQpIGlmIG9rIGVsc2UgMFxuICAgIGV4Y2VwdCAoT1NFcnJvciwgc3NsLlNTTEVycm9yLCBodHRwLmNsaWVudC5IVFRQRXhjZXB0aW9uLCBWYWx1ZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlLCAwXG4gICAgZmluYWxseTpcbiAgICAgICAgY29ubi5jbG9zZSgpXG5cblxuZGVmIHJlZnJlc2hfdXBsaW5rKGZvcmNlPUZhbHNlKTpcbiAgICBnbG9iYWwgVVBMSU5LX0FUXG4gICAgbm93ID0gdGltZS5tb25vdG9uaWMoKVxuICAgIHByb3h5ID0gc3RvcmFnZV9wcm94eSgpXG4gICAgd2l0aCBVUExJTktfTE9DSzpcbiAgICAgICAgaWYgbm90IGZvcmNlIGFuZCBub3QgcHJveHkgYW5kIFVQTElOS1sndXBsaW5rX3Byb2JlZF9hdCddIGFuZCBub3cgLSBVUExJTktfQVQgPCBVUExJTktfSU5URVJWQUw6XG4gICAgICAgICAgICByZXR1cm4gZGljdChVUExJTkspXG4gICAgdHJ5OlxuICAgICAgICBpZiBwcm94eTpcbiAgICAgICAgICAgIHN0YXRlID0gcmVhZF9oZWxwZXJfdXBsaW5rKClcbiAgICAgICAgZWxzZTpcbiAgICAgICAgICAgIG9rLCBicHMgPSBwcm9iZV9jbG91ZGZsYXJlX3VwbGluaygpXG4gICAgICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAndXBsaW5rX2tpbmQnOiB1cGxpbmtfa2luZCh3aWZpX2RlZmF1bHRfcm91dGUoKSwgVHJ1ZSksXG4gICAgICAgICAgICAgICAgJ3VwbGlua19wcm9iZV9vayc6IG9rLFxuICAgICAgICAgICAgICAgICd1cGxpbmtfcHJvYmVfYnBzJzogYnBzLFxuICAgICAgICAgICAgICAgICd1cGxpbmtfcHJvYmVkX2F0JzogdGltZS5zdHJmdGltZSgnJVktJW0tJWRUJUg6JU06JVNaJywgdGltZS5nbXRpbWUoKSksXG4gICAgICAgICAgICB9XG4gICAgZXhjZXB0IEV4Y2VwdGlvbjpcbiAgICAgICAgc3RhdGUgPSBmYWlsZWRfdXBsaW5rKCd1bmtub3duJyBpZiBwcm94eSBlbHNlIHVwbGlua19raW5kKHdpZmlfZGVmYXVsdF9yb3V0ZSgpLCBUcnVlKSlcbiAgICB3aXRoIFVQTElOS19MT0NLOlxuICAgICAgICBVUExJTksudXBkYXRlKHN0YXRlKVxuICAgICAgICBVUExJTktfQVQgPSBub3dcbiAgICAgICAgcmV0dXJuIGRpY3QoVVBMSU5LKVxuXG5cbmRlZiB0ZWxlbWV0cnkoKTpcbiAgICByZXR1cm4gZGljdChsb2FkX2F2ZXJhZ2U9bGlzdChvcy5nZXRsb2FkYXZnKCkpLCBtZW1vcnlfYXZhaWxhYmxlX2J5dGVzPW1lbW9yeSgpLmdldCgnTWVtQXZhaWxhYmxlJyksXG4gICAgICAgICAgICAgICAgZGlza19mcmVlX2J5dGVzPXNodXRpbC5kaXNrX3VzYWdlKFJPT1QpLmZyZWUsXG4gICAgICAgICAgICAgICAgc2NyYXRjaF9mcmVlX2J5dGVzPXNodXRpbC5kaXNrX3VzYWdlKFNDUkFUQ0gpLmZyZWUsXG4gICAgICAgICAgICAgICAgdXB0aW1lX3NlY29uZHM9aW50KGZsb2F0KFBhdGgoJy9wcm9jL3VwdGltZScpLnJlYWRfdGV4dCgpLnNwbGl0KClbMF0pKSxcbiAgICAgICAgICAgICAgICAqKnJlYWRfanNvbihST09UIC8gJ21ldHJpY3MuanNvbicsIHt9KSwgKipwb3dlcl9pbnZlbnRvcnkoKSwgKipyZWZyZXNoX3VwbGluaygpKVxuXG5cbmNsYXNzIEFQSTpcbiAgICBkZWYgX19pbml0X18oc2VsZik6XG4gICAgICAgIHNlbGYuaWRlbnRpdHkgPSByZWFkX2pzb24oUk9PVCAvICdpZGVudGl0eS5qc29uJylcbiAgICAgICAgc2VsZi5vcmlnaW4gPSBzZWxmLmlkZW50aXR5WydvcmlnaW4nXS5yc3RyaXAoJy8nKVxuICAgICAgICBwYXJzZWQgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQoc2VsZi5vcmlnaW4pXG4gICAgICAgIGlmIHBhcnNlZC5zY2hlbWUgIT0gJ2h0dHBzJyBvciBwYXJzZWQudXNlcm5hbWUgb3IgcGFyc2VkLnF1ZXJ5IG9yIHBhcnNlZC5mcmFnbWVudCBvciBwYXJzZWQucGF0aDpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1dvcmtlciBvcmlnaW4gbXVzdCBiZSBhbiBIVFRQUyBvcmlnaW4nKVxuXG4gICAgZGVmIHdvcmtlcl9pZChzZWxmKTpcbiAgICAgICAgcmV0dXJuIHN0cihzZWxmLmlkZW50aXR5LmdldCgnd29ya2VyX2lkJykgb3Igc2VsZi5pZGVudGl0eVsnaWQnXSlcblxuICAgIGRlZiBwb3N0KHNlbGYsIHBhdGgsIHBheWxvYWQpOlxuICAgICAgICByZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdChzZWxmLm9yaWdpbiArICcvYXBpL3YxLycgKyBwYXRoLFxuICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMocGF5bG9hZCkuZW5jb2RlKCksIGhlYWRlcnM9eydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgc2VsZi5pZGVudGl0eVsndG9rZW4nXSxcbiAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBCUk9XU0VSX1VBLFxuICAgICAgICAgICAgICAgICAgICAnbmdyb2stc2tpcC1icm93c2VyLXdhcm5pbmcnOiAnMSd9LCBtZXRob2Q9J1BPU1QnKVxuICAgICAgICB3aXRoIFBPU1RfTE9DSzpcbiAgICAgICAgICAgIHdpdGggSFRUUC5vcGVuKHJlcXVlc3QsIHRpbWVvdXQ9MTUpIGFzIHJlc3BvbnNlOlxuICAgICAgICAgICAgICAgIGJvZHkgPSByZXNwb25zZS5yZWFkKDY1NTM3KVxuICAgICAgICAgICAgICAgIGlmIGxlbihib2R5KSA+IDY1NTM2OlxuICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDb250cm9sIHJlc3BvbnNlIHRvbyBsYXJnZScpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMoYm9keSlcblxuXG5NQVhfVEFTS1MgPSAzMlxuXG5cbmRlZiBzbG90X2NvdW50KGNvbmZpZyk6XG4gICAgcmV0dXJuIG1heChpbnQoKGNvbmZpZyBvciB7fSkuZ2V0KCdzbG90cycpIG9yIDEpLCAxKVxuXG5cbmRlZiBqb2JfY29uZmlnKGNvbmZpZywgdGFzaz1Ob25lKTpcbiAgICB0YXNrID0gdGFzayBvciB7fVxuICAgIG1lbW9yeSA9IGludCh0YXNrLmdldCgnbWVtb3J5X21iJykgb3IgMClcbiAgICBjcHVzID0gZmxvYXQodGFzay5nZXQoJ2NwdXMnKSBvciAwKVxuICAgIHNjcmF0Y2ggPSBpbnQodGFzay5nZXQoJ3NjcmF0Y2hfbWInKSBvciAwKVxuICAgIGlmIG1lbW9yeSBhbmQgY3B1czpcbiAgICAgICAgbGltaXRzID0gZGljdChjb25maWcsIG1lbW9yeV9tYj1tZW1vcnksIGNwdXM9Y3B1cylcbiAgICAgICAgaWYgc2NyYXRjaDpcbiAgICAgICAgICAgIGxpbWl0c1snc2NyYXRjaF9tYiddID0gc2NyYXRjaFxuICAgICAgICByZXR1cm4gbGltaXRzXG4gICAgc2xvdHMgPSBzbG90X2NvdW50KGNvbmZpZylcbiAgICByZXR1cm4gZGljdChjb25maWcsIG1lbW9yeV9tYj1tYXgoaW50KGNvbmZpZ1snbWVtb3J5X21iJ10pIC8vIHNsb3RzLCA1MTIpLFxuICAgICAgICAgICAgICAgIHNjcmF0Y2hfbWI9bWF4KGludChjb25maWdbJ3NjcmF0Y2hfbWInXSkgLy8gc2xvdHMsIDI1NiksXG4gICAgICAgICAgICAgICAgY3B1cz1tYXgocm91bmQoZmxvYXQoY29uZmlnWydjcHVzJ10pIC8gc2xvdHMsIDIpLCAwLjI1KSlcblxuXG5kZWYgZHJvcF90YXNrKHRhc2spOlxuICAgIFRBU0tTWzpdID0gW2l0ZW0gZm9yIGl0ZW0gaW4gVEFTS1MgaWYgaXRlbS5nZXQoJ2lkJykgIT0gdGFzay5nZXQoJ2lkJykgb3IgaXRlbS5nZXQoJ2F0dGVtcHQnKSAhPSB0YXNrLmdldCgnYXR0ZW1wdCcpXVxuXG5cbmRlZiBoZWFydGJlYXQoYXBpKTpcbiAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgIHJlcG9ydCA9IGRpY3QoUkVQT1JUKVxuICAgICAgICB0YXNrcyA9IFt7J2lkJzogaXRlbVsnaWQnXSwgJ2F0dGVtcHQnOiBpdGVtWydhdHRlbXB0J119IGZvciBpdGVtIGluIFRBU0tTXVxuICAgICAgICBsb2dzID0gbGlzdChMT0dTKVxuICAgIGlmIHRhc2tzOlxuICAgICAgICByZXBvcnRbJ3Rhc2tzJ10gPSB0YXNrc1xuICAgICAgICByZXBvcnQudXBkYXRlKHRhc2tfaWQ9dGFza3NbMF1bJ2lkJ10sIGF0dGVtcHQ9dGFza3NbMF1bJ2F0dGVtcHQnXSlcbiAgICByZXBvcnRbJ3RlbGVtZXRyeSddID0gdGVsZW1ldHJ5KClcbiAgICBpZiBIT1NULmdldCgnaGFyZHdhcmVfbW9kZWwnKTpcbiAgICAgICAgaGFyZHdhcmUgPSBkaWN0KHJlcG9ydC5nZXQoJ2hhcmR3YXJlJykgb3Ige30pXG4gICAgICAgIGhhcmR3YXJlWydtYW51ZmFjdHVyZXInXSA9IEhPU1QuZ2V0KCdtYW51ZmFjdHVyZXInKSBvciBoYXJkd2FyZS5nZXQoJ21hbnVmYWN0dXJlcicpIG9yICdBcHBsZSdcbiAgICAgICAgaGFyZHdhcmVbJ2hhcmR3YXJlX21vZGVsJ10gPSBIT1NUWydoYXJkd2FyZV9tb2RlbCddXG4gICAgICAgIHJlcG9ydFsnaGFyZHdhcmUnXSA9IGhhcmR3YXJlXG4gICAgcmVwb3J0Wydsb2dzJ10gPSBsb2dzXG4gICAgcmVzcG9uc2UgPSBhcGkucG9zdCgnd29ya2Vycy8nICsgYXBpLndvcmtlcl9pZCgpICsgJy9oZWFydGJlYXQnLCByZXBvcnQpXG4gICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICBDT05UUk9MLmNsZWFyKClcbiAgICAgICAgQ09OVFJPTC51cGRhdGUocmVzcG9uc2UpXG4gICAgcmV0dXJuIHJlc3BvbnNlXG5cblxuZGVmIGhlYXJ0YmVhdF9sb29wKGFwaSk6XG4gICAgaW52ZW50b3J5X2F0ID0gdGltZS5tb25vdG9uaWMoKVxuICAgIHdoaWxlIG5vdCBTVE9QLndhaXQoMTUpOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBpZiB0aW1lLm1vbm90b25pYygpIC0gaW52ZW50b3J5X2F0ID49IDMwMDpcbiAgICAgICAgICAgICAgICBoYXJkd2FyZSA9IGludmVudG9yeSgpXG4gICAgICAgICAgICAgICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICAgICAgICAgICAgICBSRVBPUlRbJ2hhcmR3YXJlJ10gPSBoYXJkd2FyZVxuICAgICAgICAgICAgICAgIGludmVudG9yeV9hdCA9IHRpbWUubW9ub3RvbmljKClcbiAgICAgICAgICAgIGhlYXJ0YmVhdChhcGkpXG4gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246XG4gICAgICAgICAgICAjIE5vIHRhc2sgcGF5bG9hZHMsIFVSTHMgb3IgZXhjZXB0aW9uIG1lc3NhZ2VzIGVudGVyIHBlcnNpc3RlbnQgbG9ncy5cbiAgICAgICAgICAgIG5vdGUoJ1dvcmtlciBoZWFydGJlYXQgdW5hdmFpbGFibGUnKVxuXG5cbiMgdXJsbGliIHdyYXBzIFRMUyByZXNldHMgYXMgVVJMRXJyb3I7IFNTTENlcnRWZXJpZmljYXRpb25FcnJvciBpcyBTU0xFcnJvciBhbmQgbXVzdCBub3QgcmV0cnkuXG5UUkFOU0lFTlRfSFRUUCA9IChDb25uZWN0aW9uUmVzZXRFcnJvciwgQnJva2VuUGlwZUVycm9yLCBDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvcixcbiAgICAgICAgICAgICAgICAgIGh0dHAuY2xpZW50LkluY29tcGxldGVSZWFkLCBodHRwLmNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWQsIHNzbC5TU0xFcnJvcilcblNFVFVQX1NFQ09ORFMgPSAyMTBcbiMgQnVyc3QgUFVUcyBvbiBXaS1GaSBmYWlsIFRMUyBNQUMgY2hlY2tzIGF0IENsb3VkZmxhcmUuIEV0aGVybmV0IGlzIGxlZnQgdW5jYXBwZWQuXG5ERUZBVUxUX1VQTE9BRF9CUFMgPSAyICogMTAyNCAqIDEwMjRcblxuXG5kZWYgY29tbWFuZF9vdXRwdXQoYXJncyk6XG4gICAgdHJ5OlxuICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5ydW4oYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD01LCBjaGVjaz1GYWxzZSkuc3Rkb3V0LmRlY29kZShlcnJvcnM9J3JlcGxhY2UnKVxuICAgIGV4Y2VwdCAoT1NFcnJvciwgc3VicHJvY2Vzcy5TdWJwcm9jZXNzRXJyb3IpOlxuICAgICAgICByZXR1cm4gJydcblxuXG5kZWYgcGFyc2Vfcm91dGVfaW50ZXJmYWNlKHRleHQpOlxuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBzdHJpcHBlZCA9IGxpbmUuc3RyaXAoKVxuICAgICAgICBpZiBzdHJpcHBlZC5zdGFydHN3aXRoKCdpbnRlcmZhY2U6Jyk6XG4gICAgICAgICAgICByZXR1cm4gc3RyaXBwZWQuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpIG9yIE5vbmVcbiAgICByZXR1cm4gTm9uZVxuXG5cbmRlZiBwYXJzZV93aWZpX2RldmljZXModGV4dCk6XG4gICAgZGV2aWNlcyA9IHNldCgpXG4gICAgcG9ydCA9ICcnXG4gICAgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKCk6XG4gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnSGFyZHdhcmUgUG9ydDonKTpcbiAgICAgICAgICAgIHBvcnQgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKS5sb3dlcigpXG4gICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdEZXZpY2U6JykgYW5kIHBvcnQ6XG4gICAgICAgICAgICBpZiAnd2ktZmknIGluIHBvcnQgb3IgcG9ydCBpbiAoJ3dpZmknLCAnYWlycG9ydCcsICd3bGFuJyk6XG4gICAgICAgICAgICAgICAgZGV2aWNlcy5hZGQobGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkpXG4gICAgICAgICAgICBwb3J0ID0gJydcbiAgICByZXR1cm4gZGV2aWNlc1xuXG5cbmRlZiBwYXJzZV9pcF9kZWZhdWx0X2Rldih0ZXh0KTpcbiAgICBiZXN0ID0gTm9uZVxuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoKVxuICAgICAgICBpZiBub3QgcGFydHMgb3IgcGFydHNbMF0gIT0gJ2RlZmF1bHQnIG9yICdkZXYnIG5vdCBpbiBwYXJ0czpcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGlmYWNlID0gcGFydHNbcGFydHMuaW5kZXgoJ2RldicpICsgMV1cbiAgICAgICAgaWYgbm90IGlmYWNlOlxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgbWV0cmljID0gaW50KHBhcnRzW3BhcnRzLmluZGV4KCdtZXRyaWMnKSArIDFdKVxuICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IpOlxuICAgICAgICAgICAgbWV0cmljID0gMFxuICAgICAgICBpZiBiZXN0IGlzIE5vbmUgb3IgbWV0cmljIDwgYmVzdFswXTpcbiAgICAgICAgICAgIGJlc3QgPSAobWV0cmljLCBpZmFjZSlcbiAgICByZXR1cm4gTm9uZSBpZiBiZXN0IGlzIE5vbmUgZWxzZSBiZXN0WzFdXG5cblxuZGVmIHdpZmlfZGVmYXVsdF9yb3V0ZSgpOlxuICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzpcbiAgICAgICAgaWZhY2UgPSBwYXJzZV9yb3V0ZV9pbnRlcmZhY2UoY29tbWFuZF9vdXRwdXQoWycvc2Jpbi9yb3V0ZScsICctbicsICdnZXQnLCAnZGVmYXVsdCddKSlcbiAgICAgICAgcmV0dXJuIGJvb2woaWZhY2UpIGFuZCBpZmFjZSBpbiBwYXJzZV93aWZpX2RldmljZXMoY29tbWFuZF9vdXRwdXQoWycvdXNyL3NiaW4vbmV0d29ya3NldHVwJywgJy1saXN0YWxsaGFyZHdhcmVwb3J0cyddKSlcbiAgICB0ZXh0ID0gY29tbWFuZF9vdXRwdXQoWydpcCcsICctNCcsICctbycsICdyb3V0ZScsICdzaG93JywgJ2RlZmF1bHQnXSkgb3IgY29tbWFuZF9vdXRwdXQoWydpcCcsICctbycsICdyb3V0ZScsICdzaG93JywgJ2RlZmF1bHQnXSlcbiAgICBpZmFjZSA9IHBhcnNlX2lwX2RlZmF1bHRfZGV2KHRleHQpXG4gICAgcmV0dXJuIGJvb2woaWZhY2UpIGFuZCBQYXRoKCcvc3lzL2NsYXNzL25ldC8lcy93aXJlbGVzcycgJSBpZmFjZSkuaXNfZGlyKClcblxuXG5kZWYgdXBsb2FkX2JwcyhlbnZpcm9uPU5vbmUsIHdpZmk9Tm9uZSk6XG4gICAgZW52aXJvbiA9IG9zLmVudmlyb24gaWYgZW52aXJvbiBpcyBOb25lIGVsc2UgZW52aXJvblxuICAgIGlmICdER0VfU1RPUkFHRV9VUExPQURfQlBTJyBpbiBlbnZpcm9uOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICB2YWx1ZSA9IGludChzdHIoZW52aXJvbi5nZXQoJ0RHRV9TVE9SQUdFX1VQTE9BRF9CUFMnKSkuc3RyaXAoKSlcbiAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycm9yOlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignREdFX1NUT1JBR0VfVVBMT0FEX0JQUyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXInKSBmcm9tIGVycm9yXG4gICAgICAgIGlmIHZhbHVlIDwgMDpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0RHRV9TVE9SQUdFX1VQTE9BRF9CUFMgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyJylcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgaWYgd2lmaSBpZiB3aWZpIGlzIG5vdCBOb25lIGVsc2Ugd2lmaV9kZWZhdWx0X3JvdXRlKCk6XG4gICAgICAgIHJldHVybiBERUZBVUxUX1VQTE9BRF9CUFNcbiAgICByZXR1cm4gMFxuXG5cbmRlZiBzZW5kX2JvZHkoY29ubmVjdGlvbiwgc291cmNlLCBkZWFkbGluZSwgc2xlZXA9dGltZS5zbGVlcCwgY2xvY2s9dGltZS5tb25vdG9uaWMpOlxuICAgIGJwcyA9IHVwbG9hZF9icHMoKVxuICAgIGNodW5rX3NpemUgPSA2NTUzNiBpZiBicHMgZWxzZSAxMDI0ICogMTAyNFxuICAgIHN0YXJ0ZWQgPSBjbG9jaygpXG4gICAgc2VudCA9IDBcbiAgICB3aXRoIHNvdXJjZS5vcGVuKCdyYicpIGFzIGZpbGU6XG4gICAgICAgIHdoaWxlIGNodW5rIDo9IGZpbGUucmVhZChjaHVua19zaXplKTpcbiAgICAgICAgICAgIGlmIGNsb2NrKCkgPiBkZWFkbGluZTpcbiAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IoJ1Rhc2sgZGVhZGxpbmUgZXhjZWVkZWQnKVxuICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKGNodW5rKVxuICAgICAgICAgICAgc2VudCArPSBsZW4oY2h1bmspXG4gICAgICAgICAgICBpZiBub3QgYnBzOlxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB3YWl0ID0gc3RhcnRlZCArIChzZW50IC8gYnBzKSAtIGNsb2NrKClcbiAgICAgICAgICAgIGlmIHdhaXQgPiAwOlxuICAgICAgICAgICAgICAgIHNsZWVwKHdhaXQpXG5cblxuZGVmIHVud3JhcF9odHRwKGVycm9yKTpcbiAgICBpZiBpc2luc3RhbmNlKGVycm9yLCB1cmxsaWIuZXJyb3IuSFRUUEVycm9yKTpcbiAgICAgICAgcmV0dXJuIGVycm9yXG4gICAgaWYgaXNpbnN0YW5jZShlcnJvciwgdXJsbGliLmVycm9yLlVSTEVycm9yKSBhbmQgZXJyb3IucmVhc29uIGlzIG5vdCBOb25lOlxuICAgICAgICByZXR1cm4gdW53cmFwX2h0dHAoZXJyb3IucmVhc29uKVxuICAgIHJldHVybiBlcnJvclxuXG5cbmRlZiB0cmFuc2llbnRfaHR0cChkZWFkbGluZSwgd29yaywgcGF1c2U9dGltZS5zbGVlcCk6XG4gICAgZXJyb3IgPSBOb25lXG4gICAgZm9yIGF0dGVtcHQgaW4gcmFuZ2UoMyk6XG4gICAgICAgIGlmIHRpbWUubW9ub3RvbmljKCkgPiBkZWFkbGluZTpcbiAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcignVGFzayBkZWFkbGluZSBleGNlZWRlZCcpXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHJldHVybiB3b3JrKClcbiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBjYXVnaHQ6XG4gICAgICAgICAgICByZWFzb24gPSB1bndyYXBfaHR0cChjYXVnaHQpXG4gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlYXNvbiwgc3NsLlNTTENlcnRWZXJpZmljYXRpb25FcnJvcikgb3Igbm90IGlzaW5zdGFuY2UocmVhc29uLCBUUkFOU0lFTlRfSFRUUCk6XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIGlmIHRpbWUubW9ub3RvbmljKCkgPiBkZWFkbGluZSBvciBzdHIocmVhc29uKSA9PSAnVGFzayBkZWFkbGluZSBleGNlZWRlZCc6XG4gICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yKCdUYXNrIGRlYWRsaW5lIGV4Y2VlZGVkJykgZnJvbSBjYXVnaHRcbiAgICAgICAgICAgIGVycm9yID0gY2F1Z2h0XG4gICAgICAgICAgICBwYXVzZShtaW4oMiAqKiBhdHRlbXB0LCA0KSlcbiAgICByYWlzZSBlcnJvclxuXG5cbmRlZiBkb3dubG9hZCh1cmwsIHRhcmdldCwgc2l6ZSwgY2hlY2tzdW0sIGRlYWRsaW5lKTpcbiAgICBpZiB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKS5zY2hlbWUgIT0gJ2h0dHBzJzpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU3RvcmFnZSByZXF1aXJlcyBIVFRQUycpXG4gICAgbGltaXQgPSBzaXplIGlmIHNpemUgaXMgbm90IE5vbmUgZWxzZSA1MCAqIDEwMjQgKiAxMDI0XG5cbiAgICBkZWYgcHVsbCgpOlxuICAgICAgICBkaWdlc3QgPSBoYXNobGliLm1kNSgpXG4gICAgICAgIHRvdGFsID0gMFxuICAgICAgICB3aXRoIHN0b3JhZ2VfZ2V0KHVybCkgYXMgcmVzcG9uc2UsIHRhcmdldC5vcGVuKCd3YicpIGFzIG91dHB1dDpcbiAgICAgICAgICAgIHdoaWxlIGNodW5rIDo9IHJlc3BvbnNlLnJlYWQoMTAyNCAqIDEwMjQpOlxuICAgICAgICAgICAgICAgIGlmIHRpbWUubW9ub3RvbmljKCkgPiBkZWFkbGluZTpcbiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yKCdUYXNrIGRlYWRsaW5lIGV4Y2VlZGVkJylcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBsZW4oY2h1bmspXG4gICAgICAgICAgICAgICAgaWYgdG90YWwgPiBsaW1pdDpcbiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5wdXQgZXhjZWVkcyBkZWNsYXJlZCBzaXplJylcbiAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoY2h1bmspXG4gICAgICAgICAgICAgICAgZGlnZXN0LnVwZGF0ZShjaHVuaylcbiAgICAgICAgZW5jb2RlZCA9IGJhc2U2NC5iNjRlbmNvZGUoZGlnZXN0LmRpZ2VzdCgpKS5kZWNvZGUoKVxuICAgICAgICBpZiBzaXplIGlzIG5vdCBOb25lIGFuZCB0b3RhbCAhPSBzaXplOlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5wdXQgY2hlY2tzdW0gbWlzbWF0Y2gnKVxuICAgICAgICBpZiBjaGVja3N1bSBhbmQgZW5jb2RlZCAhPSBjaGVja3N1bTpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0lucHV0IGNoZWNrc3VtIG1pc21hdGNoJylcblxuICAgIHRyYW5zaWVudF9odHRwKGRlYWRsaW5lLCBwdWxsKVxuXG5cbmRlZiB2ZXJpZnlfdGFza19zaWduYXR1cmUoYXBpLCB0YXNrKTpcbiAgICBrZXlzID0gKCdpZCcsICdhdHRlbXB0JywgJ29wZXJhdGlvbicsICdidW5kbGVfZGlnZXN0JywgJ3J1bnRpbWVfYWJpJywgJ2J1bmRsZV9zaXplJywgJ2J1bmRsZV9jaGVja3N1bScpXG4gICAgbWFuaWZlc3QgPSB7a2V5OiB0YXNrW2tleV0gZm9yIGtleSBpbiBrZXlzfVxuICAgIGVuY29kZWQgPSBqc29uLmR1bXBzKG1hbmlmZXN0LCBzb3J0X2tleXM9VHJ1ZSwgc2VwYXJhdG9ycz0oJywnLCAnOicpKS5lbmNvZGUoKVxuICAgIGtleSA9IGhhc2hsaWIuc2hhMjU2KGFwaS5pZGVudGl0eVsndG9rZW4nXS5lbmNvZGUoKSkuZGlnZXN0KClcbiAgICBleHBlY3RlZCA9IGhtYWMubmV3KGtleSwgZW5jb2RlZCwgaGFzaGxpYi5zaGEyNTYpLmhleGRpZ2VzdCgpXG4gICAgaWYgbm90IGhtYWMuY29tcGFyZV9kaWdlc3QoZXhwZWN0ZWQsIHRhc2tbJ2J1bmRsZV9zaWduYXR1cmUnXSk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgdGFzayBidW5kbGUgc2lnbmF0dXJlJylcblxuXG5kZWYgZXh0cmFjdF9idW5kbGUoYXJjaGl2ZSwgdGFyZ2V0LCB0YXNrKTpcbiAgICBpZiBoYXNobGliLnNoYTI1NihhcmNoaXZlLnJlYWRfYnl0ZXMoKSkuaGV4ZGlnZXN0KCkgIT0gdGFza1snYnVuZGxlX2RpZ2VzdCddOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUYXNrIGJ1bmRsZSBkaWdlc3QgbWlzbWF0Y2gnKVxuICAgIHRhcmdldC5ta2Rpcihtb2RlPTBvNzU1KVxuICAgIHdpdGggdGFyZmlsZS5vcGVuKGFyY2hpdmUsICdyOmd6JykgYXMgYnVuZGxlOlxuICAgICAgICBtZW1iZXJzID0gYnVuZGxlLmdldG1lbWJlcnMoKVxuICAgICAgICBpZiBsZW4obWVtYmVycykgPiA2NCBvciBhbnkobm90IG1lbWJlci5pc2ZpbGUoKSBmb3IgbWVtYmVyIGluIG1lbWJlcnMpOlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB0YXNrIGJ1bmRsZSBlbnRyaWVzJylcbiAgICAgICAgdG90YWwgPSBzdW0obWVtYmVyLnNpemUgZm9yIG1lbWJlciBpbiBtZW1iZXJzKVxuICAgICAgICBpZiB0b3RhbCA+IDEwICogMTAyNCAqIDEwMjQ6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUYXNrIGJ1bmRsZSBpcyB0b28gbGFyZ2UnKVxuICAgICAgICBmb3IgbWVtYmVyIGluIG1lbWJlcnM6XG4gICAgICAgICAgICBwYXJ0cyA9IFBhdGgobWVtYmVyLm5hbWUpLnBhcnRzXG4gICAgICAgICAgICBpZiBub3QgcGFydHMgb3IgbWVtYmVyLm5hbWUuc3RhcnRzd2l0aCgnLycpIG9yICcuLicgaW4gcGFydHMgb3IgJ1xcXFwnIGluIG1lbWJlci5uYW1lOlxuICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Vuc2FmZSB0YXNrIGJ1bmRsZSBwYXRoJylcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gdGFyZ2V0LmpvaW5wYXRoKCpwYXJ0cylcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnBhcmVudC5ta2Rpcihtb2RlPTBvNzU1LCBwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgICAgICAgICB3aXRoIGJ1bmRsZS5leHRyYWN0ZmlsZShtZW1iZXIpIGFzIHNvdXJjZSwgZGVzdGluYXRpb24ub3Blbignd2InKSBhcyBvdXRwdXQ6XG4gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNvdXJjZSwgb3V0cHV0KVxuICAgICAgICAgICAgZGVzdGluYXRpb24uY2htb2QoMG80NDQpXG4gICAgIyBTZXJ2aWNlIFVNYXNrPTAwNzcgd291bGQga2VlcCBta2RpciAwNzU1IGFzIDA3MDAuIFRhc2sgY29udGFpbmVycyBhcmUgdWlkIDEwMDAxLlxuICAgIGZvciBwYXRoIGluIFt0YXJnZXQsICp0YXJnZXQucmdsb2IoJyonKV06XG4gICAgICAgIHBhdGguY2htb2QoMG83NTUgaWYgcGF0aC5pc19kaXIoKSBlbHNlIDBvNDQ0KVxuICAgIG1hbmlmZXN0ID0gcmVhZF9qc29uKHRhcmdldCAvICd0YXNrLWJ1bmRsZS5qc29uJywge30pXG4gICAgaWYgbWFuaWZlc3QuZ2V0KCdvcGVyYXRpb24nKSAhPSB0YXNrWydvcGVyYXRpb24nXSBvciBtYW5pZmVzdC5nZXQoJ3J1bnRpbWVfYWJpJykgIT0gdGFza1sncnVudGltZV9hYmknXTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGFzayBidW5kbGUgbWFuaWZlc3QgbWlzbWF0Y2gnKVxuXG5cbmRlZiB1cGxvYWQodXJsLCBoZWFkZXJzLCBzb3VyY2UsIGRlYWRsaW5lKTpcbiAgICB1cmkgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKVxuICAgIGlmIHVyaS5zY2hlbWUgIT0gJ2h0dHBzJyBvciB1cmkudXNlcm5hbWU6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1N0b3JhZ2UgcmVxdWlyZXMgSFRUUFMnKVxuXG4gICAgZGVmIHB1c2goKTpcbiAgICAgICAgY29ubmVjdGlvbiwgcGF0aCA9IHN0b3JhZ2VfcHV0X2Nvbm5lY3Rpb24odXJsKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBjb25uZWN0aW9uLnB1dHJlcXVlc3QoJ1BVVCcsIHBhdGgpXG4gICAgICAgICAgICBpZiBzdG9yYWdlX3Byb3h5X2Zvcih1cmwpOlxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24ucHV0aGVhZGVyKCdYLURHRS1UYXJnZXQnLCB1cmwpXG4gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBoZWFkZXJzLml0ZW1zKCk6XG4gICAgICAgICAgICAgICAgaWYga2V5Lmxvd2VyKCkgbm90IGluICgnY29udGVudC1sZW5ndGgnLCAnaG9zdCcpOlxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnB1dGhlYWRlcihrZXksIHZhbHVlKVxuICAgICAgICAgICAgY29ubmVjdGlvbi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgc3RyKHNvdXJjZS5zdGF0KCkuc3Rfc2l6ZSkpXG4gICAgICAgICAgICBjb25uZWN0aW9uLmVuZGhlYWRlcnMoKVxuICAgICAgICAgICAgc2VuZF9ib2R5KGNvbm5lY3Rpb24sIHNvdXJjZSwgZGVhZGxpbmUpXG4gICAgICAgICAgICByZXNwb25zZSA9IGNvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKVxuICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzIGluICg1MDIsIDUwMywgNDI5KTpcbiAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uRXJyb3IoJ1N0b3JhZ2UgZ2F0ZXdheSB1bmF2YWlsYWJsZScpXG4gICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXMgbm90IGluICgyMDAsIDIwMSwgMjA0KTpcbiAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCdPdXRwdXQgdXBsb2FkIGZhaWxlZCcpXG4gICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKClcblxuICAgIHRyYW5zaWVudF9odHRwKGRlYWRsaW5lLCBwdXNoKVxuXG5cbmRlZiBkb2NrZXJfYXJncyhjb25maWcpOlxuICAgIHJldHVybiBbJ2RvY2tlcicsICdydW4nLCAnLS1ybScsICctLWluaXQnLCAnLS1uZXR3b3JrPW5vbmUnLCAnLS1yZWFkLW9ubHknLCAnLS1jYXAtZHJvcD1BTEwnLFxuICAgICAgICAgICAgJy0tc2VjdXJpdHktb3B0PW5vLW5ldy1wcml2aWxlZ2VzJywgJy0tcGlkcy1saW1pdD0xMjgnLCAnLS11bGltaXQ9Y29yZT0wJyxcbiAgICAgICAgICAgICctLWxvZy1kcml2ZXI9bm9uZScsICctLWxhYmVsPWNvbS5kZ2Uucm9sZT1jb21wdXRlLXRhc2snLCAnLS1jZ3JvdXAtcGFyZW50PWNvbXB1dGUuc2xpY2UnLFxuICAgICAgICAgICAgJy0tbWVtb3J5PScgKyBzdHIoY29uZmlnWydtZW1vcnlfbWInXSkgKyAnbScsICctLW1lbW9yeS1zd2FwPScgKyBzdHIoY29uZmlnWydtZW1vcnlfbWInXSkgKyAnbScsXG4gICAgICAgICAgICAnLS1jcHVzPScgKyBzdHIoY29uZmlnWydjcHVzJ10pLCAnLS10bXBmcz0vdG1wOnJ3LG5vZXhlYyxub3N1aWQsc2l6ZT0yNTZtJ11cblxuXG5kZWYgZmlyc3RfaW5wdXQodGFzayk6XG4gICAgZGVjbGFyZWQgPSAodGFzay5nZXQoJ2lucHV0cycpIG9yIFt7fV0pWzBdXG4gICAgcmV0dXJuICh0YXNrLmdldCgnaW5wdXRfdXJsJykgb3IgZGVjbGFyZWQuZ2V0KCd1cmwnKSxcbiAgICAgICAgICAgIHRhc2suZ2V0KCdpbnB1dF9zaXplJykgaWYgJ2lucHV0X3NpemUnIGluIHRhc2sgZWxzZSBkZWNsYXJlZC5nZXQoJ3NpemVfYnl0ZXMnKSxcbiAgICAgICAgICAgIHRhc2suZ2V0KCdpbnB1dF9jaGVja3N1bScpIGlmICdpbnB1dF9jaGVja3N1bScgaW4gdGFzayBlbHNlIGRlY2xhcmVkLmdldCgnY2hlY2tzdW0nKSlcblxuXG5kZWYgZmlyc3Rfb3V0cHV0KHRhc2spOlxuICAgIGRlY2xhcmVkID0gKHRhc2suZ2V0KCdvdXRwdXRzJykgb3IgW3t9XSlbMF1cbiAgICByZXR1cm4gZGVjbGFyZWQuZ2V0KCduYW1lJykgb3IgJ291dHB1dCcsIGRlY2xhcmVkLmdldCgndXBsb2FkX3VybCcpLCBkZWNsYXJlZC5nZXQoJ2hlYWRlcnMnKSBvciB7fVxuXG5cbmRlZiBleGVjdXRlKGFwaSwgdGFzaywgY29uZmlnKTpcbiAgICBzdGFydGVkID0gdGltZS5tb25vdG9uaWMoKVxuICAgIHNldHVwX2RlYWRsaW5lID0gc3RhcnRlZCArIFNFVFVQX1NFQ09ORFNcbiAgICBuYW1lID0gJ2RnZS10YXNrLScgKyBzdHIodGFza1snaWQnXSkgKyAnLScgKyB0YXNrWydhdHRlbXB0J11cbiAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShkaXI9U0NSQVRDSCkgYXMgZGlyZWN0b3J5OlxuICAgICAgICBmb2xkZXIgPSBQYXRoKGRpcmVjdG9yeSlcbiAgICAgICAgc291cmNlID0gZm9sZGVyIC8gJ3NvdXJjZSdcbiAgICAgICAgb3V0cHV0ID0gZm9sZGVyIC8gJ291dHB1dCdcbiAgICAgICAgYnVuZGxlX2FyY2hpdmUgPSBmb2xkZXIgLyAndGFzay1idW5kbGUudGFyLmd6J1xuICAgICAgICBidW5kbGUgPSBmb2xkZXIgLyAnYnVuZGxlJ1xuICAgICAgICBhcGkucG9zdCgnam9icy8nICsgc3RyKHRhc2tbJ2lkJ10pICsgJy9zdGFydCcsIGRpY3QoYXR0ZW1wdD10YXNrWydhdHRlbXB0J10pKVxuICAgICAgICB2ZXJpZnlfdGFza19zaWduYXR1cmUoYXBpLCB0YXNrKVxuICAgICAgICBkb3dubG9hZCh0YXNrWydidW5kbGVfdXJsJ10sIGJ1bmRsZV9hcmNoaXZlLCB0YXNrWydidW5kbGVfc2l6ZSddLCB0YXNrWydidW5kbGVfY2hlY2tzdW0nXSwgc2V0dXBfZGVhZGxpbmUpXG4gICAgICAgIGV4dHJhY3RfYnVuZGxlKGJ1bmRsZV9hcmNoaXZlLCBidW5kbGUsIHRhc2spXG4gICAgICAgIHZlcmlmeV9idW5kbGUoYXBpLCB0YXNrLCBjb25maWcsIGJ1bmRsZSlcbiAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgbWF4KDEsIGludCh0YXNrLmdldCgndGltZW91dCcpIG9yIHRhc2tbJ3RpbWVvdXRfc2Vjb25kcyddKSlcbiAgICAgICAgaW5wdXRfdXJsLCBpbnB1dF9zaXplLCBpbnB1dF9jaGVja3N1bSA9IGZpcnN0X2lucHV0KHRhc2spXG4gICAgICAgIGRvd25sb2FkKGlucHV0X3VybCwgc291cmNlLCBpbnB1dF9zaXplLCBpbnB1dF9jaGVja3N1bSwgZGVhZGxpbmUpXG4gICAgICAgIHdyaXRlX2pzb24oZm9sZGVyIC8gJ3Rhc2suanNvbicsIHtrZXk6IHRhc2tba2V5XSBmb3Iga2V5IGluICgnb3BlcmF0aW9uJywgJ2ZpbmdlcnByaW50JywgJ3J1bnRpbWVfYWJpJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiB0YXNrfSB8IHsnb3B0aW9ucyc6IHRhc2suZ2V0KCdvcHRpb25zJykgb3IgdGFzay5nZXQoJ3BhcmFtZXRlcnMnKSBvciB7fX0pXG4gICAgICAgIGZvciBmaWxlIGluIGZvbGRlci5pdGVyZGlyKCk6XG4gICAgICAgICAgICBvcy5jaG93bihmaWxlLCAxMDAwMSwgMTAwMDEpXG4gICAgICAgIG9zLmNob3duKGZvbGRlciwgMTAwMDEsIDEwMDAxKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBjb21tYW5kKGRvY2tlcl9hcmdzKGNvbmZpZykgKyBbJy0tbmFtZT0nICsgbmFtZSwgJy0tZW52PVRNUERJUj0vdGFzaycsXG4gICAgICAgICAgICAgICAgICAgICctLW1vdW50PXR5cGU9YmluZCxzcmM9JyArIGRpcmVjdG9yeSArICcsZHN0PS90YXNrJyxcbiAgICAgICAgICAgICAgICAgICAgJy0tbW91bnQ9dHlwZT1iaW5kLHNyYz0nICsgc3RyKGJ1bmRsZSkgKyAnLGRzdD0vYnVuZGxlLHJlYWRvbmx5JywgY29uZmlnWydpbWFnZSddLFxuICAgICAgICAgICAgICAgICAgICAncnVieScsICcvYnVuZGxlL3NjcmlwdC9oZWF2eV9wcm9jZXNzaW5nL2V4ZWN1dGUucmInXSwgbWF4KDEsIGRlYWRsaW5lIC0gdGltZS5tb25vdG9uaWMoKSkpXG4gICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgICBzdWJwcm9jZXNzLnJ1bihbJ2RvY2tlcicsICdybScsICctZicsIG5hbWVdLCBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLCBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKVxuICAgICAgICBsaW1pdCA9IDQgKiAxMDI0KiozIGlmIHRhc2tbJ29wZXJhdGlvbiddID09ICd6aXBfYXJjaGl2ZScgZWxzZSAxMDAgKiAxMDI0KioyXG4gICAgICAgIGlmIG5vdCAwIDwgb3V0cHV0LnN0YXQoKS5zdF9zaXplIDw9IGxpbWl0OlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBvdXRwdXQgc2l6ZScpXG4gICAgICAgIG91dHB1dF9uYW1lLCB1cGxvYWRfdXJsLCBoZWFkZXJzID0gZmlyc3Rfb3V0cHV0KHRhc2spXG4gICAgICAgIGlmIG5vdCB1cGxvYWRfdXJsOlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTWlzc2luZyBvdXRwdXQgdXBsb2FkIFVSTCcpXG4gICAgICAgIHVwbG9hZCh1cGxvYWRfdXJsLCBoZWFkZXJzLCBvdXRwdXQsIGRlYWRsaW5lKVxuICAgICAgICBkaWdlc3QgPSBoYXNobGliLnNoYTI1NihvdXRwdXQucmVhZF9ieXRlcygpKS5oZXhkaWdlc3QoKVxuICAgICAgICBhcGkucG9zdCgnam9icy8nICsgc3RyKHRhc2tbJ2lkJ10pICsgJy9jb21wbGV0ZScsIGRpY3QoXG4gICAgICAgICAgICBhdHRlbXB0PXRhc2tbJ2F0dGVtcHQnXSwgZHVyYXRpb25fbXM9aW50KCh0aW1lLm1vbm90b25pYygpIC0gc3RhcnRlZCkgKiAxMDAwKSxcbiAgICAgICAgICAgIG91dHB1dHM9W3snbmFtZSc6IG91dHB1dF9uYW1lLCAnc2l6ZV9ieXRlcyc6IG91dHB1dC5zdGF0KCkuc3Rfc2l6ZSwgJ3NoYTI1Nic6IGRpZ2VzdH1dKSlcblxuXG5kZWYgYXBwbHlfbGltaXRzKGNvbmZpZyk6XG4gICAgY29tbWFuZChbJ21vdW50JywgJy1vJywgJ3JlbW91bnQsc2l6ZT0nICsgc3RyKGNvbmZpZ1snc2NyYXRjaF9tYiddKSArICdtJywgc3RyKFNDUkFUQ0gpXSlcbiAgICBjb21tYW5kKFsnc3lzdGVtY3RsJywgJ3NldC1wcm9wZXJ0eScsICctLXJ1bnRpbWUnLCAnY29tcHV0ZS5zbGljZScsXG4gICAgICAgICAgICAgJ01lbW9yeU1heD0nICsgc3RyKGNvbmZpZ1snbWVtb3J5X21iJ10pICsgJ00nLFxuICAgICAgICAgICAgICdNZW1vcnlMb3c9JyArIHN0cihjb25maWdbJ21lbW9yeV9tYiddIC8vIDIpICsgJ00nLCAnTWVtb3J5U3dhcE1heD0wJ10pXG5cblxuZGVmIHRlc3RfY2FwYWJpbGl0aWVzKGNvbmZpZywgcmVxdWVzdF9pZD1Ob25lKTpcbiAgICBuYW1lID0gJ2RnZS1wcm9iZS0nICsgc3RyKG9zLmdldHBpZCgpKVxuICAgIHRyeTpcbiAgICAgICAgcmVzdWx0cyA9IGpzb24ubG9hZHMoY29tbWFuZChkb2NrZXJfYXJncyhjb25maWcpICsgWyctLW5hbWU9JyArIG5hbWUsIGNvbmZpZ1snaW1hZ2UnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVieScsICdzY3JpcHQvaGVhdnlfcHJvY2Vzc2luZy9leGVjdXRlLnJiJywgJy0tcHJvYmUnXSwgMjEwKSlcbiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVzdWx0cywgZGljdCkgb3Igbm90IHJlc3VsdHM6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNhcGFiaWxpdHkgcmVzdWx0cycpXG4gICAgICAgIHJldHVybiBkaWN0KGlkPXJlcXVlc3RfaWQgb3Igc3RyKHRpbWUudGltZV9ucygpKSwgaW1hZ2U9Y29uZmlnWydpbWFnZSddLCByZXN1bHRzPXJlc3VsdHMpXG4gICAgZmluYWxseTpcbiAgICAgICAgc3VicHJvY2Vzcy5ydW4oWydkb2NrZXInLCAncm0nLCAnLWYnLCBuYW1lXSwgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwgdGltZW91dD0xNSlcblxuXG5kZWYgcGFzc2luZ19jYXBhYmlsaXRpZXMocHJvYmUpOlxuICAgIHJldHVybiB7b3BlcmF0aW9uOiByZXN1bHRbJ2ZpbmdlcnByaW50J10gZm9yIG9wZXJhdGlvbiwgcmVzdWx0IGluIHByb2JlWydyZXN1bHRzJ10uaXRlbXMoKVxuICAgICAgICAgICAgaWYgcmVzdWx0LmdldCgnc3RhdHVzJykgPT0gJ3Bhc3NlZCd9XG5cblxuZGVmIHZlcmlmeV9idW5kbGUoYXBpLCB0YXNrLCBjb25maWcsIGJ1bmRsZSk6XG4gICAgdGVzdHMgPSByZWFkX2pzb24oUk9PVCAvICdidW5kbGUtdGVzdHMuanNvbicsIHt9KVxuICAgIHByZXZpb3VzID0gdGVzdHMuZ2V0KHRhc2tbJ2J1bmRsZV9kaWdlc3QnXSlcbiAgICBpZiBwcmV2aW91cyBhbmQgcHJldmlvdXMuZ2V0KCdzdGF0dXMnKSA9PSAncGFzc2VkJzpcbiAgICAgICAgcmV0dXJuXG4gICAgY29tbWFuZF9saW5lID0gZG9ja2VyX2FyZ3MoY29uZmlnKSArIFsnLS1tb3VudD10eXBlPWJpbmQsc3JjPScgKyBzdHIoYnVuZGxlKSArICcsZHN0PS9idW5kbGUscmVhZG9ubHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnWydpbWFnZSddLCAncnVieScsICcvYnVuZGxlL3NjcmlwdC9oZWF2eV9wcm9jZXNzaW5nL2V4ZWN1dGUucmInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcHJvYmUtb3BlcmF0aW9uJywgdGFza1snb3BlcmF0aW9uJ11dXG4gICAgdHJ5OlxuICAgICAgICByZXN1bHQgPSBqc29uLmxvYWRzKGNvbW1hbmQoY29tbWFuZF9saW5lLCAyMTApKVxuICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgIHJlc3VsdCA9IHsnc3RhdHVzJzogJ2ZhaWxlZCcsICdmaW5nZXJwcmludCc6IHRhc2tbJ2J1bmRsZV9kaWdlc3QnXSwgJ2Vycm9yJzogZGVzY3JpYmVfZXJyb3IoZXJyb3IpfVxuICAgIHRlc3RzW3Rhc2tbJ2J1bmRsZV9kaWdlc3QnXV0gPSByZXN1bHRcbiAgICB3cml0ZV9qc29uKFJPT1QgLyAnYnVuZGxlLXRlc3RzLmpzb24nLCBkaWN0KGxpc3QodGVzdHMuaXRlbXMoKSlbLTEwMDpdKSlcbiAgICByZXBvcnQgPSBkaWN0KGlkPXRhc2tbJ2J1bmRsZV9kaWdlc3QnXSwga2luZD0nYnVuZGxlJywgYnVuZGxlX2RpZ2VzdD10YXNrWydidW5kbGVfZGlnZXN0J10sXG4gICAgICAgICAgICAgICAgICBpbWFnZT1jb25maWdbJ2ltYWdlJ10sIHJlc3VsdHM9e3Rhc2tbJ29wZXJhdGlvbiddOiByZXN1bHR9KVxuICAgIHdpdGggU1RBVEVfTE9DSzpcbiAgICAgICAgUkVQT1JUWydjYXBhYmlsaXR5X3Rlc3QnXSA9IHJlcG9ydFxuICAgIGhlYXJ0YmVhdChhcGkpXG4gICAgaWYgcmVzdWx0LmdldCgnc3RhdHVzJykgIT0gJ3Bhc3NlZCc6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGFza0J1bmRsZUNhcGFiaWxpdHlGYWlsZWQnKVxuXG5cbmRlZiByZWZyZXNoX2NhcGFiaWxpdGllcyhjb25maWcsIHJlbGVhc2UsIHJlcXVlc3RfaWQpOlxuICAgIHByb2JlID0gdGVzdF9jYXBhYmlsaXRpZXMoY29uZmlnLCByZXF1ZXN0X2lkKVxuICAgIGNhcGFiaWxpdGllcyA9IHBhc3NpbmdfY2FwYWJpbGl0aWVzKHByb2JlKVxuICAgIHdyaXRlX2pzb24ocmVsZWFzZSAvICdjYXBhYmlsaXR5X3Rlc3QuanNvbicsIHByb2JlKVxuICAgIHdyaXRlX2pzb24ocmVsZWFzZSAvICdjYXBhYmlsaXRpZXMuanNvbicsIGNhcGFiaWxpdGllcylcbiAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgIFJFUE9SVC51cGRhdGUoY2FwYWJpbGl0eV90ZXN0PXByb2JlLCBjYXBhYmlsaXRpZXM9Y2FwYWJpbGl0aWVzKVxuICAgICAgICBpZiBSRVBPUlQuZ2V0KCd1cGRhdGVfZXJyb3InKSA9PSAnQ2FwYWJpbGl0eVRlc3RGYWlsZWQnOlxuICAgICAgICAgICAgUkVQT1JUWyd1cGRhdGVfZXJyb3InXSA9IE5vbmVcblxuXG5kZWYgc3RhZ2VfdXBkYXRlKGNvbmZpZyk6XG4gICAgaW1wb3J0IHJlXG4gICAgaWYgbm90IHJlLmZ1bGxtYXRjaChyJ1thLXpBLVowLTkuXy1dezEsODB9JywgY29uZmlnWyd2ZXJzaW9uJ10pOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdmVyc2lvbicpXG4gICAgaWYgbm90IHJlLmZ1bGxtYXRjaChyJ1thLXpBLVowLTldW2EtekEtWjAtOS4vOl8tXSpAc2hhMjU2OlthLWYwLTldezY0fScsIGNvbmZpZ1snaW1hZ2UnXSk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ltYWdlIG11c3QgYmUgcGlubmVkIGJ5IGRpZ2VzdCcpXG4gICAgaWYgbm90IDUxMiA8PSBjb25maWdbJ21lbW9yeV9tYiddIDw9IG1lbW9yeSgpWydNZW1Ub3RhbCddIC8vIDEwMjQqKjIgLSA1MTI6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0luc3VmZmljaWVudCBob3N0IG1lbW9yeScpXG4gICAgaWYgbm90IDI1NiA8PSBjb25maWdbJ3NjcmF0Y2hfbWInXSA8PSBjb25maWdbJ21lbW9yeV9tYiddIC0gMjU2OlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHNjcmF0Y2ggbWVtb3J5JylcbiAgICBjaV9saW1pdCA9IFBhdGgoJy9zeXMvZnMvY2dyb3VwL2NpLnNsaWNlL21lbW9yeS5tYXgnKVxuICAgIGlmIGNpX2xpbWl0LmV4aXN0cygpIGFuZCBjaV9saW1pdC5yZWFkX3RleHQoKS5zdHJpcCgpLmlzZGlnaXQoKTpcbiAgICAgICAgYXZhaWxhYmxlID0gbWVtb3J5KClbJ01lbVRvdGFsJ10gLSBpbnQoY2lfbGltaXQucmVhZF90ZXh0KCkpIC0gNTEyICogMTAyNCoqMlxuICAgICAgICBpZiBjb25maWdbJ21lbW9yeV9tYiddICogMTAyNCoqMiA+IGF2YWlsYWJsZTpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvbmZpZ3VyYXRpb24gZXhjZWVkcyBtZW1vcnkgcmVtYWluaW5nIGFmdGVyIENJIHJlc2VydmF0aW9uJylcbiAgICBwdWxsX2ltYWdlKGNvbmZpZylcbiAgICBwcm9iZSA9IHRlc3RfY2FwYWJpbGl0aWVzKGNvbmZpZylcbiAgICBjYXBhYmlsaXRpZXMgPSBwYXNzaW5nX2NhcGFiaWxpdGllcyhwcm9iZSlcbiAgICBjdXJyZW50ID0gcmVhZF9qc29uKFBhdGgocmVhZF9qc29uKFJPT1QgLyAnY3VycmVudC5qc29uJykpIC8gJ2NhcGFiaWxpdGllcy5qc29uJywge30pXG4gICAgaWYgYW55KG9wZXJhdGlvbiBub3QgaW4gY2FwYWJpbGl0aWVzIGZvciBvcGVyYXRpb24gaW4gY3VycmVudCk6XG4gICAgICAgIHdpdGggU1RBVEVfTE9DSzpcbiAgICAgICAgICAgIFJFUE9SVFsnY2FwYWJpbGl0eV90ZXN0J10gPSBwcm9iZVxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NhcGFiaWxpdHlSZWdyZXNzaW9uJylcbiAgICByZWxlYXNlID0gUk9PVCAvICdyZWxlYXNlcycgLyBjb25maWdbJ3ZlcnNpb24nXVxuICAgIHJlbGVhc2UubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIGNvbnRhaW5lciA9IGNvbW1hbmQoWydkb2NrZXInLCAnY3JlYXRlJywgY29uZmlnWydpbWFnZSddXSlcbiAgICB0cnk6XG4gICAgICAgIGNvbW1hbmQoWydkb2NrZXInLCAnY3AnLCBjb250YWluZXIgKyAnOi9hcHAvc2NyaXB0L2hlYXZ5X3Byb2Nlc3NpbmcvYWdlbnQucHknLCBzdHIocmVsZWFzZSAvICdhZ2VudC5weScpXSlcbiAgICBmaW5hbGx5OlxuICAgICAgICBjb21tYW5kKFsnZG9ja2VyJywgJ3JtJywgY29udGFpbmVyXSlcbiAgICBpZiAnUkVHSVNUUllfQVVUSF9WRVJTSU9OID0gMScgbm90IGluIChyZWxlYXNlIC8gJ2FnZW50LnB5JykucmVhZF90ZXh0KCk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1dvcmtlciBpbWFnZSBwcmVkYXRlcyBzaW1wbGUgZW5yb2xsbWVudDsgYXNzaWduIGEgbmV3ZXIgaW1hZ2UnKVxuICAgIGNvbW1hbmQoW3N5cy5leGVjdXRhYmxlLCAnLW0nLCAncHlfY29tcGlsZScsIHN0cihyZWxlYXNlIC8gJ2FnZW50LnB5JyldKVxuICAgIHdyaXRlX2pzb24ocmVsZWFzZSAvICdjb25maWcuanNvbicsIGNvbmZpZylcbiAgICB3cml0ZV9qc29uKHJlbGVhc2UgLyAnY2FwYWJpbGl0aWVzLmpzb24nLCBjYXBhYmlsaXRpZXMpXG4gICAgd3JpdGVfanNvbihyZWxlYXNlIC8gJ2NhcGFiaWxpdHlfdGVzdC5qc29uJywgcHJvYmUpXG4gICAgYXBwbHlfbGltaXRzKGNvbmZpZylcbiAgICB3cml0ZV9qc29uKFJPT1QgLyAncGVuZGluZy5qc29uJywgZGljdChwcmV2aW91cz1yZWFkX2pzb24oUk9PVCAvICdjdXJyZW50Lmpzb24nKSwgdGFyZ2V0PXN0cihyZWxlYXNlKSwgdmVyc2lvbj1jb25maWdbJ3ZlcnNpb24nXSkpXG4gICAgd3JpdGVfanNvbihST09UIC8gJ2N1cnJlbnQuanNvbicsIHN0cihyZWxlYXNlKSlcblxuXG5kZWYgcHVsbF9pbWFnZShjb25maWcpOlxuICAgIGlmIG5vdCBjb25maWdbJ2ltYWdlJ10uc3RhcnRzd2l0aCgncmVnaXN0cnkuZ2l0bGFiLmNvbS8nKTpcbiAgICAgICAgcmV0dXJuIGNvbW1hbmQoWydkb2NrZXInLCAncHVsbCcsIGNvbmZpZ1snaW1hZ2UnXV0sIDYwMClcbiAgICBhdXRob3JpemF0aW9uID0gQVBJKCkucG9zdCgncmVnaXN0cnlfYXV0aG9yaXphdGlvbicsIHt9KVxuICAgIGlmIGF1dGhvcml6YXRpb24uZ2V0KCdpbWFnZScpICE9IGNvbmZpZ1snaW1hZ2UnXTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignV29ya2VyIGltYWdlIGFzc2lnbm1lbnQgY2hhbmdlZDsgcmV0cnlpbmcgYXQgbmV4dCBjaGVjay1pbicpXG4gICAgcmVnaXN0cnkgPSBjb25maWdbJ2ltYWdlJ10uc3BsaXQoJy8nLCAxKVswXVxuICAgIGlmIGF1dGhvcml6YXRpb24uZ2V0KCdyZWdpc3RyeScpICE9IHJlZ2lzdHJ5OlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmV4cGVjdGVkIHJlZ2lzdHJ5IGF1dGhvcml6YXRpb24nKVxuICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0ncmVnaXN0cnktJywgZGlyPScvcnVuL2RnZS13b3JrZXInKSBhcyBkaXJlY3Rvcnk6XG4gICAgICAgIGNyZWRlbnRpYWxzID0gUGF0aChkaXJlY3RvcnkpIC8gJ2NvbmZpZy5qc29uJ1xuICAgICAgICB3cml0ZV9qc29uKGNyZWRlbnRpYWxzLCB7J2F1dGhzJzoge3JlZ2lzdHJ5OiB7J3JlZ2lzdHJ5dG9rZW4nOiBhdXRob3JpemF0aW9uWyd0b2tlbiddfX19KVxuICAgICAgICBjb21tYW5kKFsnZG9ja2VyJywgJy0tY29uZmlnJywgZGlyZWN0b3J5LCAncHVsbCcsIGNvbmZpZ1snaW1hZ2UnXV0sIDYwMClcblxuXG5kZWYgcmVjb3JkX3Rhc2tfZmFpbHVyZShtZXNzYWdlKTpcbiAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgIG1ldHJpY3MgPSByZWFkX2pzb24oUk9PVCAvICdtZXRyaWNzLmpzb24nLCB7fSlcbiAgICAgICAgbWV0cmljcy51cGRhdGUodGFza19lcnJvcnM9bWV0cmljcy5nZXQoJ3Rhc2tfZXJyb3JzJywgMCkgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3Rhc2tfZXJyb3I9bWVzc2FnZSwgbGFzdF90YXNrX2Vycm9yX2F0PXRpbWUuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicsIHRpbWUuZ210aW1lKCkpKVxuICAgICAgICB3cml0ZV9qc29uKFJPT1QgLyAnbWV0cmljcy5qc29uJywgbWV0cmljcylcblxuXG5kZWYgcnVuX3Rhc2soYXBpLCB0YXNrLCBjb25maWcpOlxuICAgIHRyeTpcbiAgICAgICAgZXhlY3V0ZShhcGksIHRhc2ssIGNvbmZpZylcbiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICBtZXNzYWdlID0gZGVzY3JpYmVfZXJyb3IoZXJyb3IpXG4gICAgICAgIHJlY29yZF90YXNrX2ZhaWx1cmUobWVzc2FnZSlcbiAgICAgICAgbm90ZSgnV29ya2VyIHRhc2sgZmFpbGVkOiAnICsgbWVzc2FnZSlcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgYXBpLnBvc3QoJ2pvYnMvJyArIHN0cih0YXNrWydpZCddKSArICcvZmFpbCcsIGRpY3QoYXR0ZW1wdD10YXNrWydhdHRlbXB0J10sIGVycm9yPW1lc3NhZ2UpKVxuICAgICAgICBleGNlcHQgRXhjZXB0aW9uOlxuICAgICAgICAgICAgcGFzc1xuICAgIGZpbmFsbHk6XG4gICAgICAgIHdpdGggU1RBVEVfTE9DSzpcbiAgICAgICAgICAgIGRyb3BfdGFzayh0YXNrKVxuXG5cbmRlZiBtYWluKCk6XG4gICAgYXBpID0gQVBJKClcbiAgICByZWxlYXNlID0gUGF0aChyZWFkX2pzb24oUk9PVCAvICdjdXJyZW50Lmpzb24nKSlcbiAgICBjb25maWcgPSByZWFkX2pzb24ocmVsZWFzZSAvICdjb25maWcuanNvbicsIHt9KVxuICAgIGZhaWx1cmUgPSB7fSBpZiAoUk9PVCAvICdwZW5kaW5nLmpzb24nKS5leGlzdHMoKSBlbHNlIHJlYWRfanNvbihST09UIC8gJ2ZhaWx1cmUuanNvbicsIHt9KVxuICAgIHJlZnJlc2hfdXBsaW5rKGZvcmNlPVRydWUpXG4gICAgcnVudGltZV9hYmkgPSBOb25lIGlmIFJVTlRJTUVfQUJJLnN0YXJ0c3dpdGgoJ19fJykgZWxzZSBSVU5USU1FX0FCSVxuICAgIFJFUE9SVC51cGRhdGUoaGFyZHdhcmU9aW52ZW50b3J5KCksIGFnZW50X3ZlcnNpb249VkVSU0lPTiwgcnVudGltZV9hYmk9cnVudGltZV9hYmksXG4gICAgICAgICAgICAgICAgICBhcHBsaWVkX3ZlcnNpb249Y29uZmlnLmdldCgndmVyc2lvbicpLFxuICAgICAgICAgICAgICAgICAgaW1hZ2U9Y29uZmlnLmdldCgnaW1hZ2UnKSwgbWVtb3J5X21iPWNvbmZpZy5nZXQoJ21lbW9yeV9tYicpLCBzY3JhdGNoX21iPWNvbmZpZy5nZXQoJ3NjcmF0Y2hfbWInKSxcbiAgICAgICAgICAgICAgICAgIGNwdXM9Y29uZmlnLmdldCgnY3B1cycpLCBjYXBhYmlsaXRpZXM9cmVhZF9qc29uKHJlbGVhc2UgLyAnY2FwYWJpbGl0aWVzLmpzb24nLCB7fSksXG4gICAgICAgICAgICAgICAgICB1cGRhdGVfZXJyb3I9ZmFpbHVyZS5nZXQoJ2Vycm9yJyksIGNhcGFiaWxpdHlfdGVzdD1yZWFkX2pzb24ocmVsZWFzZSAvICdjYXBhYmlsaXR5X3Rlc3QuanNvbicpKVxuICAgIGlmIGNvbmZpZzpcbiAgICAgICAgYXBwbHlfbGltaXRzKGNvbmZpZylcbiAgICBmb3IgY29udGFpbmVyIGluIGNvbW1hbmQoWydkb2NrZXInLCAncHMnLCAnLWFxJywgJy0tZmlsdGVyPWxhYmVsPWNvbS5kZ2Uucm9sZT1jb21wdXRlLXRhc2snXSkuc3BsaXRsaW5lcygpOlxuICAgICAgICBjb21tYW5kKFsnZG9ja2VyJywgJ3JtJywgJy1mJywgY29udGFpbmVyXSlcbiAgICBmb3IgZGlyZWN0b3J5IGluIFNDUkFUQ0guaXRlcmRpcigpOlxuICAgICAgICBpZiBkaXJlY3RvcnkuaXNfZGlyKCk6XG4gICAgICAgICAgICBzaHV0aWwucm10cmVlKGRpcmVjdG9yeSlcbiAgICBpbml0aWFsID0gaGVhcnRiZWF0KGFwaSlcbiAgICAoUk9PVCAvICdyZWFkeScpLnRvdWNoKG1vZGU9MG82MDApXG4gICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9aGVhcnRiZWF0X2xvb3AsIGFyZ3M9KGFwaSwpLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuICAgIHJlc3BvbnNlID0gaW5pdGlhbFxuICAgIHdoaWxlIG5vdCBTVE9QLmlzX3NldCgpOlxuICAgICAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgICAgICByZXNwb25zZSA9IGRpY3QoQ09OVFJPTClcbiAgICAgICAgICAgIGJ1c3kgPSBib29sKFRBU0tTKVxuICAgICAgICBkZXNpcmVkID0gcmVzcG9uc2UuZ2V0KCdjb25maWd1cmF0aW9uJylcbiAgICAgICAgdGVzdF9yZXF1ZXN0ID0gcmVzcG9uc2UuZ2V0KCdjYXBhYmlsaXR5X3Rlc3RfcmVxdWVzdCcpXG4gICAgICAgIHRlc3RlZCA9IFJFUE9SVC5nZXQoJ2NhcGFiaWxpdHlfdGVzdCcpXG4gICAgICAgIGlmIG5vdCBidXN5IGFuZCBjb25maWcgYW5kIChub3QgdGVzdGVkIG9yICh0ZXN0X3JlcXVlc3QgYW5kIHRlc3RlZC5nZXQoJ2lkJykgIT0gdGVzdF9yZXF1ZXN0KSk6XG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgcmVmcmVzaF9jYXBhYmlsaXRpZXMoY29uZmlnLCByZWxlYXNlLCB0ZXN0X3JlcXVlc3QpXG4gICAgICAgICAgICAgICAgaGVhcnRiZWF0KGFwaSlcbiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgd2l0aCBTVEFURV9MT0NLOlxuICAgICAgICAgICAgICAgICAgICBSRVBPUlQudXBkYXRlKGNhcGFiaWxpdGllcz17fSwgdXBkYXRlX2Vycm9yPSdDYXBhYmlsaXR5VGVzdEZhaWxlZCcpXG4gICAgICAgICAgICAgICAgaGVhcnRiZWF0KGFwaSlcbiAgICAgICAgICAgICAgICBTVE9QLndhaXQoMTUpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgaWYgZmFpbHVyZSBhbmQgZGVzaXJlZCBhbmQgZGVzaXJlZFsndmVyc2lvbiddICE9IGZhaWx1cmUuZ2V0KCd2ZXJzaW9uJyk6XG4gICAgICAgICAgICBmYWlsdXJlID0ge31cbiAgICAgICAgICAgIChST09UIC8gJ2ZhaWx1cmUuanNvbicpLnVubGluayhtaXNzaW5nX29rPVRydWUpXG4gICAgICAgICAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgICAgICAgICAgUkVQT1JUWyd1cGRhdGVfZXJyb3InXSA9IE5vbmVcbiAgICAgICAgICAgIGhlYXJ0YmVhdChhcGkpXG4gICAgICAgIGlmIG5vdCBidXN5IGFuZCBkZXNpcmVkIGFuZCBkZXNpcmVkICE9IGNvbmZpZyBhbmQgZGVzaXJlZFsndmVyc2lvbiddICE9IGZhaWx1cmUuZ2V0KCd2ZXJzaW9uJyk6XG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgc3RhZ2VfdXBkYXRlKGRlc2lyZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDc1XG4gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICAgICAgICAgIGlmIGNvbmZpZzpcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlfbGltaXRzKGNvbmZpZylcbiAgICAgICAgICAgICAgICByZWFzb24gPSAnQ2FwYWJpbGl0eVJlZ3Jlc3Npb24nIGlmIHN0cihlcnJvcikgPT0gJ0NhcGFiaWxpdHlSZWdyZXNzaW9uJyBlbHNlIHR5cGUoZXJyb3IpLl9fbmFtZV9fXG4gICAgICAgICAgICAgICAgZmFpbHVyZSA9IGRpY3QodmVyc2lvbj1kZXNpcmVkWyd2ZXJzaW9uJ10sIGVycm9yPXJlYXNvbilcbiAgICAgICAgICAgICAgICB3cml0ZV9qc29uKFJPT1QgLyAnZmFpbHVyZS5qc29uJywgZmFpbHVyZSlcbiAgICAgICAgICAgICAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgICAgICAgICAgICAgIFJFUE9SVFsndXBkYXRlX2Vycm9yJ10gPSBmYWlsdXJlWydlcnJvciddXG4gICAgICAgICAgICAgICAgbm90ZSgnV29ya2VyIHVwZGF0ZSBmYWlsZWQ6ICcgKyB0eXBlKGVycm9yKS5fX25hbWVfXyArICc6ICcgKyBzdHIoZXJyb3IpKVxuICAgICAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICAgICAgaGVhcnRiZWF0KGFwaSlcbiAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICBwYXNzXG4gICAgICAgIGlmIGNvbmZpZyBhbmQgbm90IHJlc3BvbnNlLmdldCgnZHJhaW5pbmcnKSBhbmQgZGVzaXJlZCA9PSBjb25maWcgYW5kIG5vdCBSRVBPUlQuZ2V0KCd1cGRhdGVfZXJyb3InKTpcbiAgICAgICAgICAgIHdpdGggU1RBVEVfTE9DSzpcbiAgICAgICAgICAgICAgICByb29tID0gTUFYX1RBU0tTIC0gbGVuKFRBU0tTKVxuICAgICAgICAgICAgaWYgcm9vbSA+IDA6XG4gICAgICAgICAgICAgICAgdGFzayA9IGFwaS5wb3N0KCd3b3JrZXJzLycgKyBhcGkud29ya2VyX2lkKCkgKyAnL2pvYnMvcmVxdWVzdCcsIHt9KVsnam9iJ11cbiAgICAgICAgICAgICAgICBpZiB0YXNrOlxuICAgICAgICAgICAgICAgICAgICB3aXRoIFNUQVRFX0xPQ0s6XG4gICAgICAgICAgICAgICAgICAgICAgICBUQVNLUy5hcHBlbmQodGFzaylcbiAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX3Rhc2ssIGFyZ3M9KGFwaSwgdGFzaywgam9iX2NvbmZpZyhkZXNpcmVkIG9yIGNvbmZpZywgdGFzaykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhZW1vbj1UcnVlKS5zdGFydCgpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIGlmIFNUT1Aud2FpdCgyKTpcbiAgICAgICAgICAgIGJyZWFrXG4gICAgcmV0dXJuIDBcblxuXG5pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOlxuICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIGxhbWJkYSAqXzogU1RPUC5zZXQoKSlcbiAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdJTlQsIGxhbWJkYSAqXzogU1RPUC5zZXQoKSlcbiAgICB0cnk6XG4gICAgICAgIHN5cy5leGl0KG1haW4oKSlcbiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOlxuICAgICAgICBwcmludCgnV29ya2VyIHN0b3BwZWQ6ICcgKyB0eXBlKGVycm9yKS5fX25hbWVfXywgZmx1c2g9VHJ1ZSlcbiAgICAgICAgc3lzLmV4aXQoMSlcbiIsImxhdW5jaGVyLnB5IjoiIyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuXCJcIlwiU3RhYmxlIGJvb3RzdHJhcCB3YXRjaGRvZzogYSBjYW5kaWRhdGUgbXVzdCBjb250YWN0IHByb2R1Y3Rpb24gd2l0aGluIDYwcy5cblJvbGxiYWNrIHN1cnZpdmVzIHBvd2VyIGxvc3MgYmVjYXVzZSB0aGUgcHJldmlvdXMgcG9pbnRlciBpcyBwZXJzaXN0ZWQgZmlyc3QuXG5cIlwiXCJcbmltcG9ydCBqc29uXG5pbXBvcnQgb3NcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuaW1wb3J0IHNpZ25hbFxuaW1wb3J0IHN1YnByb2Nlc3NcbmltcG9ydCBzeXNcbmltcG9ydCB0aW1lXG5cblJPT1QgPSBQYXRoKG9zLmVudmlyb24uZ2V0KCdER0VfV09SS0VSX1JPT1QnLCAnL29wdC9kZ2Utd29ya2VyJykpXG5jaGlsZCA9IE5vbmVcbnN0b3BwaW5nID0gRmFsc2VcblxuXG5kZWYgd3JpdGUocGF0aCwgdmFsdWUpOlxuICAgIHRlbXBvcmFyeSA9IHBhdGgud2l0aF9zdWZmaXgoJy50bXAnKVxuICAgIHRlbXBvcmFyeS53cml0ZV90ZXh0KGpzb24uZHVtcHModmFsdWUpKVxuICAgIHRlbXBvcmFyeS5jaG1vZCgwbzYwMClcbiAgICBvcy5yZXBsYWNlKHRlbXBvcmFyeSwgcGF0aClcblxuXG5kZWYgc3RvcCgqXyk6XG4gICAgZ2xvYmFsIHN0b3BwaW5nXG4gICAgc3RvcHBpbmcgPSBUcnVlXG4gICAgaWYgY2hpbGQ6XG4gICAgICAgIGNoaWxkLnRlcm1pbmF0ZSgpXG5cblxuc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgc3RvcClcbnNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc3RvcClcbndoaWxlIG5vdCBzdG9wcGluZzpcbiAgICBwZW5kaW5nX3BhdGggPSBST09UIC8gJ3BlbmRpbmcuanNvbidcbiAgICBwZW5kaW5nID0ganNvbi5sb2FkcyhwZW5kaW5nX3BhdGgucmVhZF90ZXh0KCkpIGlmIHBlbmRpbmdfcGF0aC5leGlzdHMoKSBlbHNlIE5vbmVcbiAgICBjdXJyZW50ID0ganNvbi5sb2FkcygoUk9PVCAvICdjdXJyZW50Lmpzb24nKS5yZWFkX3RleHQoKSlcbiAgICByZWFkeSA9IFJPT1QgLyAncmVhZHknXG4gICAgcmVhZHkudW5saW5rKG1pc3Npbmdfb2s9VHJ1ZSlcbiAgICBjaGlsZCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCBzdHIoUGF0aChjdXJyZW50KSAvICdhZ2VudC5weScpXSlcbiAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyA2MFxuICAgIHdoaWxlIGNoaWxkLnBvbGwoKSBpcyBOb25lIGFuZCBub3QgcmVhZHkuZXhpc3RzKCkgYW5kIHRpbWUubW9ub3RvbmljKCkgPCBkZWFkbGluZSBhbmQgbm90IHN0b3BwaW5nOlxuICAgICAgICB0aW1lLnNsZWVwKDEpXG4gICAgaWYgcmVhZHkuZXhpc3RzKCk6XG4gICAgICAgIGlmIHBlbmRpbmc6XG4gICAgICAgICAgICBwZW5kaW5nX3BhdGgudW5saW5rKG1pc3Npbmdfb2s9VHJ1ZSlcbiAgICAgICAgICAgIChST09UIC8gJ2ZhaWx1cmUuanNvbicpLnVubGluayhtaXNzaW5nX29rPVRydWUpXG4gICAgICAgIHJlc3VsdCA9IGNoaWxkLndhaXQoKVxuICAgICAgICBpZiByZXN1bHQgPT0gNzU6XG4gICAgICAgICAgICBjb250aW51ZVxuICAgIGVsaWYgcGVuZGluZyBhbmQgbm90IHN0b3BwaW5nOlxuICAgICAgICBjaGlsZC50ZXJtaW5hdGUoKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBjaGlsZC53YWl0KHRpbWVvdXQ9MTApXG4gICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOlxuICAgICAgICAgICAgY2hpbGQua2lsbCgpXG4gICAgICAgICAgICBjaGlsZC53YWl0KClcbiAgICAgICAgd3JpdGUoUk9PVCAvICdjdXJyZW50Lmpzb24nLCBwZW5kaW5nWydwcmV2aW91cyddKVxuICAgICAgICB3cml0ZShST09UIC8gJ2ZhaWx1cmUuanNvbicsIGRpY3QodmVyc2lvbj1wZW5kaW5nWyd2ZXJzaW9uJ10sIGVycm9yPSdTdGFydHVwSGVhbHRoQ2hlY2tGYWlsZWQnKSlcbiAgICAgICAgcGVuZGluZ19wYXRoLnVubGluayhtaXNzaW5nX29rPVRydWUpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgZWxzZTpcbiAgICAgICAgY2hpbGQudGVybWluYXRlKClcbiAgICAgICAgY2hpbGQud2FpdCgpXG4gICAgaWYgbm90IHN0b3BwaW5nOlxuICAgICAgICB0aW1lLnNsZWVwKDUpXG4iLCJjb25maWd1cmVfY2kucHkiOiJcIlwiXCJQbGFjZSBEb2NrZXIgZXhlY3V0b3Igam9icy9zZXJ2aWNlcyBhbmQgY2xhc3NpYyBidWlsZHMgYmVsb3cgY29tcHV0ZS5cbk9ubHkgaW50ZW5kZWQgZmllbGRzIG1heSBjaGFuZ2U7IHRva2VucyBhbmQgdW5yZWxhdGVkIHJ1bm5lciBzZXR0aW5ncyBhcmVcbmNvbXBhcmVkIGluIG1lbW9yeSBhbmQgbmV2ZXIgcHJpbnRlZC4gRXhpc3Rpbmcgam9icyBhcmUgbm90IHJlc3RhcnRlZC5cblwiXCJcIlxuaW1wb3J0IGNvcHlcbmltcG9ydCBqc29uXG5pbXBvcnQgb3NcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuaW1wb3J0IHJlXG5pbXBvcnQgdGltZVxuaW1wb3J0IHRvbWxsaWJcblxuXG5kZWYgcmVwbGFjZV9maWVsZChib2R5LCBuYW1lLCB2YWx1ZSk6XG4gICAgbGluZSA9IG5hbWUgKyAnID0gJyArIGpzb24uZHVtcHModmFsdWUpICsgJ1xcbidcbiAgICBwYXR0ZXJuID0gcicoP20pXlxccyonICsgcmUuZXNjYXBlKG5hbWUpICsgcidcXHMqPS4qXFxuJ1xuICAgIHJldHVybiByZS5zdWIocGF0dGVybiwgbGFtYmRhIF86IGxpbmUsIGJvZHkpIGlmIHJlLnNlYXJjaChwYXR0ZXJuLCBib2R5KSBlbHNlIGJvZHkgKyBsaW5lXG5cblxuZGVmIGNvbmZpZ3VyZSgpOlxuICAgIHBhdGggPSBQYXRoKCcvZXRjL2dpdGxhYi1ydW5uZXIvY29uZmlnLnRvbWwnKVxuICAgIGlmIG5vdCBwYXRoLmV4aXN0cygpOlxuICAgICAgICByZXR1cm5cbiAgICBvcmlnaW5hbCA9IHBhdGgucmVhZF90ZXh0KClcbiAgICBwYXJzZWQgPSB0b21sbGliLmxvYWRzKG9yaWdpbmFsKVxuICAgIGV4cGVjdGVkID0gY29weS5kZWVwY29weShwYXJzZWQpXG4gICAgZm9yIHJ1bm5lciBpbiBleHBlY3RlZC5nZXQoJ3J1bm5lcnMnLCBbXSk6XG4gICAgICAgIGlmIHJ1bm5lci5nZXQoJ2V4ZWN1dG9yJykgIT0gJ2RvY2tlcic6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdBdXRvbWF0aWMgQ0kgcHJpb3JpdGl6YXRpb24gcmVxdWlyZXMgdGhlIERvY2tlciBleGVjdXRvcicpXG4gICAgICAgIGVudmlyb25tZW50ID0gW2l0ZW0gZm9yIGl0ZW0gaW4gcnVubmVyLmdldCgnZW52aXJvbm1lbnQnLCBbXSkgaWYgbm90IGl0ZW0uc3RhcnRzd2l0aCgnQ0lfRE9DS0VSX0NHUk9VUF9QQVJFTlQ9JyldXG4gICAgICAgIHJ1bm5lclsnZW52aXJvbm1lbnQnXSA9IGVudmlyb25tZW50ICsgWydDSV9ET0NLRVJfQ0dST1VQX1BBUkVOVD1jaS5zbGljZSddXG4gICAgICAgIHJ1bm5lci5zZXRkZWZhdWx0KCdkb2NrZXInLCB7fSkudXBkYXRlKGNncm91cF9wYXJlbnQ9J2NpLnNsaWNlJywgc2VydmljZV9jZ3JvdXBfcGFyZW50PSdjaS5zbGljZScpXG4gICAgYmxvY2tzID0gcmUuc3BsaXQocicoP20pXlxccypcXFtcXFtydW5uZXJzXFxdXFxdXFxzKlxcbicsIG9yaWdpbmFsKVxuICAgIGlmIGxlbihibG9ja3MpIC0gMSAhPSBsZW4oZXhwZWN0ZWQuZ2V0KCdydW5uZXJzJywgW10pKTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5zdXBwb3J0ZWQgcnVubmVyIGNvbmZpZ3VyYXRpb24gbGF5b3V0JylcbiAgICB1cGRhdGVkID0gYmxvY2tzWzBdXG4gICAgZm9yIGJsb2NrLCBydW5uZXIgaW4gemlwKGJsb2Nrc1sxOl0sIGV4cGVjdGVkLmdldCgncnVubmVycycsIFtdKSk6XG4gICAgICAgIHNlY3Rpb25zID0gcmUuc3BsaXQocicoP20pXihcXHMqXFxbW15cXG5dK1xcXVxccypcXG4pJywgYmxvY2spXG4gICAgICAgIHNlY3Rpb25zWzBdID0gcmVwbGFjZV9maWVsZChzZWN0aW9uc1swXSwgJ2Vudmlyb25tZW50JywgcnVubmVyWydlbnZpcm9ubWVudCddKVxuICAgICAgICBmb3VuZCA9IEZhbHNlXG4gICAgICAgIGZvciBpbmRleCBpbiByYW5nZSgxLCBsZW4oc2VjdGlvbnMpLCAyKTpcbiAgICAgICAgICAgIGlmIHNlY3Rpb25zW2luZGV4XS5zdHJpcCgpID09ICdbcnVubmVycy5kb2NrZXJdJzpcbiAgICAgICAgICAgICAgICBib2R5ID0gcmVwbGFjZV9maWVsZChzZWN0aW9uc1tpbmRleCArIDFdLCAnY2dyb3VwX3BhcmVudCcsICdjaS5zbGljZScpXG4gICAgICAgICAgICAgICAgc2VjdGlvbnNbaW5kZXggKyAxXSA9IHJlcGxhY2VfZmllbGQoYm9keSwgJ3NlcnZpY2VfY2dyb3VwX3BhcmVudCcsICdjaS5zbGljZScpXG4gICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlXG4gICAgICAgIGlmIG5vdCBmb3VuZDpcbiAgICAgICAgICAgIHNlY3Rpb25zICs9IFsnXFxuW3J1bm5lcnMuZG9ja2VyXVxcbicsICdjZ3JvdXBfcGFyZW50ID0gXCJjaS5zbGljZVwiXFxuc2VydmljZV9jZ3JvdXBfcGFyZW50ID0gXCJjaS5zbGljZVwiXFxuJ11cbiAgICAgICAgdXBkYXRlZCArPSAnW1tydW5uZXJzXV1cXG4nICsgJycuam9pbihzZWN0aW9ucylcbiAgICBpZiB0b21sbGliLmxvYWRzKHVwZGF0ZWQpICE9IGV4cGVjdGVkOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdSdW5uZXIgY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDsgbm8gY2hhbmdlcyB3cml0dGVuJylcbiAgICBpZiB1cGRhdGVkICE9IG9yaWdpbmFsOlxuICAgICAgICBiYWNrdXAgPSBwYXRoLndpdGhfbmFtZSgnY29uZmlnLnRvbWwuYmVmb3JlLWNvbXB1dGUtJyArIHN0cih0aW1lLnRpbWVfbnMoKSkpXG4gICAgICAgIGJhY2t1cC53cml0ZV90ZXh0KG9yaWdpbmFsKVxuICAgICAgICBiYWNrdXAuY2htb2QoMG82MDApXG4gICAgICAgIHRlbXBvcmFyeSA9IHBhdGgud2l0aF9uYW1lKCdjb25maWcudG9tbC5jb21wdXRlLXBlbmRpbmcnKVxuICAgICAgICB0ZW1wb3Jhcnkud3JpdGVfdGV4dCh1cGRhdGVkKVxuICAgICAgICB0ZW1wb3JhcnkuY2htb2QoMG82MDApXG4gICAgICAgIG9zLnJlcGxhY2UodGVtcG9yYXJ5LCBwYXRoKVxuICAgIHNsaWNlX3BhdGggPSBQYXRoKCcvZXRjL3N5c3RlbWQvc3lzdGVtL2NpLnNsaWNlJylcbiAgICBpZiBub3Qgc2xpY2VfcGF0aC5leGlzdHMoKTpcbiAgICAgICAgc2xpY2VfcGF0aC53cml0ZV90ZXh0KCdbU2xpY2VdXFxuQ1BVV2VpZ2h0PTEwXFxuSU9XZWlnaHQ9MTBcXG4nKVxuIiwiaW5zdGFsbC5weSI6IlwiXCJcIk9uZS1tYWNoaW5lIGVucm9sbG1lbnQgd2l0aCByZXRyeS1zYWZlIGNyZWRlbnRpYWwgZXhjaGFuZ2UgYW5kIHJlYWRpbmVzcyBjaGVjay5cIlwiXCJcbmltcG9ydCBmY250bFxuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5pbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHN5c1xuaW1wb3J0IHRpbWVcbmltcG9ydCB1cmxsaWIuZXJyb3JcbmltcG9ydCB1cmxsaWIucmVxdWVzdFxuaW1wb3J0IHV1aWRcblxuZnJvbSBwcmVwYXJlX21hY2hpbmUgaW1wb3J0IHByZXBhcmVcblxuUk9PVCA9IFBhdGgoJy9vcHQvZGdlLXdvcmtlcicpXG5cblxuY2xhc3MgUmV0cnlhYmxlRXJyb3IoUnVudGltZUVycm9yKTpcbiAgICBwYXNzXG5cblxuY2xhc3MgTm9SZWRpcmVjdCh1cmxsaWIucmVxdWVzdC5IVFRQUmVkaXJlY3RIYW5kbGVyKTpcbiAgICBkZWYgcmVkaXJlY3RfcmVxdWVzdChzZWxmLCAqYXJncywgKiprd2FyZ3MpOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBzZXR1cCBzZXJ2ZXIgcmVkaXJlY3RlZCB0aGlzIHJlcXVlc3QuIEFzayB5b3VyIGFkbWluaXN0cmF0b3IgZm9yIGEgY3VycmVudCBsaW5rLicpXG5cblxuSFRUUCA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcihOb1JlZGlyZWN0KCkpXG5CUk9XU0VSX1VBID0gJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyOC4wLjAuMCBTYWZhcmkvNTM3LjM2J1xuXG5cbmRlZiBhbGxvd2VkX29yaWdpbihvcmlnaW4pOlxuICAgIGlmIG9yaWdpbi5zdGFydHN3aXRoKCdodHRwczovLycpOlxuICAgICAgICByZXR1cm4gVHJ1ZVxuICAgIGlmIG5vdCBvcmlnaW4uc3RhcnRzd2l0aCgnaHR0cDovLycpOlxuICAgICAgICByZXR1cm4gRmFsc2VcbiAgICBob3N0ID0gb3JpZ2luLnNwbGl0KCc6Ly8nLCAxKVstMV0uc3BsaXQoJy8nLCAxKVswXS5zcGxpdCgnOicsIDEpWzBdXG4gICAgcmV0dXJuIGhvc3QgaW4gKCcxMjcuMC4wLjEnLCAnbG9jYWxob3N0JywgJzo6MScpXG5cblxuZGVmIHBvc3Qob3JpZ2luLCBlbmRwb2ludCwgdG9rZW4sIHBheWxvYWQpOlxuICAgIGlmIG5vdCBhbGxvd2VkX29yaWdpbihvcmlnaW4pOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBzZXR1cCBsaW5rIG11c3QgdXNlIGEgc2VjdXJlIEhUVFBTIHNlcnZlci4nKVxuICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KG9yaWdpbiArICcvY29tcHV0ZV9mbGVldC8nICsgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMocGF5bG9hZCkuZW5jb2RlKCksIG1ldGhvZD0nUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRva2VuLCAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBCUk9XU0VSX1VBLCAnbmdyb2stc2tpcC1icm93c2VyLXdhcm5pbmcnOiAnMSd9KVxuICAgIHRyeTpcbiAgICAgICAgd2l0aCBIVFRQLm9wZW4ocmVxdWVzdCwgdGltZW91dD0yMCkgYXMgcmVzcG9uc2U6XG4gICAgICAgICAgICBib2R5ID0gcmVzcG9uc2UucmVhZCg2NTUzNylcbiAgICAgICAgICAgIGlmIGxlbihib2R5KSA+IDY1NTM2OlxuICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHNldHVwIHNlcnZlciByZXR1cm5lZCBhbiBpbnZhbGlkIHJlc3BvbnNlLicpXG4gICAgICAgICAgICByZXR1cm4ganNvbi5sb2Fkcyhib2R5KVxuICAgIGV4Y2VwdCB1cmxsaWIuZXJyb3IuSFRUUEVycm9yIGFzIGVycm9yOlxuICAgICAgICBpZiBlcnJvci5jb2RlIGluICg0MDEsIDQwMywgNDEwKTpcbiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhpcyBzZXR1cCBsaW5rIGhhcyBleHBpcmVkLCB3YXMgcmVwbGFjZWQsIG9yIGJlbG9uZ3MgdG8gYW5vdGhlciBtYWNoaW5lLiBBc2sgeW91ciBhZG1pbmlzdHJhdG9yIGZvciBhIG5ldyBsaW5rLicpIGZyb20gTm9uZVxuICAgICAgICByYWlzZSBSZXRyeWFibGVFcnJvcignVGhlIHNldHVwIHNlcnZlciBpcyB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZS4gUnVuIHRoZSBzYW1lIGluc3RhbGxlciBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicpIGZyb20gTm9uZVxuICAgIGV4Y2VwdCB1cmxsaWIuZXJyb3IuVVJMRXJyb3I6XG4gICAgICAgIHJhaXNlIFJldHJ5YWJsZUVycm9yKCdDYW5ub3QgcmVhY2ggdGhlIHNldHVwIHNlcnZlci4gQ2hlY2sgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uIGFuZCBydW4gdGhlIGluc3RhbGxlciBhZ2Fpbi4nKSBmcm9tIE5vbmVcblxuXG5kZWYgaGFyZHdhcmUoKTpcbiAgICB0b3RhbF9rYiA9IG5leHQoaW50KGxpbmUuc3BsaXQoKVsxXSkgZm9yIGxpbmUgaW4gUGF0aCgnL3Byb2MvbWVtaW5mbycpLnJlYWRfdGV4dCgpLnNwbGl0bGluZXMoKSBpZiBsaW5lLnN0YXJ0c3dpdGgoJ01lbVRvdGFsOicpKVxuICAgIHJlc2VydmF0aW9uID0gUGF0aCgnL3N5cy9mcy9jZ3JvdXAvY2kuc2xpY2UvbWVtb3J5Lm1heCcpXG4gICAgcmVzZXJ2ZWQgPSByZXNlcnZhdGlvbi5yZWFkX3RleHQoKS5zdHJpcCgpIGlmIHJlc2VydmF0aW9uLmV4aXN0cygpIGVsc2UgJydcbiAgICByZXR1cm4geydtZW1vcnlfYnl0ZXMnOiB0b3RhbF9rYiAqIDEwMjQsICdsb2dpY2FsX2NwdXMnOiBvcy5jcHVfY291bnQoKSBvciAxLFxuICAgICAgICAgICAgJ2NpX21lbW9yeV9yZXNlcnZlZF9ieXRlcyc6IGludChyZXNlcnZlZCkgaWYgcmVzZXJ2ZWQuaXNkaWdpdCgpIGVsc2UgTm9uZX1cblxuXG5kZWYgZGlyZWN0X2lkZW50aXR5KGludml0YXRpb24pOlxuICAgIGlmIG5vdCBpbnZpdGF0aW9uLmdldCgnd29ya2VyX2lkJyk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgdHJ5OlxuICAgICAgICBzdGF0dXMgPSBwb3N0KGludml0YXRpb25bJ29yaWdpbiddLCAnc3RhdHVzJywgaW52aXRhdGlvblsndG9rZW4nXSwge30pXG4gICAgZXhjZXB0IFJldHJ5YWJsZUVycm9yOlxuICAgICAgICByYWlzZVxuICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgaWYgc3RhdHVzLmdldCgnd29ya2VyX2lkJykgIT0gaW52aXRhdGlvblsnd29ya2VyX2lkJ106XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ29yaWdpbic6IGludml0YXRpb25bJ29yaWdpbiddLFxuICAgICAgICAndG9rZW4nOiBpbnZpdGF0aW9uWyd0b2tlbiddLFxuICAgICAgICAnd29ya2VyX2lkJzogaW52aXRhdGlvblsnd29ya2VyX2lkJ10sXG4gICAgICAgICd3b3JrZXJfbmFtZSc6IHN0YXR1cy5nZXQoJ3dvcmtlcl9uYW1lJyksXG4gICAgfVxuXG5cbmRlZiBzdG9yZV9pZGVudGl0eShpZGVudGl0eSk6XG4gICAgdGVtcG9yYXJ5ID0gUk9PVCAvICdpZGVudGl0eS5wZW5kaW5nJ1xuICAgIHRlbXBvcmFyeS53cml0ZV90ZXh0KGpzb24uZHVtcHMoaWRlbnRpdHkpKVxuICAgIHRlbXBvcmFyeS5jaG1vZCgwbzYwMClcbiAgICB0ZW1wb3JhcnkucmVwbGFjZShST09UIC8gJ2lkZW50aXR5Lmpzb24nKVxuICAgIHJldHVybiBpZGVudGl0eVxuXG5cbmRlZiBlbnJvbGxtZW50KHNvdXJjZSk6XG4gICAgaW52aXRhdGlvbiA9IGpzb24ubG9hZHMoKHNvdXJjZSAvICdpbnZpdGF0aW9uLmpzb24nKS5yZWFkX3RleHQoKSlcbiAgICBpZGVudGl0eSA9IFJPT1QgLyAnaWRlbnRpdHkuanNvbidcbiAgICBpZiBpZGVudGl0eS5leGlzdHMoKTpcbiAgICAgICAgZXhpc3RpbmcgPSBqc29uLmxvYWRzKGlkZW50aXR5LnJlYWRfdGV4dCgpKVxuICAgICAgICBzdGF0dXMgPSBwb3N0KGV4aXN0aW5nWydvcmlnaW4nXSwgJ3N0YXR1cycsIGV4aXN0aW5nWyd0b2tlbiddLCB7fSlcbiAgICAgICAgaWYgZXhpc3RpbmdbJ29yaWdpbiddICE9IGludml0YXRpb25bJ29yaWdpbiddIG9yIHN0YXR1c1snd29ya2VyX2lkJ10gIT0gaW52aXRhdGlvblsnd29ya2VyX2lkJ106XG4gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoaXMgY29tcHV0ZXIgaXMgYWxyZWFkeSBjb25uZWN0ZWQgdG8gYW5vdGhlciBzZXJ2ZXIuIEFzayB5b3VyIGFkbWluaXN0cmF0b3IgYmVmb3JlIGNoYW5naW5nIGl0LicpXG4gICAgICAgIHJldHVybiBleGlzdGluZ1xuICAgIGFwcHJvdmVkID0gZGlyZWN0X2lkZW50aXR5KGludml0YXRpb24pXG4gICAgaWYgYXBwcm92ZWQ6XG4gICAgICAgIHJldHVybiBzdG9yZV9pZGVudGl0eShhcHByb3ZlZClcbiAgICBjbGFpbSA9IFJPT1QgLyAnc2V0dXAtY2xhaW0nXG4gICAgaWYgbm90IGNsYWltLmV4aXN0cygpOlxuICAgICAgICBjbGFpbS53cml0ZV90ZXh0KHN0cih1dWlkLnV1aWQ0KCkpKVxuICAgICAgICBjbGFpbS5jaG1vZCgwbzYwMClcbiAgICByZXN1bHQgPSBwb3N0KGludml0YXRpb25bJ29yaWdpbiddLCAnc2V0dXAvcmVkZWVtJywgaW52aXRhdGlvblsndG9rZW4nXSwgeydjbGFpbV9pZCc6IGNsYWltLnJlYWRfdGV4dCgpLCAnaGFyZHdhcmUnOiBoYXJkd2FyZSgpfSlcbiAgICByZXR1cm4gc3RvcmVfaWRlbnRpdHkocmVzdWx0KVxuXG5cbmRlZiB3YWl0X3VudGlsX3JlYWR5KGlkZW50aXR5KTpcbiAgICBwcmludCgnQ29ubmVjdGluZyBhbmQgZG93bmxvYWRpbmcgdGhlIHdvcmtlciBzb2Z0d2FyZS4gVGhpcyBjYW4gdGFrZSBzZXZlcmFsIG1pbnV0ZXMuLi4nLCBmbHVzaD1UcnVlKVxuICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIDYwMFxuICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgPCBkZWFkbGluZTpcbiAgICAgICAgdHJ5OlxuICAgICAgICAgICAgc3RhdHVzID0gcG9zdChpZGVudGl0eVsnb3JpZ2luJ10sICdzdGF0dXMnLCBpZGVudGl0eVsndG9rZW4nXSwge30pXG4gICAgICAgIGV4Y2VwdCBSZXRyeWFibGVFcnJvcjpcbiAgICAgICAgICAgIHRpbWUuc2xlZXAoMylcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIHN0YXRlID0gc3RhdHVzWydzdGF0ZSddXG4gICAgICAgIGlmIHN0YXRlIGluICgncmVhZHknLCAnYnVzeScsICdsb3cgYmF0dGVyeScsICdkcmFpbmluZycpOlxuICAgICAgICAgICAgcHJpbnQoJ1xcbkNvbm5lY3RlZCEgVGhpcyBjb21wdXRlciBpcyBub3cgYW4gb2ZmaWNpYWwgd29ya2VyLicsIGZsdXNoPVRydWUpXG4gICAgICAgICAgICBpZiBzdGF0ZSBpbiAoJ2xvdyBiYXR0ZXJ5JywgJ2RyYWluaW5nJyk6XG4gICAgICAgICAgICAgICAgcHJpbnQoJ05ldyB0YXNrcyBhcmUgcGF1c2VkOiAnICsgc3RhdGUgKyAnLicsIGZsdXNoPVRydWUpXG4gICAgICAgICAgICBwcmludCgnWW91IGNhbiBjbG9zZSB0aGlzIHdpbmRvdyBhbmQgZGVsZXRlIHRoZSBkb3dubG9hZGVkIGluc3RhbGxlci4gVGhlIHdvcmtlciBzdGFydHMgYXV0b21hdGljYWxseSBhZnRlciBhIHJlc3RhcnQuJywgZmx1c2g9VHJ1ZSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiBzdGF0dXMuZ2V0KCd1cGRhdGVfZXJyb3InKTpcbiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIGNvbXB1dGVyIGNvbm5lY3RlZCwgYnV0IHRoZSB3b3JrZXIgc29mdHdhcmUgY291bGQgbm90IHN0YXJ0LiBZb3VyIGFkbWluaXN0cmF0b3IgY2FuIHNlZSB0aGUgdXBkYXRlIGZhaWx1cmUgaW4gQ29tcHV0ZSBXb3JrZXJzLicpXG4gICAgICAgIHRpbWUuc2xlZXAoMylcbiAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBjb21wdXRlciBpcyBlbnJvbGxlZCwgYnV0IHRoZSBmaXJzdCBkb3dubG9hZCBpcyBzdGlsbCB0YWtpbmcgdGltZS4gQXNrIHlvdXIgYWRtaW5pc3RyYXRvciB0byBjaGVjayBDb21wdXRlIFdvcmtlcnM7IHlvdSBjYW4gc2FmZWx5IHJlcnVuIHRoaXMgaW5zdGFsbGVyLicpXG5cblxuZGVmIG1haW4oKTpcbiAgICBzb3VyY2UgPSBQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50XG4gICAgaW52aXRhdGlvbiA9IGpzb24ubG9hZHMoKHNvdXJjZSAvICdpbnZpdGF0aW9uLmpzb24nKS5yZWFkX3RleHQoKSlcbiAgICBjbGFpbSA9IFJPT1QgLyAnc2V0dXAtY2xhaW0nXG4gICAgYWxyZWFkeV9lbnJvbGxlZCA9IChST09UIC8gJ2lkZW50aXR5Lmpzb24nKS5leGlzdHMoKVxuICAgIGlmIGFscmVhZHlfZW5yb2xsZWQ6XG4gICAgICAgIGV4aXN0aW5nID0gZW5yb2xsbWVudChzb3VyY2UpXG4gICAgICAgIGFzc2lnbm1lbnQgPSBwb3N0KGV4aXN0aW5nWydvcmlnaW4nXSwgJ3N0YXR1cycsIGV4aXN0aW5nWyd0b2tlbiddLCB7fSlcbiAgICAgICAgaWYgYXNzaWdubWVudFsnc3RhdGUnXSBpbiAoJ3JlYWR5JywgJ2J1c3knLCAnbG93IGJhdHRlcnknLCAnZHJhaW5pbmcnLCAndXBkYXRpbmcnKTpcbiAgICAgICAgICAgIHdhaXRfdW50aWxfcmVhZHkoZXhpc3RpbmcpXG4gICAgICAgICAgICByZXR1cm5cbiAgICBlbHNlOlxuICAgICAgICBhcHByb3ZlZCA9IGRpcmVjdF9pZGVudGl0eShpbnZpdGF0aW9uKVxuICAgICAgICBpZiBhcHByb3ZlZDpcbiAgICAgICAgICAgIGFzc2lnbm1lbnQgPSBwb3N0KGFwcHJvdmVkWydvcmlnaW4nXSwgJ3N0YXR1cycsIGFwcHJvdmVkWyd0b2tlbiddLCB7fSlcbiAgICAgICAgZWxzZTpcbiAgICAgICAgICAgIGFzc2lnbm1lbnQgPSBwb3N0KGludml0YXRpb25bJ29yaWdpbiddLCAnc2V0dXAvY2hlY2snLCBpbnZpdGF0aW9uWyd0b2tlbiddLCB7J2NsYWltX2lkJzogY2xhaW0ucmVhZF90ZXh0KCkgaWYgY2xhaW0uZXhpc3RzKCkgZWxzZSBOb25lfSlcbiAgICBwcmludCgnQXBwcm92ZWQuIFN0YXJ0aW5nIHNldHVwIG9uIHRoaXMgY29tcHV0ZXIuLi4nLCBmbHVzaD1UcnVlKVxuICAgIHByaW50KCdDaGVja2luZyB0aGlzIGNvbXB1dGVyIGlzIHJlYWR5Li4uJywgZmx1c2g9VHJ1ZSlcbiAgICB0b3RhbF9tYiA9IGhhcmR3YXJlKClbJ21lbW9yeV9ieXRlcyddIC8vICgxMDI0ICogMTAyNClcbiAgICBpZiB0b3RhbF9tYiA8IDIwNDg6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhpcyBjb21wdXRlciBuZWVkcyBhdCBsZWFzdCAyIEdpQiBvZiBSQU0uJylcbiAgICBpZiBhc3NpZ25tZW50LmdldCgnbWVtb3J5X21iJykgYW5kIHRvdGFsX21iIDwgYXNzaWdubWVudFsnbWVtb3J5X21iJ106XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhpcyBjb21wdXRlciBuZWVkcyBhIHNtYWxsZXIgd29ya2VyIGNvbmZpZ3VyYXRpb24uIEFzayB5b3VyIGFkbWluaXN0cmF0b3IgdG8gbG93ZXIgaXRzIG1lbW9yeSBhbGxvY2F0aW9uLCB0aGVuIHJlcnVuIHNldHVwLicpXG4gICAgcHJpbnQoJ1ByZXBhcmluZyB0aGlzIGNvbXB1dGVyLi4uJywgZmx1c2g9VHJ1ZSlcbiAgICBwcmVwYXJlKClcbiAgICBwcmludCgnJCBta2RpciAtcCAvb3B0L2RnZS13b3JrZXIgJiYgY2htb2QgNzAwIC9vcHQvZGdlLXdvcmtlcicsIGZsdXNoPVRydWUpXG4gICAgUk9PVC5ta2Rpcihtb2RlPTBvNzAwLCBwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgUk9PVC5jaG1vZCgwbzcwMClcbiAgICBwcmludCgnU2F2aW5nIHRoaXMgY29tcHV0ZXLigJlzIGNvbm5lY3Rpb24uLi4nLCBmbHVzaD1UcnVlKVxuICAgIGlkZW50aXR5ID0gZW5yb2xsbWVudChzb3VyY2UpXG4gICAgKHNvdXJjZSAvICdlbnJvbGxtZW50Lmpzb24nKS53cml0ZV90ZXh0KGpzb24uZHVtcHMoaWRlbnRpdHkpKVxuICAgIChST09UIC8gJ2ZhaWx1cmUuanNvbicpLnVubGluayhtaXNzaW5nX29rPVRydWUpXG4gICAgcHJpbnQoJ0luc3RhbGxpbmcgdGhlIGJhY2tncm91bmQgd29ya2VyLi4uJywgZmx1c2g9VHJ1ZSlcbiAgICBwcmludCgnJCBweXRob24zIC11IHNldHVwLnB5JywgZmx1c2g9VHJ1ZSlcbiAgICBzdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsICctdScsIHN0cihzb3VyY2UgLyAnc2V0dXAucHknKV0sIGN3ZD1zb3VyY2UsIGNoZWNrPVRydWUpXG4gICAgaWYgYWxyZWFkeV9lbnJvbGxlZDpcbiAgICAgICAgcHJpbnQoJyQgc3lzdGVtY3RsIHJlc3RhcnQgZGdlLXdvcmtlci5zZXJ2aWNlJywgZmx1c2g9VHJ1ZSlcbiAgICAgICAgc3VicHJvY2Vzcy5ydW4oWydzeXN0ZW1jdGwnLCAncmVzdGFydCcsICdkZ2Utd29ya2VyLnNlcnZpY2UnXSwgY2hlY2s9VHJ1ZSlcbiAgICBwcmludCgnJCBzeXN0ZW1jdGwgZGlzYWJsZSAtLW5vdyBoZWF2eS1wcm9jZXNzaW5nLnNlcnZpY2UnLCBmbHVzaD1UcnVlKVxuICAgIHN1YnByb2Nlc3MucnVuKFsnc3lzdGVtY3RsJywgJ2Rpc2FibGUnLCAnLS1ub3cnLCAnaGVhdnktcHJvY2Vzc2luZy5zZXJ2aWNlJ10sIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpXG4gICAgd2FpdF91bnRpbF9yZWFkeShpZGVudGl0eSlcblxuXG5pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOlxuICAgIHRyeTpcbiAgICAgICAgbG9ja19wYXRoID0gUGF0aCgnL3J1bi9kZ2Utd29ya2VyLWluc3RhbGwubG9jaycpXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIGxvY2tfZmlsZSA9IGxvY2tfcGF0aC5vcGVuKCd3JylcbiAgICAgICAgZXhjZXB0IE9TRXJyb3I6XG4gICAgICAgICAgICBsb2NrX3BhdGggPSBQYXRoKCcvdG1wL2RnZS13b3JrZXItaW5zdGFsbC5sb2NrJylcbiAgICAgICAgICAgIGxvY2tfZmlsZSA9IGxvY2tfcGF0aC5vcGVuKCd3JylcbiAgICAgICAgd2l0aCBsb2NrX2ZpbGUgYXMgbG9jazpcbiAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICBmY250bC5mbG9jayhsb2NrLCBmY250bC5MT0NLX0VYIHwgZmNudGwuTE9DS19OQilcbiAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6XG4gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdTZXR1cCBpcyBhbHJlYWR5IHJ1bm5pbmcgaW4gYW5vdGhlciB3aW5kb3cuJykgZnJvbSBOb25lXG4gICAgICAgICAgICBtYWluKClcbiAgICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgT1NFcnJvciwgVmFsdWVFcnJvciwgS2V5RXJyb3IsIHN1YnByb2Nlc3MuU3VicHJvY2Vzc0Vycm9yKSBhcyBlcnJvcjpcbiAgICAgICAgbWVzc2FnZSA9IHN0cihlcnJvcikgaWYgaXNpbnN0YW5jZShlcnJvciwgUnVudGltZUVycm9yKSBlbHNlICdTZXR1cCBjb3VsZCBub3QgZmluaXNoLiBDaGVjayB5b3VyIGNvbm5lY3Rpb24gYW5kIHJlcnVuIHRoZSBzYW1lIGluc3RhbGxlci4gSWYgaXQgc3RpbGwgZmFpbHMsIGFzayB5b3VyIGFkbWluaXN0cmF0b3IgdG8gY2hlY2sgdGhpcyBtYWNoaW5lLidcbiAgICAgICAgcHJpbnQoJ1xcblNldHVwIG5lZWRzIGF0dGVudGlvbjogJyArIG1lc3NhZ2UsIGZsdXNoPVRydWUpXG4gICAgICAgIHByaW50KCdcXG5TZXR1cCBuZWVkcyBhdHRlbnRpb246ICcgKyBtZXNzYWdlLCBmaWxlPXN5cy5zdGRlcnIpXG4gICAgICAgIHN5cy5leGl0KDEpXG4iLCJpbnN0YWxsX21hY29zLnB5IjoiXCJcIlwiQ3JlYXRlIGEgTGltYSBVYnVudHUgVk0gYW5kIHJ1biB0aGUgTGludXggaW5zdGFsbGVyIGluc2lkZSBpdC5cIlwiXCJcbmltcG9ydCBvc1xuaW1wb3J0IHNobGV4XG5pbXBvcnQgc2h1dGlsXG5pbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHN5c1xuaW1wb3J0IHRlbXBmaWxlXG5mcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGhcblxuSU5TVEFOQ0UgPSAnZGdlLXdvcmtlcidcblRFTVBMQVRFID0gJ3RlbXBsYXRlOi8vdWJ1bnR1LTI0LjA0J1xuUFJPWFlfUE9SVCA9IDE4Nzg5XG5QUk9YWV9MQUJFTCA9ICdjb20uZGdlLmNvbXB1dGUtc3RvcmFnZS1wcm94eSdcbk1BQ19CSU4gPSAoJy9vcHQvaG9tZWJyZXcvYmluJywgJy91c3IvbG9jYWwvYmluJylcbkJSRVdfSU5TVEFMTCA9ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vSG9tZWJyZXcvaW5zdGFsbC9IRUFEL2luc3RhbGwuc2gnXG5HVUVTVF9JTlNUQUxMX0ZJTEVTID0gKFxuICAgICdpbnN0YWxsLnB5JywgJ3NldHVwLnB5JywgJ2FnZW50LnB5JywgJ2xhdW5jaGVyLnB5JywgJ2NvbmZpZ3VyZV9jaS5weScsICdwcmVwYXJlX21hY2hpbmUucHknLFxuKVxuR1VFU1RfRElSID0gJy90bXAvZGdlLXdvcmtlci1pbnN0YWxsJ1xuXG5cbmRlZiBwcmVwZW5kX3BhdGgoZGlyZWN0b3J5KTpcbiAgICBpZiBub3QgZGlyZWN0b3J5IG9yIG5vdCBQYXRoKGRpcmVjdG9yeSkuaXNfZGlyKCk6XG4gICAgICAgIHJldHVyblxuICAgIGN1cnJlbnQgPSBvcy5lbnZpcm9uLmdldCgnUEFUSCcsICcnKVxuICAgIHBhcnRzID0gY3VycmVudC5zcGxpdCgnOicpIGlmIGN1cnJlbnQgZWxzZSBbXVxuICAgIGlmIGRpcmVjdG9yeSBub3QgaW4gcGFydHM6XG4gICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGRpcmVjdG9yeSArICgoJzonICsgY3VycmVudCkgaWYgY3VycmVudCBlbHNlICcnKVxuXG5cbmRlZiBhZGRfbWFjX3ByZWZpeGVzKCk6XG4gICAgZm9yIGRpcmVjdG9yeSBpbiAoJy91c3IvbG9jYWwvYmluJywgJy9vcHQvaG9tZWJyZXcvYmluJyk6XG4gICAgICAgIHByZXBlbmRfcGF0aChkaXJlY3RvcnkpXG5cblxuZGVmIHJ1bihhcmdzLCAqKmt3YXJncyk6XG4gICAgcHJpbnQoJyQgJyArIHNobGV4LmpvaW4oc3RyKGl0ZW0pIGZvciBpdGVtIGluIGFyZ3MpLCBmbHVzaD1UcnVlKVxuICAgIHJldHVybiBzdWJwcm9jZXNzLnJ1bihhcmdzLCBjaGVjaz1UcnVlLCAqKmt3YXJncylcblxuXG5kZWYgaG9zdF9yZXNvdXJjZXMoKTpcbiAgICB0cnk6XG4gICAgICAgIG1lbW9yeSA9IGludChzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3N5c2N0bCcsICctbicsICdody5tZW1zaXplJ10pKVxuICAgICAgICBjcHVzID0gaW50KHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc3lzY3RsJywgJy1uJywgJ2h3Lm5jcHUnXSkpXG4gICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IsIE9TRXJyb3IpOlxuICAgICAgICBtZW1vcnkgPSBvcy5zeXNjb25mKCdTQ19QQUdFX1NJWkUnKSAqIG9zLnN5c2NvbmYoJ1NDX1BIWVNfUEFHRVMnKVxuICAgICAgICBjcHVzID0gb3MuY3B1X2NvdW50KCkgb3IgMlxuICAgIHJldHVybiBtZW1vcnksIGNwdXNcblxuXG5kZWYgdm1fc2l6ZShtZW1vcnlfYnl0ZXMsIGNwdXMpOlxuICAgIGltcG9ydCBob3N0X2ludmVudG9yeVxuICAgIHBsYW5uZWQgPSBob3N0X2ludmVudG9yeS5wbGFubmVkX2NhcGFjaXR5X2RhcndpbihtZW1vcnlfYnl0ZXMsIGNwdXMpXG4gICAgaG9zdF9naWIgPSBtYXgobWVtb3J5X2J5dGVzLCAxKSAvLyAoMTAyNCAqKiAzKVxuICAgIGd1ZXN0X2dpYiA9IHBsYW5uZWRbJ21lbW9yeV9ieXRlcyddIC8vICgxMDI0ICoqIDMpXG4gICAgaWYgaG9zdF9naWIgPj0gZ3Vlc3RfZ2liICsgMzpcbiAgICAgICAgZ3Vlc3RfZ2liICs9IDFcbiAgICByZXR1cm4gZ3Vlc3RfZ2liLCBwbGFubmVkWydsb2dpY2FsX2NwdXMnXVxuXG5cbmRlZiBpbnN0YW5jZV9uYW1lcygpOlxuICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFsnbGltYWN0bCcsICdsaXN0JywgJy1xJ10sIGNoZWNrPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHRleHQ9VHJ1ZSlcbiAgICByZXR1cm4ge2xpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiByZXN1bHQuc3Rkb3V0LnNwbGl0bGluZXMoKSBpZiBsaW5lLnN0cmlwKCl9XG5cblxuZGVmIGZpbmRfYnJldygpOlxuICAgIGFkZF9tYWNfcHJlZml4ZXMoKVxuICAgIGZvdW5kID0gc2h1dGlsLndoaWNoKCdicmV3JylcbiAgICBpZiBmb3VuZDpcbiAgICAgICAgcmV0dXJuIGZvdW5kXG4gICAgZm9yIGRpcmVjdG9yeSBpbiBNQUNfQklOOlxuICAgICAgICBjYW5kaWRhdGUgPSBQYXRoKGRpcmVjdG9yeSkgLyAnYnJldydcbiAgICAgICAgaWYgb3MuYWNjZXNzKGNhbmRpZGF0ZSwgb3MuWF9PSyk6XG4gICAgICAgICAgICBwcmVwZW5kX3BhdGgoZGlyZWN0b3J5KVxuICAgICAgICAgICAgcmV0dXJuIHN0cihjYW5kaWRhdGUpXG4gICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgaW5zdGFsbF9ob21lYnJldygpOlxuICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpXG4gICAgZW52WydOT05JTlRFUkFDVElWRSddID0gJzEnXG4gICAgaWYgZW52LmdldCgnU1VET19BU0tQQVNTJyk6XG4gICAgICAgIHdyYXBwZXJfZGlyID0gUGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGdlLXN1ZG8tJykpXG4gICAgICAgIHdyYXBwZXIgPSB3cmFwcGVyX2RpciAvICdzdWRvJ1xuICAgICAgICB3cmFwcGVyLndyaXRlX3RleHQoJyMhL2Jpbi9iYXNoXFxuZXhlYyAvdXNyL2Jpbi9zdWRvIC1BIFwiJEBcIlxcbicpXG4gICAgICAgIHdyYXBwZXIuY2htb2QoMG83MDApXG4gICAgICAgIGVudlsnUEFUSCddID0gc3RyKHdyYXBwZXJfZGlyKSArICc6JyArIGVudi5nZXQoJ1BBVEgnLCAnJylcbiAgICBwcmludCgnSW5zdGFsbGluZyBIb21lYnJldy4gQSBNYWMgcGFzc3dvcmQgZGlhbG9nIG1heSBhcHBlYXIuLi4nLCBmbHVzaD1UcnVlKVxuICAgIHRyeTpcbiAgICAgICAgc2NyaXB0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydjdXJsJywgJy1mc1NMJywgQlJFV19JTlNUQUxMXSlcbiAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcikgYXMgZXJyb3I6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICAgICdDb3VsZCBub3QgZG93bmxvYWQgSG9tZWJyZXcuIENoZWNrIHRoZSBuZXR3b3JrIGFuZCBvcGVuIERvcmlhbiBHcmF5IFdvcmtlciBhZ2Fpbi4nXG4gICAgICAgICkgZnJvbSBlcnJvclxuICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKFsnL2Jpbi9iYXNoJywgJy1zJ10sIGlucHV0PXNjcmlwdCwgZW52PWVudiwgY2hlY2s9RmFsc2UpXG4gICAgaWYgcmVzdWx0LnJldHVybmNvZGU6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICAgICdDb3VsZCBub3QgaW5zdGFsbCBIb21lYnJldy4gQXBwcm92ZSB0aGUgcGFzc3dvcmQgcHJvbXB0IGFuZCBvcGVuIERvcmlhbiBHcmF5IFdvcmtlciBhZ2Fpbi4nXG4gICAgICAgIClcbiAgICBhZGRfbWFjX3ByZWZpeGVzKClcblxuXG5kZWYgZW5zdXJlX2JyZXcoKTpcbiAgICBicmV3ID0gZmluZF9icmV3KClcbiAgICBpZiBicmV3OlxuICAgICAgICByZXR1cm4gYnJld1xuICAgIGluc3RhbGxfaG9tZWJyZXcoKVxuICAgIGJyZXcgPSBmaW5kX2JyZXcoKVxuICAgIGlmIG5vdCBicmV3OlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0hvbWVicmV3IGluc3RhbGxlZCBidXQgYnJldyBpcyBub3Qgb24gUEFUSC4gT3BlbiBEb3JpYW4gR3JheSBXb3JrZXIgYWdhaW4uJylcbiAgICByZXR1cm4gYnJld1xuXG5cbmRlZiBlbnN1cmVfbGltYWN0bCgpOlxuICAgIGFkZF9tYWNfcHJlZml4ZXMoKVxuICAgIGlmIHNodXRpbC53aGljaCgnbGltYWN0bCcpOlxuICAgICAgICByZXR1cm5cbiAgICBicmV3ID0gZW5zdXJlX2JyZXcoKVxuICAgIHByaW50KCdJbnN0YWxsaW5nIExpbWEgKExpbnV4IHZpcnR1YWwgbWFjaGluZSkuIFRoaXMgbWF5IHRha2UgYSBmZXcgbWludXRlcy4uLicsIGZsdXNoPVRydWUpXG4gICAgcnVuKFticmV3LCAnaW5zdGFsbCcsICdsaW1hJ10pXG4gICAgYWRkX21hY19wcmVmaXhlcygpXG4gICAgaWYgbm90IHNodXRpbC53aGljaCgnbGltYWN0bCcpOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0xpbWEgaW5zdGFsbGVkIGJ1dCBsaW1hY3RsIGlzIG5vdCBvbiBQQVRILiBPcGVuIERvcmlhbiBHcmF5IFdvcmtlciBhZ2Fpbi4nKVxuXG5cbmRlZiBzdGFydF92bShtZW1vcnlfZ2liLCBjcHVzKTpcbiAgICBpZiBJTlNUQU5DRSBpbiBpbnN0YW5jZV9uYW1lcygpOlxuICAgICAgICBwcmludCgnU3RhcnRpbmcgdGhlIExpbnV4IHdvcmtlciB2aXJ0dWFsIG1hY2hpbmUuLi4nLCBmbHVzaD1UcnVlKVxuICAgICAgICBydW4oWydsaW1hY3RsJywgJ3N0YXJ0JywgJy0tdHR5PWZhbHNlJywgSU5TVEFOQ0VdKVxuICAgICAgICByZXR1cm5cbiAgICBwcmludCgnQ3JlYXRpbmcgYSBMaW51eCB3b3JrZXIgdmlydHVhbCBtYWNoaW5lLiBUaGUgZmlyc3QgZG93bmxvYWQgY2FuIHRha2Ugc2V2ZXJhbCBtaW51dGVzLi4uJywgZmx1c2g9VHJ1ZSlcbiAgICBydW4oWydsaW1hY3RsJywgJ3N0YXJ0JywgJy0tdHR5PWZhbHNlJywgJy0tbmFtZT0nICsgSU5TVEFOQ0UsICctLXBsYWluJyxcbiAgICAgICAgICctLWNwdXM9JyArIHN0cihjcHVzKSwgJy0tbWVtb3J5PScgKyBzdHIobWVtb3J5X2dpYiksIFRFTVBMQVRFXSlcblxuXG5kZWYgeG1sX3RleHQodmFsdWUpOlxuICAgIHJldHVybiBzdHIodmFsdWUpLnJlcGxhY2UoJyYnLCAnJmFtcDsnKS5yZXBsYWNlKCc8JywgJyZsdDsnKS5yZXBsYWNlKCc+JywgJyZndDsnKVxuXG5cbmRlZiBpbnN0YWxsZXJfc291cmNlKCk6XG4gICAgcmV0dXJuIFBhdGgoX19maWxlX18pLnJlc29sdmUoKS5wYXJlbnRcblxuXG5kZWYgY29weV9ndWVzdF9maWxlKHNvdXJjZSwgbmFtZSk6XG4gICAgcGF0aCA9IHNvdXJjZSAvIG5hbWVcbiAgICBpZiBub3QgcGF0aC5leGlzdHMoKTpcbiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdNYWMgd29ya2VyIGZpbGVzIGFyZSBtaXNzaW5nOiAnICsgbmFtZSlcbiAgICB3aXRoIHBhdGgub3BlbigncmInKSBhcyBoYW5kbGU6XG4gICAgICAgIHJ1bihbJ2xpbWFjdGwnLCAnc2hlbGwnLCBJTlNUQU5DRSwgJ3N1ZG8nLCAndGVlJywgR1VFU1RfRElSICsgJy8nICsgbmFtZV0sXG4gICAgICAgICAgICBzdGRpbj1oYW5kbGUsIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwpXG5cblxuZGVmIGluc3RhbGxfZ3Vlc3RfZnJvbV9hcHAoc291cmNlKTpcbiAgICBydW4oWydsaW1hY3RsJywgJ3NoZWxsJywgSU5TVEFOQ0UsICdzdWRvJywgJ3JtJywgJy1yZicsIEdVRVNUX0RJUl0pXG4gICAgcnVuKFsnbGltYWN0bCcsICdzaGVsbCcsIElOU1RBTkNFLCAnc3VkbycsICdta2RpcicsICctbScsICc3MDAnLCAnLXAnLCBHVUVTVF9ESVJdKVxuICAgIGZvciBuYW1lIGluICgqR1VFU1RfSU5TVEFMTF9GSUxFUywgJ2ludml0YXRpb24uanNvbicpOlxuICAgICAgICBjb3B5X2d1ZXN0X2ZpbGUoc291cmNlLCBuYW1lKVxuICAgIHJ1bihbJ2xpbWFjdGwnLCAnc2hlbGwnLCBJTlNUQU5DRSwgJ3N1ZG8nLCAncHl0aG9uMycsICctdScsIEdVRVNUX0RJUiArICcvaW5zdGFsbC5weSddKVxuXG5cbmRlZiBydW5fbGludXhfaW5zdGFsbGVyKHNjcmlwdCk6XG4gICAgcHJpbnQoJ0luc3RhbGxpbmcgdGhlIHdvcmtlciBpbnNpZGUgdGhlIExpbnV4IHZpcnR1YWwgbWFjaGluZS4uLicsIGZsdXNoPVRydWUpXG4gICAgc291cmNlID0gaW5zdGFsbGVyX3NvdXJjZSgpXG4gICAgaWYgKHNvdXJjZSAvICdpbnZpdGF0aW9uLmpzb24nKS5leGlzdHMoKTpcbiAgICAgICAgaW5zdGFsbF9ndWVzdF9mcm9tX2FwcChzb3VyY2UpXG4gICAgICAgIHJldHVyblxuICAgIHdpdGggUGF0aChzY3JpcHQpLm9wZW4oJ3JiJykgYXMgaGFuZGxlOlxuICAgICAgICBydW4oWydsaW1hY3RsJywgJ3NoZWxsJywgSU5TVEFOQ0UsICdzdWRvJywgJ3RlZScsICcvdG1wL3NldHVwLXdvcmtlci5zaCddLFxuICAgICAgICAgICAgc3RkaW49aGFuZGxlLCBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMKVxuICAgIHJ1bihbJ2xpbWFjdGwnLCAnc2hlbGwnLCBJTlNUQU5DRSwgJ3N1ZG8nLCAnZW52JywgJ0RHRV9HVUVTVF9JTlNUQUxMPTEnLFxuICAgICAgICAgJ2Jhc2gnLCAnL3RtcC9zZXR1cC13b3JrZXIuc2gnXSlcblxuXG5kZWYgaW5zdGFsbF9ob3N0X3Byb3h5KCk6XG4gICAgcHJpbnQoJ1N0YXJ0aW5nIGEgTWFjIG5ldHdvcmsgaGVscGVyIHNvIHBob3RvIHN0b3JhZ2UgdXNlcyB0aGlzIGNvbXB1dGVy4oCZcyBuZXR3b3JrLi4uJywgZmx1c2g9VHJ1ZSlcbiAgICBzdXBwb3J0ID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnQXBwbGljYXRpb24gU3VwcG9ydCcgLyAnZGdlLXdvcmtlcidcbiAgICBzdXBwb3J0Lm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSlcbiAgICBkZXN0aW5hdGlvbiA9IHN1cHBvcnQgLyAnbWFjb3NfcjJfcHJveHkucHknXG4gICAgc2h1dGlsLmNvcHlmaWxlKFBhdGgoX19maWxlX18pLnJlc29sdmUoKS5wYXJlbnQgLyAnbWFjb3NfcjJfcHJveHkucHknLCBkZXN0aW5hdGlvbilcbiAgICBweXRob24gPSB4bWxfdGV4dChzaHV0aWwud2hpY2goJ3B5dGhvbjMnKSBvciAnL3Vzci9iaW4vcHl0aG9uMycpXG4gICAgYWdlbnRzID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnTGF1bmNoQWdlbnRzJ1xuICAgIGFnZW50cy5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpXG4gICAgbG9nID0gUGF0aC5ob21lKCkgLyAnTGlicmFyeScgLyAnTG9ncycgLyAnZGdlLXN0b3JhZ2UtcHJveHkubG9nJ1xuICAgIGxvZy5wYXJlbnQubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKVxuICAgIHBsaXN0ID0gYWdlbnRzIC8gKFBST1hZX0xBQkVMICsgJy5wbGlzdCcpXG4gICAgcGxpc3Qud3JpdGVfdGV4dCgnJyc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgXCItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU5cIiBcImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGRcIj5cbjxwbGlzdCB2ZXJzaW9uPVwiMS4wXCI+XG48ZGljdD5cbiAgPGtleT5MYWJlbDwva2V5PlxuICA8c3RyaW5nPicnJyArIFBST1hZX0xBQkVMICsgJycnPC9zdHJpbmc+XG4gIDxrZXk+UHJvZ3JhbUFyZ3VtZW50czwva2V5PlxuICA8YXJyYXk+XG4gICAgPHN0cmluZz4nJycgKyBweXRob24gKyAnJyc8L3N0cmluZz5cbiAgICA8c3RyaW5nPicnJyArIHhtbF90ZXh0KGRlc3RpbmF0aW9uKSArICcnJzwvc3RyaW5nPlxuICA8L2FycmF5PlxuICA8a2V5PlJ1bkF0TG9hZDwva2V5PlxuICA8dHJ1ZS8+XG4gIDxrZXk+S2VlcEFsaXZlPC9rZXk+XG4gIDx0cnVlLz5cbiAgPGtleT5TdGFuZGFyZE91dFBhdGg8L2tleT5cbiAgPHN0cmluZz4nJycgKyB4bWxfdGV4dChsb2cpICsgJycnPC9zdHJpbmc+XG4gIDxrZXk+U3RhbmRhcmRFcnJvclBhdGg8L2tleT5cbiAgPHN0cmluZz4nJycgKyB4bWxfdGV4dChsb2cpICsgJycnPC9zdHJpbmc+XG48L2RpY3Q+XG48L3BsaXN0PlxuJycnKVxuICAgIHN1YnByb2Nlc3MucnVuKFsnbGF1bmNoY3RsJywgJ3VubG9hZCcsIHN0cihwbGlzdCldLCBjaGVjaz1GYWxzZSwgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTClcbiAgICBydW4oWydsYXVuY2hjdGwnLCAnbG9hZCcsICctdycsIHN0cihwbGlzdCldKVxuXG5cbmRlZiBjb25maWd1cmVfZ3Vlc3RfcHJveHkoKTpcbiAgICBlbnYgPSAnREdFX1NUT1JBR0VfUFJPWFk9aHR0cDovL2hvc3QubGltYS5pbnRlcm5hbDolc1xcbicgJSBQUk9YWV9QT1JUXG4gICAgcnVuKFsnbGltYWN0bCcsICdzaGVsbCcsIElOU1RBTkNFLCAnc3VkbycsICd0ZWUnLCAnL29wdC9kZ2Utd29ya2VyL3Byb3h5LmVudiddLFxuICAgICAgICBpbnB1dD1lbnYuZW5jb2RlKCksIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwpXG4gICAgcnVuKFsnbGltYWN0bCcsICdzaGVsbCcsIElOU1RBTkNFLCAnc3VkbycsICdjaG1vZCcsICc2MDAnLCAnL29wdC9kZ2Utd29ya2VyL3Byb3h5LmVudiddKVxuICAgIHJ1bihbJ2xpbWFjdGwnLCAnc2hlbGwnLCBJTlNUQU5DRSwgJ3N1ZG8nLCAnc3lzdGVtY3RsJywgJ3Jlc3RhcnQnLCAnZGdlLXdvcmtlci5zZXJ2aWNlJ10pXG5cblxuZGVmIG1haW4oc2NyaXB0KTpcbiAgICBpZiBvcy5nZXRldWlkKCkgPT0gMDpcbiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEbyBub3QgcnVuIHRoaXMgaW5zdGFsbGVyIHdpdGggc3VkbyBvbiBhIE1hYy4gUnVuIGl0IGFzIHlvdXJzZWxmLicpXG4gICAgYWRkX21hY19wcmVmaXhlcygpXG4gICAgcHJpbnQoJ1RoaXMgTWFjIHJ1bnMgdGhlIHdvcmtlciBpbnNpZGUgYSBMaW51eCB2aXJ0dWFsIG1hY2hpbmUgc28gdGFzayBpc29sYXRpb24gbWF0Y2hlcyBhIExpbnV4IGhvc3QuJyxcbiAgICAgICAgICBmbHVzaD1UcnVlKVxuICAgIGVuc3VyZV9saW1hY3RsKClcbiAgICBtZW1vcnlfZ2liLCBjcHVzID0gdm1fc2l6ZSgqaG9zdF9yZXNvdXJjZXMoKSlcbiAgICBzdGFydF92bShtZW1vcnlfZ2liLCBjcHVzKVxuICAgIGluc3RhbGxfaG9zdF9wcm94eSgpXG4gICAgcnVuX2xpbnV4X2luc3RhbGxlcihzY3JpcHQpXG4gICAgY29uZmlndXJlX2d1ZXN0X3Byb3h5KClcblxuXG5pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOlxuICAgIHRyeTpcbiAgICAgICAgbWFpbihzeXMuYXJndlsxXSlcbiAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoJ0xpbnV4IHdvcmtlciBzZXR1cCBmYWlsZWQ6ICcgKyAnICcuam9pbihzdHIoaXRlbSkgZm9yIGl0ZW0gaW4gZXJyb3IuY21kKSkgZnJvbSBOb25lXG4gICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlcnJvcjpcbiAgICAgICAgcmFpc2UgU3lzdGVtRXhpdChzdHIoZXJyb3IpKSBmcm9tIE5vbmVcbiIsIm1hY29zX3IyX3Byb3h5LnB5IjoiIyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuXCJcIlwiSG9zdCBIVFRQIGhlbHBlcjogTGltYSBndWVzdHMgc2VuZCBwbGFpbiBIVFRQOyB0aGUgTWFjIGRvZXMgUjIgVExTLlxuXG5TZWN1cmUgVHJhbnNwb3J0IC8gbGFyZ2UgVExTIHJlY29yZHMgZmFpbCBvbiB0aGlzIFdpLUZpIHBhdGggdG8gQ2xvdWRmbGFyZVxuT1JELiBIb21lYnJldyBPcGVuU1NMIHdpdGggbWF4X3NlbmRfZnJhZ21lbnQ9NDA5NiBjb21wbGV0ZXMgMjAgTWlCIFBVVHMuXG5MaXN0ZW5zIG9uIGV2ZXJ5IGludGVyZmFjZSBiZWNhdXNlIHRoZSBndWVzdCByZWFjaGVzIHRoZSBob3N0IGFzXG5ob3N0LmxpbWEuaW50ZXJuYWwuIEdFVCAvdXBsaW5rIHJlcG9ydHMgYW4gdW5wYWNlZCBDbG91ZGZsYXJlIFBVVCBwcm9iZVxub24gdGhlIGhvc3QgTklDLiBPbmx5IEdFVC9QVVQvSEVBRCB0byAqLnIyLmNsb3VkZmxhcmVzdG9yYWdlLmNvbSBhcmVcbmFsbG93ZWQgYXMgc3RvcmFnZS4gVGhlIHdvcmtlciB0b2tlbiBuZXZlciBsZWF2ZXMgdGhlIFZNLlxuXCJcIlwiXG5pbXBvcnQgaHR0cC5jbGllbnRcbmltcG9ydCBpcGFkZHJlc3NcbmltcG9ydCBqc29uXG5pbXBvcnQgb3NcbmltcG9ydCBzb2NrZXRcbmltcG9ydCBzc2xcbmltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgc3lzXG5pbXBvcnQgdGVtcGZpbGVcbmltcG9ydCB0aHJlYWRpbmdcbmltcG9ydCB0aW1lXG5pbXBvcnQgdXJsbGliLnBhcnNlXG5cbkxJU1RFTl9IT1NUID0gJzAuMC4wLjAnXG5MSVNURU5fUE9SVCA9IDE4Nzg5XG5BTExPV0VEX1NVRkZJWCA9ICcucjIuY2xvdWRmbGFyZXN0b3JhZ2UuY29tJ1xuQlVGRkVSID0gNjU1MzZcbkhFQURFUl9MSU1JVCA9IDY1NTM2XG5NQVhfUFVUID0gNTEyICogMTAyNCAqIDEwMjRcbkNVUkwgPSAnL3Vzci9iaW4vY3VybCdcblRMU19TRU5EX0ZSQUdNRU5UID0gMjA0OFxuVExTX1NFTkRfUEFDRSA9IDAuMDAyXG5PUklHSU4gPSB0aHJlYWRpbmcuTG9jaygpXG5GT1JXQVJEX1NLSVAgPSB7J2Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScsICdwcm94eS1hdXRoZW50aWNhdGUnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICAgICAgICAgICAgICAgICd0ZScsICd0cmFpbGVycycsICd0cmFuc2Zlci1lbmNvZGluZycsICd1cGdyYWRlJywgJ2hvc3QnLCAneC1kZ2UtdGFyZ2V0JyxcbiAgICAgICAgICAgICAgICAgJ2V4cGVjdCcsICdjb250ZW50LWxlbmd0aCd9XG5QUk9CRV9IT1NUID0gJ3NwZWVkLmNsb3VkZmxhcmUuY29tJ1xuUFJPQkVfUEFUSCA9ICcvX191cCdcblBST0JFX0JZVEVTID0gMiAqIDEwMjQgKiAxMDI0XG5QUk9CRV9USU1FT1VUID0gMTBcblBST0JFX0lOVEVSVkFMID0gMzAwXG5VUExJTktfUkVBRFkgPSB0aHJlYWRpbmcuRXZlbnQoKVxuVVBMSU5LX0xPQ0sgPSB0aHJlYWRpbmcuTG9jaygpXG5VUExJTksgPSB7J29rJzogTm9uZSwgJ2Jwcyc6IDAsICdwcm9iZWRfYXQnOiAwLjAsICdpZmFjZSc6IE5vbmUsICd3aWZpJzogRmFsc2V9XG5IT1NUX0xPQ0sgPSB0aHJlYWRpbmcuTG9jaygpXG5IT1NUX0lERU5USVRZID0ge31cbkRFU0tUT1BfTUFDID0gKCdtYWMgbWluaScsICdtYWMgc3R1ZGlvJywgJ21hYyBwcm8nLCAnaW1hYycpXG5cblxuZGVmIGNvbW1hbmRfb3V0cHV0KGFyZ3MpOlxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MucnVuKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9NSwgY2hlY2s9RmFsc2UpLnN0ZG91dC5kZWNvZGUoZXJyb3JzPSdyZXBsYWNlJylcbiAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuU3VicHJvY2Vzc0Vycm9yKTpcbiAgICAgICAgcmV0dXJuICcnXG5cblxuZGVmIHBhcnNlX3JvdXRlX2ludGVyZmFjZSh0ZXh0KTpcbiAgICBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoKTpcbiAgICAgICAgc3RyaXBwZWQgPSBsaW5lLnN0cmlwKClcbiAgICAgICAgaWYgc3RyaXBwZWQuc3RhcnRzd2l0aCgnaW50ZXJmYWNlOicpOlxuICAgICAgICAgICAgcmV0dXJuIHN0cmlwcGVkLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKSBvciBOb25lXG4gICAgcmV0dXJuIE5vbmVcblxuXG5kZWYgcGFyc2Vfd2lmaV9kZXZpY2VzKHRleHQpOlxuICAgIGRldmljZXMgPSBzZXQoKVxuICAgIHBvcnQgPSAnJ1xuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0hhcmR3YXJlIFBvcnQ6Jyk6XG4gICAgICAgICAgICBwb3J0ID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkubG93ZXIoKVxuICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnRGV2aWNlOicpIGFuZCBwb3J0OlxuICAgICAgICAgICAgaWYgJ3dpLWZpJyBpbiBwb3J0IG9yIHBvcnQgaW4gKCd3aWZpJywgJ2FpcnBvcnQnLCAnd2xhbicpOlxuICAgICAgICAgICAgICAgIGRldmljZXMuYWRkKGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpKVxuICAgICAgICAgICAgcG9ydCA9ICcnXG4gICAgcmV0dXJuIGRldmljZXNcblxuXG5kZWYgd2lmaV9kZWZhdWx0X3JvdXRlKCk6XG4gICAgaWZhY2UsIHdpZmkgPSBjdXJyZW50X3BhdGgoKVxuICAgIHJldHVybiB3aWZpXG5cblxuZGVmIGN1cnJlbnRfcGF0aCgpOlxuICAgIGlmYWNlID0gcGFyc2Vfcm91dGVfaW50ZXJmYWNlKGNvbW1hbmRfb3V0cHV0KFsnL3NiaW4vcm91dGUnLCAnLW4nLCAnZ2V0JywgJ2RlZmF1bHQnXSkpXG4gICAgd2lmaSA9IGJvb2woaWZhY2UpIGFuZCBpZmFjZSBpbiBwYXJzZV93aWZpX2RldmljZXMoY29tbWFuZF9vdXRwdXQoWycvdXNyL3NiaW4vbmV0d29ya3NldHVwJywgJy1saXN0YWxsaGFyZHdhcmVwb3J0cyddKSlcbiAgICByZXR1cm4gaWZhY2UsIHdpZmlcblxuXG5kZWYgcGFyc2VfaGFyZHdhcmVfcHJvZmlsZSh0ZXh0KTpcbiAgICBuYW1lLCBpZGVudGlmaWVyID0gTm9uZSwgTm9uZVxuICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcygpOlxuICAgICAgICBzdHJpcHBlZCA9IGxpbmUuc3RyaXAoKVxuICAgICAgICBpZiBzdHJpcHBlZC5zdGFydHN3aXRoKCdNb2RlbCBOYW1lOicpOlxuICAgICAgICAgICAgbmFtZSA9IHN0cmlwcGVkLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKSBvciBOb25lXG4gICAgICAgIGVsaWYgc3RyaXBwZWQuc3RhcnRzd2l0aCgnTW9kZWwgSWRlbnRpZmllcjonKTpcbiAgICAgICAgICAgIGlkZW50aWZpZXIgPSBzdHJpcHBlZC5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkgb3IgTm9uZVxuICAgIHJldHVybiBuYW1lLCBpZGVudGlmaWVyXG5cblxuZGVmIGRlc2t0b3BfbWFjKG5hbWUpOlxuICAgIGxvd2VyZWQgPSAobmFtZSBvciAnJykubG93ZXIoKVxuICAgIHJldHVybiBhbnkodG9rZW4gaW4gbG93ZXJlZCBmb3IgdG9rZW4gaW4gREVTS1RPUF9NQUMpXG5cblxuZGVmIHBhcnNlX3Btc2V0X2JhdHQodGV4dCk6XG4gICAgYWMgPSBOb25lXG4gICAgaWYgJ0FDIFBvd2VyJyBpbiB0ZXh0OlxuICAgICAgICBhYyA9IFRydWVcbiAgICBlbGlmICdCYXR0ZXJ5IFBvd2VyJyBpbiB0ZXh0OlxuICAgICAgICBhYyA9IEZhbHNlXG4gICAgcHJlc2VudCA9ICdJbnRlcm5hbEJhdHRlcnknIGluIHRleHRcbiAgICBwZXJjZW50ID0gTm9uZVxuICAgIHN0YXR1cyA9IE5vbmVcbiAgICBmb3IgcGFydCBpbiB0ZXh0LnJlcGxhY2UoJ1xcdCcsICcgJykuc3BsaXQoKTpcbiAgICAgICAgaWYgcGFydC5lbmRzd2l0aCgnJTsnKSBvciBwYXJ0LmVuZHN3aXRoKCclJyk6XG4gICAgICAgICAgICBkaWdpdHMgPSBwYXJ0LnN0cmlwKCclOycpXG4gICAgICAgICAgICBpZiBkaWdpdHMuaXNkaWdpdCgpOlxuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBpbnQoZGlnaXRzKVxuICAgICAgICBsb3dlcmVkID0gcGFydC5zdHJpcCgnOycpLmxvd2VyKClcbiAgICAgICAgaWYgbG93ZXJlZCBpbiAoJ2NoYXJnaW5nJywgJ2Rpc2NoYXJnaW5nJywgJ2NoYXJnZWQnLCAnZmluaXNoaW5nIGNoYXJnZScpOlxuICAgICAgICAgICAgc3RhdHVzID0gbG93ZXJlZC5jYXBpdGFsaXplKCkgaWYgbG93ZXJlZCAhPSAnZmluaXNoaW5nIGNoYXJnZScgZWxzZSAnQ2hhcmdpbmcnXG4gICAgcmV0dXJuIHsnYWNfY29ubmVjdGVkJzogYWMsICdiYXR0ZXJ5X3ByZXNlbnQnOiBwcmVzZW50LCAnYmF0dGVyeV9wZXJjZW50JzogcGVyY2VudCxcbiAgICAgICAgICAgICdiYXR0ZXJ5X3N0YXR1cyc6IHN0YXR1c31cblxuXG5kZWYgaG9zdF9pZGVudGl0eSgpOlxuICAgIHdpdGggSE9TVF9MT0NLOlxuICAgICAgICBpZiBIT1NUX0lERU5USVRZLmdldCgnaGFyZHdhcmVfbW9kZWwnKTpcbiAgICAgICAgICAgIHJldHVybiBkaWN0KEhPU1RfSURFTlRJVFkpXG4gICAgbmFtZSwgaWRlbnRpZmllciA9IHBhcnNlX2hhcmR3YXJlX3Byb2ZpbGUoY29tbWFuZF9vdXRwdXQoWycvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyJywgJ1NQSGFyZHdhcmVEYXRhVHlwZSddKSlcbiAgICBtb2RlbCA9IG5hbWUgb3IgaWRlbnRpZmllclxuICAgIGlkZW50aXR5ID0geydtYW51ZmFjdHVyZXInOiAnQXBwbGUnIGlmIG1vZGVsIGVsc2UgTm9uZSwgJ2hhcmR3YXJlX21vZGVsJzogbW9kZWx9XG4gICAgd2l0aCBIT1NUX0xPQ0s6XG4gICAgICAgIEhPU1RfSURFTlRJVFkudXBkYXRlKGlkZW50aXR5KVxuICAgICAgICByZXR1cm4gZGljdChIT1NUX0lERU5USVRZKVxuXG5cbmRlZiBob3N0X3Bvd2VyKCk6XG4gICAgaWRlbnRpdHkgPSBob3N0X2lkZW50aXR5KClcbiAgICBwb3dlciA9IHBhcnNlX3Btc2V0X2JhdHQoY29tbWFuZF9vdXRwdXQoWycvdXNyL2Jpbi9wbXNldCcsICctZycsICdiYXR0J10pKVxuICAgIGlmIGRlc2t0b3BfbWFjKGlkZW50aXR5LmdldCgnaGFyZHdhcmVfbW9kZWwnKSk6XG4gICAgICAgIHBvd2VyWydiYXR0ZXJ5X3ByZXNlbnQnXSA9IEZhbHNlXG4gICAgICAgIHBvd2VyWydhY19jb25uZWN0ZWQnXSA9IFRydWUgaWYgcG93ZXJbJ2FjX2Nvbm5lY3RlZCddIGlzIE5vbmUgZWxzZSBwb3dlclsnYWNfY29ubmVjdGVkJ11cbiAgICAgICAgcG93ZXJbJ2JhdHRlcnlfcGVyY2VudCddID0gTm9uZVxuICAgICAgICBwb3dlclsnYmF0dGVyeV9zdGF0dXMnXSA9IE5vbmVcbiAgICByZXR1cm4gcG93ZXJcblxuXG5kZWYgcmVxdWVzdF9wYXRoKHJhdyk6XG4gICAgdHJ5OlxuICAgICAgICBfbWV0aG9kLCB0YXJnZXQsIF92ZXJzaW9uID0gcmF3LnNwbGl0KGInXFxyXFxuJywgMSlbMF0uZGVjb2RlKCdhc2NpaScpLnNwbGl0KClcbiAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6XG4gICAgICAgIHJldHVybiAnJ1xuICAgIHJldHVybiB1cmxsaWIucGFyc2UudXJsc3BsaXQodGFyZ2V0KS5wYXRoXG5cblxuZGVmIHByb2JlX2FjY2VwdGVkKHN0YXR1cyk6XG4gICAgcmV0dXJuIHN0YXR1cyBpbiAoMjAwLCA0MDMpXG5cblxuZGVmIHByb2JlX2Nsb3VkZmxhcmUoKTpcbiAgICBzdGFydGVkID0gdGltZS5tb25vdG9uaWMoKVxuICAgIHBheWxvYWQgPSBiJ1xcMCcgKiBQUk9CRV9CWVRFU1xuICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KClcbiAgICBjdHgubWluaW11bV92ZXJzaW9uID0gc3NsLlRMU1ZlcnNpb24uVExTdjFfMlxuICAgIGNvbm4gPSBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oUFJPQkVfSE9TVCwgNDQzLCB0aW1lb3V0PVBST0JFX1RJTUVPVVQsIGNvbnRleHQ9Y3R4KVxuICAgIHRyeTpcbiAgICAgICAgY29ubi5yZXF1ZXN0KCdQVVQnLCBQUk9CRV9QQVRILCBib2R5PXBheWxvYWQsIGhlYWRlcnM9eydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pXG4gICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpXG4gICAgICAgIHJlc3BvbnNlLnJlYWQoKVxuICAgICAgICBlbGFwc2VkID0gbWF4KHRpbWUubW9ub3RvbmljKCkgLSBzdGFydGVkLCAwLjAwMSlcbiAgICAgICAgb2sgPSBwcm9iZV9hY2NlcHRlZChyZXNwb25zZS5zdGF0dXMpXG4gICAgICAgIHJldHVybiBvaywgaW50KFBST0JFX0JZVEVTIC8gZWxhcHNlZCkgaWYgb2sgZWxzZSAwXG4gICAgZXhjZXB0IChPU0Vycm9yLCBzc2wuU1NMRXJyb3IsIGh0dHAuY2xpZW50LkhUVFBFeGNlcHRpb24sIFZhbHVlRXJyb3IpIGFzIGVycm9yOlxuICAgICAgICBsb2dfc3RvcmFnZSgndXBsaW5rIHByb2JlIGZhaWxlZDogJXMnICUgZXJyb3IpXG4gICAgICAgIHJldHVybiBGYWxzZSwgMFxuICAgIGZpbmFsbHk6XG4gICAgICAgIGNvbm4uY2xvc2UoKVxuXG5cbmRlZiByZWZyZXNoX3VwbGluayhmb3JjZT1GYWxzZSk6XG4gICAgaWZhY2UsIHdpZmkgPSBjdXJyZW50X3BhdGgoKVxuICAgIHdpdGggVVBMSU5LX0xPQ0s6XG4gICAgICAgIGFnZSA9IHRpbWUudGltZSgpIC0gKFVQTElOS1sncHJvYmVkX2F0J10gb3IgMClcbiAgICAgICAgY2hhbmdlZCA9IGlmYWNlICE9IFVQTElOS1snaWZhY2UnXSBvciB3aWZpICE9IFVQTElOS1snd2lmaSddXG4gICAgICAgIGlmIG5vdCBmb3JjZSBhbmQgVVBMSU5LWydvayddIGlzIG5vdCBOb25lIGFuZCBub3QgY2hhbmdlZCBhbmQgYWdlIDwgUFJPQkVfSU5URVJWQUw6XG4gICAgICAgICAgICByZXR1cm4gZGljdChVUExJTkspXG4gICAgd2l0aCBPUklHSU46XG4gICAgICAgIG9rLCBicHMgPSBwcm9iZV9jbG91ZGZsYXJlKClcbiAgICB3aXRoIFVQTElOS19MT0NLOlxuICAgICAgICBVUExJTksudXBkYXRlKG9rPW9rLCBicHM9YnBzLCBwcm9iZWRfYXQ9dGltZS50aW1lKCksIGlmYWNlPWlmYWNlLCB3aWZpPXdpZmkpXG4gICAgICAgIHJldHVybiBkaWN0KFVQTElOSylcblxuXG5kZWYgdXBsaW5rX3BheWxvYWQoKTpcbiAgICB3aXRoIFVQTElOS19MT0NLOlxuICAgICAgICBzdGF0ZSA9IGRpY3QoVVBMSU5LKVxuICAgIHBheWxvYWQgPSB7J29rJzogc3RhdGVbJ29rJ10sICdicHMnOiBzdGF0ZVsnYnBzJ10sICdwcm9iZWRfYXQnOiBzdGF0ZVsncHJvYmVkX2F0J10sXG4gICAgICAgICAgICAgICAnaWZhY2UnOiBzdGF0ZVsnaWZhY2UnXSwgJ3dpZmknOiBzdGF0ZVsnd2lmaSddfVxuICAgIHBheWxvYWQudXBkYXRlKGhvc3RfaWRlbnRpdHkoKSlcbiAgICBwYXlsb2FkLnVwZGF0ZShob3N0X3Bvd2VyKCkpXG4gICAgcmV0dXJuIHBheWxvYWRcblxuXG5kZWYgcmVwbHlfanNvbihzb2NrLCBwYXlsb2FkKTpcbiAgICBib2R5ID0ganNvbi5kdW1wcyhwYXlsb2FkKS5lbmNvZGUoKVxuICAgIHNvY2suc2VuZGFsbCgoJ0hUVFAvMS4xIDIwMCBPS1xcclxcbkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxcclxcbkNvbnRlbnQtTGVuZ3RoOiAlc1xcclxcbidcbiAgICAgICAgICAgICAgICAgICdDb25uZWN0aW9uOiBjbG9zZVxcclxcblxcclxcbicgJSBsZW4oYm9keSkpLmVuY29kZSgpICsgYm9keSlcblxuXG5kZWYgdXBsaW5rX2xvb3AoKTpcbiAgICB3aGlsZSBUcnVlOlxuICAgICAgICB0cnk6XG4gICAgICAgICAgICByZWZyZXNoX3VwbGluaygpXG4gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgICAgICBsb2dfc3RvcmFnZSgndXBsaW5rIHByb2JlIGZhaWxlZDogJXMnICUgZXJyb3IpXG4gICAgICAgICAgICBpZmFjZSwgd2lmaSA9IGN1cnJlbnRfcGF0aCgpXG4gICAgICAgICAgICB3aXRoIFVQTElOS19MT0NLOlxuICAgICAgICAgICAgICAgIFVQTElOSy51cGRhdGUob2s9RmFsc2UsIGJwcz0wLCBwcm9iZWRfYXQ9dGltZS50aW1lKCksIGlmYWNlPWlmYWNlLCB3aWZpPXdpZmkpXG4gICAgICAgIFVQTElOS19SRUFEWS5zZXQoKVxuICAgICAgICB0aW1lLnNsZWVwKDUpXG5cblxuZGVmIGFsbG93ZWRfaG9zdChob3N0KTpcbiAgICBob3N0ID0gKGhvc3Qgb3IgJycpLnN0cmlwKCkubG93ZXIoKS5yc3RyaXAoJy4nKVxuICAgIGlmIGhvc3Quc3RhcnRzd2l0aCgnWycpIG9yIG5vdCBob3N0LmVuZHN3aXRoKEFMTE9XRURfU1VGRklYKTpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgcHJlZml4ID0gaG9zdFs6LWxlbihBTExPV0VEX1NVRkZJWCldXG4gICAgaWYgbm90IHByZWZpeDpcbiAgICAgICAgcmV0dXJuIEZhbHNlXG4gICAgZm9yIGxhYmVsIGluIHByZWZpeC5zcGxpdCgnLicpOlxuICAgICAgICBpZiBub3QgbGFiZWwgb3IgbGFiZWwuc3RhcnRzd2l0aCgnLScpIG9yIGxhYmVsLmVuZHN3aXRoKCctJyk6XG4gICAgICAgICAgICByZXR1cm4gRmFsc2VcbiAgICAgICAgaWYgbm90IGFsbChjaGFyYWN0ZXIuaXNhbG51bSgpIG9yIGNoYXJhY3RlciA9PSAnLScgZm9yIGNoYXJhY3RlciBpbiBsYWJlbCk6XG4gICAgICAgICAgICByZXR1cm4gRmFsc2VcbiAgICB0cnk6XG4gICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKGhvc3QpXG4gICAgICAgIHJldHVybiBGYWxzZVxuICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICByZXR1cm4gVHJ1ZVxuXG5cbmRlZiBhbGxvd2VkX3VybCh1cmwpOlxuICAgIHBhcnNlZCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmwgb3IgJycpXG4gICAgaWYgKHBhcnNlZC5zY2hlbWUgIT0gJ2h0dHBzJyBvciBwYXJzZWQudXNlcm5hbWUgb3Igbm90IHBhcnNlZC5ob3N0bmFtZVxuICAgICAgICAgICAgb3IgcGFyc2VkLnBvcnQgbm90IGluIChOb25lLCA0NDMpIG9yIG5vdCBhbGxvd2VkX2hvc3QocGFyc2VkLmhvc3RuYW1lKSk6XG4gICAgICAgIHJldHVybiBOb25lXG4gICAgcmV0dXJuIHBhcnNlZFxuXG5cbmRlZiByZWFkX2hlYWRlcnMoc29jayk6XG4gICAgZGF0YSA9IGInJ1xuICAgIHdoaWxlIGInXFxyXFxuXFxyXFxuJyBub3QgaW4gZGF0YSBhbmQgbGVuKGRhdGEpIDwgSEVBREVSX0xJTUlUOlxuICAgICAgICBjaHVuayA9IHNvY2sucmVjdihIRUFERVJfTElNSVQgLSBsZW4oZGF0YSkpXG4gICAgICAgIGlmIG5vdCBjaHVuazpcbiAgICAgICAgICAgIHJldHVybiBOb25lLCBiJydcbiAgICAgICAgZGF0YSArPSBjaHVua1xuICAgIGlmIGInXFxyXFxuXFxyXFxuJyBub3QgaW4gZGF0YTpcbiAgICAgICAgcmV0dXJuIE5vbmUsIGInJ1xuICAgIGhlYWRlciwgcmVzdCA9IGRhdGEuc3BsaXQoYidcXHJcXG5cXHJcXG4nLCAxKVxuICAgIHJldHVybiBoZWFkZXIsIHJlc3RcblxuXG5kZWYgcGFyc2VfcmVxdWVzdChyYXcpOlxuICAgIHRyeTpcbiAgICAgICAgbGluZXMgPSByYXcuc3BsaXQoYidcXHJcXG4nKVxuICAgICAgICBtZXRob2QsIF90YXJnZXQsIF92ZXJzaW9uID0gbGluZXNbMF0uZGVjb2RlKCdhc2NpaScpLnNwbGl0KClcbiAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6XG4gICAgICAgIHJldHVybiBOb25lLCB7fSwgTm9uZVxuICAgIGhlYWRlcnMgPSB7fVxuICAgIGZvciBsaW5lIGluIGxpbmVzWzE6XTpcbiAgICAgICAgaWYgbm90IGxpbmU6XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBuYW1lLCB2YWx1ZSA9IGxpbmUuZGVjb2RlKCdsYXRpbjEnKS5zcGxpdCgnOicsIDEpXG4gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHt9LCBOb25lXG4gICAgICAgIGhlYWRlcnNbbmFtZS5zdHJpcCgpLmxvd2VyKCldID0gdmFsdWUuc3RyaXAoKVxuICAgIHJldHVybiBtZXRob2QudXBwZXIoKSwgaGVhZGVycywgYWxsb3dlZF91cmwoaGVhZGVycy5nZXQoJ3gtZGdlLXRhcmdldCcpKVxuXG5cbmRlZiByZXBseShzb2NrLCBzdGF0dXMsIHJlYXNvbik6XG4gICAgc29jay5zZW5kYWxsKCgnSFRUUC8xLjEgJXMgJXNcXHJcXG5Db25uZWN0aW9uOiBjbG9zZVxcclxcblxcclxcbicgJSAoc3RhdHVzLCByZWFzb24pKS5lbmNvZGUoKSlcblxuXG5kZWYgY29weV9jbGllbnRfYm9keShjbGllbnQsIHJlc3QsIGxlbmd0aCwgd3JpdGUpOlxuICAgIHNlbnQgPSAwXG4gICAgaWYgcmVzdDpcbiAgICAgICAgdGFrZSA9IHJlc3RbOmxlbmd0aF1cbiAgICAgICAgd3JpdGUodGFrZSlcbiAgICAgICAgc2VudCArPSBsZW4odGFrZSlcbiAgICB3aGlsZSBzZW50IDwgbGVuZ3RoOlxuICAgICAgICBjaHVuayA9IGNsaWVudC5yZWN2KG1pbihCVUZGRVIsIGxlbmd0aCAtIHNlbnQpKVxuICAgICAgICBpZiBub3QgY2h1bms6XG4gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdzaG9ydCBib2R5JylcbiAgICAgICAgd3JpdGUoY2h1bmspXG4gICAgICAgIHNlbnQgKz0gbGVuKGNodW5rKVxuXG5cbmRlZiBwYXJzZV9kdW1wX2hlYWRlcihwYXRoKTpcbiAgICBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGggPSA1MDIsICdCYWQgR2F0ZXdheScsIE5vbmUsIE5vbmVcbiAgICB0cnk6XG4gICAgICAgIHdpdGggb3BlbihwYXRoLCAncicsIGVycm9ycz0ncmVwbGFjZScpIGFzIGhhbmRsZTpcbiAgICAgICAgICAgIHRleHQgPSBoYW5kbGUucmVhZCgpXG4gICAgZXhjZXB0IE9TRXJyb3I6XG4gICAgICAgIHJldHVybiBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGhcbiAgICBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoKTpcbiAgICAgICAgaWYgbGluZS51cHBlcigpLnN0YXJ0c3dpdGgoJ0hUVFAvJyk6XG4gICAgICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoTm9uZSwgMilcbiAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgPj0gMiBhbmQgcGFydHNbMV0uaXNkaWdpdCgpOlxuICAgICAgICAgICAgICAgIHN0YXR1cyA9IGludChwYXJ0c1sxXSlcbiAgICAgICAgICAgICAgICByZWFzb24gPSBwYXJ0c1syXSBpZiBsZW4ocGFydHMpID4gMiBlbHNlICdPSydcbiAgICAgICAgZWxpZiBsaW5lLmxvd2VyKCkuc3RhcnRzd2l0aCgnY29udGVudC10eXBlOicpOlxuICAgICAgICAgICAgY29udGVudF90eXBlID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKClcbiAgICAgICAgZWxpZiBsaW5lLmxvd2VyKCkuc3RhcnRzd2l0aCgnY29udGVudC1sZW5ndGg6Jyk6XG4gICAgICAgICAgICBsZW5ndGggPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKVxuICAgIHJldHVybiBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGhcblxuXG5kZWYgc2VuZF9maWxlKGNsaWVudCwgc3RhdHVzLCByZWFzb24sIGNvbnRlbnRfdHlwZSwgbGVuZ3RoLCBwYXRoLCBza2lwX2JvZHk9RmFsc2UpOlxuICAgIHNpemUgPSBvcy5wYXRoLmdldHNpemUocGF0aCkgaWYgb3MucGF0aC5leGlzdHMocGF0aCkgZWxzZSAwXG4gICAgaWYgbm90IGxlbmd0aCBvciBub3Qgc3RyKGxlbmd0aCkuaXNkaWdpdCgpOlxuICAgICAgICBsZW5ndGggPSBzdHIoc2l6ZSlcbiAgICBoZWFkZXJzID0gWydIVFRQLzEuMSAlcyAlcycgJSAoc3RhdHVzLCByZWFzb24pXVxuICAgIGlmIGNvbnRlbnRfdHlwZTpcbiAgICAgICAgaGVhZGVycy5hcHBlbmQoJ0NvbnRlbnQtVHlwZTogJyArIGNvbnRlbnRfdHlwZSlcbiAgICBoZWFkZXJzLmFwcGVuZCgnQ29udGVudC1MZW5ndGg6ICcgKyBsZW5ndGgpXG4gICAgaGVhZGVycy5hcHBlbmQoJ0Nvbm5lY3Rpb246IGNsb3NlJylcbiAgICBjbGllbnQuc2VuZGFsbCgoJ1xcclxcbicuam9pbihoZWFkZXJzKSArICdcXHJcXG5cXHJcXG4nKS5lbmNvZGUoKSlcbiAgICBpZiBza2lwX2JvZHkgb3Igc3RhdHVzID09IDIwNDpcbiAgICAgICAgcmV0dXJuXG4gICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIHBheWxvYWQ6XG4gICAgICAgIHdoaWxlIGNodW5rIDo9IHBheWxvYWQucmVhZChCVUZGRVIpOlxuICAgICAgICAgICAgY2xpZW50LnNlbmRhbGwoY2h1bmspXG5cblxuZGVmIG9yaWdpbl9zc2woKTpcbiAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpXG4gICAgY3R4Lm1pbmltdW1fdmVyc2lvbiA9IHNzbC5UTFNWZXJzaW9uLlRMU3YxXzJcbiAgICBjdHgubWF4aW11bV92ZXJzaW9uID0gc3NsLlRMU1ZlcnNpb24uVExTdjFfMlxuICAgIGN0eC5tYXhfc2VuZF9mcmFnbWVudCA9IFRMU19TRU5EX0ZSQUdNRU5UXG4gICAgcmV0dXJuIGN0eFxuXG5cbmNsYXNzIE9yaWdpbkhUVFBTQ29ubmVjdGlvbihodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24pOlxuICAgIGRlZiBjb25uZWN0KHNlbGYpOlxuICAgICAgICBzdXBlcigpLmNvbm5lY3QoKVxuICAgICAgICBzZWxmLnNvY2suc2V0dGltZW91dCg2MDApXG4gICAgICAgIHNlbGYuc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwgc29ja2V0LlRDUF9OT0RFTEFZLCAxKVxuXG5cbmRlZiBsb2dfc3RvcmFnZShtZXNzYWdlKTpcbiAgICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UgKyAnXFxuJylcbiAgICBzeXMuc3RkZXJyLmZsdXNoKClcblxuXG5kZWYgb3JpZ2luX3B1dCh1cmksIHJlcXVlc3RfaGVhZGVycywgdXBsb2FkX3BhdGgsIG91dHB1dF9wYXRoKTpcbiAgICBwYXRoID0gdXJpLnBhdGggb3IgJy8nXG4gICAgaWYgdXJpLnF1ZXJ5OlxuICAgICAgICBwYXRoID0gcGF0aCArICc/JyArIHVyaS5xdWVyeVxuICAgIHNpemUgPSBvcy5wYXRoLmdldHNpemUodXBsb2FkX3BhdGgpXG4gICAgbGFzdF9lcnJvciA9IE5vbmVcbiAgICBmb3IgYXR0ZW1wdCBpbiByYW5nZSgzKTpcbiAgICAgICAgY29ubiA9IE9yaWdpbkhUVFBTQ29ubmVjdGlvbih1cmkuaG9zdG5hbWUsIDQ0MywgY29udGV4dD1vcmlnaW5fc3NsKCksIHRpbWVvdXQ9NjAwKVxuICAgICAgICBzZW50ID0gMFxuICAgICAgICBzdGFydGVkID0gdGltZS5tb25vdG9uaWMoKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBjb25uLmNvbm5lY3QoKVxuICAgICAgICAgICAgY29ubi5wdXRyZXF1ZXN0KCdQVVQnLCBwYXRoLCBza2lwX2hvc3Q9RmFsc2UsIHNraXBfYWNjZXB0X2VuY29kaW5nPVRydWUpXG4gICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcmVxdWVzdF9oZWFkZXJzLml0ZW1zKCk6XG4gICAgICAgICAgICAgICAgaWYgbmFtZS5sb3dlcigpIG5vdCBpbiBGT1JXQVJEX1NLSVA6XG4gICAgICAgICAgICAgICAgICAgIGNvbm4ucHV0aGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgY29ubi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgc3RyKHNpemUpKVxuICAgICAgICAgICAgY29ubi5lbmRoZWFkZXJzKClcbiAgICAgICAgICAgIHdpdGggb3Blbih1cGxvYWRfcGF0aCwgJ3JiJykgYXMgcGF5bG9hZDpcbiAgICAgICAgICAgICAgICB3aGlsZSBjaHVuayA6PSBwYXlsb2FkLnJlYWQoVExTX1NFTkRfRlJBR01FTlQpOlxuICAgICAgICAgICAgICAgICAgICBjb25uLnNlbmQoY2h1bmspXG4gICAgICAgICAgICAgICAgICAgIHNlbnQgKz0gbGVuKGNodW5rKVxuICAgICAgICAgICAgICAgICAgICBpZiBUTFNfU0VORF9QQUNFOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcChUTFNfU0VORF9QQUNFKVxuICAgICAgICAgICAgcmVzcG9uc2UgPSBjb25uLmdldHJlc3BvbnNlKClcbiAgICAgICAgICAgIGJvZHkgPSByZXNwb25zZS5yZWFkKClcbiAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgJ3diJykgYXMgb3V0cHV0OlxuICAgICAgICAgICAgICAgIG91dHB1dC53cml0ZShib2R5KVxuICAgICAgICAgICAgbG9nX3N0b3JhZ2UoJ3N0b3JhZ2UgUFVUICVzIGF0dGVtcHQgJXMgb2sgJXMgYnl0ZXMgaW4gJS4xZnMgc3RhdHVzICVzJyAlIChcbiAgICAgICAgICAgICAgICB1cmkuaG9zdG5hbWUsIGF0dGVtcHQgKyAxLCBzZW50LCB0aW1lLm1vbm90b25pYygpIC0gc3RhcnRlZCwgcmVzcG9uc2Uuc3RhdHVzKSlcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnJlYXNvbiBvciAnT0snLCByZXNwb25zZS5nZXRoZWFkZXIoJ0NvbnRlbnQtVHlwZScpLCBzdHIobGVuKGJvZHkpKVxuICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNzbC5TU0xFcnJvciwgaHR0cC5jbGllbnQuSFRUUEV4Y2VwdGlvbikgYXMgZXJyb3I6XG4gICAgICAgICAgICBsYXN0X2Vycm9yID0gZXJyb3JcbiAgICAgICAgICAgIGxvZ19zdG9yYWdlKCdzdG9yYWdlIFBVVCAlcyBhdHRlbXB0ICVzIGZhaWxlZCBhdCAlcy8lcyBieXRlcyBpbiAlLjFmczogJXMnICUgKFxuICAgICAgICAgICAgICAgIHVyaS5ob3N0bmFtZSwgYXR0ZW1wdCArIDEsIHNlbnQsIHNpemUsIHRpbWUubW9ub3RvbmljKCkgLSBzdGFydGVkLCBlcnJvcikpXG4gICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgICBjb25uLmNsb3NlKClcbiAgICByYWlzZSBsYXN0X2Vycm9yXG5cblxuZGVmIGN1cmxfYXJncyhtZXRob2QsIHVyaSwgaGVhZGVyX3BhdGgsIG91dHB1dF9wYXRoLCByZXF1ZXN0X2hlYWRlcnMpOlxuICAgIHVybCA9IHVybGxpYi5wYXJzZS51cmx1bnNwbGl0KCh1cmkuc2NoZW1lLCB1cmkubmV0bG9jLCB1cmkucGF0aCwgdXJpLnF1ZXJ5LCAnJykpXG4gICAgYXJncyA9IFtDVVJMLCAnLXNTJywgJy1nJywgJy00JywgJy0taHR0cDEuMScsICctLXRsc3YxLjInLCAnLS1tYXgtdGltZScsICc2MDAnLFxuICAgICAgICAgICAgJy1YJywgbWV0aG9kLCAnLUQnLCBoZWFkZXJfcGF0aCwgJy1vJywgb3V0cHV0X3BhdGhdXG4gICAgZm9yIG5hbWUsIHZhbHVlIGluIHJlcXVlc3RfaGVhZGVycy5pdGVtcygpOlxuICAgICAgICBpZiBuYW1lLmxvd2VyKCkgbm90IGluIEZPUldBUkRfU0tJUDpcbiAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLUgnLCAnJXM6ICVzJyAlIChuYW1lLCB2YWx1ZSldKVxuICAgIGFyZ3MuYXBwZW5kKHVybClcbiAgICByZXR1cm4gYXJnc1xuXG5cbmRlZiBmZXRjaChjbGllbnQsIG1ldGhvZCwgdXJpLCByZXF1ZXN0X2hlYWRlcnMsIHJlc3QpOlxuICAgIHRyeTpcbiAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSdkZ2UtcjItJykgYXMgZm9sZGVyOlxuICAgICAgICAgICAgaGVhZGVyX3BhdGggPSBvcy5wYXRoLmpvaW4oZm9sZGVyLCAnaGVhZGVycycpXG4gICAgICAgICAgICBvdXRwdXRfcGF0aCA9IG9zLnBhdGguam9pbihmb2xkZXIsICdib2R5JylcbiAgICAgICAgICAgIHVwbG9hZF9wYXRoID0gTm9uZVxuICAgICAgICAgICAgaWYgbWV0aG9kID09ICdQVVQnOlxuICAgICAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gaW50KHJlcXVlc3RfaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJywgJycpKVxuICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICAgICAgICAgICAgICByZXBseShjbGllbnQsIDQxMSwgJ0xlbmd0aCBSZXF1aXJlZCcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIGxlbmd0aCA8IDAgb3IgbGVuZ3RoID4gTUFYX1BVVDpcbiAgICAgICAgICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA0MTMsICdQYXlsb2FkIFRvbyBMYXJnZScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIHVwbG9hZF9wYXRoID0gb3MucGF0aC5qb2luKGZvbGRlciwgJ3VwbG9hZCcpXG4gICAgICAgICAgICAgICAgY2xpZW50LnNldHRpbWVvdXQoTm9uZSlcbiAgICAgICAgICAgICAgICB3aXRoIG9wZW4odXBsb2FkX3BhdGgsICd3YicpIGFzIHBheWxvYWQ6XG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY2xpZW50X2JvZHkoY2xpZW50LCByZXN0LCBsZW5ndGgsIHBheWxvYWQud3JpdGUpXG4gICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAgICAgIGNsaWVudC5zZXR0aW1lb3V0KE5vbmUpXG4gICAgICAgICAgICBpZiBtZXRob2QgPT0gJ1BVVCc6XG4gICAgICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgICAgICB3aXRoIE9SSUdJTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVhc29uLCBjb250ZW50X3R5cGUsIGxlbmd0aCA9IG9yaWdpbl9wdXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLCByZXF1ZXN0X2hlYWRlcnMsIHVwbG9hZF9wYXRoLCBvdXRwdXRfcGF0aClcbiAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNzbC5TU0xFcnJvciwgaHR0cC5jbGllbnQuSFRUUEV4Y2VwdGlvbikgYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgICAgIGxvZ19zdG9yYWdlKCdzdG9yYWdlIFBVVCAlcyBmYWlsZWQ6ICVzJyAlICh1cmkuaG9zdG5hbWUsIGVycm9yKSlcbiAgICAgICAgICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA1MDIsICdCYWQgR2F0ZXdheScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICAgICBhcmdzID0gY3VybF9hcmdzKG1ldGhvZCwgdXJpLCBoZWFkZXJfcGF0aCwgb3V0cHV0X3BhdGgsIHJlcXVlc3RfaGVhZGVycylcbiAgICAgICAgICAgICAgICB3aXRoIE9SSUdJTjpcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oYXJncywgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSlcbiAgICAgICAgICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsID0gKHJlc3VsdC5zdGRlcnIgb3IgYicnKS5kZWNvZGUoZXJyb3JzPSdyZXBsYWNlJykuc3RyaXAoKVxuICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdzdG9yYWdlICVzICVzIGN1cmwgJXMgJXNcXG4nICUgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLCB1cmkuaG9zdG5hbWUsIHJlc3VsdC5yZXR1cm5jb2RlLCBkZXRhaWwpKVxuICAgICAgICAgICAgICAgICAgICByZXBseShjbGllbnQsIDUwMiwgJ0JhZCBHYXRld2F5JylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgc3RhdHVzLCByZWFzb24sIGNvbnRlbnRfdHlwZSwgbGVuZ3RoID0gcGFyc2VfZHVtcF9oZWFkZXIoaGVhZGVyX3BhdGgpXG4gICAgICAgICAgICBzZW5kX2ZpbGUoY2xpZW50LCBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGgsIG91dHB1dF9wYXRoLCBza2lwX2JvZHk9KG1ldGhvZCA9PSAnSEVBRCcpKVxuICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOlxuICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdzdG9yYWdlICVzICVzIGZhaWxlZDogJXNcXG4nICUgKG1ldGhvZCwgdXJpLmhvc3RuYW1lLCBlcnJvcikpXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHJlcGx5KGNsaWVudCwgNTAyLCAnQmFkIEdhdGV3YXknKVxuICAgICAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgICAgIHBhc3NcblxuXG5kZWYgaGFuZGxlKGNsaWVudCwgX2FkZHJlc3MpOlxuICAgIHRyeTpcbiAgICAgICAgY2xpZW50LnNldHRpbWVvdXQoMzApXG4gICAgICAgIHJhdywgcmVzdCA9IHJlYWRfaGVhZGVycyhjbGllbnQpXG4gICAgICAgIGlmIHJhdyBpcyBOb25lOlxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIG1ldGhvZCwgaGVhZGVycywgdXJpID0gcGFyc2VfcmVxdWVzdChyYXcpXG4gICAgICAgIGlmIG1ldGhvZCBpcyBOb25lOlxuICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA0MDAsICdCYWQgUmVxdWVzdCcpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnIGFuZCByZXF1ZXN0X3BhdGgocmF3KSA9PSAnL3VwbGluayc6XG4gICAgICAgICAgICBVUExJTktfUkVBRFkud2FpdCgxMilcbiAgICAgICAgICAgIHJlcGx5X2pzb24oY2xpZW50LCB1cGxpbmtfcGF5bG9hZCgpKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGlmIG1ldGhvZCBub3QgaW4gKCdHRVQnLCAnUFVUJywgJ0hFQUQnKTpcbiAgICAgICAgICAgIHJlcGx5KGNsaWVudCwgNDA1LCAnTWV0aG9kIE5vdCBBbGxvd2VkJylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiB1cmkgaXMgTm9uZTpcbiAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3JlamVjdGVkIHN0b3JhZ2UgJXNcXG4nICUgbWV0aG9kKVxuICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA0MDMsICdGb3JiaWRkZW4nKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGZldGNoKGNsaWVudCwgbWV0aG9kLCB1cmksIGhlYWRlcnMsIHJlc3QpXG4gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3N0b3JhZ2UgY2xpZW50IGZhaWxlZDogJXNcXG4nICUgZXJyb3IpXG4gICAgICAgIHJldHVyblxuICAgIGZpbmFsbHk6XG4gICAgICAgIGNsaWVudC5jbG9zZSgpXG5cblxuZGVmIHNlcnZlKGhvc3Q9TElTVEVOX0hPU1QsIHBvcnQ9TElTVEVOX1BPUlQpOlxuICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXVwbGlua19sb29wLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuICAgIHNlcnZlciA9IHNvY2tldC5jcmVhdGVfc2VydmVyKChob3N0LCBwb3J0KSwgcmV1c2VfcG9ydD1GYWxzZSlcbiAgICB3aGlsZSBUcnVlOlxuICAgICAgICBjbGllbnQsIGFkZHJlc3MgPSBzZXJ2ZXIuYWNjZXB0KClcbiAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9aGFuZGxlLCBhcmdzPShjbGllbnQsIGFkZHJlc3MpLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuXG5cbmRlZiBtYWluKCk6XG4gICAgdHJ5OlxuICAgICAgICBzZXJ2ZSgpXG4gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoJ1IyIHN0b3JhZ2UgcHJveHkgZmFpbGVkIHRvIGxpc3RlbjogJyArIHN0cihlcnJvcikpIGZyb20gTm9uZVxuXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgdHJ5OlxuICAgICAgICBtYWluKClcbiAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6XG4gICAgICAgIHN5cy5leGl0KDApXG4iLCJwcmVwYXJlX21hY2hpbmUucHkiOiJcIlwiXCJQcmVwYXJlIHN1cHBvcnRlZCBMaW51eCBob3N0cyB3aXRob3V0IHJlc3RhcnRpbmcgYW4gZXhpc3RpbmcgRG9ja2VyIGRhZW1vbi5cIlwiXCJcbmltcG9ydCBvc1xuaW1wb3J0IHBsYXRmb3JtXG5pbXBvcnQgc2hsZXhcbmltcG9ydCBzaHV0aWxcbmltcG9ydCBzdWJwcm9jZXNzXG5cblxuZGVmIHJ1bigqYXJncyk6XG4gICAgcHJpbnQoJyQgJyArIHNobGV4LmpvaW4oc3RyKGl0ZW0pIGZvciBpdGVtIGluIGFyZ3MpLCBmbHVzaD1UcnVlKVxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCkuc3RyaXAoKVxuICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlcnJvcjpcbiAgICAgICAgb3V0cHV0ID0gZXJyb3Iub3V0cHV0LmRlY29kZSgpLnN0cmlwKCkgaWYgZXJyb3Iub3V0cHV0IGVsc2UgJydcbiAgICAgICAgaWYgb3V0cHV0OlxuICAgICAgICAgICAgcHJpbnQob3V0cHV0LCBmbHVzaD1UcnVlKVxuICAgICAgICByYWlzZVxuXG5cbmRlZiBkZXBlbmRlbmNpZXMoKTpcbiAgICByZWxlYXNlID0gcGxhdGZvcm0uZnJlZWRlc2t0b3Bfb3NfcmVsZWFzZSgpXG4gICAgc3VwcG9ydGVkID0gKHJlbGVhc2UuZ2V0KCdJRCcpID09ICd1YnVudHUnIGFuZCByZWxlYXNlLmdldCgnVkVSU0lPTl9JRCcsICcnKS5zcGxpdCgnLicpWzBdIGluICgnMjQnLCAnMjUnLCAnMjYnKSkgb3IgKFxuICAgICAgICByZWxlYXNlLmdldCgnSUQnKSA9PSAnZGViaWFuJyBhbmQgcmVsZWFzZS5nZXQoJ1ZFUlNJT05fSUQnKSBpbiAoJzEyJywgJzEzJykpXG4gICAgcGFja2FnZXMgPSBbXVxuICAgIGZvciBiaW5hcnksIHBhY2thZ2UgaW4gWygnZG9ja2VyJywgJ2RvY2tlci5pbycpLCAoJ2lwJywgJ2lwcm91dGUyJyksICgnbHNwY2knLCAncGNpdXRpbHMnKSwgKCdsc2JsaycsICd1dGlsLWxpbnV4JyldOlxuICAgICAgICBpZiBub3Qgc2h1dGlsLndoaWNoKGJpbmFyeSk6XG4gICAgICAgICAgICBwYWNrYWdlcy5hcHBlbmQocGFja2FnZSlcbiAgICBpZiBwYWNrYWdlcyBhbmQgc3VwcG9ydGVkOlxuICAgICAgICBwcmludCgnSW5zdGFsbGluZyByZXF1aXJlZCB0b29scy4gVGhpcyBtYXkgdGFrZSBhIGZldyBtaW51dGVzLi4uJywgZmx1c2g9VHJ1ZSlcbiAgICAgICAgcnVuKCdhcHQtZ2V0JywgJ3VwZGF0ZScsICctcXEnKVxuICAgICAgICBydW4oJ2FwdC1nZXQnLCAnaW5zdGFsbCcsICcteScsICctcXEnLCAqcGFja2FnZXMpXG4gICAgaWYgbm90IHNodXRpbC53aGljaCgnZG9ja2VyJyk6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRG9ja2VyIG11c3QgYmUgaW5zdGFsbGVkIG9uIHRoaXMgTGludXggdmVyc2lvbi4gQXNrIHlvdXIgYWRtaW5pc3RyYXRvciwgdGhlbiBydW4gc2V0dXAgYWdhaW4uJylcbiAgICBydW4oJ3N5c3RlbWN0bCcsICdlbmFibGUnLCAnLS1ub3cnLCAnZG9ja2VyLnNlcnZpY2UnKVxuICAgIGlmIHJ1bignZG9ja2VyJywgJ2luZm8nLCAnLS1mb3JtYXQnLCAne3suQ2dyb3VwRHJpdmVyfX0ge3suQ2dyb3VwVmVyc2lvbn19JykgIT0gJ3N5c3RlbWQgMic6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRG9ja2VyIG5lZWRzIHN5c3RlbWQgY2dyb3VwcyB2Mi4gQXNrIHlvdXIgYWRtaW5pc3RyYXRvciB0byB1cGRhdGUgaXRzIGNvbmZpZ3VyYXRpb24uIEV4aXN0aW5nIGNvbnRhaW5lcnMgd2VyZSBub3QgcmVzdGFydGVkLicpXG5cblxuZGVmIHByZXBhcmUoKTpcbiAgICBpZiBvcy5nZXRldWlkKCkgIT0gMDpcbiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdSdW4gdGhlIGRvd25sb2FkZWQgc2V0dXAgc2NyaXB0IHdpdGggeW91ciBhZG1pbmlzdHJhdG9yIHBhc3N3b3JkLicpXG4gICAgaWYgcnVuKCdzdGF0JywgJy1mJywgJy1jJywgJyVUJywgJy9ydW4nKSAhPSAndG1wZnMnOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoaXMgY29tcHV0ZXIgbmVlZHMgbWVtb3J5LWJhY2tlZCB0ZW1wb3Jhcnkgc3RvcmFnZSBhdCAvcnVuLiBBc2sgeW91ciBhZG1pbmlzdHJhdG9yIHRvIGNvbmZpZ3VyZSBpdCwgdGhlbiBydW4gc2V0dXAgYWdhaW4uJylcbiAgICBkZXBlbmRlbmNpZXMoKVxuIiwiY29uZmlnLmpzb24iOiJ7XCJvcmlnaW5cIjpcImh0dHBzOi8vd3d3LmRvcmlhbmdyYXkubmV0XCIsXCJlbnJvbGxtZW50XCI6dHJ1ZX0iLCJkZ2UtaWNvbi5wbmciOiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTUFBQUFEQUNBSUFBQURkdnZ0UUFBQUFJR05JVWswQUFIb21BQUNBaEFBQStnQUFBSURvQUFCMU1BQUE2bUFBQURxWUFBQVhjSnk2VVR3QUFBQUdZa3RIUkFEM0FQWUE4WGlrK3RvQUFBQUhkRWxOUlFmcUNBY0FJRFVWbXdHOUFBQlAxVWxFUVZSNDJ1MjlaMXhVMS9iL2Y5cjB6c0RRbS9RdUNJb0NDaGF3Vnl5eHhwaW9NYkhFOUtpcEpocExURXpzdmZmZUFBdUlJcjMzemxBSEJtYVkzazc1UHpoS3VDYngzdS9sL24raXp2dkJmZDBrdzV5eVA3UDIybXV2dFRhbzB5b0FNMmIrVzZDWGZRTm1YbTNNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSjZFUVJCRUFSQi9wK1hmUy85RkxPQS9oR0NJR0FZaGlDSUlBZ1FCRi8yN2ZSVHpBTDZHMGk3QTRLZ1Vxa3lHQXdnQ0JJRUFRQm1JL1EzbUFYMFBPUnNCWUlFQUlCYnR1NTQ5T2dKbmNGOE5wV1plUjZ6Z0FEZ21hOUQ5SklKQkVGYXJlNysvUWRGeFNVQUFQWjRRczk5ekF6eXNtL2dwZEZMQkdEdmZ5UW5MQXFGV2x0YldsRlJYbFJVWkRJYUlBZ0NYdWhLdjdGTzBodG5nWHJiRXZMZjREZ0d3ekNUeFdJd21Vd21rL1NhY1J3dktDeHljbkx1N2xZMGlCc1JCTUZ4bkVhak1Wa3NKcE5KWnpDZSt5cnl5OTVBeS9SbVdTQnlQVVVPTTQxR3d6QWNBQUVHbGRFdWFYMlkrbGlqMFZwWldnNGROa1Jvd1c5cGtUUTFOUThiTnBSQ29lVGxGUXh3ZGFIUmFKV1ZOZmtGaFFhRDNzUERmZWpRY0JpR2pRWURnc0E0anFNbUV3QytjYjlHNEUwVEVLa2VFQVFCRUhyeUpLdWt0QXpIY1NvRlNVcTYyOWpVeEdBd0FBQms3MlB0MzdlcnRLeU14K05uWm1iNisvdUx4WTBLaFNJeDZlNk9IVHN0TEN3VUNnVUlnbEZSRVo0ZW5ucURrY3ZsUkVRTWRYWnlNQm9NSVBUR2Flak5lbURTOXNBd2N1amcwVFVmclUxS1NqS1pUQUFBRnBlVURCdzRjTnEwYVdQSHhqVTN0NnhhL1hGeGNabFFhSkdXbGlZV2k2MnNMUC9ZdFcvRGhtOURRa0xDdzhNWExGaWcxK3ZyNnh2WWJIWkRnM2ovL2dNZmZMQzZvcUthU3FQaU9QNm16V0Z2bklDb1ZFcGRmY09UOUhRM043ZlEwRUVTaVdSZ2NORGh3d2RUVTFNQkFEQ1pUQkVSd3k1ZHVrU2hVUEx5OGpRYVRVcEtDcHZOdVh2M3JrcWw4dkR3NEhLNWVYbDU5dloyQnc3c2IrL280UE01UTRZTXB0TnBkeElTY1J3QVFSQjR3OXlnTjB0QUlBZ1NCQUJEME9EQmcxMWRYZVBqcHk5YU5EOGhJY25OYlFDWHk2MnJxd01Bb0txcUtqUTAxTUxDNHRTcFV3QUFkSFYxblQ5L1BqNCtIb0tnK3ZwNkFBRHk4dktpb2lJYnhXS05ScnR1M1ZmKy92NysvZ0ZPVGs0b2lyN3M1M3NKd092WGZmbXk3K0gvS1RpTzgvazhDd3VCaTR1VHM0c1RqVVp2Ym03Snk4dS9lZk5tZUhoNGJtNXVjM1B6b2tXTFRwNDhXVmxaT1diTUdCekhueng1TW1qUUlHdHI2NVNVRktGUXFOY2Jpb3FLM04zZFJWYVczdDZlUEM3SDJsbzBLQ1NZeWFTL2dac2ViNWFBUUJBay9XZ3JLNkdkblMyTHphcXZGKy9iZC9Ea3lST1RKazFxYTJ0NzlPalI4dVhMMDlMUzd0NjlhMjF0ZmZEQWZocWRscHI2S0Q4L1B5NHVEb2JoYTlldVQ1NDhxYkN3OE02ZE83YTJkcEVSNFR3ZXg4blJrVXFsNERqK3Bxa0hlQk9tTU9KZklmK04wV2lDWWJpclU3NWx5N1pyMTY1T25UcVZRcUdVbFpYOThjZnZ0YlcxMTY1ZEEwRnc3ZHFQd2dZUFdiNThhVlJVbEZxdDNyMTdkMXhjM0R2dnZIM3IxcTM0K0hnT2g3TnQyN1pMbDY1U0tGUU13M3Jtcjc5ZTd2WG10YlZBdlVNK3owV1pxVlFxUVFCMzd5V3ZXclUyTHk5djBhSkZYVjFkemMzTkJ3N3N5OHJNMnJaOU93QUFhOWV1M2JEaHk2eXNMSUdBUDNyMHFJY1BVOFZpY1dscDZiZmZiTEN4dFR0OSt2U29VYU40UE43K0F3YzdPam85UFQxRklxdmVHbnAyTlFBRVFBQWt5R0QzYThuckthQWU5UkFFZ1NBSWpVYWowcWdJZ21BWVJxRlFXbHJhVHB3OHMzdjNub0tDL01qSXlMUzB0SXFLaWtPSERsVlgxM3p5eWFjb2lrNlpNbVg3OW0zMTlYVmZmcldocWJFNWZzWTBkemVQK3c4ZU5EVTFWVlhYZlBIRkYxMWRYZHUzYjNkeGNhSFQ2VGR2M3BKMUt5QUljWGNiQUlJQWdpQjBPcDFDb1VBUWlPTTRUaEFnK0RvbmhMeUdBdXB0ZStoMHVreldYVnhTV2xKY0lwTjFXMXVMMnRvayt3NGNGb21zQ2dvS3RWcHRWVlZWZTN2N2lCRWpvcUtpdnY3NjY4YkdSaWNucDYxYnQ4cmwzYnQzNzEzNjNoS1pyQ3YxVWRxRWlSTVJCRWxPVGhhTHhSWVdGZ0VCQWRldlg2K3Fxc0p4RE1Qd3dXR2hHSWFWbEphRmhRMlN0SGZrNWhiVTF0V1pUQmlmeDZkU0VSVEZYdU9rb3Rjd0V0MmpIZ1NoSkNiZVQzMlVKaFFLV1N4R1ZuYmVtYlBuREFiai9QbHZLYnFWbVpsWkFQQjBVR1V5MmIxNzk4ckx5d0VBaUlpSVlEQVl1M2Z2aVl3Y0doczdOaVE0Nklzdk4xeStmRGtrSkVRa0VuVjBkQ1FsSlJtTlJnekRBQURvNkpEaU9KNmZYN0IrM1ZmSFQ1ejhjT1ZhR28zbTdPeEVvOUVmUDg2Z1VPQTVzMmU1dURnYURFKzNZMTgvWHNPbkltY3VHbzEySitIdXNlTW45SHBkWGw1T1hWM2Q2TkdqaGcrUHFxbXBjWFIwckt1dkp3Z2NlT2F2RkJZV0ZoY1hXMWxaQVFBQXcvRHQyN2ROSnNQNGNYRUd2ZExTeW1yczJOaWtwS1Npb2lJMm13MEFBSVZDU1VwS3dqQ3N4NkkwTmphaUdFcW4wOVZxOVpJbGl5MHRMYk95c3BxYUdzWGl4bTNiZjIxdmx5SUk4cnI2MUsrMkJmcFhUeGtBd2FkcEZUQU1LeFNLNjlkdmRIUjBYTDkrSGNkeEFBQ09Iejk1NHZqUmNlUEdYcnAwMWMvUEY0SWdITWRKdzJBd0dGSlNVdXpzN0hnOFhsMWRYVk5UazdPek00TkJ4ekFjUTAwV0FuNWRYUjJLb2thajBkN2V2cVdscGJhMmxyd0I4bksrdnI1cXRUWXZMMy9ONnBYSGo1L1l2djBYUHAvZjNkM3Q3ZTN0NU9TY2xIVHY3YmZuYTdYYTUyNFY2TDAzOThyeUNsdWczdXBCRUpoS1JVaFhBeURUd1hTRzJ0cmE1T1JrSHgrZmh5a1A5dTNiQTRKQWRrNnVzN05MYzNQVG9FSEI3NzIzbE5RUStTZGRYVjJscGFWR283R3VyazZoVUpTV2xxcFVHZ3FGQWlQMDZwcGFxVlFxa1VpNnVycGtNbGxWVlJVNWZ4RUVnV0dZalkzdG1qV3JwZElPQm9PaFZHbXlzM09pb2lJek01OXMzYnFsc2JFeE56ZEhKcGYzcEtRQkFBRERNSldLd0REMDNDTzhvcnpDVGpUNTZtRVlBa0N3bzZPclc2NmdVcWtVQ2tKbTh6Q1pUS1ZDbVpXVnZYbno1cmk0c2RldVhkUHI5VE5tekRBYWpXcTFPanA2dUtlSGw0Mk5EZW5OR0kxRzBrcVpUQ2ExV3QzZTN0N2Eyc29YQ0tKSFJOWFYxYTFiL3pYcGE1dE1KaFJGUVJDRUlJakw1VG82T280Y09mS2pqejZLamg2aFVpcXJxcXI5L2YwcEZFcEpTY25reVpPblRKbVdtNXVEb2RqcU5TdXRySVJrbUJHQ0lJVlMxU0h0QWdpUXhXS1NGMzJsTFJDbzB5cGU5ajM4bHhBRUFVR1FScXU5Y2VOT2MzTnJnN2hoY0ZqWW5Oa3pLQlFFeDNFR2c2SFI2ZzhjT05UZTNnSERVR05qNDZKRmkzeDhmRTZjT0ZGVlZmM2JyOXNwVkZwTlRWMWVYbDVwYVVsV1Z2YWpSNDh3REhOMWRiV3pzMk13R0hRNkhRQUFEdzhQbVV3bWFXK0hJVWlyMDZsVnFwcWEydTV1dVkyTnphaFJvM3g4ZklLRGd3Y09ETEt6czA5K2NQK1hIYjk5K3VsYVIwZm5xMWV2WkdmbitQdjdkWFIwVHBvMGZ0U28wUWE5R3NNd0twVlNXeWMrY3VTNFRxZHpkWFVkRkRJd1BEeU1qQjY5dWhwNlZRVkUrcVFNQnVQa3FYTXRMYTFzTnR2ZjM5ZlJ3VjRvdEtEVHFUQ001T2JtLy9yYkh6UWF6ZEhSd2NYWmVkeTRXSHNIbDVzM3IyZG41L2o3K3lja0pBWUUrSWxFTm0xdGJVMU5UVGs1T1UxTlRmUG16VjIwY0lGUWFFR2hVS2hVcWxLcExDOHY1M0M1WHA2ZUJBQ2dLR295R3ZJTGlyWnUzVjVSVVJrZVBzVEx5OHZSMFpITlp1Zm01dkw1ZkhkM3QrTGlrbFdyUHJDenMzdVlrcHFabGRYVzFsWlhWeDhhT3VqREQ1WXpHSFFRQktXZFhWcXROaTB0QThlSjJ0cmFkOTk5MjhuUndXZzA5WGh2cnh5dnNCTU5naUNLb3RYVk5Ud2VUeWFUV1ZvSzNkeTk5RG9sQUFEZEN1WG1uN2Y1K2ZrdWZudVJ3V0RFQ1FKR3FGZXVYTHAxNjQ2Zm4xOXE2cVBjM0Z3cWxZcWllSGQzTjQxR216aGh3cGd4STRORFFpQUlKZ2dNQkFHQ0lPZ01rYldOUFVFUUlJQUNUNHQ2OExpNDJMRFFrS1NrZTBYRkpTaUtkclMzS3hTSzh2SnlyVmJMWkRJeERQdnR0OS9mV2Z5Mms3TXpqOGRsY3pqdDdlM2ZmNytSeCtPdFd2bStXcTIydGJHRkVkcmp4MDgwR3ExT3AydHRhUnZnNm1JMEdsL2RVUFVyYVlGSTN4UERjQmFMbVphV3NmL0E0WXFLY2hxTnRuTGxCeU5IUmd1RjFybTUyWjk4OHRtS0ZTdjRmQzZmeHpjWUREZHUza3BPVHFaUUtOYlcxcEVSd3laTm11anM3QWhDSUFnQUNFSURRTmlnVjBzazdXMXRiUXFsVXFmVmEzVjYwcjhHUVFDR0VScU55dVd5TFN3c1JGWldsbFpDT3AwREFMakpxRWRSbEVxbDZIVDZqTXpzSzFldTFkYldTcVZTR3h1Ym1UUGpRMEpDRk4zZE9FRmN1blJacDlVY09MZ1B4OUNxcXBvTEZ5K2ZPblhhemMwdE9EajRzMC9YMG1pdjlpN3NLeWtnNEZuWnFGS3BPbnIwWkZsNVdXQmdnTUZnS2lvcXRyRGd6NXc1SXlucEhnaEM0OGVQRXdvdHNyT3pEeDgrV2xKU0Vod2NQR3RXL0xoeGNiYTJ0amhtQWtFSVJiRzJ0cmJxNnRxYTJycnViZ1dOUnFQVGFRS0J3TkpTU0tYU1dDd21ETUZHazFHdjE2dFVhcFZLMmQydFVLblVJQWhZV2xvT0dPRGk3ZVZwYVNuRWNkeGtNbEZwTkJ3bkNnc0t6NTIvZFBYcVZZUEJNSFhxMUZrejR5MkVGa1ZGSmFtcHFWR1JFUkFNWGJod3lkN2V3YzNOVlN3V2QzYko1czJkRXowaThwVjJnMTVKQVQxYnE4TzdkdStqMGFodnpabE5wVkxZSEY1VFUvUCsvUWNmUGt5SmpvNTJjWEdoVXFtRmhZVkpTWGROSnVPOGVYTVh2NzNRenM0R1JWRVlocFVxVlZGaFNYNUJVWGQzdDQyTnRiZTNwN096TTR2SjFPbTFDb1ZLcVZUSlpES0QzZ0JDSUVFUVRDYVR6K2R6dVJ3Qm40dFFhTjN5N3ZxR2h2THlTb1ZDWVdOdFBYaHdxSyt2TjRVQ0cvUUdLbzJHRTBENms0eGR1L2RtWkdSNGUzdVBIajNhenM2dXU3czdNek96dmIxOXhZb1ZFeWFNSndoVXE5RTJOallmT254azl1eVpRd1lQMHV2MVpLckp5MzYxLzJkZVBRR1I3ak9kUml1dnJMcDU4ODY0c1dOKzNySzl1YmtsTEN4MDJyUnBjbm4zM3IxN05ScU5wNmNuanVOWldWbk96czZmZkxJMll0Z1FETU1RR0ZhcE5ZOGVwK1ZrNXpHWWpNaklZYjQrUGxxZHJyS3lzckN3dUtHaFVhdFZ3ekRDWnJOSlA1cEdvMm0xV2hSRlRVYWp3V2pFTUpURjVqZzdPUVlHK250NmVPQUVVVkJRbUpPVFI2UFJSb3lJREFrZUNNT1F3V0JnTXBsS2xmcm8wUk5Iamh6bDgvbEJRVUZ0YlcwTkRRM1IwZEdMMzM2N3NLanc4dVVyWXJING5jVnZEM0J6eTh2TCsyak5oMlJnQ1hnRjdkQ3JJYUIvaVRnREFJSGpkRHBkSW1sUFNMeXZWQ3JYcmwwYkZCUTBlOWFzc3ZMeVFZTUdIVGx5aEU2bkJ3WUdabVJreE1URWZQWGxaeUtSSldveVFUQ2NucDZWbUhSWHdCZE1uRFRld2Q0dXY2RHcvdjFrc2JpUnorZDd1QS93OXZaeGRISVFDSGhNQnBOQ29jQXdERUlnanVFNGpwbU1KcTFPSjVOMzE5YzFsRmRVMU5VMWFEVHFBUU5jUjQ4ZTZlWHBVVnBXa1pSMGowS2hUSmt5MGQvUFI2ZlRBUURBWURMdjMwdis1dHZ2YVRTYWs1UFR2WHYzWW1KaTNOM2R4ZUlHS3l1cm4zL2VFaG9hK3NuSEg2T1lhZDdjMlZxdEZnQkFjbS91MVFwUHZ3SUNlaTQzZzN5ekJvTXhKeWYveE1sVGJXMXRKU1VsNDhhTisrM1g3VjkvODkyOWV3K2FtNXVDZzRQYjJ0cm16NSszWnZXSEJJRWpDTkxSSVQxNzdxSkNvWnd4ZllxN3UzdlMzWHUzN3lRaU1Cd2VQamc4ZkxDVG95T05UaWNJSE1jd0RNTkk5N2wzRmhFWkEwUmdHSVJoRUlSMFdtMkRXUHpvMFpQTXpHd1dpekZwMHNTaDRVT3ljM0lURXBKOGZMeW5UNXZFWXJGME9pMmJ6YW1xcXYzNGs4KzZ1N3ZWYXJWRUl2SHc4UGg1ODA4Y0RtZlc3TGRZTEphMXRYVmtaT1NNNlZOY1haMXduSUFnQ0VYUm51ZDlKVFQwQ2dnSUFNaEtCNEpLcGNwa2NwMU94K0Z3VHAwNjI2MVFob2NQRVl2RmQrNGt2UC8rOGxHalJzNmJ0K0QwNmRNOEhzL1IwZkhqano5YXRIQytYcStqMCtrWkdkbFhyOTBZUERoMHl1UUo2ZW1aeDArY29WSXAwNlpPR2pZc25NbGlZNmpKYURUMmxzcy8zMFpQNVR4SW9kSmdHT251N242VW1uYnoxaDBFZ2Q1ZXRORGIyK3ZrcVROTlRjMkxGczczOG5KVHFkUXNGcXU5by9QTEw5Y25KQ1JJcFZJWVJxNWN1VGhod3FSMTY5Zkx1am9uVFpxbzArbWZQSGt5ZGVya0FIOC91YnpiMmxwRW9TQmt2UHVWME5BcklDQnkyQ2dVYXRxVGpPenNYTEZZM05iVzV1bnA4ZldHTDZsVUtnVFRFeE51MzBsSTlQWDEvZlhYblIwZDdUaE9IRHE0YjlyMEtUcXRoa0toWGI1eUxTK3Y0TDEzRjF0YUNyZHMzZEhVMURUM3JWblJNU1BvTkxwZXIvdW56WVRuTnMvLzZ1RStLekdEYVhTR1dxVytrNUI0NmRLVjRPRGdEejljWGxoWWZPblNsZkhqNDBhTmlsYXIxRFFhVGFmVHIvaGcxZG16NTJ4c2JJWU5Helo2OUtqaTRwSWZOMzdMNVhFQkFNckt5dDZ5WlJ1THhYSnlkSFIwY3Bvd0lVNWtaVWxxNkdXLyszOVBmOTlNZlpxYlFhVVdGNWNrSnQ2enNMQ3d0N2NiT1RJR0FBQTZnMDJtWlBENS9PdlhiNVNYVnh3OWVuanQycld4c1dOY0J3ekFVQlFFNGNOSFRsUlYxV3hZLzRWTUxsLysva29lai92cnI5dkdqaHNMRUxoV3F5Ri80dVE0a2Y5TFhnNEVRUnFOeG1LeG1Td09rOFZtc2RsVUtwWDhqMEJQL3hjSUFrRVF4M0dOV29VZzBNeVo4Yi84c2tXcjFTNWI5b0dBei8vazQ5VVBIank4Y1A0S2c4RTBtWXdNQmowaUltTEtsQ2w3OXV4Kzk5MTNEaHc0MU5IUndXYXpjUXdEQUpqTllscFlXTVRGanFGUXFUUWEvZFNwY3lZVDJqTnJ2K3dSK0RmMDY4M1VuZ0dqMGVtWExsNFZXWXQwT2gyVlFsM3h3YkxFeEx0RlJVVXdCQmNYRjMvMzNRL3U3bTU3OSs1NjhpVGQzdDV1OXF4NHRVWWpzckk2ZFBpWXlXaFl1M2IxbGF2WDl1OC92R1RKNGtXTDVzRVFwTmZyU0orR3ZBb0lnZ0FBa2xxazBXZzBPbDJuTjlUVzF1WG01V2RsNWVUazVJa2JHaEVFRVZwYVVpa1VITWNvRkNvSUFqajJOUHBIcGdBWURYb3VoeE16TWhySDhWOSszZW5vNkxoZy90eGJ0eE1heEkyaGd3WjFkY2xvVkhwOC9MUzB0UFFSSXlLam9xSjI3dnhkMmlsak1wbmxaYVhIanArYU1HSDh5SkhSRnk5ZEhqa3lKamMzMTlISnlkWldSQnFoZm02SCt1OVdSbS9mR1FBUW9hV3dyVTFpWldWMStmTGw2T2poMzMvL3pka3paMi9mU1NRSXdtUXlmYkRpL1phVzFveU1yTFZyVnpvNU9tQVlmdWp3Y1FBQVZxMWV1Vy9mL3RUVXh6LzkrSzJYdDQ5V293SkFFSWJobnQ5Mnp5V29WQ29JUVJYbGxiZnZKS2FrUEN3cks1TklKSHE5SGdBQUJLRzR1cnJFeG82Wis5WmJRVUgralkwTkFndUJoWUJ2TXBsNmpBUU13eWFUeVdReXpad1o3K3JxdW1uVEZybE05dm5uSDIvZHV1UGMrWXR6WnMvZ2NqbDBCa2RrYlhYNjlQblBQbHM3Y2VMRWlvcHlPcDBHZ3VEOCtYTWpJaUozN05paDFXcFZLaFVJZ2tJTFBrRUFQVDVRZjNhRytxbUF5RmVHNHppTXdEUTZYUzZUMG1qVTY5ZHZCQWNQckt5c25CRS82K08xYXlaT21tQnJhNk5RcXJ1N0ZZNU9qbFZWdFJpR1VoQVlBS0VMRnkrcVZLcVBQMTYxNjQvZDJUbTVXMzcrMGQ3ZVRxTldRaERVNDV6MkZpaWR6cWlycno5OCtPanAwMmZGWXZGek40T2lwdXJxNnVycTZ2UG5MOFRHeGhZWEYxdGJXLy84ODJaUEQxY3lVWi84R0dtS05HcGxhR2p3NXMwYnYvcnFhNVBKdEhidHFpMWJmcm1UY0RkMnpDZ2NNL0M0bkh4cHAxNm5Dd3owOS9YMVdiNzhmWlZLWGxGUjlkNTc3MTI4ZUhuczJMaGp4NDdUYUZTMVJtc3dHSmxNbGw2bkpmcDMzbGwvRkZDUGVtZzBta3FsUG43eFRGbFpPWi9QV3pEL0xRNlhFeFU1dExtNXRhaTRORHNuejgzTnpjUERqWXk3S0pVS3RWb05nSEI2ZWtabFpmVVhuMzk4N09pSjdPeWNUWnMzV291c05Cb05ETU5BTDhQV294NGFqWjZRZU8vTEw3OHFLaW9pYjRDVXduTk9OQUFBVXFtVXJIY0dBS0N4c2RITnpXM2R1aStIRFlzd0diVW1rNG44R0FUQkdyWGF3MzNBcGswL2ZQSEZlZzZIczNMbCs3OXMvODNHMmlZNEpMU3pTNGFpYUdlWG5NRmdGQldWWEwxNjVlSERWSlZhYlNHdytQWFhiUndPUjZ2Vnl1WGRCdzhlZ1dGNHdvU3hFY1BDalFaRGYxN1k5enNCUGRzb3hSZ01SbE5UNjdidE8renNiRmV2K3NERzFnWkRzYzZ1VGdJbnhzU09ZZERwVXFrMFBTUHJ6cDNFZ29LQzZxcGFwVktGNC9qZHV3L0VZdkU3aXhjK2Z2ems1cTJFclZ0K3NyRVdhYlZhY3RvaWwxTUFHYk43bG5kMjVlck5wVXVYZDNWMTl1aUdYSm85ZDFmQXZ5N1dxcXFxS2lzcnU3dTdKMDJhR0R0bWRFaElvRTZuSTF0endqQ3MwV2pjM1FkOCs4MzZyNy81M3NuSmFkNzh0ODZldmVEbzVDQVdOK3IxZW5HRHVLcXk2dTdkZTBLaGNONjhPVDdlWG5RNnZVc21VNnRVTEJhTEw3QXdHdlM1dWZtSER4OHJLU2w3NzkzRktHcnN0eHJxWDh2NDNyYW50Vld5YnYyM1k4YU1uRGQzVG1aV2RsWldqbDV2SUZjL1ZDcVZUcWQ1ZXJnUEhSYU9ZZGllUGZ0emMvUHQ3R3hsTWxsalkrT1BQLzVnYlMzNjVKTXZQdm5rbzZGREIydlVhbEk5UGErK3QwYno4Z3Ruem5xcm9iNmVURy85UDd5NFh0OFdFaEt5YjkvdXdBQi9EUHR6V3hURE1CYWJlL3YybmVQSFQvN3h4Ni9aMmJtNXVmbE5UVTNraGRScTlYdnZ2Uk1kSGRNb2JraDdrdDdaMlFWQnNNRmdNQmlNSUFqWTJkbU1IQmxOcDlHKy9YYWpwNWZYaHg4c014aDBwUHI3bTRaZXNvQjZUU1VBQklFQUFPQTRUanFrbjMreFBpd3NkT1RJbUFNSERxdlZtc0dEdzRLQ0FseWNuUmdNdXNGZ2JHL3ZxS2lza3N1N3c4S0MzZHpjZi9ubDF3TUhEcnE3dXprN3Uzei8zZGNidnY0dUpDUjR5WkxGcE44RC9DWFNnK000aFVLUmRzcm16VnVZa3BMeWYxWFBuNjhQQkVuRjI5amFidCs2ZGZhY0dZWm4yNktrTFdPeU9GdTM3cEJLcFQvLy9PT0dEZC9sNStmcjlYcTkzckJueisrQkFYNFBIcVMydDNlNHU3dTVEbkFSQ1BnQVFYUjF5YXByNnJLeXNpc3JxNktpaHNWRVIzL3o3WGVqUnNiTWVXdTJScTNxOGVGNkFoQXZYVTh2ZVJuL0xLOFpodUduVVh3WWh1a014aytidG5HNW5Kam82QjgyYmhJS2hRc1d6STJLQ2hjS2hVV0Z4V2ZPbkR0OTVseEZSYVZBd1BQeDhXbHRsVUFnRVJzN3VxS2lLamtseGQzZHZiYTJYcVBSckYyN0NrT056NFY1Z0grWmpNRHZ2dnZ4M0xsemZVeHJKKzlacFZScXRkb3BVeVloQ05MemFBQUE0aGdXR0JodzZjcFZPbzBhRmpibzJyWHJqWTJOVzM3K0tTSnkySk1ubVZRYW5jZmxaR2RuWDc5Mkl5SHhycnhiN3VUazVPZm40K25wd1dLeHJseTUxdDRoZld2TzdBTUhEOXZiMjdtNWVSajBPbEl4VkNxMVIwWXZjZmlBbHk0Z2dpQVFCTzdxa3FuVUdrdExLd3FGZ3NESTc3L3ZxYW1wWGJSbzBROC9iSFIwZEh4M3lXSW5Kd2VaVEw1dTNkZHJQbHI3T0MyTndXQkFDRkpjVkhMNThwV2d3QUFXbTh0aE0zMTlmUzVldWx4UlVkSFZKZHV3NFVzYmF4R0tvbjliRWtwbWFGeTVlbjM5K2czL2s2WSs1RlhjM056aVoweW5VR0RTRStxWktMazhMcGZMUFhmdWdraGtmZVRJa1FrVEpueTBkbFZ0VFQxT0VGZXVYRDV5OUpnSlJidTd1N096cy9mdVBYRDc5aDFMUzJGSWNKQ3RqWTJqbytPWk0yZGhHSW1MaS8zOTk5M2VYaDVPemk1VUtvVWdpSWFHUmhhTCtkelUvRko0eVFMQ2NZTE9ZSlFVbC83d3d5WU9oMU5YMjdCMzMvNjJOc21QRzc4N2R1eDRaV1hsMm8vV0dFMG9CRU9mZnZyRjRjT0hvNktpamg0OXRHYjFoL0h4c3dSODN1RWpSeVNTanFpb0NKR1YwTXJLc3JxbTd0NjllNnRXcnB3NlpaSk9wLzNieVFzQUFCaUdOQnJ0dXZYZlZGUlU5RlFDOVFXQ0lNTEN3bjc0L3RzQkExeFFGQU9mUVk0dWFqSzZ1amdYRlpWY3ZYcTFxNnRydzRaMXJpNk9JQVFsSnQ0OWN1U29qWTNOc1dPSFo4MmNNV3RXdkxPVDg1VXJWNjlldmU3cDZXVWxFdUU0d0dhejkrL2Z2M0RoQWs5UGoxMjc5M1owZEJBRWVQYk11YVM3OStQaXh2UVVsNzNFRVh6Sld4a1FCT3AxdXFDZ0FEczd1ODgvL3lycDd2MUJvWVBXcmZzaVBUM3orUEVURVJFUk1ubTNnNzN0bzBlUFQ1OCs3ZUhoc2V1UG5VT0dEQ1lJSEVQMVo4NmVuVDkvL3BUSkV4TVNFdWgwT2tLaEJnVUZPRG82amgwN0JzZlI1Mll1a21jeFExcHhjVmxtWmlid3Yyak02K3JxK3ZQUG15OWZPaDhaT2ZRdnNXTlNSZ0FFUVRObnpTZ3JLeE1JQkY2ZUhpQUl5V1h5N095Y1AvN1lxVlNxSGo1OENBQUVrOGxZOGNHS3J6ZXMxMnExMjdiOVFrRmdnTUFkSEJ3NEhNNDMzM3puNWVueCtXZWZvQ2kyZGV2Mlk4ZFBUSm80bmthai9uZCsyLzk0QkYvdTVjbWZLWUlnMzMrMzRkTlBQMll5R1cydGt2MzdEbDYrY2xXbFVzbGtjaW9Wc2JTeXJxaW9BZ0FnTEN6TTNkMU5wVlF3bWN5R0JuRlJjY21ZTWFPQ2c0TzZ1dVI2dlFFQUNHdVJ5TlhWbGMxaC85czNtNW1aSlpmTCsrajlrQll1TUREd296VXJiYXl0ZERwZGorRjU5blJQVndrR2c4SFh4M3ZDaFBGMmRuWThIaGNBd1FaeEk1UEpqQjRSNWU0K0lDbnBIZ2lSdllMMVk4YU01dkY0OWZYMVhWMmQzdDd1TXBtTVRxY1hGeGNmT0hqNHhzM2JXcTNHMzkvdjBLRURZOGFNSkEveGVPayswRXVPQS9VNENoUUtNbWQyZkV0TFMzdUhWR2doWURBWU5UVTFPVG5abjM2eUdnRFFzTkFRQktFVUZ4ZDNkRWlGUWtGUmNYbEdSaWFMeVF3TkRTa3RMYVBSYU9TUVFSRGs0dXJLNS9QSnd2Vy9mYmtnQ0JxTnB0eThQS0JYRzRiLyt1WUJBRWhQVDgvTnpROExDK241dHQ3WC9mTVNJREIrM05qck4yNzFmQVpCRUJpR3hvd2VmZmpJMGZ5OFFoYWI2ZW5wVTFoWXBGQW9SbzhlSXhLSjZBeW13V0FvS0NqOC9QTlBWN3kvdEtxcUdnUkJWMWNYRG9ldDc3WFdlN2thZXNrQzZua0ZPSTRiREhvN08xdEhSd2NNUXhFS1plMUhxei8vWXAyMFUrYnM0ako4ZU9UUG16ZHQyNzc5dSs4M0NnUjhHeHVidXJwNlh4OGZEa2NnN1pCYVdBaW9WQVFBQUkxVzQrYnF3dVd3eVVMMHY3MGlCSUY2dmJHMXRiWHZOMC9lZVVkSHgvMEh5VU9HaFBVODBkOStHTWRRRDA4UENvV2lVcW00UEs2ZG5TMlZTbFVvRklNSEQvcDkxKzdDb3VLaW9pSjdPOXNMRnkrRmg0Zi8rT1AzQWdFUEFPQ3lzckxnNEtCRkMrZlI2ZFNnb0FBUUJJeEdVLzlSRC9EU3B6Q2dsNFpBRURTWlREcWR6bWcwYVRYYWFkTW1iVmovMWNXTGx6dWxVamFIcy9ianRZOGVwVENaektLaTRwRWpZMnByYTRZT0RRY0FvS0ZCSER3d0NJWmhBaWVrMGk1bloyZmczN3hUa0NEdy8yMUgxVnUzYm5kMmRpSEkwNjJTdno0Z0NJSW9pb21zaERRNnJhdExUdUM0dlowTmw4dXBycWx6OS9Dd3NiWldxWlJob2FIWHJ0LzhhTTJxdTNjVEJ3OGVRcUhTN3QrN3ExS3A5dTdaWldscG9kY2I5SHE5VHFmSGNSd0VlK2NSdkdUNnhWWkdqOFBiT3o2bTArbm56Smw1K3N5RjdiL3NkSE1iUUtmVFpESzVTQ1JhdmVwRGxWb2xrM1VQR2pTd3VhbSt0YTE5OXV4NERNTU1CbDE3ZTBkbzZDQ0FlTEVEUkVBUVJLUFIveWQzVHNxbG9LQWdKeWQzM0xoWWpVYnpUMzJBTUF6bDh3WFdJdXU2dXZxQUFGODJteFVTUERBakl6c3NMTnpYMXljN08rZlkwVU4wQnIyb3FGaXBQTU5nMHR2YnBSSkorN0psN3cwWTROSnJLNlpITkM5Zk9pUXYzd0w5Sy8rU3ZZQmg2S0pGODk5ZnZ0VEd4aG9FUVJhTGJXbHA2ZUJnVzFGZXp1UHhuSjFkYnQxTzhQUHpzYlMwQkVHd3Via1pSVkczQVM1R28rbkZQMDBDQUFqaWY3bCswZWwwYlcwU0FJUmY4RndFQWNBSUhPRHZXMVplanVPNHdXQU1Dd3R0YTJ1cnE2c09Dd3R0YUdoUXFSUWVIbTRDZ1FXRHlRUUlZTWlRd1Y5L3ZTNGtlS0JPcCt0UlR6K2tYd2lvVjZZZjBiT2RDWUtBeVlUZXVaTnc0K1l0ZDNlM2VmUG1TeVJ0eWNuSk8zL2ZVMWxWNCtIaFZsZGZMeFkzamg4WGF6UWFFQVJKZTVMcDdlMXBKYko4Y1owZTJXaWN3V0Q4VCs2Y3ZJcUxpOHVnUWNGazRQdWZIaEVFUVpQUkVCbzZTS0ZRMXRUVVFSQmtJZVJIUkF3N2YvNmlvNk1UaFVLNWV5OWwzNzRET1RsWnRyYTI4eGNzVWlnVXg0K2ZMQyt2SUE4SyttdWoyWmM5YUU5NStSbUp2ZE9tS0JRS2pVNmpVcWdRQkZFUXBMUzg0cWROUDFzS2hhZFBuMVVvdXV2cTZ0OTVaOUhqeDA5S3k4cjRmRjVOVGUzdzRTTjh2RDBCQUdocmt5UWxQWmd4ZlFxYnpYcHhwVEJCRUF3R3ZhcXFoanpib0krUWNjamhVVkhMbHkvRHNMOFBQZ0YvYnEvaUFvR2dvME5hVVZrOWVQQWdnOTVnNzJDZm5aTlhYVjB0bFVxTGkwdEhqeDVwYjIrWG4xOTAvLzY5a3BMUzl2YU9uSnpjMkRHallSaW0wV2hVS2hXRzRXY0YxLzNDZ3diNmd3WHFsWmRENit5VXBUNThjdnQyWWxGUnFkR0VlbnE0dVRnNytmdjVydnZxaTlPbno1U1dsc3E2NUJpR2RiUzNwNlE4ZEhaMjhmYjIxT3QxVkJyandzVXJGQXJzN094b05CcUJGLzVBQ1lLQVlOakZ4UVg0WC95T3lXOG9MaW1wcTY4bk54bithVkI3SnVWQmc0THYzYnRYVWxwT3A5RndIQjg5YXBSRUlpa3NMRFFZOUVxbHFydGJjZlhxRlJRMWZ2L2RCZ1JCQmc4T3BUTTRYVjJ5aDZtUDc5eEpLaWdvd1hHQ2JKalhIOVFEOUJNTFJLcm5TWHJXdnYwSHhlS21EcWswT3ljM0lmR3VwNmRIVFBTSXJkdDJqSjh3VHRHdHZIbnJGb1B4MU1BTUhqeDR5SkFoZEJyTjF0YTZwTGowMDg4K2o0Z1lOaXhpbU1uNDc4TnJDSUxvZGZxclY2K1RvYjgrM2o4SWduSzVuTThYakJ3WjA3TzQrOXN5ajZmMkNZTDI3ei9ZM053OGZ2dzRvOEhRM2Exa3NWZ0toY0xTMHJLN1cxRlFVRkJlWHJGejU4NExGeTRaallaUFBsNXovUGp4RXlmUHlHVHl4cWFXek96czZ1b2FMeThQQm9QUlQxb3l2SHdMQkFBQTJTYmh4SWxUS0lyeGVGeWowZWdmRUJBV0d2cjFOOS9qQkRFeUp2cnMyZk04UHIrcnF5c2g0WTVlcjQrSWlQRDE5WlZLcFVZVFdsVmRkL0RRRVJxTnhtRnpnSDkzc2pLcExZUEI0Ty92R3hrWkFmenZWc0puenB5cHFxcWgwYWd2dG1vNGp0T29OQ2NucC9yNmhyMzdEcUVZSVpmTElRZ2FQbnk0aTR0TFJVWEZ3NGNQK1h4ZVUxTnpkbmJPc21YdjdkdC9LRFgxMGZqeDR4a01CZ0FRdGpZMkdSbVppVWtQZW5ialgvYlE5UU1MQkFBQUNBQTRRYUFvSGhqa0h6RnNpTkJDY092V0hVc3JvWWVIKy8zN3lTRWhnOUxUTTFwYVdvcUtpanc4UENJakkrVnl1Y2xrSW5QL3JsMjdEaENFUkNMeDl2RUpEeDlxTXVyL3lSSHBBY2R4RHBkTjRNQ1ZLOWYrSjhzeDBnaloyZG1OR0I1RjN0Zy91VUV3RE92MGhsT256bGhhV2lvVUNxbTBrOFZpTlRRMHlPVnlCRUc0WEc1T1RvNWVyK2R5dVZRcTFkUFQ4L0xseTR2ZlhuVDZ6RmxMUytHa2llTjlmYjNaYkxhM3Q2ZTF0YWlmdE1mckZ4bUpwSG1IWVJpQ0lBQWdZSVRSMnRxOGV2WGE2ZE9uNStUa0NBU0N4NDhmVjFWVldWbFp4Y1RFdExhMjRqaHViMi92NCtPajErdUdoZzkyY25hcHFLaTRjdVhxd2dYemZIMjk5UG9YTldYdTZjS3BVbXZtemwxNDkrN2QvenFickFmeUd5SWlJaTVmT3MvbmMxRVVJNVBqL25wZEtwVjI2UEJ4cFZJeFovWXNPb1B4NEVGeVY1ZE1yOWVYbEpRb2xVcExTMHNBQUs1ZHUyWnJhK3ZqNCtQbDVjWGhjTHE3dXhFRVhyOStBNGJwZ1dkTDFCNVgrbVVQWFQrd1FEMXJDaHpIVVJURk1FeXYxMXBhV3JXMXRWVldWbUVZbXBhV1ZsVlZ4V2F6dVZ4dWVYbDVjM096UXFIQU1MeTB0TlRmMzIvNDhFaEZ0MEtwVXJHWXJQS0t5b0ZCQWVUWHZ0aVp4WEdjdzJHN3Vyb21KQ2FSbFRSOWZ4Q0J3R0xPN0hnMm00M2pHUGgzV1FBMEdxMnlxaVlyTzNmNDhFaVRFYld4c2VKeTJEZHUzQ3d1S1pWS3BYVjFkV0t4V0M2WDgzaTh6czVPdVZ5dTArbEVJbEZkWGQyU0pXOExMWGc2bmE1SE9rQS9zRDBrTHo4UzNTdTBTdlRZZVFCSHZiMDgwOU16R3NYaTNMdzhNbmpQNVhMSGpCbmo0ZUhoNU9RSVFXQkhSMGRkYmYzSG4zd3haZkpFSjJmbndxTGJxTW1vVXFrNXozYmovK2szU3M1d09wMHVhbmpFMXh2V3IvaGdaUjhuTW9GQU1IMzZ0Qmt6cGd1RndyK1dKUGRzOWtFUTFOTGNVbDFWN2VicU9uVFlrTjI3OTRuRmpiNitQaU5IeFFnRWd1NXVSWDE5UTI1dWJuWjJ0bGFyYld0cmswZ2tJQWc2T2pwYVcxdVRiWTE2NzlmMkV3djA4Z1ZFOHF4VzRxbXB4d21DeStPVmxwYlcxTlFZalVablorYzVjOTRhT3piVzFkV1Z3V0N3V1V3UUpCUUtsYjkvUUhaMnp1NDkrMmJNbU9idVBxQ2dvSkROWnBNTksxL3dmb21uOVRlUVFhK2JOVHYrd3NWTER4NDgrTzkyNXNtLzh2YjIzdkhMVmphYlJSWVlQWGZkbnJSZEVBUTVYQTZLbWdhNHVXN2V2QVVFb1JrelpyaTZ1bGhhQ2xoTXBsNXYxQTAxakI4M3RxQ2c4Tno1ODdkdTNlcnM3RXhOVFoweFl3YWRSdnRyNzRmK29CNmcvd2pvT1VBUTBPbTBEUTBOZXIxKzlPalJ5NWN2ajRxTUVBaTRCRUdnR0laanVGS2xhbTV1cWE2dWtVcWxLSXF0WExuYXljbHArUERoS0lhaEJoTU13V1RENkgvSzZDREhBOE53SHBjVEdCanc0TUdEUHIxRUJKSEx1eWtJVEpZR1BGY0JRbDVScDlPQklFVGdSSHQ3KzRJRkM1VksxZlRwMHdzS0Nnd0d2WWU3dTBoa1JhZlQrSHkyaFlEajdPd1lFQmc0Y09EQVE0Y09OVFkydHJhMG9DaEtac3IyUS9xamdBaUNBQ0ZLUlVXbHdXQll0bXpad29VTEdReEdnN2l4cEVTbFVxdEFFT1R6Qlk2T0RvR0Ivc0VEL1J2RVRTNHVUaTR1VG84ZnA1V1VsSHoyNlpjV1F1R2FOU3ZKc042TEx3U0NvTW1FZG5SSSszakQzdDVlSXBFVmptTi9tMk5LRUFTTlJzM016RGwrNGhTS29oS0p4TkhSS1NZbWV1alE4SUVEQTRVV0FwVksyOVRjMHRqWVpEQVlhRFFxajhlalVtbFRwMDcxOXZiZXVIRmpiVjJkVXFsa3MyMHh6QWowRzhQVFEvOFNVRStkdVU2cmVmSWtZOGlRSVg1K2ZubDVlWjJkbmJXMXRRaUNpRVFpb1ZCWVhWM2QydG82ZG14Y1pNUlFMeTlQRDQrNXMyYk9OQmgxMmRsNW16ZHZIUlFhWWlIZ2tVa3pMN3dXUUVGZ1NVZG5jWEZ4SDIvWXdzSUNoaUVjeC83NkFmSWVVQlR6OWZYVzZYUzJ0blozN3lhSXJJUVVLcFBBc1RaSmEyTGkvZnNQVW9xS0NpTWlJaEFFNmV6c2JHbHBFWWxFNUdGa1k4ZU92WGJ0V2s1TzN2UVpVOGtVeEg3aSt2ejVnUDFoR2Q4YnNubnZvOGRQNXMxYk9HVElrQUVEQmxSWFY5Ky9mOS9Pemk0dWJ1eTc3eTcyOXcrOGVPSGNEeHQvV3JObXRWUXFOUmlNRERxTnkrVzJ0clcydGtvbWpCODNmbndjaHFFdmZ0SGtvby9GWWlVbTNaczJmYVpPcS8wdmJwVmN2VWZIeEZ5NmNKYkZlbEZvR01keEdwWGEzaUU5Y3ZTRVdOdzRNQ2dRb1NCU2FhZEdvM01iNEZKYVZsNVNVbkwyN0VrdWgzUDEyczJUSjA4OWZweG1hU21NalkyRllUZ3BLY25UMC9QVXlhUFBUWTc5aEg0UmllNkJJQWdZaHJRNjNmNzloL2g4dnB1Ykc1VktiVzV1WHJIaS9XKy8vVWFsVW5aMWRRRUFNREI0b0kyTjdlREJnejVhOCtGYmI4M3FWaWkxT3AxT3A1Zkw1ZU1uL0ttZXY1M0NlZ2R3Y1J4UFRrN1YvWFA2NGd2b2lSWXF1cnVWU3VWZnkrbDdYeEdDSUwzQllHZnZPR3hvZUVGQkFZL1BMeWdvOHZMeVhMbHkrWkozMytQeGVFRkJnUllXSWdpQ0tpb3EvZjM5Zi8vOU4zYzN0NWFXRm10cjYwR0RRZ29LQ203ZlNhUXo2QVRlTDZMUHZlbEhBbnJXS0lPZW5wNVZXRmdVSGg0K2RPaFFpYVQ5Z3cvZTM3UnBzMUtwMUdxMUREcWpzREJQbzlZYURJYnM3RndLbGVYdTdqbHVYS3l6cy9PcWxSOTBkM2NYRmhhL29PaXVWNllSeG1Bd21wdGJiOTI2OVovZlllOHY3Q21obDBna0NvV0NQSDNuQlk4R2dpQUFZUGZ1UDRpS2lwdzRjYnkvdjM5YzNHaGJXd2VqVVplVGs4UGhjS3FxeXNzcktoMGM3Q3NySzhQRGg1dzdmOXJLeXBKR280OGNPY3JPenU3czJmTktoUnA2ZHNiUHl4NnJQK2xIQWdLZW5sNkFYYjE2RFFDSWQ5NVpYRnRieTJUUUZ5MWFuSk9kY2UvZWZRUkJ6cDY3Y1BEZ2tTTkhqMEVRZVByMDJaTW5UOGhsVWs5UGorcnFHZ2FENGVycW1wQ1FCTUdVdjAyYTZkMlJnODFtUzlvN1B2OWlYVWxKQ2ZBZkR3bTVHbWV4MlN3V204ZmoyZG5aQlFRRWZQcnBKeDRlN2dhRDhXOTNNSHFnSUVpN3BEMHpNMnZzMk5pQ2drSU9oOFhoQ1BMemNyLy8vc2ZtNXViS3lxcTlldzhjT0hDa3FLaEVvOUVjUFhvTUJNRlZxMVk5ZUhBL01EQWdOalkyTXpNckt6dUhUcWYzSy9VQS9jcUpKdk9CSkpLTzVPU1VTWk1tMmxpTEhxYWtmUFBOaHIxNzloU1hsTXlZTWQzYnk4UEt5cExENGFBb3F0Rm9pb3BLSGlTbkpDY252Nzk4bWFPalEzMTlRM3o4OU8zYmY1VzB0UW1GZkJSOTNxVWwxUU5CRUlWQ2VaaWF0dUhyYng2bFBnSkI0RDhaRWZKdm82T2pWNjc4ME1MQ2dpQUlLcFhDWmpFc2hFSWJHMnNjUTNIODc3MFRzaVVJam1NVUp1dE93bDAybXowNExPek1tWE1oZzBMMjdkdjcrUEdUMEVHRGpodytZR2RuUzJjd2NCenZsc3ZiSk8xUG5tU3UvZWl6OTk1N0p5b3E2dHk1Y3l0V3ZIL3k1TWtIRDFKR2o0NTUyYVAwUFAxS1FBQ0ZTcTJ1cmtKUmRQTGtLZWZPWDdLMHNycCs0ellNUTE5ditOTGEyaG9BRWExR3FWUXBVUlBLWkREaXhvNGZOMzdjOVd2WHRtejlKVHA2UkdsWnhmUnBrL2F4V1ZldjNWaStmS25ScUh5dXJwbFVqMEtwM3JIanQ5Mjc5eWlWeXY4OGVFZ1FCSXZGV3IvdXkxR2pZekZNLzNTdkRjZFJERU9OUnVEZjFFZ1FDSUlvRklwTGw2N01talZESnBjYmpLYmJkeEk3MnR0Lyt2RjdSeWRYdlY2ajZKWnBOV29LaGVMZzZPVGk2alprY09pVDlLejlCdzY1dXJvV0Y1Zks1ZDN4TTZibjUrZHBOQm9FaG5DOEh4bWgvaUlnTXA4VkFPRG01aFpYVjFjbWs1bWRuVlZmWCsvajQ3Tm05UWNnU0NoVnFpdVhyMTI4ZExtK3ZwNUNvZmo0K1ByNStVNmRNbkh5bE9rVUt1M0NoVXR1Ym01U2FkZWloZk4vM2ZuSGxNa1RMUzB0VENiVFgzZFZRUUJnTUpnTUJrT3BWQUwvV1drWStSbDdlM3RYVnhlalFXMDBHaUVJN0VscmYwR0Z6Wjk5Wkpqc3MrY3VtVXltS1pNbjNiMTdYeUtSR0kyR3paczJNcGpNYTFjdnB6eDhWRjFkM2REUXdHYXpCdzRjK082U3hVRkIvcEdSUXkwRS9COS8rcm1wcVRFckt5c2dNT2h4MmhPTldpTVE4SEg4ZjFsUzBrZjZsdzhFQUlUUmhEazZPb3JGNG9LQ0FnNkhzL1M5eFJpR21rellqbDkydnZQdWV6ZHYzalFZREd0V3IvcjBrN1crUHQ0WExsNHRMTWdiTnk3T3k4dlRZRENrUGNrWU96Yk8xc2JtNE1IREZDcXRkeEl4QUFEa2hoU1h5OTZ3L29zN2QyNU9uVHFsZHgvQ0YwQitRQ1FTOGZrQ2dzQmhHQVpCQ0FUSjdSRG9uN0pIZXJiQXFGU3FwSzMxNk5Gajc3MjNSS3ZWMXRVMzZIUzZ5Wk1uY25uY1k4ZE9sbGRVeHNkUDM3QmgzWWdSdzNOeWN2YnQyemQzM3NLOHZFS1QwZURyNTdOZy90ejYrb2JzN0J3QUFLMnNySHBDUVM5N21QNmszd21JeitPSVJOWk5UVTFxdFhyY3VIRUFBTUV3blBMdzBTODdmc1V4REVHUTlldS9XdlQyNG9BQW4yblRaNHdkTytibXJUc0FRZGpZMkloRUlyMWVYMVZkL2VXWG45Njlkejh6STR2RmVwcSsyT05Ua3lPcTAya0hCdmtmUFhMd3UrKytZVEpaLzFaRDVIOTFjSEJnc1puazlQR3Nld0x3NHI4aXIwdWhVbi83N1E5N2UvdXBVeWNtSk41MWNYRm1zOW51N202bEpXWHQ3ZTFyUDFvVkVSRStaTWlnN2R0K2pvdU5CUUNndXJycXg1ODJhYlU2alZydDQrTVhHQmpRMk5nb2w4dnM3T3hnR0FMNldTaW92d2pvNlVTQVkvWU85aXFWcXFLaWdzUGhPRGs3YTNVNkNJTHYzRWxVS2hVUUJCRUF3T1Z3QVFEWGFEUWF0VnpScmJDMXRRVkF1TG1weWNuUlBpcHk2SU1IS2Y1K2Z0T25UL3RwOHhhRlFrbWhVSG8wMUx2dVRLdlYwZW0wOWV1KzJMdm5ENkZRK09KY1pnekRMQ3dzWnMyS1I1RC90SlhIMHkxaEhHZXkyRGR2M0VsT2VmanROK3RMUzhwbE1ubGM3R2lOUnR2V0poRUkrRXdtczYxTm9sS3FOR29OaFVKaGN6amtuejk4bUZwU1VrNmhVSFI2dlp1Ym0wNm5hMnhzdExBUXNObHNyQjgwVk9oTmZ4RVE4SFJueXVUcTRvTGplRmxabVlXRkJReEJHSVlaak1iR3hrWUFBQ0FJd2xEMGoxMjdhMnVxZVh3TERDY2NIQjBXTFpwWFhGUlUzeUQyOC9mMTh2YmljRGkzYnQ5WnRmSURCcDIrYWROV0NvVUsvR3RqVGZKYU1BeGpHS2JYNnhZc25MZG45NHMwUkJERWhBa1RMbCs2TUg1Y25QSGZyZFY3L3VTcDY4T2cxOVRVYk5tNmZmWHFsUzR1em9sSjkyS2loM041RnY3K1B0ZXYzYlMxdFpreGZhckJhR0t4V0F3RzQ5VHBjd2tKQ2VSN1VDcVY5UTFpR0VZUUJMR3pzMU1xbFZWVlZXNXVBemdjVGs5VDJINUNQeElRQUFBb2lncUZGbjYrUG5WMWRXcTEybVF5WVNnR0VBU1pyME1HN21BWVBuam82UEhqSi9KeTh5U1N0c09IankxZDluNW82Q0EzdHdGNm5YYjh1TGpTMG9vR3NYanIxczBabVptSERoOWpzcmk5UzJHQVh1dDVFQVExYXZYTVdUTzJidjJaRExFODF4Y0JBSURnNE9COWUzZU5pSTdxNlgvNFlpUFUyL1ZScWJXZmZQTEZrQ0ZoYjcwMTcvU1o4MDVPam9HQi9ucWRJbjdHdExMeThzWHZMQzBxS201cmJibC8vOEh2disvTnpzN2g4WGprZHdBQVFCQTRUdUJhclZhdjF6YzJpdFZxOWFDUWtML2RibnU1OUM4QkFRQUFBTVNvVWRFY0RvZXNsbElxbFZRYTFjYkdGZ0FBc3JYUEYxOTg5czQ3YnhjWGwxNjhkRFVuTzQvRllnWDQrMmRuWit2MWVoekhyYXdzb3FPSFg3cDBWV1JsdVhuVHhuMzdEbHk4ZUluRjV2MnRoa2czV0t2UkxGZ3diODJhTmVUbG56TXdVNmRPc2JPelVhdFUvN2FmUVk5TGp1RTRnaUFtRlB2b28wOVpMT2JtVFQra3BhVjJkY2ttakk4MUdQUTBHcjI4b3Fxam95TXNMRlRTTHJsN0wvbnlsUnNNSm1QcjFzM2p4bzBsdjRmRllqazVPWm1NcHE2dXJzYkdScm04T3pRMDFOUFQvZDhXM2Y2LzUrV250UGJRczhrZ0VvbHduTGg1NjVhTGk4c0F0d0hPVG81S3BlcmF0ZXNFZ1lNZ3lHS3lsRXFsazVPVGhZV0ZuWjN0elBpcHc0WU4zYk4zdjhtRURZdUkwdXUxems2T25WMnkxRWVQcDAyYmJtOW4rK09QbTZ5c0xBT0Rnb3lHZjJscTBkc3hBZ0I4OEpEQmNya2lOemNYQUlDZVhwWTBHdTNERHovdzl2SHFTWlgvWi9VOC9VNE13NmhVS29yaEsxZCsxTlltT1h6NFFMdWsvZWF0aERtejQ0VkNBUVRCS3JWbTFlcTFNVEhSSDMvOENaMU83ZWpvOVBUME1KbU1HUmxaS1NrcFRVMU5BQUFNSERodzllb1BsVXAxUlVYbCtmUG51Vnp1dHEwL1cxcGFrRTM3K3BXRytwR0FnRDlQUE1FQ0F3T3JLbXV5c3JPQ2cwT01SalFvS0NBbkoxY3NGdU00enVQeFB2eHdCWnZOa3N1N0h6MUtVNnZWNGVFUk5qWldlL2Z1ZDNjYllHRWh3REFzSU1DL3RMU3NyTFI4Um55OFNDVDg4YWROYkRaNzBLQlExR1FrbDFHOXB5RnlVNTFPbzQyTWlhWlI2WGw1ZVFhRGdmeFBiRFo3OGRzTFhad2RUU1lUQVBUdUhQVXZFOW16UlI1Qm5sZXZVbXZXcnYxTUlwRWNQMzRVdzdEakowNVBuRERPMDh1bnEwdUtvdWd2TzNhcVZhcWZmdnhPcTlOczMvNGJBQUNPamc0eDBWRXltZXpvMGVQazRRb2JOcXp6OC9VcktDek96czUrOENCNTU4NGRJMFpFNm5SNk1sZmZMS0IvcEpjRFFSaytQQ28vdjFBaWtYQjVQQkNFSXlNakhqOU9rOHZsUC8zMG82ZUh4OW16RitKaVIxdFpXY0VRNHVuaDR1emk4dWhSMnQyNzkxQU1mL1RvQ1FMRFk4ZkdQa25QcUs2dW1qbHp0cXVMMDlhdHY4amxzcUhoUTJnMEt0bmNpV3dmMWxPa1FaNi9QR3IweU1qSVNCUkZ5UTMyV2JObXZ2WFdiRElhU2FWU0tSUUVCQUVNKzdPZWh2U2xFQVJCRUFTQ0lEcURWVlZWL2NHSHF5a1U1T0NCZlJpT0h6NThMSHBFcEwrLzMvSGpKOU16c3JLeWN5OWV2THhpeGZzREI0WW91cnRWS25WczdPaHVlWGRlZnNIQ1JRdVNrMU5xYTJ1WExsMjZZTUg4N0p6OGxwYVdoSVNFRmU4dmUvdnRCWVpuNXJOZnFRZm9id0xxTmEzZ1ZDcFZMRzRzTEN5aVVDaHF0WnJINDQ4WU1ieXVydDdXMXBiUDR5Y2wzWTJOR3pONGNMaVRreTBJUVFjT0hpNHVMZ2tORGZQeDhRNEtDcmgwK1FxTlJvdVBuNWFSa1ZsUlVURjEyclRRME9COSt3NmtwMmQ2ZUhqb0RRYTVURTRRSUlmTFFXQ0kzRFdqMFdnb2lvbkZqWHcrYjlxMHFiTm56NXc5Wi9hc21kT1lUQ1lFUVFoQ2FXcHFhV3VUQUFERTUvT2V0WDhBR1F5RzBXaVN0TGZMWkhLVENVMU9mdmpaNTErRmhRNzY5ZGRmNVBMdTR5ZE9qUm81SWpSMDBMWnR2OElRTkdiMFNLbTBpMHFsWm1abSt2cDRPVHJhQlFRRzJOZzRwR2M4S1N1dmNIRjJ2bkhqNXFoUm94WXNXSkNmWDlEVzFwcVhsNGRoMktUSkUxMWRuRkFVQlVHb3ArNmcvOUR2RXNwSXE4QmtNaytjUEZOYlcyODBHbXRyYTUyZG5hbFVxck96czBBZ1VDZ1VrUkVSSjA2ZXVIejV5dkpsUytmT25TMjB0RnE4K04yQUFQL0lpR0ZYcmw2UGlSN3U1amJncTNWZmp4b1ZNMlh5eE9TVVZMVmFNMy8rWExWYXZmR0hueDRrSjZ2VmFnOFBqeUZEaGxoYUNzZU9qWFViUUFZT0tuZit2cXVscFNVZ0lJREZZZzRiT2pSdWJLeE9xNFpodUt0TGZ2TFVHWVZDSlJZM2RIUklZMk5IdmJQNGJSYVRUZ0RBL2ZzUGMzTHpKQkxKbzBlUHRGcXRuWjNkOG1WTDU4MWZVRnhjY1B0MjR1alJNWFFhYmMvZUEwS2h4VWNmcmRxMWE2KzF0WFdBdjk4dk8zNmJPWE5HZlB5czNOek1IVHQrTHlnbytQWFhIVENNMU5mWDgzaTgydHJham80T285SFkzTndjRXhQVDBORHcvdkozWFYyZERRWWorTmQ2czVkTi83SkFKQ0FJRWdTUWt2TElaREpaV1ZrRkJRWGR1WE9ucnE0dU96dGJKcE5oR0taVUtVZVBIaTBRV0p3OWQvN0sxV3NTU1llMXRmWE0rSmwrL2dHdUxvNUhqcDBjTmpUY1lEQzF0a3BLUzhzbWpJL1Q2blFKQ1VrZUhoNXozbnJMMHRJaU16TXJQVDA5TURBd0tDam83Tm56TmpZMk50YldENUpUcmF5RW5wNmVDb1VpTGk3MjB1VXJUQWJkemMzVlpFSi8yN21ieStWNGVIaDB5K1VUSjR6clZpajVBb0d0bmMzZXZRZkx5aXVDQWdPUEh6OWVWbFkrY2VMRVgzN1pHaDBkY3pjcDhVbDYxdlRwVTJwcjY1S1RVNDFHNCt4Wk14OC9mcUxSYUZldVhPN2c2RUtsVWhzYkcwK2ZQck43OTE0K24vL1ZsMTh5R2ZUMGpBeXhXSHovL3Yyc3JLek96azR1bHp0bHlwVG01bVlBQUFVV0Z1N3ViaWFUQ2V4bkRoRFFmelpUZTBQbUpiSllUSWxFMHRnb3B0SG93NGNQYjI5dno4dkx1Mzc5T28xRzF4djBOQ3B0K1BDb2tTTmp1cnE2enAwN3AxUXFsVXJsaHg4dWQzUDM4dkh5eXMwcjhQSDJjblMwcDFBb3gwK2MyYkQrYzVISTZ0eTVDNkdoSWJObXpSdzFNbWI3TDc4bEppYXUvUEI5UzZIZzdObUwvbjYrOFRNbU01aGNyVmI3MVZmclBEM2RKMHdZK3pEMWNjeklNYzNOWXFsVSt0bG5INTArZlg1ZzhNRFpjK2JxZFdvNm5mbzRMYU9tcG5iTHp6L3UyTEdUd1dEY3ZIbHQzTGh4WFoyZGh3NGRRbEgwM1hjWFNUczZIajU4dE9TZFJmZnVKek5aelBMeWlubno1b0FnOGlUdDBhRkRoNHFMaTcyOXZXTmpZd21DK1BhNzc0cExTdWcwR2dBQURBWWpPRGpZMTljWFFaQnIxNjVaV1ZsUnFGUXVoMDMwc3dCMEQvM1JBZ0VBQU1Nd2g4TkpTWG1vMWVxR0RoMGFFaEppYTJ0cjBPdVh2UHZPd29VTEF2ejhUQ1pUV2xwYVVsSlNlM3U3bzZNamw4dTlkZXRXZW5ybXFKSERDUUNzcTZ0emR4dlExdFkyZWxSTVl0STlkdy8zZ0FCL1Z4ZW5uTno4OVBSTWUzdmJtVE5uTnphS3BSM1NtYk5tWDdod1h0R3RDQTRlaUpxTWh3NGR3VEJzMHFTSk5UVzFOVFYxQlFVRjVSV1ZScU14S2pLQ3krV2NPM2ZSMWxiazVPZ2dhVy9mc1dQbnFGSFJmbjYrZS9jZC9QYmJEVEV4SSsvZHUzdi9mb3FucDhla2llUFliTzYxNnpldHJLeENRNE9yYStwRUlxdkt5dW9KNDhlZVBIbnEvUlVmcXRWcWIyOXZoVUp4NDhhTmh3OVQyV3oyMUNtVGx5NTliK0dDQmZiMkRqd2VMejQrbms2bkl3aVNrNU16T0N4MDFLaG9NcnJZMzh3UDBBOHRFUGowVkcrRGo0OXZVRkNnUnFPMXRyYldhclhaMmRrTEY4MExDeHVNNDlpWU1iSExscjByRmpkbVorZGV2SFE1TlRVVmhtRTNON2UwdExTUDFuNjJjT0VDSE1jSWdyQzB0QUpCc0xPelU2dlJBZ0JoWVNGWU1IOU9kazcrM2JzUHlrb3J1cnBrY1hGalZDcTVUQ2E3ZWV0T2JsNEJnOEhJenNuWnQrY1BBQUF1WHJ4Y1dGUTBmOTdjK3ZyNjI3ZnZ4TVNNbURCaGtwZVgrOXExbjhUR2pxbXNyR3ByYTJ0dWJvVVJ1cE9qNDVNbkdZMk56WHE5WWRxMFNRNzJ0anFkSGdEZzl2WjJGb3RGb1ZBRkFvRlNxV1N6V1k4ZVAvNzBzODk1UEI2TlJrdE9Ublp3Y0ZpNmRPbTRzWEVCQWI0aWtUVUF3Z0JoaWhrNS9JOC85bVJsWlZsYld3Y0ZCVFUyTmc0ZkhzWGxjclJhN1FzSy9sOGkvZFFDQVFCQW9TQWRIVktaVEdaalk2TlVLcFVLeGJqeFkrbDBSbE5qVTNWMWxZMk55TUpDRUJRVU1HZk9yTmpZV0tWUy9manhJd3pENnVycVRDYlUxZFhWMWRYRjF0YW1xYW5wNE1IRE1ybDg0TUNCQW9FQU5SbWRuUndKQXRpeWRidUR2WDFrNUxDZmZ2bzVMR3h3ZUhoNGZYMTlkWFhOeXBVcklpTkgvUEg3cmdzWEwyMzVlZFBDaFhNakl5SWFHaHBQbmp3VkV6Tjg3Tmd4UlVVbERRMWlkM2YzSlVzV1AzaVEzTkVoaVlnWXRuZnZmZ1JCRnIrOXdGSW9JQUNBUm1ja1Azand4NjdkS0lxTkdUTWFSVkVxaFpLWm1YM3UzSVhLeWtxajBjaGlzZGF2WC9mYnI3OU1tVHJSeGRXWnlhQkxPN3VLaTBzc0xTMm9OTFpTcVJDTHhUYldJZ3FGMHRFaEhURThrazZuOWF0NitONzBVd0dCSUlqam1JMjFkV05qODhPSHFaWkNDMHNyeTl6Y2ZBU0JUNTQ4blY5UU5EWXVsandOSTcrZzhNNmRCQ2FUd2Vmek96bzZ5TmovOU9relltTkhhYldhYTlkdnNWaXM2dXJxaXhjdnE5VWE4aFNjd29LaTV1WVdvVkJZVUZCSUVJUkVJaEdKUkNLUnRiVzExYUpGQzVLU2tqWnUvSkZLcFV5Wk1zWFowVUZ2TkJRVmxkeTRjVU9sVkllSER3a01DS2lwcVIweFluaDZlb1phcmU3dVZrZ2tFamFiRFlKZ1NNaEFQcDlmV0ZqOHcvYy9uajEzM3NyS3lzN09YcS9YanhvWnpXYXpqeDAva1ppWWlDQ0l0N2QzVEV3TUNJSU5EUTNPVGs0SURFTVFWRmNuM3JoeGsxQW9iSk8wNXVZV0JBUUVKQ2VuTkRZMmpSa3p5cmRYSFB4bEQ4dmYwQjhGMUxQUFFLZlR2TDA5cmEydFMwdkxIUnpzaFVMTHVqcnhvMGVQWXNlTTh2ZnpRUkFrT3lmLzBLRmpJNFpIaFlXRnVyaTRCQVFFMXRiV3FGU3FEMVlzYzNKeXVIVTdpVUtoMWRmWFF4QmtiMi9YM3Q2ZWxIUmZxOVhGeEl5WVBHbUN0NWZIK1BGeE9FN29kUHB4NCtKdTNyeTErTzIzczdKeWpodzVHaDBkYldOajg5MTMzOWZVMXYveHgrNkNnb0tWSzFkMkt4U1BIcWRGUjBkcnRkclcxdGE0MkRGbFplV2ZmTHdtTERRa01uTFk1TWtUMnlTU1BYc08zTGh4aThsazBHaDB2VjQvWUlBcmpDQWdCTHE3ZTZhbnAyZG1aczZlUFd2WnN1V0JnWUdEUW9KTGlrdVRVMUtIREFtalVpa01PaU03TzZlNXVVVWtzbloyY2l3cks3ZTJGczJaTTlQUDE2dWZuOTNjSHdVRTlENTBGNEpjWFYxZFhaeXlzbkxrY3JsYzFoVVJHVEY1eWtTQ3dBMEcwNzU5aDZaUG4rYm43Nzl6NXg4UEhqd29MaTRXaThYMjl2YXJWbjNZSWUzVTZRekp5UThVQ2dXQ0lDT0dSODJlUGZ2cXRXdGJ0bXk1ZFN0QkpwZmIydG9DQUhqdDJzM2x5OS9OeU1pazAraHU3bTdIangvMzl2WW1DS0sxdGRYZDNkM1d4dHBDYU1GZ01EVWFqWitmWDFkWGwxVGFHUjA5SWlucFhsenNhSU5CWDE1UjZlbmhrWnlTdW0zYkwrdldmWjJabVRGelp2elNwVXRUVWxLc3JLd0tDZ3FDZ29MWWJJNjluYWk5WFhyNzloMEFBR3ByYXdzS0NoZ001dkxseXpJeU1sUXFkV0NBUHd4RGdZR0J6YzB0U3FXeVF5b2Q0T284WjNZOGo4ZEZVVlAvUEtpd2gzN25SSlAwM3VuVXFGWFcxcUozbDd6ZDJpYWgwMm5XSWl1ajBRaEJrRXFsbHN2bGNubjNybDE3SEJ6czMzMTNjWEZSOFJkZnJyY1NpYmhjTHAvUHUzbnpUbjVCd2FHRCs2OWZ2MWxhVnBHZGs1ZWRuYzFrTW1OalIxTW9sSDM3RHJhMHRMcTZ1bGdJQkRVMXRUNCtQc25KS1ZaV2x1OHVlV2ZkK2cyREI0Y3VYL1llak1BZ0NEWFVOM3o3M1VacmE5SElrZEcvL3ZwN1VGQVFoOFBPeWMzMzgvUDdhTzBuU1VsM2hVSmhTRWhJWjJkWFltTGlsU3RYWkRJNWg4T1pNbVd5V0N3K2VQRFF3WVA3S1JTS282TWpETU8rdnI3dkwzOFBKNGh6NXk3dytYd3FsZGJZMkFRQWdNbGtjckMzZlgvNWUyMXQ3VHdleDhKQ1lIaDIxbTUvVmcvUWJ3VUU5SElZWVJnbXpiaVRvejFCRUdSZU1JcGlscFpDSzB2TGpSczMydHJhYnR1NnhkdkhKemc0QktGUUxsMjZRZ0NBVEs3WXYzOC9qVVp6ZG5hY1BYdm0wV01uNnVycUpCTEozTGx2YmR1MmpjQnhqVmFaa0hBdk5mVlJnN2k1czFNbWs4bnI2dW9DQWdMdTNydkhZTkNYTDNzWHcwd0dnNTRnQ0JkWDEyVkxseHc2Zkd5QTZ3QUtCYW11cnNaeHZMVzFsY2xnK1BuNXJsMjcydGJHbHM1Z2p4bzFNak16czd5OGZQRGd3U0VoSVhGeHNlZlBuOC9NekxoMDZaSy8vemNHbzJITW1ERTdkKzRRV3ZBaG1GNWFXcjUzNzE2TlJyUGw1MDJrUHNnU0FHZG5CeHpIeWNMK25yUE0rcTE2Z1A0c0lCSVFCSHNPVHU4NVdoc0VRWndnQUlCNC8vMmxJQWpldUhuei9SVWZSRWVQbURoeHd2RGhVZmZ2SjlmVk5XUmtaTlhVMUJpTnB0OSsrMlBCZ3ZsVXl0TnF3L3o4Z2wyN2RuVktPNVVxSlFSQzFkWFZUNTZrVjFWVkNvVVdVcW0wdWJsWkx1K21VQ2d3REJzTmhxY0hObUVtRG9jamtVakt5c3ZiMjl2YjI5dXJxcW9JZ21ocmt6UTFOUjAvZmtxbFVybTV1ZFhYMXl1VlNnc0xDd3pEMkd4MlZWWFZqaDIvQWdCdzUwN2k5T2t6YW12ckl5TWplRHp1eVZQbnNyS3k3OSsvYjI5dnYyYk42aUZEd25vZm50TDdHZnV6NGVtaG4vcEF2WG5hd0t3WEJFRkFUMHNzT05FeEk0WU1Eck8yc1FrTThQZjM5Mld6MkE4ZXBEUTJOcGFXbHVibDVRRUFrWnI2cUxhMlRxdlZWbFNVZDNSMDBPbDBHbzFHb1ZBSUFpd29MSHowS0xXcnE2dTF0YlcrdnQ3VzFqWXRMWTNENGFTbFBmSDA5UEwwOGtFUWlFYWptVkJzNSsrN0tpc3IxV3AxZFhVMWs4bE1URXdrMng0ME5qWUtoWllzRnJ1clMxNVNVdExRMEFERE1JVkMwV2cwbXpadExpZ29CQUFBQUFoYlc5dTh2THp3OExEQXdFQW1rd0ZCME1pUk1SOStzRHdpWWlqMlRESFBQU1BRdnczUG42UFQzelpULzBPZWVka0VDQUkwT2gyQ0VJTEFERG9kalU0L2NmTE1qaDIvYVRTYTZ1cnFuc1FkQkVGUUZKMDNiOTZhTmFzUmhHSnRMVXBMZTNMMTZyWGEyaG9Nd3dHQUtDa3B0Yk96MCt0MVpITkNlM3VIK2ZQbitmbjU2UFg2cEtSN1Y2NWNwVkFRQ0lLY25aMWJXbHJZYkxhenM3UEJZQkFJQkVPR0RKazVNNTdINVVvN1pmWDF0Vjk5dGE2MnRwYk11U2F2em1ReS9mejhSQ0xScmo5K3M3T3pBUUNBUXFVREFJR2FER1NHNGF0aWJQNlcvajZGL1JQUDhwcEJnaUQwT2wzUEFCaU54b2tUeHFXa3BKNDhlWkw4SkFSQlpMclAzTGx2L2ZicmRvbWtnOC9uMzdwMU96czdlK0dDdVQ2K1BuUTZYU3FWMXRYVzNiNlRXRmRYNStMaWN2NzhlUTZIN1RiQXhXUXlNaGowQVFOY1lSZ0tDUW54OGZHcHE2dGI4czdpME5CQnpzN09MQmFyczdQelFYTEtybDI3MzN2dlhUcWRFVEZzNk5FakIyZlBtZGZhMm9vZ0NKa0FyOVZxR3hzYlYzNzRvYU9qUFprdlJyYlQ3MjFRWDFIMUFLL0VGUFpQOUxiejRMTTZQeHpIbVV6R29OQlFwVkpkWFYxTmV0d1locm03dSsvYTlVZDFUUTJYeXkwcEtiNXg0K2JHamQ4R2h3U3pXWFFxbFdKcGFlSHQ0ek0yTGxiV0pZK09pUkdKckxLenM1Y3NXVEp0Mmd3ZmIwOHlwcmR6NTI4bUV6cDdWdnpjZWZNZEhHM1piQWFEUVJNS0xZWU1DZGZwTkdmT25KMDBhWHgrUVpHYm01dVZwV1ZDUW1KUDYyQXZMKyt2dnZweTdsdXpTRDJST2FuazNiNUNVOVUvOGFwYW9ONDhWLzF1Tkpwc2JVVGJ0Lzg4ZCs2Y3pJeE1tVnlXblowYkdqb0lJSWoyOW83SWlLSGJ0djB5Wjg1c0J3Y25sVkt1VktvNVhBNlZndWowU2lhRFBtNWM3TEhqSjkzZDNmMzgvSDcvWTVlYis0Q0hLYW1abVZrVEprd29LeXN6R2czRGgwZG8xSElBQUJBRWtjbmtDQUp6T0t3WjA2Y2xKNmMrU24wY0ZSVjU5MTV5VEV4MGVIaTRyNiszbGFXVnU0ZEhaTVF3ZC9jQktHcnFWNGVrL0s5NEhRVFVRMCs5anNsa29pRHdpT0VSVVpGRFlZUng3TmdSdlY1ZlVWbnA2T2hnTkJyVWFyV1RreU1Bb0J3dS8vYWR1NDJOVFd2V2ZFQVFoRjV2OFBCd2QzUndLQzR1Q1FnSTBHcTE1ODlmYW10cmk0aUkwT3YxSlNWbGk5K2VEMEVRUVFBTUJyMjZwbTcvL2tPZmZySUdRU2d3UXJlMnRxNnFycDQxZTZiUmFHanY2QXdNRFB6aTg0OWRCN2pqdUluQThaNERjbDh6OVFEOXNxeW5UL1JvaUNBSW5VNm4wK2tBd2toQmtLNHV1VmFyMDJnME1sbTNyWTNOeFl1WHUrV0tUbWxIWldWbFltSmlTM01yaFVJaGU2eDZlWHRKcFowR3ZkN2YzMy9YcmwxaXNkalcxbFlxbFRJWTlBRURCaGlOUmhBRVlBUk9UOC9JeU1pc3Fxclc2WFFseFlXRmhZVitmdjUxdGZWVUtxV3RyWTFLcFVJUVpEUm9kVnJ0YTZ3ZTREV3pRQ1M5SFFzSWdqQU1EUTRlK0NROVU2ZlRXMXVMcXFyckprK2VlTzkrOHVhZnR6T1pUQnFON3VIaFlYeDZ4ZzlBRUxoUUtBQkJRS0ZTTVpsTXFWUkt4b1NVU3FXYjJ3QW1rLzYwRVNKQmdDQVFIQnljbFoyYjh2QlJaMmZYcEVrVDJHeVd0TE5McDlVVkZaZTR1cnJZMmRtWlRFWXlCK00xOEhYK2lkZk5BdldHL04wYkRFWVBEN2U0dU5qVTFOU1VsRlJ2TDgrVzFyYkl5SWpCWVlPOHZiMjd1N3NMQ3d0TktFcDJtaUpyZFF3R0E0SGpNQXdqQ0VLbjB5RUlRbEdzcDQ2SElBZ0FoTnJicGJtNXVVS2hwWit2Ny9oeGNUUWFBOGNKQnAxKzhkSVZITWRuVEo4S2duKzJZWGpaYitML1IxNURDOVFiY3ZCTUpsTmM3Q2duSjRmangwOGxKQ1pHUjQ5SVMwdnY2dW8wR2sxdGJXMElnaEE0UVo2MUFFRlFkN2RLcjlmYjJ0b2FqVWFGUXRIYTJrcWxVZ2tDNyt6c05CcE5WQ29GQUFEZ2FXVTBVRlZWSlJBSUdBeUd0N2UzdGJYVmdZT0hac2JQaUkrZnl1R3dqVWJUY3gydVhrdGVad3NFOU9xcWlhS21vS0NBcjc3NlhDcnRQSExrbU1GZ0JBQUl4M0Urbjc5OCtUSjNkN2VueFlRZ1dGSlNiREFZTFMwdEt5c3JDWUlvTFMzRk1Fd2dFRFEzdHpTSUc4a09ua2FqOGEwNXN5Wk5tb1FnaU1tRVFoQmNYbDYrZi8vQjBhTmlsaTVid21henlJMnQxMTQ5d0tzYmlmN1A2WDBhRUlWQ0FVQ3dyS3l5dXFwYWI5QkRFT3poN2hZV0ZxTFg2M0NjWUxFNTVlVVZHemR1SWdnaU1qTHkyTEZqV1ZsWkFBQjgvdm5uSUFoV1ZWWDUrL3Q5KzgwNms4bGtNcG1vVktyQllFeEplYXhRS2xDVDBVb2tDZ3dNc0xlejBlbDBBQUNTRWM3WDArdjVWMTdoUU9KL1NNOGdrbUZHQXNmdDdXejkvWDJEQWdPUEh6K1puWk03ZXRSSUtvVUNJMGhGWmRXdVhYc0pnaENKUkF3RzQ5YXRXNk5IajZiVDZlM3Q3U05HakpCS3BaMmRzcmEyTmw5Zkh3YURRYUZRaWt2S2Z2cHA4L2p4WTZkT20rSG01c3hrME1rRlYwOUg4TmRlUGNDYllJRjY2RzJLR0F4R2JsN2gxMTkvRnhZV3ltQXdiR3hFQ29WQ0xHN0NjVndxbFM1WnN2ajA2Yk5kWFYxcjFxeXByS3pjczJmUDU1OS8xdGJXbHB1Ykp4UUsyV3lXcTZzTEFBQlNhVmR6Y3pOQjREdCsyVW8yWG5tTmwrdi94R3Z1QS9XbVoxREp6UTJSeUZKa1pjVmdNUGg4Zmt1cnBMdGJxZEZvTWpNejU4eVp4V1F3aW91TFo4MmFGUmpvTjNyMHFHSERobDI3ZG4zUnd2a2NEcWVrcEJRRW9ZNk9UcVZTYld0cnE5UHAzZDNkU2MvNjFkcEYvMS94K2s5aHp3R0NJQUNBT0k3emVOekFvSUQ2K29iT3prNGFsVnBjWEp5ZW52N1RUeHNqSXlPWExsdE9wOU5YckZndXRPQnpPR3k5d2JSNzkyNCtYN0JodzFmNStma0pDUW1lbnA0NGpzdGtzdkR3d1cvTmlYOERkZFBEYTc2TS8xdkk0VVpSMU1YRmFmWHFEMUFUbXBkWFVGOWZmLzc4R1Q2UDk4TVBQd1lIaDhoa01pNkhoZU00bmNGQVlHakVpQkdOalUwSERoemF0blh6M24wSE9qdGxINnhZeXVGeUVRUXg2SFg5NUFUdWw4SWJOSVgxMEpNbmFqS2FOR28xaFlLMHRVa1VDc1hkdXcrKy8rR25xS2lJYjc5ZGo2Sm9mbjRSZzhuRVVDdzlJMlBreUpodnY5M1EwZEh4emJjL2RIY3JHaG9hVENhVXdGR3RSdjJDZzEzZUJONGdKL3F2OUNnSlJkR2MzSHlaVEJZU0V1ems2QUJCMEsxYkNXZlBYZHk3NS9ma2xJZm56MS9jdG5XelVDakFNRHkvb0xDNXFkblB6OWZWMWJrblllT05OVC9BR3k0Z0VqSkJsa3FqZ3hDRW1vemtkaW1WU3R1NWMwOStRUUdLWW10V2Z4Z1dGa0lXRjlQb2RBaUNVZFJvNm4vdENsOEtiK0lVMXB1bnFiRUVvZE5wTldxVjBVVEtBc1JRZE1tN2I4TXdQSHBVek9BaGc3VmFMUVRCQUFEb2RUcU5Xa1gyKy8ybkE4TGVLTXdXNkhsNmZCb0lnbEFNaHlDeU1xTWZuYlRkcjNnVFYyRXZwa2NvT0k3REVOa0kwYXllZjhRc29MK2hKNjd6WEZQcGwzMWYvUkd6Z0Y1RTcrRDF5NzZYZnNxYjdrU2I2U05tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVC94L053T1RiUUFQbFB3QUFBQUJKUlU1RXJrSmdnZz09IiwiZGdlLWljb24uaWNvIjoiQUFBQkFBWUFBQUFBQUFFQUlBRERmUUFBWmdBQUFJQ0FBQUFCQUNBQUtBZ0JBQ2wrQUFCQVFBQUFBUUFnQUNoQ0FBQlJoZ0VBTURBQUFBRUFJQUNvSlFBQWVjZ0JBQ0FnQUFBQkFDQUFxQkFBQUNIdUFRQVFFQUFBQVFBZ0FHZ0VBQURKL2dFQWlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUVBQ0FJQUFBRFRFRDh4QUFCOWlrbEVRVlI0MnUzOTk1TmM1NW5uQ3g1djAzdHZxN0s4TDNoREVDQUFrcUtUMU9xWnRyZnZSTnlkamRqWS9YMWo5eSs1czdOM0pucHZkdzliclpGRVVSSkpBQ1E4VUNqdks4dWw5OTZjazhmdkR3Y29GUUU2aWFUWWhjb1BnNHlxWWxiV09TZWY3L3MrNy9zK0JtU1pPdENseTNFRitxRXZvRXVYSDVLdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFyZ2gwUlJGRVZSRHI3K29TL25PTklWd0EvR1lkTlh2KzVxNE05UFZ3QS9ES3F0Z3lENFExL0ljUWY1b1MvZ2VQSGlHQStDNE9kL3FBQkFWeFYvUHJvQytLRUFSVkVVQkI2R0VSUkZ1bFBCRDBYWEJmcnpjWGlrUnhBNG5jNTg4c210OWZVTmh1MmdLS1lvU25jVjhPZW5LNER2QytVRmdEKzQvZ0FJZ0lsRThwTWJ0NWFYVjF1dE5vd2dCeHRDTC81V2wrK1ByZ3YwbmZHRnh2cUZQNFFnaUJlRVhDNi90clp1TkJyT05sdmdsN3oraFJYQ0gzNytROS91UzBKM0J2aTIvQW1ETkFUQjlYb2ptVW9tRXZIOS9mMTZyYVlvOGhmYTlGZS9lWGQrK1BaMFo0QnZ4V0hINWpselZCUUFoaUVNd3lBWUJoUkZBUlJKbEFSQlVGK1d6K2NyNVNxRzRZMUdvMVFxdGRzTWdzQ3lMTU13akNBSUJFT0FBaWlLSWtxU0tBZ3YvRmxWS2svL2FIYzIrRFowQmZBbjh1TG9DMEVnQk1IcTF5QUlBZ0FvU1dLbFVtVllWcFlWSEVNMUdnMU80SUNpY0J5WHllWjRRUWdHZ3pTdEtaWEx4VkxaNDNaQmtDeUtZclBaYmpOdFdaSnhBdGRvYUlva242Nk9GUVVBQUZtV24zN2ROZnZ2Z3E0QXZqTVVCZUI1Z2VkNVdaWmhCRkVVc0ZESWJXeHNaakpaUlFGMFdtMHdGT3pwQ1ptTStrcWxXaTVYWUJqMitid0VRZFJxalZ3MjUzSTZPSTZMeHhPN3UvdlpYSTduT2FQUjJOTVQ3dW5wd1RCTWtrUkFVVkFVUVZBVUFnQ2xhLzNmRVYwQi9Jazh0enlGSUxoU3JlM3Q3aVZUYVk3alVSVGhPVzVwYVdrL0ZtZFpGc013Q0lKd0hMOTQ4Znc3Yi84b21VcUpvZ2dBWUsxVzgzZzg3WGE3WEs1VUtwWGxsZFhmZnZpN25kMDlITWNaaGxFVXhlVnlEZzhOT3AxT2RjQTNHUFM5dlQxT2g1M0FNVkVVZ2E3ejg2M3BDdUJQNUxEMXd6Qzh2Yk4zNys3OTJiazVBQURkYnJmTlptdlU2N096Y3hpR2UzMWVnOEVnQ01MV1Z2VG16VTg1anROcWRSaUdpNklZalVZSmdyRGI3WlZLOWZjZmZmTHBwNTlWcXpXdFZtc3ltWEFjWDE5ZjM0cEdRUkNrYVMzRHNQRkVvdG1zT3h6T2ExZXZURXlNa1FRdXlUS2dMZ1c2cDhkL0t0MWRvRzhMQ0lMdE5yTzh0SEx2L29Ob2RMdmRiakVNQTRLQTIrTWVHUjNSRzNRVVJZWERZYi9mNzNLNXN0bmNMMzd4eTB3bXl6Qk1yVlpOSnBNN096c0FvTlFiOVk4K3V2SGd3VU1Ndy9yNys3MWVyODFtMDJnMGJwZHJkSFFVd3pHZTV4aW1uYy9uWjJmbm5zek9wVkpwRUlLQVEydURMbjhhWFFIODZTaUtBa0VRQUFDVmFqV1R6WXFpR0FxRlJrZEhUU1lqRE1OK3YrL3YvLzd2REFiRC92NCt5N0k4ejF1dEZneERZN0VZQ0lMcGREb1dpekVNczcyOVhTcVZtODFXb1pEbk9JNmlLTDFlRHdEQXpzNk9MTXRuenB4NTk1MTNGRVdoYUxLdnIzZGdZTUJxdFJTTHhWUXFMY3VIb29hNkd2aFQ2UXJnVCtkZy94RUNJWmZMRlE2SGZUN2ZtVE9uWDMvOW10MXUyOWpZMHV2MVpyTlpGTVZpc1NpS1lybGNGa1V4SEE3cjlmcU5qWTJWbFJWWmxsdXQxdHpjWExsY25wNmVwbW02V3EzVzYzV2U1K1B4dU1HZ3Q5dHRwWEtKWmRuVHAwKy8vdnJyb1ZBb0dBeTYzUjZOVmlQTDBqUDNwOHVmRHZ6Ly9uLzlQMy9vYXpqQ3FDc0JCRUVRRk5GcU5FNkhQZExYYTdGWU9oMHVuODkzT3AwN2QrNVdxMVczMjEwcWxmYjI5aWlLR2gwZHpXUXlNek16clZiTDYvV0NJRmdxbFJBRUNZVkNnaUJVcTFXV1pRbUNLQlFLRE1NU0JHRTJtUlVBNk92cnM5bHNJS0RvZE5wUUtPajMrVFFhR25nbXd1NVJ3SjlNZHhIOEozSjRGNGdrQ2IvUFl6WWFaRVV4bVUyeUxBdUNrRTVuSGoxNm5NL25OUnBObzlGWVhWM0RNTlR0ZGdNQThQang0MVFxMWR2YisrcWxTNXRiVzdPenM2dXJxM3E5M3V2MThqeWZTQ1RiYmNaaXNhWlNxWWNQSDRtaUdBd0VRVURXMEVSdmI4amxkdEkwcmRWb0RsL0pELzB3ampEZEdlQ2I4dFZ4QnppTzZYUmF2VjZQNFZndWw3OS8vK0h2Zi8vUnlzcUswK20wMld5NVhLNVVLZzRQaitqMSt0bloyYlcxTlJ6SFgzLzkrdC84N2Q5b3RYUWlrWWhHbytWeU9SQUlXQ3lXVnF1ZFRDWkRvYUFzeS9GNFBCcmRoaUFvR1BDN1hBNk5oamJvOVRpT2ZlM1ZkbFh4RGVrSzRHdjRKckVHYXRnbUNJSVFCTFdhN2Q5LzlNbjc3NysvdHJZMk1USGhkRHFyMVZxalVYL3Z2WGNwaXBxZm41K1ptZUU0N3RLbFYzNzJzNStkUFh2T2JyY1ZDb1ZFSWxVcUZRdUZRbjkvLy9qNEdFSGcrL3Q3RG9mVFpyT2wwK21OalEwQ0o5eHV0ODFtVlJSRmtpUlpsci82cWtBUTdPYldmQk82QXZncVhnanZlUnArYy9qbklBZ2lDSUlnU0x2TnJLMnQvOXN2ZnZYaGg3K3RWQ285UGIwR2c2RmVyMXV0bHRkZXU2S2g2ZnNQSGp4OCtGQVV4Wk1uVC80di84dmZuenAxa3VjNWpZWXltWXlpS083czdKYkxaWTdqZkY3dnVmTm5BUUFxbFVvOHo3dGNMbG1XazZsa01wVUdGRUNqMFdvME5Jb2dzaXdmWE5YaFN3S2YvZ01jL052bEsrZ0s0RXQ1MGZvaENJSWdDRUVRR0liVkRWQUFBRUFRRkVVeG55L09MeXo5L3FPUGYvV3JYK2Z6QllQQm9OZnI4L204Mld3K2ZmcFVUMC9QclpzM2I5KytVeTZYKy9yNi92N3YvLzdLbGN2Tlp2UFdwNSt4RE52YjIydTMyNHJGY2pxZFRxZlRDSW9NRGd3T0RBNFdpOFZrTWluTHNsYXJ6ZWNMT3pzN3VYd2VRVEVNUlhHQ3dISHNZTnA1N3BLZUcvcTc3dEJYMEJYQUYvT0Z5YnNnQ0NvQUlNdXlKRXVLQW9BZ0FFR1FJSWpKWkhwaFllblRUMjkvOXRsbnNWak1hclZDRUxTNXVWbXBWTjU1NTUyeHNmRkhqeDc5OHovL1N6cWQ5dnNEYjc3NTVzOSs5aGVLSXQrL2YvL3VuWHZsY3RucGNBWkRJYjFPdjd1M2w4L244L2s4dzdDdnZQS0tUcWZiMk5qNDdMUFBTSklrQ0tKV3ErM3M3SWlTTE1zeWltRmFyUWJEVUFpQ1pFV1JaVmtOa2dOQk5UemllZWVucTRFdm95dUFMK0RGc1Y4ZFgxc3RKcHZON2NmaXFXU3EwV2hnR0FaQmNES1Z2bm5yczJhcnhiVGIrL3Y3blU2blZxdGxzMW1XWlh0N2U4K2VQVnV0VnQ5Ly8vMzkvWDBVUlM5ZXZQQVhmL0VYTUF6ZnZuMm5XcTJlT0RFdFNXSXlsWkpsdVRjU2tXVTVrVWhrTXBsbXMyazBHczFtYzZQUm1KdWJLeGFMN1hhYjV6a0VRU0tSWG8xVzI2ZzN5cFdLeCsyV1pDbVR5ZTN0eDdMWmJLdmRCa0dZSUFnWWhsWFA2TUR1dXdMNE1ycmJvRi9BNFMxT1JWRlFGRzIxMm52N3NlM3QzVTZIZ3lCUWxxVk9oME1XRmhWWkVTWFJvTmRwTmRwVU1wbElKQm1tTFFpQ0lBZ0VRU2lLa2s2bks1WEsxdFlXeDNIaGNMaS92MStqMFQ1NDhLaFNLUThORFowL2Z5NmJTZDI4K2VuaTRoSUV3YjI5dlQ2ZmIydHJxMTZ2ejg3T0lnakNzcXdzeXp6UFM1SUVnZ0JCa0xsYzd0S2xWMncyMjNaMCs5L0taVW1TRlVYQk1BeEZVVmxXWUJpeVdNd2p3ME5tc3dsQklGR1V1cWIvMVhRRjhEWEFNTnhvdGpZM3RoN1BQQ2tVU3JJc1V4U3AwMmxwV2xPdk4yS3hHTS96Zi9NM2Z3MEFRS3ZaS3BXS0I3OG9pbUl1bDl2YzNPeDBPb0lnQUFDZ2hyZ2xrNG10cmMzQndmNngwV0dYeTJrMkcvYjJZM056QzdPenM0RkFnS1pwaXFKa1dTNlZTbHRiVzlsc1ZsM3NxdStnS0VBeW1kTFFHcS9IczdxNnR2THdzY3ZsZExsY0xOdkpablB0ZHB2bkJacW1tczNXaWVsSmw4dHhZUDNkdkprdjQvZ0s0R3Z6Q1ZXakFVRndaMmZ2OXAxN3k4dkxCRUcwMnkxRlVkeHU5L1QwdE12bFZHTThRUkJzdDl0dHBxMytvanFCaUtLWXlXUjJkblpvbXRicjlSekhLWXFTeVdRYWpRYkhkWUtCZ052dEVIZ1d4N0JJcEhkblozZCtmb0ZsV1laaGNCem5lUjRFd2IyOXZVd21vd3BBZlU5WmxobUdZVHNzTHdpS29taTEyb0dCZnIzZXNMaTR1TEd4MmVsMFVCVEZNQ3lUeVdJb3F0VnFkRHF0SkVucWpYejEvUjViZVJ4ZkFieUlhaUVIbHFCYVA4dXk2MnRyYTJ0cm1VeEdEV3NEQUFCRjBaczNiLzN0My94Tk1CaFFGR1YxZGMzdGRsdXROZ2lDRHR1cklBaDdlM3RHbzVHaUtKcW0yKzMyOXZZMmp1TW1rd25ITVFSQlpGbVdaWWtrQ0JCUVVxbVVJQWpGWWhISGNZSWc2dlY2clZhclZDb0hGNk02WTI2M0c4ZUpYQzVmTHBkZnZmUktxVno2OWE5L2MvdjJiUmlHMVJnS3A5TnBzVmhYVjljOEh0ZkV4SmdrU1Y5eGoxMk9xUUMrS0tFUlVvM3NBSFZYc2RQaDA1bk0rdnA2TnB0RkVPVDY5V3VCZ0Q4V2k5KzVjM2Q3WjhmcGN0cHM5bVF5MmR2Yk16azVNVDE5WW1scGtlTzRnN2V0MStzY3grRTRyc2I1QUFCQTB6VFA4NjFXRzFBQUdJRWhHR1hZVHFWYXJWUXFJQWhXcTFXR1lTQUlhclZhTE11S29xaStqNm9yczlsOCtmSmxzOWxjS0JRVVJjRUpJaDVQeEdMN0xwZno3YmZmcWxTcVQ1NDgyZG5aclZhclBwKzNYbThBbjNlQjFIdFUxOGV5L1B4Qy8zaE9Bc2RVQUFlQTROUDhYVkVVRDNiNkQzc0VNQUpydFZvQUFCaUd1WGJ0MmovOHd6ODRIUGJmLy82amFEU0tJQWdFd1NTSkFRQ2cwZEF1bCt2ZGQ5NUJVU1FXaXpVYURZN2pCRUZRblJhR1lSQUVrU1NwMCttUUpBbEIwT3JhMnRqWWFEQVU0RHJjNXViVzZ1cGFzVmhrV2JiUmFLanBCS0lvQVFBQWdpQU13eWlLMGpSdHM5bW1wcVl1WDM3VlpETG04em1DSUNWSmhpQllvOUhxZE5xMzNucUxvbWk3M2ZGZi8rdC83YkFzUWVBYXJVYVJsV2REUGdpQ29DekxraXdEenphMXVuV0hnTzQyS0FpQ29pUTJtKzFDc1pUUEYxck5GZ2lDYWdhak91amlHQzVMY3JWYTdYUzRkOTU1WjJwcXVsNXZ6TTNOSVFoeTh1UXByOWZiYURSYXJWWnZiMDg0SExLWUxTYVRDU2NJOVdUcUlHd0JlT3JEQUpJa2Rqb2RsbVZ4bkRCYlRHYVRLUjVQZlBpYkR4OCtmRlN2MTlVaFgxRVVTWklCQUlBZ2lLSW9xOVhxZHJ0SFJrWXVYNzc4NXB0dmpvNk9RaENZU3FXTHhWSXdHTlRyZFJ6SE5adXRucDV3VDA4dkJNSFpiRWF2MTcvMjJwVVRKNllKQXBkbFdRMFk1WGsrWHlqbDg0VjZyU0dLRW9JZ01Bdzk5eWgrNkUvakIrQll6d0FnQ0VxU2xFeW1sNWZYaXNWeXZwREhjV3hrYU9qMDZaTjZ2VlkxQ0FTQng4ZkhSRW15Mld6bGN2bVh2L3hsczlsZ0dPYU5OOTRZR3h0ck5CcVpURHFYeXpXYkxReEZ2VDZ2ckNnR296RWNEc2RpKzl2Yk94c2JHOFZpRVVFUXE5VnFOcHRwbWtaUkZFVlJSVkUrL2ZST05McFRyemN5dVZ3d0dQVDVmTHdnY0oxT3JWWXJGSW9NMHlaSjB1LzNEdzBOZWIzZWNEamMxOWZYMjl0ak1CZ2E5WHFsWE1sbXN6elA5ZmNQYUxXNng0OGZmZkxKemRYVmRRQUFnc0hReU1qdytmUG56V2FMSlBJQUFNQXczT0g0ZUR4MSs4N2RZckZJa3BUYjVRcUZBcEZJMkdBd1BMZElPRzRjT3dFY3hQT28zc1YrTExHNnVwNU9aMlJac2R1c0Zvdlpack9DSUtDVzZKRWtLWnZOemM0dHJLeXNOUnBORkVWZ0dQSzRYUmN2bkJzYUhtMjMyenM3MjZJb2hzTWh0ZnFEeFdJR1FWaVNKQnpIU1pKQ0VBVERNTC9mUHprNWVlYjBLWmZiUlpFVWlpSW9pdkk4MzJxMUdKYjFlajFuejU0bVNSSUFBUFVBb1Z3cXJhMXYzTGx6TjV2TmdTQ0VZUmhKa2pBTXQxcXRyYTNvbzBlUFc2MldMTXM5UGVIOS9YMkh3ekV4TWVaeU9lYm5Gd3I1UXIxUjUzbCtkWFdONS9tcHlZbSt2bDRJQWdFQVVHUUZ3N0dlbmhDQ0lBekRObHV0eGFWbEZFTUhCa2djdzlRSlIwMnZPVzd6d0xFVHdPRU5RUkFFRS9IRS9uNGNBQUFVUlVPaFlLUzMxMlEySVRDa1drT3IxYjU3OS83TXpLd29pY0ZnVUtmVmFyWGFRTURmMjlzamlISTBHdDNmajZFb2hpREkzTng4cTlYczcrKzMyZXdzMjZuVmFySXNXeXdXaTlrYzdnbGZ1SEIrZkd6TWFEUWdLQUpCRUFqQ2tpUTI2dlZxclk3anVNbGtwQ2hTZVJyUklMVmE3ZjM5ZURBWVdGaFlWRlhITUV5eFVGRFBFMVpYVndWQjhQdjlmcjh2a1VodWJLenJkSnBRS0lpaTZPN3VicWxZYWpOTUpwT2RtNXVyMWFvb2lvUkNBWFZoWTdQWmJEWWJRWkQ3K3pHVzdhVFRHYWZEN3ZHNEtadjFhYTJoWXhrNWQ3d0U4TnlhVDVabGp1YzVqZ05Cc0Zhcm1jMG12OStQWVFRRXlUQUVTYktTeXhkdTN2b1VRZEJ6NTg1TVRVNHBpaUxKTW9JZ3FYUm1iVzF0Ym02KzArRWNEa2M4Rm04MDZnaUNRQkFFd3hCQllBYUQzbURRRHcwT1JpSTlrYjZJM1c1WEZFQ1dKZlUwUUZGa1JRRVFGTE5hN1FBQVNLTFVhamJWaFNvRWdUUk5EUThQaFlMK2MyZlBiRzF0NS9KNVdaWlJCRVVSR0ZBVUhNUHE5WG8rbnljSWdtR1l4NDluU3FYeXViTm50RnFkMys4UCtQMFFETmRxOVYvKzhwZExTeXNHZzhIcjgrQTREc015Z21BZFRtZzBtb1ZDUVpKa1NaSjRRUlFGNGJnTitjOXh2QVJ3Q0ZCUkFCaUdlM3ZDdVd6dXdjUEhtVXg2Ym01dWRYWDErdlZyQXdOOVZxdWQ0OWhpc2RSc05pT1JQcjNlV0NxWFNKSUVGR0F2azVtZlgxaGFXbW8wNmdSQnR0dnRubkRvcjgvK1ZVOVAyR0kxb3lpaXVoSVFoRUF3REVPZ0tBcjVYSzVXcTdYYWJZN2plRjdnZWVHWjF3RUFnQUpCRUF6REtJcVFKRUhUdEZhcjFXbTF0SVllR2g3cDZ4OFNSVjRVZUZtV0lRaUNJTERaYk1YaWlmWDFqWTJOeld3Mlc2bFV0cmQzb3RIb3FWT25JcEVJVFZGc3N5Vkprc1ZpS1pmTHlXUlNFRVFFeFJpR2ljZjNabVptUC83a2sydzI1M2E3UFI2UDIrVXlteTNxVHV1eFRhMDhwZ0pRZHo4NWppK1Z5b1ZpVVpLRVlEQUFBRUNqMGZ6b28wODJOemVucHFZQUFGaGRYYlBaN0lGQXdPR3dJd2hjTHBWWFZsYWV6TTd0N096QUNCTHA3UmtkSGVudjcvUDdmRTZuUTI4d1lCaXVLQXJYWWV2MWVxbFVMcFVyalVhanc3S2lLRXFTQk1Fd2ptTVloc013ak9NNGdpQ0FBa2l5SkVtU0tJcnROdE5zTmtSUmxtVVpna0FjeDdWYW5kRm9OSnVOWnBPUnBDZ1loaFZGTmhqMEpyUEo1L2NPRHcvdDdlMHRMUzJ2cnE0OWZQaG9mejgyTlRVMU1USHU5L2tvaWdxSGU5cHRwdDF1TFMrdFdDem1XQ3crTjcvUWFEU05SaE5OMDVJazFlcjFYRDVYYjlSdEZyUDhMWi9tVVFaa21mb1BmUTEvUGc1V3dEQU1DNEt3dmIyN3RMUlNybFFNQnIzTDVjUXhvbFF1Nyt6c0ZRcDVrOG1JWVZpN3pXaTEybUF3YURhYjZ2WDY0dUxpek14TUpwTTFtMDBuVDU0OE1UMDFORHpvOVhwSlVnTUNjcWZUcnRXYTFXcTFYS25VNncyR1lRUkJBQUFRd3pBY3g5U29mUXg3ZWdDc2p2b2dBRXF5cExyZ3NpeExraVJKb2lDSVBDOElQQzhyTWdoQ09JNFo5SHFUeVdnMEduUTZIVVZSS0laQ0VDendmTEZZakc3dnpNN09QMzc4ZUdkbmw2S280ZUdoRTlNblBGNlBLRXFwVkNxVHlWQVVLVWxTcTlXV0ZTWFNHL0Y0bkFBQUZBdkZRckVFSTNCZnBHZHFja0tqMGFqci9tTTREeHdqQVh5K2tpRlVMbGMrL08xSExNdUdnb0hlM2g0SWdtaU5Ca0hRWEs1dzY5YXQrL2Z2QzRJd01ERGdkRG9waXFyVnFwdWJXK3ZyRzRMQTkvVkZybHk1ZlBIQ2VZL0hoYUtvS0lxQ0lMYmFyVUtobUV5a3M3bDh1OTFHVWNSb05GcXRGcVBSUUpFVUNBSWN6N0ZzaDJVN25VNUhqVnA3RnFJakl3aENFQ1JGa1FSQjBCU0JFd1FFd1Z5SGF6UWFwVks1V0NxekxJTWlxTlZxOGZxOEhyZExwOWVpQ0F3Q0lJS2dBQVJXeXRXVmxkV1BQN2t4TS9Pa1hxODduYzdSMFZHUHg0TWdTS2xVaWthamxVcWx0N2YzUnovNjBkRFFJQVFCN1hhTFpWaUc2VHgrUE1NTC9LbFRKOGRHaDlRYk9ZYmgweSt6QUE0Nk1SNUVnNmsvUVZHVVpkbWQzZjBIRHg3NmZkNU9wM1A3OXQxS3RhcWFUazlQVDdGWXVuSGp4dWJtSmtWUmJyY2J4L0Y4UGgrUHgzVTYzU3V2WEh6MTBpdVJTQTlCRUJpR0tySlNxOWUzb3RIdDZFNmxVaU1wTWhnTWVEMGVtcWJaRGxzc0ZqT1piRDVYcU5acUhNZktzb0lnS0lxaUVBVEJFSVNnS0FSQmFxaXpvc2l5SkV1eXJDZ3lqTUFVUlp1TVJxZlQ0WERZOVhxOUpNbjVmRDZSU0paS0paSWdRK0ZnWDZUWDZYVEFNS1RHdWttU1ZDeVZIeng0ZE9QR3piVzFkWVBCRUF3R1NaTE01L09aVE1iaGNGeThlUEgwcVZPRlltRmhZWEZqWTBPV3BiTm56em9jam5hYmtTVGg3YmZlME90MHdnc0NPQTd4RVMvL0d1QVBpYnpQS3VvREFBQkJNSTVqV3EydTFXWVhGeGMvK00ySFdxMFdocEdkN1oxME9tMjMyOXZ0dGxxZ3ltZzBKcFBKWnJNWkNvV3VYN3M2ZldMSzUzVlRKQW1BWUxGWTJ0N2UyZG5kWTlxTXlXUUtoY002blpibitVUXlXY2dYS3RXcUlBZ1FCQkk0NGZmNWFBMU4weVJKa2dST0lDaUN3QWlNd0NBSVNxSWtTYUlrU1FJdmRIaU9aZGxXcTkxb3RGcXQ5dnJHNXRaV2xDSkprOWxrdFZuNyt5T1NGQzRVU3Nsa0twbE1PWjJPd2NGK3A4T080N2drU1U2bjQ4cVZWKzEyKzZlZmZuYi8vb1BkM1YyejJTeEpVcmxjMXVsMGxVcGxhV2xwYjMrL1ZxdW0wNm4xOVkxbW8zbjk5ZXMybTAwVVlSUkZRUWhVbjlPTFQrL2wxc0RMS1lBWFU3cEFFSVJBRUhoMkNDQkpFdGZoYTlWYXZsQllXbHF1VnFzdWwydHNkRVNqMGN6Tkw2VFRtZDNkdlhhN1RWRlVxVlNTSkdsZ29QL3ExZGZPbnp0anNWb0FBR2cwbXBsc2JtOC9sc3ZsRlZsMnU5MVdtd1ZGMFdxbG1zbG1pOFVpeTNaUUZMVllMRmFyeFdhMW1pMW12VTVIa2dTS29RZ01ReENrWHM0emsxTmtXWllsV1JSRmp1ZGJyWGFsVWkyV1NzVkNzVnl1TkZ2TlJyTlpyZFljRHJ2VllyRmFMUmlLbGtybFZDckRNRXd3R1BCNjNRYTlIb0lnbTgxeSt2UUpvMEdQWTlqOHdtS3RWa05SVkpibGZENC9QeitmeStWc051dncwQkRIY1FzTGk3dDdlNHNMaTMzOWZTNlhzOVBoU0pKRUVFaVdBUkQ4NHFmM1EzK2szeGN2cHdDZVF3MTNVNytHSUtqVmF1ZHkrVmdzbnMzbE1wbE1wOU1KQkFKalkyT1hMMThHQUdWcGVlWHg0NWxNSmszVE5BUkJ6V2J6NU1rVFAvclJHMmRPbjRJZ1VPRDVWcXVkU0NUbkZ4WWJqYWJMNlJ3YUd0Qm90Ykg5Mk16TWJES1ZJbkFpNFBkTlRrNEVBMzZUMlVRUUJBUkJpdnpzbUV1V242VzJQTjhMREFSQkNJWm9pdFJxYUtmTEFRQ2dKSXJOVmpPYnpVZWoyMXRiMGQzZFBacW1CZ1lHQmdmNlE2RmdQSkhZMk5qTTVRcWxVbWhrZU1ob05FcVNpQ0x3eU1pUXhXTFI2blIzN3R3dGw4c29pbWF6Mld3Mk96dzhmTzNxYTRPREF4aUdMUzB0d3pDY3krZHhnaUFJY250N054d09HZ3g2TlVKT0RWczZQQnU4eEcyOVgvSmdPRFYxSFVFUWp1T2J6UmJEc0xJc0x5NHVQM2t5VjZ2WCsvb2lIbzhiUlZHU0pDOWZ2anc1T1ZHdVZENysrSk9GaGZsbXN3bkRzTUZndUg3OTJrOS84dDdvNkFnTVFUQU01M0w1bVpuWjJibDVvOUZ3N3R5WlVDaVFTQ1IrKzd1UGw1WlhDQnc3ZmVya2xTdVhKcWNtL1Q2dlJrTkRFQ1JKc2lTS2FramM0VFRMNTY3endPZVdGVVY2dWgwa0FZQ01vWmpSWkF3RUFvT0QvVDZmVjViazlmV05wYVdsUnJNUkRvWEd4a2NsVWR6YWl1N3M3bW0xV29OQmo2S0lJQWhhclRZVURHcTBtbmc4a1Vna2lzVml0VnFWSlBua3FaTWpJNk1ZVGxTcVZhTkJmL0xrOU9qb0NBekRLNnVyTE1PU0pJa2dhTDNlQkFCQVRiZC9VYVUvOU9mNTNmTXl6d0JxbHk1WlZwTEo5SDRzbnNsazYvVWF5N0lNdzdxY3pyUFRwNncyS3dqQW9WQjRlWG14VWluUHpEeloyZG5kM2QwVkJFR1NaWmZMOWZaYmI3N3g1dXZCWUlDaVNKYnRiSzVGbDVaVzJFNW5iR3pVNS9Ya0M0WDc5eDVtY3ptRFhqOHlNaGdLQnAxT2gxYXJRUkJFT1ZTcDRVdXU3V3ZkREVWUkFBZ0NJQWdtU1lRa01LMUdZN1BaZ3NIQTlzNU9KcFA1L1VjZjkvZjFCVU5CczhXOHM3Tjc3OTZEWXJFd05EeG9zWmdsVWJKWXpSY3Zua2RSVkpMRWVyM09NQXpMTWc4ZlB0Um9OSUlvR2cyRzE2KzkxaHZwMFdwMWpVWnpkVlVUalVaWFZ0Zk1KaE5OMDBhVEtSRHdoWUlCdFFUZHl4MHkvUkxPQUFlclh0WDNLSlVyYy9PTDhYZ3lsOHVsVXVsY0xzOXhYSDkvMytVcmwvVjZyVTVuMUdob3B0MjZjZU5tT3AwUkJJRWtLYTFXZzZMWTJOaklYL3pGVHdjSGgwaVNxTmRxdTN2Nzh3dExnaWdHQTM2ZjE1UE9aQllXbHZMNWdzdmxQSDM2NU9Ua2hNL25KUWhTbGlYMTJPdkFiWGpPc3RVZ1BCaUdZUVNCWVJpQjRVTWxmVjVjZ3dMcUFZR2lLQ2lHR1EwR2w4dHB0bGdBRUN3VlM1bHNUbEVVczlsa3NWZ2F6VWFoVUdKWlZrUFRPSTdERUtqVGFpMFdjeTVYS0JTTEpxUHA1TWtUUnFNcG1VeEdvMUdDd0gveWszZDl2cEJHbzlWcTlTaUtMQzB0UmFQYmtpZzFtMDIydy9HOElDdXl5V1JVeFh6NDRuL29qL2M3NW1VVHdPR0dqUmlLTmhyTjlmWE5sZFYxRUFScG1xWnBxcTh2b2lnQVJkR0JnRjhTQlZtV2E3WDZ4c2JHSjUvY3dBbml4SW5wQ3hmT204MFdzOWtVNmUwZEdob3lHWFVDTDBTanUwK2V6UE84TUQwOTZYSTUxOWJXUC9ua0ZnU0I1OCtmdVg3OW1zL3ZReEJZRUhnMW1oODh4TUdGUGYzK2FVNFdJTXVLSk1taUtBbWlKTXV5QWlqUFh2NkgzM3Y2MWJPY0hWbVNCRUVBQU1Wb01vV0NBYS9YVTZsVUZ4ZVhDb1dDMysvdjc0dlVhclZZTE41dU1SYUxCY2R4QUFBRVFhelZHeWlLall3TXYvYmFhOFBEUTN0NysrdnI2eGlHalkrUGFXaENFa1cyMDhubE1wbDB4bVEyRFE4UHRkb3RuVTR2Q0h3cWxmYjV2VFJGSHl5TFh4VHpTOEJMSllERFk1V2lLQmlPWjdLNWhjVmxETU5nR0JaRjBhQTN2UGJhNVZxdHRyMjlXeXdXUlVFc0ZvcTM3OXo1elllL0pVbmliLy8ycjhmR1JsT3BsRmFybVpnWTYrM3RnU0JZcDlNdUxpMHZMaTRST0g3MTZoV1daVy9ldkRVM3R6ZzFOWEg5K3RYaDRVRU1SU1JKVkk5Um54YlBPdVRQSEZ3U2lxSUlpZ0lBd0xDZGZLNFFpOFdqMnp0Ylc5dmIyOXZKWktwUmIwSVFSRkUwaG1IcWNnQ0dFUWdDbiszZkFvY1ZKWWtTQUFBNnJiYTN0MGR2MENVU3ljY3pNeHFOWm14MFZLZlRybTlzVkNwVms5R28wMm1iemFZQ0FDUERReGF6cFZncVJTSTlmWDE5TE1zK2ZQaVE3WEN5ckxTWmRqUzY5ZGxuZDJpTjl2U3BrMTZ2WjM1K3dXNjNVeFNWeVdUc2RydlJxTWN4N0NDbjU3bTdld2w0ZWRZQUwzclZDZ0NCSUFKQkVBQklPSTQzR28xU3NjaXlaMDZmUG1Vd0dQYjI5bWFlekNvS3NMVzExV3cyWDc5K3JhY25YSy9YNC9IRTZkTW5lbnZDRkVYVkc4MmxwZFhOcmFqSlpCNGRIY2xtc3c4ZVBHdzBHNjljUEQ4MVBlMXdXQkVFRmtYcHl4YUxpcUpBRUl5aWlLSUF0Vm90bmtodWIrL3M3dTRsRTRsY1BsK3ZOemlPazJVWlFSQ1R5UlFNQmtaR2hzZEdSME9oZ0VaRHQxcHRCRUV3SEVOUjZNQ2hPcmc1OWE5b3RacUo4WEdLb3A4OG1Ydnc0QkhMc0lPRC9XZk9uSjZkblp1Ylh4Q2xFWmZUZ2NBSXBkRWtFc2xNTnJ1K3ZqazFOWG5tek9uVjFiWHQ3VzBJQXExV3F5eExIbzluYW1wS282SG41K2RydGZwQmVnQ0dJZ2dNQTRlV0tJZXpLWDdvRC95NzRTVVJ3SE1tQ0VFUWpDQUFBQ0FJakdIWTFsWlVwOU9YU3NYTnpVMkN3Qzljdk9EemVYRU1iYlhib2lqVkc0MTJteGtmSDRNZ0tCNVBWcXRWdlU2ck54Z2xTYXBXcXh1Ym0zcUR2cmNuekhIY3Zmc1AydTMyK05qb3BVc1hkVHE5SkVrOEwzeUZZNkNHL1pSSzVmMVliSGxwWlhGcGVXc3Jta3dtUzZWU3M5azhTSGdIQUFCRlVhUFIrT1RKay9HeDhhbXBTYS9Yazhsa1VSUUpoOE1EZy8wa2dRTUFjSGhkQVFDQUxNdXl6R3UxbXJHeFVaMU8rN3ZmZmJTeXVpb3I4dlQwWkU5UE9KbE1yYTZ1YVRTMDBXakFjRXFqb1FrQzM5N2VIUmdZOFB0OUl5UER0VnJOWnJPNzNTNFFCR3cybXl6TGQrL2UrK2lqajJWWlRpVGlLSXB4SEllZ0NBVEJhaFNUL0h4MWlaZEVBeStEQUo3ZnBnQUJCVkM0VHFkY0toY0xoVTZIVFNRU0JvTkJGSVZHby9HclgzK1FMeFJlZWVYQ3dNQ0F4V0pHVUpTbWFhN0RHWXpHVm91cFZDcUtJb01nS010aUlwbWNuWjJISUhoa2VFZ1ErSTkrLzNHcFhMNzYydVV6WjA0UkJNSHpIQUFBMEZjYWdTQ0lxWFQ2eVpQWkd6ZHVQWGp3TUpsTWRqcWRMM21sVUNnVUNvWEMwdEx5N1R0My9INS9PcDBHUWZEczJiTS8vZW1QdlI2WHlXUWtTUktDL2xEelVMVS9qdXNnQ05MVEUvclp6Mzc2aTEvOGFuWjJYaExGVnk2OUlrbFNJcEZjV0ZnNk1UMWx4akFJQkdBWTZuUTZyVmJMYkRLcVRmak9uVHNYQ1BpTHhWd3FsZm5zczgvdTNMbVhUS2JVaVU0VUpiUFpXQ2lVS0pMUzYzVTBUYXQxVVo5NzdDK0JCbzY4QUo3eit4RUVVUlNnVXFuTVBKbmIzZDFydGRvWWhwNDZlVUtyMDZBb2VtSjZzbHl1MWh2TisvY2Z6Yzh2T1owT3Q5dVZ6V1lGZ1FjQWhlTjRobWwzT3B5c0FPbDBabU45czlsc1hyOSt0Vkl1UDNqd3NGUXF2ZnZlTzBPREF4aUdxWVdydnVLU1lCam1CWEZsWmUzblAvKzNHemR1eHVOeGhtRU9JdSsvWW1PUlpkbnQ3ZTFZTEthdXA0dkY0dWJtaHR2dHZuNzkyc1dMRjkwdWx5UUpraVFlR0o5NjFBREtzc051ZS9mZHR6Nzk5UGFqeDA5SWtod2FIaUpKY25scHhXZzBFZ1F0U2tDejJSSUVvZDFtTkJvTkRFT2xVbmxsWldWemMyTnpjNnZaYXNtU05EazVjZTNhRmIzZW9DZ3l3N0FzeXo1OCtPamh3OGNlajJ0aWZLeTNONHdnaVBUNTVzUXZnUWFPdGdDZU8xcENVVlFVcGEzbzlxTkhqK3YxcHRQcG1KZ1lOeG9OSkVFOGpjaUhJQkFDT1k1dk5WdTFXcTFZS205c2JHNXRSVnV0VmlGZkJDR0k1NFZPcDdPN3U2L2E2K2pJTU05eGp4N05WQ3ExeTVkZkhSb2NvR25xc091aUFoN2F2NVJsR2NleFZvdFpXRmo2Yi8vOUgrL2N1WnRPcDlUVDMrZXUrY3Z1U00wTVZyL041L1AxZXAyaTFxclZXamFibjVxYUNQaDlkcnNOeDFIVit3S2VWYmxTRk5uamRwNDllMW9VeGNjenN6Uk4rL3krWUNpd3RyYWgxeHRFVVN5WEs1ME8xMmcwWUJqS1pESUxDd3ZOWnJPL3Y2Ky9QMkkybTNWYUxVRVNNQXhKb2dpQ0lJS2dDZ0RVNi9Wc05wZE1wajc4N2UvSHhrYW5KaWRzVmpQSGM0ZVRKNCs2Qm83d0x0QnorOU5xSVpPVjFZMlp4N1BGWXJHL0x6TFFIN0ZhTElvQ2REcGNzOWxxdGxvZGpvTWdtQ0pKZzBGdnNaaE5aaE1NdzgxbXM5Rm9xaUVTdFZxdFZxdVZ5eFZKRWtQQm9OL3Z2Zi9nVVRxVDdlL3Z1M0xsRWsxVEI1VUdELzd5Y3hjRXc3QWtLYXVyYS8vMEwrLy82dGUvem1UU1g5dk41YXZ2VVJBRWhtSFU5SzVFSWxHck40d0dnOGxrZk82a1ZzM2lOK2oxZXIxaGUzdW5YSzdvZE5wd1R5Z1dTM1E2blZ3dXU3T3oyK2x3TUF3WEM0VjRQSUZoK09EZ3dNakljQ2dZTUJtTk9JNUxzdHh1TTgxbWkrdndraXpETUt6VjBGYUxCY2V3YXJVV2l5VUFBTkRwZEJxTjVxQTN4K0huLzBPYnc1L0kwUWlIL3RwUkU0WmhXWlpqOGNSdlB2aGR0Vlk3ZS9iVTJPaG91VnplM3RuTjV3dHE5cU42NHFTZU90RVU1WERZUStHUVZxdUp4ZUtmZlhabmRYVmRra1FJQXR2dGRyM2VlTys5ZDg2Y09WTW9GSDd4aTE5T1RVMWV1ZktxMDJubk9RNDQ5R0VmM2hnNStBSkJrTjI5L1gvNWwvZi95Ly9uLzF2STV5VkordHE2bk44RTlVMHdEQXNFQW4vOTEzLzE5dHMvQ2dZQ09JRWR0anRabGxFVUV5VnBhV25sd3c5L3E5TnAzM25uclZLcHNyNitzYjI5bzFaWlZOVm90VnBlZSszeXlNZ29obUhwZEdwL1AxYXYxMlZaZ1NCSUVBU2VFM2lCQndDQXBxbFFLT2oxdWp0czU3ZS8vWWhobU1uSmlVdVhMbUFZOGsxdTZFaW80a2pPQUdxRXorR1lkUWlDU3FYU0wzN3hLMUVTSnliR1BSN1A3Yy91enM3TnQxcHRsOHMxTU5BM05qb3lOall5T0RnUURvY2RUZ2VPNGZWR0k1M09pS0xnZERwN2VucHF0ZXJ5OHZMK2ZnekhDYXZWZXZIQ2VVRVFidDY4NVhLNUxsdzRGd2o0QlA1cHdjTXZ6QnBSRDU1QkVLelhtei8vK1M5Ky92TmY3Ty90dlRoU2ZrdGtXVzQwR3RGb3RGQW9tTTBXbDl1Sm9lamhUQzVaa2RSZG5YYWJTU1NTeFdMcHpKbFRsVXAxZlgwemw4dXBGWWQ4UHQ5Zi91VlB4OFpHcXBYcTVzWldzVkEwR0F6aGNIaHdjR0Jnb0wrL0x4SU0rdTAyRzRaaDVYSjVkWFY5YjNjZlJaSHg4YkY4UHIrM3Y0OGdpTXZ0UmhGVWtzVG5qanRlUFBQK29TM2w2emxpQWxCdEhZS2Vsa3BXclora3FFd205OW50dTZsVXVxK3ZqeVRJbVpuWmZLSGdjcm5HeGtaSFJnWjhQaCtDSXNWQ2NYTnphM2xsSlI2TE41b05GRVhWWEJORlVReDZuY1BwS0pYS2UzdjcxV3JWNlhUU05KMU9aMHFsOHJWclYzckNZUlNCRDQ2NmdFTm5vb2VIZGdSQldMWno4OVpuNzcvLzg3bTV1Y04rLzNlSXFnR0dZV2tOUFRJeXJLSHB6N21DQUFBQUlJYWhXcTIyWG10c2JtNnB2U1hyOWZyYTJucWhVQmdhSFBqUmo5NlluSnFzMStxMVdrT1dGUkFFSzVWS01wSGMyOXRYUndTOVhtZTMyMjAycTA2bkEwR3dVQ3p1Nys4ak1HcXhXSGlPMjl6WXREdnNCcU1SdzdDRGUxUXpQRi84c0g1b2UvbDZqdElpV00xYlBVaW9oUkVFQkFBSWdvckYwdHpjL01yS1dtOXZEd2lBYStzYmUzdDdreE1UMHllbVFxRUFna0E3Ty91elQrYVdsNWN6bWF3b1NYcTkzbTYzMld4V285RmtNcGtWV2NaeFBPRDN2WHJwWWlxWit2U3p6K0x4T01keGRydDllSGd3RXVrbEtVTDQvTGJQaTJlOWFzQnBkSHZubDcvODFkTFMwdUg2dU44dDZsS25VcW5zN2UweERLTStsdWNrSUFpQ3grMGNIaGxNcGxLenMvT0Rnd01rU1ZhclZaSWt6NTAvZS9Ma0NVVldLcFZhb1Znc2x5dVZjcWxjTGhlTHBYS2x3bkdjWHEvckgraWZucG9hR1JucTYrczFtWXdrUWN6T3pUOTYvSGhxYXRKbXN4ZExwYnQzNzRFZzFOY1h3WEFDVUdTMXdCN0g4ZXJZOUVPYnlSL0hrWmtCVkQ5ZUVJUnl1WkxMRnlBWXdYRmNGTVJtcTMzLzNvUEZ4U1dTSUVaR1IyWm5aN2Uyb2tORFF4Zk9ud3NFZmJJc3I2MXQvT00vL3AvLzlFLy9QUFBrQ1Mvd05wdlZhcldCRUpTSUorN2Zmd2dDaXMxdTAycTFCSUZiclJhR1llYm5GNUxKSk1Pd1EwTkRiNy85cHNsb2ZMSGQwSXRqbTFxVi83ZS8vZWo5OS84MWw4dDlyNDhDQkVHYnpUWTJObmJ1M0JtOVR2ZmlBa005WFNZSUFnTEIrWVZGaG1IMzl2WldWMWZQbkRuejdydHYrL3plUXI3WVpwakZ4Y1ZQUC8xMGRYVk5vOVdTRkNtS1lqNmZtNXVkZi9Sb0pwNklZeWpxZHJtTUJxUEJhTUJ4ZkhWMXRWQW9tTTJtbnQ3ZXVkbDVudU8xV2kxTmF5QVk2blM0UXI2WXorZHBta1pSNVBCMS90Qlc4L1VjbVJsQVVSUVlSa1NSMmR2Yi8vaVRtMzE5a2I2K3ZsYXJ0YnE2bGtxbGUzdDdUcDA4OGZEUjQyaDAyMkczbnp4eEFnUWhwczF1UmFQLytJLy92NDgvL29Ra3lmZmVlL2ZkZDk4T2gwSkdrN2xhcmQrOWUrZC8vOS8veS8zN0R6UWFqZGZqQmtIQWFEUkUraUlEQXdPZmZQS0p4KzArTVQzbDlYaGtXVHBVdytjTFVPV2c5am05ZmZ0MnJWWUR2bTZ6LzF2aWNEZ3VYcmp3enR0dm1VMG10ZEQ1aTg0M3ovTmFEVDA0MkwreXNyYTJ0cmF4c2FIUmFNNmNPZVYwMmhFWVJqRjBiMi92MGFOSDI5czdnNE9EZi8vM2YrdjF1anNzbTA1bjd0MTc4SzgvLzdlN2QrN21zbGtRQUUrZFBrVVFsTkZvbXBpWXVISGpCZ1NCZi8zWGYzWDU4cVdGK2NWLy91ZC9HUjBkRFFRQzZWUnFLN3FGd01oZi9kVi8wR2pvbzFWczlNZ0lBQVFCU1JKeEhMTll6QnpIZi9UUkovTnppejYvRDhQUTAyZE9lZHp1Y3JuODJXZTNaVmwydWQwb2ltbzBkTGxTZWZEZ3dZMGJOM21lZi9mZGQvN3FyLzdqNk9nd2ptTUVvUzJWS3RsTU5oS0o2UFY2RUFLajBhalg2NElSd21xeDlQU0VaMmRuQjRjR0J2b2pLQXB6M05NeTVjOHU0M09lejdNYW8waTFXdC9hMmw1YlcxZlBlcjhQNjBkUjlHRGdQM2Yyek5EUUlJNWpoOWZaQjZvN0NGa3ptWXhUVXhOejgzUEpaRExnOTRlQ1FiMU9MMGxTcTlYYTN0NE85L1RvZFBwcXRkcHFOVW1LdGxnc0pwUEo0WEFDSVBoUC8vVFAwZWoycnovNGpkMXVIeG9lUmhIRTdYSlJGQldOYnQrN2QvL2l4Zk1VU1NhU3FYUTZzN2EydnJHK1FaRDR0YXRYU1pJNGN0RnkwTGQvaXo4UHFxT0pJSWpiN1Q1Ly9xelZhcWxVSytWeUdTY0lyVVpUTHBmdjNYdXd1cm9xeXpKRjA2SWs2ZzM2Y3JteXNiRlpMQmI5ZnYrcnIxNmFucDZrYVFvQ1FZRnZ4L1ozTjdZMng4ZkhYcjEwMFdJMngrSnhYaEFBQUtRb3l1VjBPcDBPbjg5cnNwaGtXVDQ0NC9xS21COElnbks1L003T2JqNmYvLzdHUDRxaUJnY0gvKzV2Lytadi91by9uanAxVXEvWGZWRVpuejk4TGNzeURDT0RRd05lcjBlcjFScU1SclBaUkJCRWgrTktwVkt0Vmo4eFBmWEtLeGRrV1Y1Y1hDcms4eUNnd0FqczgvdGZ1M0xsOU9sVGtpVE56YzJuVWlrVWhyUmFHa0VSbXFiTDVmTE5tN2QydG5jZ0NOWm9OSjFPSjUxT3d3ZzhORFI0NHNRVVFSRGYrY2JYOTgyUm1RRlVaRm5XYU9qcjExN3planpyNnh2bGNrVVV4T2hXdE5WcTVmSTVTWklhaldhNzFhSklncWExZ2lDMDIyMjFOTG5GYk1GUXROTmhZUml1VnV1eGVLTFJhRVFpdlFHL2IyTnpxMUFvOHJ3QUFCS0NJanE5em01MzZQVjZOWlR0WUNqL2lvRk43UVlaanllK0xOVG5XM0p3Q09Cd09FNmNtUFI0M2FJbzhqei9oODdZZjNqbFFSTWtVSlpsRUlJc1p2UEUrSGd5bWNJeG5DUkpDSVk3SGE1ZWI2QW82bkk1UVFDdzIyM1I2SFl1bC9ONjNRSXZ3QkJzc1ppY0RnZUtvaHpITVV3YnhSQ3IxYnkrc2RucGNLSW9OcHZOamMwdGd5RVBBQ0JGa2NQRFE3Mjl2Y1BEQXk2blF6MXVQMExEUDNEa0JLRFc5a0VRZUdob3dPdDFGNHVsWnF1Rm9TaE4wMm9ObkhRNlc2bVV6V1lqZ2dCT3A5M2o4U2dLa0U2bmM3bGNwOFBKc3BMSlpIWjI5eEtKcEliV2hNTWhraVJrV1VaUTVHRHNSQkhVYXJNYVRVWU13dzY3MTEvK3VZS2lLS1hUbVd3dUMzdy8zci82aHZWNmZYTnpJeHJkc1pqTkZFMTlJMmREVVVBSTdPa0pqNDZNbE1vVitGblZhelVyRFFKQm04M2ExOWQzNzk3OXJhMXRtOVdHWXFqRDRTb1VTcWxVU2hSRnY5L3ZkTG8wR2kwdkNLSW9wbElwQkVIZWZ1dEhQL3JSRzZJazFXdDFITWNzRm92SlpDUUkvSENOMFNQRUVST0FpaHIwWmpJWnRWb05Md2d3QkJFRVliV2FyMTE5N2VmLzlqOUxwWklnaUFBQWVEMmVWeSs5a2t5bWxwZVhiOTM2bE9NNWdpQkVVY3JsOHMxbTArbHdtRXptWnJNcENBSkZraWdDQXdBb1NaS3N5RmFMeFdRMFlpaktjZXFJL3FYT2orb1dDWUpZcmxUVTVlLzNCOC96NlhSbVpYVnRZS0JmcDljZFBtZDRMdlVNT0h3K0xjczJ1ODNsY2pXYUxaNFhKRkhDY1V5bjAySVl5dk84UmtQM2hFTTNiOTVLSmxOejh3djFldDNsZEQyWm5WMWIzd2lIUXovKzhYdkR3NE00UWJBZE1aOHZLSW84T0RqdzJtdVhnMEcvTE1zY3g4TXdoR0U0REVNSFp6SS9wRm44U1J3TkFieDQ2cVFlUStJNFRwS2tMTXNnQkdxMG1pdFhYczNsOHJWNll5dTZZN1ZhRFViRHVmUG5VQXkvY2VOR3E5VzZmZnN1anVOVFU1T1ZTbGtRaEw1SWhDQ29kQ290Q3FMTlpsTVR3QVZlNERqT1lqWnJ0Um9JZ3I1aFQwVkprbGlXN1hTK3I3My9BNXJONXRMUzB2bnpaNzFlaityL2YrSExQaDhqSkdtMUdvTlJEMEVnd3pBOHp4TTRZVGFaQ0lKb3RWb0FBUHI4WHBJaVc2MVdzVmpLNVhKTFM4dnRkbXQ0ZUNnU2lienh4aHVoa0U4U3hYd3VtOHZsaG9ZR3o1MDcwOXNiaG1FSVFSQ0N3QlVGa0NSSkZDVUFVRjRVNFpIZ3lDeUNnUzhhNXdSQlVIdlI4UndQS0VBazB2dVRuN3czUERTNHRyYTJ0N2RYS3BVMEdzMzU4K2YvODMvK3YweFBUNnUxYVNPUlhnQUFBRURwNlFuRE1GUXFseFZGQ1FUOEdJWURnTUt5TE5ObXpHWXpSVkVLOE1kNk10OTc5UVNPNDFaV1Z2ZDI5OXJ0TnZ3c1Z3dDRZZFBwY1A2a0xDc2tRV2kxV2dSRm04MVdwOVBCY2RSa01oZ01obHE5MFdpMnJGYWJ6V29UUlpHaXlQNit2bHF0N3ZQNS92Sm5QL3Zydi80cmw4dkY4K0orTExhOHZBeUN3T3ZYcjEyN2VnWEhNVkdVZUo3bk9KN25lYlVIMmRFdEtubzBab0N2NXVDaGk2TFkzOStISU9pangwOXUzUHpVYURRYVRVWVFBT3IxUnF2Vk9uM3ExTmo0S0lvaXpXWUx4ekNmejkxczFQTDVQQVJCWHE4YmhpRlI0SnJOVnB0aGVpTVJqWVpXdnZHR0JnaUNDSUtvT1dqZks0SWd4R0t4emMydDA2ZFBCb01CVWZ6YU9VZVJaUW5EY0lQZVFGTjBxVlJ1dHhtanlhVFZhb0pCZnlLUlNpUlNnNE5EYnJjckd0MFdSZkdOMTYvakJCNlBKMVpXVnd2RkFvNWpETU1XQ3NWT2h6dDc5dXpFK0loR294RUU0U0E1K0tzL2ppUEJVUkxBYzE3bWkwNm5MTXNvaWdSREFacldwRktwY3FYQ3ROdUNJUEM4U0pLVVArRHI3UWt0TDY5ME9oMkgzVzQwbWphM3RqcWRqdGZyTVptTWFoT3VlcjB1U2JMZFppVUo0by9ZMEFRUC92TzlQNEZXcTVYUEY2cTFlZ2lFQVFCVTg5ZSsvUFdnMm9ERFlORGJySlo4b2RCc05RRUFnR0VrSEFyRjQ4bFVLaDBJK1AxKzMvcjZScVZjMW1ycC92NEl5M1lxbFVxNzNXYmFiWklrSTVHSXpXWU4rUDBhTGZYY3NjTnpYeHhGanBJQVhoeDFEbGZ3VStkOGRSdU9waW1kVG9kaEtBUkRQQzlFbzl1bFVpbVZTaHVOK25nOGdjQ3d3V2pnZVdGN2U4ZGdNSVJEUVFSQlFSQXNGSXFWU2tXbjAxcXNaalczNWh0L3RPQlhuQko4dHhBRVFkTVVqbUdLb256Rk11QXdzaXpyOUZxdjEvTmtkcTVjcm5SWUJvSWd1OE5tczFvTHhlTDI5cmJOWmlOSnNsUXV4V0x4ZUR4UktCUkFFTFJhYldheldhM2VydGZyVUJRQlpFVUdsZWMraFJlLy9UTThoTytRb3lTQUw2b29DQnkyQUJBRVJWR0t4NU5MUzh1MVd0M3RkZzBPRGhJRXViQ3dtTS9uYTdWcUxwZGpHQWJETVFpQzltT3hkcHNaSFJueCtUeVNKRUlRbEVpbTY0MW1JT0RUNjNVUURCMXNhWC90aHdwREVFMVRhcWZIN3hVRVFad09SMitrMStHd3k3TDR0YTlYTDE4VVJacWlmSDdmd3VKU1BsOG9Ga3NPcDUxQThONUlUNnZkWGxsWkd4d2NvQ2lxV3EwL2VQZzRIbytYU2lXWHkwV1NWQ0FRak1YMlYxZlhCSjRmR09qdjcrOHptUXlIMndoODRXZDB0RFJ3WkFUd2hiVUUxU1NYZzlyL0lBQlVxL1g1aGNWUFBya1o4UHVpMGUzNStZVmdNSmpOWnNmSFIyRVlucHRiS0JTTE5FVm1zMWxKa3Z6K2dGcituK2Y1V3EyZVRtVWdDT3J2NjBNUlJKYStVUnFYZWxVNGpubzhicWZUc2JLeThqMkZBS24zaUNDSXgrc05CZ0lHZytIRnpNd3ZRNUlrRkVXdEZyUGY3eStWS3Z2N2NhZlRJWW1TMisycVZLckpWSHA1WmFYWmJKWktwU2RQWmtkR2hqMGVkN3ZOUEg0OHM3aTQyR3cybTgybUxNdnhSSktpU0t2VnJIeSswYnlhdS95OWYvemZHMGRHQU05TnRXckp2bmFicVZTcUxNc2lDS3pYNjYwV2kwNm4wMUFVRElFT2g3MjNweWVaVEgzeXlRMmU1MFBCSUk0VExNc1dDNFUwejNNYzUvZjdBd0VmcmFFQUFKUmxZSGxsTlp2TCtid2VwOE1PQU1BZmRhUVB3YkRaYkRHWlROL2Y3YXYzTHN0eXRWcXQxZW84ejZNb0lzdGZOVWNkZm1LS291QTRIZ29GdHJlM2wxZjR2cjVlZzBHUFlhamRiZzhHZzRzTEMvRjR2RnF0cWgyOFVSUXJGdVByNnhzK24rZmMyYk9DS003T3p0TTBSV20wTUl3MUdvMXlwZHJwZEJBWTBlbDBScU1CaGhHMUZPcWZ3dzYrYTQ2TUFBNmhRQkRNc3Axc0xyKy9GNnRXYXp6UHd6QkUwWlRGYkE0Ry9jR2dmM3Bxc3NOMmhvZUdTSXA4UERPVHlXU2kwVzJuMHdrODg5YTFXcDNiN2RGcXRSaUt5ckpVS0JSdjN2eTAwK0VHQi9zSml1UTU3bytheWtFQU1CbU5ack1GUmRIdktROUdSVDJPWFY1WkdaOFk3WXYwOEx4ODBQd0crRXBYVFYwcjIyeldWcXU1dTdzYkNnVXVYcnlBSUFoSmttNlhLeEdQb3lpS0lBaUtJcFZLdFZLcFJLUGJpVVRpL1BtekhxOG5uOHRydFpyVHAwOWlLTHEwdEp4SXh0dHRodXR3QUFocU5ScXZ6K1AzZVhRNjNaL1ZCTDQ3am93QURrZGZnaUFZanljZVBwcFpYOThnU1JMRE1BQUExRDNwaWZIUjBkR1JNMmRPLzdmLy9vODJ1ODFxdFlaRG9lWGw1Ym41aFVpa0RZS2d3K0V3R0F4OWZYMTZ2VjRVUkVWUjZ2WEcwdExTL1h2M3d6MDlGRVdCd05NcUM4QTM3aGdueTdMWmJQSjZQU2FUcVZnc2ZuOWpvVG9Eek13OEdSa1pDUVdEQjAvbWF5OVNmWGdFUVFBQXNMZTNmL3YyM2I1SXhPNndLN0lNUVZBd0dDeVZTdGxzbGlUSmJEWmJMQmFqMFNnTUk2T2o0NmxVWm10cnkrbHdSSHA3ZDNaMlo1NDhLWmVyR28wR0FFQ080d1JSMEsrdm56OTNabXhzUktQUnFQdG1SMnNaY0dRU1lsUlU2KzkwdUU4L3V6MC92d0JCa0U2blV4UUZKd2lYeTJVMm05Zlcxc3VWU2pnY1lobTJVcWxXcTdWT2gzdjgrSEc1WElZZzBHdzIrLzErajhlajErc2hDS0pwRGFBQUc1dGJuOXk0dFIrTCtmMytzZEZScjg5N3VQRE9Wd1JCQUllT3FBbUNhTlFiMGVoMlBwLy82bVhpdDZmZFpvd0d3OGpJc0ZhclViTkR2OWxpSFZRVVlIMWpNeDVQZERxY3JDaDZ2UUdDNFh5K3dIRWNpcUlhalFZRXdVUWlzYmEyVmlnVXJGYnJ4TVJFTkJyRk1PVEN4ZlByRzV1UFo1NUlrdHpmM3krS0lzOExLSW9nTUp4SUpFUkJNcHBNVHFmamNNbU1vNktCSXpNRC9BRkZVUlJGcjlNSEF3R2p5ZWh5T3RnT20waWtrb21Feit1eFdNenRkbnQrZnRGbXMxZWowWFE2MDJnMDFMTWJraVN0VnF2YWwwNDlTYTNWYXJ1N083dTdlL1Y2L2VtNXFRSUFBSHg0VWZjVjQ5bkI0bHNWUURnY09ubGllblYxdGRQcGZLL3J3bUt4c0xLNnNyUzBiTEZjd25IOGE3ZHJEK2N4QzRJZ1NiSWdDR3RyNndpQ2VqeHVuaGRxdFJyTHNoQUUwVFJ0dFZvQkFHZzJtN1ZhYlcxdHJkVnFlYjBlU1ZLV2wxZDBPaDFKRXJ1N3V5aUtCdnhlbTgzS0N3SkZrUmFyR1VQUkk3b1VQbUl6Z0FvSWdqaU9PWjJPY0U4d0VQQTc3QTRVdytyMWVxbGNWbyswa3NtVVZxdk5aREs3dTd1WlRLYlZhZ1VDZ1ZBb1JGR1VXcFFUUVJBY3gwVlJhRGFiSklGN1BHNE5yU0ZJd21ReWVqeHVCSUVPeDFwK0F3ZERRUkFZUVJGQmxCWVhsOHJsaXFKOFgxN1EwMHVDSUpQSk9Eb3lRdE8wMnZ6eWNEekNpNWVubG8ySnh4UHJtNXNFamsyTWp6dWNEbGxXT3AyT0pNdU5lcjFTcWFoTkFWRVVsU1NKNDdoT3A2UHVzR20xV2dnQ3M5bXN6V3FWWlNXZno0K05qWTJQallaQ0Fidk5hckZhZkY2UDFXYkJjZnk1eE5FZnlqeitLSTZNQUE0L1VBZ0NUU2FqMDJrM20wMDBUZWtOUm8vSGF6S1pIang0Q0VFSWh1R1ZTcVZhcmNaaXNWZ3NWaTZYclZacmIyOHZRUkNaVEtiWmJLcGJJaGlHQ1FMZjJ4TStjV0o2Y0dqUTUvTTJtMDJtM2RicnRDYVRBWUhoZzFqb3J4MWZRUkNVWlFYRGNaSWdNdGxzTnBOcE5CcmZrd1U4ZlZzRm9HbjY1S21USnBQcG1SZjAvSFVlRE1scUtZMUdzM1gvd1NOUkVDY25KaTVmdVR3K1BvcmplSzFXSzVWS0RNTVVpOFZzTmxzcWxVUlJOSmxNT0k1WHExV1daZFgzNFRqZWFEVFY2NDEydTlYYjIvdldXMi81ZkY2Q3hMUWFqY05oTjV0TkJJNGYvbk5IeGZxQkkrUUNQVGZESGxwb0tqTFBveGp1Y05qNysvdlQ2VXl6MldSWlptc3JFWThuMnUyMnVrcE9KQktDSUlpaWlLSW95M1lhalVZeW1aeWFtclJhTFhxOVZtMk01WGE1eStYS3htYlU3WFpxdGRybi92cFhmNmhxSHJyRFlmL3hlKyttVStsaXFmUTlKY2VvU0pMVVlUbEI0QlZGQmtFMXl2OExMdTlRWCtST09wMHBsY3MydTlWdXR6TnRScWZUZUQzdWZDNDNPenRYTGxlYXpXYXRWbTAwR2hBRXFTZDZScU94MVdxbFVpbVdaVm1XN2VucHFWYXJEb2Q5YW1xQ3dCR2U2NGlpOEdKR3pwSGp5QWpnT1E0SFFhZ3RnSEVjODNrOXlXUXFrVWhVS3VXdHphMXFyUWJEc0RyZU94d09tODFtTUJoTUpxTzZYOEV3VEt2Vit1eXpPMDZuMCsvM1lSakdzSjEwSnFOcmFscXR0dG9pOG5DczVSZHE0UEJldXlSSktJcE1UVTI4OWZhUEtwWEt2ZnYzdi9PN0JrR1FJQWl2MXpzeU1uemh3bm1yeGZxRlFXbUhCMk5abGlFSTVEZ3VsODFsMGhrWWhQeGVud0lvang4L3lXU3lsVXJGYXJFNEhBNGN4d1JCcU5WcTFXcXRWQ3JsODNtR1lkcnRkclZhclZhcnpXWVRnaUFNdy9WNm5kMXVBMEhnNEFqaXFEZVFQRElDT0pTTnJuNzdoekZQTFpRRmc0RFJhT3gwMkwyOXZYd3VsMHFuQVFDMDIrMCtueThVRGczMER3UUNBWXZGYkRJWlVSVGhPSzVTcVdhenVWZ3NuaThVQzRWQy8wQy9LSW9jeDdWQTRGbXR0VDlpWFhld1p0QWI5SzljdkpCTUpMZWkwWEs1L04xdWlVSVFaTEZZWHI5KzdmcjFhNzI5UFNhVFVUMGZlN0VxeE9jZEVraFJGSjduRzQyR0xNdnRkanVYejYydmI0aWlaTGZiKy92N3pXYWpUcWNEQWJEWmFwWExsVlFxdGIyOXM3VzFGWXZGMUFNeWhtRkFFQXlGd2dSQmtBUnhrSFVKSEdYVFZ6a3lBampnY05yckgwNDZBUUFBUVJURHF0WHEvdjUrclZaREVNUnV0MDlNVEZ5OGVIRjhmTXpqZG11MFdoUkZDUndEUVlEak9LUEJhRFFZU1pLYW01djc5TFBiNVVwWm85RWlDQ0xKTW9iaGFrdWx6LzlkOE9zdURBUUFRT0E1bjk5Nzh0U0pPM2Z2UFg3OCtMdDFoQkFFc2Rsc2x5NjljdTNhYXlBSThMendZalRvRjdhclFWQUVKd2cxMzIxN1ovdng0eG1DSUNjbUpvYUdobXcycTlHbzE5QVVCTUdDSVBLQ09ESThmR0s2RkkxRzc5MS9jTy9ldloyZG5YYTd2Yk96bzlGb1JGR0VZZmh3S2E0WFMxSDh1UTNpV3o3U0gvb0MvaFMrTUFwU0FSU2U1OHJsc3RvZGVuaDQrUExseXhjdVhCam83ek9ialJpR0txcHhLRUNINHh1TlpyRll5bVF5eFdLUjQ3aHF0ZmFQLy9oL0VnVGhjcm1tcHFaRVNlUjRYaFJGK0ZERnYyOTIzcVFvQ2tBUXFOVmk4WG85OC9QejMvbEtBSVpoWGhCWWxzVlE1R3N2U1MwdURRQ0FLRWlTS05icnRaLy8vT2ZOWmxNVXBlbnA2VktwdEwrL0w0b0NvQ2dnQUpJa2dTQXdpaUVhR2pjYWRVNm5JeEFNOWZiMjNycDE2OUdqUjVWS3BWS3VOQnNOU1pKUTlITlZFSS9jenM5aGpxUUFua05SRkJDRVpCa29Ga3ZsY2xtdjE1ODVjK2J5NWN0RFEwTU9oME5SZ0h5K3lIRWQ5VFNBSUVpYXBrbVM5UGs4WnJQQjRiRHI5Rm9NUXlFSVRDYVRxVlNhcHVsZi9mSUR2Y0hnODNuSHhrYklGMHBlUHNlQksveGNzZkx2STBvTVFXQ3IxV28wR0ZBVWxiOXlwMVhkK3BRa01aWEtiRzV1cFRQWlRDWVRqeWRxdFpyUmFPenA2Wm1hbW94RWV0MXVsOGxreEZCY0ZLVjh2dGhxdFNSWmdtR1l3SEVVdzdSYTdmVDB0TkZvOUhnOG4zenlTWnRwRjRwRm51ZEpFZ2VlRlpvK2lxUCs1eDdwRDMwQmZ6cWZEME1IT0k2UHhXS2lLUFgyOXA0NmRhcW5wd2NBZ0wyOXZVYWp3WFU0U1JZaENFSVFWRkVVRE1kc1ZxdmY3N05hVEVhRHdlbDBoRVBoeVltSnZmMzlVcW5FTU95alJ6Tm1zNW1tS2VTYkpYa2R1aElRQWdGQkVDdlZXaTczM2RjSWdpRFlaRExxOVRvTVE1L05MVisxNTZndWdsZFcxOWJYTjNRNjNlblRwL1I2bmR2dERvVkNMcGZMYkRaaEtOSnF0ZmVTKzhsVXF0Rm9LZ0FnUzVKNmlBSERpRWFqMGV2MVZxdDFiR3lzVUNpc3JxNlZpcVZTcWFUVDZkVGVxWWNMZFA4WlAvbnZraU1zQUpXRFU1NUt1Ynl4c1VVUWhNZmpvV2s2R28xV3E5VkNvZEJvTkNpS3N0bHNkcnNkdzdCWUxMYTN0NmZYNjgrY09kM2JFM1o3WEFhRE1STHBpL1QyaWlKZkxCV1hsMWR2M0xqbGREbjhQaTlKNEFldGY3L2lHZzZ2UmlBSWJqTk1KcE5OcGxMZmVXQ2NScU54dVZ3YURmMjE1OVBQL2d1NTNVNjN5NW5MNVoxTzU5V3JWL3crRDBYUkVJeElvdGhvTmhLSlFqeVdXRnBlVVdzblRreU1Jd2hhcjljeW1XeXBWTUp4M0dxMW1zMW1GRVZEb1ZBdWx5dVhLeHViV3g2dlYrM2I5eEp3aEFXZ0xzVVVCVUJSdE5Gc2JtNXRyYTZ1QUFDSTQzZ3VsOHZsY3F1cnE5VnExV2F6ajQ2T2pvMk5uamh4Z3FMb2h3L3V4K094VnFzRmd1RDZ4dWJLNnBvNjQ1TWsyV3EzOHZrQ3d6Qm5UcDg2ZWVwRU1PaFhoL0N2M2U0NE5BTW9NQUtYSzVWWVBQWWRWb2xUclZsdk1FeFBUNy8zN2pzK24rK3Jrd0VPWWpRQUFLQnArbzAzcmp0ZHpybTVoUTgrK0kzTDViUllMTElzTjV2TlZvdkJNSXpBTWZXRXhPTnh2L2ZlMnhSSmJXeHMzYmw3YjM5L2YyRmhFVUhnVUNnVWlVUUFBRUJSTkp2TDNidjM0TVQwTk9tMHZ3U0hBTUNSRnNEQlhoQUlnc2xFNnU3ZCsrMTIyK1B4R28xR1VSVFQ2YlJlcnhzY0hIQzVYTzAySThzU2p1TVdpN212TDJLejJXVlpHaGpvbzBpeTFXN3Y3ZTN2NzhXME9tMnoyY2hrc2ppT1Q1K1lDb2VDQ0FJZnR1QXZISFNmYTlHbnZpQ1pTTzN0N2pNTTgxMnRBWjRPNXdBQXd4QkpraWlLQWwvcGVIenVxbVRaNFhBTVMzSWhYL3oxQjc5UkZFVVVwVktwNUhBNFFxR0F4K05GRUxSYXExdXRWci9mNy9YNklRaGNYbG1WWlRrY0RvZENvWjJkblZhclZhbFVYQzZYMiszZTN0NWVYbDVaV1ZuVmFtbXRWc3R6UEhqVTZxRS94MUVWd01GbmpDQndzOVhhMk54YVdsb3hHSXlSU0svRllzbmxjaTZYYzNKeU1od09sOHZsbVprbm5RN1hZVm1tM2FZMUdvMUd3ekJ0a2lRSGgwWUFRQ0ZKaW1GWUJFRXNGb3NreWRsc0RzY3hCSUdmWnBsOW80SC82WW9RaG1HTzR6ZTN0cmEzZCtUdmJnR2cvcUZPcDFNcWxXcTFxaWdLT0k1SjBqZHl2aVZaeG1BRWhoRlpsakVVOWZtOFpyT2wyV3dORFBRTkRnNDRISzVLcGNaeEhFMVRlcjJlWlR1eUpMQXNLNHFpVHFjN2YvNWNxVlJjV2xvdUZJbzBUZmYyOW5RNjdON2UvcVBITTRHZ2YwQ3ZCNTZ0Qkk3dU11QklDdUR6bFpuaFJDSzF1cnBXcTlVbUp5ZjYrd2RZdHFNb3dQWHIxeTVlZktYZGFtOXVicklzSy9CQ1BwL1BGL0tLckxUYjdXS3h1TEt5Nm5KNTdIWjdNQmpnZVM2ZkwwUjZlMm1LM052YmkwYTNMV2F6MFdqNHN2amVMOHZQbENScGZ6OCtQNyt3djcvM1hkMnNHc2tEQUFDS291cHFSMUcrT1BEaEM1K1NXc0VrbTgxc1JhTzlrWjZ4c1ZHQ0lBVkJHQm9hc3BndFBNZG5zK21kblIwRWdSdU4rdnI2bWhvSkowbFNvVkFnU2VLdHQzN1UweFArOWE5L0k4dUsyKzBCQUxCU3FTNHNMRTVOVFFiOEFSaUdEb2FKSTZxQkl5bUFBMEFRbENSNVkyTnpZMk9Eb3NpTEZ5OG9DcEJPcFkwRy9mbnpGeEVZV2xwYVdGL2ZrQ1JwZTJjbm04dEprZ1NCWUxGWUxKVkt0MjU5QnNQbzZkTW5iRmFMeFdKWlg5L2tmSnpSYU5ScWRXdHJHNzI5dldhTFJWRTZoK3VoZitFSGZCQnZJeXRLSXBINnAzLytIM2Z2M2xNNzB2M0pOd1hETUlwaElBQ0NJSWdnTUVFUUJFRkVJcEhYWDc4ZURvZFFGUDJHS1FlcWVGaUdVWGQ0MzN6emRWbFdpc1VpUlpFVVJWY3FsZVdWbFFjUEhpV1RTWTFHczdLeW1rNW5aRmxSdTl2WGFyVzdkKytaVE1hZW5wNkxGeS8rNGhmLzArVnlqb3lNNVBQNXUzZnZyYTZ1alk0TyszMWVudWQvYUN2NFZoeFZBUnlZWTZ2VlhsdGJMNWNyUTBPRDRYRG80WU5IUE0rZFBIbGliMjkzZjM4L2w4c05EZzdhN1ZhajBVQ1JGSUlnaWlLZk9ERlZLQmFLaGRMdTdrNDZuZXp2Nnd1SHd4UkZzU3hMMC9UZzRNREt5bW9pa1F5SGd6QU1LY29mMHRDKzhFcGdHRVpSdEZhcnp5OHMvdWJEMzM3MCs0OWpzZmlmZkY4V2kyVm9hR2gwZEZTajBZQVFDSUVnaXFJVVNXaTBHby9IMHhlSm1Fekd3Ni8vNm1VSkFBQUlnc1JpaWIyOUdBekRmWkZJcTlWcXRWcG1zM2xoWVdGell6T1R6V0lvOXQ2Nzc5anROcFBKaE9HNExNdUNJTlRyOVVLaFVLdlZQL25rWm05dnI4MW1kYnRjaFVMZVlOQmZ1SEJlN2F3Uml5VUNmdjhQYlFqZmxpTXBBSFhDVld0M2xrcmxaREpKRU1URXhFU2owU3dVQ29JZ3lMSzh0TFFzeTFKUE9OelhGN0hhckJxYXdqQVVCQ0ZKa21SWlpoZzJseS9zN094RW85SFYxYlZ5cFlxaWFLVmFzOXVzb3lQRGp4L1A3T3pzRGc3ME81MzJnNjNNTDR2NmFqTk1LcG1hZVRKMzg5YW45KzdkeTJWejM3eGV3M1BBTUR3K052YVRuLzdrL1BuekJJRkRFS2pPQmhnSzR6aEJrQVNHb3BJa3l2SWZzYmFXRldWMWZTT2R6b1JDUWFQSldDNVg2clc2SkN0N3U3dWlJSGc5M2toZkpCandhYlVhREVNaEdBWUJVSlNrVG9lcjFXcXhXSHhqWTNObmU2ZGFxZWdOaHYzOVBhMVdlK0xFaVo2ZWNLMVdpOFZpNHZrejMyc3ZuRDhEUjA4QXp4WUFBQWhCc2lUbEMzbVdaWjFPWnpBWW1wOWZLSlhMSUFpdXJXL3FkTnB6NTA0UERRN2dPTUZ4UXFOUnorWnlETU5Ja2tUZ3VGYXI5M245a1Voa29ML3Z6cDE3czdQemZyK3YxV0wwT3AzWDYzRTZIZnY3KzZ0ckd3Nm40K0NQZm1Fb3FDd3I1WEwxdDcvNytPYy8vN2ZsNWVWdnMvRVBnaUJGVVdmT25McDI3V29nRUZRVUFUalFteXpMaWlKSmtxRDZHOTlnWGE0T0VBQUFsTXVWbGVWVmp1T21weSt4TE50c3RYTDVRaWVSQkJUNTFWZGZtUmlmZ0JHczNXNFdpa1dXWVJSRlFWRkVvOVhyOVhxZjF4ZncrM3A2d2pNelQrYm5GM0VjeitlTEJFRU9EZzZPajQ4L2VmSWtrOGx3SEllaHlGRjAvUTg0ZWdKNGhnSUNvQ1FwMVVxVndBbXIxUXFDNE43ZTd1Ym1wc1ZpR1JzYnZYNzlxc3RwZ3lDNFVxM01QcGwvK09qUjV1WldyVlpERU5obXMzdTkzbEFvTkRVMTd2Y0ZYcnQ2bGFUSXhjWGxXcTFtdFpvZER2dlpNNmMvK3ZqRzdPenM5TlNFVmtzRFh4a1hDb0VnaG1FNGpuL0xraEFRQkJtTlJxZlRxZGRwSmJIemZMbjlnNVh2TjdNMlJWRWdHT1k1WVg1dU1aMU91OTN1MFpIaDZQWk9PcFd1VnF0NnZlNmR0OThLaFVQMVduMXg2Y0g2K21ZeW1jem5jclY2blNCd2w4czlOVFY1L3R4WnY5L2o4YmdJNHJ4ZXAvdnd0NzlQcFZJQW9DUVNDWWZEUVpLVVdoc0NRMUgxVlBpSHRvYy9rU09URWZZY1Qzdm1DZExtVmpTWHkrdjFlcHFtYjk2OFdTZ1Vob2VIZnZ6ZXUzNi9oeVRKZERyNzBVZWYvQi8vN2IvZnV2WHB6czZPd0F2RHc4TWpvNk5PaDBNUWhFdzJpNkdvMCtrd21ZekpaTExUNlVBUVRKSmtYMTlrZnorV1RxVTFHdHJuOTJNb2Vyanh5ZWVMVkFNb2lqcnNkcC9QcDlmclc2MjJHbkw4UjkyTCtvWW9pcnJkN3F1dnZUWThQUGpVcEQ1blZTQUlnc0RuL2pUNFpSdFRpcUxBRUFSQlVMNVFmUDlmZnc3RHlLbFRKejF1MThyS1dpS1pKRWxpZEhSNGFtb3lseS9NemMwbmswbUR3V0MzMjBBSVNpUVNDd3VMVzF0YmUzdDdwVkxaN1hhWmpBYTlUcWZSYXRydDl1TGlVcUZRc0Zpc0pwTTVuOC9ydE5ySnlRazFlK2FybDBuL25qbTZNd0FBQUFBQUFnaUNHQXdHQkVIeitYdytuOWZwZEFQOS9lRndDSUxnV3EwK056Zi8vdnMvdjNQM0RzTXdMcGZyOUpsVFAvM3BUM3Q3d3lBSTV2UEZ6YTJ0cldnVUozQy8zKzkydXhVRjZIUTYrVUt4TjlJek1UN1dhRFR1M0wzWDM5L3Y5YnJWL2NjWDJ4UUFBRUJSWkg5L245Zm5DWVVDTHBmejk3Ly9lRzF0cmRscy9yRzNBa0dRWHEvWDZyUW9pc215OEp5NWYyMm81WE5sc0ZBQ3I1U3JDL1B6c1Zqc3lwVXJ2YjA5eVdTSzUza0FCQzBXU3lRUzRUaE9iYUFXRG9kRHdRQ3QwUlFLQmF2RlhDd1V0cUxSUXFGWUxwZHRkaHRGa2IyOVBRYTlmbUo4M09WeUxTOHZwMUlwaDhOSjA3UkdxMUdqaG82ZTFSL2lTQXRBZ1NCUW82RjBXbTJINDR2RklzL3pROFBEZ1VCUVRjNkt4eE4zN3Q2N2UrK2VtdHNhREFiZWZ2dXRjK2ZQMHhRdUs3TEQ2VUl4ZEc1MkxwRklCUHcra2lBTUJnT0tJQ0FJSkJLSmdjSCtlcVArMjk5K05EYzNyOUZRVnF1bDArbDhvUTFLa2lSSkxJRmpVNU1USG8vSDYvSCtqL2YvOWZIam1VYWova2M1QmhpR3VWd3VvOUVBSTVEWU9kakNWODM2YXpzaGZXNzRoeUJJbHBWb2RQdXoyM2NkRHNmWTJBaUdvZHM3dTFhcnRWNXZVQlJGMDFTcFZDNlh5MWFMNWRJckYzQUNCMEhBNjNWWnpPYlYxZFZpc1pndkZOTHA5RzkrODJGZnBNZmpjY3V5WWpTYWc4RmdJcEdvVkNxMVdoWERNSjFPQjhNd2NNUXp3bzVxT01mVGpTQVFOQm1ORUF5WHkrVnNOcXVlNXRKYURTOElBQURzN081dGJHeXlMS1ArQ293Z0pFRkNFQ0NJQXRkaE81MDJ5N1FKa3RScWRaSWtWeW9WRElWRG9VREE3OTNaMlZNVVlHSmlvcisvNzVPYk4xZFcxaVJKVXJNcnYvQktBQUFRQkZFVVJiUEorTjU3Ny93Ly91Ly90M2ZlL3BGT3AvdUdacUdhck5WcVBYUG10TnZ0QkY3SWFQbm0xcVdxQmNYdy9iM1kvZnNQMDZuMG0yKytiaklhNC9HRUtJcERRd01HZzZGZWI5VHJEWUlnYUpxV0ZibFdxek50cHNOMkpGRkNVWVFnU2JYUkFjL3pHeHNiRzV0YjVYSVZnaUJSRlBWNnZjRmdZRm0yVkNvQkFLRFRhUW1DVVA0TWZVRytUNDZlQUE1OFRiVVVnc1ZpSVFpOFdxMW1zMW1DSUdpS2hpRllGQ1ZSa29yRm9scW5UWDE5T3AyK2QvOStOcE9CUUFqRENRQUF0RHJkOVBSa2IwODRsOCtuTXhtU0pNTTlJYS9QQzRKQVBCWW5jUHpxMWRkRVFieDc5LzdpNGpLRzRWKzI1WGM0S2xpcnBjK2VPLzIzZi9jM1AvM3BUOHhtOHplNUk3dmRmdlhxMWYvcmYvN2ZybHg1MVdReS9iSGQ1ajYvOHdQQ0NOUnNObTdjL0RTNnZYUHkxSW5Sa1pGaXNaVFBGMExCb04zdWREb2RQTTl0ckcvcWROcUo4YkZnSU1nTEFvS2dGRVhWYXZXWkozUEx5eXRxc3pOWmxtdTFlaWFUcTlWcUVBU0RFR1F3R0RRYVRhdlZ5bWF6S0lwWUxCYUNJQlJGT2FKVlFWV09wQXVrbXBvc3l3QUFHbzBHczhrc1MxSTJtd1VBQUlKQVJaRVZXVmI3ZG5IY0gzcW9WQ3ZWcGFYbFI0OGZNeXhyTU9nbFVRUkJBRUhndmYyOWhmbEZTWkpkYnBmRFlaZEVLZUQzSjVKSmdpVDdJcjFuenB5ZWZUSjc2OVBiZHJ2OXVYend3enpyUnlUTHNxelRhaytkT3FGMjNQajAwOCtLeGVLWDNZaGFkZWZTcFZkKy9PUDNUcDgrYWJOYVFCRDhvenFOUGlkSUdFWllscjE3OS83Q3dxTEpaSHJ0dGF0dGhzbGtjemlPUnlLOU9JNzFoRU9aVEhweGNjbGcwRHVkVG9JazJxMTJCU2tMdkxDOXUvZm8wZU5FNGcvTlhtVlpaSmcyMitrQUlLQW9Nb3Fpc2l4WEtoV0tvaVluSjV3T0I0TEFQSCtFclI4NG9nSlFVV2NBTmJmTFpESldxMVVJZ2hpRzRYbEJGQ1VRQUdBWWhtRUllR1lsR28zR1lERHM3dXpWYW5XajBhQTJtbTYxMnZQekN5c3JxK2ZPblhPNW5BUkJNTzMyd0VCL3VWSkpwZEptcyttTk42Nlh5K1hOemMyUFA3bjUxbHMvTWhyMUFQQ2xjUy9xRHp1ZERra1NKMDlPZHpxZGRydDk2OWFuNmlMa1JUQU1pMFFpUC83eGUyKy85U2FHWThMVGxsdmZKTTRIZU03MVVJdW5jeHkvdWJYOTYxOS9pT1BZeFlzWHZGN3Y3ZHUzUlZIczc0dlliR1paRmowZWw4MW0rK2lqVDBybDh1VEVSQ0RnQXdCZ2U0Y3ZsNnUxYWswVUpZdkZVaTZYMiswMmNORDZDWVlsU2VwME9nekQxT3YxU3FYc2NybGNUcWZkYmovY1NQeUljb1FGQUR5cllCc01CaUtSSHZSalZDM3MybWcwT2gwV2dnMDZuVTZqMFFMUEJCQU9oMy8yczU4NkhJN0Z4ZVdscFdVRVFVd21rOFZzdGxnc2Rwc3RsVW9XaTZWd09BU0NvRTVIOS9kRjF0WTM1K2NYcjc1MitlMjMzdnpnQStWM3YvdElvOUZjdXZTS3pXcnBkQmpneTcwVUNJSWtVVUpnK055NXMvbDhzZGxzM2IxNzl3dDlKNElncHFZbUk3MDlCSUdyNCs0M0cvcy9Gd3lubmd1cVhzcks2dHI3Ny8rYzR6by8vdkU3RStOalcxdWI1WEpsZEhRb0hBNUtrb1FnU0xGWVRxZlRuVTdINS9PaEdCcUxKMHFsY3F2Vk1ocU5reFBqVjY5ZEVRUytWQ3FxQXNCeHdtdzJhYlZhZ1JmVUJnSnFDOXBBSUJBT2h3d0cvWjk4NXYzdmh5TXBnTU5KVDZJb21rekdzYkhSRTlQVHYvN2dnMEtoVUNqa1cyMC9DSUFlajhmbGNoMzhWcnZkanNmaWFuZGJpOFdxS0lwQnJ4OGNITkRwdEg2ZjkrYy8vOFhEaDQrdFZtdFBUNDhzQ1Y2dm0yVTdLNnRyQ3d1TFE4UERWNjlkYlRQTTczLy9rU0NLcjEyNWJMZGJ1UTc3dFJINU5FVysrdXJGZHJ2Tk1Nekt5b3JxangzZVN5VkpzcWVueDJRMkEwOEwrRUNINy9ITGJ2L1o4SzhXYmxFQUFFQVFCSVNnKy9jZmZmamg3N0xaM0U5Kzh0N0l5SEN4V0l4R3Q4T2hZRERnMTJob1NaSWtTYjU3Ny83eXl0cmc0TURycjcrTzQrak96azZ6MVNaSkVzZXhTclhTYURZcWxZcmFaUm1HWWF2VjZ2UDVESHA5cTlXdTFlcXBWTHBhclZvc2x2UG56L245UGhpR1JGRTVXS01mMFkyZ28zb1FkaENpckNnS2hxRWtTVUlRdEw2eDJlbDA5SHE5eCtPaEtBckQ4V0t4dUxxNnluR2M2aUdRRk9WeU9XMDJtMXI0cmRQcFdDeW1VQ2hrZHpqMjl2YVN5YVNpZ0lHQUh3UVZraUFvaWxJQVlIZDNEMFV3ajhkanQ5dWowV2dpa2VCNTNtYXowVFFOUVUvWElRZnQxNSs3UEVXUjlRYTkyV1RDQ2FKYXJkVnF0ZWRpSjgwbTA1dHZ2ajQ0MkU5UjVMTUF6NjgzcEdkUlNVKzNqeEFFNFhoK2NYSGxndzkrazgxbXo1dzUvZnJyMStxMXhsWjBCMFdRNmVrcGs4a0lBZ0RIOHh1Ylc3Ly8vY2M4ejczMW96Y25KaWNxbFdvOEhoY0V3ZUd3TzUwT0FGQzJ0cllmUEhpUVRxZDRYcUFvNnN5WjA5ZXZYM2M2bmVsVVpuZDM3KzdkdTgxbTg5S2xWLzdpcHo5MnVaeUs4b2ZtMkVmVStvR2pLNEFEUUJDVVpZbWlLSlBKVks4MTBwbU1LSXBPcDB1UkZaUEpDSUpBSnBQTjUvTTh6OU0wSFlsRXJsMTd6V0F3OER6ZllUdXhlS0xSYUdpMDJvQS9ZRERvVmxmWEV2R0VYcWZGY2F6VDZTQUlZaktiR28xR09wMEdGS0N2djk5bXMyNXNibTVzYklBZ2JMYzdTSkw0d3BPcWcyTlIxZXN4R2cyaFlFQ24xVEVzMDJ5MjFEMFRSVkZRRlBYNS9hOWZ2eG9LQlhFTUUwVUpCS0hEb1E4dkh2UStlOCtEbjROcXI1Q056YTEvL2RkL3kyUXlaODZjK2N1Ly9GbW4wMWxZWEJKRmNYSnlRbTh3TkpyTmVyMld5K1YvL2NHSDJXeDJlbXJxUno5NlF4U0ZPM2Z1Ym0xRk5ScU4wYUQzZVQxV3E3WGRhdDI5Y3krWHk4dXk3SGE3Ly9Jdi8ySmtaSVRyOE5zN3UrdnI2MXViVytGdytELzlwMzhZSGg1QUVFUVVSUWo2Z3RQeG84V1JGd0J3eUozdyszMnRWcnRVS2dtQ2dCTUVCTUZhcmRacXRlN3Q3UlVLaGI2K3Z2L3dILzZ5dDZkbmZYMnpYcXNQRHZicmREcUtwRXdtbzl0dDF4c015V1J5WTNNckZvdHp2TEM3dTUvT1pBa2NqL1QyTkpyTldEek9zdXpJeUtqUDY2MlV5M2Z2M20rMW1sYUwyV2F6d1RDa2h0MURFUFJjeGFpRGJWT1NKSHNqdmYzOUEwNm5Fd1JCTmRIZTQvRmN2bnpwNnJYWHJCYkxnU2VESUo5YnVEOW5XQkFFUVpEYW9RdUNZQmpGc0VhamVmdjIzWC81bC9kYnJmYTc3NzU5L2ZxMVRxZHo5KzQ5SEVPSGh3ZE5KdVBqbVptbHBhV3Q2TTdLNnVydDIzZENvZENycjc3cTgvbFpocTJVS3lhVGFXaHdRQlNsVkNwTlVsVC93TURLNmxvaWtiQllMRC82MFkrdVg3OHVpbEk4bmtpbFV2UHo4NEdBLzhmdnZmUEt4Zk1vaWp5M1dEKzZBamlTYTRBWFVSUUZRU0MvM3p2UTM1ZEtwZVB4dUZhckZRVEJack41UE42Zi92UW5CRUZRRktYV3dJckg0aWlHdXR3dWZ5REVzbTJTd0ZpV1hWMWR6V1N5SUFoU05JM2p1TkZvYkRUcUR4ODlPbjNxNUVCL0gwMVJ1N3Q3T0lhSHdxRjMzM3RYbzlVdUxDeFdLcFVMRjg2UGo0K2lLS3JJRWdDQUdJWVNCQUVBaWlpS2t2UTBTUktHWVVVQllGRUsrSDFhemV0VGt4UHBkTHBjcWVoMHV1R2hRWmZUcVZvMERDT3RWb3ZuZVJpR0tZb2tDRUtTSkRVbERRQUFETU1nRUJKRWdXRVpXWklSQkZFVUlKdk4zYmg1YTJscGlTTEoxMzk4Zld4c3RGRnZyS3l1YWJXYTRhRkJDQUx2M1h1UXorZHROaHNFUVpWSzFXZzBsY3ZscmEydGdOOUwwK1RZK0FpQ1lEaU9QM3p3TUo1TWdqQ3MwK2tnQ0l4RUlzUER3eGN2WG13MlcvVjZQWjFPcTN1andXQ2dyNzlQbzZHNXo3ZVFPcnJXRHh4cEFYeStHQWtvU1hJbW01TVZ4V0F3Y0J5WFRxY0ZRV0FZeG1ReTlmWDFjUnhYcnpjRVhsQUROcFBKNUtlZmZqWXhQdW54T0EwR1hibFNmZno0U2JWYUN3YURrZDVlVVJSSmtpQUliSDh2ZHUvK2c3SFJVYVBSWUxOWkU4azRqTUNCZ1ArdHQ5NEVRVEM2RmYzZDczNi90YldGb2dpTzR3YTl3V0t4NlBRNm05V2kwMm5WazJPZTV3dUY0dDVlckZBc1VpUnBNQmdNQm9QSDQ5RnF0YlNHSWdsTUxkeFpxVlF6bVZ5cFhLN1g2enpIa3lRWkNQbzhIcmRXbzFHbmwyYXpWUzVYaXFWU3ZWWXZsY3NzeTBxU1ZDeVc0ckc0MFdTNi9PcWw2ZW5KWXJHMHZiTXJDbnd3RUdaWWRqdTZFNDF1RHd6MmF6V2FScU5wTU9oUG5UcXhzcks2dnI0K1BEUXdQREppczVINWZIRmxaZTNobzBjZ0NJRWdXS2xVWFM2MzIrMEpoOE1ZaHUzdTdqV2J6V0t4VUN3V1hTNFhncUxWYXJYVmFxRW9xanBqUjlueW4vSXl1RUFBQUNBSXd2UEN3NGVQNHZHVTJqZXAzVzUzT3AxR28xRXVsem1PczlzZERvY0R3ekM3elM1SjBsWjA2OU5QUDYzVmFnZ01FU1RWYXJYdjNYdGdOQnBQbnB3T0JBTDdzUmpETUU2SHcrUHhmUHJablhnaVFWRmtNT0RuT0Q2WlNqRU1Fd2o0UjBaR0lCamUzTnk2ZWZQV3padTM1dVlXVXVsTW85a3FGSW9kanNNd1hLT2hJUWpLNVl1UEhzNzg5bmNmTFN3c3B0T1pRcUdRenhjNmJNZnVzRm5NWm5VY3JWYnJxNnZyRHg0K2lzV1M2K3ZyaTR0TEc1dGJ0VnJkWURDWXpXWVlobHF0MXNaR2RINWhjV2xwWldibXlXOS8rN3VQUC81a2VYbWwzVzVOVDArOS9jN2JJeU9qaVdSaVpXVkZFSVJ3T0tUSTh1M2JkOWZXMTExdTU4bVRKL1pqc1dReTVmRjRob2VHV3ExV3A5TXhHSXg2dlRHUlNOeTRjZU5Ydi9wMU5MbzlOamJhMnh0cHRWcHFIeDJlNTNkMmRuSzVYS1BSNkhRNkdJYjE5UFEwbTgxT3ArTncyUFY2SFFSQkIyVkpqL1FNOEpJSUFJWmhobUdYbDFkcnRScUtvaWFUeWVQeFpMUFo3ZTN0YkRhN3U3dGJLcFhhN2JZZ0NCMk9jem9kWHE5WFVZRGw1ZFVuVDJZM042T1ZTZ1VFd2FuSnlhbXBhWi9mWnpZWm85SHRhcjBXOFB2YURNT3lYS2xVcnRjYmtVZ3ZSWkg1ZkdGL1AyWTJtNGFIaC92NklpaUtKaExKN2UxdG51ZUR3WURQNTl2ZjMwK24wd2FEUWF2UjdzZmkyV3hPcDlNNG5VNFFoQ3dXY3pBWVdGbFo2M1JZdlU2cjV0M2Z2Lzl3WldXTnBFaTczUzRJZ3RGb0dCNGVCQlNGMW1pTVJpTUFBSi9ldXIyMHZDTExpbGFqdVgvLy91cnFLb0tnRnk2Yy8vdS8vN3VyMTY3U0ZMVzZ1ckt4dnVWeXUxd3VSemFiVzEvZnltU3pMcWRyZEd3MGxjcWsweG1mejNQMTZtV255NDNBcUN6TGhXSng1dkhNQng5OHNMUzBiRFFhMzN6ampiNUlwTmxxYkc5djUzSzVyYTJ0bFpXVm5aMGROYlBaNi9VT0RnNnlMTXV5SFpJa1RXYXozV0dEWVZpU1h3WUJIR0VYNkRsQUVJQWdTSktrZHJ2VmFEUndIS2NveXUxMjEycTFiRGFiVHFmVnJuZ1locHJOWm92RlFsR1V5K1ZrR0RhWlRPN3M3TWl5TFBDOHlXd2FIeDhMaFh2VzFqY0wrWHloVUhJNVhScU5odWQ1Q0lZMk5yZUdCZ2ZNSnROV2RHZCtmaUVROEhzOG5wLzk3S2VSM3A2UFB2cGtmV01qSGsrOGR1V3lRYTlMSkZNek0zTTJtODNuOCtoMU9nUkZSVkc2Y2VNR0JFR2hVTERSYUJTTHhmMzloTThmYnJVYXlWUWF4ZEJUcDZaM2QyTm1zOG5yOVk2TmpqWWFkYjFlaDZMSWZpeSt1Ulh0N2VreG0wMXpjL01NeTc3eXlzVkxseTZkTzNmTzQzWVZTNlg5L1ZpajBlanI3M1U0Yk1sa2FtOXYzKy8zd1JDb04rZzFOTDI4dkdJdzZQdjYreWxLVzhqbm85dGI5Ky9meitkekJFR1NKS251Rnk4dkw5LzY5RmF4V0dvMm16elBjeHlIWVpqVmFsVTdLbkFjdDdlM3B5aUtLRWtBQUJ6ZXFIb0pmS0NYUkFEcXJxTFRhVStsMHVWeVJSUkZ0ZEpUYjI5dkxwY0RBSUFrU1JSRlVCU3JWcXVibTFzQXNHVXlHUTBHQTRJZ0xNdldhaldPNHhpR3FkVnJ0V3JsOUprekhvKzcxV3JtOG5tbnc0R2dzT3JsUDNqd09CZ0lESThNSVNpNnNiRVpqOGNaaGcwRS9PZlBuL040dkI5L2NuTjliWlZoMllIK2Zsa0JaaDdQN1BaSEJnY0hYQzZQSUlqeGVGeFJGSW9pblU1SHZWNmZtNXZmMjQ5WnJHdlZTcmxhcmJyZHJwNXd1RktwbGtvbFJRSE1Gb3ZYNTRVZ1lEdTZQVCszZ0NEdzhQQ2dJQWlGWW5GNmV1cktsU3NuVGt4REVKUk9aK0tKQk1keFBwOW5aR1NvVkN6bDh3VUFBQ0s5UGVvMnBTUkw3WFo3b0wvZmFqWnRiS3pmdkhuei9yMEgrN0dZSkVsNnZWNFFCUFdRcmxBb3NDeEwwWlRWWXNWeHJOUGhNQXp6K1h6RHc4TXdEQmNLaFhRNnpmTzgzbURRNjNWbXN3bFVnRzhZc3ZIdm41ZEVBTElzb3lnU2lVUzJ0M2YzOWlTQ0lBS0JnTi92aHhHRXBpa1FBSnd1UnlBUXdEQXNrOGxzYm15dXJhL3Y3dTRtRWdrSWdnd0dnMTZ2eHpBc2xVckY0L0g5L1JpR29SU3RvV202V3EwaUNDeExFcVhUdXR3dVVieVh5eGNpZlpHZW5yREpaRmhmMzB6RVU1bE10cisvTnh6dWVWV1VHS2FWU1dmR3g4ZnRkbHVsV3JsNzd6NElncUZ3cUZLdWZITGpWcjFlNyszdG9XbTYzV1lhalZZdVY2aFdxNklvNW5KNW85SEFjVnc0Rk41WTMxcGNYTlJxNllIK1BsRVNuOHpPemM4dm5EZ3hhVEFhOS9iMk9oM3UrdlhYcHFhbWVWNVlYVjBwbGNwbXMzbGdJQkx3K3pDY1hGeGNybFJxVHFmVFlOQlJKTmxzdFRpT1J4Q0VvcWxNSnZ1TFgvelBYL3pQWDdiYmJiUFpyTmZyTzUxT0twVnF0OXNFUWZoODNyTm56d3dPRGdhREFhMUdtOHZsNG9tRTJoRlZraVNOUm9NZ3lPTGlvc3ZsOVB0OU5wdFZBUlRsbXpWUSsvZlB5eUFBTlRJVUJFR1h5eFVLaGVyMWhwb1lBTU53c1ZESTVmS25UcDhZSGg2eVdLeUtJb3VpY3ZXMUsrVnlPWmxNN2V6c0xpd3NMcStzN08vdmd5Q28xK3M1am52eTVNbi84ZC9vVjE1NWhhWnBOZU9Kb2lpYTFpaXkwbXcyMjYyV3dQTVFCR28xbXNtSk1hL1hzN2NYMjlyYXp1Y0srWHlCNTNpWDI0WGphS3ZWckZRcTgvUE5kRHByTXBsNG5sdmYyTGgyOWJYeHNWR1c3Y3pNUEhuNDZMSEpaTEpZek5WcWRXVmxwVmFyall5TWpJeU05ZlQyZlBUUjcvL0xmL212NCtOakRNUHM3ZTIxV3UxaXNjeHhnb2JXNmJUYS9iMFl4d2tJZ2tpU05ENCs2blk1YVpwVUZFQlJ3RmFyWGEvWGFKcUVJSmltYWJiVDRiZ09pcUw1ZkQ0YWpmN0wvM2hmRUFTU0pPdjFlaXFWTWhnTWc0T0RvNk9qdzBPRHdhRGY2WFJxdFRvRXhXQklrUlY1ZlgzajRjUEhzVmhNcTlYcTlmcGdNRmdzRnZ2NitrS2hJRW1TZ3NBZlBQa2Yrc1AvdGh4dEFUeVhvNGdpcU5sc3Nsak1ITWVUSkNGSkV0TnVReEFZRG9jY0RqY0lncTFXbldVN09xM1diRFo2UE82aG9jRno1ODdzeDJJcksydXpzM003Tzd2VmFyWFQ2ZHk3ZHg4QXdNSEJBYlBKQk1PSVRxY2pDQ0tmeisvdjczTWNaN2ZienVuUGtTU0ZFektLb2hpR2dTRDQ2UEZNSXBHMFdpeFdxMlYyZGk0YTNlbnY3eWNJc2xRcWJXNXVTckk4ME45LzhzUkpDRWJ1M0w3NzVNbWMyK1c2Y3VYVjBkR1JlcTBPZ2VERzVzYXZmdlZydTkwK01URldxMVUrK09ERGpZMU5ITWY5ZnIvRllpa1VDbzhlUFhJNkhYMzlmZmZ2UDRnblU1TVQ0NU1UNHk2WFhhUFJJQ2dxQ0dJaUhwdWJtMXRkWFJORlVSUWxyVTdIQzRJb0NBekQzTC8vWUdscEtSNlBVeFFseTdMUDU3MTI3ZXFKNmFsd1Q5amhjSmhNUmcxTkFTRFlick9OUnQxcU1XSzQzdUh3T0J6eGJEWkhFTGpSYUFBQVJhZlRXY3htblZiN0xQcnVDRmVETzh5UjN3WDZmRE5RUUJJbHR0T3AxV29NdzRpQ0lDc3lnaUI2dlI3SHNYSzV0TEt5dXJPOXJkVnExTXhEZzhGZ3NWbzB0RWFXRlk3anF0VnF2VjduT0s1V3E3VmFMWktrK3Z2NmV5TmhrOG5ZYnJmVzFqWTJOallxbGFxNmt5akxNb29ndElZbUNLcGFyYzArbWN0bXMxYXJsU0NJMWRXMVRDWnJzVmpjYmpjTUl5emJvU25xblhmZUNnU0NxeXVyLytQOTk3ZTJvaGN1bkgvenpUZjcrZ1pjTGtlOTBWaGVYbGxjWExSYUxYMlJYcXZWeXJKc3RWcHpPcDJxeXhTUHgwdWxraVRKTUF4dmJHeXlET3YzKzZhbkozVjZIYy94bVV4MmVXWGw3cDE3czdOejFWcE5yemQ0UEc2ajBXQXc2QVZCbUp1ZmYvRGc0ZHJhT3NzeUJFSFliTGIrL3Y2VEowOU9USTRQRFEyNlhFNEN4eUVJYk5TYmEyc2JDd3NMQkVFb2dGSXFsUXFGQWdpQ0FzODNtMDJHWVFpQzZPdnZkVGpzendVK2RRWHc3NEtEcVlDaVNCaUdxOVZhSXBFUUJWR3IwWkFrbWN2bE9ZNkx4V0wzN3QwdjVJdmhjTWpsY25LZERzL3pPenQ3QzR0TGUzdjdCSUViREhxQ0lEaU9VN3NqV3N6bVYxNjVPRG8yQW9IZzd0Nyt4a1pVVVJTV1pkVnlVYzFtQzhNd2lpUWxTY3JuQzgxbWs2WXB2VjVYcjlkNVhoQkZrV1ZaaThXTVlaaFdxd2tGQTFQVDA2bFUrcU9QUDM3OCtER0NJSUZBd0dHM1lTaGNLQlNpMFdnMHVwM0w1U1JSMHVuMUxxZkxhck9WeXhXWHkwbVNaREtaYWpZYktJcEJJQ1FJdkZhck5abU1Ub2ZENGJDTGtwUklwTzdkZS9EaGg3K2JlVExMY1p6VmFqV2JMUUFBdUYxT244OHJDdUtkdTNkblptYUt4YUxGWXVucjY1dVltQWdHQWdBSTVMSTVXWklJSEVjUUJBU2hWcXM5TzdkdzY5YW5HSXAxT213dWx5c1d5MmF6cFZBb3B0TVpCSUdIaDRkNmVzSnFWQ253TE5EanFGcy9jTlJkSU9DRmFnZ3dESHU5YmxwRGU3M3VyYTF0aG1XZEJvTldxMnMwMnR2YnU0VkM4ZFRKYVlOZUQwSVFBSUw3KzdGYnQyNjNXdTJod1FHRFFkOW9OUHY2K3ZyNitqNzY2UGQ3ZS9zWWpsa3NKaGlDNHZGa0xsZlVhRFJxU0tuSlpOSm82RXc2ODZ0ZmZmRGt5ZHpvNkdoZnBPYy8vSWVmTWd3ckNMeEdvOW5iajYydGJiQXMyOWNYV1ZoWWhHRm9kSFIwWjJmdnpwMDcrWHorL1BuejdYYjc3dDI3ODNOend5UEQyV3cybmM3bzlmcDMzbm1uM1c3ZnZuMm4yV3hQVFUzNi9iNWFyYWJUNlNZbnh0cnQxc1Q0K01qSWtLTElraVJSTkExQlVENWZtSnRiMk5uWmJUYWJNQUtiemFaMm00RmhHTWN4aG1FVHlaUk9wOWZwRFZhclZkM1RmUFhWUzJmT25IRTRuQWFESG9IaHRiWDFPM2Z1bDBybEsxZGVoU0ZZcDlNNjdEYUtvamEzb3JJQzJPMDJsOU9aeitkaEdCNGJHeGtlSG5ZNmJBU0IvN0hwbXYvK2VSbG1nT2Vpc2lBSW9taktZckhvdEZwSmtrcmxjcWZUcVZZcUhNZDVQTzd6NTgrNTNTNFVRZXIxeHAwNzkwUlI2dS92OTNqY0t5dXJLNnRyc1hnc204MG1reWxabGljbko2OWRmVTJXbFhLbG1zdmw0L0ZZUHAvbmVjRnFOUThQRFk2T2poWUt4ZnNQSHR5L2YzOTdlNmRlYTZBWWFqUWE5VHJkenZhZUlBckR3ME04ejVlS1piWGMxWU9IRHdxRkFrM1RHbzJtM1c2M1dpMEVobkVjYjdjWmRXMXFzVmpVeWtJc3k1SWthYmZiczlrY0JBS0RnLzNOWmhOQkVJUFJZTEdZOC9uaXl1cmF4eC9mK01VdmZubi8va01VUlNjbkowZEhSN1BackN3cmtpUzFXaTJueTZYUmFMUTZMVTJUNlZSbWVXV2xWcXNaREhwUmxOUU9JQ2FUYVdDZ3YxYXJWNnBWV2tOYkxDYUN3RkVVSlVpaTJXeUtvc2p6QXRmcG9CZzZOTmcvT2piaWROb0pISHZ1YWI4Y01qanlNOEJ6SEFSUjZyVGEzdDR3U1JMYk8zdWREa2ZUWkNEZzlYZzlvVkNRSkhCQkVCdU41dDdlZmlBUU1Cb04yVncrRmsvd1BJZGptS0xJSGJaRGtwVE5hdFhyOWFJa1NhSlVLcFZTcVZRNEhHcTEyZ2dNSXdnS3czQ2owZGphMmlvVUN2VjZvOVBwMU9yMVdDeU9JTWpPem00d0VBaUhnN2R2MzRVUm1DVEpWRHBkS0JSNmVucHdITnZhaWhJRWNmbnlxeTZua3lRSlFSU3IxV29pa2F6VmFpTWp3dzZIdlZxdGJXeHNYTGh3WHZWTWVGN3crM3lMUzh2eGVNSWY4S1hUMlV3bXZiYSt2cml3V0svWEtZcVVaUmxGTVFSQnZWNHZCRUdsVWpHWlNOaHRWZ3hGRVJoeU9wMWFqVWFTSkVFUUlRaUVZYkJjTG0zdjdQZ0Rmb1BSc0xlM3Y3dTcxeGZwSlFqUVpyZWVPWE5LcjlmWGEzVkZVUWlTc051czRYQlFiVGdpU1dyeTE4dGc5SWQ1U1FUd1hMMEdXWlk3SFJhR1liL2Y1M1E2YS9VR0FDZzBUZEVVcFJiSFZSUlpGRVdCRndxRllyM2V6T2Z6TnB0bFltSk1xOVV0TGk3bWM0Vm1xMFZyTkNSSkFpQlFLQmJXMXRZYmpjYTFhMWVyMWRycTZ0cmVmbXg1WmZYSmt5ZU5Sc1BuODEyNWN0bmo4YkFzdTdLeW1zdmxJUWdLQlB5S3JKUktaWUlnR0paSnBkTWFqWFo0ZUtqVmJDMHZyd3dPOWw5KzlWSTRIRklBQlFEQVZyTjEvLzZEVHorOURjUHc4UEJ3T3AxNTlPaHhMcGRYRkxuVDZTUlRhYXZGVWk2VjFqYzI0NG1FWHE4UEJBSVdpd1ZGME51M1A5dmMzQ1JKc3ErdkgwWFJzYkZScTlXeXNyTDZ3UWUvc2Rsc1o4K2NSbEZNcDlOcHRGcVh5M1g2OUttcnIxMDJta3libTF1TGkwdWZmWGE3MFdod0hNZHhuT3BaZ1FCZ01adk9uVDFkcnpja1NhSnBpcVlwUlZFT2N1UmZqdmpuNTNoSkJQQWNCN0g0a2lRaENHd3hQeTBwcmk3Z1pGbmRHdExwOWZvbk16TzFlc1BuODc1MjVkV1I0Vkc5UWU5eXVSQUUrZXoySFF6RFpFVmgydXlqUnpPenMwK0N3WURGWWdxSFF4QUUzYnYvb0Y2dkY0dEZnc0F2WHJ6d0QvL3dEeTZuczlOaFMrWGl3c0x5NnVvcXkzS0ZRcWxXcTlPMDJPbHcxV3JWNlhRV0NvVmNMbWN3Nks1Y3Z1VDF1Z1dCa3lRWkFBQmFRNCtOajNXNHp1UEhzeWFUR1FBVVJaSHorWHk3M1JaRm9Wd3FZU2hLYXpTblQ1KzZmdjAxczhtczFlcmJET1B6K1RZM04xS3BURGFiN2UzdDlmdjlFeE1UTkUxdGJHenU3dTQrZlBoZ2ZIenN6Sm5Ub2lSNnZaN2g0YUgvOUovK3dXRzNrU1NOSUZnc0ZyOXo1MDZoVUJnY0hMaHkrUktLb21wMnBTUkpFQVFaamZyRGordWxzZlV2NU9VUndPR0VMUFY3NEZrakdUWFhWdTJ0QW9LZ0FnQ3lvbWcwbXZQbno3YmFyY2VQWjZMUjZLOS8vY0hlL3Y3QXdJRGI3WnFjbkVna2tnQUE1UFBGZUR5eHRyYTJ1N3NyU2RMRGg0OWZlZVVWczltTW9hZ3N5NUlrZFRwY29WRGMzTnhNSlpPTlJxUGRicFhMMVdxMUNrSHc5bzRwbFVwYkxHYUNJS3JWcWw2dmI3ZmJsVXFacG1tanlZd2dhS2ZEcXMwSEFFWFI2N1JXaTZWU0thZFNLUXpER28xR3BWSXBsOHVDSUNBSTJtWVl0ZnYzMXRZMkNPNFlqU1lBQUJLSk9NT3draVJLa2dSQm9GNnZSMUUwSG84L2VQQ2dYcTl2YlVVWEY1Zjgva0N4V0xMYjdYMTlFWnZOdXJrVlRhZXpLeXVyang0OWFqYWJnVURnMU1tVHZiMDlhcCtSZzFIajRJc1h0L2xmUGpHOFBBSTRRRFZ4OVN0VkF3ZVZtdzQrUHpWMFluaDRFSVloaTltOHNycGFxVlppK3pHVDBlaXcyK3gydThsa0xCUktLeXVyT3p1NzZYU2E0N2hrTXZuKyt6OXZObHQ2dllGcHQ5dnR0aVJKRE1QczdPemN1dlVwVGROY3A4UHhQTU13dXp1N0dxMkdZWmhZYkw5ZXJ4bU5SbG1XdDdlM01ReGpHSWFpV3NWQ1FhdWhjWUpVTHd4QmtWYXBuVXFsYTdXYUdwMVJLcFVNQnNQKy9qN0xzaXpMTWd5VHkyVkprdUk0WGxGa25VNHZTYUphN0ZydEJWK3IxU3VWOHAwN2R4WVhGKy9mZjZDRzkyeHNiRVFpa2QzZFBZcWlYQzRYQk1HTlJtdHZieitkVG11MW1wR1JvVk9uVGsyTWo1bU1CdmxRZGk5d3FPbjNTMi85d0VzcEFPQlptcm9hcW5MNHBFdzV5S2hWRkFVQVNKS1lQakhWMDlzVGk4VlRxVFJKa2o2dngyNjN3akNpMCtxaTBaMTc5KzRWaTBXMVVockRNRGR2M3N4a01zRmdFQUNBVkNvcHk1TEpaRElhalJ6SEdRd0dpcUxxOVVZaWtVd2tFN0lzMSt2MVpyT3BubzVacmRaTUpxTytrbUdZVC92NkZBQjB1WndBb0lDQTBteTJGcGVXYnR5OGxjbGtXNjAyQUFDMVdnM0RzSjJkblU2bnczRmNLcFZpR01idGRydmRiclhiY2ExV0J3REFaclBWYWpWMUxkNW9OSkxKWkRRYVZlc1dzaXk3djcvLzVNbVRWQ28xTWpKa3NaZ0lndWpyNjBVUU9CUUswRFRWRXc3WkhYWWN3dzZYZEgreDlOMUwwQXI3cTNrNUJRQWN6aHYvOGs5T2ttUlpsclVhZW5ob3NMKy9Id1JCQ0FRZ0VFQlFOQkQwTDYrc1BIandzTlZxVmF2Vlo2K1hvdEZvTEJhRElJam4rWUdCZ2F0WHIxNjhlSUdpYUpQSnlERE15c3BxcFZMeCtmenRka3NVSlJ6SHM5bGNwVklwRklwcVlJL2FvYU5lcjYrc3JFNU9UcGpOUmtFUXRyZDM3OTI3LytUSkUxR1VFQVNtYVpxbTZYUTZyYlpxNURoT3E5V2FUQ2FYeStWMnUwNmZQbTIxV0hoQkxCWkxxVlRpZ3c5K016TXpNenM3aTZLb0dzbXNYcW9hd3d3QUFFM1REcnZkNlhBQWdHd3htOVFFQXhBRVlFZ3RhZnE1aGdaZlhmRHJwZVNsRmNBWDhsenNFUGlzeXljTVF3aUNBQUFneTVKYTNyQ25Kenc4UERRL3Z4Q05SdFZhNStydjhqelA4enlHWVgxOWtmLzRILy95MGl1dmFIVjZraURMNWZMT3ptNG1reGtmRzdsNDRSeE80SXFpTUF5VFRtZmlzWGdxbmFuWGF4aUdWU3FWL2YzOWVyM09jMXlIWlVvbENRQkFqdXN3RE5Oc3Rod091OFBoVUNzUURnNE8rUDErcjhkak5wc1JGSlVscWRscTFldU41ZVdWaVlseE5ZNC9FUEFhRFhxdGx2NzFyMzlUcjllQlE1WXFDRUkrbnljSTRzMDMzNHhFSW5xOVRoSkZFQVRWaGk0S29DaXl1aHYyTWh2M04rRjRDVUFGL0x4ZnBDNW5ENzRGQUVDU0pJdlpORDAxbVV5bWFyV2E2b1VmL2hXcjFmcldXMitkTzN2V2FyVXlETnRxTlJhWEZwUEpsTXZsbUo2YTlIZzlORTBEQ3NDdzdXYXpsVWxuMTlZM2xwYVd6V1p6bzlGNCtQQkJ2ZDZ3MmF5OWtRaEZVVEFFS1lxaTErdHNOdXVWSzVldFZwc2dDRGlPblRsOUpoRDBtMDFHalliR01GemcrWHl4dUxXMVBUOC92N3k4TElwaU1CZ1VlSDU4Zkp6anVIUXFNenMzMStsMERpNFNoaEd6MlR3OFBIejUxVXVCZ0U4dDc2enU4eHpjeFhPaERNZFRDY2RSQU1DaDJuSUgzeDcrdjRxaUFJQVNEQVYrK3RNZnd6RDh5U2Mzb3RFb3k3S0FvbkE4aitQNHdNREFhNjlkQVNFb2s4M3FkTHBvZENzYWpicGNybmZmZmR0a01nR0FvbmJKMXV0MVJxTXhHQXdPRGc1b05Sb0loZ1ZCUkZIa3hvMmJzcXc0SE02QmdRR20zWXB1YjRNZ0dBcUZybDY5cWhyeDJPakl3T0FRanFPeUpDaUtyQ2dBVG1DaFVORHBkRklVY2VQR3piVTFPUkR3bHNvbHJWWWJEdmU4OGVZYmUvdjdwVklKeDNFSWdsQUVzVHNjcDArZmZ1dXROOCtjT2FuUmFBUkJlREY4LzNDQnZlTnAvY0N4RlFEd2xRT2V1aTBJZ2FEZjUvbTd2L3ZyMDZkUHJxOXZ4bU94VnJ1MXZ4OVRGR0J5Y29Ja2lIcWpxZFZxdEJwNmVYblZaREtmUEhuU1pESUxQTWN3aktJQUJJa2pDQ0lLSWd5TEpJbVBqWTA4ZWpSVHFWYWRUcGZmNzkvWTNMeDM3NTVPcDluYzJKcDlNaWZMeXREUVVLVlM0VGd1RkF6MDlmV0NnTWgxaElOV3NBQUE0RGlHNC9qMDFPVFdWalNkenV6djdZZENvVlFxdy9QQzJPam8wTkNRTEV0T3AwT3YwOXNkanI2K3ZvSCtQcS9YamVPWUxFdGYvUkNPcmZVRHgxa0FCM3hGQzNnWWhtMVdxMTZuaS9UMk5CcE5RWlNmUEhtU1RxZk1aa3VsV29VZ1dLdWhGVVd1VkNvdWw4dmxjaUlJQWdMQWZpeVJpQ2RRREoyZW5pUUlYQzEzN3ZWNm90R2RiRFlyaUpMYjdXNDJXOWxzYm1abU5oNlBRekRrZHJzcGlrcWwwc0dnUHhEd2t4VEpkVG9RQ0ltU2xNdmxaMmZudytGZ1gxOHZCTUVhcmNGc3RpWVN5WFFtTXprMW1jNWttNjJtUnFNSkJnTjlrZDZwNlNtVDBVVFJwRjZubzJrYWhxRURuK2NMNzdkTFZ3Q2Y0OFdRQ2hCVVNKS2dhY3JsY29FUTJtNjNaVmtTUmFsZXIrdjFCZ2lDT0k2RFlialJhRmFyRlkvYm9RQkFQcCtmZWZKRWt1UndPT2h5T2RYM3BHbmE1WEx1N082bTkySVVTUnFOUnBabFAvNzRFeGlHbnhXdXFuUTZuTjFtYzd0ZHNpUXBDb0JnU0xQZDJ0amN1dlhwWjdJaUJ3SStraVRiclZhajBlQjVBWUpnMWJnNWpwZWtwbGFyaTBSNko4Ykh0VHFEb2dpeUpFbVM5R0pEK2E3MVAwZFhBTS96M0JJWkFBQkJFRlF2R2NkbERJVVZXYW5WNmdpQzREalJhclZSRkxWWmJmbGNmbUZoU2EvVHlvcVN5K2JTbVF6THNLVml5V2ExSWdnaVNTSUFLQ2F6VVMxWUJBS0F5KzNhMzkrL2QrOWVYMStmMjYxbXE3Vk1KcFBKWk5Kb05KSWtBWUNpdHRqWTM0L2xjcmxrTXBsTXBscXRkcUZRU2lUaUVBVFpiUFpLdWRicGRIaStVNi9YWVJoR0VGU1dSYTdUT2h5eS85eXQvZEJQOTk4ZFhRRjhBYy9OQTRlT1NHV0h3MjR5R2JlaTJ4ekgwVFRkWmxnQVlFZEdoNk5iMjd1N2U0VkNBY013U1pLTkJxTldvMUhiQngzOE5ra1NGRVVvaXN4MldBaUNGRVZwTkJyQTA2cGVmS2ZUSVFpY0pBa0VnWitOM0lyYXVkcnI5VEZNNS82RHh6elAxMnQxaXFiQzRSQ09ZNjEyaTJIWVlxRllLcGZWVnFjMFRYL2hlaGZvV3YrWDBCWEFGL1Bjd3VCd0w0TGUzcDU0SWpVN084Y3d6T25UUkNnWWJMVmFOcnROYjlDTG9naUNVS1BScU5mckRNTndQQThBNnU4Q2lnSkFFQVNBb0NnOXpTbUJZUmdFUVF6REVBVGhPRTVkS2tDd1dtRlhVUlFGQUNGQkVPdjFlcUdRMSttME9FN2dHS2JWYUZBTW95Z2FBRUFFUVhkM2Q1ZFhWaTBXeTlqb2lNdmxmSzVVZjlmb3Y1YXVBTDZlZzQxQ1dWWlFCUEg1dktkT1R0ZnJ0V3ExbGs1bm5FNG5TWklnQ0hZNkhhN0RDcUtzOWxIc2ROaUQ2Z25xMjBpaXpITzhLSWdFVGtBUUpNdXlLSXFxZjZXVzlPSTRUaFRFUDlTWEJnQkprcHJOZHFGUXNOdnRpcUtRQkVFUUJBUWpGRVdoS0JLUHg4dmxpc1ZzUGpFOU9USXlyTk5wRHk5NXU5Yi9UZWdLNEk4QUJFRkJGQ21LbkpnWXN6dnNEeDQ4ekdTeW01dWJrVWhFTmZwMnV5MElZcmxjQmdEQVpETGhPS0UyRkFNQUJZVEFOc00wR2kxSmttaWFWcytKMisxMm9WRGdlUjVCRU5VamFyWmFnaUNxZXBCbEdVVlFnMEd2MStzWWhzbGtNaFJGcVludEdJYXhMTHU4dk9KME9pY254MGRIQmdtQ1ZCUlpEZXI4b1ovVFVhSXJnRDhPOWVRWWhpRy8zMnN3R0phWFYyZG41M0s1dkVhamhXRklOWGNVUlNPUnlPRGdRQ2dZUUZIMFlDdW1VQ2prY2xsWmxqVWFqZHB5aStmNWREcGRyOWR0Tmh0QkVOVnFMWmZOTlp0Tms4a29TWklnQ0ZhcjVkS2xpNUlrMWVzTlJWRWtTUVlBc0ZhckpaUEpkcnNWQ2dWUG5UemhEL2hCUUhuYXRMMXIvWDhrWFFIODBUdzFNa1V4R0hTakk0TTZuU2FUeWJXYXJRN0hRUkFJd3pxL3ordnh1SHQ2UWpxZFZwWWxDSUlnR0tsVXF0SG9kamFib3loYXI5ZXJWZWhFVWN6bjg5bHNWaTJiWGlxVk5yZWkva0RnN05uVGlDeExrb1JoYUU4NFJCREUvbjY4V0N3SlBBK0FBSTdqSnBQUmFEVDBoSU4ydXcyQjRSZWIxWFdWOEEzcEN1QWI4ZHkra0xvZ2hpRElhRFRvRFhxdjExTXFsaG1XWVZsMloyZVg0M21Tb2x4dWp5enhzcXdvQUZDcjFXZG41N2EzZHdWQk5CajBhb1hHV3ExbXQ5czduVTQybTNVNEhEYWJyZFZxcFZMcHBhVmxoOFBtY2pvUUJJRWdDTWR4bCtLTWJtMXpYTWZuOCtxME9vb21qVWFEMVdxbFNFS1NKSjduUDdmaDJUWDlQNGF1QUw0cHowWE9IQndSZ0NCb01adnNOaXNFUWVsMDlyUFA3cVRUR1VrVUEzNHZocUVnQURhYXplajI3cDA3OXdxRmdtcTRITWMxR2cyTHhSS0pSTlRVeDBxbEhBcUZxdFZxcFZMZDJOaEVVZVQ4dWJOV213WERNSUVYZHZmMjd6OTR3SEZjSkJLWm5KcWlhVUlVQlZtUzFKWjdCNDI2Z0dmSlFGMEZmSE82QXZnaitNSUc4V3BPRmdSQmpVWnplMmMzRm90akdGWXNsWC81eTkvb0RUcFJGQ3VWU3FGUVVudTZtTTJtZ1lIK21aa25ORTBQRFExZHZIZ3hsVXJkdkhtVDQzaU5odmI1dktJb3ROdnQ3ZTJkY3Fsc3M5czBHbzBvaXVWeUJRUWhuaGRtWm1hR0J2dHh6Q3lLd2hjbWJRRmQ2LzhqNlFyZ2orYkZ0S21ETUdNRVFXQUl4bkVjUVpBMnd6UmFUVkVVVzgxbVBsL001YktSU08vSXlMQldvMDJuMDA2bjg5eTVjK1BqbzE2dnAxQW83Ty92SjVQSlZ5NWVrQ1hwOGN4c3E5VldGRUJXQUlLb3d6Q2lGbThEUVJCRkVSaUdBRUE5WCtzZTlINEhRTi8rTFk0aGh3c0RxbC9Jc295Z2lNdmxPSGx5MnVsMEFnQWdpbUtudzlWcjlYUTZrOHRseldiVHFWT25yRmJyMHRKU3BWSUpCZ01qdzBNMm15VVk4SStQanhFRU1UczcxK0c0MGJIUjRlRkJqdXVrVXVsS3BjS3lIWlpsQlVHZ2FhcTN0MmR5WXB3Z2lNTStHSGlJSC9xcEhFbTZBdmhXUEd0dERTcUtBa09ndzJGLzQ0MXI0K01qT3AwV3cxQ3RobVlZSnAvUGd5RHd4aHV2ajQrTjVmUDVUeis3RFVHZ3orZHpPR3dZaXVwMG1tQXdvTmZyOS9iMjd0NjliN2ZiM25qajlmNitTS0dRcjFhck1BeFRKQW1DUUc5ditOS2xpeWRQVG1NWXFwNFpBOTBoLzd1ZzZ3SjlKNEFBb01peUFnS0ExV1k1Ynp4NytyVEVNRXc4bG1qVUd3YUQvc0tGODA2SC9jbnNrOVhWdFdBd3lEQ01YcWRGVVFRQUZBUkZJUWkwV2l5OXZiMnRWdXZPblhzakk4UC82Ly82OTA2WE01OHZPQnoyVnk5ZEpDa1N4M0VVUmFBWEF2VzZmRXU2QXZqMmZMNk1BZ0RpT0tiUllBUkI3TzdzTXd3amlHSTJtMXRkWFpObGVXeHNUS2ZUZlBqaDcwcWxjcjNSY0RvZEVBam1zamxlNEUrY21KNmNuTmpmajgzUHpkdnNObEVVRzQxbXU5WFM2YlE2blJaNG1zTC9oMGlINDV6RzlSM1NGY0IzaHVvSXliSXNpektnQUlBaWE3VzAxK2NwbGNwcUs2VCsvc2pFeERpR29odnJtOGxrS3JxMTQzRFljL25penU2dW9paG5UcCthbkp3d0dRM0xLNnZsY2htQ1lMZmI1WEE2UUJCVTQ0VU9LbngxK1E3cEN1RGI4bUo2TVF6RDZpNU5KTkpEMFZRMm0xTVV4ZS8zMlcxV21xWlpsajE3OXZUdlA3cXh0THppY2prM05qZUx4WkxINHhrWkdTWUliSHg4ek8vM0paS3BhcVZxTWhsZGJoZEpmbTdWKytKZjdQSnRBRm1tL2tOZnc4dkQ4MVdsQUVBQlFMWE1HZ3lCYXFGR0VBUUVRYng1ODdQWnVRVzEyY3pFeFBpRjgyZDdlOE5QSXhxZWhrOHJJQWlBNEhNZWx2ci91NmIvbmRHZFVyOUxudHVPVkFBQWdrQVVSVkFVQVEvQy9CV0FJSWpwNmNtZWNLaFVLcG1NeHRHUmtVQXdJRW5TVTdzSEFBU0dNQlNCWVJnRXdLOTQveTdmbnE0TDlCM3ozQ1FnU1pJa1NVODlsbWZtSzBtUzNXNmZtcDZVWk1ubjlZYkNBUnpIT2l3TFFSQUFnR3BscnVmY25vTTM3d3JndTZYckFuMzNIQVFwUENlR3d6eXQzaTRyRVBRMUZnMTJ0ejYvVDdvendIZlBWOWJiK3R6WENBd0JMMHdhUURlZDk4OUlkdzN3NStORk96NG9SUDdWTCt2eS9kR2RBZjZzZkVVUnJoZGYwT1hQUUhjRytNRTQ3Q2wxWTN0K0tMb3p3QS9KUzlsMjdtalJuUUc2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4NXY4UEgvS1JGcTRvejI0QUFBQUFTVVZPUks1Q1lJSW9BQUFBZ0FBQUFBQUJBQUFCQUNBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvMy9Qei85UG42LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzcvVDEvKy8wOVAvdTgvVC8rUDMrLzlMVzF2L2c1T1gvOXZ2OC8rN3o5UC92OVBYLzcvVDEvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL2Y4L2YvNS9mMy8rZno4Ly9UNi9QL2s2T24vWTJOai80T0RnLy8yK3Z2Lzh2ZjQvL3IrLy8vNS9mMy85Zm42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzN5OC8vMy9QMy94OHJMLzVpWm1mKzZ2cjcvKy96OS80V0Zodi9Lek16L29hT2svNmlwcXYvNCt2ci9xcTJ0LzUyZm4vL2IzdC8vOXZ2OC8rM3k4Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveTkvai85dnY3Ly9iNisvK1NrcFAvaDRpSS82eXVydjk2ZW5yL2c0U0YvLy8vLy8vaTQrUC9iRzF0LzRtS2lmK3p0YlgvY0hGeC83YTR1Zi82L3YvLzl2djcvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLyszeTh2K3JyYTMvakl5TS80Q0FmLzlJU0VqL3NiT3ovNFdHaHY5aVltTC8rdjcrLzkzZzRQOUZSRVQvc0xLeS80cUxpLzlVVkZUL2pJeU0vNHVMaS8rK3djSC84L242LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLyszeTgvLzUvdi8vMmR6Yy8xUlRVLytKaVluL21adWIvM1oyZHY5UlVWSC9ySzZ1LzFkWFdQK3lzckwvaG9hRy8zSnpjLytibkp6L1NrbEovNGVJaVArZG41Ly9kbloyLzJocGFQLzMrL3YvOGZiMy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3U5UFgvK3Y3Ky8renc4Zi9hM2Q3L2c0U0UvOVRZMmYvNi8vLy80dWJtLzNwNmV2OXFhbXIvYTJ0ci95QWdJUDhyS3l2L2ZuNSsvMWxaV1ArYW5KMy83UEh5Ly96Ly8vK3p0cmIvbHBlWC8rVG01di93OWZYLytQejkvKzN5OC8vdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOHZmNC8vMy8vLys0dXJyL2xKU1UvNDZPanYrS2k0di9zclMwLysvejlQLzcvLy8vMDlmWC8xVlZWZitFaElUL0ZoWVcvem82T3Y5NGVIai9abWRuLy9EeDhmLzMrL3ovNXVyci82U2xwZitLaW9yL2taR1IvNVNWbGYvTzB0TC8vLy8vLysvMDlmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vUDQrZi9yNy9EL2pJMk4vNVdXbHYrNnZMei9uNkNnLzRHQmdmOUVSRVAvMWRuWi8vZjgvZi93OVBYL2EyeHIvMzkvZi84K1BqNy9aR1JrLzJoblovK1NsSlQvK2Y3Ly8vci8vLyttcUtqL1JFTkQvNU9VbFArbnA2Zi91YnE2LzRHQmd2K3BxNnYvOWZyNy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDA5Zi9zOHZMLzh2ZjUvNU9VbFA5cmFtci94OGpKLzZTbHBmK0lpWW4vazVPVC8yUmxaZi9WMmRyLzkvejkvL0wzK1A5MWRuYi9lWGw1LzBGQlFmOW5aMmYvYUdoby81NmdvZi80L2Y3Lyt2Ly8vNjJ3c1A5bVpXWC9tSnFhLzRhSGlQKzR1cnIvdHJlNC8xdGJXLys1dTd2LzlmdjgvK3p3OGYveDlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly91OC9ULzhmZjQvLy8vLy8vbTV1Zi9qSTJOLzZ1dHJQL1AwdEwvZG5aMi85TFYxdi9QMHRML1ltSmkvK0RrNVAvMisvei81K3ZyLzNCd2NQOTlmSDMvVTFOVC8yaG9aLzl5Y1hIL2pJMk4vL2I2Ky8vNC92Ly91YjI4LzJwcWF2L3Q4ZkwvcksydC80aUppZi9WMk5qL2xwYVcvNVdXbHYvLy8vLy8rZjMrLy9EMTl2L3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2o5L3YvbzdPei9zN2EyLzRLQ2d2OTNlWG4vdnNEQS84ck56Zjk5Zm43LzhQSHgvKy95OC8vTno5RC84UFgyLy83Ly8vL0Z4OGovaDRlSS8xTlRVdit5czdQL2pvK1AvMkJnWC8rT2o0Ly8zZC9mLy8zLy8vL243T3oveWMzTi8vLy8vLy9LeWNuL2g0bUovOUhUMC8reHNyTC9ZbU5qLzVhWG1QKyt3TUQvOC9mNC8vWDYrLy92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di90OHZQLzd2UDAvKzd5OC8vMy9QNy96dExTL3pZMk52OEFBQUQvQUFBQS94VVZGZis0dXJyLzRPTGovNTZmbi8rVmxwYi85dm41Ly8vLy8vLzQvZjMvMHRUVi81S1NrLzlzYkd6L1JFVkYvK0hpNC8rK3dNSC9OVFUxLzRhSGgvK1VsWlgvNWVmby8vcisvdi8vLy8vLzVPZm4vNEdEZy8rN3ZiMy80dVRsLzQ2UGtQOEFBQUQvQUFBQS93TUNBdjliVzF2LzZPdnMvL1A0K2YvdTgvVC83dlAwLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzh2ZjQvLzMvLy8vNy92Ny85L3orLytydjhQOVhXRmovQlFVRi93SUNBdjhDQWdML0FBQUEvek0wTlArN3ZMMy8yZHJhLzUrZm4vOW9hR24vYW1wcS8xWlhWLzh1TFMzL0p5Y24vd2NIQi84K1BUMy9uNkdoLzVLVGsvOGRIQnovRUJBUS95a3BLZjgwTkRYL1lXRmkvMmhvYWY5eWNuTC90cmEyLzliVzF2K2NuWjMvRXhNVC93QUFBUDhDQWdML0FBQUEvdzhQRC8rSWlZbi8rZjcvLy9iNisvLzkvLy8vK3YzKy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8rLzA5Zi92OVBYLzhQWDEvL1A0K2YvdzlQWC9vNmFtLzNsNmV2L1gyOXYvdzhYRi8zMTlmZjlUVWxML0FBQUEvMEZCUWY5NWVYci9IeDhmL3hZV0ZmOXZiMi8vZTN0Ny96YzJOLzh3TUREL05EUXovMUpTVXY5V1ZWWC9VRkJRLzgzUDBQLzArUGovOXZ2OC82YXBxZjlIUjBmL1ZsWlcvME5EUS84M056Zi9LQ2dvLzA1T1R2K0JnWUgvWFYxZC93QUFBUDg3T3p2L2ZIeDgveUFnSVA4QUFBRC9kblYxLzMxOWZmL2k1ZVgvdHJpNC8zWjNkLys3dnIvLzl2cjgvL0QxOXYvdzlmYi83L1QxLysvMDlmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8rLzA5UC8yKy96LytmNy8vL1g2Ky8vdjlQWC85Zm42LzRDQmd2OHNLeXovcWFxcS8vVDI5ditIaVluL3dNTEMvNk9rcFA4VEV4UC81dW5wLzZxcXF2OGxKQ1QvTXpRMC85N2YzLy9CdzhUL2ZIeDgvNkdpb3YrSmlJai9nSUNBLzUrZm4vK0ppb3IvOC9iMi8vci8vLy8vLy8vL3o5RFIvNHlOamYrU2twUC9mWDE5LzVHUmtmK1VsWlgvakk2Ty85VFcxLysvd2NIL0Nnb0svMFZGUmYvVDA5UC9ycSt2L3hRVkZmL2EydHIva1pLUy82K3hzZi93OC9QL2ZuOS8veTR0TGYrc3JxLy8rZjcvLys3ejlQLzMvUDcvK2Y3Ly8vTDQrUC91OC9ULzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di94OXZmLyt2Ly8vOXpmNFArK3dNSC8ydDdmLy96Ly8vL2Q0ZUwvZjM5Ly82cXFxditUbEpUL2pZNlAveFlWRmYrN3ZiNy80ZVBrLzJKaVl2K1JrcEwvaUlpSS8zUjFkZjhGQlFYL1pHUmsvNVdYbC85dmIyLy93Y1RFLzZTbHBmK2RucDcvbVpxYS81Q1JrZitQa0pILzFkalovOHZPenY5N2Uzdi9wS1NrLzVHUmtmK2VucDMvcnErdy82YW9xUDkyZG5iL2twT1QvME5DUXY4VEV4UC9pNHVMLzRhR2h2K0VoWVgvZFhWMC8vMy8vLzk1ZW52L0tTZ28vNkdrcFArVWxaWC9xS2lvLzRhSGgvLzErdnIvOWZyNy84N1EwZi9EeGNiLzZlM3UvL24rLy8vdjlQWC84ZlgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzh2ZjQvL0wzOS8rL3dzTC9uSjJkLzUyY25QOXRiVzMveE1mSS8vdi8vLytibkp6L3FLbXAvNktqby85d2NIRC9Dd3NMLzVHVGsvL3I3dS8vam8yTi8wOVBUdjltWjJqL2dJQ0IvMmxwYWYrcHFxdi8yZDNlLzg3UjB2K2VuNS8vcEtXbC83Mit2ditRa1pIL2EydHIvMDVPVHY5TlRVMy9RME5ELzJKaVl2OW1abWIvcnErdi82eXRyZitxcTZ6L25wK2cvOS9qNVAvTjBOSC9sWmVYLzJWa1pQK0VoSVQvVWxKUy8xeGNYUCtrcGFYLzh2WDEvMUpUVS84akl5UC9oSU9ELzYrd3NQK1ZscGIvczdhMi8vLy8vLytmb0tEL2QzZDMvNkNob2YrYm5Kei8wZFRVLy9YNisvL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gyOS8veDl2Zi9xNjJ0LzRhR2h2K1ptWnIvek03Ty82T2twZitrcHFmLy8vLy8vL1gzOS8rMnVMbi9kSFIwL3lzcksvOEFBQUQvZTN0Ny8vVDQrUCtyckszL1RFeE0vMkZpWXYrNnZiMy8vLy8vLzZlb3FQOXRiVzMvakkyTi8zSnhjZitnb0tEL2VIaDQvK3JzN1A5bFpHWC9TVWxKLy8zKy92L1YyTmovSmlZbS82U25wLy9RMHRQL2QzZDMvNldtcHY5cWFtci9sSldWLzJOalkvL1UxdGYvL1A3Ky81MmZvUDlQVDAvL1cxdGIvOG5MelAvbjZ1di9RME5EL3dBQUFQOCtQajcvaDRlSS84dk96Ly8vLy8vLzlQajUvNG1LaXYvQnhNVC91cnU3LzVLU2svK0ZoWVgvdzhYRi8vYjcvUC92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85L3o5Lzl6ZDNmK0VoSVQvdnI2Ky81T1RrLy9kNE9ELy8vLy8vL3I5L3YvZTR1UC9wS2FuLzJWbFpmOHJLeXYvQWdJQy8xeGNYUCtlb0tEL3ZMMisvODNRMGY5dGJtLy82K3ZyLy8vLy8vL1IxZFgvblo2ZS8zdDdlLy9GeU1qL2lZdUwvMmRuWi85Ylcxdi9pSW1KLytuczdQOVJVVkQvbXB5Yi8zWjNkLzl5YzNQLzdPN3UvMTloWWY5b2FHai9ZMlJrLzZxcnEvK3RycTcvZlgxOS82dXNyZi9pNXViLy8vLy8vOERCd2Y5NGVYbi8zTi9nLzY2d3NQK2FuSnovTlRZMi93UUVCUDg2T2pyL2QzbDUvN08xdGYvcTd1Ly8vZjcrLy8vLy8vKzh2YjMvblo2ZS83VzJ0ditKaVluLzlmbjUvL0gyOS8vdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3ejlQLzMvUDMvcXF5cy8xWldWditYbDVmL29xS2kvMTFkWHY5NmZIei9WVlZWL3kwc0xQOHVMaTcvSmlZbS95TWpJLzlvYVduLzNON2YvNTJkbmYrNHVyci91NzIrLzZXbnAvLzErdnIvcjdHeC83VzJ0di96OXZiL2hJU0UvOFhIeVArVmxaWC9zN2EzLy8vLy8vK1hsNWYvMGRQVC82YW5wLytQam83L2dJQ0EvOHpOemYrdnNMSC90YlcwLy8vLy8vK0xqWTMvdXJ1Ny81cWJtLytzcnE3LzdmRHcvNm1xcXYvRnlNai82ZXJyLzUyZm4vL0d5Y24vcmErdi82MnZyLy9SMDlQL1FrTkQveWNuSi84ckt5di9MeTh2L3pFeE1mOW5hR2ovZEhWMS8ybHBhZit5c2JIL2ZYMTkvMXhjWFAvTHpzLy85dnY5LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDA5ZitHaG9iL2hJV0YvM2w1ZWY5RFEwUC9PRGMzLzBwSlNmOTBkWFQvZVhsNS8xRlJVZjlrWkdUL2dZR0IvLzM5L3YrNHVibi9xYXFyLzVpWm1mK09qNC8vd3NYRi82aXFxdi9TMDlQLzBOTFMvMEJBUWY4OVBUMy9vS0doLzZTbXB2L3A2K3Yvc3JPMC81U1VsUCtWbHBiL2pvK1EvKy93OFAvTno5RC9rSkdSLzVLU2t2K2ZvS0gvdkw2Ly8rZnE2LytTazVQL2xwYVgveDhlSHY5c2JXMy80K1hsLzcyK3Z2KzF0cmYvdUx1Ny80R0NnditzcnE3L21wdWIvK0hoNGYvazVlWC9ibTV1LzJKaVl2OVpXVm4vaFlhRy8yWm1aLzlGUlVYL056YzMvMUZSVWYrRGc0UC9lSGgzLzZLam8vLzUvdi8vN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzgvbjYvNit4c2Y5dGJXMy9hR2hvLzRpSWlQK2NuWjMvbnArZi83dTh2UDlxYTJyL3dNTEQvL1AzOS85NGVIai9uSjJkLzZPbHBmK3dzclAvakkyTi84TEZ4ditvcXFyLzRlVGsvNktqcFA5WVdGai9WRlZWLzVDUmtmKzh2cjcvNy9UMS8vRDA5ZitabXB2L2RuZDMvNm1ycS8vYTI5ei8vZi8vLy9QNCtmKzd2YjcvajQrUC8zSnpjLys0dTd2LytmNy8vK0xtNS8rdnNMRC9lbnQ3LzA5UVVQOWlZbUwvd2NMQy85UFYxZitxcTZ6L3ZMKy8vNGlJaWYrMXVMai9vcVNrLzR1TGkvK1dsNWYvK3YzOS81dWNuUDkwZEhUL3hNWEYvNU9Uay8rZW5wNy9lSGg0LzJOalkvOTVlWG4veU12TS8vYjcvUC92OVBULzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzN5OC8vOS8vLy92OExELzB4TVRQK2pvNlAveU1uSi95NHVMdjlyYkd6L3VicTcvN1MxdGYvTnpzNy82dTd2LzdDenMvOUhSMGYvcEtXbC82NnZzUC9ZM056L3FhcXEvK1RsNWYrQmdvTC9mSDE5Ly9EMDlmLy8vLy8vOXZ2OC8vcisvLy94OXZmLzcvWDIvLy8vLy8vMDlQVC9ucUdoLzFGU1V2OTVlbnIvN2ZMei8vcisvdi96OS9uLytmMysvL3IrL3YvdjlQWC85UG41Ly9yKy8vLzMrL3YvLy8vLy85ZloydjlnWUdIL3A2bXEvOXZkM2YreHM3UC8xZGpaLzZPa3BmK1FrWkgvU0VoSS85N2c0UC9aM2Q3LzFkZlgvNk9rcGYvSHljai9Nek16LzJGaFlmL056czcvZzRPQy8xVlZWZi9tNStmLzl2djgvKy96OVAveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85ZnY4LytEajVQOHpNelAvZzRPRC8rM3U3LzlqWkdUL0FBQUEvejA5UGYvRnlNai9vNlNrLzR5TmpmL3o5ZlgvZTN4OC81K2dvUC94OXZmLzVPam8vNk9rcFAvajQrVC9jM1IwLzVHU2tmLy8vLy8vOHZmNC8rM3k4Ly92OWZYLzd2UDAvKzN5OC8vMisvei8yZHpkLzBKQ1EvOEFBQUQvQUFBQS93Z0lDUC9KemMzLzlmcjcvKzd6OVAvdjlmYi83dlAwLy9IMjkvL3Y5UFgvN3ZQMC8vRDA5Zi90OHZQLytmejkvL0wwOVA5cGFtci9tWnFhLzlmWjJ2K3JySzMvOHZYMS8rbnU3Lzk1ZW5yL3JLNnUvK1BsNWY5OGZIei91NzIrLzYydnNQOFhGeGYvQUFBQS82Q2lvdi9qNU9UL1VsSlMvMWhaV2YvNi92Ly83L1QxLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3ejlQLysvLy8vYW10cy94c2JHLy9OenMvLzJkemMveDBjSFA4QUFBRC9kWFoyLzZxcnEvOXZiM0QvcTZ5dC80eU9qdjkzZUhqLy92Ly8vL1AzOS8ranBLVC8zK0hpLzN4OGZQK1VsSlQvLy8vLy8rN3o5UC92OVBYLzhQWDIvL0gyOS8vdTh2VC85ZnY4LyticDZmODNOemYvQUFBQS93UUVCUDhFQkFUL0FBRUIvNjZ1cnYvLy8vLy82L0h5Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gxOXYvdDh2UC85UG42Ly9iNCtQOW9hV24vcGFpby84bk16UCt5dGJYLy8vLy8vK1BsNWY5aFlXSC9xS21wLzVXV2x2OTJkbmIvdUxxNi8waEpTZjhBQUFEL1NFbEovL2Y2Ky8rYm01di9DUWtKLzZxc3JQLzkvLy8vN3ZQei8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOXZ2OC85cmQzdjgwTkRUL1NVbEovK1RsNWYvQnhNWC9EUTBOL3dBQUFQOHdNREQvcHFpby84SEV4UC9GeU1qL2RYVjEvNkdrby8vLy8vLy9zTEd5LzgvUjBmK1ZsNWYvaElXRi8vLy8vLy91OC9ULzhQWDIvL0gyOS8veDl2Zi83Zkx6Ly9QNCtmLzErZm4vVTFSVS93QUFBUDhGQlFYL0FBQUEvd0lDQXY4QUFBRC9TMHhNLyszeDh2LzIrL3ovNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvOVBuNS8vUDM5LzloWW1ML3Y4REEvN1MxdGYvTXpzLy8vLy8vLzN4OWZ2K1NrNVQveHNqSi84TEZ4ditOalk3L0V4TVQvd0FBQVA4ckt5di82dTN1LzhQRHcvOG1KaWIvWVdGaC8vUDMrUC93OXZmLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi81L3YvL3M3VzEvMU5TVXY5UlVWSC81T2JtLzlEUzAvOFhGaGIvQUFBQS8yaHBhZi8vLy8vLytQMzkvOFhIeC8vYzN0Ny9sWmFYLzhyTnpmKzV2THovdkw2Ly8ydHJhLy80K2ZyLzhQWDIvKy8wOWYveDl2Zi84UFgyLyt6eDh2LzUvdjcvOFBUMS8xeGRYZjhBQUFEL0F3TUQvd0FBQVA4QUFBRC9BQUFBL3dFQkFmOEFBQUQvTkRRMC85SFYxZi8yKy96LzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly90OHZQLytmNy8vOW5iMi85aFlXSC8wZFRVLzdHeXN2Ky93TUQvb3FPay85dmQzdi9PME5ILy8vLy8vK25zN2Y4MU5UWC9BQUFBL3pvNk92LzErUG4vdXJ1Ny8wRkJRZjluWjJmLzBOVFUvL2o5L3YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2Y3Ky8rYW01di9nWUdCL3pFeE1mL1IwOVQvL1AvLy8xWldWdjhBQUFEL1dscGEvKy94OGYvbTZPbi9scGFXLzlmWDEvK2dvYUgvazVPVC85amIyLzlvYVduLzF0alkvL245L2YvdTgvVC84ZmIzLy9EMTl2L3g5ZmIvLy8vLy85WFoyZjlCUVVIL0FBQUEvd01EQS84QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93SURBLzhBQUFEL2dZS0MvLzcvLy8vczhmTC84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vczh2UC8vLy8vLzZXbHB2OStnSUQvMWRqWS8zOS9mLy9EeHNiL3dNTEMvNmFvcVAvMStmbi8xdG5hL3ljbkovOEFBQUQvajVHUy8vLy8vLytabVpyL09qbzYvNEdCZ2YrenRyZi8rLy8vLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTgvVC8vUC8vLzMrQWdmK1ptWm4vUTBOQy8zeDlmZi8rLy8vLzVPYm0vMkpqWS84aUlpTC9XMXRjLzQyTmp2L1cyTmovMU5iVy8yZG5aLy9CdzhQL2xKV1YvNU9VbFAvLy8vLy83UEh5Ly9IMjkvL3g5dmYvOGZiMy8rL3k4LytJaVluL0ZCUVUvd0FBQVA4Q0FnTC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0F3TUQvd0FBQVA5a1pHWC8vLy8vLyszejlQL3c5ZmIvNy9UMS8rN3o5UC94OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvK2Z2OC8yNXVidisrdjhEL25aMmUvM3A3ZS8vdjh2TC91YnU3LzRXR2h2OUhSMGYvSmlZbS80ZUlpZi8rLy8vLzUrbnAvMDVPVC85cWFtci9nb0tDLzZTbXAvLy8vLy8vN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3eTgvLy8vLy8vaFllSS8zNStmditWbFpiL2RuWjIvNVdXbC8vYzM5Ly8vdi8vLyt2dzhQL2Y1T1gvNnV6dC83M0F3UDk1ZW5yL21wcWEvOG5NelA5cmJHei81K25wLy9QNCtmL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzcvUHovNENCZ2Y4TEN3ci9BQUFBL3dFQ0F2OEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4Q0FnTC9BQUFBL3k4dkwvL2c0ZUwvOS9yNi8vUDQrUC81L2Y3LysvLy8vL0gzK1AvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rM3k4Ly85Ly8vL3ZjQy8vM2g1ZWYvTXpzLy9ob2FGLzRhSGgvL1UxZGIvNSt2ci8rTG42UC94OXZiLy92Ly8vOFBHeHYrTmpvNy9hbXBxLzZ1c3JQOWNYVjMvdWIyOS8vei8vLy91OC9ULzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvN3ZQMC8vdi8vLysvd2NML1JVVkYvNit3c1ArTGk0ei8xTlhXLzNkNGVQOS9nSUgvb0tHaS81S1RsUDlsWm1mL2xKV1YvOVBXMXYvRng4Zi9sNWlaLzVPVWsvLy8vLy8vN1BIeS8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveDl2Zi8vLy8vLzhuTXpQOHJLeXIvQUFBQS93RUJBZjhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS95Y29LUDlDUWtML1EwTkQvMDlRVVArWG1aai84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvKy8wOWYvMSt2di9jbk56LzdTMnQvL0J3OFAvenMvUS8zMTlmdjlzYlc3L25KMmQvNTZmbi85eGNuTC9rNVNVLzgzUHovK0ppWW4vblo2ZS8wSkJRZi9xN3U3LzgvajUvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzhQWDIvL2Y3L1A5YVdsci9hV2xvLzN0N2UvK2twYVgvdHJlMy8yNXVidi9lNE9EL2twS1QvM3Q4ZlAvLy8vLy92OERBLzZlcHFmOXhjbkwvMk56Yy8vZjgvZi92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3E3L0gvLy8vLy83YTR1ZjhHQlFYL0FBQUEvd0VCQWY4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QkFRSC9BQUFBL3hrWUdQL1ozZDcvOXZ2OC8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi83Zkx6Ly8vLy8vK3BxcXIvZm45Ly82V21wdi9nNHVMLy9QejgvMXhjWFArK3dNRC94Y2ZILzJob2FQL1MxTlQvZ29TRS80eU1qUDlJU0VqL2k0eU0vLy8vLy8vdDh2UC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTgvVC8vUC8vLzdpN3UvOHVMaTcvZUhoNC96TXpNLzg0T0RqL2c0U0UvLzMrL3YrRGhZWC9lSGw1LzdLMHRmK09qNC8vbHBlWS8zVjFkZi9RMHRQLytQMysvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi93OWZiLzdQRHcvek0wTS84QUFBRC9Bd01EL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4Q0FnTC9Bd01EL3dVRkJmOEFBQUQvTGk0dS8rVG82Zi96K1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvK1B6Ky82MnVyLzkzZUhqL25KMmQvNCtRa1ArenM3VC9YVnhjLzd5K3Z2L3A3TzMvWjJkbS95c3JLLzlQVDAvL1ptZG4vem82T3YvajZPai85UG42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3c5ZmIvOS9yNy8xRlJVZjluWjJmL3NiR3gvM2g0ZVA5NmVuci9rWkdSLzNkMmR2K2JuWjMvMnQ3Zi8ranE2di9Kek16L2tKS1MvMVpWVmYvVjJkbi85dnY4LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQYjIvKzd5OC8vOC8vLy9iVzV1L3dBQUFQOENBd1AvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBZjhBQUFEL25aK2YvL3ovLy8vdDh2UC84ZmIzLy9IMjkvL3g5dmYvN3ZQMC8vdi8vLytycnE3L1VsRlIvNmFvcWYvVTF0Yi81K3JxLzg3UjB2K0lpWW4vZjM5Ly81R1JrUDl5YzNML2lJaUkvN0N3c1A5QVFFRC9ob2VJLy8vLy8vL3M4ZkwvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rM3k4Ly8vLy8vL2ZYOS8vd1FFQlArSGg0Zi81T1hsLy9EeTgvL2g1T1QvN2U3di8ranE2di9IeWNuL2NIQncveHNiRy85SlNVbi93Y1BFLzk3aTR2L3orUG4vOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83UEh5Ly83Ly8vK1ltcHIvQUFBQS93RUJBZjhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVA5N2ZYMy8vLy8vLyszeTgvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzhmYjMvOWJhMi8rbnFhbi9MUzR0L3ljbkovK0ppb3IvME5MVC8rN3c4Zi9uNmVyLzQrYm4vL1AyOS8vUzB0TC9YVjFkL3drSUNmKzR1N3ovKy8vLy8rN3o5UC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di92OVBYLzdmTHovL3IvLy8rZW42RC9EUTBOL3dJQ0F2OUpTVW4vcHFlbi85bmEydi9yN2U3LzE5cmEvNXljblA5cWFtci9tcHljLzM5L2YvL3g5ZmIvOS92OC8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3U4L1QvL1AvLy8ySmpZLzhBQUFEL0FnSUQvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4Q0FnTC9BQUFBLzFsYVd2L3Y5UFQvOGZiMy8vRDE5di94OXZmLzhmYjMvL0gyOS8vdTlQWC8vdi8vLzgzT3ovOThmWDMvazVXVi8ybHBhUCt5c3JMLzMrUGovK3Z0N3YvUDBOSC9rSkdSL3kwdExmOEFBQUQvS3lzci84ck16Zi8zL1AzLzd2UDAvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzh2ZjQvL1Q1K3Yvdzl2Zi8rUHI2LzQ2T2ovOWtaR1QvSmlZbS94UVVGUDg1T1RqL1JrWkcvMkZoWWY5c2Eydi9tNXljLytYbzZmL0V4Y2IvaVltSy8rbnU3Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvN2ZMei8vei8vLytvcXFyL0JRVUYvd0FBQVA4QkFRSC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQXdNRC8wVkZSUC9tNnV2LzgvajUvL0QxOXYveDl2Zi84ZmIzLysvMDlmLzIrL3ovejlMVC80V0ZoZi9nNHVMLzF0blovNE9FaGY5cWFtci9WRlZWLzBSRFEvOHRMUzMvRXhNVC96dzhQUDlwYUdqL3NiT3ovLy8vLy8vdTlQWC85ZnI3Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0wzK1AvcDd1Ly81T2pwLy9mNy9QKy93Y0gvZ0lHQi80dUxpLzkrZm4zL01qSXkvem82T3Y5bVptYi9YbDVlLzRtSWlQK29xcXIvd3NURi80dU1qUCsvd2NILytmNy8vKzd6OVAveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi8xK3Z2LzRPUGsveVVsSmY4QUFBRC9BZ0lDL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93SUNBdjhBQUFEL016TXovK3Z2OFAveTkvai84UFgyLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8zL1B6L25wK2YvNTJlbnYrK3Y3Ly9uSjJkLzNoNGVQOWJXMXYvWUdCZy95WW1KdjlEUTBQL2lJaUkvNHFMaS8rRWhJWC8yZHZiLy9QNCtmL2g1ZWIvNy9QMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC8rZi8vLzhUR3gvOXRiR3ovazVXVi80S0NnditBZ0lEL282V2wvNW1abXY5NGVIai9EQXdNLzFwYVd2K1RrNVAvcDZlbi84bkt5djl5YzNQL096czcvK2ZuNS8vMCtmci83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzdmTHovLzMvLy8rTmpvLy9BQUFBL3dJQ0F2OEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVArUWtaTC8vLy8vLyszeTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzdmTHovLzMvLy8rN3ZiNy9MeTh2LzVlWW1QL0h5TWovbnA2ZS80K1BqLzgyTmpiL0dCZ1kvNFdGaGYra3BhWC9rNVdWLzM5L2YvK0VoWVgvajVDUS8zUjFkZi9rNk9uLzlQbjYvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3k5L2ovNi9EeC81NmZuLytEZ29ML2pJMk4vN0swdFArOXdNSC9uNkdoLzRXR2gvODVPVG4vZG5aMy8wUkVSUCtZbDVmLzhmUDAvOTdoNHY5VFUxUC8ydDNkLy9iNy9mL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveDl2Zi84dmIzL3o0K1B2OEFBQUQvQXdNRC93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0lDQXY4QUFBRC9MQ3dyLytQbjUvLzArdnYvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdDh2UC8vLy8vLzZlcXF2OWxabWIvL1AvLy85L2c0UDkyZG5iL1RVMU4vM056Yy84d01ERC9xYXVyLzVLVWxQL016czcvbjZDZy80Mk5qZitDZ1lIL3VMdTcvL1Q1K3YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di96K1BuLytmNy8vK251N3YvcjcvRC8vLy8vLzNaNGQvOStmMy8vZVhsNi80ZUlpUCtHaG9iL1BqNDkvM04wZFAvUjA5VC8vLy8vLzZxcnEvKzZ2YjMvKy8vLy8rN3o5UC94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy9YNy9QL2MzK0QvSUNBZy93QUFBUDhDQWdML0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9Bd01EL3dBQUFQOTVlbnIvLy8vLy8reng4di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmLzUvdjcvbTV5Yi84bk16UC8vLy8vL3RMVzEvMTllWHY5RVEwUC9tSnFhLzNOemMvK0lpWW4vYm05di81eWNuUC8vLy8vLzVlbnEvKy95OC8vNS92Ny84ZmIzLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdjlQWC84L241Ly9MMytQL3U4L1QvMXRuWi82K3hzZi9WMTlmL2c0T0QvNTJmbi85K2dJRC9wYWVuLzZHam8vLzArZnIvNGVYbC81ZVltUC92OWZYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvKy8vLy83N0J3ZjhLQ2dyL0FBQUEvd0VCQWY4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOERBd1AvQUFBQS8waEpTdi95OWZiLzhmYjMvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOS96OS85YmEyditYbUpuLy9QLy8vOWZiMi8raG82UC9rSkdSLzQyT2ovK09qNC8vbkoyZC84N1AwUCt4czdQLzR1Ym4vKy8xOXYveitQbi84dmY0LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMDlmL3U4dlAvN2ZMei8vdi8vLy9SMDlQL29LR2kvNmlxcXYrWGw1Zi8xdGpaLzVTV2x2K2pwYWIvdUxxNy83L0J3Zi8vLy8vL21wdWMvOURUMC8vNC92Ly83L1QxLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC84Ly8vL3U3Mjkvd2NIQi84QUFBRC9BUUVCL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93TURBLzhBQUFEL01EQXcvK3p3OGYveTkvai83L1QxLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC84Ly8vL3JLMnUvN1c0dVAvLy8vLy9wYWFuLzlMVDAvOTRlWG4vdjhEQS83dTh2UCtibTV6L3BLYW0vNk9rcFAvbDV1Yi85L3Y4Lyt6eDgvL3U4L1AvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3U4L1QvOC9qNS8vWDcvUC8rLy8vL3hNZkkvMzE5ZmYvcDdlMy83Tzd2LzRLRGcvOWRYVjMvaUltSi80S0RnLy9jM04zL25KNmYvLy8vLy8reHM3UC9zYkt6Ly8zLy8vL3U4L1QvOGZiMy8vSDI5Ly94OXZmLzd2UDAvL3ovLy8rM3Vici9CUVVGL3dBQUFQOEJBUUgvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVA5NmUzei8vdi8vLyszeTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2Y4L2YrU2xKVC8xOXJiLytydTcvK2JuWjMvNHVibS8ybHBhZitQajQvL1ZWVlcvNlNscHYvOC8vLy95Y3ZNLzNkM2QvL2w2dXYvK3YvLy8vYjcvUC93OWZiLzd2UDAvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOFBYMi8vei8vLy9xN3UvLzB0YlgvOTdpNC84K1BqLy9ucUNnLy8vLy8vOUpTVXIvUlVWRi85WFkyZityckt6L1kyTmovOTNnNFArVGxKVC84L2Y0Lzc3QndmK1JrcEwvL1AvLy8rN3o5UC94OXZmLzhmYjMvL0gyOS8vdTgvVC8rdi8vLzhQR3h2OE5EUXovQUFBQS93RUJBZjhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0VCQWY4QUFBRC9FQkFRLzh2T3ovLzMvUDMvN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveStQai82Ky92LzM5L2dQL3M4ZkgveWN6TC82YW9xUC9FeDhqL1kyTmovOGZJeWYvQndzTC9JQjhmLzRhSWlQLy8vLy8vWDE1ZS8yNXZiLy9tNnV2LzBkWFcvL1gzK1AvNCsvei83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi8zL1A3L3I3R3gvMjFzYlAra3BhWC9nWUtDL3lZbUp2KzV1cnIvMytEaC94Z1lHUDkrZm43Ly8vLy8vLzMvLy85MGRYWC9xcXlzLzVPVWxmLzArUG4vdUxxNy8ydHNiUC83Ly8vLzd2UDAvL0QxOXYveDl2Zi84ZmIzLysvMDlmLzArZnIvNXVucS95c3FLdjhBQUFEL0FnSUMvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BZ0lDL3dBQUFQOHhNVEgvNXVucS8vdi8vLy93OWZiLzhmWDIvL0gyOS8veDl2Zi83Zkx6Ly8zLy8vKzl3TUgvT1RrNS8vUDQrUC9IeXNyL25xQ2cvNHVOamYrYm5Kei8vLy8vLy8vLy8vODFOVGIvUFQ0Ky8vZjcvUCtMaTR2L0tDY24vNktqby8rUmtwTC9ibTF0LzgzUTBmLzMvUDMvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzkvejkvOWJhMi85bloyZi9tNXljLzR1TWpQKy93Y0wvWUdGaC81aVptZi93OHZQL1oyaG8vdzhPRHYrc3I2Ly8vUC8vLzdHeHN2ODFORFQvbnFDZy8vLy8vLytWbHBYL0p5Y28vK3ZzN1AveitQbi83L1QxLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC85Ly8vL2FtdHMvd0FBQVA4REJBVC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93TURBLzh3TUREL3RiZTQvL2I3L1AvdjlQWC84ZmIzLy9IMTl2L3U5UFgvK2Y3Ky8zaDVlZjhiR3h2LzA5YlcvL0wyOXY5MmQzZi9QejgvLzkzaDRmL3c5UFgvZlgxKy93SUNBditpcEtULzYrenMvMjF0YmYrRWhZWC90TGEyLzVPVGsvK0tpNHYvZFhWMi8vSDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveitQbi81dXZzLytuczdQLy8vLy8vMmQzZC80R0JnZitqcEtUL2FtcHEvOGZJeWYvNi8vLy9mb0NBL3kwdEx2OVdWbGIvZEhWMS8zbDVlZi9PenMvLzgvYjMvMHBMVFA4bkp5Yi9tWm1aLy96Ly8vL3Q4L1QvOGZiMy8vSDI5Ly94OXZmLzd2UDAvL2o5L3YvTzB0TC9GeGNYL3dBQUFQOEJBUUgvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVA4eE1USC82Ky93Ly9MMytQL3c5ZmIvN2ZMei8vMy8vLyswdExUL2xaYVcvMUJRVVA5eWRIVC8vLy8vLzdDd3NQOXdjSEQvYzNOei8wZEhSLzgwTkRUL3FhdXIvLy8vLy8raXBLVC9kbloyLzU2Zm4vK05qWTMvNy9MeS8vNy8vLy9pNXVmLzdQSHkvL0wzK1AveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3orUG4vOC9qNS8reng4di85Ly8vLzFOYlcvNEdEZy8rMXQ3Zi9oSVNFLzZxcnEvL202T24vMmR6ZC83YTN1UCt3c2JML3pjL1AvL1Q0K1ArSGlJai9KaVltLzVhWGwvK1BrSkQvdkwyOS8vNy8vLy9zOHZQLzhmYjMvL0gyOS8veDl2Zi83Zkx6Ly83Ly8vK2NuWjMvQVFFQi93SUNBdjhCQVFIL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FRRUIvd0lDQXY4QkFRSC9BQUFBLzJ0cmEvLzErdnYvNy9UMS8rN3o5UC8yKy96LzRPSGgvMzUvZnYvUDB0TC9XbHBhL3pFeE1mKzF1TGovOGZUMC83Ky93UCt0cnEvL3ZzREEvK1BuNS8vYjNkNy9sWldWLzVDUmtmK3VzTEQvaElXRi8vSDE5Zi8xK3Z2LzdmTHovL1Q1K3YveDl2Zi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDE5di93OWZiLzhmYjMvKzN5OC8vOC8vLy93OFhGLzRhSGgvL04wTkgvdTcyOS82NnVyLyt6dGJYL3ljdkwvOC9SMHYvUjFOVC9oWWFHLzNCd2NQOW1abWIvZEhSMC85UFcxdjk3ZTN2LzNlRGcvL24vLy8vdDh2UC84ZmIzLy9IMjkvL3c5ZmIvN3ZQMS8vci8vLzl3Y1hIL0FBQUEvd01EQS84REF3UC9BUUVCL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhDQWdML0FnSUMvd01EQS84QkFRSC9BUUVCL3hVVkZmK0Fnb0wvOVBuNi8vSDI5Ly92OC9ULzh2ZjQvL2o4L1ArQmdvTC92YisvLzdDeXN2OTFkbmIvYlcxdC8ybHBhZitlb0tELzF0blovOHpQei8vSHljbi9zYkt6LzYydXJ2L0V4OGYvdkw2Ly80S0RnLy9pNXVmLzl2ejkvKzd6OVAveDl2Zi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLyszeTgvLzgvLy8vemREUS80NlFrUCtxckszL3RybTYvN2E1dXYrZm9LSC9sNW1aLzU2Zm4vOXJiR3ovd2NQRC8zOS9mLys3dmIzL3FLbXEvOFRHeC85N2ZIMy82ZXpzLy9qNy9QL3Q4L1QvOGZiMy8vSDI5Ly92OVBYLzhmYjMvL0gxOXY5cmJHei9BZ0lDL3dBQUFQOEJBUUgvQWdJQy93TURBLzhEQXdQL0FnSUMvd0FBQVA4QkFRSC9BQUFBL3hBUEQvOVVWVlgvMU5YVi8vajgvZi94OS9qLzd2UDAvL0gyOS8vOC92Ny9qSXlOLzZ5dHJ2K3hzN1QveTh2TC83YTN0LytUazVQL3NyUzAvM0J2Yi8rbHA2Yi9sSmFXLzZXb3FQKzN1N3YvdHJpNS82Q2hvZitVbFpYLzQrYm0vL2Y4L1AvdTgvVC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC8zKy96LzkvdjcvNnl0cmY5b2FHai9TRWhJLzJ0c2JQL0F3OFAveXMzTi80V0dodi9OejlEL2g0aUkvK25zN1AvT3o4Ly9xYXVyLzhMRXhmOTdmSHovNU9qcC8vei8vLy90OHZQLzhQWDIvL0gyOS8vdjlQWC84dmY0Ly9qNysvK3ZzckwvUlVaRy93NE9EdjhBQUFEL0FBQUEvd0VCQWY4QUFBRC9JaUlpLzNaM2QvOWtaV1gvdUxxNi8vZjgvZi8yKy96LzcvVDEvK3p4OHYvMit2ci8rZno4LzR5T2p2K2pwYVgvdkw2Ky82cXRyZi8vLy8vL3Q3bTUvNldtcHYrNnZiMy9rNU9ULzh6TnpmKzB0YlgvVEV4TS8xaFlXUDlzYkd6L3pkRFEvL3IrL3YvMCtmci83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvK3Z4OHYvOC8vLy91N3U3LzVPVGsvK1ptWnIvM2Q3ZS81T1ZsZitucWFyL1VsSlMvNU9WbGYvRng4Zi93OFhHLytudDd2KzN1Ym4vcTZ5cy84UEd4djk2ZTN2L3pNL1AvLy8vLy8veDl2Zi83Zkx6Ly9EMTl2L3c5UFgvNy9UMS8vei8vLy8wK1BqL3lNdkwvNVNXbHY5MWRuYi9iMjl3LzVXWGwvL2M0T0QvL2YvLy8vcisvdi80L2YzLzhQWDIvK3p4OHYvdTgvVC8vdi8vLytYbzZQK0NnNFAvcXF5cy83eTl2ditucUtqLzdmTHovK0RpNC8rMnQ3ai8wZFBULzJablovOXhjbkwvb3FXbC82ZW9xUC9TMU5UL2pvNk8vNWFWbGYvWTNOei85dno4Lys3eTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy9UNSsvL2M0T0gvajQrUC80T0RnLzlsWm1iL3k4M04vLy8vLy8vS3k4ei9SMGhJLzVLVGsvOVBUazcvbTV5Yy8vLy8vLys1dkx6L29LR2gvOHZPenYrSGlJai9vYU9qLysvejgvLzkvLy8vOHZmNC8rN3o5UC91OC9ULzdQSHkvL0QxOXYvNi92Ny8vLy8vLy8vLy8vLysvLy8vL3YvLy8vWDcvUC90OHZQLzdQSHkvK3p4OHYvdzlmYi8rdjcvLy9qOC9QKzV1N3YvZ0lDQS83bTh2UCt2c2JIL3FLcXEvL1g2K3YvOS8vLy9hMnhzLzJscWF2K0Jnb0wvVTFOVC8vajUrZi8vLy8vL29LR2kvMmxwYWYrSGhvYi9wS1NrLyt6eDh2L3g5dmYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBUMS8vYjcvUC9nNU9UL3U3Ni8vNk9scHYrZW42RC94c2pJLzRPRGcvL0Z4OGYvZkh4OC93QUFBUDgrUGo3L3lzN08vLy8vLy8vSnk4ei9tcHViLzhYSXlmK29xcXYvaG9hSC83TzF0di9yOFBILy9mLy8vL3IrLy8vMCtmci83L1QxLyt6dzhmL3E3L0QvNnUvdy8rcnY4UC9xNy9ELzdmTHovL0wzK1AvNC9mNy8vZi8vLy9QMzkvL0d5TWovalkyTi81YVhtUC9EeE1YL242Q2cvN2k3dS8vNS9mMy8vdi8vLzZPbHBmOGFHeHYvQUFBQS83UzF0ZitscGFYL2xwbVovOFRHeHYrVWxwWC9yYkN3LzhMRXhmL3I4UEQvOVBuNi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL1A1K3YvNi8vLy8vZi8vLzh2TnovOTBkSFQvRkJRVC80Q0FnZithbTV2L016SXkveW9xS3Y5RVJFVC9zYk8wLy8vLy8vL2s1K2ovb0tLaS82dXRyZi9DdzhUL29hS2kvNDJPanYranBhWC95TXZMLytUbzZQLzErZnIvK3YvLy8vei8vLy85Ly8vLy9QLy8vL3IvLy8vMisvMy82dTd1LzlEVDAvK3VzTEQvam8rUC81V1hsLys0dWJyL3NiS3kvNTJmbi8vVDE5ai8vLy8vLy9mNSt2K0xqSTMvT1RnNC95Y25KLzlCUVVIL3RyaTUvMHRMUy84cEtDai9pNHVMLytEbDVmLysvLy8vK1AzKy8vTDMrUC93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLyszeTh2LzArZnIvM2VIaS82aXBxdjl2Y1hIL1JFUkUvNnVzclArTWk0di9Pams1LzJWbFpmODBORFQvaDRtSi8vZjQrUC8vLy8vL3lNek4vNTJmbi8rdXNMRC92Y0RBLzY2dnNQK1ptcHIvajVDUS81T1VsUCtkbjUvL282V2wvNm1xcXYra3BhWC9uNkdpLzVpYW12K1JrcEwvbEpXVi82YW5xUCszdWJuL3NMS3kvNkdpb3YrOHY4RC84L2IzLy8vLy8vL2Y0K1AvWW1KaS96czdPLzloWVdIL09qbzYvNit2c1ArUGtKRC9PVGs2LzQ2T2ovK29xYW4vNy9QMC8rN3o5UC91OC9ULzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYL25xQ2cvNnl2ci8vWTI5ei92cjYrLzJ0cmEvOXNiR3ovbzZPai81NmZuLzg0T0RmL1IwZEgvOEREeFAvOS92Ny8rLzM5LzlEVTFmK3dzYkgvcks2dS83SzB0UCszdWJuL3RMZTMvN08xdGYrc3JhNy9yYTZ1LzZ1dHJmK3hzckwvdGJlMy83ZTZ1dit4czdQL3FxeXMvNjJ2ci8vSHlzdi84dlgxLy8vLy8vL3U4dkwvbnArZy96SXhNdjlRVVZIL3E2dXMvNU9Uay85alkyVC9nSUNBLzlMVDAvL08wZEgvbXB1Yi83YTR1UC8yKy96LzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2I2Ky8vbTZ1di9hMnRzLzBoSVNQOTJkbmIvMmR6Yy83L0F3UDlwYVduLzE5blovOGJJeWY5aFlXSC9MeTh2LzNKemMvKzV1N3ovOHZmNC8vWDYrLy9qNWViLzJkcmEvOHJOemYrenRiWC9zN1cxLzdTMXRmKzh2THovdUxtNS83R3lzdit6dGJYL3Y4SEIvOW5jM1AvbjZPai84ZlgyLy9qOS92L2k1dWYvbzZXbC8xMWVYdjh0TFMzL2hJV0YvOXZjM2YrN3ZMei9aR1ZsLytUbzZQKzh2Ny8vWldWbC8wTkRRLytOam83LytmNy8vL0QxOXYveDlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85LzMrLzlUWDJQOTdlbnIvbEpXVi8vRHk4di82Ly8vLzdQSHgvMmhvYVArT2o1RC91cnU4LytyczdmK3dzYkgvZFhaMi8yVmtaUDlaV1ZuL2twS1MvMzE5ZmYrQWdZTC96dEhSLy8vLy8vLysvdjcvLy8vLy8rdnQ3Zi95OHZMLy8vLy8vLy8vLy8vOS8vLy9zTE8wLzNSMGRQK0FnSUQvaTR1TC8wMU5UZjkwZEhUL2NuTnovOVRXMS8vYTNOei90YmUzLzNSMGRQK0tpNHYvKy8vLy8vMy8vLy9aMjl2L2c0T0QvNDJPanYvdjgvVC84ZmIzLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3g5L2ovN2ZMei82dXRyZitHaFlYL282U2svK3Z3OGYveitmci81K3ZzLzRhSGgvOTRlSGovaG9lSS85N2YzLytmb0tEL2pvK1AvOXZkM2YrL3Y3Ly9lbnA2L3lBZ0lQOFBFQkQvWGw5Zi8zWjNkLzk2ZW52L2hZYUgvMytCZ2Y5NGVYbi9kSFYxLzBwTFMvOENBZ0wvT2prNS80Mk5qZi9PejgvL3o4L1EvMzE5ZnYvQXdjSC94OGpKLzMxOWZ2OXpjM1Avb0tHaC8vWDUrZi95K1BuLzN1TGovNUNSa2YrTWk0di93Y1BFLy9YNisvL3c5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di95K1BuLzh2ajQvOXpnNGYvaTV1Zi84UFgyLy9iNy9QL1UxOWYvSmljbi82cXFxdit0cnE3L1VWRlIvNmlvcVArbHBxYi8zOS9nLzA1T1R2OFpHUm4vQndjSC93QUFBUDhDQWdML0FBQUEveWdvS1AvajV1Zi9zN1cxL3drSkNmOENBZ0wvQVFFQi93RUJBZjhNREF6L0lDQWcvM1YwZFAvbzZlci9qbytQLzZHZ29QOURSRVQvNHVUay8ycHFhdjlQVUZELzhmWDIvL0gyOS8vdjlQWC8zZUhoLytMbTUvLzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdzlmYi85ZnI3Ly9UNSt2L3U4L1QvKy8vLy83aTd1LzhnSHgvL0ppWW4vem83Ty85UFQwLy9uWjZlLzZhbnB2OVRVMVAvQUFBQS93SUNBdjhFQkFUL0dob2EveDhmSC84eU1qTC9pSXFLLy8vLy8vL3g4dlAvV0ZsWi95MHRMZjhhR2hyL0ZCUVUvd0FBQVA4QkFRSC9BQUFBLzRhSGgvK2JtNXYvbTV5Yy96WTNOLzlDUTBQL0dCZ1kvMEpDUXYvZzVPVC85ZnI3LysvMDlmLzErdnovOVBuNi8rLzA5Zi93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOFBYMi8vRDE5di94OS9qLzdmSHkvNDJOamY5WVYxZi9aV1ZsLzUrZ29QOWxabVgveU1ySy96SXlNdjhBQUFEL0FBQUEvekl5TXY4c0xDei9HeHNiLzRPRGcvOTZmSHovL3YvLy85emUzdjl1YjIvL2NYRngvd1VGQmY5QlFVSC9HeHNiL3dBQUFQOEFBQUQvYTJ4cy83SzB0UDlzYkd6L21wdWIvMWhYVi85ZFhWMy9xcXVzLy9iNy9QL3Y5UFgvOGZiMy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMCtmci83Zkh5LzhURnh2K3p0YmIvdGJlNC83bTd2UCtnb2FEL1NFaEkvd29LQ3Y4QUFBRC9jbkp5LzExZFhmOEFBQUQvcGFXbC81MmRuZitpbzZML2pvK1AvN3k4dlA5eGNYSC9BQUFBLzQ2T2p2ODVPVG4vQUFBQS93d01EUDlyYkd6L3BLYW0vN3kvdi8reHM3UC91YnU3LzgzUTBQLzArZnIvOGZiMy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3k5L2ovK1AzKy8vVDYrLy81L3Y3LysvLy8vOVhZMmY5c2JXMy9HeG9hL3prNU9mOVFUMC8vdTd5OC95RWhJZjhqSXlQLzRlUGovNG1MaXYrenRiWC92TDIrL3dBQUFQOVhXRmovc3JLeS96YzNOLzg1T1RuL0hoNGUvNU9VbFAvbDZlci8vZi8vLy9mOC9QLzErdnYvOS8zKy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di91OC9ULzcvVDEvKzd6OVAvdTgvVC85dnY4Ly9iNysvK1ZscGYvS2lvcS8xRlJVZjlsWldYL2lZbUsvd29LQ3Y4N1BEei8rUG41LzlEVDAvOFFFQkQvS3lzci80K1FrUDlaV1ZuL1JVVkYvelUxTmYrK3dzTC8vUC8vLy9MNCtQL3U4dlAvNy9UMS8rLzA5Zi91OC9ULzhmWDMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvN2ZMei8vNy8vLzkvZjMvL05qWTIvMDFOVGY4L1B6Ly9iMjl2L3dBQUFQOTVlWHIvVEV4TS94b2FHdjlzYkd6L05UUTAvMDlPVHY4ek16UC9yYTJ0Ly8vLy8vL3E3L0QvOHZmNC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZlgvOXZ2OC84dk56ditRa0pELzE5cmEvNy9Cd2YrUWtaSC9VbEpTLzJWbFpmOVBUMC8vWW1KaS93QUFBUDhTRWhML2MzTnovMEJBUVA5eWNuTC9Sa2RILzYreHNmL0h5TW4veXN6TS81R1Nrdi9pNWViLzlQbjYvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC81Ly8vL3VyeTkvejQrUHY5c2JHei9xYXFxLzNWMmR2OTFkWFgvaG9hRy95RWdJUCtPam83L0lDQWcvMUJRVVA5dGJXMy9LeXNyLzV5Y25QOWZZR0Qvam8rUS81eWRuZjlaV2xuL1ZGUlUvK0RqNVAvMSt2di83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gyOS8veTkvZi9wS2FtLzRTRWhQK1ltWm4vUVVGQy8xWlZWZjlIUmtiL2taU1UvN0t6dFA5VlZWWC9iR3hzLzcyL3dQOXljM1AvVFV4TS8wcEpTZjlVVmxiL29LQ2gvMzkvZi8vQXc4UC85L3orLysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9IMjkvLzcvLy8vOC9mMy8vWDUrZi9jMytEL3JyR3cvOG5NemYvLy8vLy96Yy9RLzFaVlZmOXhjWEgvN2ZEdy8vVDQrZis4dnI3L3RiaTQvK3Z2Ny8vejkvZi85dnY4Ly9uOS9mL3c5ZmIvOGZiMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rN3o5UC93OWZiLzhQWDIvL2I2Ky8vOS8vLy8rUHo4LysvMTl2LzArUG4vT0RnNC8zVjNkLy8vLy8vLzdmTDAvL3YvLy8vOC8vLy84dmo1Ly9EMTl2L3Y5UFgvN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLyszeTgvL3U4L1QvN2ZMei8vLy8vLzl3Y1hIL3BLU2svLy8vLy8vczhmUC83dlAwLys3eTlQL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzlQbjYvOVhaMmYvaDVlYi85UG42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi85dnY4Ly9QNSt2L3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBQUFBRUFBQUFDQUFBQUFBUUFnQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEgyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi8zL1B6LzlmcjcvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOHZmNC8vTDMrUC84Ly8vL3dNUEQvOHpPenYvOC8vLy84dmY0Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOGZiMy8rL3o5UCtscHFmL3JhK3YvN2k2dXYrenRiWC9ySzZ2LzZ1dHJmLzArZnIvOFBYMi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOS96OS8rcnY4UCtYbUpqL2ZIMTkvM0J3Y2YraXBLVC9tSm1aLzI5d2NQK0JnWUgvbjZDZy8vUDQrZi8wK2ZyLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvOWZyNy8rYnE2Lyt5czdQL25wK2cvKzd5OC8rUWtaSC9RRUJBLzBkSFIvK2VvS0QvN2ZIeS81aVltZis2dkx6LzZ1N3YvL1Q1K3YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvL1AvLy85bmMzUCtXbHBiL29LR2gvMnh0YmYvajV1Zi92YisvLzFKU1V2OVlXRmovMU5mWS84L1QxUDl0YlczL3BLV2wvNWFYbC8vbTZ1ci8rZjcvLysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3c5ZmIvOXZ2Ny8rRGs1UCtYbUpuL3NiT3ovN3E5dmYvUzFkWC8rUHI3LzdHeXMvOXpjM1AvYzNOei84VEd4di93OHZMLzBOUFUvN2U1dXYrdHJxNy9tWnViLytqczdQLzErZnIvOFBYMi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84UFgyLy9IMjkvLzIrdnIvOS96OC84REV4UDhPRGc3L0JBUUUvNW1ibS8rdXI2Ly9xcTJ0LzVTV2x2ODlQVDMvaTQyTi8zcDdlLzlGUlVYL25KNmUvNm1yclArenRMVC9oWWFIL3dBQUFQOGhJU0gvMWRqWi8vVDUrdi8zKy96LzhQWDIvL0QxOXYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi85ZnY4Ly9mOC9QLzErdnYva3BPVS83SzB0UCt0cnE3L1EwTkQvM1IwZFA4eE1USC9qNCtRLzF0YlcvOVlXRmovYW10ci8rWHA2di9VMk5qL1lHQmcvMVZWVmY5bFptYi9ob2VIL3pBd01QOXljbkwvUzB0TC83cTh2UCtucUtqL25xQ2cvL3YvLy8vMisvdi85ZnI4Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84dmY0LzhyTnp2K3NyYTMvM09EaC82cXJxLzk4Zkh6L2EyeHMvN3k5dmY5eGNYSC9ZbUppLzVpYW0vK3VzTEgvdExXMS80eU5qZitRa3BML2lveU0vNVdWbGYreXNyUC9yN0d5LzQ2UGtQOWhZV0gvZEhSMC83L0F3UDlmWDEvL2k0eU0vNit3c1AvYTNOMy9xcXVyLzlIVjFmLzArZnIvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85LzMrLzhEQ3d2K1ptWm4vd01MQy85WFoyditycnE3L0pDUWsvMkpqWS8vRXhzZi9nNFNFLytUbzZmK3JyYTMvajVDUS80YUdoditlbjUvL2ZuOS8vNEdDZ3YranBhWC9nNE9FLzVPVWxQKzF0N2YvM2VIaS8zNS9mLy9Lek0zL1NVbEsvekl5TXYrNnZiNy8wdFhXLzcyK3YvK1ZsWlgvek0vUC8vZjkvdi93OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlQK05qbzcvY25KeS8zVjJkdjlwYVduL1BEczcvNENBZ1ArOXZyNy9uSjJlLzg3UjBmL0J3OFAvZFhWMS82V25wLys3dmI3L3BLYW0vN3krdi8rc3JxNy9uNkNnLzhIRHhQK1ptcHYvZVhwNi84M1B6Ly9HeWNuL25aNmUvOERDd3Y5dmNIRC9RRUJBLzNCd2NmOTFkbmIvY25KeS81bWFtdi8xK3Z2LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzQrL3ovalk2Ty80R0JnZjl6YzNQL282U2wvOURTMHYrYW1wci9wcWVvLzdtN3UvK3VyNi8vbnArZi82dXVyLy9pNStmLzYrL3cvNXlkbmYrb3Fxdi80K2pvLzdhNXV2L282K3ovM2VEaC82YXBxZitjbnA3L3M3UzAvN2k2dS8rZW41Ly9wYWVuLzgvUjB2K2NuWjMvY25KeS8zNStmditjblozLy9QLy8vKzcwOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmLzcvLy8vdXI2Ly8zMTlmZitNalkzL0lTSWkvNlNscGYraG9xTC9ySyt2Lzk3aDR2K3VyNi8vcTZ5cy8vYjYrdi81L1AzLy8vLy8vNzdBd2Y4V0ZoZi9BZ0lDLzlmWTJQLy8vLy8vOGZiMy8vVDUrdi8vLy8vLzd2UHovNkdqby8rMnQ3Zi8zT0RoLzZhb3FmK2pwS1QvbTV5ZC94c2JHLytobzZQL2NIQncvOUhWMXYvMy9mNy84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvLy8vLy8zWjNkLytjblozL2RIWjIveG9hR3YvZDMrRC9xNjJ0LzhIRXhQKyt3TUgvbzZXbC8vZjcrLy93OWZiLy8vLy8vOGZLeXY4VUZCVC9BQUFBL3dBQUFQOWJYRnovNnUvdy8rM3k4Ly90OHZQLzdmTHovL1Q1K3YvdjlQVC9tWnViLzhiSXlQKzR1cnIvdHJpNC85RFQxUDhFQkFUL2xwaVkvNE9EZy8rUGtaTC8vLy8vLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC8vRDA5ZitFaElUL2c0U0UvOExGeGY5SVNFai93TUxDLzhMRXhQK2ZvS0QvblorZi8rWHA2di8wK2ZyLzgvajQvNUdUbFA4TkRRMy9BQUFBL3dNREEvOENBZ0wvQUFBQS83YTR1UC8vLy8vLytmdjcvL0gzK1AvdjlQWC8rUDMrLzluYzNmK1ptcHIvb3FPai84ck16Zit3czdQL1NrdEwvODdSMHY5eGNYTC9rNVdWLy9iNy9QL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8xK3Z2L2pZNk8vNFNFaFArOXY3Ly92Y0RBLzZXbnFQK3hzN1AvbnArZy84REN3di81L3YvLzdmTHovL1g2Ky8rS2pJei9CUVVGL3dBQkFmOEFBQUQvQWdJQy93QUFBUDlOVFU3L201MmQvNit5c3YvdzlmYi84ZmIzLys3ejlQLzUvZjcvczdXMS82R2lvdit3c2JML3BxaW8vOFBGeGYrM3Vibi9lM3Q3LzVxY25mLzYvLy8vNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLy9QLy8vN2k3dS85b2FHai9jSEJ3LzVhV2wvK0xqSXoveHNqSS81ZVltUC9UMTlqLzl2ejkvL0QxOXYvdTgvVC8vLy8vLzNaM2QvOEFBQUQvQXdRRS93QUFBUDhBQUFEL0FRRUIvd0FBQVA4WUdCai80T1RsLy9UNSt2L3Y4L1QvK1A3Ly84UEd4LytlbjUvL3ZzREEvNDZQai8rUGtKRC9jM1IwLzJabVp2L0x6OC8vK2Y3Ly8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveDlmYi9WRlJVLzRTRWhmL0d4OGoveXN6TS82NndzUDlwYVduL3VMdTcvL2Y4L2YvdzlmYi83dlAwLy9yLy8vKzl2Ny8vQUFBQS93RUJBZjhBQUFEL0FBQUEvd01EQS84RUJBVC9BUUVCLzhiSHgvLzkvLy8vN2ZMei8vYjcvUCttcUtuL2EyeHMvN2EzdVAvS3pNei94Y2JILzNKeWN2OW5aMmovKy83Ly8rN3o5UC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMisvdi8vLy8vLzJWbVp2OGxKU1gvajVDUS82cXJxLytnb3FML2xaYVcvK250N3YveitQbi84ZmIzLys3ejlQLy8vLy8vZ29TRS93QUFBUDhDQWdML0FBQUEvd0FBQVA4QUFBRC9BZ0lDL3dBQUFQOWdZV0wvOHZmNC8vRDE5di8xKy96LzNOL2YvNUdTa3YraG82UC9xYXFyLzRPRGhQOGRIUjMvZ29PRC8vLy8vLy96K1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMCtmci94c25KLzZDaG92K1dscGYvWjJkbi95d3JLLytHaG9iL3BxZW8vNk9rcFAvNC9mNy83L1QxLysvMDlmLzQvZjcvME5QVS93d01EUDhBQUFEL0FRRUIvd0FBQVA4QUFBRC9BQUFBL3dJQ0F2OEFBQUQvTURFeC8vSDE5di94OXZmLzhQWDIvL1AzK1ArWm1wci9xNnVyLzNkM2QvOGxKU1gvZFhaMi81T1VsUCtscHFiL3p0TFQvL1g3L1AvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi85ZnI3LzlIVjF2KzF0N2YvdXIyKy80bUtpLzlsWm1iL2UzdDcvOUxWMWYrcnJhNy85L3o5Ly9EMTl2L3Q4dlAvLy8vLy80ZUppZjhBQUFEL0JBUUUvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOENBZ0wvQUFBQS81NmZuLy8vLy8vLzdmTHovL0gyOS8vdzlQWC9wNm1wLzlMVTFmOXVibTcvYVdwcS81Q1JrZis5d01EL3M3VzIvOXZmNFAvMCt2di84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzIrdnYvLy8vLy85emUzdit4czdQL29hS2kvNHlOanYvUTB0UC96TTNPLzk3aTQvLzErdnYvN2ZMei8vLy8vLzltWjJmL0FBQUEvd01EQS84QUFBRC9BQUFBL3dBQUFQOEFBQUQvQXdNRC93QUFBUCtUbFpiLy8vLy8vKzN5OC8vMy9QMy8xTmpaLzlIVDAvL0Z4c2IvaUltSi82YW5xUCt3c3JMLzV1Zm4vLy8vLy8vMStQbi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3orUG4vN2ZIeS85WFoyditnb3FQL3NiT3ovNDJQai8rZW41Ly91N3k5LzhqS3l2L1AwZEwvOS8zKy8reng4di8vLy8vL1oyaG8vd0FBQVA4REF3UC9BQUFBL3dBQUFQOEFBQUQvQVFFQi93QUFBUDhIQmdiL3pkSFIvL3IvLy8vdDh2UC8rUHo5LzhYR3gvL0t6czcvdExhMi82Q2hvditNalk3L3RyaTQvNTZnb2YvZTR1UC83Zkx6Ly9QNCtmL3g5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMTl2L3orUG4vNk8zdC81dWNuZitHaG9iL2k0dU0vNHlOamYrQ2hJVC91NzIrLzQyT2ovL0F3Y0gvbUpxYi8vLy8vLy9xNy9ELy8vLy8vNW1iblA4QUFBRC9CQVFFL3dBQUFQOEFBQUQvQUFBQS93RUJBZjhBQUFEL0R3OFAvNnF0cmYvMCtmci83L1AwLy9iNy9QOTJkM2YveTh6Ti8zMStmdi9MenM3L2EyeHQvNXllbi85L2dJRC9qWTZPLzZDaW92L3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC8rdnY4UC9zOGZML3p0SFMvNHVMaS8rL3djSC9tNXlkLzQrUGtQL0Z4OGYvZTN4OC8ycHFhdi90OGZILzgvajUvL0QxOXYvdDhmTC9ORFUxL3dBQUFQOEZCUVgvQXdNRC93TURBLzhEQXdQL0F3TUQvd0FBQVA4d01ERC83Zkh5Ly9uKy8vL08wZEwvWjJoby81Q1Nrdis5dnIvL2k0eU4vNlNtcHYrNHVyci9qSTJOLzluYzNmL3E3L0QvN1BIeS8vTDMrUC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly95OS9qLzgvajUvL2Y4L2YvSXk4di9xYXFxLzdlNXV2KzV1N3ovcUtxcS8zNStmdittcDZmL3JhK3YvKzd6OVAveitQbi85L3o5LzlIVDAvOGVIaDcvQUFBQS93RUJBZjhBQUFEL0FBQUEvd0lDQXY5UlVsTC8wOWZZLy8vLy8vL1UxOWovcDZpby82MnZyLzkvZjMvL3I3Q3cvN2k3dS8rM3Vibi9wcWlvLzlEVTFmLzQvZjcvOHZmNC8vTDMrUC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC8rdi8vLzgvUzAvOXdjSEQvbzZXbC81NmdvUCtpcEtULzNOL2YvN08xdGYrbnFhbi82ZTN0Ly9iOC9mLzYvZjcvNGVUbC80Q0NndjlCUWtML1FrTkQvNUdUbFAvQXhNWC8rdno4Ly8zLy8vL1IxZGIvbXB1Yi84dk96di9mNHVML201eWMvNlducC8rWW1abi9kbloyLzk3aTQvLzQvZjcvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4dlAvcjdHeC82MnZyLys1dTd2L2MzUjAvMVpYVi8vaDVlWC92Yi9BLzUyZm4vL0t6YzMvNnUvdy8vbjkvZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vZi8vLytMbTUvKzB0cmIvbVpxYS85YmEydi9ZM04zL1NVbEovNENBZ1ArL3djSC9wYWVuLzdxOHZmL3k5L2ovOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vaisvLy9pNXVmL2JtNXYvNGVJaVA5QVFFRC9hR2xwLzh2UDBQL1YyZHIvcXF1cy82ZXBxZiswdHJmL3djVEUvOHZPei8vSnpNMy92TC9BLzZ5dXJ2K2hvcUwvdExhMi8rYnE2Ly9FeDhqL1ZsWlcvMHhNVFArRWhJWC9kM2QzLyt6eDh2LzMvUDMvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzlmcjcvNmVwcWYrVmxwYi9vNlNrLzQ2UGovOTRlWG4vbko2Zi85SFUxZi9HeWNuL3hNYkcvNy9Cd2YrNXVici91THE2LzhQRnhmL0h5Y24vejlMUy85VFkyUCtQa1pIL2ZIeDgvNDJPanYrcHE2di9qbzZPLzdTMnQvLzMvUDMvN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL3IvLy8rMnVMai9uNkNnLy9iNSt2K2dvcUwvdDdpNC81T1RrLytabXByL25KeWQvMk5rWlArbnFxci90YmUzLzdXM3QvK2hvNlAvWVdGaS82V21wditPam83L25KMmQvN0t6cy8rcXJLei85dnI2LzVPVGsvL0p6TXovK2Y3Ly8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLytQbjZQLzkvLy8vZ29PRS8wZEhSLytJaVluL3BLV2wveDRlSHY4QUFBRC9CQVFFLzZhcHF2K0ppNHYvQUFBQS93QUFBUDh3TUREL3JLMnQvMzErZnY5RFJFUC9uWjJkLy92Ly8vL2s2T24vOHZmNC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3orUG4vOXZ2OC84elAwUCtGaG9iL3FxeXMvMmhwYWY4QUFBRC9RVUZCLzA1T1R2L0N4TVgvdDdtNS8wSkNRdjg4UER6L0FBQUEvMytBZ1AranBhWC9pSW1KLzlqYzNmLzErdnYvOC9qNS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8zKy96LytmMzkvL2Y4L2YvUzF0Yi9Ta3BLLzJWbFpmOC9Qei8vblo2ZS80bUtpdjlIUjBmL1hWMWQvMVpZV1AvZjQrVC85L3o5Ly9yKy92LzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvKy8wOWYvdzlmYi8xOXJiLzdlNnV2OWNYRnovVDA5UC96YzRPUDgzTnpmL1VGQlEvMkppWXYvRHhjYi8ydDdlLy9MMytQL3U4L1QvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC8rZjcvLzZPa3BmK0xpNHYvYm01dS8zRnhjZjlqWTJQL2FtcHIvMnRyYS85MmQzZi9pSWlKLzdTMnQvLzYvLy8vNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvLzIrL3ovN2ZIeS84L1QxUC95OWZiL2twT1QvNnFzclAvczhQSC8wdGJYLysvMDlmLzIrL3ovOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vTDMrUC8yKy96LysvLy8vOG5NemYvVDF0Yi8rLy8vLy9iNy9QL3g5L2ovOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvKy8wOWYvMStmci85UG41LysvMDlmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS84QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQUFBQXdBQUFBWUFBQUFBRUFJQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHg5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vTDMrUC94OXZmLzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di94OXZmLytmMysvKzd5OC8vdjlQWC8rUDMrLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL1A0K2YvcjcvRC8xTmpaLzhIRXhQL0V4OGovMWRqWi8rN3o5UC95OS9qLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi85dnY4Ly9EMTl2K25xYW4vZEhWMS81dWNuZitVbFpYL2QzZDMvN0N5c3YvMCtmci85UG42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3orUG4vNWVycS82dXNyUCtobzZUL3pkSFIvMHhNVFA5V1ZsYi8wOWZYLzV1Y25QK3l0TFQvNk8zdS8vTDMrUC92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vYjYrLy8wK1BuL3FxeXMvNlNtcHYrMHRyYi82dXJxLzJscWF2OTNlSGovN2U3dS82eXVyditscHFiL3JyQ3gvL245L2YvMCtQbi84UGIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vUDQrZi95OS9qLzlmcjcvOWpiM1A4b0tTbi9YRjFkLzd1OHZQKzR1N3YvZTN4OC8zNS9mLzkzZUhqL2c0V0YvN203dlArNXVyci9Ta3RML3pZM04vL2s2T24vOC9qNS8vUDQrZi96K1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzgvajUvK3Z2OFAvVzJ0di9uNkNnLzZLa3BQOWVYMS8vU1VsSi8zRnljdjk2ZW5yL1kyTmovNzNBd2YreHRMVC9YMTVlLzM1L2YvOXBhbXIvU2twSy8ySmpZLytwcXFyL25xQ2cvOTNpNC8vcTd1Ly85UG42Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veitQbi93OGJHLzdHenMvL2Q0T0gvZVhsNS8xWlhWLyt5dExUL2lveU0vNjJ2ci8rZm9hSC9ucCtmLzMxK2Z2K0VoWVgvb3FLai82Q2hvZitzcnEvL2g0aUkvN1MydHY5SlNrci9pb3VMLzl2ZjMvK3VyNi8veWN6Ti8vVDUrLy93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9UNisvL2g1ZWIvZlgxOS80eU5qZjkrZjMvL1ZWWlcvNWVZbVArcnJhNy8wTlBULzVPVWxQK2JuSjMvcTYydC83VzJ0LytpcEtUL3A2bXAvNWlabXYrYW01di96OUxTLzZ1dHJmK1JrcEwvVlZaVy80U0ZoditJaVluL2c0T0QvK250N3YveitQbi84ZlgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vZjkvdi9XMnR2L2dZR0IvMmRuWi8rZW41Ly9zN1MxLzdDeXN2KzJ0N2YvcXF1ci83ZTd1Ly96OS9mL3VMcTYvMzErZi8vZTR1TC8ydDdmLytmcjdQKzN1cnIvcWFxcS83aTZ1dit1c0xEL3RyZTQvNWFYbC85b2FHai9oWVdGLytEazVmLzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL3YvLy8rUWtaTC9qNUNRL3pFeE1mK3p0YlgvcTYydC84N1Iwdityckt6LzUrenMvLy8vLy8vZDMrRC9KQ1VsL3dBQUFQKzV2THovL2YvLy8rM3g4di8vLy8vLzRlYm4vNm1xcS8vTzBkTC9xcXlzLzZxc3JQOHdNVEgva3BPVC81bWJuUC8rLy8vLzd2UDAvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmY0Ly9IMTl2OThmSHovcWF1cy8xOWdZUC9FeHNiL3RMVzEvNkNob2YvZDRlTC8vdi8vLzdhNXVmOGZIeC8vQUFBQS93QUFBUDhrSkNYLzkvZjMvLy8vLy8vdDh2UC8rZi8vLzliWjJ2K2NuWjcvdTd5OS83bTh2UDlqWldYL3BxaW8vNEtEZy8vMy9QMy84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vVDUrditNalk3L2xKV1YvN0d6cy8raW82VC9xcXlzLzd5L3YvLzMvUDMvOXZ2OC83UzN1UDhPRGc3L0FBQUEvd0VCQWY4REF3UC9XbHRiLzQyUGovL3Q4ZkwvOFBYMi8vZjgvZiswdHJiL3JLMnQvNkdpb3YrMHRyYi9qSXlOLzVXWGwvLzQvZjcvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL3YvLy8rNXZMMy9YMTVlLzZTbHBmKzR1Ym4vbVp1Yi82NnhzZi81L3YvLzYvRHgvLy8vLy85L2dJRC9BQUFBL3dRRUJQOEJBUUgvQUFBQS93b0tDdi9iM2QzLzl2djgvL1g3L1AraXBhWC9ucUNnLzdlNXVmK2dvYUgvWFYxZC84akx6UC81Ly8vLzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy9uKy8vL2U0ZUgvUERzNy80dU1qUCs1dXJ2L2lvdUwvOGJKeXYvMy9mNy83UEh5Ly83Ly8vOXdjbkwvQUFBQS93TURBLzhBQUFEL0JnWUcvd0FBQVArTGpZMy8rLy8vLy9YNisvKzd2YjcvakkyTi83cTd2UDk5Zm43L1JVVkYvKzN4OGYvMSsvei84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOWZyOC85SFUxZitmb0tEL2hJV0YvelkxTmYrTWpJei9wcWlvLyticjYvL3k5L2ovK1A3Ly84elAwUDhIQndmL0FBQUEvd0VCQWY4QUFBRC9Bd01EL3dBQUFQOXNiVzcvL3YvLy8vUDQrZi9lNHVQL3BxZW4vNEdCZ2Y4Mk5UWC9pNHlNLzZDaG9mL1ozZDMvOWZyNy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzh2ZjQvK251Ny8vbDZlci91NzI5LzRhSGgvK1dtSmovemREUi85emc0Zi94OXZqLy8vLy8vNUtVbGY4QUFBRC9Bd01EL3dBQUFQOEFBQUQvQWdJQy93QUFBUCt3c3JMLy9mLy8vL1A0K2YvWDI5di96ZERRLzQyT2p2K0xqSXovd01MQy8rYnE2Ly9yOFBILzh2ZjQvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL1QxOWovc2JPei81eWRuditrcHFmL3g4akkvOVBWMWYveDl2Zi8vLy8vLzRlSmlmOEFBQUQvQkFRRS93QUFBUDhCQVFIL0FBQUEvd1lGQmYvTzBkTC8rUDMrLy9MMytQL0x6czcvd3NURS82S2pwUCtlbjUvL3M3VzEvOWpjM2YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC83L0J3ditIaDRmL2s1U1UvNHVOamYrZm9LSC9ySzZ2LzVhWW1mLzErdnYvK3YvLy83aTd2UDhBQUFEL0F3UUUvd01EQS84REF3UC9Bd01FL3dFQkFmK1htcHYvL1AvLy8rZnM3ZitLaTR6L3JhK3cvNTJmb1ArSWlvdi9rcE9VLzRxTGkvL0V4OGovOVBuNi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL2I3L1AvWjNkNy9wNmlvLzdTMnQvK3ZzYkgvbVpxYS8zWjNkLy9WMmRuLzkvejkvL3IvLy85bFptZi9BQUFBL3dJQ0EvOEJBUUgvQUFBQS93UURBLytPa1pILy8vLy8vNzdCd2Y5OWZYMy9vS0doLzYydnIvKzJ1TGovcHFlbi8rSGw1Zi8xK3Z2LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzIrL3ovNHVibi80dU1qUCttcUtqL21weWMvOGZKeWYrenRiYi95OC9QLy9uKy8vLzIrZm4valpDUS96WTJOdjlBUUVEL2c0V0YvOWJaMnYvLy8vLy90N201LzcvQnd2L0l5OHYvbkoyZC82R2pvLytRa1pILzZlM3UvL1g2Ky8vdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzlmcjcvOGpMelArenRiWC9qWTZPLzFwYVcvL0F3OFQvdTc2Ky83ZTZ1di9iNE9ILyt2MysvL2o4L2YvMysvei8rZjcrLzluZDN2K3JyYTMveU12TC83eS93UDlWVlZYL2xwZVgvN0swdGYvUDB0UC85dnY4LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy96Ly8vL1cydHYvZzRTRS8zUjBkUDkyZG5iL3M3VzIvOExGeGYrMnVMai92TDYrLzcyL3YvKzh2Ny8vdXJ5OC83YTR1UC9MenM3L3NiUzAvMjF1YnY5NWVuci9oWVdHLytIbDV2LzYvLy8vNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di92OVBUL29hS2kvOWZhMnYrbXFLai9rcE9ULzZpcHF2K2NuWjMvaTQyTi83UzJ0dit6dGJYL2lJcUsvNlNscGYraW82UC9rcEtULzY2d3NQL1QxdGIvcGFhbS8vVDUrdi92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDkvai82ZTN1Ly9uKy8vOS9nWUgvYW1wcS80eU1qUDhQRHcvL0FnRUIvNVdYbC8rQmc0UC9BQUFBL3hvWkdmK1RrNVAvWVdKaS81R1Nrdi82Ly8vLzZlN3YvL0wzK1AveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC8vVDUrdi9lNHVQL3o5UFUvNTZob2Y4cUtpci9UMDlQLzZLam8vK1dsNWYvUzB0TC95b3FLdit1c2JIL3pkSFIvK0xuNlAvMCtmci84dmY0Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMCtmci8rdi8vLytUbzZQK1FrcEwvVEV4TS8waElTUDlHUmtiL1QwNU8vNXVjbmYvcDd1Ly8rLy8vLy9QNCtmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOWZyNy84Zkx5LythbTV6L2hvZUgvM0J4Y2Y5MWRuYi9oWWFILzU2Zm9QL1EwOVQvOWZyNy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL2Y3L1AveTl2Zi8rLy8vLzhIRXhQL016OC8vK2Y3Ly8vUDQrZi8yK3Z2LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3c5ZmIvOGZiMy8vRDE5di93OWZiLzhmYjMvL0QxOXYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0FBQUFJQUFBQUVBQUFBQUJBQ0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vUDQrZi96K1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gyOS8vMisvei82TzN0LytudTcvLzIrL3YvOGZiMy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3c5ZmIvOC9qNS82NnhzZitZbVpuL2xwaVkvN1MzdC8vMSt2di84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di93OWZiLzlmbjYvL2o2K3Yrd3NyUC92OExDLzNwN2UvK0RoWVgvdkw2Ly83VzN0Ly82L1B6LzlQbjUvL0QxOXYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi85UG42Ly9MMytQL202ZW4vYUdwcS81ZVltZisxdUxqL2hvZUgvNG1LaXYrM3Vici9rWkdTLzIxdWIvL3I3L0QvOGZiMy8vVDUrdi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDA5Zi9qNStqL3lzM04vNGVJaVA5Z1lHRC9lbnQ4LzM1L2YvK1FrcEwvanBDUS80S0NndjkyZG5mL1ltSmkvNHFMalAvTzBOSC80K2ZvLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvNC9mNy96Yy9QLzVLU2t2K0tpNHYvYjI5dy83Mi92LytrcGFiL3BxZW8vNnl0cmYrZW41Ly9vcU9rLzZpcXF2KzZ2THovYkd4cy80K1FrUCtSa1pILzA5YlgvL2Y5L3YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vZjkvdit4dExUL1dscGEvNW1hbXYrOHZyNy9zck96LzlqYzNmL2IzOS8vWW1Oai85bmQzdi9tNnV2L3ljek4vN08xdHYrOHZyNy9sSldWLzFwYVd2KzZ2TDMvK1AzKy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veitQbi82ZTd2LzVPVWxmOXljM1Avc0xHeS83R3pzLy9lNHVQLzVPbnEvem83Ty84QUFBRC9oSWFHLy8vLy8vLzQvZjMvMU5qWi83TzF0ZitycmE3L2NYTnovNWVZbWYvdTgvVC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly96K1BuL2xKV1cvNktqby8rc3JhMy9yN0d5Ly9yLy8vL1UyTm4vSGg0ZS93QUFBUDhTRWhML1lXSmkvK3Z2OFAvMSt2di9xNjJ0LzY2dnNQK2ZvS0QvbUpxYS8vYjcvUC93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83dlAwLy83Ly8vK2RuNS8vYlcxdC82cXNyUCt0c0xELzgvajUvLy8vLy85VlZsYi9BQUFBL3dVRkJmOEFBQUQvdHJtNi8vLy8vLytscDZmL3E2eXQvMlptWi8rcHJLei8vZi8vLysvejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di96K1BuLzVPanAvN1MydHY5alkyUC9rWktTLzliWjJmLysvLy8veDh2TS93TURBLzhBQUFEL0JBUUUvd0FBQVArZ282VC8vLy8vLzlMVTFmK0tpNHYvWldWbC83bTd1Ly9uNit6LzgvajUvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3M4ZkwvME5QVS81MmVuditxckszLzF0cmEvLy8vLy8rcHJLei9BQUFBL3dZR0J2OEJBUUgvQ1FrSi85TFYxZi80L3YvLzB0YlcvNmVwcWYrZm9LSC8wOWJYLyszeTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzlQbjYvOXZmNFArYm5Kei9tWnFiLzZlcHFmK1VscGIvOGZYMi85bmQzdjhQRHcvL0FBQUEvd0lDQXY4QUFBRC9zN2UzLyt2djhQK1BrSkQvcWF1ci81ZVltZitlbjZELzMrUGsvL1A0K2YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOWZ2OC8reng4ditycmEzL242R2gvNkdpb3YvR3ljbi85dnY3LzdTM3VQOHdNVEgvT0RrNS80ZUtpdi9XMmRyL3hzbkovNlducC8rZW9LRC9yN0d4LysvMDlmLzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85ZnI3LytMbTUvK3JyYTMvYlc1dS82ZXBxZi9BdzhQLzQrZm8vK250N2YvbzdPei81T2pwLzhiSXlmK2xxS2ovYlc1dS83Q3lzdi9sNmVyLzlQcjcvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly91OC9ULy9QLy8vOURUMVArbHA2Zi9rWktTLzZpcHF2K1VsWmIvcGFhbi82S2twUCtYbUpuL3A2aXAvNUtUay8rbXFLai8xZG5hLy9yLy8vL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvNy9UMS8vVDUrZitnb2FML2c0U0UveEVSRWY5K2dJRC9jbk56L3hZVkZmK0doNGYvcGFlbi8vYjcvUC91OC9ULzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9mOC9mL1gyOXovWVdGaC8xcGFXdjlYVjFmL1ptZG4vOTdqNC8vMisvei84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzgvajUvK1hwNnYrNXZMei9pb3lNLzQyUGovKzh2Ny8vNk96dC8vTDMrUC93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOC9qNS8vdi8vLy92OC9QLzhmVDEvL3IvLy8veTkvai84ZlgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDlmYi83L1AwLy9IMjkvL3g5dmYvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBQUFCQUFBQUFnQUFBQUFRQWdBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzhQWDIvL2Y4L2YvMy9QMy84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOC9qNS8vajgvUC9Jek16L3lzM08vL244L2Yvejkvai83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi8rUDMrLyt2dzhmK3RzTEQvakkyTi80K1FrUCt2c3JMLzdmTHovL2Y4L2YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzlQbjYvOC9TMC8rU2xKVC9ob2VJLzZpcHF2K2VuNkQvZ29PRC81V1dsLy9SMU5ULzlmcjcvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDE5ditLakl6L29LR2gvOXZlMy85Y1hsNy93TVRFLytqczdmK1ptNXYvam8rUC8vTDMrUC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9MMytQL3Y5UFgva3BPVS83Q3lzdi9yOFBIL0doc2IveUFnSVAvZzVPWC9yN0d4LzVTV2x2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDkvai84UFgyLzVlWW1QKzh2ci8vMTl6ZC93TURBLzhBQUFELzB0YlgvN2k2dS8rWm01di84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzh2ZjQvKzd6OVArNXZMei9ucUNnLzl2ZjRQOUhTVW4vT3p3OC84M1Iwditmb2FIL3U3NisvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di96K1BuLzh2ZjQvNmFvcWYrZW9LRC93c1hGLzcvQnd2K2RuNS8vcXF5cy8vUDQrZi95OS9qLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vSDI5Ly8xK3ZyL3NyVzEvMU5UVS85VVZWWC90N202Ly9YNisvL3g5dmYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOHZmNC8vZjgvUC9HeXNyL3lNek0vL2o4L2YveDl2Zi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvK2YzKy8vajkvdi93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS84QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSJ9
DGE_SETUP_PAYLOAD
"$python_bin" - "$setup_directory" <<'PY'
import base64, json, sys
from pathlib import Path
root = Path(sys.argv[1])
for name, content in json.loads(base64.b64decode((root / 'payload').read_text())).items():
    path = root / name
    if name.endswith(('.png', '.ico')):
        path.write_bytes(base64.b64decode(content))
    else:
        path.write_text(content)
PY
linux_guest=0
if [ "$os" = Linux ] && { [ -n "${DGE_GUEST_INSTALL:-}" ] || [ -d /mnt/lima-cidata ]; }; then
  linux_guest=1
fi
if [ "$linux_guest" = 1 ] && [ -f "$setup_directory/install.py" ]; then
  if [ ! -f "$setup_directory/invitation.json" ]; then
    echo 'This Linux VM is missing the worker invitation from the Mac or Windows app. Open Dorian Gray Worker on the host and try again.'
    exit 1
  fi
  "$python_bin" "$setup_directory/install.py"
elif [ -f "$setup_directory/host_gui.py" ]; then
  if [ "$os" = Darwin ]; then
    "$python_bin" "$setup_directory/host_gui.py" "$0"
  elif linux_headless; then
    "$python_bin" "$setup_directory/host_gui.py" "$0"
  elif [ -n "${gui_user:-}" ] && [ "$gui_user" != root ]; then
    sudo -u "$gui_user" -E env DISPLAY="${DISPLAY:-}" WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-}" \
      XAUTHORITY="${XAUTHORITY:-}" \
      DGE_ENROLL_NAME="${DGE_ENROLL_NAME:-}" DGE_ENROLL_EMAIL="${DGE_ENROLL_EMAIL:-}" \
      DGE_ENROLL_PHONE="${DGE_ENROLL_PHONE:-}" DGE_ENROLL_NOTE="${DGE_ENROLL_NOTE:-}" \
      DGE_ENROLL_HEADLESS="${DGE_ENROLL_HEADLESS:-}" \
      "$python_bin" "$setup_directory/host_gui.py" "$0"
  else
    "$python_bin" "$setup_directory/host_gui.py" "$0"
  fi
elif [ "$os" = Darwin ]; then
  "$python_bin" "$setup_directory/install_macos.py" "$0"
else
  "$python_bin" "$setup_directory/install.py"
fi
