#!/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/JyArIHVyaS5xdWVyeVxuICAgIHNpemUgPSBvcy5wYXRoLmdldHNpemUodXBsb2FkX3BhdGgpXG4gICAgbGFzdF9lcnJvciA9IE5vbmVcbiAgICBmb3IgYXR0ZW1wdCBpbiByYW5nZSgzKTpcbiAgICAgICAgY29ubiA9IE9yaWdpbkhUVFBTQ29ubmVjdGlvbih1cmkuaG9zdG5hbWUsIDQ0MywgY29udGV4dD1vcmlnaW5fc3NsKCksIHRpbWVvdXQ9NjAwKVxuICAgICAgICBzZW50ID0gMFxuICAgICAgICBzdGFydGVkID0gdGltZS5tb25vdG9uaWMoKVxuICAgICAgICB0cnk6XG4gICAgICAgICAgICBjb25uLmNvbm5lY3QoKVxuICAgICAgICAgICAgY29ubi5wdXRyZXF1ZXN0KCdQVVQnLCBwYXRoLCBza2lwX2hvc3Q9RmFsc2UsIHNraXBfYWNjZXB0X2VuY29kaW5nPVRydWUpXG4gICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcmVxdWVzdF9oZWFkZXJzLml0ZW1zKCk6XG4gICAgICAgICAgICAgICAgaWYgbmFtZS5sb3dlcigpIG5vdCBpbiBGT1JXQVJEX1NLSVA6XG4gICAgICAgICAgICAgICAgICAgIGNvbm4ucHV0aGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgY29ubi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgc3RyKHNpemUpKVxuICAgICAgICAgICAgY29ubi5lbmRoZWFkZXJzKClcbiAgICAgICAgICAgIHdpdGggb3Blbih1cGxvYWRfcGF0aCwgJ3JiJykgYXMgcGF5bG9hZDpcbiAgICAgICAgICAgICAgICB3aGlsZSBjaHVuayA6PSBwYXlsb2FkLnJlYWQoVExTX1NFTkRfRlJBR01FTlQpOlxuICAgICAgICAgICAgICAgICAgICBjb25uLnNlbmQoY2h1bmspXG4gICAgICAgICAgICAgICAgICAgIHNlbnQgKz0gbGVuKGNodW5rKVxuICAgICAgICAgICAgICAgICAgICBpZiBUTFNfU0VORF9QQUNFOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcChUTFNfU0VORF9QQUNFKVxuICAgICAgICAgICAgcmVzcG9uc2UgPSBjb25uLmdldHJlc3BvbnNlKClcbiAgICAgICAgICAgIGJvZHkgPSByZXNwb25zZS5yZWFkKClcbiAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgJ3diJykgYXMgb3V0cHV0OlxuICAgICAgICAgICAgICAgIG91dHB1dC53cml0ZShib2R5KVxuICAgICAgICAgICAgbG9nX3N0b3JhZ2UoJ3N0b3JhZ2UgUFVUICVzIGF0dGVtcHQgJXMgb2sgJXMgYnl0ZXMgaW4gJS4xZnMgc3RhdHVzICVzJyAlIChcbiAgICAgICAgICAgICAgICB1cmkuaG9zdG5hbWUsIGF0dGVtcHQgKyAxLCBzZW50LCB0aW1lLm1vbm90b25pYygpIC0gc3RhcnRlZCwgcmVzcG9uc2Uuc3RhdHVzKSlcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnJlYXNvbiBvciAnT0snLCByZXNwb25zZS5nZXRoZWFkZXIoJ0NvbnRlbnQtVHlwZScpLCBzdHIobGVuKGJvZHkpKVxuICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNzbC5TU0xFcnJvciwgaHR0cC5jbGllbnQuSFRUUEV4Y2VwdGlvbikgYXMgZXJyb3I6XG4gICAgICAgICAgICBsYXN0X2Vycm9yID0gZXJyb3JcbiAgICAgICAgICAgIGxvZ19zdG9yYWdlKCdzdG9yYWdlIFBVVCAlcyBhdHRlbXB0ICVzIGZhaWxlZCBhdCAlcy8lcyBieXRlcyBpbiAlLjFmczogJXMnICUgKFxuICAgICAgICAgICAgICAgIHVyaS5ob3N0bmFtZSwgYXR0ZW1wdCArIDEsIHNlbnQsIHNpemUsIHRpbWUubW9ub3RvbmljKCkgLSBzdGFydGVkLCBlcnJvcikpXG4gICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgICBjb25uLmNsb3NlKClcbiAgICByYWlzZSBsYXN0X2Vycm9yXG5cblxuZGVmIGN1cmxfYXJncyhtZXRob2QsIHVyaSwgaGVhZGVyX3BhdGgsIG91dHB1dF9wYXRoLCByZXF1ZXN0X2hlYWRlcnMpOlxuICAgIHVybCA9IHVybGxpYi5wYXJzZS51cmx1bnNwbGl0KCh1cmkuc2NoZW1lLCB1cmkubmV0bG9jLCB1cmkucGF0aCwgdXJpLnF1ZXJ5LCAnJykpXG4gICAgYXJncyA9IFtDVVJMLCAnLXNTJywgJy1nJywgJy00JywgJy0taHR0cDEuMScsICctLXRsc3YxLjInLCAnLS1tYXgtdGltZScsICc2MDAnLFxuICAgICAgICAgICAgJy1YJywgbWV0aG9kLCAnLUQnLCBoZWFkZXJfcGF0aCwgJy1vJywgb3V0cHV0X3BhdGhdXG4gICAgZm9yIG5hbWUsIHZhbHVlIGluIHJlcXVlc3RfaGVhZGVycy5pdGVtcygpOlxuICAgICAgICBpZiBuYW1lLmxvd2VyKCkgbm90IGluIEZPUldBUkRfU0tJUDpcbiAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLUgnLCAnJXM6ICVzJyAlIChuYW1lLCB2YWx1ZSldKVxuICAgIGFyZ3MuYXBwZW5kKHVybClcbiAgICByZXR1cm4gYXJnc1xuXG5cbmRlZiBmZXRjaChjbGllbnQsIG1ldGhvZCwgdXJpLCByZXF1ZXN0X2hlYWRlcnMsIHJlc3QpOlxuICAgIHRyeTpcbiAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSdkZ2UtcjItJykgYXMgZm9sZGVyOlxuICAgICAgICAgICAgaGVhZGVyX3BhdGggPSBvcy5wYXRoLmpvaW4oZm9sZGVyLCAnaGVhZGVycycpXG4gICAgICAgICAgICBvdXRwdXRfcGF0aCA9IG9zLnBhdGguam9pbihmb2xkZXIsICdib2R5JylcbiAgICAgICAgICAgIHVwbG9hZF9wYXRoID0gTm9uZVxuICAgICAgICAgICAgaWYgbWV0aG9kID09ICdQVVQnOlxuICAgICAgICAgICAgICAgIHRyeTpcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gaW50KHJlcXVlc3RfaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJywgJycpKVxuICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOlxuICAgICAgICAgICAgICAgICAgICByZXBseShjbGllbnQsIDQxMSwgJ0xlbmd0aCBSZXF1aXJlZCcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIGxlbmd0aCA8IDAgb3IgbGVuZ3RoID4gTUFYX1BVVDpcbiAgICAgICAgICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA0MTMsICdQYXlsb2FkIFRvbyBMYXJnZScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIHVwbG9hZF9wYXRoID0gb3MucGF0aC5qb2luKGZvbGRlciwgJ3VwbG9hZCcpXG4gICAgICAgICAgICAgICAgY2xpZW50LnNldHRpbWVvdXQoTm9uZSlcbiAgICAgICAgICAgICAgICB3aXRoIG9wZW4odXBsb2FkX3BhdGgsICd3YicpIGFzIHBheWxvYWQ6XG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY2xpZW50X2JvZHkoY2xpZW50LCByZXN0LCBsZW5ndGgsIHBheWxvYWQud3JpdGUpXG4gICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAgICAgIGNsaWVudC5zZXR0aW1lb3V0KE5vbmUpXG4gICAgICAgICAgICBpZiBtZXRob2QgPT0gJ1BVVCc6XG4gICAgICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgICAgICB3aXRoIE9SSUdJTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVhc29uLCBjb250ZW50X3R5cGUsIGxlbmd0aCA9IG9yaWdpbl9wdXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLCByZXF1ZXN0X2hlYWRlcnMsIHVwbG9hZF9wYXRoLCBvdXRwdXRfcGF0aClcbiAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNzbC5TU0xFcnJvciwgaHR0cC5jbGllbnQuSFRUUEV4Y2VwdGlvbikgYXMgZXJyb3I6XG4gICAgICAgICAgICAgICAgICAgIGxvZ19zdG9yYWdlKCdzdG9yYWdlIFBVVCAlcyBmYWlsZWQ6ICVzJyAlICh1cmkuaG9zdG5hbWUsIGVycm9yKSlcbiAgICAgICAgICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA1MDIsICdCYWQgR2F0ZXdheScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICAgICBhcmdzID0gY3VybF9hcmdzKG1ldGhvZCwgdXJpLCBoZWFkZXJfcGF0aCwgb3V0cHV0X3BhdGgsIHJlcXVlc3RfaGVhZGVycylcbiAgICAgICAgICAgICAgICB3aXRoIE9SSUdJTjpcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oYXJncywgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSlcbiAgICAgICAgICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsID0gKHJlc3VsdC5zdGRlcnIgb3IgYicnKS5kZWNvZGUoZXJyb3JzPSdyZXBsYWNlJykuc3RyaXAoKVxuICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdzdG9yYWdlICVzICVzIGN1cmwgJXMgJXNcXG4nICUgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLCB1cmkuaG9zdG5hbWUsIHJlc3VsdC5yZXR1cm5jb2RlLCBkZXRhaWwpKVxuICAgICAgICAgICAgICAgICAgICByZXBseShjbGllbnQsIDUwMiwgJ0JhZCBHYXRld2F5JylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgc3RhdHVzLCByZWFzb24sIGNvbnRlbnRfdHlwZSwgbGVuZ3RoID0gcGFyc2VfZHVtcF9oZWFkZXIoaGVhZGVyX3BhdGgpXG4gICAgICAgICAgICBzZW5kX2ZpbGUoY2xpZW50LCBzdGF0dXMsIHJlYXNvbiwgY29udGVudF90eXBlLCBsZW5ndGgsIG91dHB1dF9wYXRoLCBza2lwX2JvZHk9KG1ldGhvZCA9PSAnSEVBRCcpKVxuICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOlxuICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdzdG9yYWdlICVzICVzIGZhaWxlZDogJXNcXG4nICUgKG1ldGhvZCwgdXJpLmhvc3RuYW1lLCBlcnJvcikpXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHJlcGx5KGNsaWVudCwgNTAyLCAnQmFkIEdhdGV3YXknKVxuICAgICAgICBleGNlcHQgT1NFcnJvcjpcbiAgICAgICAgICAgIHBhc3NcblxuXG5kZWYgaGFuZGxlKGNsaWVudCwgX2FkZHJlc3MpOlxuICAgIHRyeTpcbiAgICAgICAgY2xpZW50LnNldHRpbWVvdXQoMzApXG4gICAgICAgIHJhdywgcmVzdCA9IHJlYWRfaGVhZGVycyhjbGllbnQpXG4gICAgICAgIGlmIHJhdyBpcyBOb25lOlxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIG1ldGhvZCwgaGVhZGVycywgdXJpID0gcGFyc2VfcmVxdWVzdChyYXcpXG4gICAgICAgIGlmIG1ldGhvZCBpcyBOb25lOlxuICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA0MDAsICdCYWQgUmVxdWVzdCcpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnIGFuZCByZXF1ZXN0X3BhdGgocmF3KSA9PSAnL3VwbGluayc6XG4gICAgICAgICAgICBVUExJTktfUkVBRFkud2FpdCgxMilcbiAgICAgICAgICAgIHJlcGx5X2pzb24oY2xpZW50LCB1cGxpbmtfcGF5bG9hZCgpKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGlmIG1ldGhvZCBub3QgaW4gKCdHRVQnLCAnUFVUJywgJ0hFQUQnKTpcbiAgICAgICAgICAgIHJlcGx5KGNsaWVudCwgNDA1LCAnTWV0aG9kIE5vdCBBbGxvd2VkJylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBpZiB1cmkgaXMgTm9uZTpcbiAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3JlamVjdGVkIHN0b3JhZ2UgJXNcXG4nICUgbWV0aG9kKVxuICAgICAgICAgICAgcmVwbHkoY2xpZW50LCA0MDMsICdGb3JiaWRkZW4nKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIGZldGNoKGNsaWVudCwgbWV0aG9kLCB1cmksIGhlYWRlcnMsIHJlc3QpXG4gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3N0b3JhZ2UgY2xpZW50IGZhaWxlZDogJXNcXG4nICUgZXJyb3IpXG4gICAgICAgIHJldHVyblxuICAgIGZpbmFsbHk6XG4gICAgICAgIGNsaWVudC5jbG9zZSgpXG5cblxuZGVmIHNlcnZlKGhvc3Q9TElTVEVOX0hPU1QsIHBvcnQ9TElTVEVOX1BPUlQpOlxuICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXVwbGlua19sb29wLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuICAgIHNlcnZlciA9IHNvY2tldC5jcmVhdGVfc2VydmVyKChob3N0LCBwb3J0KSwgcmV1c2VfcG9ydD1GYWxzZSlcbiAgICB3aGlsZSBUcnVlOlxuICAgICAgICBjbGllbnQsIGFkZHJlc3MgPSBzZXJ2ZXIuYWNjZXB0KClcbiAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9aGFuZGxlLCBhcmdzPShjbGllbnQsIGFkZHJlc3MpLCBkYWVtb249VHJ1ZSkuc3RhcnQoKVxuXG5cbmRlZiBtYWluKCk6XG4gICAgdHJ5OlxuICAgICAgICBzZXJ2ZSgpXG4gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoJ1IyIHN0b3JhZ2UgcHJveHkgZmFpbGVkIHRvIGxpc3RlbjogJyArIHN0cihlcnJvcikpIGZyb20gTm9uZVxuXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgdHJ5OlxuICAgICAgICBtYWluKClcbiAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6XG4gICAgICAgIHN5cy5leGl0KDApXG4iLCJwcmVwYXJlX21hY2hpbmUucHkiOiJcIlwiXCJQcmVwYXJlIHN1cHBvcnRlZCBMaW51eCBob3N0cyB3aXRob3V0IHJlc3RhcnRpbmcgYW4gZXhpc3RpbmcgRG9ja2VyIGRhZW1vbi5cIlwiXCJcbmltcG9ydCBvc1xuaW1wb3J0IHBsYXRmb3JtXG5pbXBvcnQgc2hsZXhcbmltcG9ydCBzaHV0aWxcbmltcG9ydCBzdWJwcm9jZXNzXG5cblxuZGVmIHJ1bigqYXJncyk6XG4gICAgcHJpbnQoJyQgJyArIHNobGV4LmpvaW4oc3RyKGl0ZW0pIGZvciBpdGVtIGluIGFyZ3MpLCBmbHVzaD1UcnVlKVxuICAgIHRyeTpcbiAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCkuc3RyaXAoKVxuICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlcnJvcjpcbiAgICAgICAgb3V0cHV0ID0gZXJyb3Iub3V0cHV0LmRlY29kZSgpLnN0cmlwKCkgaWYgZXJyb3Iub3V0cHV0IGVsc2UgJydcbiAgICAgICAgaWYgb3V0cHV0OlxuICAgICAgICAgICAgcHJpbnQob3V0cHV0LCBmbHVzaD1UcnVlKVxuICAgICAgICByYWlzZVxuXG5cbmRlZiBkZXBlbmRlbmNpZXMoKTpcbiAgICByZWxlYXNlID0gcGxhdGZvcm0uZnJlZWRlc2t0b3Bfb3NfcmVsZWFzZSgpXG4gICAgc3VwcG9ydGVkID0gKHJlbGVhc2UuZ2V0KCdJRCcpID09ICd1YnVudHUnIGFuZCByZWxlYXNlLmdldCgnVkVSU0lPTl9JRCcsICcnKS5zcGxpdCgnLicpWzBdIGluICgnMjQnLCAnMjUnLCAnMjYnKSkgb3IgKFxuICAgICAgICByZWxlYXNlLmdldCgnSUQnKSA9PSAnZGViaWFuJyBhbmQgcmVsZWFzZS5nZXQoJ1ZFUlNJT05fSUQnKSBpbiAoJzEyJywgJzEzJykpXG4gICAgcGFja2FnZXMgPSBbXVxuICAgIGZvciBiaW5hcnksIHBhY2thZ2UgaW4gWygnZG9ja2VyJywgJ2RvY2tlci5pbycpLCAoJ2lwJywgJ2lwcm91dGUyJyksICgnbHNwY2knLCAncGNpdXRpbHMnKSwgKCdsc2JsaycsICd1dGlsLWxpbnV4JyldOlxuICAgICAgICBpZiBub3Qgc2h1dGlsLndoaWNoKGJpbmFyeSk6XG4gICAgICAgICAgICBwYWNrYWdlcy5hcHBlbmQocGFja2FnZSlcbiAgICBpZiBwYWNrYWdlcyBhbmQgc3VwcG9ydGVkOlxuICAgICAgICBwcmludCgnSW5zdGFsbGluZyByZXF1aXJlZCB0b29scy4gVGhpcyBtYXkgdGFrZSBhIGZldyBtaW51dGVzLi4uJywgZmx1c2g9VHJ1ZSlcbiAgICAgICAgcnVuKCdhcHQtZ2V0JywgJ3VwZGF0ZScsICctcXEnKVxuICAgICAgICBydW4oJ2FwdC1nZXQnLCAnaW5zdGFsbCcsICcteScsICctcXEnLCAqcGFja2FnZXMpXG4gICAgaWYgbm90IHNodXRpbC53aGljaCgnZG9ja2VyJyk6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRG9ja2VyIG11c3QgYmUgaW5zdGFsbGVkIG9uIHRoaXMgTGludXggdmVyc2lvbi4gQXNrIHlvdXIgYWRtaW5pc3RyYXRvciwgdGhlbiBydW4gc2V0dXAgYWdhaW4uJylcbiAgICBydW4oJ3N5c3RlbWN0bCcsICdlbmFibGUnLCAnLS1ub3cnLCAnZG9ja2VyLnNlcnZpY2UnKVxuICAgIGlmIHJ1bignZG9ja2VyJywgJ2luZm8nLCAnLS1mb3JtYXQnLCAne3suQ2dyb3VwRHJpdmVyfX0ge3suQ2dyb3VwVmVyc2lvbn19JykgIT0gJ3N5c3RlbWQgMic6XG4gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRG9ja2VyIG5lZWRzIHN5c3RlbWQgY2dyb3VwcyB2Mi4gQXNrIHlvdXIgYWRtaW5pc3RyYXRvciB0byB1cGRhdGUgaXRzIGNvbmZpZ3VyYXRpb24uIEV4aXN0aW5nIGNvbnRhaW5lcnMgd2VyZSBub3QgcmVzdGFydGVkLicpXG5cblxuZGVmIHByZXBhcmUoKTpcbiAgICBpZiBvcy5nZXRldWlkKCkgIT0gMDpcbiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdSdW4gdGhlIGRvd25sb2FkZWQgc2V0dXAgc2NyaXB0IHdpdGggeW91ciBhZG1pbmlzdHJhdG9yIHBhc3N3b3JkLicpXG4gICAgaWYgcnVuKCdzdGF0JywgJy1mJywgJy1jJywgJyVUJywgJy9ydW4nKSAhPSAndG1wZnMnOlxuICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoaXMgY29tcHV0ZXIgbmVlZHMgbWVtb3J5LWJhY2tlZCB0ZW1wb3Jhcnkgc3RvcmFnZSBhdCAvcnVuLiBBc2sgeW91ciBhZG1pbmlzdHJhdG9yIHRvIGNvbmZpZ3VyZSBpdCwgdGhlbiBydW4gc2V0dXAgYWdhaW4uJylcbiAgICBkZXBlbmRlbmNpZXMoKVxuIiwiY29uZmlnLmpzb24iOiJ7XCJvcmlnaW5cIjpcImh0dHBzOi8vZG9yaWFuZ3JheS5uZXRcIixcImVucm9sbG1lbnRcIjp0cnVlfSIsImRnZS1pY29uLnBuZyI6ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNQUFBQURBQ0FJQUFBRGR2dnRRQUFBQUlHTklVazBBQUhvbUFBQ0FoQUFBK2dBQUFJRG9BQUIxTUFBQTZtQUFBRHFZQUFBWGNKeTZVVHdBQUFBR1lrdEhSQUQzQVBZQThYaWsrdG9BQUFBSGRFbE5SUWZxQ0FjQUlEVVZtd0c5QUFCUDFVbEVRVlI0MnUyOVoxeFUxL2IvZjlyMHpzRFFtL1F1Q0lvQ0NoYXdWeXl4eHBpb01iSEU5S2lwSmhwTFRFenN2ZmZlQUF1SUlyMzN6bEFIQm1hWTNrNzVQemhLdUNieDN1L2wvbitpenZ2QmZkMGt3NXl5UDdQMjJtdXZ0VGFvMHlvQU0yYitXNkNYZlFObVhtM01BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFJeTB5Zk1BakxUSjh3Q010TW56QUl5MHlmTUFqTFRKOHdDTXRNbnpBSXkweWZNQWpMVEo4d0NNdE1uekFKNkVRUkJFQVJCL3ArWGZTLzlGTE9BL2hHQ0lHQVloaUNJSUFnUUJGLzI3ZlJUekFMNkcwaTdBNEtnVXFreUdBd2dDQklFQVFCbUkvUTNtQVgwUE9Sc0JZSUVBSUJidHU1NDlPZ0puY0Y4TnBXWmVSNnpnQURnbWE5RDlKSUpCRUZhcmU3Ky9RZEZ4U1VBQVBaNFFzOTl6QXp5c20vZ3BkRkxCR0R2ZnlRbkxBcUZXbHRiV2xGUlhsUlVaRElhSUFnQ1h1aEt2N0ZPMGh0bmdYcmJFdkxmNERnR3d6Q1R4V0l3bVV3bWsvU2FjUnd2S0N4eWNuTHU3bFkwaUJzUkJNRnhuRWFqTVZrc0pwTkpaekNlK3lyeXk5NUF5L1JtV1NCeVBVVU9NNDFHd3pBY0FBRUdsZEV1YVgyWStsaWowVnBaV2c0ZE5rUm93Vzlwa1RRMU5ROGJOcFJDb2VUbEZReHdkYUhSYUpXVk5ma0ZoUWFEM3NQRGZlalFjQmlHalFZRGdzQTRqcU1tRXdDK2NiOUc0RTBURUtrZUVBUUJFSHJ5Skt1a3RBekhjU29GU1VxNjI5alV4R0F3QUFCazcyUHQzN2VydEt5TXgrTm5abWI2Ky91THhZMEtoU0l4NmU2T0hUc3RMQ3dVQ2dVSWdsRlJFWjRlbm5xRGtjdmxSRVFNZFhaeU1Cb01JUFRHYWVqTmVtRFM5c0F3Y3VqZzBUVWZyVTFLU2pLWlRBQUFGcGVVREJ3NGNOcTBhV1BIeGpVM3Q2eGEvWEZ4Y1psUWFKR1dsaVlXaTYyc0xQL1l0Vy9EaG05RFFrTEN3OE1YTEZpZzErdnI2eHZZYkhaRGczai8vZ01mZkxDNm9xS2FTcVBpT1A2bXpXRnZuSUNvVkVwZGZjT1Q5SFEzTjdmUTBFRVNpV1JnY05EaHd3ZFRVMU1CQURDWlRCRVJ3eTVkdWtTaFVQTHk4alFhVFVwS0Nwdk51WHYzcmtxbDh2RHc0SEs1ZVhsNTl2WjJCdzdzYisvbzRQTTVRNFlNcHROcGR4SVNjUndBUVJCNHc5eWdOMHRBSUFnU0JBQkQwT0RCZzExZFhlUGpweTlhTkQ4aEljbk5iUUNYeTYycnF3TUFvS3FxS2pRMDFNTEM0dFNwVXdBQWRIVjFuVDkvUGo0K0hvS2crdnA2QUFEeTh2S2lvaUlieFdLTlJydHUzVmYrL3Y3Ky9nRk9UazRvaXI3czUzc0p3T3ZYZmZteTcrSC9LVGlPOC9rOEN3dUJpNHVUczRzVGpVWnZibTdKeTh1L2VmTm1lSGg0Ym01dWMzUHpva1dMVHA0OFdWbFpPV2JNR0J6SG56eDVNbWpRSUd0cjY1U1VGS0ZRcU5jYmlvcUszTjNkUlZhVzN0NmVQQzdIMmxvMEtDU1l5YVMvZ1pzZWI1YUFRQkFrL1dncks2R2RuUzJMemFxdkYrL2JkL0RreVJPVEprMXFhMnQ3OU9qUjh1WEwwOUxTN3Q2OWEyMXRmZkRBZmhxZGxwcjZLRDgvUHk0dURvYmhhOWV1VDU0OHFiQ3c4TTZkTzdhMmRwRVI0VHdleDhuUmtVcWw0RGorcHFrSGVCT21NT0pmSWYrTjBXaUNZYmlyVTc1bHk3WnIxNjVPblRxVlFxR1VsWlg5OGNmdnRiVzExNjVkQTBGdzdkcVB3Z1lQV2I1OGFWUlVsRnF0M3IxN2QxeGMzRHZ2dkgzcjFxMzQrSGdPaDdOdDI3WkxsNjVTS0ZRTXczcm1yNzllN3ZYbXRiVkF2VU0rejBXWnFWUXFRUUIzN3lXdldyVTJMeTl2MGFKRlhWMWR6YzNOQnc3c3k4ck0yclo5T3dBQWE5ZXUzYkRoeTZ5c0xJR0FQM3IwcUljUFU4VmljV2xwNmJmZmJMQ3h0VHQ5K3ZTb1VhTjRQTjcrQXdjN09qbzlQVDFGSXF2ZUducDJOUUFFUUFBa3lHRDNhOG5yS2FBZTlSQUVnU0FJalVhajBxZ0lnbUFZUnFGUVdscmFUcHc4czN2M25vS0MvTWpJeUxTMHRJcUtpa09IRGxWWDEzenl5YWNvaWs2Wk1tWDc5bTMxOVhWZmZyV2hxYkU1ZnNZMGR6ZVArdzhlTkRVMVZWWFhmUEhGRjExZFhkdTNiM2R4Y2FIVDZUZHYzcEoxS3lBSWNYY2JBSUlBZ2lCME9wMUNvVUFRaU9NNFRoQWcrRG9uaEx5R0F1cHRlK2gwdWt6V1hWeFNXbEpjSXBOMVcxdUwydG9rK3c0Y0ZvbXNDZ29LdFZwdFZWVlZlM3Y3aUJFam9xS2l2djc2NjhiR1JpY25wNjFidDhybDNidDM3MTM2M2hLWnJDdjFVZHFFaVJNUkJFbE9UaGFMeFJZV0ZnRUJBZGV2WDYrcXFzSnhETVB3d1dHaEdJYVZsSmFGaFEyU3RIZms1aGJVMXRXWlRCaWZ4NmRTRVJURlh1T2tvdGN3RXQyakhnU2hKQ2JlVDMyVUpoUUtXU3hHVm5iZW1iUG5EQWJqL1BsdkticVZtWmxaQVBCMFVHVXkyYjE3OThyTHl3RUFpSWlJWURBWXUzZnZpWXdjR2hzN05pUTQ2SXN2TjF5K2ZEa2tKRVFrRW5WMGRDUWxKUm1OUmd6REFBRG82SkRpT0o2Zlg3QiszVmZIVDV6OGNPVmFHbzNtN094RW85RWZQODZnVU9BNXMyZTV1RGdhREUrM1kxOC9Yc09uSW1jdUdvMTJKK0h1c2VNbjlIcGRYbDVPWFYzZDZOR2poZytQcXFtcGNYUjByS3V2SndnY2VPYXZGQllXRmhjWFcxbFpBUUFBdy9EdDI3ZE5Kc1A0Y1hFR3ZkTFN5bXJzMk5pa3BLU2lvaUkybXcwQUFJVkNTVXBLd2pDc3g2STBOamFpR0VxbjA5VnE5WklsaXkwdExiT3lzcHFhR3NYaXhtM2JmMjF2bHlJSThycjYxSysyQmZwWFR4a0F3YWRwRlRBTUt4U0s2OWR2ZEhSMFhMOStIY2R4QUFDT0h6OTU0dmpSY2VQR1hycDAxYy9QRjRJZ0hNZEp3MkF3R0ZKU1V1enM3SGc4WGwxZFhWTlRrN096TTROQnh6QWNRMDBXQW41ZFhSMktva2FqMGQ3ZXZxV2xwYmEybHJ3QjhuSyt2cjVxdFRZdkwzL042cFhIajUvWXZ2MFhQcC9mM2QzdDdlM3Q1T1NjbEhUdjdiZm5hN1hhNTI0VjZMMDM5OHJ5Q2x1ZzN1cEJFSmhLUlVoWEF5RFR3WFNHMnRyYTVPUmtIeCtmaHlrUDl1M2JBNEpBZGs2dXM3TkxjM1BUb0VIQjc3MjNsTlFRK1NkZFhWMmxwYVZHbzdHdXJrNmhVSlNXbHFwVUdncUZBaVAwNnBwYXFWUXFrVWk2dXJwa01sbFZWUlU1ZnhFRWdXR1lqWTN0bWpXcnBkSU9Cb09oVkdteXMzT2lvaUl6TTU5czNicWxzYkV4TnpkSEpwZjNwS1FCQUFERE1KV0t3REQwM0NPOG9yekNUalQ1Nm1FWUFrQ3dvNk9yVzY2Z1Vxa1VDa0ptOHpDWlRLVkNtWldWdlhuejVyaTRzZGV1WGRQcjlUTm16REFhaldxMU9qcDZ1S2VIbDQyTkRlbk5HSTFHMGtxWlRDYTFXdDNlM3Q3YTJzb1hDS0pIUk5YVjFhMWIvelhwYTV0TUpoUkZRUkNFSUlqTDVUbzZPbzRjT2ZLamp6NktqaDZoVWlxcnFxcjkvZjBwRkVwSlNjbmt5Wk9uVEptV201dURvZGpxTlN1dHJJUmttQkdDSUlWUzFTSHRBZ2lReFdLU0YzMmxMUkNvMHlwZTlqMzhseEFFQVVHUVJxdTljZU5PYzNOcmc3aGhjRmpZbk5rektCUUV4M0VHZzZIUjZnOGNPTlRlM2dIRFVHTmo0NkpGaTN4OGZFNmNPRkZWVmYzYnI5c3BWRnBOVFYxZVhsNXBhVWxXVnZhalI0OHdESE4xZGJXenMyTXdHSFE2SFFBQUR3OFBtVXdtYVcrSElVaXIwNmxWcXBxYTJ1NXV1WTJOemFoUm8zeDhmSUtEZ3djT0RMS3pzMDkrY1ArWEhiOTkrdWxhUjBmbnExZXZaR2ZuK1B2N2RYUjBUcG8wZnRTbzBRYTlHc013S3BWU1d5YytjdVM0VHFkemRYVWRGREl3UER5TWpCNjl1aHA2VlFWRStxUU1CdVBrcVhNdExhMXNOdHZmMzlmUndWNG90S0RUcVRDTTVPYm0vL3JiSHpRYXpkSFJ3Y1haZWR5NFdIc0hsNXMzcjJkbjUvajcreWNrSkFZRStJbEVObTF0YlUxTlRUazVPVTFOVGZQbXpWMjBjSUZRYUVHaFVLaFVxbEtwTEM4djUzQzVYcDZlQkFDZ0tHb3lHdklMaXJadTNWNVJVUmtlUHNUTHk4dlIwWkhOWnVmbTV2TDVmSGQzdCtMaWtsV3JQckN6czN1WWtwcVpsZFhXMWxaWFZ4OGFPdWpERDVZekdIUVFCS1dkWFZxdE5pMHRBOGVKMnRyYWQ5OTkyOG5Sd1dnMDlYaHZyeHl2c0JNTmdpQ0tvdFhWTlR3ZVR5YVRXVm9LM2R5OTlEb2xBQURkQ3VYbW43ZjUrZmt1Zm51UndXREVDUUpHcUZldVhMcDE2NDZmbjE5cTZxUGMzRndxbFlxaWVIZDNONDFHbXpoaHdwZ3hJNE5EUWlBSUpnZ01CQUdDSU9nTWtiV05QVUVRSUlBQ1Q0dDY4TGk0MkxEUWtLU2tlMFhGSlNpS2RyUzNLeFNLOHZKeXJWYkxaREl4RFB2dHQ5L2ZXZnkyazdNemo4ZGxjemp0N2UzZmY3K1J4K090V3ZtK1dxMjJ0YkdGRWRyangwODBHcTFPcDJ0dGFSdmc2bUkwR2wvZFVQVXJhWUZJM3hQRGNCYUxtWmFXc2YvQTRZcUtjaHFOdG5MbEJ5TkhSZ3VGMXJtNTJaOTg4dG1LRlN2NGZDNmZ4emNZRERkdTNrcE9UcVpRS05iVzFwRVJ3eVpObXVqczdBaENJQWdBQ0VJRFFOaWdWMHNrN1cxdGJRcWxVcWZWYTNWNjByOEdRUUNHRVJxTnl1V3lMU3dzUkZaV2xsWkNPcDBEQUxqSnFFZFJsRXFsNkhUNmpNenNLMWV1MWRiV1NxVlNHeHVibVRQalEwSkNGTjNkT0VGY3VuUlpwOVVjT0xnUHg5Q3FxcG9MRnkrZk9uWGF6YzB0T0RqNHMwL1gwbWl2OWk3c0t5a2c0Rm5acUZLcE9ucjBaRmw1V1dCZ2dNRmdLaW9xdHJEZ3o1dzVJeW5wSGdoQzQ4ZVBFd290c3JPekR4OCtXbEpTRWh3Y1BHdFcvTGh4Y2JhMnRqaG1Ba0VJUmJHMnRyYnE2dHFhMnJydWJnV05ScVBUYVFLQndOSlNTS1hTV0N3bURNRkdrMUd2MTZ0VWFwVksyZDJ0VUtuVUlBaFlXbG9PR09EaTdlVnBhU25FY2R4a01sRnBOQnduQ2dzS3o1Mi9kUFhxVllQQk1IWHExRmt6NHkyRUZrVkZKYW1wcVZHUkVSQU1YYmh3eWQ3ZXdjM05WU3dXZDNiSjVzMmRFejBpOHBWMmcxNUpBVDFicThPN2R1K2owYWh2elpsTnBWTFlIRjVUVS9QKy9RY2ZQa3lKam81MmNYR2hVcW1GaFlWSlNYZE5KdU84ZVhNWHY3M1F6czRHUlZFWWhwVXFWVkZoU1g1QlVYZDN0NDJOdGJlM3A3T3pNNHZKMU9tMUNvVktxVlRKWkRLRDNnQkNJRUVRVENhVHorZHp1UndCbjR0UWFOM3k3dnFHaHZMeVNvVkNZV050UFhod3FLK3ZONFVDRy9RR0tvMkdFMEQ2azR4ZHUvZG1aR1I0ZTN1UEhqM2F6czZ1dTdzN016T3p2YjE5eFlvVkV5YU1Kd2hVcTlFMk5qWWZPbnhrOXV5WlF3WVAwdXYxWktySnkzNjEvMmRlUFFHUjdqT2RSaXV2ckxwNTg4NjRzV04rM3JLOXVia2xMQ3gwMnJScGNubjMzcjE3TlJxTnA2Y25qdU5aV1ZuT3pzNmZmTEkyWXRnUURNTVFHRmFwTlk4ZXArVms1ekdZak1qSVliNCtQbHFkcnJLeXNyQ3d1S0doVWF0Vnd6RENack5KUDVwR28ybTFXaFJGVFVhandXakVNSlRGNWpnN09RWUcrbnQ2ZU9BRVVWQlFtSk9UUjZQUlJveUlEQWtlQ01PUXdXQmdNcGxLbGZybzBSTkhqaHpsOC9sQlFVRnRiVzBORFEzUjBkR0wzMzY3c0tqdzh1VXJZckg0bmNWdkQzQnp5OHZMKzJqTmgyUmdDWGdGN2RDcklhQi9pVGdEQUlIamREcGRJbWxQU0x5dlZDclhybDBiRkJRMGU5YXNzdkx5UVlNR0hUbHloRTZuQndZR1ptUmt4TVRFZlBYbFp5S1JKV295UVRDY25wNlZtSFJYd0JkTW5EVGV3ZDR1djZEdy92MWtzYmlSeitkN3VBL3c5dlp4ZEhJUUNIaE1CcE5Db2NBd0RFSWdqdUU0anBtTUpxMU9KNU4zMTljMWxGZFUxTlUxYURUcUFRTmNSNDhlNmVYcFVWcFdrWlIwajBLaFRKa3kwZC9QUjZmVEFRREFZREx2MzB2KzV0dnZhVFNhazVQVHZYdjNZbUppM04zZHhlSUdLeXVybjMvZUVob2Erc25ISDZPWWFkN2MyVnF0RmdCQWNtL3UxUXBQdndJQ2VpNDNnM3l6Qm9NeEp5Zi94TWxUYlcxdEpTVWw0OGFOKyszWDdWOS84OTI5ZXcrYW01dUNnNFBiMnRybXo1KzNadldIQklFakNOTFJJVDE3N3FKQ29ad3hmWXE3dTN2UzNYdTM3eVFpTUJ3ZVBqZzhmTENUb3lPTlRpY0lITWN3RE1OSTk3bDNGaEVaQTBSZ0dJUmhFSVIwV20yRFdQem8wWlBNekd3V2l6RnAwc1NoNFVPeWMzSVRFcEo4Zkx5blQ1dkVZckYwT2kyYnphbXFxdjM0azgrNnU3dlZhclZFSXZIdzhQaDU4MDhjRG1mVzdMZFlMSmExdFhWa1pPU002Vk5jWFoxd25JQWdDRVhSbnVkOUpUVDBDZ2dJQU1oS0I0SktwY3BrY3AxT3grRndUcDA2MjYxUWhvY1BFWXZGZCs0a3ZQLys4bEdqUnM2YnQrRDA2ZE04SHMvUjBmSGpqejlhdEhDK1hxK2owK2taR2RsWHI5MFlQRGgweXVRSjZlbVp4MCtjb1ZJcDA2Wk9Hallzbk1saVk2akphRFQybHNzLzMwWlA1VHhJb2RKZ0dPbnU3bjZVbW5iejFoMEVnZDVldE5EYjIrdmtxVE5OVGMyTEZzNzM4bkpUcWRRc0ZxdTlvL1BMTDljbkpDUklwVklZUnE1Y3VUaGh3cVIxNjlmTHVqb25UWnFvMCttZlBIa3lkZXJrQUg4L3ViemIybHBFb1NCa3ZQdVYwTkFySUNCeTJDZ1VhdHFUak96c1hMRlkzTmJXNXVucDhmV0dMNmxVS2dUVEV4TnUzMGxJOVBYMS9mWFhuUjBkN1RoT0hEcTRiOXIwS1RxdGhrS2hYYjV5TFMrdjRMMTNGMXRhQ3JkczNkSFUxRFQzclZuUk1TUG9OTHBlci91bnpZVG5Ocy8vNnVFK0t6R0RhWFNHV3FXK2s1QjQ2ZEtWNE9EZ0R6OWNYbGhZZk9uU2xmSGo0MGFOaWxhcjFEUWFUYWZUci9oZzFkbXo1MnhzYklZTkd6WjY5S2ppNHBJZk4zN0w1WEVCQU1yS3l0NnlaUnVMeFhKeWRIUjBjcG93SVU1a1pVbHE2R1cvKzM5UGY5OU1mWnFiUWFVV0Y1Y2tKdDZ6c0xDd3Q3Y2JPVElHQUFBNmcwMm1aUEQ1L092WGI1U1hWeHc5ZW5qdDJyV3hzV05jQnd6QVVCUUU0Y05IVGxSVjFXeFkvNFZNTGwvKy9rb2VqL3Zycjl2R2poc0xFTGhXcXlGLzR1UTRrZjlMWGc0RVFScU54bUt4bVN3T2s4Vm1zZGxVS3BYOGowQlAveGNJQWtFUXgzR05Xb1VnME15WjhiLzhza1dyMVM1YjlvR0F6Ly9rNDlVUEhqeThjUDRLZzhFMG1Zd01CajBpSW1MS2xDbDc5dXgrOTkxM0RodzQxTkhSd1dhemNRd0RBSmpOWWxwWVdNVEZqcUZRcVRRYS9kU3BjeVlUMmpOcnYrd1IrRGYwNjgzVW5nR2owZW1YTGw0VldZdDBPaDJWUWwzeHdiTEV4THRGUlVVd0JCY1hGMy8zM1EvdTdtNTc5KzU2OGlUZDN0NXU5cXg0dFVZanNySTZkUGlZeVdoWXUzYjFsYXZYOXU4L3ZHVEo0a1dMNXNFUXBOZnJTSitHdkFvSWdnQUFrbHFrMFdnME9sMm5OOVRXMXVYbTVXZGw1ZVRrNUlrYkdoRUVFVnBhVWlrVUhNY29GQ29JQWpqMk5QcEhwZ0FZRFhvdWh4TXpNaHJIOFY5KzNlbm82TGhnL3R4YnR4TWF4STJoZ3daMWRjbG9WSHA4L0xTMHRQUVJJeUtqb3FKMjd2eGQyaWxqTXBubFphWEhqcCthTUdIOHlKSFJGeTlkSGpreUpqYzMxOUhKeWRaV1JCcWhmbTZIK3U5V1JtL2ZHUUFRb2FXd3JVMWlaV1YxK2ZMbDZPamgzMy8vemRreloyL2ZTU1FJd21ReWZiRGkvWmFXMW95TXJMVnJWem81T21BWWZ1andjUUFBVnExZXVXL2YvdFRVeHovOStLMlh0NDlXb3dKQUVJYmhudDkyenlXb1ZDb0lRUlhsbGJmdkpLYWtQQ3dySzVOSUpIcTlIZ0FBQktHNHVyckV4bzZaKzlaYlFVSCtqWTBOQWd1QmhZQnZNcGw2akFRTXd5YVR5V1F5elp3WjcrcnF1bW5URnJsTTl2bm5IMi9kdXVQYytZdHpacy9nY2psMEJrZGtiWFg2OVBuUFBsczdjZUxFaW9weU9wMEdndUQ4K1hNaklpSjM3TmloMVdwVktoVUlna0lMUGtFQVBUNVFmM2FHK3FtQXlGZUc0emlNd0RRNlhTNlQwbWpVNjlkdkJBY1ByS3lzbkJFLzYrTzFheVpPbW1CcmE2TlFxcnU3Rlk1T2psVlZ0UmlHVWhBWUFLRUxGeStxVktxUFAxNjE2NC9kMlRtNVczNyswZDdlVHFOV1FoRFU0NXoyRmlpZHpxaXJyejk4K09qcDAyZkZZdkZ6TjRPaXB1cnE2dXJxNnZQbkw4VEd4aFlYRjF0YlcvLzg4MlpQRDFjeVVaLzhHR21LTkdwbGFHanc1czBidi9ycWE1UEp0SGJ0cWkxYmZybVRjRGQyekNnY00vQzRuSHhwcDE2bkN3ejA5L1gxV2I3OGZaVktYbEZSOWQ1NzcxMjhlSG5zMkxoang0N1RhRlMxUm1zd0dKbE1sbDZuSmZwMzNsbC9GRkNQZW1nMG1rcWxQbjd4VEZsWk9aL1BXekQvTFE2WEV4VTV0TG01dGFpNE5Ec256ODNOemNQRGpZeTdLSlVLdFZvTmdIQjZla1psWmZVWG4zOTg3T2lKN095Y1RaczNXb3VzTkJvTkRNTkFMOFBXb3g0YWpaNlFlTy9MTDc4cUtpb2liNENVd25OT05BQUFVcW1VckhjR0FLQ3hzZEhOelczZHVpK0hEWXN3R2JVbWs0bjhHQVRCR3JYYXczM0FwazAvZlBIRmVnNkhzM0xsKzc5cy84M0cyaVk0SkxTelM0YWlhR2VYbk1GZ0ZCV1ZYTDE2NWVIRFZKVmFiU0d3K1BYWGJSd09SNnZWeXVYZEJ3OGVnV0Y0d29TeEVjUENqUVpEZjE3WTl6c0JQZHNveFJnTVJsTlQ2N2J0Tyt6c2JGZXYrc0RHMWdaRHNjNnVUZ0lueHNTT1lkRHBVcWswUFNQcnpwM0Vnb0tDNnFwYXBWS0Y0L2pkdXcvRVl2RTdpeGMrZnZ6azVxMkVyVnQrc3JFV2FiVmFjdG9pbDFNQUdiTjdsbmQyNWVyTnBVdVhkM1YxOXVpR1hKbzlkMWZBdnk3V3FxcXFLaXNydTd1N0owMmFHRHRtZEVoSW9FNm5JMXR6d2pDczBXamMzUWQ4KzgzNnI3LzUzc25KYWQ3OHQ4NmV2ZURvNUNBV04rcjFlbkdEdUtxeTZ1N2RlMEtoY042OE9UN2VYblE2dlVzbVU2dFVMQmFMTDdBd0d2UzV1Zm1IRHg4cktTbDc3OTNGS0dyc3R4cnFYOHY0M3JhbnRWV3lidjIzWThhTW5EZDNUbVpXZGxaV2psNXZJRmMvVkNxVlRxZDVlcmdQSFJhT1lkaWVQZnR6Yy9QdDdHeGxNbGxqWStPUFAvNWdiUzM2NUpNdlB2bmtvNkZEQjJ2VWFsSTlQYSsrdDBiejhndG56bnFyb2I2ZVRHLzlQN3k0WHQ4V0VoS3liOS91d0FCL0RQdHpXeFRETUJhYmUvdjJuZVBIVC83eHg2L1oyYm01dWZsTlRVM2toZFJxOVh2dnZSTWRIZE1vYmtoN2t0N1oyUVZCc01GZ01CaU1JQWpZMmRtTUhCbE5wOUcrL1hhanA1ZlhoeDhzTXhoMHBQcjdtNFplc29CNlRTVUFCSUVBQU9BNFRqcWtuMyt4UGl3c2RPVEltQU1IRHF2Vm1zR0R3NEtDQWx5Y25SZ011c0ZnYkcvdnFLaXNrc3U3dzhLQzNkemNmL25sMXdNSERycTd1ems3dTN6LzNkY2J2djR1SkNSNHlaTEZwTjhEL0NYU2crTTRoVUtSZHNybXpWdVlrcEx5ZjFYUG42OFBCRW5GMjlqYWJ0KzZkZmFjR1labjI2S2tMV095T0Z1MzdwQktwVC8vL09PR0RkL2w1K2ZyOVhxOTNyQm56KytCQVg0UEhxUzJ0M2U0dTd1NURuQVJDUGdBUVhSMXlhcHI2ckt5c2lzcnE2S2loc1ZFUjMvejdYZWpSc2JNZVd1MlJxM3E4ZUY2QWhBdlhVOHZlUm4vTEs4Wmh1R25VWHdZaHVrTXhrK2J0bkc1bkpqbzZCODJiaElLaFFzV3pJMktDaGNLaFVXRnhXZk9uRHQ5NWx4RlJhVkF3UFB4OFdsdGxVQWdFUnM3dXFLaUtqa2x4ZDNkdmJhMlhxUFJyRjI3Q2tPTno0VjVnSCtaak1EdnZ2dngzTGx6ZlV4ckorOVpwVlJxdGRvcFV5WWhDTkx6YUFBQTRoZ1dHQmh3NmNwVk9vMGFGamJvMnJYcmpZMk5XMzcrS1NKeTJKTW5tVlFhbmNmbFpHZG5YNzkySXlIeHJyeGI3dVRrNU9mbjQrbnB3V0t4cmx5NTF0NGhmV3ZPN0FNSEQ5dmIyN201ZVJqME9sSXhWQ3ExUjBZdmNmaUFseTRnZ2lBUUJPN3FrcW5VR2t0TEt3cUZnc0RJNzcvdnFhbXBYYlJvMFE4L2JIUjBkSHgzeVdJbkp3ZVpUTDV1M2RkclBscjdPQzJOd1dCQUNGSmNWSEw1OHBXZ3dBQVdtOHRoTTMxOWZTNWV1bHhSVWRIVkpkdXc0VXNiYXhHS29uOWJFa3BtYUZ5NWVuMzkrZzMvazZZKzVGWGMzTnppWjB5blVHRFNFK3FaS0xrOExwZkxQWGZ1Z2toa2ZlVElrUWtUSm55MGRsVnRUVDFPRUZldVhENXk5SmdKUmJ1N3U3T3pzL2Z1UFhENzloMUxTMkZJY0pDdGpZMmpvK09aTTJkaEdJbUxpLzM5OTkzZVhoNU96aTVVS29VZ2lJYUdSaGFMK2R6VS9GSjR5UUxDY1lMT1lKUVVsLzd3d3lZT2gxTlgyN0IzMy82Mk5zbVBHNzg3ZHV4NFpXWGwyby9XR0Uwb0JFT2ZmdnJGNGNPSG82S2lqaDQ5dEdiMWgvSHhzd1I4M3VFalJ5U1NqcWlvQ0pHVjBNcktzcnFtN3Q2OWU2dFdycHc2WlpKT3AvM2J5UXNBQUJpR05CcnR1dlhmVkZSVTlGUUM5UVdDSU1MQ3duNzQvdHNCQTF4UUZBT2ZRWTR1YWpLNnVqZ1hGWlZjdlhxMXE2dHJ3NFoxcmk2T0lBUWxKdDQ5Y3VTb2pZM05zV09IWjgyY01XdFd2TE9UODVVclY2OWV2ZTdwNldVbEV1RTR3R2F6OSsvZnYzRGhBazlQajEyNzkzWjBkQkFFZVBiTXVhUzc5K1BpeHZRVWw3M0VFWHpKV3hrUUJPcDF1cUNnQURzN3U4OC8veXJwN3YxQm9ZUFdyZnNpUFQzeitQRVRFUkVSTW5tM2c3M3RvMGVQVDU4KzdlSGhzZXVQblVPR0RDWUlIRVAxWjg2ZW5UOS8vcFRKRXhNU0V1aDBPa0toQmdVRk9EbzZqaDA3QnNmUjUyWXVrbWN4UTFweGNWbG1aaWJ3djJqTTYrcnErdlBQbXk5Zk9oOFpPZlF2c1dOU1JnQUVRVE5uelNnckt4TUlCRjZlSGlBSXlXWHk3T3ljUC83WXFWU3FIajU4Q0FBRWs4bFk4Y0dLcnplczEycTEyN2I5UWtGZ2dNQWRIQnc0SE00MzMzem41ZW54K1dlZm9DaTJkZXYyWThkUFRKbzRua2FqL25kKzIvOTRCRi91NWNtZktZSWczMyszNGROUFAyWXlHVzJ0a3YzN0RsNitjbFdsVXNsa2Npb1ZzYlN5cnFpb0FnQWdMQ3pNM2QxTnBWUXdtY3lHQm5GUmNjbVlNYU9DZzRPNnV1UjZ2UUVBQ0d1UnlOWFZsYzFoLzlzM201bVpKWmZMKytqOWtCWXVNRER3b3pVcmJheXRkRHBkaitGNTluUlBWd2tHZzhIWHgzdkNoUEYyZG5ZOEhoY0F3UVp4STVQSmpCNFI1ZTQrSUNucEhnaVJ2WUwxWThhTTV2RjQ5ZlgxWFYyZDN0N3VNcG1NVHFjWEZ4Y2ZPSGo0eHMzYldxM0czOS92MEtFRFk4YU1KQS94ZU9rKzBFdU9BL1U0Q2hRS01tZDJmRXRMUzN1SFZHZ2hZREFZTlRVMU9UblpuMzZ5R2dEUXNOQVFCS0VVRnhkM2RFaUZRa0ZSY1hsR1JpYUx5UXdORFNrdExhUFJhT1NRUVJEazR1cks1L1BKd3ZXL2Zia2dDQnFOcHR5OFBLQlhHNGIvK3VZQkFFaFBUOC9OelE4TEMrbjV0dDdYL2ZNU0lEQiszTmpyTjI3MWZBWkJFQmlHeG93ZWZmakkwZnk4UWhhYjZlbnBVMWhZcEZBb1JvOGVJeEtKNkF5bXdXQW9LQ2o4L1BOUFY3eS90S3FxR2dSQlYxY1hEb2V0NzdYV2U3a2Flc2tDNm5rRk9JNGJESG83TzF0SFJ3Y01ReEVLWmUxSHF6Ly9ZcDIwVSticzRqSjhlT1RQbXpkdDI3Nzl1KzgzQ2dSOEd4dWJ1cnA2WHg4ZkRrY2c3WkJhV0Fpb1ZBUUFBSTFXNCticXd1V3d5VUwwdjcwaUJJRjZ2YkcxdGJYdk4wL2VlVWRIeC8wSHlVT0doUFU4MGQ5K0dNZFFEMDhQQ29XaVVxbTRQSzZkblMyVlNsVW9GSU1IRC9wOTErN0NvdUtpb2lKN085c0xGeStGaDRmLytPUDNBZ0VQQU9DeXNyTGc0S0JGQytmUjZkU2dvQUFRQkl4R1UvOVJEL0RTcHpDZ2w0WkFFRFNaVERxZHptZzBhVFhhYWRNbWJWai8xY1dMbHp1bFVqYUhzL2JqdFk4ZXBUQ1p6S0tpNHBFalkycHJhNFlPRFFjQW9LRkJIRHd3Q0laaEFpZWswaTVuWjJmZzM3eFRrQ0R3LzIxSDFWdTNibmQyZGlISTA2MlN2ejRnQ0lJb2lvbXNoRFE2cmF0TFR1QzR2WjBObDh1cHJxbHo5L0N3c2JaV3FaUmhvYUhYcnQvOGFNMnF1M2NUQnc4ZVFxSFM3dCs3cTFLcDl1N1paV2xwb2RjYjlIcTlUcWZIY1J3RWUrY1J2R1Q2eFZaR2o4UGJPejZtMCtubnpKbDUrc3lGN2Ivc2RITWJRS2ZUWkRLNVNDUmF2ZXBEbFZvbGszVVBHalN3dWFtK3RhMTk5dXg0RE1NTUJsMTdlMGRvNkNDQWVMRURSRUFRUktQUi95ZDNUc3Fsb0tBZ0p5ZDMzTGhZalVielQzMkFNQXpsOHdYV0l1dTZ1dnFBQUY4Mm14VVNQREFqSXpzc0xOelgxeWM3TytmWTBVTjBCcjJvcUZpcFBNTmcwdHZicFJKSis3Smw3dzBZNE5Kcks2WkhOQzlmT2lRdjN3TDlLLytTdllCaDZLSkY4OTlmdnRUR3hob0VRUmFMYldscDZlQmdXMUZlenVQeG5KMWRidDFPOFBQenNiUzBCRUd3dWJrWlJWRzNBUzVHbytuRlAwMENBQWppZjdsKzBlbDBiVzBTQUlSZjhGd0VBY0FJSE9EdlcxWmVqdU80d1dBTUN3dHRhMnVycTZzT0N3dHRhR2hRcVJRZUhtNENnUVdEeVFRSVlNaVF3VjkvdlM0a2VLQk9wK3RSVHora1h3aW9WNllmMGJPZENZS0F5WVRldVpOdzQrWXRkM2UzZWZQbVN5UnR5Y25KTzMvZlUxbFY0K0hoVmxkZkx4WTNqaDhYYXpRYUVBUkplNUxwN2UxcEpiSjhjWjBlMldpY3dXRDhUKzZjdklxTGk4dWdRY0ZrNFB1ZkhoRUVRWlBSRUJvNlNLRlExdFRVUVJCa0llUkhSQXc3Zi82aW82TVRoVUs1ZXk5bDM3NERPVGxadHJhMjh4Y3NVaWdVeDQrZkxDK3ZJQThLK211ajJaYzlhRTk1K1JtSnZkT21LQlFLalU2alVxZ1FCRkVRcExTODRxZE5QMXNLaGFkUG4xVW91dXZxNnQ5NVo5SGp4MDlLeThyNGZGNU5UZTN3NFNOOHZEMEJBR2hya3lRbFBaZ3hmUXFielhweHBUQkJFQXdHdmFxcWhqemJvSStRY2NqaFVWSExseS9Ec0w4UFBnRi9icS9pQW9HZ28wTmFVVms5ZVBBZ2c5NWc3MkNmblpOWFhWMHRsVXFMaTB0SGp4NXBiMitYbjE5MC8vNjlrcExTOXZhT25KemMyREdqWVJpbTBXaFVLaFdHNFdjRjEvM0Nnd2I2Z3dYcWxaZEQ2K3lVcFQ1OGN2dDJZbEZScWRHRWVucTR1VGc3K2Z2NXJ2dnFpOU9uejVTV2xzcTY1QmlHZGJTM3A2UThkSFoyOGZiMjFPdDFWQnJqd3NVckZBcnM3T3hvTkJxQkYvNUFDWUtBWU5qRnhRWDRYL3lPeVc4b0xpbXBxNjhuTnhuK2FWQjdKdVZCZzRMdjNidFhVbHBPcDlGd0hCODlhcFJFSWlrc0xEUVk5RXFscXJ0YmNmWHFGUlExZnYvZEJnUkJCZzhPcFRNNFhWMnloNm1QNzl4SktpZ293WEdDYkpqWEg5UUQ5Qk1MUktyblNYcld2djBIeGVLbURxazBPeWMzSWZHdXA2ZEhUUFNJcmR0MmpKOHdUdEd0dkhuckZvUHgxTUFNSGp4NHlKQWhkQnJOMXRhNnBMajAwODgrajRnWU5peGltTW40NzhOckNJTG9kZnFyVjYrVG9iOCszajhJZ25LNW5NOFhqQndaMDdPNCs5c3lqNmYyQ1lMMjd6L1kzTnc4ZnZ3NG84SFEzYTFrc1ZnS2hjTFMwcks3VzFGUVVGQmVYckZ6NTg0TEZ5NFpqWVpQUGw1ei9QanhFeWZQeUdUeXhxYVd6T3pzNnVvYUx5OFBCb1BSVDFveXZId0xCQUFBMlNiaHhJbFRLSXJ4ZUZ5ajBlZ2ZFQkFXR3ZyMU45L2pCREV5SnZyczJmTThQcitycXlzaDRZNWVyNCtJaVBEMTlaVktwVVlUV2xWZGQvRFFFUnFOeG1GemdIOTNzaktwTFlQQjRPL3ZHeGtaQWZ6dlZzSm56cHlwcXFxaDBhZ3Z0bW80anRPb05DY25wL3I2aHIzN0RxRVlJWmZMSVFnYVBueTRpNHRMUlVYRnc0Y1ArWHhlVTFOemRuYk9zbVh2N2R0L0tEWDEwZmp4NHhrTUJnQVF0alkyR1JtWmlVa1BlbmJqWC9iUTlRTUxCQUFBQ0FBNFFhQW9IaGprSHpGc2lOQkNjT3ZXSFVzcm9ZZUgrLzM3eVNFaGc5TFRNMXBhV29xS2lqdzhQQ0lqSStWeXVjbGtJblAvcmwyN0RoQ0VSQ0x4OXZFSkR4OXFNdXIveVJIcEFjZHhEcGRONE1DVks5ZitKOHN4MGdqWjJkbU5HQjVGM3RnL3VVRXdET3YwaGxPbnpsaGFXaW9VQ3FtMGs4VmlOVFEweU9WeUJFRzRYRzVPVG81ZXIrZHl1VlFxMWRQVDgvTGx5NHZmWG5UNnpGbExTK0draWVOOWZiM1piTGEzdDZlMXRhaWZ0TWZyRnhtSnBIbUhZUmlDSUFBZ1lJVFIydHE4ZXZYYTZkT241K1RrQ0FTQ3g0OGZWMVZWV1ZsWnhjVEV0TGEyNGpodWIyL3Y0K09qMSt1R2hnOTJjbmFwcUtpNGN1WHF3Z1h6ZkgyOTlQb1hOV1h1NmNLcFVtdm16bDE0OSs3ZC96cWJyQWZ5R3lJaUlpNWZPcy9uYzFFVUk1UGovbnBkS3BWMjZQQnhwVkl4Wi9Zc09vUHg0RUZ5VjVkTXI5ZVhsSlFvbFVwTFMwc0FBSzVkdTJacmErdmo0K1BsNWNYaGNMcTd1eEVFWHI5K0E0YnBnV2RMMUI1WCttVVBYVCt3UUQxckNoekhVUlRGTUV5djExcGFXclcxdFZWV1ZtRVltcGFXVmxWVnhXYXp1Vnh1ZVhsNWMzT3pRcUhBTUx5MHROVGYzMi80OEVoRnQwS3BVckdZclBLS3lvRkJBZVRYdnRpWnhYR2N3Mkc3dXJvbUpDYVJsVFI5ZnhDQndHTE83SGcybTQzakdQaDNXUUEwR3EyeXFpWXJPM2Y0OEVpVEViV3hzZUp5MkRkdTNDd3VLWlZLcFhWMWRXS3hXQzZYODNpOHpzNU91Vnl1MCtsRUlsRmRYZDJTSlc4TExYZzZuYTVIT2tBL3NEMGtMejhTM1N1MFN2VFllUUJIdmIwODA5TXpHc1hpM0x3OE1ualA1WExIakJuajRlSGg1T1FJUVdCSFIwZGRiZjNIbjN3eFpmSkVKMmZud3FMYnFNbW9VcWs1ejNiai8razNTczV3T3AwdWFuakUxeHZXci9oZ1pSOG5Nb0ZBTUgzNnRCa3pwZ3VGd3IrV0pQZHM5a0VRMU5MY1VsMVY3ZWJxT25UWWtOMjc5NG5GamI2K1BpTkh4UWdFZ3U1dVJYMTlRMjV1Ym5aMnRsYXJiV3RyazBna0lBZzZPanBhVzF1VGJZMTY3OWYyRXd2MDhnVkU4cXhXNHFtcHh3bUN5K09WbHBiVzFOUVlqVVpuWitjNWM5NGFPemJXMWRXVndXQ3dXVXdRSkJRS2xiOS9RSFoyenU0OSsyYk1tT2J1UHFDZ29KRE5acE1OSzEvd2ZvbW45VGVRUWErYk5Udit3c1ZMRHg0OCtPOTI1c20vOHZiMjN2SExWamFiUlJZWVBYZmRuclJkRUFRNVhBNkttZ2E0dVc3ZXZBVUVvUmt6WnJpNnVsaGFDbGhNcGw1djFBMDFqQjgzdHFDZzhOejU4N2R1M2VyczdFeE5UWjB4WXdhZFJ2dHI3NGYrb0I2Zy93am9PVUFRME9tMERRME5lcjErOU9qUnk1Y3ZqNHFNRUFpNEJFR2dHSVpqdUZLbGFtNXVxYTZ1a1VxbEtJcXRYTG5heWNscCtQRGhLSWFoQmhNTXdXVEQ2SC9LNkNESEE4TndIcGNUR0JqdzRNR0RQcjFFQkpITHV5a0lUSllHUEZjQlFsNVJwOU9CSUVUZ1JIdDcrNElGQzVWSzFmVHAwd3NLQ2d3R3ZZZTd1MGhrUmFmVCtIeTJoWURqN093WUVCZzRjT0RBUTRjT05UWTJ0cmEwb0NoS1pzcjJRL3FqZ0FpQ0FDRktSVVdsd1dCWXRtelp3b1VMR1F4R2c3aXhwRVNsVXF0QUVPVHpCWTZPRG9HQi9zRUQvUnZFVFM0dVRpNHVUbzhmcDVXVWxIejI2WmNXUXVHYU5TdkpzTjZMTHdTQ29NbUVkblJJKzNqRDN0NWVJcEVWam1OL20yTktFQVNOUnMzTXpEbCs0aFNLb2hLSnhOSFJLU1ltZXVqUThJRURBNFVXQXBWSzI5VGMwdGpZWkRBWWFEUXFqOGVqVW1sVHAwNzE5dmJldUhGamJWMmRVcWxrczIweHpBajBHOFBUUS84U1VFK2R1VTZyZWZJa1k4aVFJWDUrZm5sNWVaMmRuYlcxdFFpQ2lFUWlvVkJZWFYzZDJ0bzZkbXhjWk1SUUx5OVBENCs1czJiT05CaDEyZGw1bXpkdkhSUWFZaUhna1Vrekw3d1dRRUZnU1VkbmNYRnhIMi9Zd3NJQ2hpRWN4Lzc2QWZJZVVCVHo5ZlhXNlhTMnRuWjM3eWFJcklRVUtwUEFzVFpKYTJMaS9mc1BVb3FLQ2lNaUloQUU2ZXpzYkdscEVZbEU1R0ZrWThlT3ZYYnRXazVPM3ZRWlU4a1V4SDdpK3Z6NWdQMWhHZDhic25udm84ZFA1czFiT0dUSWtBRURCbFJYVjkrL2Y5L096aTR1YnV5Nzd5NzI5dys4ZU9IY0R4dC9Xck5tdFZRcU5SaU1ERHFOeStXMnRyVzJ0a29takI4M2Zud2NocUV2ZnRIa29vL0ZZaVVtM1pzMmZhWk9xLzB2YnBWY3ZVZkh4Rnk2Y0piRmVsRm9HTWR4R3BYYTNpRTljdlNFV053NE1DZ1FvU0JTYWFkR28zTWI0RkphVmw1U1VuTDI3RWt1aDNQMTJzMlRKMDg5ZnB4bWFTbU1qWTJGWVRncEtjblQwL1BVeWFQUFRZNzloSDRSaWU2QklBZ1loclE2M2Y3OWgvaDh2cHViRzVWS2JXNXVYckhpL1crLy9VYWxVbloxZFFFQU1EQjRvSTJON2VEQmd6NWE4K0ZiYjgzcVZpaTFPcDFPcDVmTDVlTW4vS21ldjUzQ2VnZHdjUnhQVGs3Vi9YUDY0Z3ZvaVJZcXVydVZTdVZmeStsN1h4R0NJTDNCWUdmdk9HeG9lRUZCQVkvUEx5Z284dkx5WExseStaSjMzK1B4ZUVGQmdSWVdJZ2lDS2lvcS9mMzlmLy85TjNjM3Q1YVdGbXRyNjBHRFFnb0tDbTdmU2FRejZBVGVMNkxQdmVsSEFucldLSU9lbnA1VldGZ1VIaDQrZE9oUWlhVDlndy9lMzdScHMxS3AxR3ExRERxanNEQlBvOVlhREliczdGd0tsZVh1N2psdVhLeXpzL09xbFI5MGQzY1hGaGEvb09pdVY2WVJ4bUF3bXB0YmI5MjY5Wi9mWWU4djdDbWhsMGdrQ29XQ1BIM25CWThHZ2lBQVlQZnVQNGlLaXB3NGNieS92MzljM0doYld3ZWpVWmVUazhQaGNLcXF5c3NyS2gwYzdDc3JLOFBEaDV3N2Y5ckt5cEpHbzQ4Y09jck96dTdzMmZOS2hScDZkc2JQeXg2clArbEhBZ0tlbmw2QVhiMTZEUUNJZDk1WlhGdGJ5MlRRRnkxYW5KT2RjZS9lZlFSQnpwNjdjUERna1NOSGowRVFlUHIwMlpNblQ4aGxVazlQaitycUdnYUQ0ZXJxbXBDUUJNR1V2MDJhNmQyUmc4MW1TOW83UHY5aVhVbEpDZkFmRHdtNUdtZXgyU3dXbThmajJkblpCUVFFZlBycEp4NGU3Z2FEOFc5M01IcWdJRWk3cEQwek0ydnMyTmlDZ2tJT2g4WGhDUEx6Y3IvLy9zZm01dWJLeXFxOWV3OGNPSENrcUtoRW85RWNQWG9NQk1GVnExWTllSEEvTURBZ05qWTJNek1yS3p1SFRxZjNLL1VBL2NxSkp2T0JKSktPNU9TVVNaTW0ybGlMSHFha2ZQUE5ocjE3OWhTWGxNeVlNZDNieThQS3lwTEQ0YUFvcXRGb2lvcEtIaVNuSkNjbnY3OThtYU9qUTMxOVEzejg5TzNiZjVXMHRRbUZmQlI5M3FVbDFRTkJFSVZDZVppYXR1SHJieDZsUGdKQjREOFpFZkp2bzZPalY2NzgwTUxDZ2lBSUtwWENaakVzaEVJYkcyc2NRM0g4NzcwVHNpVUlqbU1VSnV0T3dsMDJtejA0TE96TW1YTWhnMEwyN2R2NytQR1QwRUdEamh3K1lHZG5TMmN3Y0J6dmxzdmJKTzFQbm1TdS9laXo5OTU3SnlvcTZ0eTVjeXRXdkgveTVNa0hEMUpHajQ1NTJhUDBQUDFLUUFDRlNxMnVya0pSZFBMa0tlZk9YN0swc3JwKzR6WU1RMTl2K05MYTJob0FFYTFHcVZRcFVSUEtaRERpeG80Zk4zN2M5V3ZYdG16OUpUcDZSR2xaeGZScGsvYXhXVmV2M1ZpK2ZLblJxSHl1cnBsVWowS3AzckhqdDkyNzl5aVZ5djg4ZUVnUUJJdkZXci91eTFHall6Rk0vM1N2RGNkUkRFT05SdURmMUVnUUNJSW9GSXBMbDY3TW1qVkRKcGNiaktiYmR4STcydHQvK3ZGN1J5ZFh2VjZqNkpacE5Xb0toZUxnNk9UaTZqWmtjT2lUOUt6OUJ3NjV1cm9XRjVmSzVkM3hNNmJuNStkcE5Cb0VobkM4SHhtaC9pSWdNcDhWQU9EbTVoWlhWMWNtazVtZG5WVmZYKy9qNDdObTlRY2dTQ2hWcWl1WHIxMjhkTG0rdnA1Q29majQrUHI1K1U2ZE1uSHlsT2tVS3UzQ2hVdHVibTVTYWRlaWhmTi8zZm5IbE1rVExTMHRUQ2JUWDNkVlFRQmdNSmdNQmtPcFZBTC9XV2tZK1JsN2UzdFhWeGVqUVcwMEdpRUk3RWxyZjBHRnpaOTlaSmpzcytjdW1VeW1LWk1uM2IxN1h5S1JHSTJHelpzMk1wak1hMWN2cHp4OFZGMWQzZERRd0dhekJ3NGMrTzZTeFVGQi9wR1JReTBFL0I5LytybXBxVEVyS3lzZ01PaHgyaE9OV2lNUThISDhmMWxTMGtmNmx3OEVBSVRSaERrNk9vckY0b0tDQWc2SHMvUzl4UmlHbWt6WWpsOTJ2dlB1ZXpkdjNqUVlER3RXci9yMGs3VytQdDRYTGw0dExNZ2JOeTdPeTh2VFlEQ2tQY2tZT3piTzFzYm00TUhERkNxdGR4SXhBQURraGhTWHk5Nncvb3M3ZDI1T25UcWxkeC9DRjBCK1FDUVM4ZmtDZ3NCaEdBWkJDQVRKN1JEb243SkhlcmJBcUZTcXBLMzE2TkZqNzcyM1JLdlYxdFUzNkhTNnlaTW5jbm5jWThkT2xsZFV4c2RQMzdCaDNZZ1J3M055Y3ZidDJ6ZDMzc0s4dkVLVDBlRHI1N05nL3R6NitvYnM3QndBQUsyc3JIcENRUzk3bVA2azN3bUl6K09JUk5aTlRVMXF0WHJjdUhFQUFNRXduUEx3MFM4N2ZzVXhERUdROWV1L1d2VDI0b0FBbjJuVFo0d2RPK2JtclRzQVFkalkySWhFSXIxZVgxVmQvZVdYbjk2OWR6OHpJNHZGZXBxKzJPTlRreU9xMDJrSEJ2a2ZQWEx3dSsrK1lUSlovMVpENUg5MWNIQmdzWm5rOVBHc2V3THc0cjhpcjB1aFVuLzc3UTk3ZS91cFV5Y21KTjUxY1hGbXM5bnU3bTZsSldYdDdlMXJQMW9WRVJFK1pNaWc3ZHQram91TkJRQ2d1cnJxeDU4MmFiVTZqVnJ0NCtNWEdCalEyTmdvbDh2czdPeGdHQUw2V1Npb3Z3am82VVNBWS9ZTzlpcVZxcUtpZ3NQaE9EazdhM1U2Q0lMdjNFbFVLaFVRQkJFQXdPVndBUURYYURRYXRWelJyYkMxdFFWQXVMbXB5Y25SUGlweTZJTUhLZjUrZnRPblQvdHA4eGFGUWttaFVIbzAxTHZ1VEt2VjBlbTA5ZXUrMkx2bkQ2RlErT0pjWmd6RExDd3NaczJLUjVEL3RKWEgweTFoSEdleTJEZHYzRWxPZWZqdE4rdExTOHBsTW5sYzdHaU5SdHZXSmhFSStFd21zNjFOb2xLcU5Hb05oVUpoY3pqa256OThtRnBTVWs2aFVIUjZ2WnVibTA2bmEyeHN0TEFRc05sc3JCODBWT2hOZnhFUThIUm55dVRxNG9MamVGbFptWVdGQlF4QkdJWVpqTWJHeGtZQUFDQUl3bEQwajEyN2EydXFlWHdMRENjY0hCMFdMWnBYWEZSVTN5RDI4L2YxOHZiaWNEaTNidDladGZJREJwMithZE5XQ29VSy9HdGpUZkphTUF4akdLYlg2eFlzbkxkbjk0czBSQkRFaEFrVExsKzZNSDVjblBIZnJkVjcvdVNwNjhPZzE5VFViTm02ZmZYcWxTNHV6b2xKOTJLaWgzTjVGdjcrUHRldjNiUzF0Wmt4ZmFyQmFHS3hXQXdHNDlUcGN3a0pDZVI3VUNxVjlRMWlHRVlRQkxHenMxTXFsVlZWVlc1dUF6Z2NUazlUMkg1Q1B4SVFBQUFvaWdxRkZuNitQblYxZFdxMTJtUXlZU2dHRUFTWnIwTUc3bUFZUG5qbzZQSGpKL0p5OHlTU3RzT0hqeTFkOW41bzZDQTN0d0Y2blhiOHVMalMwb29Hc1hqcjFzMFptWm1IRGg5anNyaTlTMkdBWHV0NUVBUTFhdlhNV1RPMmJ2MlpETEU4MXhjQkFJRGc0T0I5ZTNlTmlJN3E2WC80WWlQVTIvVlJxYldmZlBMRmtDRmhiNzAxNy9TWjgwNU9qb0dCL25xZEluN0d0TEx5OHNYdkxDMHFLbTVyYmJsLy84SHZ2Ky9OenM3aDhYamtkd0FBUUJBNFR1QmFyVmF2MXpjMml0VnE5YUNRa0wvZGJudTU5QzhCQVFBQUFNU29VZEVjRG9lc2xsSXFsVlFhMWNiR0ZnQUFzclhQRjE5ODlzNDdieGNYbDE2OGREVW5PNC9GWWdYNCsyZG5aK3YxZWh6SHJhd3NvcU9IWDdwMFZXUmx1WG5UeG4zN0RseThlSW5GNXYydGhrZzNXS3ZSTEZnd2I4MmFOZVRsbnpNd1U2ZE9zYk96VWF0VS83YWZRWTlManVFNGdpQW1GUHZvbzA5WkxPYm1UVCtrcGFWMmRja21qSTgxR1BRMEdyMjhvcXFqb3lNc0xGVFNMcmw3TC9ueWxSc01KbVByMXMzanhvMGx2NGZGWWprNU9abU1wcTZ1cnNiR1JybThPelEwMU5QVC9kOFczZjYvNStXbnRQYlFzOGtnRW9sd25MaDU2NWFMaThzQXR3SE9UbzVLcGVyYXRlc0VnWU1neUdLeWxFcWxrNU9UaFlXRm5aM3R6UGlwdzRZTjNiTjN2OG1FRFl1STB1dTF6azZPblYyeTFFZVBwMDJiYm05bisrT1BtNnlzTEFPRGdveUdmMmxxMGRzeEFnQjg4SkRCY3JraU56Y1hBSUNlWHBZMEd1M0REei93OXZIcVNaWC9aL1U4L1U0TXc2aFVLb3JoSzFkKzFOWW1PWHo0UUx1ay9lYXRoRG16NDRWQ0FRVEJLclZtMWVxMU1USFJIMy84Q1oxTzdlam85UFQwTUptTUdSbFpLU2twVFUxTkFBQU1IRGh3OWVvUGxVcDFSVVhsK2ZQbnVWenV0cTAvVzFwYWtFMzcrcFdHK3BHQWdEOVBQTUVDQXdPckttdXlzck9DZzBPTVJqUW9LQ0FuSjFjc0Z1TTR6dVB4UHZ4d0Jadk5rc3U3SHoxS1U2dlY0ZUVSTmpaV2UvZnVkM2NiWUdFaHdEQXNJTUMvdExTc3JMUjhSbnk4U0NUODhhZE5iRFo3MEtCUTFHUWtsMUc5cHlGeVU1MU9vNDJNaWFaUjZYbDVlUWFEZ2Z4UGJEWjc4ZHNMWFp3ZFRTWVRBUFR1SFBVdkU5bXpSUjVCbmxldlVtdldydjFNSXBFY1AzNFV3N0RqSjA1UG5ERE8wOHVucTB1S291Z3ZPM2FxVmFxZmZ2eE9xOU5zMy80YkFBQ09qZzR4MFZFeW1lem8wZVBrNFFvYk5xeno4L1VyS0N6T3pzNSs4Q0I1NTg0ZEkwWkU2blI2TWxmZkxLQi9wSmNEUVJrK1BDby92MUFpa1hCNVBCQ0VJeU1qSGo5T2s4dmxQLzMwbzZlSHg5bXpGK0ppUjF0WldjRVE0dW5oNHV6aTh1aFIydDI3OTFBTWYvVG9DUUxEWThmR1BrblBxSzZ1bWpsenRxdUwwOWF0djhqbHNxSGhRMmcwS3RuY2lXd2YxbE9rUVo2L1BHcjB5TWpJU0JSRnlRMzJXYk5tdnZYV2JESWFTYVZTS1JRRUJBRU0rN09laHZTbEVBUkJFQVNDSURxRFZWVlYvY0dIcXlrVTVPQ0JmUmlPSHo1OExIcEVwTCsvMy9Iako5TXpzckt5Y3k5ZXZMeGl4ZnNEQjRZb3VydFZLblZzN09odWVYZGVmc0hDUlF1U2sxTnFhMnVYTGwyNllNSDg3Sno4bHBhV2hJU0VGZTh2ZS92dEJZWm41ck5mcVFmb2J3THFOYTNnVkNwVkxHNHNMQ3lpVUNocXRackg0NDhZTWJ5dXJ0N1cxcGJQNHljbDNZMk5Hek40Y0xpVGt5MElRUWNPSGk0dUxna05EZlB4OFE0S0NyaDArUXFOUm91UG41YVJrVmxSVVRGMTJyVFEwT0I5K3c2a3AyZDZlSGpvRFFhNVRFNFFJSWZMUVdDSTNEV2owV2dvaW9uRmpYdytiOXEwcWJObno1dzlaL2FzbWRPWVRDWUVRUWhDYVdwcWFXdVRBQURFNS9PZXRYOEFHUXlHMFdpU3RMZkxaSEtUQ1UxT2Z2alo1MStGaFE3NjlkZGY1UEx1NHlkT2pSbzVJalIwMExadHY4SVFOR2IwU0ttMGkwcWxabVptK3ZwNE9UcmFCUVFHMk5nNHBHYzhLU3V2Y0hGMnZuSGo1cWhSb3hZc1dKQ2ZYOURXMXBxWGw0ZGgyS1RKRTExZG5GQVVCVUdvcCs2Zy85RHZFc3BJcThCa01rK2NQRk5iVzI4MEdtdHJhNTJkbmFsVXFyT3pzMEFnVUNnVWtSRVJKMDZldUh6NXl2SmxTK2ZPblMyMHRGcTgrTjJBQVAvSWlHRlhybDZQaVI3dTVqYmdxM1ZmanhvVk0yWHl4T1NVVkxWYU0zLytYTFZhdmZHSG54NGtKNnZWYWc4UGp5RkRobGhhQ3NlT2pYVWJRQVlPS25mK3ZxdWxwU1VnSUlERllnNGJPalJ1Ykt4T3E0Wmh1S3RMZnZMVUdZVkNKUlkzZEhSSVkyTkh2YlA0YlJhVFRnREEvZnNQYzNMekpCTEpvMGVQdEZxdG5aM2Q4bVZMNTgxZlVGeGNjUHQyNHVqUk1YUWFiYy9lQTBLaHhVY2ZyZHExYTYrMXRYV0F2OTh2TzM2Yk9YTkdmUHlzM056TUhUdCtMeWdvK1BYWEhUQ00xTmZYODNpODJ0cmFqbzRPbzlIWTNOd2NFeFBUME5Edy92SjNYVjJkRFFZaitOZDZzNWROLzdKQUpDQUlFZ1NRa3ZMSVpESlpXVmtGQlFYZHVYT25ycTR1T3p0YkpwTmhHS1pVS1VlUEhpMFFXSnc5ZC83SzFXc1NTWWUxdGZYTStKbCsvZ0d1TG81SGpwMGNOalRjWURDMXRrcEtTOHNtakkvVDZuUUpDVWtlSGg1ejNuckwwdElpTXpNclBUMDlNREF3S0NqbzdObnpOalkyTnRiV0Q1SlRyYXlFbnA2ZUNvVWlMaTcyMHVVclRBYmR6YzNWWkVKLzI3bWJ5K1Y0ZUhoMHkrVVRKNHpyVmlqNUFvR3RuYzNldlFmTHlpdUNBZ09QSHo5ZVZsWStjZUxFWDM3WkdoMGRjemNwOFVsNjF2VHBVMnByNjVLVFU0MUc0K3haTXg4L2ZxTFJhRmV1WE83ZzZFS2xVaHNiRzArZlByTjc5MTQrbi8vVmwxOHlHZlQwakF5eFdIei8vdjJzckt6T3prNHVsenRseXBUbTVtWUFBQVVXRnU3dWJpYVRDZXhuRGhEUWZ6WlRlMFBtSmJKWVRJbEUwdGdvcHRIb3c0Y1BiMjl2ejh2THUzNzlPbzFHMXh2ME5DcHQrUENva1NOanVycTZ6cDA3cDFRcWxVcmxoeDh1ZDNQMzh2SHl5czByOFBIMmNuUzBwMUFveDArYzJiRCtjNUhJNnR5NUM2R2hJYk5telJ3MU1tYjdMNzhsSmlhdS9QQjlTNkhnN05tTC9uNis4VE1tTTVoY3JWYjcxVmZyUEQzZEowd1krekQxY2N6SU1jM05ZcWxVK3Rsbkg1MCtmWDVnOE1EWmMrYnFkV282bmZvNExhT21wbmJMenovdTJMR1R3V0RjdkhsdDNMaHhYWjJkaHc0ZFFsSDAzWGNYU1RzNkhqNTh0T1NkUmZmdUp6Tlp6UEx5aW5uejVvQWc4aVR0MGFGRGg0cUxpNzI5dldOall3bUMrUGE3NzRwTFN1ZzBHZ0FBREFZak9EalkxOWNYUVpCcjE2NVpXVmxScUZRdWgwMzBzd0IwRC8zUkFnRUFBTU13aDhOSlNYbW8xZXFHRGgwYUVoSmlhMnRyME91WHZQdk93b1VMQXZ6OFRDWlRXbHBhVWxKU2UzdTdvNk1qbDh1OWRldFdlbnJtcUpIRENRQ3NxNnR6ZHh2UTF0WTJlbFJNWXRJOWR3LzNnQUIvVnhlbm5Oejg5UFJNZTN2Ym1UTm5OemFLcFIzU21iTm1YN2h3WHRHdENBNGVpSnFNaHc0ZHdUQnMwcVNKTlRXMU5UVjFCUVVGNVJXVlJxTXhLaktDeStXY08zZlIxbGJrNU9nZ2FXL2ZzV1BucUZIUmZuNitlL2NkL1BiYkRURXhJKy9kdTN2L2ZvcW5wOGVraWVQWWJPNjE2emV0ckt4Q1E0T3JhK3BFSXF2S3l1b0o0OGVlUEhucS9SVWZxdFZxYjI5dmhVSng0OGFOaHc5VDJXejIxQ21UbHk1OWIrR0NCZmIyRGp3ZUx6NCtuazZuSXdpU2s1TXpPQ3gwMUtob01yclkzOHdQMEE4dEVQajBWRytEajQ5dlVGQ2dScU8xdHJiV2FyWFoyZGtMRjgwTEN4dU00OWlZTWJITGxyMHJGamRtWitkZXZIUTVOVFVWaG1FM043ZTB0TFNQMW42MmNPRUNITWNJZ3JDMHRBSkJzTE96VTZ2UkFnQmhZU0ZZTUg5T2RrNyszYnNQeWtvcnVycGtjWEZqVkNxNVRDYTdlZXRPYmw0Qmc4SEl6c25adCtjUEFBQXVYcnhjV0ZRMGY5N2MrdnI2MjdmdnhNU01tREJoa3BlWCs5cTFuOFRHanFtc3JHcHJhMnR1Ym9VUnVwT2o0NU1uR1kyTnpYcTlZZHEwU1E3MnRqcWRIZ0RnOXZaMkZvdEZvVkFGQW9GU3FXU3pXWThlUC83MHM4OTVQQjZOUmt0T1RuWndjRmk2ZE9tNHNYRUJBYjRpa1RVQXdnQmhpaGs1L0k4LzltUmxaVmxiV3djRkJUVTJOZzRmSHNYbGNyUmE3UXNLL2w4aS9kUUNBUUJBb1NBZEhWS1pUR1pqWTZOVUtwVUt4Ymp4WStsMFJsTmpVM1YxbFkyTnlNSkNFQlFVTUdmT3JOallXS1ZTL2ZqeEl3ekQ2dXJxVENiVTFkWFYxZFhGMXRhbXFhbnA0TUhETXJsODRNQ0JBb0VBTlJtZG5Sd0pBdGl5ZGJ1RHZYMWs1TENmZnZvNUxHeHdlSGg0ZlgxOWRYWE55cFVySWlOSC9QSDdyZ3NYTDIzNWVkUENoWE1qSXlJYUdocFBuandWRXpOODdOZ3hSVVVsRFExaWQzZjNKVXNXUDNpUTNORWhpWWdZdG5mdmZnUkJGcis5d0ZJb0lBQ0FSbWNrUDNqd3g2N2RLSXFOR1RNYVJWRXFoWktabVgzdTNJWEt5a3FqMGNoaXNkYXZYL2Zicjc5TW1UclJ4ZFdaeWFCTE83dUtpMHNzTFMyb05MWlNxUkNMeFRiV0lncUYwdEVoSFRFOGtrNm45YXQ2K043MFV3R0JJSWpqbUkyMWRXTmo4OE9IcVpaQ0Mwc3J5OXpjZkFTQlQ1NDhuVjlRTkRZdWxqd05JNytnOE02ZEJDYVR3ZWZ6T3pvNnlOai85T2t6WW1OSGFiV2FhOWR2c1ZpczZ1cnFpeGN2cTlVYThoU2N3b0tpNXVZV29WQllVRkJJRUlSRUloR0pSQ0tSdGJXMTFhSkZDNUtTa2padS9KRktwVXlaTXNYWjBVRnZOQlFWbGR5NGNVT2xWSWVIRHdrTUNLaXBxUjB4WW5oNmVvWmFyZTd1Vmtna0VqYWJEWUpnU01oQVBwOWZXRmo4dy9jL25qMTMzc3JLeXM3T1hxL1hqeG9aeldhemp4MC9rWmlZaUNDSXQ3ZDNURXdNQ0lJTkRRM09UazRJREVNUVZGY24zcmh4azFBb2JKTzA1dVlXQkFRRUpDZW5ORFkyalJrenlyZFhIUHhsRDh2ZjBCOEYxTFBQUUtmVHZMMDlyYTJ0UzB2TEhSenNoVUxMdWpyeG8wZVBZc2VNOHZmelFSQWtPeWYvMEtGakk0WkhoWVdGdXJpNEJBUUUxdGJXcUZTcUQxWXNjM0p5dUhVN2lVS2gxZGZYUXhCa2IyL1gzdDZlbEhSZnE5WEZ4SXlZUEdtQ3Q1ZkgrUEZ4T0U3b2RQcHg0K0p1M3J5MStPMjNzN0p5amh3NUdoMGRiV05qODkxMzM5ZlUxdi94eCs2Q2dvS1ZLMWQyS3hTUEhxZEZSMGRydGRyVzF0YTQyREZsWmVXZmZMd21MRFFrTW5MWTVNa1QyeVNTUFhzTzNMaHhpOGxrMEdoMHZWNC9ZSUFyakNBZ0JMcTdlNmFucDJkbVpzNmVQV3Zac3VXQmdZR0RRb0pMaWt1VFUxS0hEQW1qVWlrTU9pTTdPNmU1dVVVa3NuWjJjaXdySzdlMkZzMlpNOVBQMTZ1Zm45M2NId1VFOUQ1MEY0SmNYVjFkWFp5eXNuTGtjcmxjMWhVUkdURjV5a1NDd0EwRzA3NTloNlpQbitibjc3OXo1eDhQSGp3b0xpNFdpOFgyOXZhclZuM1lJZTNVNlF6SnlROFVDZ1dDSUNPR1I4MmVQZnZxdFd0YnRteTVkU3RCSnBmYjJ0b0NBSGp0MnMzbHk5L055TWlrMCtodTdtN0hqeC8zOXZZbUNLSzF0ZFhkM2QzV3h0cENhTUZnTURVYWpaK2ZYMWRYbDFUYUdSMDlJaW5wWGx6c2FJTkJYMTVSNmVuaGtaeVN1bTNiTCt2V2ZaMlptVEZ6WnZ6U3BVdFRVbEtzckt3S0NncUNnb0xZYkk2OW5haTlYWHI3OWgwQUFHcHJhd3NLQ2hnTTV2TGx5ekl5TWxRcWRXQ0FQd3hEZ1lHQnpjMHRTcVd5UXlvZDRPbzhaM1k4ajhkRlVWUC9QS2l3aDM3blJKUDAzdW5VcUZYVzFxSjNsN3pkMmlhaDAybldJaXVqMFFoQmtFcWxsc3ZsY25uM3JsMTdIQnpzMzMxM2NYRlI4UmRmcnJjU2liaGNMcC9QdTNuelRuNUJ3YUdEKzY5ZnYxbGFWcEdkazVlZG5jMWtNbU5qUjFNb2xIMzdEcmEwdExxNnVsZ0lCRFUxdFQ0K1BzbkpLVlpXbHU4dWVXZmQrZzJEQjRjdVgvWWVqTUFnQ0RYVU4zejczVVpyYTlISWtkRy8vdnA3VUZBUWg4UE95YzMzOC9QN2FPMG5TVWwzaFVKaFNFaElaMmRYWW1MaWxTdFhaREk1aDhPWk1tV3lXQ3crZVBEUXdZUDdLUlNLbzZNakRNTyt2cjd2TDM4UEo0aHo1eTd3K1h3cWxkYlkyQVFBZ01sa2NyQzNmWC81ZTIxdDdUd2V4OEpDWUhoMjFtNS9WZy9RYndVRTlISVlZUmdtemJpVG96MUJFR1JlTUlwaWxwWkNLMHZMalJzMzJ0cmFidHU2eGR2SEp6ZzRCS0ZRTGwyNlFnQ0FUSzdZdjM4L2pVWnpkbmFjUFh2bTBXTW42dXJxSkJMSjNMbHZiZHUyamNCeGpWYVprSEF2TmZWUmc3aTVzMU1tazhucjZ1b0NBZ0x1M3J2SFlOQ1hMM3NYdzB3R2c1NGdDQmRYMTJWTGx4dzZmR3lBNndBS0JhbXVyc1p4dkxXMWxjbGcrUG41cmwyNzJ0YkdsczVnanhvMU1qTXpzN3k4ZlBEZ3dTRWhJWEZ4c2VmUG44L016TGgwNlpLLy96Y0dvMkhNbURFN2QrNFFXdkFobUY1YVdyNTM3MTZOUnJQbDUwMmtQc2dTQUdkbkJ4ekh5Y0wrbnJQTStxMTZnUDRzSUJJUUJIc09UdTg1V2hzRVFad2dBSUI0Ly8ybElBamV1SG56L1JVZlJFZVBtRGh4d3ZEaFVmZnZKOWZWTldSa1pOWFUxQmlOcHQ5KysyUEJndmxVeXROcXcvejhnbDI3ZG5WS081VXFKUVJDMWRYVlQ1NmtWMVZWQ29VV1VxbTB1YmxaTHUrbVVDZ3dEQnNOaHFjSE5tRW1Eb2Nqa1VqS3lzdmIyOXZiMjl1cnFxb0lnbWhya3pRMU5SMC9ma3FsVXJtNXVkWFgxeXVWU2dzTEN3ekQyR3gyVlZYVmpoMi9BZ0J3NTA3aTlPa3phbXZySXlNamVEenV5VlBuc3JLeTc5Ky9iMjl2djJiTjZpRkR3bm9mbnRMN0dmdXo0ZW1obi9wQXZYbmF3S3dYQkVGQVQwc3NPTkV4STRZTURyTzJzUWtNOFBmMzkyV3oyQThlcERRMk5wYVdsdWJsNVFFQWtacjZxTGEyVHF2VlZsU1VkM1IwME9sMEdvMUdvVkFJQWl3b0xIejBLTFdycTZ1MXRiVyt2dDdXMWpZdExZM0Q0YVNsUGZIMDlQTDA4a0VRaUVham1WQnM1Kys3S2lzcjFXcDFkWFUxazhsTVRFd2syeDQwTmpZS2haWXNGcnVyUzE1U1V0TFEwQURETUlWQzBXZzBtelp0TGlnb0JBQUFBQWhiVzl1OHZMenc4TERBd0VBbWt3RkIwTWlSTVI5K3NEd2lZaWoyVERIUFBTUFF2dzNQbjZQVDN6WlQvME9lZWRrRUNBSTBPaDJDRUlMQUREb2RqVTQvY2ZMTWpoMi9hVFNhNnVycW5zUWRCRUZRRkowM2I5NmFOYXNSaEdKdExVcExlM0wxNnJYYTJob013d0dBS0NrcHRiT3owK3QxWkhOQ2UzdUgrZlBuK2ZuNTZQWDZwS1I3VjY1Y3BWQVFDSUtjbloxYldsclliTGF6czdQQllCQUlCRU9HREprNU01N0g1VW83WmZYMXRWOTl0YTYydHBiTXVTYXZ6bVF5L2Z6OFJDTFJyajkrczdPekFRQ0FRcVVEQUlHYURHU0c0YXRpYlA2Vy9qNkYvUlBQOHBwQmdpRDBPbDNQQUJpTnhva1R4cVdrcEo0OGVaTDhKQVJCWkxyUDNMbHYvZmJyZG9ta2c4L24zN3AxT3pzN2UrR0N1VDYrUG5RNlhTcVYxdFhXM2I2VFdGZFg1K0xpY3Y3OGVRNkg3VGJBeFdReU1oajBBUU5jWVJnS0NRbng4ZkdwcTZ0YjhzN2kwTkJCenM3T0xCYXJzN1B6UVhMS3JsMjczM3Z2WFRxZEVURnM2TkVqQjJmUG1kZmEyb29nQ0prQXI5VnFHeHNiVjM3NG9hT2pQWmt2UnJiVDcyMVFYMUgxQUsvRUZQWlA5TGJ6NExNNlB4ekhtVXpHb05CUXBWSmRYVjFOZXR3WWhybTd1Ky9hOVVkMVRRMlh5eTBwS2I1eDQrYkdqZDhHaHdTeldYUXFsV0pwYWVIdDR6TTJMbGJXSlkrT2lSR0pyTEt6czVjc1dUSnQyZ3dmYjA4eXByZHo1MjhtRXpwN1Z2emNlZk1kSEczWmJBYURRUk1LTFlZTUNkZnBOR2ZPbkowMGFYeCtRWkdibTV1VnBXVkNRbUpQNjJBdkwrK3Z2dnB5N2x1elNEMlJPYW5rM2I1Q1U5VS84YXBhb040OFYvMXVOSnBzYlVUYnQvODhkKzZjekl4TW1WeVduWjBiR2pvSUlJajI5bzdJaUtIYnR2MHlaODVzQndjbmxWS3VWS281WEE2Vmd1ajBTaWFEUG01YzdMSGpKOTNkM2YzOC9INy9ZNWViKzRDSEthbVptVmtUSmt3b0t5c3pHZzNEaDBkbzFISUFBQkFFa2Nua0NBSnpPS3daMDZjbEo2YytTbjBjRlJWNTkxNXlURXgwZUhpNHI2KzNsYVdWdTRkSFpNUXdkL2NCS0dycVY0ZWsvSzk0SFFUVVEwKzlqc2xrb2lEd2lPRVJVWkZEWVlSeDdOZ1J2VjVmVVZucDZPaGdOQnJVYXJXVGt5TUFvQnd1Ly9hZHU0Mk5UV3ZXZkVBUWhGNXY4UEJ3ZDNSd0tDNHVDUWdJMEdxMTU4OWZhbXRyaTRpSTBPdjFKU1ZsaTkrZUQwRVFRUUFNQnIyNnBtNy8va09mZnJJR1FTZ3dRcmUydHE2cXJwNDFlNmJSYUdqdjZBd01EUHppODQ5ZEI3amp1SW5BOFo0RGNsOHo5UUQ5c3F5blQvUm9pQ0FJblU2bjAra0F3a2hCa0s0dXVWYXIwMmcwTWxtM3JZM054WXVYdStXS1RtbEhaV1ZsWW1KaVMzTXJoVUloZTZ4NmVYdEpwWjBHdmQ3ZjMzL1hybDFpc2RqVzFsWXFsVElZOUFFREJoaU5SaEFFWUFST1Q4L0l5TWlzcXFyVzZYUWx4WVdGaFlWK2Z2NTF0ZlZVS3FXdHJZMUtwVUlRWkRSb2RWcnRhNndlNERXelFDUzlIUXNJZ2pBTURRNGUrQ1E5VTZmVFcxdUxxcXJySmsrZWVPOSs4dWFmdHpPWlRCcU43dUhoWVh4NnhnOUFFTGhRS0FCQlFLRlNNWmxNcVZSS3hvU1VTcVdiMndBbWsvNjBFU0pCZ0NBUUhCeWNsWjJiOHZCUloyZlhwRWtUMkd5V3RMTkxwOVVWRlplNHVyclkyZG1aVEVZeUIrTTE4SFgraWRmTkF2V0cvTjBiREVZUEQ3ZTR1TmpVMU5TVWxGUnZMOCtXMXJiSXlJakJZWU84dmIyN3U3c0xDd3ROS0VwMm1pSnJkUXdHQTRIak1Bd2pDRUtuMHlFSVFsR3NwNDZISUFnQWhOcmJwYm01dVVLaHBaK3Y3L2h4Y1RRYUE4Y0pCcDErOGRJVkhNZG5USjhLZ24rMllYalpiK0wvUjE1REM5UWJjdkJNSmxOYzdDZ25KNGZqeDA4bEpDWkdSNDlJUzB2djZ1bzBHazF0YlcwSWdoQTRRWjYxQUVGUWQ3ZEtyOWZiMnRvYWpVYUZRdEhhMmtxbFVna0M3K3pzTkJwTlZDb0ZBQURnYVdVMFVGVlZKUkFJR0F5R3Q3ZTN0YlhWZ1lPSFpzYlBpSStmeXVHd2pVYlRjeDJ1WGt0ZVp3c0U5T3FxaWFLbW9LQ0FyNzc2WENydFBITGttTUZnQkFBSXgzRStuNzk4K1RKM2Q3ZW54WVFnV0ZKU2JEQVlMUzB0S3lzckNZSW9MUzNGTUV3Z0VEUTN0elNJRzhrT25rYWo4YTA1c3laTm1vUWdpTW1FUWhCY1hsNitmLy9CMGFOaWxpNWJ3bWF6eUkydDExNDl3S3NiaWY3UDZYMGFFSVZDQVVDd3JLeXl1cXBhYjlCREVPemg3aFlXRnFMWDYzQ2NZTEU1NWVVVkd6ZHVJZ2dpTWpMeTJMRmpXVmxaQUFCOC92bm5JQWhXVlZYNSsvdDkrODA2azhsa01wbW9WS3JCWUV4SmVheFFLbENUMFVva0Nnd01zTGV6MGVsMEFBQ1NFYzdYMCt2NVYxN2hRT0ovU004Z2ttRkdBc2Z0N1d6OS9YMkRBZ09QSHorWm5aTTdldFJJS29VQ0kwaEZaZFd1WFhzSmdoQ0pSQXdHNDlhdFc2TkhqNmJUNmUzdDdTTkdqSkJLcFoyZHNyYTJObDlmSHdhRFFhRlFpa3ZLZnZwcDgvanhZNmRPbStIbTVzeGswTWtGVjA5SDhOZGVQY0NiWUlGNjZHMktHQXhHYmw3aDExOS9GeFlXeW1Bd2JHeEVDb1ZDTEc3Q2NWd3FsUzVac3ZqMDZiTmRYVjFyMXF5cHJLemNzMmZQNTU5LzF0YldscHViSnhRSzJXeVdxNnNMQUFCU2FWZHpjek5CNER0KzJVbzJYbm1ObCt2L3hHdnVBL1dtWjFESnpRMlJ5RkprWmNWZ01QaDhma3VycEx0YnFkRm9Nak16NTh5WnhXUXdpb3VMWjgyYUZSam9OM3IwcUdIRGhsMjdkbjNSd3ZrY0RxZWtwQlFFb1k2T1RxVlNiV3RycTlQcDNkM2RTYy82MWRwRi8xL3grazloendHQ0lBQ0FPSTd6ZU56QW9JRDYrb2JPems0YWxWcGNYSnllbnY3VFR4c2pJeU9YTGx0T3A5TlhyRmd1dE9Cek9HeTl3YlI3OTI0K1g3Qmh3MWY1K2ZrSkNRbWVucDQ0anN0a3N2RHd3Vy9OaVg4RGRkUERhNzZNLzF2STRVWlIxTVhGYWZYcUQxQVRtcGRYVUY5ZmYvNzhHVDZQOThNUFB3WUhoOGhrTWk2SGhlTTRuY0ZBWUdqRWlCR05qVTBIRGh6YXRuWHozbjBIT2p0bEg2eFl5dUZ5RVFReDZIWDk1QVR1bDhJYk5JWDEwSk1uYWpLYU5HbzFoWUswdFVrVUNzWGR1dysrLytHbnFLaUliNzlkajZKb2ZuNFJnOG5FVUN3OUkyUGt5Smh2djkzUTBkSHh6YmMvZEhjckdob2FUQ2FVd0ZHdFJ2MkNnMTNlQk40Z0ovcXY5Q2dKUmRHYzNIeVpUQllTRXV6azZBQkIwSzFiQ1dmUFhkeTc1L2ZrbElmbnoxL2N0bld6VUNqQU1EeS9vTEM1cWRuUHo5ZlYxYmtuWWVPTk5UL0FHeTRnRWpKQmxrcWpneENFbW96a2RpbVZTdHU1YzA5K1FRR0tZbXRXZnhnV0ZrSVdGOVBvZEFpQ1VkUm82bi90Q2w4S2IrSVUxcHVucWJFRW9kTnBOV3FWMFVUS0FzUlFkTW03YjhNd1BIcFV6T0FoZzdWYUxRVEJBQURvZFRxTldrWDIrLzJuQThMZUtNd1c2SGw2ZkJvSWdsQU1oeUN5TXFNZm5iVGRyM2dUVjJFdnBrY29PSTdERU5rSTBheWVmOFFzb0wraEo2N3pYRlBwbDMxZi9SR3pnRjVFNytEMXk3Nlhmc3FiN2tTYjZTTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUWmdHWjZSTm1BWm5wRTJZQm1la1RaZ0daNlJObUFabnBFMllCbWVrVFpnR1o2Uk5tQVpucEUyWUJtZWtUL3gvTndPVGJRQVBsUHdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJkZ2UtaWNvbi5pY28iOiJBQUFCQUFZQUFBQUFBQUVBSUFERGZRQUFaZ0FBQUlDQUFBQUJBQ0FBS0FnQkFDbCtBQUJBUUFBQUFRQWdBQ2hDQUFCUmhnRUFNREFBQUFFQUlBQ29KUUFBZWNnQkFDQWdBQUFCQUNBQXFCQUFBQ0h1QVFBUUVBQUFBUUFnQUdnRUFBREovZ0VBaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBRUFDQUlBQUFEVEVEOHhBQUI5aWtsRVFWUjQydTM5OTVOYzU1bm5DeDV2MDN0dnE3SzhMM2hERUNBQWtxS1QxT3FadHJmdlJOeWRqZGpZL1gxajl5KzVzN04zSm5wdmR3OWJyWkZFVVJKSkFDUThVQ2p2Szh1bDk5NmNrOGZ2RHdjb0ZRRTZpYVRZaGNvUGc0eXFZbGJXT1NlZjcvcys3L3MrQm1TWk90Q2x5M0VGK3FFdm9FdVhINUt1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXFneTdHbUs0QXV4NXF1QUxvY2E3b0M2SEtzNlFxZ3k3R21LNEF1eDVxdUFMb2NhN29DNkhLczZRcWd5N0dtSzRBdXg1cXVBTG9jYTdvQzZIS3M2UXJnaDBSUkZFVlJEcjcrb1Mvbk9OSVZ3QS9HWWROWHYrNXE0TTlQVndBL0RLcXRneUQ0UTEvSWNRZjVvUy9nZVBIaUdBK0M0T2QvcUFCQVZ4Vi9Qcm9DK0tFQVJWRVVCQjZHRVJSRnVsUEJEMFhYQmZyemNYaWtSeEE0bmM1ODhzbXQ5ZlVOaHUyZ0tLWW9TbmNWOE9lbks0RHZDK1VGZ0QrNC9nQUlnSWxFOHBNYnQ1YVhWMXV0Tm93Z0J4dENMLzVXbCsrUHJndjBuZkdGeHZxRlA0UWdpQmVFWEM2L3RyWnVOQnJPTmx2Z2w3eitoUlhDSDM3K1E5L3VTMEozQnZpMi9BbUROQVRCOVhvam1Vb21Fdkg5L2YxNnJhWW84aGZhOUZlL2VYZCsrUFowWjRCdnhXSEg1amx6VkJRQWhpRU13eUFZQmhSRkFSUkpsQVJCVUYrV3orY3I1U3FHNFkxR28xUXF0ZHNNZ3NDeUxNTXdqQ0FJQkVPQUFpaUtJa3FTS0Fndi9GbFZLay8vYUhjMitEWjBCZkFuOHVMb0MwRWdCTUhxMXlBSUFnQW9TV0tsVW1WWVZwWVZIRU0xR2cxTzRJQ2ljQnlYeWVaNFFRZ0dnelN0S1pYTHhWTFo0M1pCa0N5S1lyUFpiak50V1pKeEF0ZG9hSW9rbjY2T0ZRVUFBRm1XbjM3ZE5mdnZncTRBdmpNVUJlQjVnZWQ1V1paaEJGRVVzRkRJYld4c1pqSlpSUUYwV20wd0ZPenBDWm1NK2txbFdpNVhZQmoyK2J3RVFkUnFqVncyNTNJNk9JNkx4eE83dS92WlhJN25PYVBSMk5NVDd1bnB3VEJNa2tSQVVWQVVRVkFVQWdDbGEvM2ZFVjBCL0lrOHR6eUZJTGhTcmUzdDdpVlRhWTdqVVJUaE9XNXBhV2svRm1kWkZzTXdDSUp3SEw5NDhmdzdiLzhvbVVxSm9nZ0FZSzFXODNnODdYYTdYSzVVS3BYbGxkWGZmdmk3bmQwOUhNY1pobEVVeGVWeURnOE5PcDFPZGNBM0dQUzl2VDFPaDUzQU1WRVVnYTd6ODYzcEN1QlA1TEQxd3pDOHZiTjM3Kzc5MmJrNUFBRGRicmZOWm12VTY3T3pjeGlHZTMxZWc4RWdDTUxXVnZUbXpVODVqdE5xZFJpR2k2SVlqVVlKZ3JEYjdaVks5ZmNmZmZMcHA1OVZxeld0Vm1zeW1YQWNYMTlmMzRwR1FSQ2thUzNEc1BGRW90bXNPeHpPYTFldlRFeU1rUVF1eVRLZ0xnVzZwOGQvS3QxZG9HOExDSUx0TnJPOHRITHYvb05vZEx2ZGJqRU1BNEtBMitNZUdSM1JHM1FVUllYRFliL2Y3M0s1c3RuY0wzN3h5MHdteXpCTXJWWk5KcE03T3pzQW9OUWI5WTgrdXZIZ3dVTU13L3I3KzcxZXI4MW0wMmcwYnBkcmRIUVV3ekdlNXhpbW5jL25aMmZubnN6T3BWSnBFSUtBUTJ1RExuOGFYUUg4NlNpS0FrRVFBQUNWYWpXVHpZcWlHQXFGUmtkSFRTWWpETU4rdisvdi8vN3ZEQWJEL3Y0K3k3STh6MXV0Rmd4RFk3RVlDSUxwZERvV2l6RU1zNzI5WFNxVm04MVdvWkRuT0k2aUtMMWVEd0RBenM2T0xNdG56cHg1OTUxM0ZFV2hhTEt2cjNkZ1lNQnF0UlNMeFZRcUxjdUhvb2E2R3ZoVDZRcmdUK2RnL3hFQ0laZkxGUTZIZlQ3Zm1UT25YMy85bXQxdTI5alkwdXYxWnJOWkZNVmlzU2lLWXJsY0ZrVXhIQTdyOWZxTmpZMlZsUlZabGx1dDF0emNYTGxjbnA2ZXBtbTZXcTNXNjNXZTUrUHh1TUdndDl0dHBYS0paZG5UcDArLy92cnJvVkFvR0F5NjNSNk5WaVBMMGpQM3A4dWZEdnovL24vOVAzL29hempDcUNzQkJFRVFGTkZxTkU2SFBkTFhhN0ZZT2gwdW44OTNPcDA3ZCs1V3ExVzMyMTBxbGZiMjlpaUtHaDBkeldReU16TXpyVmJMNi9XQ0lGZ3FsUkFFQ1lWQ2dpQlVxMVdXWlFtQ0tCUUtETU1TQkdFMm1SVUE2T3Zyczlsc0lLRG9kTnBRS09qMytUUWFHbmdtd3U1UndKOU1keEg4SjNKNEY0Z2tDYi9QWXpZYVpFVXhtVTJ5TEF1Q2tFNW5IajE2bk0vbk5ScE5vOUZZWFYzRE1OVHRkZ01BOFBqeDQxUXExZHZiKytxbFM1dGJXN096czZ1cnEzcTkzdXYxOGp5ZlNDVGJiY1ppc2FaU3FZY1BING1pR0F3RVFVRFcwRVJ2YjhqbGR0STByZFZvRGwvSkQvMHdqakRkR2VDYjh0VnhCemlPNlhSYXZWNlA0Vmd1bDc5Ly8rSHZmLy9SeXNxSzArbTAyV3k1WEs1VUtnNFBqK2oxK3RuWjJiVzFOUnpIWDMvOSt0Lzg3ZDlvdFhRaWtZaEdvK1Z5T1JBSVdDeVdWcXVkVENaRG9hQXN5L0Y0UEJyZGhpQW9HUEM3WEE2TmhqYm85VGlPZmUzVmRsWHhEZWtLNEd2NEpyRUdhdGdtQ0lJUUJMV2E3ZDkvOU1uNzc3Ky90clkyTVRIaGREcXIxVnFqVVgvdnZYY3BpcHFmbjUrWm1lRTQ3dEtsVjM3MnM1K2RQWHZPYnJjVkNvVkVJbFVxRlF1RlFuOS8vL2o0R0VIZysvdDdEb2ZUWnJPbDArbU5qUTBDSjl4dXQ4MW1WUlJGa2lSWmxyLzZxa0FRN09iV2ZCTzZBdmdxWGdqdmVScCtjL2puSUFnaUNJSWdTTHZOcksydC85c3ZmdlhoaDcrdFZDbzlQYjBHZzZGZXIxdXRsdGRldTZLaDZmc1BIang4K0ZBVXhaTW5ULzR2Lzh2Zm56cDFrdWM1allZeW1ZeWlLTzdzN0piTFpZN2pmRjd2dWZObkFRQXFsVW84ejd0Y0xsbVdrNmxrTXBVR0ZFQ2owV28wTklvZ3Npd2ZYTlhoU3dLZi9nTWMvTnZsSytnSzRFdDUwZm9oQ0lJZ0NFRVFHSWJWRFZBQUFFQVFGRVV4bnkvT0x5ejkvcU9QZi9XclgrZnpCWVBCb05mcjgvbTgyV3crZmZwVVQwL1ByWnMzYjkrK1V5NlgrL3I2L3Y3di8vN0tsY3ZOWnZQV3A1K3hETnZiMjJ1MzI0ckZjanFkVHFmVENJb01EZ3dPREE0V2k4VmtNaW5Mc2xhcnplY0xPenM3dVh3ZVFURU1SWEdDd0hIc1lOcDU3cEtlRy9xNzd0QlgwQlhBRi9PRnlic2dDQ29BSU11eUpFdUtBb0FnQUVHUUlJakpaSHBoWWVuVFQyOS85dGxuc1ZqTWFyVkNFTFM1dVZtcFZONTU1NTJ4c2ZGSGp4Nzk4ei8vU3pxZDl2c0RiNzc1NXM5KzloZUtJdCsvZi8vdW5YdmxjdG5wY0FaREliMU92N3UzbDgvbjgvazh3N0N2dlBLS1RxZmIyTmo0N0xQUFNKSWtDS0pXcSszczdJaVNMTXN5aW1GYXJRYkRVQWlDWkVXUlpWa05rZ05CTlR6aWVlZW5xNEV2b3l1QUwrREZzVjhkWDFzdEpwdk43Y2ZpcVdTcTBXaGdHQVpCY0RLVnZubnJzMmFyeGJUYisvdjduVTZuVnF0bHMxbVdaWHQ3ZTgrZVBWdXRWdDkvLy8zOS9YMFVSUzlldlBBWGYvRVhNQXpmdm4ybldxMmVPREV0U1dJeWxaSmx1VGNTa1dVNWtVaGtNcGxtczJrMEdzMW1jNlBSbUp1Ykt4YUw3WGFiNXprRVFTS1JYbzFXMjZnM3lwV0t4KzJXWkNtVHllM3R4N0xaYkt2ZEJrR1lJQWdZaGxYUDZNRHV1d0w0TXJyYm9GL0E0UzFPUlZGUUZHMjEybnY3c2UzdDNVNkhneUJRbHFWT2gwTVdGaFZaRVNYUm9OZHBOZHBVTXBsSUpCbW1MUWlDSUFnRVFTaUtrazZuSzVYSzF0WVd4M0hoY0xpL3YxK2owVDU0OEtoU0tROE5EWjAvZnk2YlNkMjgrZW5pNGhJRXdiMjl2VDZmYjJ0cnExNnZ6ODdPSWdqQ3Nxd3N5enpQUzVJRWdnQkJrTGxjN3RLbFYydzIyM1owKzkvS1pVbVNGVVhCTUF4RlVWbFdZQml5V013ancwTm1zd2xCSUZHVXVxYi8xWFFGOERYQU1OeG90alkzdGg3UFBDa1VTcklzVXhTcDAybHBXbE92TjJLeEdNL3pmL00zZncwQVFLdlpLcFdLQjc4b2ltSXVsOXZjM094ME9vSWdBQUNnaHJnbGs0bXRyYzNCd2Y2eDBXR1h5MmsyRy9iMlkzTnpDN096czRGQWdLWnBpcUprV1M2VlNsdGJXOWxzVmwzc3F1K2dLRUF5bWRMUUdxL0hzN3E2dHZMd3NjdmxkTGxjTE52SlpuUHRkcHZuQlpxbW1zM1dpZWxKbDh0eFlQM2R2Smt2NC9nSzRHdnpDVldqQVVGd1oyZnY5cDE3eTh2TEJFRzAyeTFGVWR4dTkvVDB0TXZsVkdNOFFSQnN0OXR0cHEzK29qcUJpS0tZeVdSMmRuWm9tdGJyOVJ6SEtZcVN5V1FhalFiSGRZS0JnTnZ0RUhnV3g3QklwSGRuWjNkK2ZvRmxXWVpoY0J6bmVSNEV3YjI5dlV3bW93cEFmVTlabGhtR1lUc3NMd2lLb21pMTJvR0JmcjNlc0xpNHVMR3gyZWwwVUJURk1DeVR5V0lvcXRWcWREcXRKRW5xalh6MS9SNWJlUnhmQWJ5SWFpRUhscUJhUDh1eTYydHJhMnRybVV4R0RXc0RBQUJGMFpzM2IvM3QzL3hOTUJoUUZHVjFkYzN0ZGx1dE5naUNEdHVySUFoN2UzdEdvNUdpS0pxbTIrMzI5dlkyanVNbWt3bkhNUVJCWkZtV1pZa2tDQkJRVXFtVUlBakZZaEhIY1lJZzZ2VjZyVmFyVkNvSEY2TTZZMjYzRzhlSlhDNWZMcGRmdmZSS3FWejY5YTkvYy92MmJSaUcxUmdLcDlOcHNWaFhWOWM4SHRmRXhKZ2tTVjl4ajEyT3FRQytLS0VSVW8zc0FIVlhzZFBoMDVuTSt2cDZOcHRGRU9UNjlXdUJnRDhXaTkrNWMzZDdaOGZwY3RwczltUXkyZHZiTXprNU1UMTlZbWxwa2VPNGc3ZXQxK3NjeCtFNHJzYjVBQUJBMHpUUDg2MVdHMUFBR0lFaEdHWFlUcVZhclZRcUlBaFdxMVdHWVNBSWFyVmFMTXVLb3FpK2o2b3JzOWw4K2ZKbHM5bGNLQlFVUmNFSkloNVB4R0w3THBmejdiZmZxbFNxVDU0ODJkblpyVmFyUHArM1htOEFuM2VCMUh0VTE4ZXkvUHhDLzNoT0FzZFVBQWVBNE5QOFhWRVVEM2I2RDNzRU1BSnJ0Vm9BQUJpR3VYYnQyai84d3o4NEhQYmYvLzZqYURTS0lBZ0V3U1NKQVFDZzBkQXVsK3ZkZDk1QlVTUVdpelVhRFk3akJFRlFuUmFHWVJBRWtTU3AwK21RSkFsQjBPcmEydGpZYURBVTREcmM1dWJXNnVwYXNWaGtXYmJSYUtqcEJLSW9BUUFBZ2lBTXd5aUswalJ0czltbXBxWXVYMzdWWkRMbTh6bUNJQ1ZKaGlCWW85SHFkTnEzM25xTG9taTczZkZmLyt0LzdiQXNRZUFhclVhUmxXZERQZ2lDb0N6TGtpd0R6emExdW5XSGdPNDJLQWlDb2lRMm0rMUNzWlRQRjFyTkZnaUNhZ2FqT3VqaUdDNUxjclZhN1hTNGQ5NTVaMnBxdWw1dnpNM05JUWh5OHVRcHI5ZmJhRFJhclZadmIwODRITEtZTFNhVENTY0k5V1RxSUd3QmVPckRBSklrZGpvZGxtVnhuREJiVEdhVEtSNVBmUGliRHg4K2ZGU3YxOVVoWDFFVVNaSUJBSUFnaUtJb3E5WHFkcnRIUmtZdVg3Nzg1cHR2am82T1FoQ1lTcVdMeFZJd0dOVHJkUnpITlp1dG5wNXdUMDh2Qk1IWmJFYXYxNy8yMnBVVEo2WUpBcGRsV1EwWTVYaytYeWpsODRWNnJTR0tFb0lnTUF3OTl5aCs2RS9qQitCWXp3QWdDRXFTbEV5bWw1Zlhpc1Z5dnBESGNXeGthT2owNlpONnZWWTFDQVNCeDhmSFJFbXkyV3psY3ZtWHYveGxzOWxnR09hTk45NFlHeHRyTkJxWlREcVh5eldiTFF4RnZUNnZyQ2dHb3pFY0RzZGkrOXZiT3hzYkc4VmlFVUVRcTlWcU5wdHBta1pSRkVWUlJWRSsvZlJPTkxwVHJ6Y3l1Vnd3R1BUNWZMd2djSjFPclZZckZJb00weVpKMHUvM0R3ME5lYjNlY0RqYzE5ZlgyOXRqTUJnYTlYcWxYTWxtc3p6UDlmY1BhTFc2eDQ4ZmZmTEp6ZFhWZFFBQWdzSFF5TWp3K2ZQbnpXYUxKUElBQU1BdzNPSDRlRHgxKzg3ZFlyRklrcFRiNVFxRkFwRkkyR0F3UExkSU9HNGNPd0VjeFBPbzNzVitMTEc2dXA1T1oyUlpzZHVzRm92WlpyT0NJS0NXNkpFa0tadk56YzR0ckt5c05ScE5GRVZnR1BLNFhSY3ZuQnNhSG0yMzJ6czcyNklvaHNNaHRmcUR4V0lHUVZpU0pCekhTWkpDRUFURE1ML2ZQems1ZWViMEtaZmJSWkVVaWlJb2l2STgzMnExR0piMWVqMW56NTRtU1JJQUFQVUFvVndxcmExdjNMbHpONXZOZ1NDRVlSaEprakFNdDFxdHJhM29vMGVQVzYyV0xNczlQZUg5L1gySHd6RXhNZVp5T2VibkZ3cjVRcjFSNTNsK2RYV041L21weVltK3ZsNElBZ0VBVUdRRnc3R2VuaENDSUF6RE5sdXR4YVZsRkVNSEJrZ2N3OVFKUjAydk9XN3p3TEVUd09FTlFSQUVFL0hFL240Y0FBQVVSVU9oWUtTMzEyUTJJVENrV2tPcjFiNTc5LzdNekt3b2ljRmdVS2ZWYXJYYVFNRGYyOXNqaUhJMEd0M2ZqNkVvaGlESTNOeDhxOVhzNysrMzJld3MyNm5WYXJJc1d5d1dpOWtjN2dsZnVIQitmR3pNYURRZ0tBSkJFQWpDa2lRMjZ2VnFyWTdqdU1sa3BDaFNlUnJSSUxWYTdmMzllREFZV0ZoWVZGWEhNRXl4VUZEUEUxWlhWd1ZCOFB2OWZyOHZrVWh1Ykt6cmRKcFFLSWlpNk83dWJxbFlhak5NSnBPZG01dXIxYW9vaW9SQ0FYVmhZN1BaYkRZYlFaRDcrekdXN2FUVEdhZkQ3dkc0S1p2MWFhMmhZeGs1ZDd3RThOeWFUNVpsanVjNWpnTkJzRmFybWMwbXY5K1BZUVFFeVRBRVNiS1N5eGR1M3ZvVVFkQno1ODVNVFU0cGlpTEpNb0lncVhSbWJXMXRibTYrMCtFY0RrYzhGbTgwNmdpQ1FCQUV3eEJCWUFhRDNtRFFEdzBPUmlJOWtiNkkzVzVYRkVDV0pmVTBRRkZrUlFFUUZMTmE3UUFBU0tMVWFqYlZoU29FZ1RSTkRROFBoWUwrYzJmUGJHMXQ1L0o1V1paUkJFVVJHRkFVSE1QcTlYbytueWNJZ21HWXg0OW5TcVh5dWJObnRGcWQzKzhQK1AwUUROZHE5Vi8rOHBkTFN5c0dnOEhyOCtBNERzTXlnbUFkVG1nMG1vVkNRWkprU1pKNFFSUUY0YmdOK2M5eHZBUndDRkJSQUJpR2UzdkN1V3p1d2NQSG1VeDZibTV1ZFhYMSt2VnJBd045VnF1ZDQ5aGlzZFJzTmlPUlByM2VXQ3FYU0pJRUZHQXZrNW1mWDFoYVdtbzA2Z1JCdHR2dG5uRG9yOC8rVlU5UDJHSTFveWlpdWhJUWhFQXdERU9nS0FyNVhLNVdxN1hhYlk3amVGN2dlZUdaMXdFQWdBSkJFQXpES0lxUUpFSFR0RmFyMVdtMXRJWWVHaDdwNng4U1JWNFVlRm1XSVFpQ0lMRFpiTVhpaWZYMWpZMk56V3cyVzZsVXRyZDNvdEhvcVZPbklwRUlUVkZzc3lWSmtzVmlLWmZMeVdSU0VFUUV4UmlHaWNmM1ptWm1QLzdrazJ3MjUzYTdQUjZQMitVeW15M3FUdXV4VGEwOHBnSlFkejg1amkrVnlvVmlVWktFWURBQUFFQ2owZnpvbzA4Mk56ZW5wcVlBQUZoZFhiUFo3SUZBd09Hd0l3aGNMcFZYVmxhZXpNN3Q3T3pBQ0JMcDdSa2RIZW52Ny9QN2ZFNm5RMjh3WUJpdUtBclhZZXYxZXFsVUxwVXJqVWFqdzdLaUtFcVNCTUV3am1NWWhzTXdqT000Z2lDQUFraXlKRW1TS0lydE50TnNOa1JSbG1VWmdrQWN4N1ZhbmRGb05KdU5acE9ScENnWWhoVkZOaGowSnJQSjUvY09Edy90N2UwdExTMnZycTQ5ZlBob2Z6ODJOVFUxTVRIdTkva29pZ3FIZTlwdHB0MXVMUyt0V0N6bVdDdytONy9RYURTTlJoTk4wNUlrMWVyMVhENVhiOVJ0RnJQOExaL21VUVprbWZvUGZRMS9QZzVXd0RBTUM0S3d2YjI3dExSU3JsUU1CcjNMNWNReG9sUXU3K3pzRlFwNWs4bUlZVmk3eldpMTJtQXdhRGFiNnZYNjR1TGl6TXhNSnBNMW0wMG5UNTQ4TVQwMU5Eem85WHBKVWdNQ2NxZlRydFdhMVdxMVhLblU2dzJHWVFSQkFBQVF3ekFjeDlTb2ZReDdlZ0NzanZvZ0FFcXlwTHJnc2l4TGtpUkpvaUNJUEM4SVBDOHJNZ2hDT0k0WjlIcVR5V2cwR25RNkhVVlJLSVpDRUN6d2ZMRllqRzd2ek03T1AzNzhlR2RubDZLbzRlR2hFOU1uUEY2UEtFcXBWQ3FUeVZBVUtVbFNxOVdXRlNYU0cvRjRuQUFBRkF2RlFyRUVJM0JmcEdkcWNrS2owYWpyL21NNER4d2pBWHkra2lGVUxsYysvTzFITE11R2dvSGUzaDRJZ21pTkJrSFFYSzV3NjlhdCsvZnZDNEl3TUREZ2REb3BpcXJWcXB1YlcrdnJHNExBOS9WRnJseTVmUEhDZVkvSGhhS29LSXFDSUxiYXJVS2htRXlrczdsOHU5MUdVY1JvTkZxdEZxUFJRSkVVQ0FJY3o3RnNoMlU3blU1SGpWcDdGcUlqSXdoQ0VDUkZrUVJCMEJTQkV3UUV3VnlIYXpRYXBWSzVXQ3F6TElNaXFOVnE4ZnE4SHJkTHA5ZWlDQXdDSUlLZ0FBUld5dFdWbGRXUFA3a3hNL09rWHE4N25jN1IwVkdQeDRNZ1NLbFVpa2FqbFVxbHQ3ZjNSei82MGREUUlBUUI3WGFMWlZpRzZUeCtQTU1ML0tsVEo4ZEdoOVFiT1liaDB5K3pBQTQ2TVI1RWc2ay9RVkdVWmRtZDNmMEhEeDc2ZmQ1T3AzUDc5dDFLdGFxYVRrOVBUN0ZZdW5Ianh1Ym1Ka1ZSYnJjYngvRjhQaCtQeDNVNjNTdXZYSHoxMGl1UlNBOUJFQmlHS3JKU3E5ZTNvdEh0NkU2bFVpTXBNaGdNZUQwZW1xYlpEbHNzRmpPWmJENVhxTlpxSE1mS3NvSWdLSXFpRUFUQkVJU2dLQVJCYXFpem9zaXlKRXV5ckNneWpNQVVSWnVNUnFmVDRYRFk5WHE5Sk1uNWZENlJTSlpLSlpJZ1ErRmdYNlRYNlhUQU1LVEd1a21TVkN5Vkh6eDRkT1BHemJXMWRZUEJFQXdHU1pMTTUvT1pUTWJoY0Z5OGVQSDBxVk9GWW1GaFlYRmpZME9XcGJObnp6b2NqbmFia1NUaDdiZmUwT3Qwd2dzQ09BN3hFUy8vR3VBUGlielBLdW9EQUFCQk1JNWpXcTJ1MVdZWEZ4Yy8rTTJIV3EwV2hwR2Q3WjEwT20yMzI5dnR0bHFneW1nMEpwUEpack1aQ29XdVg3czZmV0xLNTNWVEpBbUFZTEZZMnQ3ZTJkbmRZOXFNeVdRS2hjTTZuWmJuK1VReVdjZ1hLdFdxSUFnUUJCSTQ0ZmY1YUExTjB5UkprZ1JPSUNpQ3dBaU13Q0FJU3FJa1NhSWtTUUl2ZEhpT1pkbFdxOTFvdEZxdDl2ckc1dFpXbENKSms5bGt0Vm43K3lPU0ZDNFVTc2xrS3BsTU9aMk93Y0YrcDhPTzQ3Z2tTVTZuNDhxVlYrMTIrNmVmZm5iLy9vUGQzVjJ6MlN4SlVybGMxdWwwbFVwbGFXbHBiMysvVnF1bTA2bjE5WTFtbzNuOTllczJtMDBVWVJSRlFRaFVuOU9MVCsvbDFzRExLWUFYVTdwQUVJUkFFSGgyQ0NCSkV0ZmhhOVZhdmxCWVdscXVWcXN1bDJ0c2RFU2owY3pOTDZUVG1kM2R2WGE3VFZGVXFWU1NKR2xnb1AvcTFkZk9uenRqc1ZvQUFHZzBtcGxzYm04L2xzdmxGVmwydTkxV213VkYwV3FsbXNsbWk4VWl5M1pRRkxWWUxGYXJ4V2ExbWkxbXZVNUhrZ1NLb1FnTVF4Q2tYczR6azFOa1daWWxXUlJGanVkYnJYYWxVaTJXU3NWQ3NWeXVORnZOUnJOWnJkWWNEcnZWWXJGYUxSaUtsa3JsVkNyRE1Fd3dHUEI2M1FhOUhvSWdtODF5K3ZRSm8wR1BZOWo4d21LdFZrTlJWSmJsZkQ0L1B6K2Z5K1ZzTnV2dzBCREhjUXNMaTd0N2U0c0xpMzM5ZlM2WHM5UGhTSkpFRUVpV0FSRDg0cWYzUTMrazN4Y3Zwd0NlUXcxM1U3K0dJS2pWYXVkeStWZ3NuczNsTXBsTXA5TUpCQUpqWTJPWEwxOEdBR1ZwZWVYeDQ1bE1KazNUTkFSQnpXYno1TWtUUC9yUkcyZE9uNElnVU9ENVZxdWRTQ1RuRnhZYmphYkw2UndhR3RCb3RiSDkyTXpNYkRLVkluQWk0UGROVGs0RUEzNlQyVVFRQkFSQml2enNtRXVXbjZXMlBOOExEQVJCQ0lab2l0UnFhS2ZMQVFDZ0pJck5Wak9ielVlajIxdGIwZDNkUFpxbUJnWUdCZ2Y2UTZGZ1BKSFkyTmpNNVFxbFVtaGtlTWhvTkVxU2lDTHd5TWlReFdMUjZuUjM3dHd0bDhzb2ltYXoyV3cyT3p3OGZPM3FhNE9EQXhpR0xTMHR3ekNjeStkeGdpQUljbnQ3Tnh3T0dneDZOVUpPRFZzNlBCdTh4RzI5WC9KZ09EVjFIVUVRanVPYnpSYkRzTElzTHk0dVAza3lWNnZYKy9vaUhvOGJSVkdTSkM5ZnZqdzVPVkd1VkQ3KytKT0ZoZmxtc3duRHNNRmd1SDc5Mms5Lzh0N282QWdNUVRBTTUzTDVtWm5aMmJsNW85Rnc3dHlaVUNpUVNDUisrN3VQbDVaWENCdzdmZXJrbFN1WEpxY20vVDZ2UmtOREVDUkpzaVNLYWtqYzRUVEw1Njd6d09lV0ZVVjZ1aDBrQVlDTW9aalJaQXdFQW9PRC9UNmZWNWJrOWZXTnBhV2xSck1SRG9YR3hrY2xVZHphaXU3czdtbTFXb05CajZLSUlBaGFyVFlVREdxMG1uZzhrVWdraXNWaXRWcVZKUG5rcVpNakk2TVlUbFNxVmFOQmYvTGs5T2pvQ0F6REs2dXJMTU9TSklrZ2FMM2VCQUJBVGJkL1VhVS85T2Y1M2ZNeXp3QnFseTVaVnBMSjlINHNuc2xrNi9VYXk3SU13N3FjenJQVHA2dzJLd2pBb1ZCNGVYbXhVaW5QekR6WjJkbmQzZDBWQkVHU1paZkw5ZlpiYjc3eDV1dkJZSUNpU0pidGJLNUZsNVpXMkU1bmJHelU1L1hrQzRYNzl4NW1jem1EWGo4eU1oZ0tCcDFPaDFhclFSQkVPVlNwNFV1dTdXdmRERVZSQUFnQ0lBZ21TWVFrTUsxR1k3UFpnc0hBOXM1T0pwUDUvVWNmOS9mMUJVTkJzOFc4czdONzc5NkRZckV3TkR4b3NaZ2xVYkpZelJjdm5rZFJWSkxFZXIzT01BekxNZzhmUHRSb05JSW9HZzJHMTYrOTFodnAwV3AxalVaemRWVVRqVVpYVnRmTUpoTk4wMGFUS1JEd2hZSUJ0UVRkeXgweS9STE9BQWVyWHRYM0tKVXJjL09MOFhneWw4dWxVdWxjTHM5eFhIOS8zK1VybC9WNnJVNW4xR2hvcHQyNmNlTm1PcDBSQklFa0thMVdnNkxZMk5qSVgvekZUd2NIaDBpU3FOZHF1M3Y3OHd0TGdpZ0dBMzZmMTVQT1pCWVdsdkw1Z3N2bFBIMzY1T1RraE0vbkpRaFNsaVgxMk92QWJYak9zdFVnUEJpR1lRU0JZUmlCNFVNbGZWNWNnd0xxQVlHaUtDaUdHUTBHbDh0cHRsZ0FFQ3dWUzVsc1RsRVVzOWxrc1ZnYXpVYWhVR0paVmtQVE9JN0RFS2pUYWkwV2N5NVhLQlNMSnFQcDVNa1RScU1wbVV4R28xR0N3SC95azNkOXZwQkdvOVZxOVNpS0xDMHRSYVBia2lnMW0wMjJ3L0c4SUN1eXlXUlV4WHo0NG4vb2ovYzc1bVVUd09HR2pSaUtOaHJOOWZYTmxkVjFFQVJwbXFacHFxOHZvaWdBUmRHQmdGOFNCVm1XYTdYNnhzYkdKNS9jd0FuaXhJbnBDeGZPbTgwV3M5a1U2ZTBkR2hveUdYVUNMMFNqdTArZXpQTzhNRDA5NlhJNTE5YldQL25rRmdTQjU4K2Z1WDc5bXMvdlF4QllFSGcxbWg4OHhNR0ZQZjMrYVU0V0lNdUtKTW1pS0FtaUpNdXlBaWpQWHY2SDMzdjYxYk9jSFZtU0JFRUFBTVZvTW9XQ0FhL1hVNmxVRnhlWENvV0MzKy92NzR2VWFyVllMTjV1TVJhTEJjZHhBQUFFUWF6Vkd5aUtqWXdNdi9iYWE4UERRM3Q3Kyt2cjZ4aUdqWStQYVdoQ0VrVzIwOG5sTXBsMHhtUTJEUThQdGRvdG5VNHZDSHdxbGZiNXZUUkZIeXlMWHhUelM4QkxKWUREWTVXaUtCaU9aN0s1aGNWbERNTmdHQlpGMGFBM3ZQYmE1VnF0dHIyOVd5d1dSVUVzRm9xMzc5ejV6WWUvSlVuaWIvLzJyOGZHUmxPcGxGYXJtWmdZNiszdGdTQllwOU11TGkwdkxpNFJPSDcxNmhXV1pXL2V2RFUzdHpnMU5YSDkrdFhoNFVFTVJTUkpWSTlSbnhiUE91VFBIRndTaXFJSWlnSUF3TENkZks0UWk4V2oyenRiVzl2YjI5dkpaS3BSYjBJUVJGRTBobUhxY2dDR0VRZ0NuKzNmQW9jVkpZa1NBQUE2cmJhM3QwZHYwQ1VTeWNjek14cU5abXgwVktmVHJtOXNWQ3BWazlHbzAybWJ6YVlDQUNQRFF4YXpwVmdxUlNJOWZYMTlMTXMrZlBpUTdYQ3lyTFNaZGpTNjlkbG5kMmlOOXZTcGsxNnZaMzUrd1c2M1V4U1Z5V1RzZHJ2UnFNY3g3Q0NuNTdtN2V3bDRlZFlBTDNyVkNnQ0JJQUpCRUFCSU9JNDNHbzFTc2NpeVowNmZQbVV3R1BiMjltYWV6Q29Lc0xXMTFXdzJYNzkrcmFjblhLL1g0L0hFNmRNbmVudkNGRVhWRzgybHBkWE5yYWpKWkI0ZEhjbG1zdzhlUEd3MEc2OWNQRDgxUGUxd1dCRUVGa1hweXhhTGlxSkFFSXlpaUtJQXRWb3Rua2h1Yisvczd1NGxFNGxjUGwrdk56aU9rMlVaUVJDVHlSUU1Ca1pHaHNkR1IwT2hnRVpEdDFwdEJFRXdIRU5SNk1DaE9yZzU5YTlvdFpxSjhYR0tvcDg4bVh2dzRCSExzSU9EL1dmT25KNmRuWnViWHhDbEVaZlRnY0FJcGRFa0VzbE1OcnUrdmprMU5Ybm16T25WMWJYdDdXMElBcTFXcXl4TEhvOW5hbXBLbzZIbjUrZHJ0ZnBCZWdDR0lnZ01BNGVXS0llektYN29EL3k3NFNVUndITW1DRUVRakNBQUFDQUlqR0hZMWxaVXA5T1hTc1hOelUyQ3dDOWN2T0R6ZVhFTWJiWGJvaWpWRzQxMm14a2ZINE1nS0I1UFZxdFZ2VTZyTnhnbFNhcFdxeHVibTNxRHZyY256SEhjdmZzUDJ1MzIrTmpvcFVzWGRUcTlKRWs4TDN5Rlk2Q0cvWlJLNWYxWWJIbHBaWEZwZVdzcm1rd21TNlZTczlrOFNIZ0hBQUJGVWFQUitPVEprL0d4OGFtcFNhL1hrOGxrVVJRSmg4TURnLzBrZ1FNQWNIaGRBUUNBTE11eXpHdTFtckd4VVoxTys3dmZmYlN5dWlvcjh2VDBaRTlQT0psTXJhNnVhVFMwMFdqQWNFcWpvUWtDMzk3ZUhSZ1k4UHQ5SXlQRHRWck5ack83M1M0UUJHdzJteXpMZCsvZSsraWpqMlZaVGlUaUtJcHhISWVnQ0FUQmFoU1QvSHgxaVpkRUF5K0RBSjdmcGdBQkJWQzRUcWRjS2hjTGhVNkhUU1FTQm9OQkZJVkdvL0dyWDMrUUx4UmVlZVhDd01DQXhXSkdVSlNtYWE3REdZekdWb3VwVkNxS0lvTWdLTXRpSXBtY25aMkhJSGhrZUVnUStJOSsvM0dwWEw3NjJ1VXpaMDRSQk1IekhBQUEwRmNhZ1NDSXFYVDZ5WlBaR3pkdVBYandNSmxNZGpxZEwzbWxVQ2dVQ29YQzB0THk3VHQzL0g1L09wMEdRZkRzMmJNLy9lbVB2UjZYeVdRa1NSS0MvbER6VUxVL2p1c2dDTkxURS9yWnozNzZpMS84YW5aMlhoTEZWeTY5SWtsU0lwRmNXRmc2TVQxbHhqQUlCR0FZNm5RNnJWYkxiREtxVGZqT25Uc1hDUGlMeFZ3cWxmbnNzOC91M0xtWFRLYlVpVTRVSmJQWldDaVVLSkxTNjNVMFRhdDFVWjk3N0MrQkJvNjhBSjd6K3hFRVVSU2dVcW5NUEpuYjNkMXJ0ZG9ZaHA0NmVVS3IwNkFvZW1KNnNseXUxaHZOKy9jZnpjOHZPWjBPdDl1VnpXWUZnUWNBaGVONGhtbDNPcHlzQU9sMFptTjlzOWxzWHI5K3RWSXVQM2p3c0ZRcXZmdmVPME9EQXhpR3FZV3J2dUtTWUJqbUJYRmxaZTNuUC8rM0d6ZHV4dU54aG1FT0l1Ky9ZbU9SWmRudDdlMVlMS2F1cDR2RjR1Ym1odHZ0dm43OTJzV0xGOTB1bHlRSmtpUWVHSjk2MUFES3NzTnVlL2ZkdHo3OTlQYWp4MDlJa2h3YUhpSkpjbmxweFdnMEVnUXRTa0N6MlJJRW9kMW1OQm9OREVPbFVubGxaV1Z6YzJOemM2dlphc21TTkRrNWNlM2FGYjNlb0NneXc3QXN5ejU4K09qaHc4Y2VqMnRpZkt5M040d2dpUFQ1NXNRdmdRYU90Z0NlTzFwQ1VWUVVwYTNvOXFOSGordjFwdFBwbUpnWU54b05KRUU4amNpSElCQUNPWTV2TlZ1MVdxMVlLbTlzYkc1dFJWdXRWaUZmQkNHSTU0Vk9wN083dTYvYTYraklNTTl4ang3TlZDcTF5NWRmSFJvY29HbnFzT3VpQWg3YXY1UmxHY2V4Vm90WldGajZiLy85SCsvY3VadE9wOVRUMytldStjdnVTTTBNVnIvTjUvUDFlcDJpMXFyVldqYWJuNXFhQ1BoOWRyc054MUhWK3dLZVZibFNGTm5qZHA0OWUxb1V4Y2N6c3pSTisveStZQ2l3dHJhaDF4dEVVU3lYSzUwTzEyZzBZQmpLWkRJTEN3dk5ack8vdjYrL1AySTJtM1ZhTFVFU01BeEpvZ2lDSUlLZ0NnRFU2L1ZzTnBkTXBqNzg3ZS9IeGthbkppZHNWalBIYzRlVEo0KzZCbzd3THRCeis5TnFJWk9WMVkyWng3UEZZckcvTHpMUUg3RmFMSW9DZERwY3M5bHF0bG9kam9NZ21DSkpnMEZ2c1poTlpoTU13ODFtczlGb3FpRVN0VnF0VnF1Vnl4VkpFa1BCb04vdnZmL2dVVHFUN2UvdnUzTGxFazFUQjVVR0QvN3ljeGNFdzdBa0thdXJhLy8wTCsvLzZ0ZS96bVRTWDl2TjVhdnZVUkFFaG1IVTlLNUVJbEdyTjR3R2c4bGtmTzZrVnMzaU4rajFlcjFoZTN1blhLN29kTnB3VHlnV1MzUTZuVnd1dTdPejIrbHdNQXdYQzRWNFBJRmgrT0Rnd01qSWNDZ1lNQm1OT0k1THN0eHVNODFtaSt2d2tpekRNS3pWMEZhTEJjZXdhclVXaXlVQUFORHBkQnFONXFBM3grSG4vME9idzUvSTBRaUgvdHBSRTRaaFdaWmo4Y1J2UHZoZHRWWTdlL2JVMk9ob3VWemUzdG5ONXd0cTlxTjY0cVNlT3RFVTVYRFlRK0dRVnF1SnhlS2ZmWFpuZFhWZGtrUUlBdHZ0ZHIzZWVPKzlkODZjT1ZNb0ZIN3hpMTlPVFUxZXVmS3EwMm5uT1E0NDlHRWYzaGc1K0FKQmtOMjkvWC81bC9mL3kvL24vMXZJNXlWSit0cTZuTjhFOVUwd0RBc0VBbi85MTMvMTl0cy9DZ1lDT0lFZHRqdFpsbEVVRXlWcGFXbmx3dzkvcTlOcDMzbm5yVktwc3I2K3NiMjlvMVpaVk5Wb3RWcGVlKzN5eU1nb2htSHBkR3AvUDFhdjEyVlpnU0JJRUFTZUUzaUJCd0NBcHFsUUtPajF1anRzNTdlLy9ZaGhtTW5KaVV1WExtQVk4azF1NkVpbzRrak9BR3FFeitHWWRRaUNTcVhTTDM3eEsxRVNKeWJHUFI3UDdjL3V6czdOdDFwdGw4czFNTkEzTmpveU5qWXlPRGdRRG9jZFRnZU80ZlZHSTUzT2lLTGdkRHA3ZW5wcXRlcnk4dkwrZmd6SENhdlZldkhDZVVFUWJ0Njg1WEs1TGx3NEZ3ajRCUDVwd2NNdnpCcFJENTVCRUt6WG16Ly8rUzkrL3ZOZjdPL3R2VGhTZmt0a1dXNDBHdEZvdEZBb21NMFdsOXVKb2VqaFRDNVprZFJkblhhYlNTU1N4V0xwekpsVGxVcDFmWDB6bDh1cEZZZDhQdDlmL3VWUHg4WkdxcFhxNXNaV3NWQTBHQXpoY0hod2NHQmdvTCsvTHhJTSt1MDJHNFpoNVhKNWRYVjliM2NmUlpIeDhiRjhQciszdjQ4Z2lNdnRSaEZVa3NUbmpqdGVQUFArb1MzbDZ6bGlBbEJ0SFlLZWxrcFdyWitrcUV3bTk5bnR1NmxVdXErdmp5VEltWm5aZktIZ2Nybkd4a1pIUmdaOFBoK0NJc1ZDY1hOemEzbGxKUjZMTjVvTkZFWFZYQk5GVVF4Nm5jUHBLSlhLZTN2NzFXclY2WFRTTkoxT1owcWw4clZyVjNyQ1lSU0JENDY2Z0VObm9vZUhkZ1JCV0xaejg5Wm43Ny8vODdtNXVjTisvM2VJcWdHR1lXa05QVEl5cktIcHo3bUNBQUFBSUlhaFdxMjJYbXRzYm02cHZTWHI5ZnJhMm5xaFVCZ2FIUGpSajk2WW5KcXMxK3ExV2tPV0ZSQUVLNVZLTXBIYzI5dFhSd1M5WG1lMzIyMDJxMDZuQTBHd1VDenU3KzhqTUdxeFdIaU8yOXpZdER2c0JxTVJ3N0NEZTFRelBGLzhzSDVvZS9sNmp0SWlXTTFiUFVpb2hSRUVCQUFJZ29yRjB0emMvTXJLV205dkR3aUFhK3NiZTN0N2t4TVQweWVtUXFFQWdrQTdPL3V6VCthV2w1Y3ptYXdvU1hxOTNtNjMyV3hXbzlGa01wa1ZXY1p4UE9EM3ZYcnBZaXFaK3ZTenorTHhPTWR4ZHJ0OWVIZ3dFdWtsS1VMNC9MYlBpMmU5YXNCcGRIdm5sNy84MWRMUzB1SDZ1Tjh0NmxLblVxbnM3ZTB4REtNK2x1Y2tJQWlDeCswY0hobE1wbEt6cy9PRGd3TWtTVmFyVlpJa3o1MC9lL0xrQ1VWV0twVmFvVmdzbHl1VmNxbGNMaGVMcFhLbHduR2NYcS9ySCtpZm5wb2FHUm5xNitzMW1Zd2tRY3pPelQ5Ni9IaHFhdEptc3hkTHBidDM3NEVnMU5jWHdYQUNVR1Mxd0I3SDhlclk5RU9ieVIvSGtaa0JWRDllRUlSeXVaTExGeUFZd1hGY0ZNUm1xMzMvM29QRnhTV1NJRVpHUjJablo3ZTJva05EUXhmT253c0VmYklzcjYxdC9PTS8vcC8vOUUvL1BQUGtDUy93TnB2VmFyV0JFSlNJSis3ZmZ3Z0NpczF1MDJxMUJJRmJyUmFHWWVibkY1TEpKTU93UTBORGI3Lzlwc2xvZkxIZDBJdGptMXFWLzdlLy9lajk5LzgxbDh0OXI0OENCRUdielRZMk5uYnUzQm05VHZmaUFrTTlYU1lJQWdMQitZVkZobUgzOXZaV1YxZlBuRG56N3J0disvemVRcjdZWnBqRnhjVlBQLzEwZFhWTm85V1NGQ21LWWo2Zm01dWRmL1JvSnA2SVl5anFkcm1NQnFQQmFNQnhmSFYxdFZBb21NMm1udDdldWRsNW51TzFXaTFOYXlBWTZuUzRRcjZZeitkcG1rWlI1UEIxL3RCVzgvVWNtUmxBVVJRWVJrU1IyZHZiLy9pVG0zMTlrYjYrdmxhcnRicTZsa3FsZTN0N1RwMDg4ZkRSNDJoMDIyRzNuenh4QWdRaHBzMXVSYVAvK0kvL3Y0OC8vb1FreWZmZWUvZmRkOThPaDBKR2s3bGFyZCs5ZStkLy85Ly95LzM3RHpRYWpkZmpCa0hBYURSRStpSURBd09mZlBLSngrMCtNVDNsOVhoa1dUcFV3K2NMVU9XZzlqbTlmZnQyclZZRHZtNnovMXZpY0RndVhyand6dHR2bVUwbXRkRDVpODQzei9OYURUMDQyTCt5c3JhMnRyYXhzYUhSYU02Y09lVjAyaEVZUmpGMGIyL3YwYU5IMjlzN2c0T0RmLy8zZit2MXVqc3NtMDVuN3QxNzhLOC8vN2U3ZCs3bXNsa1FBRStkUGtVUWxORm9tcGlZdUhIakJnU0JmLzNYZjNYNThxV0YrY1YvL3VkL0dSMGREUVFDNlZScUs3cUZ3TWhmL2RWLzBHam9vMVZzOU1nSUFBUUJTUkp4SExOWXpCekhmL1RSSi9Oeml6Ni9EOFBRMDJkT2VkenVjcm44MldlM1pWbDJ1ZDBvaW1vMGRMbFNlZkRnd1kwYk4zbWVmL2ZkZC83cXIvN2o2T2d3am1NRW9TMlZLdGxNTmhLSjZQVjZFQUtqMGFqWDY0SVJ3bXF4OVBTRVoyZG5CNGNHQnZvaktBcHozTk15NWM4dTQzT2V6N01hbzBpMVd0L2EybDViVzFmUGVyOFA2MGRSOUdEZ1AzZjJ6TkRRSUk1amg5ZlpCNm83Q0Zrem1ZeFRVeE56ODNQSlpETGc5NGVDUWIxT0wwbFNxOVhhM3Q0TzkvVG9kUHBxdGRwcU5VbUt0bGdzSnBQSjRYQUNJUGhQLy9UUDBlajJyei80amQxdUh4b2VSaEhFN1hKUkZCV05idCs3ZC8vaXhmTVVTU2FTcVhRNnM3YTJ2ckcrUVpENHRhdFhTWkk0Y3RGeTBMZC9pejhQcXFPSklJamI3VDUvL3F6VmFxbFVLK1Z5R1NjSXJVWlRMcGZ2M1h1d3Vyb3F5ekpGMDZJazZnMzZjcm15c2JGWkxCYjlmditycjE2YW5wNmthUW9DUVlGdngvWjNON1kyeDhmSFhyMTAwV0kyeCtKeFhoQUFBS1FveXVWME9wME9uODlyc3Boa1dUNDQ0L3FLbUI4SWduSzUvTTdPYmo2Zi8vN0dQNHFpQmdjSC8rNXYvK1p2L3VvL25qcDFVcS9YZlZFWm56OThMY3N5RENPRFF3TmVyMGVyMVJxTVJyUFpSQkJFaCtOS3BWS3RWajh4UGZYS0t4ZGtXVjVjWENyazh5Q2d3QWpzOC90ZnUzTGw5T2xUa2lUTnpjMm5VaWtVaHJSYUdrRVJtcWJMNWZMTm03ZDJ0bmNnQ05ab05KMU9KNTFPd3dnOE5EUjQ0c1FVUVJEZitjYlg5ODJSbVFGVVpGbldhT2pyMTE3emVqenI2eHZsY2tVVXhPaFd0TlZxNWZJNVNaSWFqV2E3MWFKSWdxYTFnaUMwMjIyMU5MbkZiTUZRdE5OaFlSaXVWdXV4ZUtMUmFFUWl2UUcvYjJOenExQW84cndBQUJLQ0lqcTl6bTUzNlBWNk5aVHRZQ2ovaW9GTjdRWVpqeWUrTE5UblczSndDT0J3T0U2Y21QUjQzYUlvOGp6L2g4N1lmM2psUVJNa1VKWmxFSUlzWnZQRStIZ3ltY0l4bkNSSkNJWTdIYTVlYjZBbzZuSTVRUUN3MjIzUjZIWXVsL042M1FJdndCQnNzWmljRGdlS29oekhNVXdieFJDcjFieStzZG5wY0tJb05wdk5qYzB0Z3lFUEFDQkZrY1BEUTcyOXZjUERBeTZuUXoxdVAwTERQM0RrQktEVzlrRVFlR2hvd090MUY0dWxacXVGb1NoTjAyb05uSFE2VzZtVXpXWWpnZ0JPcDkzajhTZ0trRTZuYzdsY3A4UEpzcExKWkhaMjl4S0pwSWJXaE1NaGtpUmtXVVpRNUdEc1JCSFVhck1hVFVZTXd3NjcxMS8rdVlLaUtLWFRtV3d1QzN3LzNyLzZodlY2ZlhOekl4cmRzWmpORkUxOUkyZERVVUFJN09rSmo0Nk1sTW9WK0ZuVmF6VXJEUUpCbTgzYTE5ZDM3OTc5cmExdG05V0dZcWpENFNvVVNxbFVTaFJGdjkvdmRMbzBHaTB2Q0tJb3BsSXBCRUhlZnV0SFAvclJHNklrMVd0MUhNY3NGb3ZKWkNRSS9IQ04wU1BFRVJPQWlocjBaakladFZvTkx3Z3dCQkVFWWJXYXIxMTk3ZWYvOWo5THBaSWdpQUFBZUQyZVZ5Kzlra3ltbHBlWGI5MzZsT001Z2lCRVVjcmw4czFtMCtsd21Fem1ack1wQ0FKRmtpZ0NBd0FvU1pLc3lGYUx4V1EwWWlqS2NlcUkvcVhPaitvV0NZSllybFRVNWUvM0I4L3o2WFJtWlhWdFlLQmZwOWNkUG1kNEx2VU1PSHcrTGNzMnU4M2xjaldhTFo0WEpGSENjVXluMDJJWXl2TzhSa1AzaEVNM2I5NUtKbE56OHd2MWV0M2xkRDJablYxYjN3aUhRei8rOFh2RHc0TTRRYkFkTVo4dktJbzhPRGp3Mm11WGcwRy9MTXNjeDhNd2hHRTRERU1IWnpJL3BGbjhTUndOQWJ4NDZxUWVRK0k0VHBLa0xNc2dCR3EwbWl0WFhzM2w4clY2WXl1Nlk3VmFEVWJEdWZQblVBeS9jZU5HcTlXNmZmc3VqdU5UVTVPVlNsa1FoTDVJaENDb2RDb3RDcUxOWmxNVHdBVmU0RGpPWWpacnRSb0lncjVoVDBWSmtsaVc3WFMrcjczL0E1ck41dExTMHZuelo3MWVqK3IvZitITFBoOGpKR20xR29OUkQwRWd3ekE4enhNNFlUYVpDSUpvdFZvQUFQcjhYcElpVzYxV3NWaks1WEpMUzh2dGRtdDRlQ2dTaWJ6eHhodWhrRThTeFh3dW04dmxob1lHejUwNzA5c2JobUVJUVJDQ3dCVUZrQ1JKRkNVQVVGNFU0WkhneUN5Q2dTOGE1d1JCVUh2UjhSd1BLRUFrMHZ1VG43dzNQRFM0dHJhMnQ3ZFhLcFUwR3MzNTgrZi84My8rdjB4UFQ2dTFhU09SWGdBQUFFRHA2UW5ETUZRcWx4VkZDUVQ4R0lZRGdNS3lMTk5tekdZelJWRUs4TWQ2TXQ5NzlRU080MVpXVnZkMjk5cnROdndzVnd0NFlkUHBjUDZrTENza1FXaTFXZ1JGbTgxV3A5UEJjZFJrTWhnTWhscTkwV2kyckZhYnpXb1RSWkdpeVA2K3ZscXQ3dlA1L3ZKblAvdnJ2LzRybDh2RjgrSitMTGE4dkF5Q3dPdlhyMTI3ZWdYSE1WR1VlSjduT0o3bmViVUgyZEV0S25vMFpvQ3Y1dUNoaTZMWTM5K0hJT2lqeDA5dTNQelVhRFFhVFVZUUFPcjFScXZWT24zcTFOajRLSW9peldZTHh6Q2Z6OTFzMVBMNVBBUkJYcThiaGlGUjRKck5WcHRoZWlNUmpZWld2dkdHQmdpQ0NJS29PV2pmSzRJZ3hHS3h6YzJ0MDZkUEJvTUJVZnphT1VlUlpRbkRjSVBlUUZOMHFWUnV0eG1qeWFUVmFvSkJmeUtSU2lSU2c0TkRicmNyR3QwV1JmR04xNi9qQkI2UEoxWldWd3ZGQW81akRNTVdDc1ZPaHp0Nzl1ekUrSWhHb3hFRTRTQTUrS3MvamlQQlVSTEFjMTdtaTA2bkxNc29pZ1JEQVpyV3BGS3BjcVhDdE51Q0lQQzhTSktVUCtEcjdRa3RMNjkwT2gySDNXNDBtamEzdGpxZGp0ZnJNWm1NYWhPdWVyMHVTYkxkWmlVSjRvL1kwQVFQL3ZPOVA0RldxNVhQRjZxMWVnaUVBUUJVODllKy9QV2cyb0REWU5EYnJKWjhvZEJzTlFFQWdHRWtIQXJGNDhsVUtoMEkrUDErMy9yNlJxVmMxbXJwL3Y0SXkzWXFsVXE3M1diYWJaSWtJNUdJeldZTitQMGFMZlhjc2NOelh4eEZqcElBWGh4MURsZndVK2Q4ZFJ1T3BpbWRUb2RoS0FSRFBDOUVvOXVsVWltVlNodU4rbmc4Z2NDd3dXamdlV0Y3ZThkZ01JUkRRUVJCUVJBc0ZJcVZTa1duMDFxc1pqVzM1aHQvdE9CWG5CSjh0eEFFUWRNVWptR0tvbnpGTXVBd3NpenI5RnF2MS9Oa2RxNWNyblJZQm9JZ3U4Tm1zMW9MeGVMMjlyYk5aaU5Kc2xRdXhXTHhlRHhSS0JSQUVMUmFiV2F6V2EzZXJ0ZnJVQlFCWkVVR2xlYytoUmUvL1RNOGhPK1FveVNBTDZvb0NCeTJBQkFFUlZHS3g1TkxTOHUxV3QzdGRnME9EaElFdWJDd21NL25hN1ZxTHBkakdBYkRNUWlDOW1PeGRwc1pIUm54K1R5U0pFSVFsRWltNjQxbUlPRFQ2M1VRREIxc2FYL3Rod3BERUUxVGFxZkg3eFVFUVp3T1IyK2sxK0d3eTdMNHRhOVhMMThVUlpxaWZIN2Z3dUpTUGw4b0Zrc09wNTFBOE41SVQ2dmRYbGxaR3h3Y29DaXFXcTAvZVBnNEhvK1hTaVdYeTBXU1ZDQVFqTVgyVjFmWEJKNGZHT2p2Nys4em1ReUgyd2g4NFdkMHREUndaQVR3aGJVRTFTU1hnOXIvSUFCVXEvWDVoY1ZQUHJrWjhQdWkwZTM1K1lWZ01Kak5ac2ZIUjJFWW5wdGJLQlNMTkVWbXMxbEprdnorZ0ZyK24rZjVXcTJlVG1VZ0NPcnY2ME1SUkphK1VScVhlbFU0am5vOGJxZlRzYkt5OGoyRkFLbjNpQ0NJeCtzTkJnSUdnK0hGek13dlE1SWtGRVd0RnJQZjd5K1ZLdnY3Y2FmVElZbVMyKzJxVktySlZIcDVaYVhaYkpaS3BTZFBaa2RHaGowZWQ3dk5QSDQ4czdpNDJHdzJtODJtTE12eFJKS2lTS3ZWckh5KzBieWF1L3k5Zi96ZkcwZEdBTTlOdFdySnZuYWJxVlNxTE1zaUNLelg2NjBXaTA2bjAxQVVESUVPaDcyM3B5ZVpUSDN5eVEyZTUwUEJJSTRUTE1zV0M0VTB6M01jNS9mN0F3RWZyYUVBQUpSbFlIbGxOWnZMK2J3ZXA4TU9BTUFmZGFRUHdiRFpiREdaVE4vZjdhdjNMc3R5dFZxdDFlbzh6Nk1vSXN0Zk5VY2RmbUtLb3VBNEhnb0Z0cmUzbDFmNHZyNWVnMEdQWWFqZGJnOEdnNHNMQy9GNHZGcXRxaDI4VVJRckZ1UHI2eHMrbitmYzJiT0NLTTdPenRNMFJXbTBNSXcxR28xeXBkcnBkQkFZMGVsMFJxTUJoaEcxRk9xZnd3NithNDZNQUE2aFFCRE1zcDFzTHIrL0Y2dFdhenpQd3pCRTBaVEZiQTRHL2NHZ2YzcHFzc04yaG9lR1NJcDhQRE9UeVdTaTBXMm4wd2s4ODlhMVdwM2I3ZEZxdFJpS3lySlVLQlJ2M3Z5MDArRUdCL3NKaXVRNTdvK2F5a0VBTUJtTlpyTUZSZEh2S1E5R1JUMk9YVjVaR1o4WTdZdjA4THg4MFB3RytFcFhUVjByMjJ6V1ZxdTV1N3NiQ2dVdVhyeUFJQWhKa202WEt4R1BveWlLSUFpS0lwVkt0VktwUktQYmlVVGkvUG16SHE4bm44dHJ0WnJUcDA5aUtMcTB0SnhJeHR0dGh1dHdBQWhxTlJxdnorUDNlWFE2M1ovVkJMNDdqb3dBRGtkZmdpQVlqeWNlUHBwWlg5OGdTUkxETUFBQTFEM3BpZkhSMGRHUk0yZE8vN2YvL284MnU4MXF0WVpEb2VYbDVibjVoVWlrRFlLZ3crRXdHQXg5ZlgxNnZWNFVSRVZSNnZYRzB0TFMvWHYzd3owOUZFV0J3Tk1xQzhBMzdoZ255N0xaYlBKNlBTYVRxVmdzZm45am9Ub0R6TXc4R1JrWkNRV0RCMC9tYXk5U2ZYZ0VRUUFBc0xlM2YvdjIzYjVJeE82d0s3SU1RVkF3R0N5VlN0bHNsaVRKYkRaYkxCYWowU2dNSTZPajQ2bFVabXRyeStsd1JIcDdkM1oyWjU0OEtaZXJHbzBHQUVDTzR3UlIwSyt2bno5M1pteHNSS1BScVB0bVIyc1pjR1FTWWxSVTYrOTB1RTgvdXowL3Z3QkJrRTZuVXhRRkp3aVh5MlUybTlmVzFzdVZTamdjWWhtMlVxbFdxN1ZPaDN2OCtIRzVYSVlnMEd3MisvMStqOGVqMStzaENLSnBEYUFBRzV0Ym45eTR0UitMK2YzK3NkRlJyODk3dVBET1Z3UkJBSWVPcUFtQ2FOUWIwZWgyUHAvLzZtWGl0NmZkWm93R3c4aklzRmFyVWJORHY5bGlIVlFVWUgxak14NVBkRHFjckNoNnZRR0M0WHkrd0hFY2lxSWFqUVlFd1VRaXNiYTJWaWdVckZicnhNUkVOQnJGTU9UQ3hmUHJHNXVQWjU1SWt0emYzeStLSXM4TEtJb2dNSnhJSkVSQk1wcE1UcWZqY01tTW82S0JJek1EL0FGRlVSUkZyOU1IQXdHanllaHlPdGdPbTBpa2tvbUV6K3V4V016dGRudCtmdEZtczFlajBYUTYwMmcwMUxNYmtpU3RWcXZhbDA0OVNhM1ZhcnU3Tzd1N2UvVjYvZW01cVFJQUFIeDRVZmNWNDluQjRsc1ZRRGdjT25saWVuVjF0ZFBwZksvcndtS3hzTEs2c3JTMGJMRmN3bkg4YTdkckQrY3hDNElnU2JJZ0NHdHI2d2lDZWp4dW5oZHF0UnJMc2hBRTBUUnR0Vm9CQUdnMm03VmFiVzF0cmRWcWViMGVTVktXbDFkME9oMUpFcnU3dXlpS0J2eGVtODNLQ3dKRmtSYXJHVVBSSTdvVVBtSXpnQW9JZ2ppT09aMk9jRTh3RVBBNzdBNFV3K3IxZXFsY1ZvKzBrc21VVnF2TlpESzd1N3VaVEtiVmFnVUNnVkFvUkZHVVdwUVRRUkFjeDBWUmFEYWJKSUY3UEc0TnJTRkl3bVF5ZWp4dUJJRU94MXArQXdkRFFSQVlRUkZCbEJZWGw4cmxpcUo4WDE3UTAwdUNJSlBKT0RveVF0TzAydnp5Y0R6Q2k1ZW5sbzJKeHhQcm01c0VqazJNanp1Y0RsbFdPcDJPSk11TmVyMVNxYWhOQVZFVWxTU0o0N2hPcDZQdXNHbTFXZ2dDczltc3pXcVZaU1dmejQrTmpZMlBqWVpDQWJ2TmFyRmFmRjZQMVdiQmNmeTV4TkVmeWp6K0tJNk1BQTQvVUFnQ1RTYWowMmszbTAwMFRla05Sby9IYXpLWkhqeDRDRUVJaHVHVlNxVmFyY1ppc1Znc1ZpNlhyVlpyYjI4dlFSQ1pUS2JaYktwYkloaUdDUUxmMnhNK2NXSjZjR2pRNS9NMm0wMm0zZGJydENhVEFZSGhnMWpvcngxZlFSQ1VaUVhEY1pJZ010bHNOcE5wTkJyZmt3VThmVnNGb0duNjVLbVRKcFBwbVJmMC9IVWVETWxxS1kxR3MzWC93U05SRUNjbkppNWZ1VHcrUG9yamVLMVdLNVZLRE1NVWk4VnNObHNxbFVSUk5KbE1PSTVYcTFXV1pkWDM0VGplYURUVjY0MTJ1OVhiMi92V1cyLzVmRjZDeExRYWpjTmhONXROQkk0Zi9uTkh4ZnFCSStRQ1BUZkRIbHBvS2pMUG94anVjTmo3Ky92VDZVeXoyV1JaWm1zckVZOG4ydTIydWtwT0pCS0NJSWlpaUtJb3kzWWFqVVl5bVp5YW1yUmFMWHE5Vm0yTTVYYTV5K1hLeG1iVTdYWnF0ZHJuL3ZwWGY2aHFIcnJEWWYveGUrK21VK2xpcWZROUpjZW9TSkxVWVRsQjRCVkZCa0UxeXY4TEx1OVFYK1JPT3AwcGxjczJ1OVZ1dHpOdFJxZlRlRDN1ZkM0M096dFhMbGVheldhdFZtMDBHaEFFcVNkNlJxT3gxV3FsVWltV1pWbVc3ZW5wcVZhckRvZDlhbXFDd0JHZTY0aWk4R0pHenBIanlBamdPUTRIUWFndGdIRWM4M2s5eVdRcWtVaFVLdVd0emExcXJRYkRzRHJlT3h3T204MW1NQmhNSnFPNlg4RXdUS3ZWK3V5ek8wNm4wKy8zWVJqR3NKMTBKcU5yYWxxdHR0b2k4bkNzNVJkcTRQQmV1eVJKS0lwTVRVMjg5ZmFQS3BYS3ZmdjN2L083QmtHUUlBaXYxenN5TW56aHdubXJ4ZnFGUVdtSEIyTlpsaUVJNURndWw4MWwwaGtZaFB4ZW53SW9qeDgveVdTeWxVckZhckU0SEE0Y3h3UkJxTlZxMVdxdFZDcmw4M21HWWRydGRyVmFyVmFyeldZVGdpQU13L1Y2bmQxdUEwSGc0QWppcURlUVBESUNPSlNOcm43N2h6RlBMWlFGZzREUmFPeDAyTDI5dlh3dWwwcW5BUUMwMiswK255OFVEZzMwRHdRQ0FZdkZiRElaVVJUaE9LNVNxV2F6dVZnc25pOFVDNFZDLzBDL0tJb2N4N1ZBNEZtdHRUOWlYWGV3WnRBYjlLOWN2SkJNSkxlaTBYSzUvTjF1aVVJUVpMRllYcjkrN2ZyMWE3MjlQU2FUVVQwZmU3RXF4T2NkRWtoUkZKN25HNDJHTE12dGRqdVh6NjJ2YjRpaVpMZmIrL3Y3eldhalRxY0RBYkRaYXBYTGxWUXF0YjI5czdXMUZZdkYxQU15aG1GQUVBeUZ3Z1JCa0FSeGtIVUpIR1hUVnpreUFqamdjTnJySDA0NkFRQUFRUlREcXRYcS92NStyVlpERU1SdXQwOU1URnk4ZUhGOGZNempkbXUwV2hSRkNSd0RRWURqT0tQQmFEUVlTWkthbTV2NzlMUGI1VXBabzlFaUNDTEpNb2JoYWt1bHovOWQ4T3N1REFRQVFPQTVuOTk3OHRTSk8zZnZQWDc4K0x0MWhCQUVzZGxzbHk2OWN1M2FheUFJOEx6d1lqVG9GN2FyUVZBRUp3ZzEzMjE3Wi92eDR4bUNJQ2NtSm9hR2htdzJxOUdvMTlBVUJNR0NJUEtDT0RJOGZHSzZGSTFHNzkxL2NPL2V2WjJkblhhN3ZiT3pvOUZvUkZHRVlmaHdLYTRYUzFIOHVRM2lXejdTSC9vQy9oUytNQXBTQVJTZTU4cmxzdG9kZW5oNCtQTGx5eGN1WEJqbzd6T2JqUmlHS3FweEtFQ0g0eHVOWnJGWXltUXl4V0tSNDdocXRmYVAvL2gvRWdUaGNybW1wcVpFU2VSNFhoUkYrRkRGdjI5MjNxUW9Da0FRcU5WaThYbzk4L1B6My9sS0FJWmhYaEJZbHNWUTVHc3ZTUzB1RFFDQUtFaVNLTmJydFovLy9PZk5abE1VcGVucDZWS3B0TCsvTDRvQ29DZ2dBSklrZ1NBd2lpRWFHamNhZFU2bkl4QU05ZmIyM3JwMTY5R2pSNVZLcFZLdU5Cc05TWkpROUhOVkVJL2N6czloanFRQW5rTlJGQkNFWkJrb0ZrdmxjbG12MTU4NWMrYnk1Y3REUTBNT2gwTlJnSHkreUhFZDlUU0FJRWlhcGttUzlQazhaclBCNGJEcjlGb01ReUVJVENhVHFWU2FwdWxmL2ZJRHZjSGc4M25IeGtiSUYwcGVQc2VCSy94Y3NmTHZJMG9NUVdDcjFXbzBHRkFVbGI5eXAxWGQrcFFrTVpYS2JHNXVwVFBaVENZVGp5ZHF0WnJSYU96cDZabWFtb3hFZXQxdWw4bGt4RkJjRktWOHZ0aHF0U1JaZ21HWXdIRVV3N1JhN2ZUMHRORm85SGc4bjN6eVNadHBGNHBGbnVkSkVnZWVGWm8raXFQKzV4N3BEMzBCZnpxZkQwTUhPSTZQeFdLaUtQWDI5cDQ2ZGFxbnB3Y0FnTDI5dlVhandYVTRTUlloQ0VJUVZGRVVETWRzVnF2Zjc3TmFURWFEd2VsMGhFUGh5WW1KdmYzOVVxbkVNT3lqUnpObXM1bW1LZVNiSlhrZHVoSVFBZ0ZCRUN2VldpNzMzZGNJZ2lEWVpETHE5VG9NUTUvTkxWKzE1Nmd1Z2xkVzE5YlhOM1E2M2VuVHAvUjZuZHZ0RG9WQ0xwZkxiRFpoS05KcXRmZVMrOGxVcXRGb0tnQWdTNUo2aUFIRGlFYWowZXYxVnF0MWJHeXNVQ2lzcnE2VmlxVlNxYVRUNmRUZXFZY0xkUDhaUC9udmtpTXNBSldEVTU1S3VieXhzVVVRaE1mam9XazZHbzFXcTlWQ29kQm9OQ2lLc3Rsc2Ryc2R3N0JZTExhM3Q2Zlg2OCtjT2QzYkUzWjdYQWFETVJMcGkvVDJpaUpmTEJXWGwxZHYzTGpsZERuOFBpOUo0QWV0ZjcvaUdnNnZSaUFJYmpOTUpwTk5wbExmZVdDY1JxTnh1VndhRGYyMTU5UFAvZ3U1M1U2M3k1bkw1WjFPNTlXclYvdytEMFhSRUl4SW90aG9OaEtKUWp5V1dGcGVVV3NuVGt5TUl3aGFyOWN5bVd5cFZNSngzR3ExbXMxbUZFVkRvVkF1bHl1WEt4dWJXeDZ2ViszYjl4SndoQVdnTHNVVUJVQlJ0TkZzYm01dHJhNnVBQUNJNDNndWw4dmxjcXVycTlWcTFXYXpqNDZPam8yTm5qaHhncUxvaHcvdXgrT3hWcXNGZ3VENnh1Yks2cG82NDVNazJXcTM4dmtDd3pCblRwODZlZXBFTU9oWGgvQ3YzZTQ0TkFNb01BS1hLNVZZUFBZZFZvbFRyVmx2TUV4UFQ3LzM3anMrbisrcmt3RU9ZalFBQUtCcCtvMDNyanRkenJtNWhROCsrSTNMNWJSWUxMSXNONXZOVm92Qk1JekFNZldFeE9OeHYvZmUyeFJKYld4czNibDdiMzkvZjJGaEVVSGdVQ2dVaVVRQUFFQlJOSnZMM2J2MzRNVDBOT20wdndTSEFNQ1JGc0RCWGhBSWdzbEU2dTdkKysxMjIrUHhHbzFHVVJUVDZiUmVyeHNjSEhDNVhPMDJJOHNTanVNV2k3bXZMMkt6MldWWkdoam9vMGl5MVc3djdlM3Y3OFcwT20yejJjaGtzamlPVDUrWUNvZUNDQUlmdHVBdkhIU2ZhOUdudmlDWlNPM3Q3ak1NODEydEFaNE81d0FBd3hCSmtpaUtBbC9wZUh6dXFtVFo0WEFNUzNJaFgvejFCNzlSRkVVVXBWS3A1SEE0UXFHQXgrTkZFTFJhcTF1dFZyL2Y3L1g2SVFoY1hsbVZaVGtjRG9kQ29aMmRuVmFyVmFsVVhDNlgyKzNlM3Q1ZVhsNVpXVm5WYW1tdFZzdHpQSGpVNnFFL3gxRVZ3TUZuakNCd3M5WGEyTnhhV2xveEdJeVJTSy9GWXNubGNpNlhjM0p5TWh3T2w4dmxtWmtublE3WFlWbW0zYVkxR28xR3d6QnRraVFIaDBZQVFDRkppbUZZQkVFc0Zvc2t5ZGxzRHNjeEJJR2ZacGw5bzRILzZZb1FobUdPNHplM3RyYTNkK1R2YmdHZy9xRk9wMU1xbFdxMXFpZ0tPSTVKMGpkeXZpVlp4bUFFaGhGWmxqRVU5Zm04WnJPbDJXd05EUFFORGc0NEhLNUtwY1p4SEUxVGVyMmVaVHV5SkxBc0s0cWlUcWM3Zi81Y3FWUmNXbG91RklvMFRmZjI5blE2N043ZS9xUEhNNEdnZjBDdkI1NnRCSTd1TXVCSUN1RHpsWm5oUkNLMXVycFdxOVVtSnlmNit3ZFl0cU1vd1BYcjF5NWVmS1hkYW05dWJySXNLL0JDUHAvUEYvS0tyTFRiN1dLeHVMS3k2bko1N0haN01CamdlUzZmTDBSNmUybUszTnZiaTBhM0xXYXowV2o0c3ZqZUw4dlBsQ1JwZno4K1A3K3d2Ny8zWGQyc0dza0RBQUNLb3VwcVIxRytPUERoQzUrU1dzRWttODFzUmFPOWtaNnhzVkdDSUFWQkdCb2FzcGd0UE1kbnMrbWRuUjBFZ1J1Tit2cjZtaG9KSjBsU29WQWdTZUt0dDM3VTB4UCs5YTkvSTh1SzIrMEJBTEJTcVM0c0xFNU5UUWI4QVJpR0RvYUpJNnFCSXltQUEwQVFsQ1I1WTJOelkyT0Rvc2lMRnk4b0NwQk9wWTBHL2ZuekZ4RVlXbHBhV0YvZmtDUnBlMmNubTh0SmtnU0JZTEZZTEpWS3QyNTlCc1BvNmRNbmJGYUx4V0paWDkva2ZKelJhTlJxZFd0ckc3Mjl2V2FMUlZFNmgrdWhmK0VIZkJCdkl5dEtJcEg2cDMvK0gzZnYzbE03MHYzSk53WERNSXBoSUFDQ0lJZ2dNRUVRQkVGRUlwSFhYNzhlRG9kUUZQMkdLUWVxZUZpR1VYZDQzM3p6ZFZsV2lzVWlSWkVVUlZjcWxlV1ZsUWNQSGlXVFNZMUdzN0t5bWs1blpGbFJ1OXZYYXJXN2QrK1pUTWFlbnA2TEZ5Lys0aGYvMCtWeWpveU01UFA1dTNmdnJhNnVqWTRPKzMxZW51ZC9hQ3Y0Vmh4VkFSeVlZNnZWWGx0Ykw1Y3JRME9ENFhEbzRZTkhQTStkUEhsaWIyOTNmMzgvbDhzTkRnN2E3VmFqMFVDUkZJSWdpaUtmT0RGVktCYUtoZEx1N2s0Nm5lenY2d3VId3hSRnNTeEwwL1RnNE1ES3ltb2lrUXlIZ3pBTUtjb2YwdEMrOEVwZ0dFWlJ0RmFyenk4cy91YkQzMzcwKzQ5anNmaWZmRjhXaTJWb2FHaDBkRlNqMFlBUUNJRWdpcUlVU1dpMEdvL0gweGVKbUV6R3c2Ly82bVVKQUFBSWdzUmlpYjI5R0F6RGZaRklxOVZxdFZwbXMzbGhZV0Z6WXpPVHpXSW85dDY3NzlqdE5wUEpoT0c0TE11Q0lOVHI5VUtoVUt2VlAvbmtabTl2cjgxbWRidGNoVUxlWU5CZnVIQmU3YXdSaXlVQ2Z2OFBiUWpmbGlNcEFIWENWV3QzbGtybFpESkpFTVRFeEVTajBTd1VDb0lneUxLOHRMUXN5MUpQT056WEY3SGFyQnFhd2pBVUJDRkprbVJaWmhnMmx5L3M3T3hFbzlIVjFiVnlwWXFpYUtWYXM5dXNveVBEangvUDdPenNEZzcwTzUzMmc2M01MNHY2YWpOTUtwbWFlVEozODlhbjkrN2R5MlZ6Mzd4ZXczUEFNRHcrTnZhVG4vN2svUG56QklGREVLak9CaGdLNHpoQmtBU0dvcElreXZJZnNiYVdGV1YxZlNPZHpvUkNRYVBKV0M1WDZyVzZKQ3Q3dTd1aUlIZzkza2hmSkJqd2FiVWFERU1oR0FZQlVKU2tUb2VyMVdxeFdIeGpZM05uZTZkYXFlZ05odjM5UGExV2UrTEVpWjZlY0sxV2k4Vmk0dmt6MzJzdm5EOERSMDhBenhZQUFBaEJzaVRsQzNtV1paMU9aekFZbXA5ZktKWExJQWl1clcvcWROcHo1MDRQRFE3Z09NRnhRcU5SeitaeURNTklra1RndUZhcjkzbjlrVWhrb0wvdnpwMTdzN1B6ZnIrdjFXTDBPcDNYNjNFNkhmdjcrNnRyR3c2bjQrQ1BmbUVvcUN3cjVYTDF0Ny83K09jLy83Zmw1ZVZ2cy9FUGdpQkZVV2ZPbkxwMjdXb2dFRlFVQVRqUW15ekxpaUpKa3FENkc5OWdYYTRPRUFBQWxNdVZsZVZWanVPbXB5K3hMTnRzdFhMNVFpZVJCQlQ1MVZkZm1SaWZnQkdzM1c0V2lrV1dZUlJGUVZGRW85WHI5WHFmMXhmdyszcDZ3ak16VCtibkYzRWN6K2VMQkVFT0RnNk9qNDgvZWZJa2s4bHdISWVoeUZGMC9RODRlZ0o0aGdJQ29DUXAxVXFWd0FtcjFRcUM0TjdlN3VibXBzVmlHUnNidlg3OXFzdHBneUM0VXEzTVBwbC8rT2pSNXVaV3JWWkRFTmhtczN1OTNsQW9ORFUxN3ZjRlhydDZsYVRJeGNYbFdxMW10Wm9kRHZ2Wk02Yy8rdmpHN096czlOU0VWa3NEWHhrWENvRWdobUU0am4vTGtoQVFCQm1OUnFmVHFkZHBKYkh6ZkxuOWc1WHZON00yUlZFZ0dPWTVZWDV1TVoxT3U5M3UwWkhoNlBaT09wV3VWcXQ2dmU2ZHQ5OEtoVVAxV24xeDZjSDYrbVl5bWN6bmNyVjZuU0J3bDhzOU5UVjUvdHhadjkvajhiZ0k0cnhlcC92d3Q3OVBwVklBb0NRU0NZZkRRWktVV2hzQ1ExSDFWUGlIdG9jL2tTT1RFZlljVDN2bUNkTG1WalNYeSt2MWVwcW1iOTY4V1NnVWhvZUhmdnpldTM2L2h5VEpkRHI3MFVlZi9CLy83Yi9mdXZYcHpzNk93QXZEdzhNam82Tk9oME1RaEV3Mmk2R28wK2t3bVl6SlpMTFQ2VUFRVEpKa1gxOWtmeitXVHFVMUd0cm45Mk1vZXJqeHllZUxWQU1vaWpyc2RwL1BwOWZyVzYyMkduTDhSOTJMK29Zb2lycmQ3cXV2dlRZOFBQalVwRDVuVlNBSWdzRG4valQ0WlJ0VGlxTEFFQVJCVUw1UWZQOWZmdzdEeUtsVEp6MXUxOHJLV2lLWkpFbGlkSFI0YW1veWx5L016YzBuazBtRHdXQzMyMEFJU2lRU0N3dUxXMXRiZTN0N3BWTFo3WGFaakFhOVRxZlJhdHJ0OXVMaVVxRlFzRmlzSnBNNW44L3J0TnJKeVFrMWUrYXJsMG4vbmptNk13QUFBQUFBQWdpQ0dBd0dCRUh6K1h3K245ZnBkQVA5L2VGd0NJTGdXcTArTnpmLy92cy92M1AzRHNNd0xwZnI5SmxUUC8zcFQzdDd3eUFJNXZQRnphMnRyV2dVSjNDLzMrOTJ1eFVGNkhRNitVS3hOOUl6TVQ3V2FEVHUzTDNYMzkvdjliclYvY2NYMnhRQUFFQlJaSDkvbjlmbkNZVUNMcGZ6OTcvL2VHMXRyZGxzL3JHM0FrR1FYcS9YNnJRb2lzbXk4Snk1ZjIybzVYTmxzRkFDcjVTckMvUHpzVmpzeXBVcnZiMDl5V1NLNTNrQUJDMFdTeVFTNFRoT2JhQVdEb2REd1FDdDBSUUtCYXZGWEN3VXRxTFJRcUZZTHBkdGRodEZrYjI5UFFhOWZtSjgzT1Z5TFM4dnAxSXBoOE5KMDdSR3ExR2pobzZlMVIvaVNBdEFnU0JRbzZGMFdtMkg0NHZGSXMvelE4UERnVUJRVGM2S3h4TjM3dDY3ZSsrZW10c2FEQWJlZnZ1dGMrZlAweFF1SzdMRDZVSXhkRzUyTHBGSUJQdytraUFNQmdPS0lDQUlKQktKZ2NIK2VxUCsyOTkrTkRjM3I5RlFWcXVsMCtsOG9RMUtraVJKTElGalU1TVRIby9INi9IK2ovZi85ZkhqbVVhai9rYzVCaGlHdVZ3dW85RUFJNURZT2RqQ1Y4MzZhenNoZlc3NGh5QklscFZvZFB1ejIzY2REc2ZZMkFpR29kczd1MWFydFY1dlVCUkYwMVNwVkM2WHkxYUw1ZElyRjNBQ0IwSEE2M1Zaek9iVjFkVmlzWmd2Rk5McDlHOSs4MkZmcE1mamNjdXlZalNhZzhGZ0lwR29WQ3ExV2hYRE1KMU9COE13Y01RendvNXFPTWZUalNBUU5CbU5FQXlYeStWc05xdWU1dEphRFM4SUFBRHM3TzV0Ykd5eUxLUCtDb3dnSkVGQ0VDQ0lBdGRoTzUwMnk3UUprdFJxZFpJa1Z5b1ZESVZEb1VEQTc5M1oyVk1VWUdKaW9yKy83NU9iTjFkVzFpUkpVck1ydi9CS0FBQVFCRkVVUmJQSitONTc3L3cvL3UvL3QzZmUvcEZPcC91R1pxR2FyTlZxUFhQbXROdnRCRjdJYVBubTFxV3FCY1h3L2IzWS9mc1AwNm4wbTIrK2JqSWE0L0dFS0lwRFF3TUdnNkZlYjlUckRZSWdhSnFXRmJsV3F6TnRwc04ySkZGQ1VZUWdTYlhSQWMvekd4c2JHNXRiNVhJVmdpQlJGUFY2dmNGZ1lGbTJWQ29CQUtEVGFRbUNVUDRNZlVHK1Q0NmVBQTU4VGJVVWdzVmlJUWk4V3ExbXMxbUNJR2lLaGlGWUZDVlJrb3JGb2xxblRYMTlPcDIrZC85K05wT0JRQWpEQ1FBQXREcmQ5UFJrYjA4NGw4K25NeG1TSk1NOUlhL1BDNEpBUEJZbmNQenExZGRFUWJ4NzkvN2k0aktHNFYrMjVYYzRLbGlycGMrZU8vMjNmL2MzUC8zcFQ4eG04emU1STd2ZGZ2WHExZi9yZi83ZnJseDUxV1F5L2JIZDVqNi84d1BDQ05Sc05tN2MvRFM2dlhQeTFJblJrWkZpc1pUUEYwTEJvTjN1ZERvZFBNOXRyRy9xZE5xSjhiRmdJTWdMQW9LZ0ZFWFZhdldaSjNQTHl5dHFzek5abG11MWVpYVRxOVZxRUFTREVHUXdHRFFhVGF2VnltYXpLSXBZTEJhQ0lCUkZPYUpWUVZXT3BBdWttcG9zeXdBQUdvMEdzOGtzUzFJMm13VUFBSUpBUlpFVldWYjdkbkhjSDNxb1ZDdlZwYVhsUjQ4Zk15eHJNT2dsVVFSQkFFSGd2ZjI5aGZsRlNaSmRicGZEWVpkRUtlRDNKNUpKZ2lUN0lyMW56cHllZlRKNzY5UGJkcnY5dVh6d3d6enJSeVRMc3F6VGFrK2RPcUYyM1BqMDA4K0t4ZUtYM1loYWRlZlNwVmQrL09QM1RwOCthYk5hUUJEOG96cU5QaWRJR0VaWWxyMTc5LzdDd3FMSlpIcnR0YXR0aHNsa2N6aU9SeUs5T0k3MWhFT1pUSHB4Y2NsZzBEdWRUb0lrMnExMkJTa0x2TEM5dS9mbzBlTkU0Zy9OWG1WWlpKZzIyK2tBSUtBb01vcWlzaXhYS2hXS29pWW5KNXdPQjRMQVBIK0VyUjg0b2dKUVVXY0FOYmZMWkRKV3ExVUlnaGlHNFhsQkZDVVFBR0FZaG1FSWVHWWxHbzNHWUREczd1elZhbldqMGFBMm1tNjEydlB6Q3lzcnErZk9uWE81bkFSQk1PMzJ3RUIvdVZKSnBkSm1zK21OTjY2WHkrWE56YzJQUDduNTFscy9NaHIxQVBDbGNTL3FEenVkRGtrU0owOU9kenFkZHJ0OTY5YW42aUxrUlRBTWkwUWlQLzd4ZTIrLzlTYUdZOExUbGx2ZkpNNEhlTTcxVUl1bmN4eS91Ylg5NjE5L2lPUFl4WXNYdkY3djdkdTNSVkhzNzR2WWJHWlpGajBlbDgxbSsraWpUMHJsOHVURVJDRGdBd0JnZTRjdmw2dTFhazBVSll2RlVpNlgyKzAyY05ENkNZWWxTZXAwT2d6RDFPdjFTcVhzY3JsY1RxZmRiai9jU1B5SWNvUUZBRHlyWUJzTUJpS1JIdlJqVkMzczJtZzBPaDBXZ2cwNm5VNmowUUxQQkJBT2gzLzJzNTg2SEk3RnhlV2xwV1VFUVV3bWs4VnN0bGdzZHBzdGxVb1dpNlZ3T0FTQ29FNUg5L2RGMXRZMzUrY1hyNzUyK2UyMzN2emdBK1Yzdi90SW85RmN1dlNLeldycGRCamd5NzBVQ0lJa1VVSmcrTnk1cy9sOHNkbHMzYjE3OXd0OUo0SWdwcVltSTcwOUJJR3I0KzQzRy9zL0Z3eW5uZ3VxWHNySzZ0cjc3LytjNHpvLy92RTdFK05qVzF1YjVYSmxkSFFvSEE1S2tvUWdTTEZZVHFmVG5VN0g1L09oR0JxTEowcWxjcXZWTWhxTmt4UGpWNjlkRVFTK1ZDcXFBc0J4d213MmFiVmFnUmZVQmdKcUM5cEFJQkFPaHd3Ry9aOTg1djN2aHlNcGdNTkpUNklvbWt6R3NiSFJFOVBUdi83Z2cwS2hVQ2prVzIwL0NJQWVqOGZsY2gzOFZydmRqc2ZpYW5kYmk4V3FLSXBCcng4Y0hORHB0SDZmOStjLy84WERoNCt0Vm10UFQ0OHNDVjZ2bTJVN0s2dHJDd3VMUThQRFY2OWRiVFBNNzMvL2tTQ0tyMTI1YkxkYnVRNzd0Ukg1TkVXKyt1ckZkcnZOTU16S3lvcnFqeDNlU3lWSnNxZW54MlEyQTA4TCtFQ0g3L0hMYnYvWjhLOFdibEVBQUVBUUJJU2crL2NmZmZqaDc3TFozRTkrOHQ3SXlIQ3hXSXhHdDhPaFlERGcxMmhvU1pJa1NiNTc3Lzd5eXRyZzRNRHJyNytPNCtqT3prNnoxU1pKRXNleFNyWFNhRFlxbFlyYVpSbUdZYXZWNnZQNURIcDlxOVd1MWVxcFZMcGFyVm9zbHZQbnovbjlQaGlHUkZFNVdLTWYwWTJnbzNvUWRoQ2lyQ2dLaHFFa1NVSVF0TDZ4MmVsMDlIcTl4K09oS0FyRDhXS3h1THE2eW5HYzZpR1FGT1Z5T1cwMm0xcjRyZFBwV0N5bVVDaGtkemoyOXZhU3lhU2lnSUdBSHdRVmtpQW9pbElBWUhkM0QwVXdqOGRqdDl1ajBXZ2lrZUI1M21hejBUUU5RVS9YSVFmdDE1KzdQRVdSOVFhOTJXVENDYUphcmRWcXRlZGlKODBtMDV0dnZqNDQyRTlSNUxNQXo2ODNwR2RSU1UrM2p4QUU0WGgrY1hIbGd3OStrODFtejV3NS9mcnIxK3ExeGxaMEIwV1E2ZWtwazhrSUFnREg4eHViVzcvLy9jYzh6NzMxb3pjbkppY3FsV284SGhjRXdlR3dPNTBPQUZDMnRyWWZQSGlRVHFkNFhxQW82c3laMDlldlgzYzZuZWxVWm5kMzcrN2R1ODFtODlLbFYvN2lwejkydVp5SzhvZm0yRWZVK29Haks0QURRQkNVWlltaUtKUEpWSzgxMHBtTUtJcE9wMHVSRlpQSkNJSkFKcFBONS9NOHo5TTBIWWxFcmwxN3pXQXc4RHpmWVR1eGVLTFJhR2kwMm9BL1lERG9WbGZYRXZHRVhxZkZjYXpUNlNBSVlqS2JHbzFHT3AwR0ZLQ3Z2OTltczI1c2JtNXNiSUFnYkxjN1NKTDR3cE9xZzJOUjFlc3hHZzJoWUVDbjFURXMwMnkyMUQwVFJWRlFGUFg1L2E5ZnZ4b0tCWEVNRTBVSkJLSERvUTh2SHZRK2U4K0RuNE5xcjVDTnphMS8vZGQveTJReVo4NmMrY3UvL0ZtbjAxbFlYQkpGY1hKeVFtOHdOSnJOZXIyV3krVi8vY0dIMld4MmVtcnFSejk2UXhTRk8zZnVibTFGTlJxTjBhRDNlVDFXcTdYZGF0MjljeStYeTh1eTdIYTcvL0l2LzJKa1pJVHI4TnM3dSt2cjYxdWJXK0Z3K0QvOXAzOFlIaDVBRUVRVVJRajZndFB4bzhXUkZ3Qnd5SjN3KzMydFZydFVLZ21DZ0JNRUJNRmFyZFpxdGU3dDdSVUtoYjYrdnYvd0gvNnl0NmRuZlgyelhxc1BEdmJyZERxS3BFd21vOXR0MXhzTXlXUnlZM01yRm90enZMQzd1NS9PWkFrY2ovVDJOSnJOV0R6T3N1ekl5S2pQNjYyVXkzZnYzbSsxbWxhTDJXYXp3VENraHQxREVQUmN4YWlEYlZPU0pIc2p2ZjM5QTA2bkV3UkJOZEhlNC9GY3ZuenA2clhYckJiTGdTZURJSjlidUQ5bldCQUVRWkRhb1F1Q1lCakZzRWFqZWZ2MjNYLzVsL2RicmZhNzc3NTkvZnExVHFkejkrNDlIRU9IaHdkTkp1UGptWm1scGFXdDZNN0s2dXJ0MjNkQ29kQ3JyNzdxOC9sWmhxMlVLeWFUYVdod1FCU2xWQ3BOVWxUL3dNREs2bG9pa2JCWUxELzYwWSt1WDc4dWlsSThua2lsVXZQejg0R0EvOGZ2dmZQS3hmTW9pankzV0QrNkFqaVNhNEFYVVJRRlFTQy8zenZRMzVkS3BlUHh1RmFyRlFUQlpyTjVQTjZmL3ZRbkJFRlFGS1hXd0lySDRpaUd1dHd1ZnlERXNtMlN3RmlXWFYxZHpXU3lJQWhTTkkzanVORm9iRFRxRHg4OU9uM3E1RUIvSDAxUnU3dDdPSWFId3FGMzMzdFhvOVV1TEN4V0twVUxGODZQajQraUtLcklFZ0NBR0lZU0JBRUFpaWlLa3ZRMFNSS0dZVVVCWUZFSytIMWF6ZXRUa3hQcGRMcGNxZWgwdXVHaFFaZlRxVm8wRENPdFZvdm5lUmlHS1lva0NFS1NKRFVsRFFBQURNTWdFQkpFZ1dFWldaSVJCRkVVSUp2TjNiaDVhMmxwaVNMSjEzOThmV3hzdEZGdnJLeXVhYldhNGFGQkNBTHYzWHVReitkdE5oc0VRWlZLMVdnMGxjdmxyYTJ0Z045TDArVFkrQWlDWURpT1AzendNSjVNZ2pDczAra2dDSXhFSXNQRHd4Y3ZYbXcyVy9WNlBaMU9xM3Vqd1dDZ3I3OVBvNkc1ejdlUU9ycldEeHhwQVh5K0dBa29TWEltbTVNVnhXQXdjQnlYVHFjRlFXQVl4bVF5OWZYMWNSeFhyemNFWGxBRE5wUEo1S2VmZmpZeFB1bnhPQTBHWGJsU2ZmejRTYlZhQ3dhRGtkNWVVUlJKa2lBSWJIOHZkdS8rZzdIUlVhUFJZTE5aRThrNGpNQ0JnUCt0dDk0RVFUQzZGZjNkNzM2L3RiV0ZvZ2lPNHdhOXdXS3g2UFE2bTlXaTAyblZrMk9lNXd1RjR0NWVyRkFzVWlScE1CZ01Cb1BINDlGcXRiU0dJZ2xNTGR4WnFWUXptVnlwWEs3WDZ6ekhreVFaQ1BvOEhyZFdvMUdubDJhelZTNVhpcVZTdlZZdmxjc3N5MHFTVkN5VzRyRzQwV1M2L09xbDZlbkpZckcwdmJNckNud3dFR1pZZGp1NkU0MXVEd3oyYXpXYVJxTnBNT2hQblRxeHNySzZ2cjQrUERRd1BESmlzNUg1ZkhGbFplM2hvMGNnQ0lFZ1dLbFVYUzYzMiswSmg4TVlodTN1N2pXYnpXS3hVQ3dXWFM0WGdxTFZhclhWYXFFb3FqcGpSOW55bi9JeXVFQUFBQ0FJd3ZQQ3c0ZVA0dkdVMmplcDNXNTNPcDFHbzFFdWx6bU9zOXNkRG9jRHd6Qzd6UzVKMGxaMDY5TlBQNjNWYWdnTUVTVFZhclh2M1h0Z05CcFBucHdPQkFMN3NSakRNRTZIdytQeGZQclpuWGdpUVZGa01PRG5PRDZaU2pFTUV3ajRSMFpHSUJqZTNOeTZlZlBXelp1MzV1WVdVdWxNbzlrcUZJb2Rqc013WEtPaElRaks1WXVQSHM3ODluY2ZMU3dzcHRPWlFxR1F6eGM2Yk1mdXNGbk1ablVjclZicnE2dnJEeDQraXNXUzYrdnJpNHRMRzV0YnRWcmRZRENZeldZWWhscXQxc1pHZEg1aGNXbHBaV2JteVc5Lys3dVBQLzVrZVhtbDNXNU5UMCs5L2M3Ykl5T2ppV1JpWldWRkVJUndPS1RJOHUzYmQ5ZlcxMTF1NThtVEovWmpzV1F5NWZGNGhvZUdXcTFXcDlNeEdJeDZ2VEdSU055NGNlTlh2L3AxTkxvOU5qYmEyeHRwdFZwcUh4MmU1M2QyZG5LNVhLUFI2SFE2R0liMTlQUTBtODFPcCtOdzJQVjZIUVJCQjJWSmovUU04SklJQUlaaGhtR1hsMWRydFJxS29pYVR5ZVB4WkxQWjdlM3RiRGE3dTd0YktwWGE3YllnQ0IyT2N6b2RYcTlYVVlEbDVkVW5UMlkzTjZPVlNnVUV3YW5KeWFtcGFaL2ZaellabzlIdGFyMFc4UHZhRE1PeVhLbFVydGNia1VndlJaSDVmR0YvUDJZMm00YUhoL3Y2SWlpS0poTEo3ZTF0bnVlRHdZRFA1OXZmMzArbjB3YURRYXZSN3NmaTJXeE9wOU00blU0UWhDd1djekFZV0ZsWjYzUll2VTZyNXQzZnYvOXdaV1dOcEVpNzNTNElndEZvR0I0ZUJCU0YxbWlNUmlNQUFKL2V1cjIwdkNMTGlsYWp1WC8vL3VycUtvS2dGeTZjLy91Ly83dXIxNjdTRkxXNnVyS3h2dVZ5dTF3dVJ6YWJXMS9meW1TekxxZHJkR3cwbGNxazB4bWZ6M1AxNm1Xbnk0M0FxQ3pMaFdKeDV2SE1CeDk4c0xTMGJEUWEzM3pqamI1SXBObHFiRzl2NTNLNXJhMnRsWldWblowZE5iUFo2L1VPRGc2eUxNdXlIWklrVFdhejNXR0RZVmlTWHdZQkhHRVg2RGxBRUlBZ1NKS2tkcnZWYURSd0hLY295dTEyMTJxMWJEYWJUcWZWcm5nWWhwck5ab3ZGUWxHVXkrVmtHRGFaVE83czdNaXlMUEM4eVd3YUh4OExoWHZXMWpjTCtYeWhVSEk1WFJxTmh1ZDVDSVkyTnJlR0JnZk1KdE5XZEdkK2ZpRVE4SHM4bnAvOTdLZVIzcDZQUHZwa2ZXTWpIays4ZHVXeVFhOUxKRk16TTNNMm04M244K2gxT2dSRlJWRzZjZU1HQkVHaFVMRFJhQlNMeGYzOWhNOGZiclVheVZRYXhkQlRwNlozZDJObXM4bnI5WTZOampZYWRiMWVoNkxJZml5K3VSWHQ3ZWt4bTAxemMvTU15Nzd5eXNWTGx5NmRPM2ZPNDNZVlM2WDkvVmlqMGVqcjczVTRiTWxrYW05djMrLzN3UkNvTitnMU5MMjh2R0l3NlB2Nit5bEtXOGpubzl0YjkrL2Z6K2R6QkVHU0pLbnVGeTh2TDkvNjlGYXhXR28ybXp6UGN4eUhZWmpWYWxVN0tuQWN0N2UzcHlpS0tFa0FBQnplcUhvSmZLQ1hSQURxcnFMVGFVK2wwdVZ5UlJSRnRkSlRiMjl2THBjREFJQWtTUlJGVUJTclZxdWJtMXNBc0dVeUdRMEdBNElnTE12V2FqV080eGlHcWRWcnRXcmw5Smt6SG8rNzFXcm04bm1udzRHZ3NPcmxQM2p3T0JnSURJOE1JU2k2c2JFWmo4Y1poZzBFL09mUG4vTjR2QjkvY25OOWJaVmgyWUgrZmxrQlpoN1A3UFpIQmdjSFhDNlBJSWp4ZUZ4UkZJb2luVTVIdlY2Zm01dmYyNDlackd2VlNybGFyYnJkcnA1d3VGS3Bsa29sUlFITUZvdlg1NFVnWUR1NlBUKzNnQ0R3OFBDZ0lBaUZZbkY2ZXVyS2xTc25Ua3hERUpST1orS0pCTWR4UHA5blpHU29WQ3psOHdVQUFDSzlQZW8ycFNSTDdYWjdvTC9mYWpadGJLemZ2SG56L3IwSCs3R1lKRWw2dlY0UUJQV1FybEFvc0N4TDBaVFZZc1Z4ck5QaE1BenorWHpEdzhNd0RCY0toWFE2emZPODNtRFE2M1Ztc3dsVWdHOFlzdkh2bjVkRUFMSXNveWdTaVVTMnQzZjM5aVNDSUFLQmdOL3ZoeEdFcGlrUUFKd3VSeUFRd0RBc2s4bHNibXl1cmEvdjd1NG1FZ2tJZ2d3R2cxNnZ4ekFzbFVyRjQvSDkvUmlHb1JTdG9XbTZXcTBpQ0N4TEVxWFR1dHd1VWJ5WHl4Y2lmWkdlbnJESlpGaGYzMHpFVTVsTXRyKy9OeHp1ZVZXVUdLYVZTV2ZHeDhmdGRsdWxXcmw3N3o0SWdxRndxRkt1ZkhMalZyMWU3KzN0b1dtNjNXWWFqVll1VjZoV3E2SW81bko1bzlIQWNWdzRGTjVZMzFwY1hOUnE2WUgrUGxFU244ek96Yzh2bkRneGFUQWE5L2IyT2gzdSt2WFhwcWFtZVY1WVhWMHBsY3BtczNsZ0lCTHcrekNjWEZ4Y3JsUnFUcWZUWU5CUkpObHN0VGlPUnhDRW9xbE1KdnVMWC96UFgvelBYN2JiYmJQWnJOZnJPNTFPS3BWcXQ5c0VRZmg4M3JObnp3d09EZ2FEQWExR204dmw0b21FMmhGVmtpU05Sb01neU9MaW9zdmw5UHQ5TnB0VkFSVGxtelZRKy9mUHl5QUFOVElVQkVHWHl4VUtoZXIxaHBvWUFNTndzVkRJNWZLblRwOFlIaDZ5V0t5S0lvdWljdlcxSytWeU9abE03ZXpzTGl3c0xxK3M3Ty92Z3lDbzErczVqbnZ5NU1uLzhkL29WMTU1aGFacE5lT0pvaWlhMWlpeTBtdzIyNjJXd1BNUUJHbzFtc21KTWEvWHM3Y1gyOXJhenVjSytYeUI1M2lYMjRYamFLdlZyRlFxOC9QTmREcHJNcGw0bmx2ZjJMaDI5Ylh4c1ZHVzdjek1QSG40NkxISlpMSll6TlZxZFdWbHBWYXJqWXlNakl5TTlmVDJmUFRSNy8vTGYvbXY0K05qRE1QczdlMjFXdTFpc2N4eGdvYlc2YlRhL2IwWXh3a0lna2lTTkQ0KzZuWTVhWnBVRkVCUndGYXJYYS9YYUpxRUlKaW1hYmJUNGJnT2lxTDVmRDRhamY3TC8zaGZFQVNTSk92MWVpcVZNaGdNZzRPRG82T2p3ME9Ed2FEZjZYUnF0VG9FeFdCSWtSVjVmWDNqNGNQSHNWaE1xOVhxOWZwZ01GZ3NGdnY2K2tLaElFbVNnc0FmUFBrZitzUC90aHh0QVR5WG80Z2lxTmxzc2xqTUhNZVRKQ0ZKRXROdVF4QVlEb2NjRGpjSWdxMVduV1U3T3EzV2JEWjZQTzZob2NGejU4N3N4MklySzJ1enMzTTdPN3ZWYXJYVDZkeTdkeDhBd01IQkFiUEpCTU9JVHFjakNDS2Z6Ky92NzNNY1o3ZmJ6dW5Qa1NTRkV6S0tvaGlHZ1NENDZQRk1JcEcwV2l4V3EyVjJkaTRhM2Vudjd5Y0lzbFFxYlc1dVNySTgwTjkvOHNSSkNFYnUzTDc3NU1tYzIrVzZjdVhWMGRHUmVxME9nZURHNXNhdmZ2VnJ1OTArTVRGV3ExVSsrT0REalkxTkhNZjlmci9GWWlrVUNvOGVQWEk2SFgzOWZmZnZQNGduVTVNVDQ1TVQ0eTZYWGFQUklDZ3FDR0lpSHB1Ym0xdGRYUk5GVVJRbHJVN0hDNElvQ0F6RDNMLy9ZR2xwS1I2UFV4UWx5N0xQNTcxMjdlcUo2YWx3VDlqaGNKaE1SZzFOQVNEWWJyT05SdDFxTVdLNDN1SHdPQnp4YkRaSEVMalJhQUFBUmFmVFdjeG1uVmI3TFBydUNGZURPOHlSM3dYNmZETlFRQklsdHRPcDFXb013NGlDSUNzeWdpQjZ2UjdIc1hLNXRMS3l1ck85cmRWcTFNeERnOEZnc1ZvMHRFYVdGWTdqcXRWcXZWN25PSzVXcTdWYUxaS2srdnY2ZXlOaGs4bllicmZXMWpZMk5qWXFsYXE2a3lqTE1vb2d0SVltQ0twYXJjMCttY3RtczFhcmxTQ0kxZFcxVENacnNWamNiamNNSXl6Ym9TbnFuWGZlQ2dTQ3F5dXIvK1A5OTdlMm9oY3VuSC96elRmNytnWmNMa2U5MFZoZVhsbGNYTFJhTFgyUlhxdlZ5ckpzdFZwek9wMnF5eFNQeDB1bGtpVEpNQXh2Ykd5eURPdjMrNmFuSjNWNkhjL3htVXgyZVdYbDdwMTdzN056MVZwTnJ6ZDRQRzZqMFdBdzZBVkJtSnVmZi9EZzRkcmFPc3N5QkVIWWJMYisvdjZUSjA5T1RJNFBEUTI2WEU0Q3h5RUliTlNiYTJzYkN3c0xCRUVvZ0ZJcWxRcUZBZ2lDQXM4M20wMkdZUWlDNk92dmRUanN6d1UrZFFYdzc0S0RxWUNpU0JpR3E5VmFJcEVRQlZHcjBaQWttY3ZsT1k2THhXTDM3dDB2NUl2aGNNamxjbktkRHMvek96dDdDNHRMZTN2N0JJRWJESHFDSURpT1U3c2pXc3ptVjE2NU9EbzJBb0hnN3Q3K3hrWlVVUlNXWmRWeVVjMW1DOE13aWlRbFNjcm5DODFtazZZcHZWNVhyOWQ1WGhCRmtXVlppOFdNWVpoV3F3a0ZBMVBUMDZsVStxT1BQMzc4K0RHQ0lJRkF3R0czWVNoY0tCU2kwV2cwdXAzTDVTUlIwdW4xTHFmTGFyT1Z5eFdYeTBtU1pES1phalliS0lwQklDUUl2RmFyTlptTVRvZkQ0YkNMa3BSSXBPN2RlL0RoaDcrYmVUTExjWnpWYWpXYkxRQUF1RjFPbjg4ckN1S2R1M2RuWm1hS3hhTEZZdW5yNjV1WW1BZ0dBZ0FJNUxJNVdaSUlIRWNRQkFTaFZxczlPN2R3NjlhbkdJcDFPbXd1bHlzV3kyYXpwVkFvcHRNWkJJR0hoNGQ2ZXNKcVZDbndMTkRqcUZzL2NOUmRJT0NGYWdnd0RIdTlibHBEZTczdXJhMXRobVdkQm9OV3EyczAydHZidTRWQzhkVEphWU5lRDBJUUFJTDcrN0ZidDI2M1d1Mmh3UUdEUWQ5b05QdjYrdnI2K2o3NjZQZDdlL3NZamxrc0poaUM0dkZrTGxmVWFEUnFTS25KWk5KbzZFdzY4NnRmZmZEa3lkem82R2hmcE9jLy9JZWZNZ3dyQ0x4R285bmJqNjJ0YmJBczI5Y1hXVmhZaEdGb2RIUjBaMmZ2enAwNytYeisvUG56N1hiNzd0Mjc4M056d3lQRDJXdzJuYzdvOWZwMzNubW4zVzdmdm4ybjJXeFBUVTM2L2I1YXJhYlQ2U1lueHRydDFzVDQrTWpJa0tMSWtpUlJOQTFCVUQ1Zm1KdGIyTm5aYlRhYk1BS2J6YVoybTRGaEdNY3hobUVUeVpST3A5ZnBEVmFyVmQzVGZQWFZTMmZPbkhFNG5BYURIb0hodGJYMU8zZnVsMHJsSzFkZWhTRllwOU02N0RhS29qYTNvcklDMk8wMmw5T1p6K2RoR0I0Ykd4a2VIblk2YkFTQi83SHBtdi8rZVJsbWdPZWlzaUFJb21qS1lySG90RnBKa2tybGNxZlRxVllxSE1kNVBPN3o1OCs1M1M0VVFlcjF4cDA3OTBSUjZ1L3Y5M2pjS3l1cks2dHJzWGdzbTgwbWt5bFpsaWNuSjY5ZGZVMldsWEtsbXN2bDQvRllQcC9uZWNGcU5ROFBEWTZPamhZS3hmc1BIdHkvZjM5N2U2ZGVhNkFZYWpRYTlUcmR6dmFlSUFyRHcwTTh6NWVLWmJYYzFZT0hEd3FGQWszVEdvMm0zVzYzV2kwRWhuRWNiN2NaZFcxcXNWalV5a0lzeTVJa2FiZmJzOWtjQkFLRGcvM05aaE5CRUlQUllMR1k4L25peXVyYXh4L2YrTVV2Zm5uLy9rTVVSU2NuSjBkSFI3UFpyQ3dya2lTMVdpMm55NlhSYUxRNkxVMlQ2VlJtZVdXbFZxc1pESHBSbE5RT0lDYVRhV0NndjFhclY2cFZXa05iTENhQ3dGRVVKVWlpMld5S29zanpBdGZwb0JnNk5OZy9PamJpZE5vSkhIdnVhYjhjTWpqeU04QnpIQVJSNnJUYTN0NHdTUkxiTzN1ZERrZlRaQ0RnOVhnOW9WQ1FKSEJCRUJ1TjV0N2VmaUFRTUJvTjJWdytGay93UElkam1LTElIYlpEa3BUTmF0WHI5YUlrU2FKVUtwVlNxVlE0SEdxMTJnZ01Jd2dLdzNDajBkamEyaW9VQ3ZWNm85UHAxT3IxV0N5T0lNak96bTR3RUFpSGc3ZHYzNFVSbUNUSlZEcGRLQlI2ZW5wd0hOdmFpaElFY2ZueXF5Nm5reVFKUVJTcjFXb2lrYXpWYWlNand3Nkh2VnF0Yld4c1hMaHdYdlZNZUY3dyszeUxTOHZ4ZU1JZjhLWFQyVXdtdmJhK3ZyaXdXSy9YS1lxVVpSbEZNUVJCdlY0dkJFR2xVakdaU05odFZneEZFUmh5T3AxYWpVYVNKRUVRSVFpRVliQmNMbTN2N1BnRGZvUFJzTGUzdjd1NzF4ZnBKUWpRWnJlZU9YTktyOWZYYTNWRlVRaVNzTnVzNFhCUWJUZ2lTV3J5MTh0ZzlJZDVTUVR3WEwwR1daWTdIUmFHWWIvZjUzUTZhL1VHQUNnMFRkRVVwUmJIVlJSWkZFV0JGd3FGWXIzZXpPZnpOcHRsWW1KTXE5VXRMaTdtYzRWbXEwVnJOQ1JKQWlCUUtCYlcxdFliamNhMWExZXIxZHJxNnRyZWZteDVaZlhKa3llTlJzUG44MTI1Y3RuajhiQXN1N0t5bXN2bElRZ0tCUHlLckpSS1pZSWdHSlpKcGRNYWpYWjRlS2pWYkMwdnJ3d085bDkrOVZJNEhGSUFCUURBVnJOMS8vNkRUeis5RGNQdzhQQndPcDE1OU9oeExwZFhGTG5UNlNSVGFhdkZVaTZWMWpjMjQ0bUVYcThQQkFJV2l3VkYwTnUzUDl2YzNDUkpzcSt2SDBYUnNiRlJxOVd5c3JMNndRZS9zZGxzWjgrY1JsRk1wOU5wdEZxWHkzWDY5S21ycjEwMm1reWJtMXVMaTB1ZmZYYTcwV2h3SE1keG5PcFpnUUJnTVp2T25UMWRyemNrU2FKcGlxWXBSVkVPY3VSZmp2am41M2hKQlBBY0I3SDRraVFoQ0d3eFB5MHByaTdnWkZuZEd0THA5Zm9uTXpPMWVzUG44NzUyNWRXUjRWRzlRZTl5dVJBRStlejJIUXpEWkVWaDJ1eWpSek96czArQ3dZREZZZ3FIUXhBRTNidi9vRjZ2RjR0RmdzQXZYcnp3RC8vd0R5Nm5zOU5oUytYaXdzTHk2dW9xeTNLRlFxbFdxOU8wMk9sdzFXclY2WFFXQ29WY0xtY3c2SzVjdnVUMXVnV0JreVFaQUFCYVE0K05qM1c0enVQSHN5YVRHUUFVUlpIeitYeTczUlpGb1Z3cVlTaEthelNuVDUrNmZ2MDFzOG1zMWVyYkRPUHorVFkzTjFLcFREYWI3ZTN0OWZ2OUV4TVRORTF0Ykd6dTd1NCtmUGhnZkh6c3pKblRvaVI2dlo3aDRhSC85Si8rd1dHM2tTU05JRmdzRnI5ejUwNmhVQmdjSExoeStSS0tvbXAycFNSSkVBUVpqZnJEait1bHNmVXY1T1VSd09HRUxQVjc0RmtqR1RYWFZ1MnRBb0tnQWdDeW9tZzBtdlBuejdiYXJjZVBaNkxSNks5Ly9jSGUvdjdBd0lEYjdacWNuRWdra2dBQTVQUEZlRHl4dHJhMnU3c3JTZExEaDQ5ZmVlVVZzOW1Nb2Fnc3k1SWtkVHBjb1ZEYzNOeE1KWk9OUnFQZGJwWEwxV3ExQ2tIdzlvNHBsVXBiTEdhQ0lLclZxbDZ2YjdmYmxVcVpwbW1qeVl3Z2FLZkRxczBIQUVYUjY3UldpNlZTS2FkU0tRekRHbzFHcFZJcGw4dUNJQ0FJMm1ZWXRmdjMxdFkyQ080WWpTWUFBQktKT01Pd2tpUktrZ1JCb0Y2dlIxRTBIbzgvZVBDZ1hxOXZiVVVYRjVmOC9rQ3hXTExiN1gxOUVadk51cmtWVGFlekt5dXJqeDQ5YWphYmdVRGcxTW1UdmIwOWFwK1JnMUhqNElzWHQvbGZQakc4UEFJNFFEVng5U3RWQXdlVm13NCtQelYwWW5oNEVJWWhpOW04c3JwYXFWWmkrekdUMGVpdzIreDJ1OGxrTEJSS0t5dXJPenU3NlhTYTQ3aGtNdm4rK3o5dk5sdDZ2WUZwdDl2dHRpUkpETVBzN096Y3V2VXBUZE5jcDhQeFBNTXd1enU3R3EyR1laaFliTDllcnhtTlJsbVd0N2UzTVF4akdJYWlXc1ZDUWF1aGNZSlVMd3hCa1ZhcG5VcWxhN1dhR3AxUktwVU1Cc1ArL2o3THNpekxNZ3lUeTJWSmt1STRYbEZrblU0dlNhSmE3RnJ0QlYrcjFTdVY4cDA3ZHhZWEYrL2ZmNkNHOTJ4c2JFUWlrZDNkUFlxaVhDNFhCTUdOUm10dmJ6K2RUbXUxbXBHUm9WT25UazJNajVtTUJ2bFFkaTl3cU9uM1MyLzl3RXNwQU9CWm1yb2Fxbkw0cEV3NXlLaFZGQVVBU0pLWVBqSFYwOXNUaThWVHFUUkprajZ2eDI2M3dqQ2kwK3FpMFoxNzkrNFZpMFcxVWhyRE1EZHYzc3hrTXNGZ0VBQ0FWQ29weTVMSlpESWFqUnpIR1F3R2lxTHE5VVlpa1V3a0U3SXMxK3YxWnJPcG5vNVpyZFpNSnFPK2ttR1lUL3Y2RkFCMHVad0FvSUNBMG15MkZwZVdidHk4bGNsa1c2MDJBQUMxV2czRHNKMmRuVTZudzNGY0twVmlHTWJ0ZHJ2ZGJyWGJjYTFXQndEQVpyUFZhalYxTGQ1b05KTEpaRFFhVmVzV3NpeTd2Ny8vNU1tVFZDbzFNakprc1pnSWd1anI2MFVRT0JRSzBEVFZFdzdaSFhZY3d3NlhkSCt4OU4xTDBBcjdxM2s1QlFBY3podi84azlPa21SWmxyVWFlbmhvc0wrL0h3UkJDQVFnRUVCUU5CRDBMNitzUEhqd3NOVnFWYXZWWjYrWG90Rm9MQmFESUlqbitZR0JnYXRYcjE2OGVJR2lhSlBKeURETXlzcHFwVkx4K2Z6dGRrc1VKUnpIczlsY3BWSXBGSXBxWUkvYW9hTmVyNitzckU1T1Rwak5Sa0VRdHJkMzc5MjcvK1RKRTFHVUVBU21hWnFtNlhRNnJiWnE1RGhPcTlXYVRDYVh5K1YydTA2ZlBtMjFXSGhCTEJaTHFWVGlndzkrTXpNek16czdpNktvR3Ntc1hxb2F3d3dBQUUzVERydmQ2WEFBZ0d3eG05UUVBeEFFWUVndGFmcTVoZ1pmWGZEcnBlU2xGY0FYOGx6c0VQaXN5eWNNUXdpQ0FBQWd5NUphM3JDbkp6dzhQRFEvdnhDTlJ0VmE1K3J2OGp6UDh6eUdZWDE5a2YvNEgvL3kwaXV2YUhWNmtpREw1ZkxPem00bWt4a2ZHN2w0NFJ4TzRJcWlNQXlUVG1maXNYZ3FuYW5YYXhpR1ZTcVYvZjM5ZXIzT2MxeUhaVW9sQ1FCQWp1c3dETk5zdGh3T3U4UGhVQ3NRRGc0TytQMStyOGRqTnBzUkZKVWxxZGxxMWV1TjVlV1ZpWWx4Tlk0L0VQQWFEWHF0bHY3MXIzOVRyOWVCUTVZcUNFSStueWNJNHMwMzM0eEVJbnE5VGhKRkVBVFZoaTRLb0NpeXVodjJNaHYzTitGNENVQUYvTHhmcEM1bkQ3NEZBRUNTSkl2Wk5EMDFtVXltYXJXYTZvVWYvaFdyMWZyV1cyK2RPM3ZXYXJVeUROdHFOUmFYRnBQSmxNdmxtSjZhOUhnOU5FMERDc0N3N1dhemxVbG4xOVkzbHBhV3pXWnpvOUY0K1BCQnZkNncyYXk5a1FoRlVUQUVLWXFpMSt0c051dVZLNWV0VnBzZ0NEaU9uVGw5SmhEMG0wMUdqWWJHTUZ6ZytYeXh1TFcxUFQ4L3Y3eThMSXBpTUJnVWVINThmSnpqdUhRcU16czMxK2wwRGk0U2hoR3oyVHc4UEh6NTFVdUJnRTh0NzZ6dTh4emN4WE9oRE1kVENjZFJBTUNoMm5JSDN4Nyt2NHFpQUlBU0RBVisrdE1md3pEOHlTYzNvdEVveTdLQW9uQThqK1A0d01EQWE2OWRBU0VvazgzcWRMcG9kQ3NhamJwY3JuZmZmZHRrTWdHQW9uYkoxdXQxUnFNeEdBd09EZzVvTlJvSWhnVkJSRkhreG8yYnNxdzRITTZCZ1FHbTNZcHViNE1nR0FxRnJsNjlxaHJ4Mk9qSXdPQVFqcU95SkNpS3JDZ0FUbUNoVU5EcGRGSVVjZVBHemJVMU9SRHdsc29sclZZYkR2ZTg4ZVliZS92N3BWSUp4M0VJZ2xBRXNUc2NwMCtmZnV1dE44K2NPYW5SYUFSQmVERjgvM0NCdmVOcC9jQ3hGUUR3bFFPZXVpMElnYURmNS9tN3YvdnIwNmRQcnE5dnhtT3hWcnUxdng5VEZHQnljb0lraUhxanFkVnF0QnA2ZVhuVlpES2ZQSG5TWkRJTFBNY3dqS0lBQklrakNDSUtJZ3lMSkltUGpZMDhlalJUcVZhZFRwZmY3OS9ZM0x4Mzc1NU9wOW5jMkpwOU1pZkx5dERRVUtWUzRUZ3VGQXowOWZXQ2dNaDFoSU5Xc0FBQTREaUc0L2owMU9UV1ZqU2R6dXp2N1lkQ29WUXF3L1BDMk9qbzBOQ1FMRXRPcDBPdjA5c2RqcjYrdm9IK1BxL1hqZU9ZTEV0Zi9SQ09yZlVEeDFrQUIzeEZDM2dZaG0xV3ExNm5pL1QyTkJwTlFaU2ZQSG1TVHFmTVprdWxXb1VnV0t1aEZVV3VWQ291bDh2bGNpSUlBZ0xBZml5UmlDZFFESjJlbmlRSVhDMTM3dlY2b3RHZGJEWXJpSkxiN1c0Mlc5bHNibVptTmg2UFF6RGtkcnNwaWtxbDBzR2dQeER3a3hUSmRUb1FDSW1TbE12bFoyZm53K0ZnWDE4dkJNRWFyY0ZzdGlZU3lYUW1NemsxbWM1a202Mm1ScU1KQmdOOWtkNnA2U21UMFVUUnBGNm5vMmthaHFFRG4rY0w3N2RMVndDZjQ4V1FDaEJVU0pLZ2Fjcmxjb0VRMm02M1pWa1NSYWxlcit2MUJnaUNPSTZEWWJqUmFGYXJGWS9ib1FCQVBwK2ZlZkpFa3VSd09PaHlPZFgzcEduYTVYTHU3TzZtOTJJVVNScU5ScFpsUC83NEV4aUdueFd1cW5RNm5OMW1jN3Rkc2lRcENvQmdTTFBkMnRqY3V2WHBaN0lpQndJK2tpVGJyVmFqMGVCNUFZSmcxYmc1anBla3BsYXJpMFI2SjhiSHRUcURvZ2l5SkVtUzlHSkQrYTcxUDBkWEFNL3ozQklaQUFCQkVGUXZHY2RsRElVVldhblY2Z2lDNERqUmFyVlJGTFZaYmZsY2ZtRmhTYS9UeW9xU3krYlNtUXpMc0tWaXlXYTFJZ2dpU1NJQUtDYXpVUzFZQkFLQXkrM2EzOSsvZCs5ZVgxK2YyNjFtcTdWTUpwUEpaTkpvTkpJa0FZQ2l0dGpZMzQvbGNybGtNcGxNcGxxdGRxRlFTaVRpRUFUWmJQWkt1ZGJwZEhpK1U2L1hZUmhHRUZTV1JhN1RPaHl5Lzl5dC9kQlA5OThkWFFGOEFjL05BNGVPU0dXSHcyNHlHYmVpMnh6SDBUVGRabGdBWUVkR2g2TmIyN3U3ZTRWQ0FjTXdTWktOQnFOV28xSGJCeDM4TmtrU0ZFVW9pc3gyV0FpQ0ZFVnBOQnJBMDZwZWZLZlRJUWljSkFrRWdaK04zSXJhdWRycjlURk01LzZEeHp6UDEydDFpcWJDNFJDT1k2MTJpMkhZWXFGWUtwZlZWcWMwVFgvaGVoZm9XditYMEJYQUYvUGN3dUJ3TDRMZTNwNTRJalU3Tzhjd3pPblRSQ2dZYkxWYU5ydE5iOUNMb2dpQ1VLUFJxTmZyRE1Od1BBOEE2dThDaWdKQUVBU0FvQ2c5elNtQllSZ0VRUXpERUFUaE9FNWRLa0N3V21GWFVSUUZBQ0ZCRU92MWVxR1ExK20wT0U3Z0dLYlZhRkFNb3lnYUFFQUVRWGQzZDVkWFZpMFd5OWpvaU12bGZLNVVmOWZvdjVhdUFMNmVnNDFDV1ZaUUJQSDV2S2RPVHRmcnRXcTFsazVubkU0blNaSWdDSFk2SGE3RENxS3M5bEhzZE5pRDZnbnEyMGlpekhPOEtJZ0VUa0FRSk11eUtJcXFmNldXOU9JNFRoVEVQOVNYQmdCSmtwck5kcUZRc052dGlxS1FCRUVRQkFRakZFV2hLQktQeDh2bGlzVnNQakU5T1RJeXJOTnBEeTk1dTliL1RlZ0s0SThBQkVGQkZDbUtuSmdZc3p2c0R4NDh6R1N5bTV1YmtVaEVOZnAydXkwSVlybGNCZ0RBWkRMaE9LRTJGQU1BQllUQU5zTTBHaTFKa21pYVZzK0oyKzEyb1ZEZ2VSNUJFTlVqYXJaYWdpQ3FlcEJsR1VWUWcwR3YxK3NZaHNsa01oUkZxWW50R0lheExMdTh2T0owT2ljbngwZEhCZ21DVkJSWkRlcjhvWi9UVWFJcmdEOE85ZVFZaGlHLzMyc3dHSmFYVjJkbjUzSzV2RWFqaFdGSU5YY1VSU09SeU9EZ1FDZ1lRRkgwWUN1bVVDamtjbGxabGpVYWpkcHlpK2Y1ZERwZHI5ZHROaHRCRU5WcUxaZk5OWnROazhrb1NaSWdDRmFyNWRLbGk1SWsxZXNOUlZFa1NRWUFzRmFySlpQSmRyc1ZDZ1ZQblR6aEQvaEJRSG5hdEwxci9YOGtYUUg4MFR3MU1rVXhHSFNqSTRNNm5TYVR5YldhclE3SFFSQUl3enEveit2eHVIdDZRanFkVnBZbENJSWdHS2xVcXRIb2RqYWJveWhhcjllclZlaEVVY3puODlsc1ZpMmJYaXFWTnJlaS9rRGc3Tm5UaUN4TGtvUmhhRTg0UkJERS9uNjhXQ3dKUEErQUFJN2pKcFBSYURUMGhJTjJ1dzJCNFJlYjFYV1Y4QTNwQ3VBYjhkeStrTG9naGlESWFEVG9EWHF2MTFNcWxobVdZVmwyWjJlWDQzbVNvbHh1anl6eHNxd29BRkNyMVdkbjU3YTNkd1ZCTkJqMGFvWEdXcTFtdDlzN25VNDJtM1U0SERhYnJkVnFwVkxwcGFWbGg4UG1jam9RQklFZ0NNZHhsK0tNYm0xelhNZm44K3EwT29vbWpVYUQxV3FsU0VLU0pKN25QN2ZoMlRYOVA0YXVBTDRwejBYT0hCd1JnQ0JvTVp2c05pc0VRZWwwOXJQUDdxVFRHVWtVQTM0dmhxRWdBRGFhemVqMjdwMDc5d3FGZ21xNEhNYzFHZzJMeFJLSlJOVFV4MHFsSEFxRnF0VnFwVkxkMk5oRVVlVDh1Yk5XbXdYRE1JRVhkdmYyN3o5NHdIRmNKQktabkpxaWFVSVVCVm1TMUpaN0I0MjZnR2ZKUUYwRmZITzZBdmdqK01JRzhXcE9GZ1JCalVaemUyYzNGb3RqR0ZZc2xYLzV5OS9vRFRwUkZDdVZTcUZRVW51Nm1NMm1nWUgrbVprbk5FMFBEUTFkdkhneGxVcmR2SG1UNDNpTmh2YjV2S0lvdE52dDdlMmRjcWxzczlzMEdvMG9pdVZ5QlFRaG5oZG1abWFHQnZ0eHpDeUt3aGNtYlFGZDYvOGo2UXJnaitiRnRLbURNR01FUVdBSXhuRWNRWkEyd3pSYVRWRVVXODFtUGwvTTViS1JTTy9JeUxCV28wMm4wMDZuODl5NWMrUGpvMTZ2cDFBbzdPL3ZKNVBKVnk1ZWtDWHA4Y3hzcTlWV0ZFQldBSUtvd3pDaUZtOERRUkJGRVJpR0FFQTlYK3NlOUg0SFFOLytMWTRoaHdzRHFsL0lzb3lnaU12bE9IbHkydWwwQWdBZ2ltS253OVZyOVhRNms4dGx6V2JUcVZPbnJGYnIwdEpTcFZJSkJnTWp3ME0ybXlVWThJK1BqeEVFTVRzNzErRzQwYkhSNGVGQmp1dWtVdWxLcGNLeUhaWmxCVUdnYWFxM3QyZHlZcHdnaU1NK0dIaUlIL3FwSEVtNkF2aFdQR3R0RFNxS0FrT2d3MkYvNDQxcjQrTWpPcDBXdzFDdGhtWVlKcC9QZ3lEd3hodXZqNCtONWZQNVR6KzdEVUdneitkek9Hd1lpdXAwbW1Bd29OZnI5L2IyN3Q2OWI3ZmIzbmpqOWY2K1NLR1FyMWFyTUF4VEpBbUNRRzl2K05LbGl5ZFBUbU1ZcXA0WkE5MGgvN3VnNndKOUo0QUFvTWl5QWdLQTFXWTVieng3K3JURU1FdzhsbWpVR3dhRC9zS0Y4MDZIL2Nuc2s5WFZ0V0F3eURDTVhxZEZVUVFBRkFSRklRaTBXaXk5dmIydFZ1dk9uWHNqSThQLzYvLzY5MDZYTTU4dk9CejJWeTlkSkNrU3gzRVVSYUFYQXZXNmZFdTZBdmoyZkw2TUFnRGlPS2JSWUFSQjdPN3NNd3dqaUdJMm0xdGRYWk5sZVd4c1RLZlRmUGpoNzBxbGNyM1JjRG9kRUFqbXNqbGU0RStjbUo2Y25OamZqODNQemR2c05sRVVHNDFtdTlYUzZiUTZuUlo0bXNML2gwaUg0NXpHOVIzU0ZjQjNodW9JeWJJc2l6S2dBSUFpYTdXMDErY3BsY3BxSzZUKy9zakV4RGlHb2h2cm04bGtLcnExNDNEWWMvbml6dTZ1b2loblRwK2FuSnd3R1EzTEs2dmxjaG1DWUxmYjVYQTZRQkJVNDRVT0tueDErUTdwQ3VEYjhtSjZNUXpENmk1TkpOSkQwVlEybTFNVXhlLzMyVzFXbXFaWmxqMTc5dlR2UDdxeHRMemljamszTmplTHhaTEg0eGtaR1NZSWJIeDh6Ty8zSlpLcGFxVnFNaGxkYmhkSmZtN1YrK0pmN1BKdEFGbW0va05mdzh2RDgxV2xBRUFCUUxYTUdneUJhcUZHRUFRRVFieDU4N1BadVFXMTJjekV4UGlGODJkN2U4TlBJeHFlaGs4cklBaUE0SE1lbHZyL3U2Yi9uZEdkVXI5TG50dU9WQUFBZ2tBVVJWQVVBUS9DL0JXQUlJanA2Y21lY0toVUtwbU14dEdSa1VBd0lFblNVN3NIQUFTR01CU0JZUmdFd0s5NC95N2ZucTRMOUIzejNDUWdTWklrU1U4OWxtZm1LMG1TM1c2Zm1wNlVaTW5uOVliQ0FSekhPaXdMUVJBQWdHcGxydWZjbm9NMzd3cmd1NlhyQW4zM0hBUXBQQ2VHd3p5dDNpNHJFUFExRmcxMnR6Ni9UN296d0hmUFY5YmIrdHpYQ0F3Qkwwd2FRRGVkOTg5SWR3M3c1K05GT3o0b1JQN1ZMK3Z5L2RHZEFmNnNmRVVScmhkZjBPWFBRSGNHK01FNDdDbDFZM3QrS0xvendBL0pTOWwyN21qUm5RRzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXhwaXVBTHNlYXJnQzZIR3U2QXVoeXJPa0tvTXV4cGl1QUxzZWFyZ0M2SEd1NkF1aHlyT2tLb011eHBpdUFMc2VhcmdDNkhHdTZBdWh5ck9rS29NdXg1djhQSC9LUkZxNG96MjRBQUFBQVNVVk9SSzVDWUlJb0FBQUFnQUFBQUFBQkFBQUJBQ0FBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi8zL1B6LzlQbjYvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvNy9UMS8rLzA5UC91OC9ULytQMysvOUxXMXYvZzVPWC85dnY4Lys3ejlQL3Y5UFgvNy9UMS8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vZjgvZi81L2YzLytmejgvL1Q2L1AvazZPbi9ZMk5qLzRPRGcvLzIrdnYvOHZmNC8vcisvLy81L2YzLzlmbjYvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rM3k4Ly8zL1AzL3g4ckwvNWlabWYrNnZyNy8rL3o5LzRXRmh2L0t6TXovb2FPay82aXBxdi80K3ZyL3FxMnQvNTJmbi8vYjN0Ly85dnY4LyszeTgvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di95OS9qLzl2djcvL2I2Ky8rU2twUC9oNGlJLzZ5dXJ2OTZlbnIvZzRTRi8vLy8vLy9pNCtQL2JHMXQvNG1LaWYrenRiWC9jSEZ4LzdhNHVmLzYvdi8vOXZ2Ny8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvKzN5OHYrcnJhMy9qSXlNLzRDQWYvOUlTRWovc2JPei80V0dodjlpWW1MLyt2NysvOTNnNFA5RlJFVC9zTEt5LzRxTGkvOVVWRlQvakl5TS80dUxpLysrd2NILzgvbjYvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzN5OC8vNS92Ly8yZHpjLzFSVFUvK0ppWW4vbVp1Yi8zWjJkdjlSVVZIL3JLNnUvMWRYV1AreXNyTC9ob2FHLzNKemMvK2JuSnovU2tsSi80ZUlpUCtkbjUvL2RuWjIvMmhwYVAvMysvdi84ZmIzLysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvdTlQWC8rdjcrLyt6dzhmL2EzZDcvZzRTRS85VFkyZi82Ly8vLzR1Ym0vM3A2ZXY5cWFtci9hMnRyL3lBZ0lQOHJLeXYvZm41Ky8xbFpXUCthbkozLzdQSHkvL3ovLy8renRyYi9scGVYLytUbTV2L3c5ZlgvK1B6OS8rM3k4Ly93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC84dmY0Ly8zLy8vKzR1cnIvbEpTVS80Nk9qditLaTR2L3NyUzAvKy96OVAvNy8vLy8wOWZYLzFWVlZmK0VoSVQvRmhZVy96bzZPdjk0ZUhqL1ptZG4vL0R4OGYvMysvei81dXJyLzZTbHBmK0tpb3Iva1pHUi81U1ZsZi9PMHRMLy8vLy8vKy8wOWYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9QNCtmL3I3L0QvakkyTi81V1dsdis2dkx6L242Q2cvNEdCZ2Y5RVJFUC8xZG5aLy9mOC9mL3c5UFgvYTJ4ci8zOS9mLzgrUGo3L1pHUmsvMmhuWi8rU2xKVC8rZjcvLy9yLy8vK21xS2ovUkVORC81T1VsUCtucDZmL3VicTYvNEdCZ3YrcHE2di85ZnI3Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMDlmL3M4dkwvOHZmNS81T1VsUDlyYW1yL3g4akovNlNscGYrSWlZbi9rNU9ULzJSbFpmL1YyZHIvOS96OS8vTDMrUDkxZG5iL2VYbDUvMEZCUWY5bloyZi9hR2hvLzU2Z29mLzQvZjcvK3YvLy82MndzUDltWldYL21KcWEvNGFIaVArNHVyci90cmU0LzF0YlcvKzV1N3YvOWZ2OC8renc4Zi94OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvOGZmNC8vLy8vLy9tNXVmL2pJMk4vNnV0clAvUDB0TC9kbloyLzlMVjF2L1AwdEwvWW1KaS8rRGs1UC8yKy96LzUrdnIvM0J3Y1A5OWZIMy9VMU5ULzJob1ovOXljWEgvakkyTi8vYjYrLy80L3YvL3ViMjgvMnBxYXYvdDhmTC9ySzJ0LzRpSmlmL1YyTmovbHBhVy81V1dsdi8vLy8vLytmMysvL0QxOXYvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vajkvdi9vN096L3M3YTIvNEtDZ3Y5M2VYbi92c0RBLzhyTnpmOTlmbjcvOFBIeC8rL3k4Ly9OejlELzhQWDIvLzcvLy8vRng4ai9oNGVJLzFOVFV2K3lzN1Avam8rUC8yQmdYLytPajQvLzNkL2YvLzMvLy8vbjdPei95YzNOLy8vLy8vL0t5Y24vaDRtSi85SFQwLyt4c3JML1ltTmovNWFYbVArK3dNRC84L2Y0Ly9YNisvL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3Q4dlAvN3ZQMC8rN3k4Ly8zL1A3L3p0TFMvelkyTnY4QUFBRC9BQUFBL3hVVkZmKzR1cnIvNE9Mai81NmZuLytWbHBiLzl2bjUvLy8vLy8vNC9mMy8wdFRWLzVLU2svOXNiR3ovUkVWRi8rSGk0Lysrd01IL05UVTEvNGFIaC8rVWxaWC81ZWZvLy9yKy92Ly8vLy8vNU9mbi80R0RnLys3dmIzLzR1VGwvNDZQa1A4QUFBRC9BQUFBL3dNQ0F2OWJXMXYvNk92cy8vUDQrZi91OC9ULzd2UDAvKzd6OVAveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOHZmNC8vMy8vLy83L3Y3LzkveisvK3J2OFA5WFdGai9CUVVGL3dJQ0F2OENBZ0wvQUFBQS96TTBOUCs3dkwzLzJkcmEvNStmbi85b2FHbi9hbXBxLzFaWFYvOHVMUzMvSnljbi93Y0hCLzgrUFQzL242R2gvNUtUay84ZEhCei9FQkFRL3lrcEtmODBORFgvWVdGaS8yaG9hZjl5Y25ML3RyYTIvOWJXMXYrY25aMy9FeE1UL3dBQUFQOENBZ0wvQUFBQS93OFBELytJaVluLytmNy8vL2I2Ky8vOS8vLy8rdjMrLy9EMTl2L3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLysvMDlmL3Y5UFgvOFBYMS8vUDQrZi93OVBYL282YW0vM2w2ZXYvWDI5di93OFhGLzMxOWZmOVRVbEwvQUFBQS8wRkJRZjk1ZVhyL0h4OGYveFlXRmY5dmIyLy9lM3Q3L3pjMk4vOHdNREQvTkRRei8xSlNVdjlXVlZYL1VGQlEvODNQMFAvMCtQai85dnY4LzZhcHFmOUhSMGYvVmxaVy8wTkRRLzgzTnpmL0tDZ28vMDVPVHYrQmdZSC9YVjFkL3dBQUFQODdPenYvZkh4OC95QWdJUDhBQUFEL2RuVjEvMzE5ZmYvaTVlWC90cmk0LzNaM2QvKzd2ci8vOXZyOC8vRDE5di93OWZiLzcvVDEvKy8wOWYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLysvMDlQLzIrL3ovK2Y3Ly8vWDYrLy92OVBYLzlmbjYvNENCZ3Y4c0t5ei9xYXFxLy9UMjl2K0hpWW4vd01MQy82T2twUDhURXhQLzV1bnAvNnFxcXY4bEpDVC9NelEwLzk3ZjMvL0J3OFQvZkh4OC82R2lvditKaUlqL2dJQ0EvNStmbi8rSmlvci84L2IyLy9yLy8vLy8vLy8vejlEUi80eU5qZitTa3BQL2ZYMTkvNUdSa2YrVWxaWC9qSTZPLzlUVzEvKy93Y0gvQ2dvSy8wVkZSZi9UMDlQL3JxK3YveFFWRmYvYTJ0ci9rWktTLzYreHNmL3c4L1AvZm45Ly95NHRMZitzcnEvLytmNy8vKzd6OVAvMy9QNy8rZjcvLy9MNCtQL3U4L1QvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3g5dmYvK3YvLy85emY0UCsrd01ILzJ0N2YvL3ovLy8vZDRlTC9mMzkvLzZxcXF2K1RsSlQvalk2UC94WVZGZis3dmI3LzRlUGsvMkppWXYrUmtwTC9pSWlJLzNSMWRmOEZCUVgvWkdSay81V1hsLzl2YjIvL3djVEUvNlNscGYrZG5wNy9tWnFhLzVDUmtmK1BrSkgvMWRqWi84dk96djk3ZTN2L3BLU2svNUdSa2YrZW5wMy9ycSt3LzZhb3FQOTJkbmIva3BPVC8wTkNRdjhURXhQL2k0dUwvNGFHaHYrRWhZWC9kWFYwLy8zLy8vOTVlbnYvS1Nnby82R2twUCtVbFpYL3FLaW8vNGFIaC8vMSt2ci85ZnI3Lzg3UTBmL0R4Y2IvNmUzdS8vbisvLy92OVBYLzhmWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOHZmNC8vTDM5Lysvd3NML25KMmQvNTJjblA5dGJXMy94TWZJLy92Ly8vK2JuSnovcUttcC82S2pvLzl3Y0hEL0N3c0wvNUdUay8vcjd1Ly9qbzJOLzA5UFR2OW1aMmovZ0lDQi8ybHBhZitwcXF2LzJkM2UvODdSMHYrZW41Ly9wS1dsLzcyK3Z2K1FrWkgvYTJ0ci8wNU9UdjlOVFUzL1EwTkQvMkppWXY5bVptYi9ycSt2LzZ5dHJmK3FxNnovbnArZy85L2o1UC9OME5IL2xaZVgvMlZrWlArRWhJVC9VbEpTLzF4Y1hQK2twYVgvOHZYMS8xSlRVLzhqSXlQL2hJT0QvNit3c1ArVmxwYi9zN2EyLy8vLy8vK2ZvS0QvZDNkMy82Q2hvZitibkp6LzBkVFUvL1g2Ky8vdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vSDI5Ly94OXZmL3E2MnQvNGFHaHYrWm1aci96TTdPLzZPa3BmK2twcWYvLy8vLy8vWDM5LysydUxuL2RIUjAveXNySy84QUFBRC9lM3Q3Ly9UNCtQK3JySzMvVEV4TS8yRmlZdis2dmIzLy8vLy8vNmVvcVA5dGJXMy9qSTJOLzNKeGNmK2dvS0QvZUhoNC8rcnM3UDlsWkdYL1NVbEovLzMrL3YvVjJOai9KaVltLzZTbnAvL1EwdFAvZDNkMy82V21wdjlxYW1yL2xKV1YvMk5qWS8vVTF0Zi8vUDcrLzUyZm9QOVBUMC8vVzF0Yi84bkx6UC9uNnV2L1EwTkQvd0FBQVA4K1BqNy9oNGVJLzh2T3ovLy8vLy8vOVBqNS80bUtpdi9CeE1UL3VydTcvNUtTay8rRmhZWC93OFhGLy9iNy9QL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzkvejkvOXpkM2YrRWhJVC92cjYrLzVPVGsvL2Q0T0QvLy8vLy8vcjkvdi9lNHVQL3BLYW4vMlZsWmY4ckt5di9BZ0lDLzF4Y1hQK2VvS0QvdkwyKy84M1EwZjl0Ym0vLzYrdnIvLy8vLy8vUjFkWC9uWjZlLzN0N2UvL0Z5TWovaVl1TC8yZG5aLzliVzF2L2lJbUovK25zN1A5UlVWRC9tcHliLzNaM2QvOXljM1AvN083dS8xOWhZZjlvYUdqL1kyUmsvNnFycS8rdHJxNy9mWDE5LzZ1c3JmL2k1dWIvLy8vLy84REJ3Zjk0ZVhuLzNOL2cvNjZ3c1ArYW5Kei9OVFkyL3dRRUJQODZPanIvZDNsNS83TzF0Zi9xN3UvLy9mNysvLy8vLy8rOHZiMy9uWjZlLzdXMnR2K0ppWW4vOWZuNS8vSDI5Ly93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzd6OVAvMy9QMy9xcXlzLzFaV1Z2K1hsNWYvb3FLaS8xMWRYdjk2Zkh6L1ZWVlYveTBzTFA4dUxpNy9KaVltL3lNakkvOW9hV24vM043Zi81MmRuZis0dXJyL3U3MisvNlducC8vMSt2ci9yN0d4LzdXMnR2L3o5dmIvaElTRS84WEh5UCtWbFpYL3M3YTMvLy8vLy8rWGw1Zi8wZFBULzZhbnAvK1BqbzcvZ0lDQS84ek56Zit2c0xIL3RiVzAvLy8vLy8rTGpZMy91cnU3LzVxYm0vK3NycTcvN2ZEdy82bXFxdi9GeU1qLzZlcnIvNTJmbi8vR3ljbi9yYSt2LzYydnIvL1IwOVAvUWtORC95Y25KLzhyS3l2L0x5OHYvekV4TWY5bmFHai9kSFYxLzJscGFmK3lzYkgvZlgxOS8xeGNYUC9MenMvLzl2djkvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMDlmK0dob2IvaElXRi8zbDVlZjlEUTBQL09EYzMvMHBKU2Y5MGRYVC9lWGw1LzFGUlVmOWtaR1QvZ1lHQi8vMzkvdis0dWJuL3FhcXIvNWlabWYrT2o0Ly93c1hGLzZpcXF2L1MwOVAvME5MUy8wQkFRZjg5UFQzL29LR2gvNlNtcHYvcDYrdi9zck8wLzVTVWxQK1ZscGIvam8rUS8rL3c4UC9OejlEL2tKR1IvNUtTa3YrZm9LSC92TDYvLytmcTYvK1NrNVAvbHBhWC94OGVIdjlzYlczLzQrWGwvNzIrdnYrMXRyZi91THU3LzRHQ2d2K3NycTcvbXB1Yi8rSGg0Zi9rNWVYL2JtNXUvMkppWXY5WldWbi9oWWFHLzJabVovOUZSVVgvTnpjMy8xRlJVZitEZzRQL2VIaDMvNktqby8vNS92Ly83dlAwLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOC9uNi82K3hzZjl0YlczL2FHaG8vNGlJaVArY25aMy9ucCtmLzd1OHZQOXFhMnIvd01MRC8vUDM5Lzk0ZUhqL25KMmQvNk9scGYrd3NyUC9qSTJOLzhMRnh2K29xcXIvNGVUay82S2pwUDlZV0ZqL1ZGVlYvNUNSa2YrOHZyNy83L1QxLy9EMDlmK1ptcHYvZG5kMy82bXJxLy9hMjl6Ly9mLy8vL1A0K2YrN3ZiNy9qNCtQLzNKemMvKzR1N3YvK2Y3Ly8rTG01Lyt2c0xEL2VudDcvMDlRVVA5aVltTC93Y0xDLzlQVjFmK3FxNnovdkwrLy80aUlpZisxdUxqL29xU2svNHVMaS8rV2w1Zi8rdjM5LzV1Y25QOTBkSFQveE1YRi81T1RrLytlbnA3L2VIaDQvMk5qWS85NWVYbi95TXZNLy9iNy9QL3Y5UFQvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rM3k4Ly85Ly8vL3Y4TEQvMHhNVFAram82UC95TW5KL3k0dUx2OXJiR3ovdWJxNy83UzF0Zi9OenM3LzZ1N3YvN0N6cy85SFIwZi9wS1dsLzY2dnNQL1kzTnovcWFxcS8rVGw1ZitCZ29ML2ZIMTkvL0QwOWYvLy8vLy85dnY4Ly9yKy8vL3g5dmYvNy9YMi8vLy8vLy8wOVBUL25xR2gvMUZTVXY5NWVuci83Zkx6Ly9yKy92L3o5L24vK2YzKy8vcisvdi92OVBYLzlQbjUvL3IrLy8vMysvdi8vLy8vLzlmWjJ2OWdZR0gvcDZtcS85dmQzZit4czdQLzFkalovNk9rcGYrUWtaSC9TRWhJLzk3ZzRQL1ozZDcvMWRmWC82T2twZi9IeWNqL016TXovMkZoWWYvTnpzNy9nNE9DLzFWVlZmL201K2YvOXZ2OC8rL3o5UC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzlmdjgvK0RqNVA4ek16UC9nNE9ELyszdTcvOWpaR1QvQUFBQS96MDlQZi9GeU1qL282U2svNHlOamYvejlmWC9lM3g4LzUrZ29QL3g5dmYvNU9qby82T2twUC9qNCtUL2MzUjAvNUdTa2YvLy8vLy84dmY0LyszeTgvL3Y5ZlgvN3ZQMC8rM3k4Ly8yKy96LzJkemQvMEpDUS84QUFBRC9BQUFBL3dnSUNQL0p6YzMvOWZyNy8rN3o5UC92OWZiLzd2UDAvL0gyOS8vdjlQWC83dlAwLy9EMDlmL3Q4dlAvK2Z6OS8vTDA5UDlwYW1yL21acWEvOWZaMnYrcnJLMy84dlgxLytudTcvOTVlbnIvcks2dS8rUGw1Zjk4Zkh6L3U3MisvNjJ2c1A4WEZ4Zi9BQUFBLzZDaW92L2o1T1QvVWxKUy8xaFpXZi82L3YvLzcvVDEvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzd6OVAvKy8vLy9hbXRzL3hzYkcvL056cy8vMmR6Yy94MGNIUDhBQUFEL2RYWjIvNnFycS85dmIzRC9xNnl0LzR5T2p2OTNlSGovL3YvLy8vUDM5LytqcEtULzMrSGkvM3g4ZlArVWxKVC8vLy8vLys3ejlQL3Y5UFgvOFBYMi8vSDI5Ly91OHZULzlmdjgvK2JwNmY4M056Zi9BQUFBL3dRRUJQOEVCQVQvQUFFQi82NnVydi8vLy8vLzYvSHkvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vSDE5di90OHZQLzlQbjYvL2I0K1A5b2FXbi9wYWlvLzhuTXpQK3l0YlgvLy8vLy8rUGw1ZjloWVdIL3FLbXAvNVdXbHY5MmRuYi91THE2LzBoSlNmOEFBQUQvU0VsSi8vZjYrLytibTV2L0NRa0ovNnFzclAvOS8vLy83dlB6Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85dnY4LzlyZDN2ODBORFQvU1VsSi8rVGw1Zi9CeE1YL0RRME4vd0FBQVA4d01ERC9wcWlvLzhIRXhQL0Z5TWovZFhWMS82R2tvLy8vLy8vL3NMR3kvOC9SMGYrVmw1Zi9oSVdGLy8vLy8vL3U4L1QvOFBYMi8vSDI5Ly94OXZmLzdmTHovL1A0K2YvMStmbi9VMVJVL3dBQUFQOEZCUVgvQUFBQS93SUNBdjhBQUFEL1MweE0vKzN4OHYvMisvei83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTgvVC85UG41Ly9QMzkvOWhZbUwvdjhEQS83UzF0Zi9NenMvLy8vLy8vM3g5ZnYrU2s1VC94c2pKLzhMRnh2K05qWTcvRXhNVC93QUFBUDhyS3l2LzZ1M3UvOFBEdy84bUppYi9ZV0ZoLy9QMytQL3c5dmYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmLzUvdi8vczdXMS8xTlNVdjlSVVZILzVPYm0vOURTMC84WEZoYi9BQUFBLzJocGFmLy8vLy8vK1AzOS84WEh4Ly9jM3Q3L2xaYVgvOHJOemYrNXZMei92TDYvLzJ0cmEvLzQrZnIvOFBYMi8rLzA5Zi94OXZmLzhQWDIvK3p4OHYvNS92Ny84UFQxLzF4ZFhmOEFBQUQvQXdNRC93QUFBUDhBQUFEL0FBQUEvd0VCQWY4QUFBRC9ORFEwLzlIVjFmLzIrL3ovNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Q4dlAvK2Y3Ly85bmIyLzloWVdILzBkVFUvN0d5c3YrL3dNRC9vcU9rLzl2ZDN2L08wTkgvLy8vLy8rbnM3ZjgxTlRYL0FBQUEvem82T3YvMStQbi91cnU3LzBGQlFmOW5aMmYvME5UVS8vajkvdi92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vZjcrLythbTV2L2dZR0IvekV4TWYvUjA5VC8vUC8vLzFaV1Z2OEFBQUQvV2xwYS8rL3g4Zi9tNk9uL2xwYVcvOWZYMS8rZ29hSC9rNU9ULzlqYjIvOW9hV24vMXRqWS8vbjkvZi91OC9ULzhmYjMvL0QxOXYveDlmYi8vLy8vLzlYWjJmOUJRVUgvQUFBQS93TURBLzhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dJREEvOEFBQUQvZ1lLQy8vNy8vLy9zOGZMLzhQWDIvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly9zOHZQLy8vLy8vNldscHY5K2dJRC8xZGpZLzM5L2YvL0R4c2Ivd01MQy82YW9xUC8xK2ZuLzF0bmEveWNuSi84QUFBRC9qNUdTLy8vLy8vK1ptWnIvT2pvNi80R0JnZit6dHJmLysvLy8vKzd6OVAveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly91OC9ULy9QLy8vMytBZ2YrWm1abi9RME5DLzN4OWZmLysvLy8vNU9ibS8ySmpZLzhpSWlML1cxdGMvNDJOanYvVzJOai8xTmJXLzJkblovL0J3OFAvbEpXVi81T1VsUC8vLy8vLzdQSHkvL0gyOS8veDl2Zi84ZmIzLysveTgvK0lpWW4vRkJRVS93QUFBUDhDQWdML0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQXdNRC93QUFBUDlrWkdYLy8vLy8vKzN6OVAvdzlmYi83L1QxLys3ejlQL3g5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC8rZnY4LzI1dWJ2Kyt2OEQvbloyZS8zcDdlLy92OHZML3VidTcvNFdHaHY5SFIwZi9KaVltLzRlSWlmLysvLy8vNStucC8wNU9ULzlxYW1yL2dvS0MvNlNtcC8vLy8vLy83dlAwLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzd5OC8vLy8vLy9oWWVJLzM1K2Z2K1ZsWmIvZG5aMi81V1dsLy9jMzkvLy92Ly8vK3Z3OFAvZjVPWC82dXp0LzczQXdQOTVlbnIvbXBxYS84bk16UDlyYkd6LzUrbnAvL1A0K2YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvNy9Qei80Q0JnZjhMQ3dyL0FBQUEvd0VDQXY4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhDQWdML0FBQUEveTh2TC8vZzRlTC85L3I2Ly9QNCtQLzUvZjcvKy8vLy8vSDMrUC93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLyszeTgvLzkvLy8vdmNDLy8zaDVlZi9NenMvL2hvYUYvNGFIaC8vVTFkYi81K3ZyLytMbjZQL3g5dmIvL3YvLy84UEd4ditOam83L2FtcHEvNnVzclA5Y1hWMy91YjI5Ly96Ly8vL3U4L1QvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83dlAwLy92Ly8vKy93Y0wvUlVWRi82K3dzUCtMaTR6LzFOWFcvM2Q0ZVA5L2dJSC9vS0dpLzVLVGxQOWxabWYvbEpXVi85UFcxdi9GeDhmL2w1aVovNU9Vay8vLy8vLy83UEh5Ly9IMjkvL3g5dmYvOGZiMy8vRDE5di94OXZmLy8vLy8vOG5NelA4ckt5ci9BQUFBL3dFQkFmOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3ljb0tQOUNRa0wvUTBORC8wOVFVUCtYbVpqLzhQWDIvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8rLzA5Zi8xK3Z2L2NuTnovN1MydC8vQnc4UC96cy9RLzMxOWZ2OXNiVzcvbkoyZC81NmZuLzl4Y25ML2s1U1UvODNQei8rSmlZbi9uWjZlLzBKQlFmL3E3dTcvOC9qNS8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOFBYMi8vZjcvUDlhV2xyL2FXbG8vM3Q3ZS8ra3BhWC90cmUzLzI1dWJ2L2U0T0Qva3BLVC8zdDhmUC8vLy8vL3Y4REEvNmVwcWY5eGNuTC8yTnpjLy9mOC9mL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvcTcvSC8vLy8vLzdhNHVmOEdCUVgvQUFBQS93RUJBZjhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhCQVFIL0FBQUEveGtZR1AvWjNkNy85dnY4LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzdmTHovLy8vLy8rcHFxci9mbjkvLzZXbXB2L2c0dUwvL1B6OC8xeGNYUCsrd01EL3hjZkgvMmhvYVAvUzFOVC9nb1NFLzR5TWpQOUlTRWovaTR5TS8vLy8vLy90OHZQLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly91OC9ULy9QLy8vN2k3dS84dUxpNy9lSGg0L3pNek0vODRPRGovZzRTRS8vMysvditEaFlYL2VIbDUvN0swdGYrT2o0Ly9scGVZLzNWMWRmL1EwdFAvK1AzKy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmL3c5ZmIvN1BEdy96TTBNLzhBQUFEL0F3TUQvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhDQWdML0F3TUQvd1VGQmY4QUFBRC9MaTR1LytUbzZmL3orUG4vOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi8rUHorLzYydXIvOTNlSGovbkoyZC80K1FrUCt6czdUL1hWeGMvN3krdnYvcDdPMy9aMmRtL3lzcksvOVBUMC8vWm1kbi96bzZPdi9qNk9qLzlQbjYvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdzlmYi85L3I3LzFGUlVmOW5aMmYvc2JHeC8zaDRlUDk2ZW5yL2taR1IvM2QyZHYrYm5aMy8ydDdmLytqcTZ2L0p6TXova0pLUy8xWlZWZi9WMmRuLzl2djgvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBiMi8rN3k4Ly84Ly8vL2JXNXUvd0FBQVA4Q0F3UC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFmOEFBQUQvblorZi8vei8vLy90OHZQLzhmYjMvL0gyOS8veDl2Zi83dlAwLy92Ly8vK3JycTcvVWxGUi82YW9xZi9VMXRiLzUrcnEvODdSMHYrSWlZbi9mMzkvLzVHUmtQOXljM0wvaUlpSS83Q3dzUDlBUUVEL2hvZUkvLy8vLy8vczhmTC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLyszeTgvLy8vLy8vZlg5Ly93UUVCUCtIaDRmLzVPWGwvL0R5OC8vaDVPVC83ZTd2LytqcTZ2L0h5Y24vY0hCdy94c2JHLzlKU1VuL3djUEUvOTdpNHYveitQbi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzdQSHkvLzcvLy8rWW1wci9BQUFBL3dFQkFmOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQWdJQy93QUFBUDk3ZlgzLy8vLy8vKzN5OC8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOGZiMy85YmEyLytucWFuL0xTNHQveWNuSi8rSmlvci8wTkxULys3dzhmL242ZXIvNCtibi8vUDI5Ly9TMHRML1hWMWQvd2tJQ2YrNHU3ei8rLy8vLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3Y5UFgvN2ZMei8vci8vLytlbjZEL0RRME4vd0lDQXY5SlNVbi9wcWVuLzluYTJ2L3I3ZTcvMTlyYS81eWNuUDlxYW1yL21weWMvMzkvZi8veDlmYi85L3Y4LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdTgvVC8vUC8vLzJKalkvOEFBQUQvQWdJRC93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhDQWdML0FBQUEvMWxhV3YvdjlQVC84ZmIzLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly91OVBYLy92Ly8vODNPei85OGZYMy9rNVdWLzJscGFQK3lzckwvMytQai8rdnQ3di9QME5IL2tKR1IveTB0TGY4QUFBRC9LeXNyLzhyTXpmLzMvUDMvN3ZQMC8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOHZmNC8vVDUrdi93OXZmLytQcjYvNDZPai85a1pHVC9KaVltL3hRVUZQODVPVGovUmtaRy8yRmhZZjlzYTJ2L201eWMvK1hvNmYvRXhjYi9pWW1LLytudTcvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83Zkx6Ly96Ly8vK29xcXIvQlFVRi93QUFBUDhCQVFIL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9Bd01ELzBWRlJQL202dXYvOC9qNS8vRDE5di94OXZmLzhmYjMvKy8wOWYvMisvei96OUxULzRXRmhmL2c0dUwvMXRuWi80T0VoZjlxYW1yL1ZGVlYvMFJEUS84dExTMy9FeE1UL3p3OFBQOXBhR2ovc2JPei8vLy8vLy91OVBYLzlmcjcvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vTDMrUC9wN3UvLzVPanAvL2Y3L1ArL3djSC9nSUdCLzR1TGkvOStmbjMvTWpJeS96bzZPdjltWm1iL1hsNWUvNG1JaVArb3Fxci93c1RGLzR1TWpQKy93Y0gvK2Y3Ly8rN3o5UC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmLzErdnYvNE9Qay95VWxKZjhBQUFEL0FnSUMvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dJQ0F2OEFBQUQvTXpNei8rdnY4UC95OS9qLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzMvUHovbnArZi81MmVudisrdjcvL25KMmQvM2g0ZVA5Ylcxdi9ZR0JnL3lZbUp2OURRMFAvaUlpSS80cUxpLytFaElYLzJkdmIvL1A0K2YvaDVlYi83L1AwLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLytmLy8vOFRHeC85dGJHei9rNVdWLzRLQ2d2K0FnSUQvbzZXbC81bVptdjk0ZUhqL0RBd00vMXBhV3YrVGs1UC9wNmVuLzhuS3l2OXljM1AvT3pzNy8rZm41Ly8wK2ZyLzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvN2ZMei8vMy8vLytOam8vL0FBQUEvd0lDQXY4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQWdJQy93QUFBUCtRa1pMLy8vLy8vKzN5OC8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvN2ZMei8vMy8vLys3dmI3L0x5OHYvNWVZbVAvSHlNai9ucDZlLzQrUGovODJOamIvR0JnWS80V0ZoZitrcGFYL2s1V1YvMzkvZi8rRWhZWC9qNUNRLzNSMWRmL2s2T24vOVBuNi8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveTkvai82L0R4LzU2Zm4vK0Rnb0wvakkyTi83SzB0UCs5d01IL242R2gvNFdHaC84NU9Ubi9kblozLzBSRVJQK1lsNWYvOGZQMC85N2g0djlUVTFQLzJ0M2QvL2I3L2YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di94OXZmLzh2YjMvejQrUHY4QUFBRC9Bd01EL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93SUNBdjhBQUFEL0xDd3IvK1BuNS8vMCt2di83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly90OHZQLy8vLy8vNmVxcXY5bFptYi8vUC8vLzkvZzRQOTJkbmIvVFUxTi8zTnpjLzh3TUREL3FhdXIvNUtVbFAvTXpzNy9uNkNnLzQyTmpmK0NnWUgvdUx1Ny8vVDUrdi93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3orUG4vK2Y3Ly8rbnU3di9yNy9ELy8vLy8vM1o0ZC85K2YzLy9lWGw2LzRlSWlQK0dob2IvUGo0OS8zTjBkUC9SMDlULy8vLy8vNnFycS8rNnZiMy8rLy8vLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL1g3L1AvYzMrRC9JQ0FnL3dBQUFQOENBZ0wvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0F3TUQvd0FBQVA5NWVuci8vLy8vLyt6eDh2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvNS92Ny9tNXliLzhuTXpQLy8vLy8vdExXMS8xOWVYdjlFUTBQL21KcWEvM056Yy8rSWlZbi9ibTl2LzV5Y25QLy8vLy8vNWVucS8rL3k4Ly81L3Y3LzhmYjMvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di92OVBYLzgvbjUvL0wzK1AvdTgvVC8xdG5aLzYreHNmL1YxOWYvZzRPRC81MmZuLzkrZ0lEL3BhZW4vNkdqby8vMCtmci80ZVhsLzVlWW1QL3Y5ZlgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTgvVC8rLy8vLzc3QndmOEtDZ3IvQUFBQS93RUJBZjhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4REF3UC9BQUFBLzBoSlN2L3k5ZmIvOGZiMy8vRDE5di94OXZmLzhmYjMvL0gyOS8vdjlQWC85L3o5LzliYTJ2K1htSm4vL1AvLy85ZmIyLytobzZQL2tKR1IvNDJPai8rT2o0Ly9uSjJkLzg3UDBQK3hzN1AvNHVibi8rLzE5di96K1BuLzh2ZjQvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QwOWYvdTh2UC83Zkx6Ly92Ly8vL1IwOVAvb0tHaS82aXFxditYbDVmLzF0alovNVNXbHYranBhYi91THE3LzcvQndmLy8vLy8vbXB1Yy85RFQwLy80L3YvLzcvVDEvL0gyOS8veDl2Zi84ZmIzLys3ejlQLzgvLy8vdTcyOS93Y0hCLzhBQUFEL0FRRUIvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dNREEvOEFBQUQvTURBdy8renc4Zi95OS9qLzcvVDEvL0gyOS8veDl2Zi84ZmIzLys3ejlQLzgvLy8vcksydS83VzR1UC8vLy8vL3BhYW4vOUxUMC85NGVYbi92OERBLzd1OHZQK2JtNXovcEthbS82T2twUC9sNXViLzkvdjgvK3p4OC8vdTgvUC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdTgvVC84L2o1Ly9YNy9QLysvLy8veE1mSS8zMTlmZi9wN2UzLzdPN3YvNEtEZy85ZFhWMy9pSW1KLzRLRGcvL2MzTjMvbko2Zi8vLy8vLyt4czdQL3NiS3ovLzMvLy8vdTgvVC84ZmIzLy9IMjkvL3g5dmYvN3ZQMC8vei8vLyszdWJyL0JRVUYvd0FBQVA4QkFRSC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQWdJQy93QUFBUDk2ZTN6Ly92Ly8vKzN5OC8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vZjgvZitTbEpULzE5cmIvK3J1Ny8rYm5aMy80dWJtLzJscGFmK1BqNC8vVlZWVy82U2xwdi84Ly8vL3ljdk0vM2QzZC8vbDZ1di8rdi8vLy9iNy9QL3c5ZmIvN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84UFgyLy96Ly8vL3E3dS8vMHRiWC85N2k0LzgrUGovL25xQ2cvLy8vLy85SlNVci9SVVZGLzlYWTJmK3JyS3ovWTJOai85M2c0UCtUbEpULzgvZjQvNzdCd2YrUmtwTC8vUC8vLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly91OC9ULyt2Ly8vOFBHeHY4TkRRei9BQUFBL3dFQkFmOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93RUJBZjhBQUFEL0VCQVEvOHZPei8vMy9QMy83dlAwLy9IMjkvL3g5dmYvOGZiMy8vRDE5di95K1BqLzYrL3YvMzkvZ1AvczhmSC95Y3pMLzZhb3FQL0V4OGovWTJOai84Zkl5Zi9Cd3NML0lCOGYvNGFJaVAvLy8vLy9YMTVlLzI1dmIvL202dXYvMGRYVy8vWDMrUC80Ky96LzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmLzMvUDcvcjdHeC8yMXNiUCtrcGFYL2dZS0MveVltSnYrNXVyci8zK0RoL3hnWUdQOStmbjcvLy8vLy8vMy8vLzkwZFhYL3FxeXMvNU9VbGYvMCtQbi91THE3LzJ0c2JQLzcvLy8vN3ZQMC8vRDE5di94OXZmLzhmYjMvKy8wOWYvMCtmci81dW5xL3lzcUt2OEFBQUQvQWdJQy93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVA4eE1USC81dW5xLy92Ly8vL3c5ZmIvOGZYMi8vSDI5Ly94OXZmLzdmTHovLzMvLy8rOXdNSC9PVGs1Ly9QNCtQL0h5c3IvbnFDZy80dU5qZitibkp6Ly8vLy8vLy8vLy84MU5UYi9QVDQrLy9mNy9QK0xpNHYvS0Njbi82S2pvLytSa3BML2JtMXQvODNRMGYvMy9QMy83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOS96OS85YmEyLzluWjJmL201eWMvNHVNalArL3djTC9ZR0ZoLzVpWm1mL3c4dlAvWjJoby93OE9EditzcjYvLy9QLy8vN0d4c3Y4MU5EVC9ucUNnLy8vLy8vK1ZscFgvSnljby8rdnM3UC96K1BuLzcvVDEvL0gyOS8veDl2Zi84ZmIzLys3ejlQLzkvLy8vYW10cy93QUFBUDhEQkFUL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dNREEvOHdNREQvdGJlNC8vYjcvUC92OVBYLzhmYjMvL0gxOXYvdTlQWC8rZjcrLzNoNWVmOGJHeHYvMDliVy8vTDI5djkyZDNmL1B6OC8vOTNoNGYvdzlQWC9mWDErL3dJQ0F2K2lwS1QvNit6cy8yMXRiZitFaFlYL3RMYTIvNU9Uay8rS2k0di9kWFYyLy9IMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di96K1BuLzV1dnMvK25zN1AvLy8vLy8yZDNkLzRHQmdmK2pwS1QvYW1wcS84Zkl5Zi82Ly8vL2ZvQ0EveTB0THY5V1ZsYi9kSFYxLzNsNWVmL096cy8vOC9iMy8wcExUUDhuSnliL21abVovL3ovLy8vdDgvVC84ZmIzLy9IMjkvL3g5dmYvN3ZQMC8vajkvdi9PMHRML0Z4Y1gvd0FBQVA4QkFRSC9BQUFBL3dBQUFQOEFBQUQvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQWdJQy93QUFBUDh4TVRILzYrL3cvL0wzK1AvdzlmYi83Zkx6Ly8zLy8vKzB0TFQvbFphVy8xQlFVUDl5ZEhULy8vLy8vN0N3c1A5d2NIRC9jM056LzBkSFIvODBORFQvcWF1ci8vLy8vLytpcEtUL2RuWjIvNTZmbi8rTmpZMy83L0x5Ly83Ly8vL2k1dWYvN1BIeS8vTDMrUC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveitQbi84L2o1Lyt6eDh2LzkvLy8vMU5iVy80R0RnLysxdDdmL2hJU0UvNnFycS8vbTZPbi8yZHpkLzdhM3VQK3dzYkwvemMvUC8vVDQrUCtIaUlqL0ppWW0vNWFYbC8rUGtKRC92TDI5Ly83Ly8vL3M4dlAvOGZiMy8vSDI5Ly94OXZmLzdmTHovLzcvLy8rY25aMy9BUUVCL3dJQ0F2OEJBUUgvQUFBQS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOEFBQUQvQVFFQi93SUNBdjhCQVFIL0FBQUEvMnRyYS8vMSt2di83L1QxLys3ejlQLzIrL3ovNE9IaC8zNS9mdi9QMHRML1dscGEvekV4TWYrMXVMai84ZlQwLzcrL3dQK3RycS8vdnNEQS8rUG41Ly9iM2Q3L2xaV1YvNUNSa2YrdXNMRC9oSVdGLy9IMTlmLzErdnYvN2ZMei8vVDUrdi94OXZmLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMTl2L3c5ZmIvOGZiMy8rM3k4Ly84Ly8vL3c4WEYvNGFIaC8vTjBOSC91NzI5LzY2dXIvK3p0YlgveWN2TC84L1Iwdi9SMU5UL2hZYUcvM0J3Y1A5bVptYi9kSFIwLzlQVzF2OTdlM3YvM2VEZy8vbi8vLy90OHZQLzhmYjMvL0gyOS8vdzlmYi83dlAxLy9yLy8vOXdjWEgvQUFBQS93TURBLzhEQXdQL0FRRUIvd0FBQVA4QUFBRC9BQUFBL3dBQUFQOENBZ0wvQWdJQy93TURBLzhCQVFIL0FRRUIveFVWRmYrQWdvTC85UG42Ly9IMjkvL3Y4L1QvOHZmNC8vajgvUCtCZ29ML3ZiKy8vN0N5c3Y5MWRuYi9iVzF0LzJscGFmK2VvS0QvMXRuWi84elB6Ly9IeWNuL3NiS3ovNjJ1cnYvRXg4Zi92TDYvLzRLRGcvL2k1dWYvOXZ6OS8rN3o5UC94OXZmLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKzN5OC8vOC8vLy96ZERRLzQ2UWtQK3FySzMvdHJtNi83YTV1ditmb0tIL2w1bVovNTZmbi85cmJHei93Y1BELzM5L2YvKzd2YjMvcUttcS84VEd4Lzk3ZkgzLzZlenMvL2o3L1AvdDgvVC84ZmIzLy9IMjkvL3Y5UFgvOGZiMy8vSDE5djlyYkd6L0FnSUMvd0FBQVA4QkFRSC9BZ0lDL3dNREEvOERBd1AvQWdJQy93QUFBUDhCQVFIL0FBQUEveEFQRC85VVZWWC8xTlhWLy9qOC9mL3g5L2ovN3ZQMC8vSDI5Ly84L3Y3L2pJeU4vNnl0cnYreHM3VC95OHZMLzdhM3QvK1RrNVAvc3JTMC8zQnZiLytscDZiL2xKYVcvNldvcVArM3U3di90cmk1LzZDaG9mK1VsWlgvNCtibS8vZjgvUC91OC9ULzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3ejlQLzMrL3ovOS92Ny82eXRyZjlvYUdqL1NFaEkvMnRzYlAvQXc4UC95czNOLzRXR2h2L056OUQvaDRpSS8rbnM3UC9PejgvL3FhdXIvOExFeGY5N2ZIei81T2pwLy96Ly8vL3Q4dlAvOFBYMi8vSDI5Ly92OVBYLzh2ZjQvL2o3Ky8rdnNyTC9SVVpHL3c0T0R2OEFBQUQvQUFBQS93RUJBZjhBQUFEL0lpSWkvM1ozZC85a1pXWC91THE2Ly9mOC9mLzIrL3ovNy9UMS8reng4di8yK3ZyLytmejgvNHlPanYranBhWC92TDYrLzZxdHJmLy8vLy8vdDdtNS82V21wdis2dmIzL2s1T1QvOHpOemYrMHRiWC9URXhNLzFoWVdQOXNiR3ovemREUS8vcisvdi8wK2ZyLzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rdng4di84Ly8vL3U3dTcvNU9Uay8rWm1aci8zZDdlLzVPVmxmK25xYXIvVWxKUy81T1ZsZi9GeDhmL3c4WEcvK250N3YrM3Vibi9xNnlzLzhQR3h2OTZlM3Yvek0vUC8vLy8vLy94OXZmLzdmTHovL0QxOXYvdzlQWC83L1QxLy96Ly8vLzArUGoveU12TC81U1dsdjkxZG5iL2IyOXcvNVdYbC8vYzRPRC8vZi8vLy9yKy92LzQvZjMvOFBYMi8reng4di91OC9ULy92Ly8vK1hvNlArQ2c0UC9xcXlzLzd5OXZ2K25xS2ovN2ZMei8rRGk0LysydDdqLzBkUFQvMlpuWi85eGNuTC9vcVdsLzZlb3FQL1MxTlQvam82Ty81YVZsZi9ZM056Lzl2ejgvKzd5OC8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL1Q1Ky8vYzRPSC9qNCtQLzRPRGcvOWxabWIveTgzTi8vLy8vLy9LeTh6L1IwaEkvNUtUay85UFRrNy9tNXljLy8vLy8vKzV2THovb0tHaC84dk96ditIaUlqL29hT2ovKy96OC8vOS8vLy84dmY0Lys3ejlQL3U4L1QvN1BIeS8vRDE5di82L3Y3Ly8vLy8vLy8vLy8vKy8vLy8vdi8vLy9YNy9QL3Q4dlAvN1BIeS8reng4di93OWZiLyt2Ny8vL2o4L1ArNXU3di9nSUNBLzdtOHZQK3ZzYkgvcUtxcS8vWDYrdi85Ly8vL2EyeHMvMmxxYXYrQmdvTC9VMU5ULy9qNStmLy8vLy8vb0tHaS8ybHBhZitIaG9iL3BLU2svK3p4OHYveDl2Zi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFQxLy9iNy9QL2c1T1QvdTc2Ly82T2xwditlbjZEL3hzakkvNE9EZy8vRng4Zi9mSHg4L3dBQUFQOCtQajcveXM3Ty8vLy8vLy9KeTh6L21wdWIvOFhJeWYrb3Fxdi9ob2FILzdPMXR2L3I4UEgvL2YvLy8vcisvLy8wK2ZyLzcvVDEvK3p3OGYvcTcvRC82dS93LytydjhQL3E3L0QvN2ZMei8vTDMrUC80L2Y3Ly9mLy8vL1AzOS8vR3lNai9qWTJOLzVhWG1QL0R4TVgvbjZDZy83aTd1Ly81L2YzLy92Ly8vNk9scGY4YUd4di9BQUFBLzdTMXRmK2xwYVgvbHBtWi84VEd4ditVbHBYL3JiQ3cvOExFeGYvcjhQRC85UG42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vUDUrdi82Ly8vLy9mLy8vOHZOei85MGRIVC9GQlFULzRDQWdmK2FtNXYvTXpJeS95b3FLdjlFUkVUL3NiTzAvLy8vLy8vazUrai9vS0tpLzZ1dHJmL0N3OFQvb2FLaS80Mk9qditqcGFYL3lNdkwvK1RvNlAvMStmci8rdi8vLy96Ly8vLzkvLy8vL1AvLy8vci8vLy8yKy8zLzZ1N3UvOURUMC8rdXNMRC9qbytQLzVXWGwvKzR1YnIvc2JLeS81MmZuLy9UMTlqLy8vLy8vL2Y1K3YrTGpJMy9PVGc0L3ljbkovOUJRVUgvdHJpNS8wdExTLzhwS0NqL2k0dUwvK0RsNWYvKy8vLy8rUDMrLy9MMytQL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvKzN5OHYvMCtmci8zZUhpLzZpcHF2OXZjWEgvUkVSRS82dXNyUCtNaTR2L09qazUvMlZsWmY4ME5EVC9oNG1KLy9mNCtQLy8vLy8veU16Ti81MmZuLyt1c0xEL3ZjREEvNjZ2c1ArWm1wci9qNUNRLzVPVWxQK2RuNS8vbzZXbC82bXFxditrcGFYL242R2kvNWlhbXYrUmtwTC9sSldWLzZhbnFQKzN1Ym4vc0xLeS82R2lvdis4djhELzgvYjMvLy8vLy8vZjQrUC9ZbUppL3pzN08vOWhZV0gvT2pvNi82K3ZzUCtQa0pEL09UazYvNDZPai8rb3Fhbi83L1AwLys3ejlQL3U4L1QvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvbnFDZy82eXZyLy9ZMjl6L3ZyNisvMnRyYS85c2JHei9vNk9qLzU2Zm4vODRPRGYvUjBkSC84RER4UC85L3Y3LysvMzkvOURVMWYrd3NiSC9ySzZ1LzdLMHRQKzN1Ym4vdExlMy83TzF0ZitzcmE3L3JhNnUvNnV0cmYreHNyTC90YmUzLzdlNnV2K3hzN1AvcXF5cy82MnZyLy9IeXN2Lzh2WDEvLy8vLy8vdTh2TC9ucCtnL3pJeE12OVFVVkgvcTZ1cy81T1RrLzlqWTJUL2dJQ0EvOUxUMC8vTzBkSC9tcHViLzdhNHVQLzIrL3ovNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vYjYrLy9tNnV2L2EydHMvMGhJU1A5MmRuYi8yZHpjLzcvQXdQOXBhV24vMTluWi84Ykl5ZjloWVdIL0x5OHYvM0p6Yy8rNXU3ei84dmY0Ly9YNisvL2o1ZWIvMmRyYS84ck56Zit6dGJYL3M3VzEvN1MxdGYrOHZMei91TG01LzdHeXN2K3p0YlgvdjhIQi85bmMzUC9uNk9qLzhmWDIvL2o5L3YvaTV1Zi9vNldsLzExZVh2OHRMUzMvaElXRi85dmMzZis3dkx6L1pHVmwvK1RvNlArOHY3Ly9aV1ZsLzBORFEvK05qbzcvK2Y3Ly8vRDE5di94OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzkvMysvOVRYMlA5N2Vuci9sSldWLy9EeTh2LzYvLy8vN1BIeC8yaG9hUCtPajVEL3VydTgvK3JzN2Yrd3NiSC9kWFoyLzJWa1pQOVpXVm4va3BLUy8zMTlmZitBZ1lML3p0SFIvLy8vLy8vKy92Ny8vLy8vLyt2dDdmL3k4dkwvLy8vLy8vLy8vLy85Ly8vL3NMTzAvM1IwZFArQWdJRC9pNHVMLzAxTlRmOTBkSFQvY25Oei85VFcxLy9hM056L3RiZTMvM1IwZFArS2k0di8rLy8vLy8zLy8vL1oyOXYvZzRPRC80Mk9qdi92OC9ULzhmYjMvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveDkvai83Zkx6LzZ1dHJmK0doWVgvbzZTay8rdnc4Zi96K2ZyLzUrdnMvNGFIaC85NGVIai9ob2VJLzk3ZjMvK2ZvS0Qvam8rUC85dmQzZisvdjcvL2VucDYveUFnSVA4UEVCRC9YbDlmLzNaM2QvOTZlbnYvaFlhSC8zK0JnZjk0ZVhuL2RIVjEvMHBMUy84Q0FnTC9Pams1LzQyTmpmL096OC8vejgvUS8zMTlmdi9Bd2NIL3g4akovMzE5ZnY5emMzUC9vS0doLy9YNStmL3krUG4vM3VMai81Q1JrZitNaTR2L3djUEUvL1g2Ky8vdzlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3krUG4vOHZqNC85emc0Zi9pNXVmLzhQWDIvL2I3L1AvVTE5Zi9KaWNuLzZxcXF2K3RycTcvVVZGUi82aW9xUCtscHFiLzM5L2cvMDVPVHY4WkdSbi9Cd2NIL3dBQUFQOENBZ0wvQUFBQS95Z29LUC9qNXVmL3M3VzEvd2tKQ2Y4Q0FnTC9BUUVCL3dFQkFmOE1EQXovSUNBZy8zVjBkUC9vNmVyL2pvK1AvNkdnb1A5RFJFVC80dVRrLzJwcWF2OVBVRkQvOGZYMi8vSDI5Ly92OVBYLzNlSGgvK0xtNS8vMSt2di84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di93OWZiLzlmcjcvL1Q1K3YvdTgvVC8rLy8vLzdpN3UvOGdIeC8vSmlZbi96bzdPLzlQVDAvL25aNmUvNmFucHY5VFUxUC9BQUFBL3dJQ0F2OEVCQVQvR2hvYS94OGZILzh5TWpML2lJcUsvLy8vLy8veDh2UC9XRmxaL3kwdExmOGFHaHIvRkJRVS93QUFBUDhCQVFIL0FBQUEvNGFIaC8rYm01di9tNXljL3pZM04vOUNRMFAvR0JnWS8wSkNRdi9nNU9ULzlmcjcvKy8wOWYvMSt2ei85UG42LysvMDlmL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84UFgyLy9EMTl2L3g5L2ovN2ZIeS80Mk5qZjlZVjFmL1pXVmwvNStnb1A5bFptWC95TXJLL3pJeU12OEFBQUQvQUFBQS96SXlNdjhzTEN6L0d4c2IvNE9EZy85NmZIei8vdi8vLzl6ZTN2OXViMi8vY1hGeC93VUZCZjlCUVVIL0d4c2Ivd0FBQVA4QUFBRC9hMnhzLzdLMHRQOXNiR3ovbXB1Yi8xaFhWLzlkWFYzL3FxdXMvL2I3L1AvdjlQWC84ZmIzLy9EMTl2L3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8wK2ZyLzdmSHkvOFRGeHYrenRiYi90YmU0LzdtN3ZQK2dvYUQvU0VoSS93b0tDdjhBQUFEL2NuSnkvMTFkWGY4QUFBRC9wYVdsLzUyZG5mK2lvNkwvam8rUC83eTh2UDl4Y1hIL0FBQUEvNDZPanY4NU9Ubi9BQUFBL3d3TURQOXJiR3ovcEthbS83eS92Lyt4czdQL3VidTcvODNRMFAvMCtmci84ZmIzLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYveTkvai8rUDMrLy9UNisvLzUvdjcvKy8vLy85WFkyZjlzYlczL0d4b2Evems1T2Y5UVQwLy91N3k4L3lFaElmOGpJeVAvNGVQai80bUxpdit6dGJYL3ZMMisvd0FBQVA5WFdGai9zckt5L3pjM04vODVPVG4vSGg0ZS81T1VsUC9sNmVyLy9mLy8vL2Y4L1AvMSt2di85LzMrLy9EMTl2L3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3U4L1QvNy9UMS8rN3o5UC91OC9ULzl2djgvL2I3Ky8rVmxwZi9LaW9xLzFGUlVmOWxaV1gvaVltSy93b0tDdjg3UER6LytQbjUvOURUMC84UUVCRC9LeXNyLzQrUWtQOVpXVm4vUlVWRi96VTFOZisrd3NMLy9QLy8vL0w0K1AvdTh2UC83L1QxLysvMDlmL3U4L1QvOGZYMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi83Zkx6Ly83Ly8vOS9mMy8vTmpZMi8wMU5UZjgvUHovL2IyOXYvd0FBQVA5NWVYci9URXhNL3hvYUd2OXNiR3ovTlRRMC8wOU9Udjh6TXpQL3JhMnQvLy8vLy8vcTcvRC84dmY0Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmWC85dnY4Lzh2Tnp2K1FrSkQvMTlyYS83L0J3ZitRa1pIL1VsSlMvMlZsWmY5UFQwLy9ZbUppL3dBQUFQOFNFaEwvYzNOei8wQkFRUDl5Y25ML1JrZEgvNit4c2YvSHlNbi95c3pNLzVHU2t2L2k1ZWIvOVBuNi8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3ejlQLzUvLy8vdXJ5OS96NCtQdjlzYkd6L3FhcXEvM1YyZHY5MWRYWC9ob2FHL3lFZ0lQK09qbzcvSUNBZy8xQlFVUDl0YlczL0t5c3IvNXljblA5ZllHRC9qbytRLzV5ZG5mOVpXbG4vVkZSVS8rRGo1UC8xK3Z2LzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vSDI5Ly95OS9mL3BLYW0vNFNFaFArWW1abi9RVUZDLzFaVlZmOUhSa2Iva1pTVS83S3p0UDlWVlZYL2JHeHMvNzIvd1A5eWMzUC9UVXhNLzBwSlNmOVVWbGIvb0tDaC8zOS9mLy9BdzhQLzkveisvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0gyOS8vNy8vLy84L2YzLy9YNStmL2MzK0QvcnJHdy84bk16Zi8vLy8vL3pjL1EvMVpWVmY5eGNYSC83ZkR3Ly9UNCtmKzh2cjcvdGJpNC8rdnY3Ly96OS9mLzl2djgvL245L2YvdzlmYi84ZmIyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLys3ejlQL3c5ZmIvOFBYMi8vYjYrLy85Ly8vLytQejgvKy8xOXYvMCtQbi9PRGc0LzNWM2QvLy8vLy8vN2ZMMC8vdi8vLy84Ly8vLzh2ajUvL0QxOXYvdjlQWC83dlAwLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvKzN5OC8vdTgvVC83Zkx6Ly8vLy8vOXdjWEgvcEtTay8vLy8vLy9zOGZQLzd2UDAvKzd5OVAvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOVBuNi85WFoyZi9oNWViLzlQbjYvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzl2djgvL1A1K3YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBQUFFQUFBQUNBQUFBQUFRQWdBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLysvMDlmLzMvUHovOWZyNy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84dmY0Ly9MMytQLzgvLy8vd01QRC84ek96di84Ly8vLzh2ZjQvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84ZmIzLysvejlQK2xwcWYvcmErdi83aTZ1dit6dGJYL3JLNnYvNnV0cmYvMCtmci84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85L3o5LytydjhQK1htSmovZkgxOS8zQndjZitpcEtUL21KbVovMjl3Y1ArQmdZSC9uNkNnLy9QNCtmLzArZnIvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTgvVC85ZnI3LyticTYvK3lzN1AvbnArZy8rN3k4LytRa1pIL1FFQkEvMGRIUi8rZW9LRC83Zkh5LzVpWW1mKzZ2THovNnU3di8vVDUrdi92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTgvVC8vUC8vLzluYzNQK1dscGIvb0tHaC8yeHRiZi9qNXVmL3ZiKy8vMUpTVXY5WVdGai8xTmZZLzgvVDFQOXRiVzMvcEtXbC81YVhsLy9tNnVyLytmNy8vKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdzlmYi85dnY3LytEazVQK1htSm4vc2JPei83cTl2Zi9TMWRYLytQcjcvN0d5cy85emMzUC9jM056LzhUR3h2L3c4dkwvME5QVS83ZTV1dit0cnE3L21adWIvK2pzN1AvMStmci84UFgyLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzhQWDIvL0gyOS8vMit2ci85L3o4LzhERXhQOE9EZzcvQkFRRS81bWJtLyt1cjYvL3FxMnQvNVNXbHY4OVBUMy9pNDJOLzNwN2UvOUZSVVgvbko2ZS82bXJyUCt6dExUL2hZYUgvd0FBQVA4aElTSC8xZGpaLy9UNSt2LzMrL3ovOFBYMi8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzlmdjgvL2Y4L1AvMSt2di9rcE9VLzdLMHRQK3RycTcvUTBORC8zUjBkUDh4TVRIL2o0K1EvMXRiVy85WVdGai9hbXRyLytYcDZ2L1UyTmovWUdCZy8xVlZWZjlsWm1iL2hvZUgvekF3TVA5eWNuTC9TMHRMLzdxOHZQK25xS2ovbnFDZy8vdi8vLy8yKy92LzlmcjgvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzh2ZjQvOHJOenYrc3JhMy8zT0RoLzZxcnEvOThmSHovYTJ4cy83eTl2Zjl4Y1hIL1ltSmkvNWlhbS8rdXNMSC90TFcxLzR5TmpmK1FrcEwvaW95TS81V1ZsZit5c3JQL3I3R3kvNDZQa1A5aFlXSC9kSFIwLzcvQXdQOWZYMS8vaTR5TS82K3dzUC9hM04zL3FxdXIvOUhWMWYvMCtmci84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzkvMysvOERDd3YrWm1abi93TUxDLzlYWjJ2K3JycTcvSkNRay8ySmpZLy9FeHNmL2c0U0UvK1RvNmYrcnJhMy9qNUNRLzRhR2h2K2VuNS8vZm45Ly80R0NnditqcGFYL2c0T0UvNU9VbFArMXQ3Zi8zZUhpLzM1L2YvL0t6TTMvU1VsSy96SXlNdis2dmI3LzB0WFcvNzIrdi8rVmxaWC96TS9QLy9mOS92L3c5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOVArTmpvNy9jbkp5LzNWMmR2OXBhV24vUERzNy80Q0FnUCs5dnI3L25KMmUvODdSMGYvQnc4UC9kWFYxLzZXbnAvKzd2YjcvcEthbS83eSt2LytzcnE3L242Q2cvOEhEeFArWm1wdi9lWHA2LzgzUHovL0d5Y24vblo2ZS84REN3djl2Y0hEL1FFQkEvM0J3Y2Y5MWRuYi9jbkp5LzVtYW12LzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvNCsvei9qWTZPLzRHQmdmOXpjM1AvbzZTbC85RFMwdithbXByL3BxZW8vN203dS8rdXI2Ly9ucCtmLzZ1dXIvL2k1K2YvNisvdy81eWRuZitvcXF2LzQram8vN2E1dXYvbzYrei8zZURoLzZhcHFmK2NucDcvczdTMC83aTZ1LytlbjUvL3BhZW4vOC9SMHYrY25aMy9jbkp5LzM1K2Z2K2NuWjMvL1AvLy8rNzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvNy8vLy91cjYvLzMxOWZmK01qWTMvSVNJaS82U2xwZitob3FML3JLK3YvOTdoNHYrdXI2Ly9xNnlzLy9iNit2LzUvUDMvLy8vLy83N0F3ZjhXRmhmL0FnSUMvOWZZMlAvLy8vLy84ZmIzLy9UNSt2Ly8vLy8vN3ZQei82R2pvLysydDdmLzNPRGgvNmFvcWYranBLVC9tNXlkL3hzYkcvK2hvNlAvY0hCdy85SFYxdi8zL2Y3LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC8vLy8vLzNaM2QvK2NuWjMvZEhaMi94b2FHdi9kMytEL3E2MnQvOEhFeFArK3dNSC9vNldsLy9mNysvL3c5ZmIvLy8vLy84Zkt5djhVRkJUL0FBQUEvd0FBQVA5YlhGei82dS93LyszeTgvL3Q4dlAvN2ZMei8vVDUrdi92OVBUL21adWIvOGJJeVArNHVyci90cmk0LzlEVDFQOEVCQVQvbHBpWS80T0RnLytQa1pMLy8vLy8vKzd6OVAveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84dmY0Ly9EMDlmK0VoSVQvZzRTRS84TEZ4ZjlJU0VqL3dNTEMvOExFeFArZm9LRC9uWitmLytYcDZ2LzArZnIvOC9qNC81R1RsUDhORFEzL0FBQUEvd01EQS84Q0FnTC9BQUFBLzdhNHVQLy8vLy8vK2Z2Ny8vSDMrUC92OVBYLytQMysvOW5jM2YrWm1wci9vcU9qLzhyTXpmK3dzN1AvU2t0TC84N1Iwdjl4Y1hML2s1V1YvL2I3L1AvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzErdnYvalk2Ty80U0VoUCs5djcvL3ZjREEvNlducVAreHM3UC9ucCtnLzhEQ3d2LzUvdi8vN2ZMei8vWDYrLytLakl6L0JRVUYvd0FCQWY4QUFBRC9BZ0lDL3dBQUFQOU5UVTcvbTUyZC82K3lzdi93OWZiLzhmYjMvKzd6OVAvNS9mNy9zN1cxLzZHaW92K3dzYkwvcHFpby84UEZ4ZiszdWJuL2UzdDcvNXFjbmYvNi8vLy83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvL1AvLy83aTd1LzlvYUdqL2NIQncvNWFXbC8rTGpJei94c2pJLzVlWW1QL1QxOWovOXZ6OS8vRDE5di91OC9ULy8vLy8vM1ozZC84QUFBRC9Bd1FFL3dBQUFQOEFBQUQvQVFFQi93QUFBUDhZR0JqLzRPVGwvL1Q1K3YvdjgvVC8rUDcvLzhQR3gvK2VuNS8vdnNEQS80NlBqLytQa0pEL2MzUjAvMlptWnYvTHo4Ly8rZjcvLysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di94OWZiL1ZGUlUvNFNFaGYvR3g4ai95c3pNLzY2d3NQOXBhV24vdUx1Ny8vZjgvZi93OWZiLzd2UDAvL3IvLy8rOXY3Ly9BQUFBL3dFQkFmOEFBQUQvQUFBQS93TURBLzhFQkFUL0FRRUIvOGJIeC8vOS8vLy83Zkx6Ly9iNy9QK21xS24vYTJ4cy83YTN1UC9Lek16L3hjYkgvM0p5Y3Y5bloyai8rLzcvLys3ejlQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8yKy92Ly8vLy8vMlZtWnY4bEpTWC9qNUNRLzZxcnEvK2dvcUwvbFphVy8rbnQ3di96K1BuLzhmYjMvKzd6OVAvLy8vLy9nb1NFL3dBQUFQOENBZ0wvQUFBQS93QUFBUDhBQUFEL0FnSUMvd0FBQVA5Z1lXTC84dmY0Ly9EMTl2LzErL3ovM04vZi81R1NrditobzZQL3FhcXIvNE9EaFA4ZEhSMy9nb09ELy8vLy8vL3orUG4vOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8wK2ZyL3hzbkovNkNob3YrV2xwZi9aMmRuL3l3cksvK0dob2IvcHFlby82T2twUC80L2Y3LzcvVDEvKy8wOWYvNC9mNy8wTlBVL3d3TURQOEFBQUQvQVFFQi93QUFBUDhBQUFEL0FBQUEvd0lDQXY4QUFBRC9NREV4Ly9IMTl2L3g5dmYvOFBYMi8vUDMrUCtabXByL3E2dXIvM2QzZC84bEpTWC9kWFoyLzVPVWxQK2xwcWIvenRMVC8vWDcvUC93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzlmcjcvOUhWMXYrMXQ3Zi91cjIrLzRtS2kvOWxabWIvZTN0Ny85TFYxZitycmE3LzkvejkvL0QxOXYvdDh2UC8vLy8vLzRlSmlmOEFBQUQvQkFRRS93QUFBUDhBQUFEL0FBQUEvd0FBQVA4Q0FnTC9BQUFBLzU2Zm4vLy8vLy8vN2ZMei8vSDI5Ly93OVBYL3A2bXAvOUxVMWY5dWJtNy9hV3BxLzVDUmtmKzl3TUQvczdXMi85dmY0UC8wK3Z2LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMit2di8vLy8vLzl6ZTN2K3hzN1Avb2FLaS80eU5qdi9RMHRQL3pNM08vOTdpNC8vMSt2di83Zkx6Ly8vLy8vOW1aMmYvQUFBQS93TURBLzhBQUFEL0FBQUEvd0FBQVA4QUFBRC9Bd01EL3dBQUFQK1RsWmIvLy8vLy8rM3k4Ly8zL1AzLzFOalovOUhUMC8vRnhzYi9pSW1KLzZhbnFQK3dzckwvNXVmbi8vLy8vLy8xK1BuLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYveitQbi83Zkh5LzlYWjJ2K2dvcVAvc2JPei80MlBqLytlbjUvL3U3eTkvOGpLeXYvUDBkTC85LzMrLyt6eDh2Ly8vLy8vWjJoby93QUFBUDhEQXdQL0FBQUEvd0FBQVA4QUFBRC9BUUVCL3dBQUFQOEhCZ2IvemRIUi8vci8vLy90OHZQLytQejkvOFhHeC8vS3pzNy90TGEyLzZDaG92K01qWTcvdHJpNC81NmdvZi9lNHVQLzdmTHovL1A0K2YveDlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gxOXYveitQbi82TzN0LzV1Y25mK0dob2IvaTR1TS80eU5qZitDaElUL3U3MisvNDJPai8vQXdjSC9tSnFiLy8vLy8vL3E3L0QvLy8vLy81bWJuUDhBQUFEL0JBUUUvd0FBQVA4QUFBRC9BQUFBL3dFQkFmOEFBQUQvRHc4UC82cXRyZi8wK2ZyLzcvUDAvL2I3L1A5MmQzZi95OHpOLzMxK2Z2L0x6czcvYTJ4dC81eWVuLzkvZ0lEL2pZNk8vNkNpb3YvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84dmY0Lyt2djhQL3M4ZkwvenRIUy80dUxpLysvd2NIL201eWQvNCtQa1AvRng4Zi9lM3g4LzJwcWF2L3Q4ZkgvOC9qNS8vRDE5di90OGZML05EVTEvd0FBQVA4RkJRWC9Bd01EL3dNREEvOERBd1AvQXdNRC93QUFBUDh3TURELzdmSHkvL24rLy8vTzBkTC9aMmhvLzVDU2t2Kzl2ci8vaTR5Ti82U21wdis0dXJyL2pJMk4vOW5jM2YvcTcvRC83UEh5Ly9MMytQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3k5L2ovOC9qNS8vZjgvZi9JeTh2L3FhcXEvN2U1dXYrNXU3ei9xS3FxLzM1K2Z2K21wNmYvcmErdi8rN3o5UC96K1BuLzkvejkvOUhUMC84ZUhoNy9BQUFBL3dFQkFmOEFBQUQvQUFBQS93SUNBdjlSVWxMLzA5ZlkvLy8vLy8vVTE5ai9wNmlvLzYydnIvOS9mMy8vcjdDdy83aTd1LyszdWJuL3BxaW8vOURVMWYvNC9mNy84dmY0Ly9MMytQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLyt2Ly8vOC9TMC85d2NIRC9vNldsLzU2Z29QK2lwS1QvM04vZi83TzF0ZitucWFuLzZlM3QvL2I4L2YvNi9mNy80ZVRsLzRDQ2d2OUJRa0wvUWtORC81R1RsUC9BeE1YLyt2ejgvLzMvLy8vUjFkYi9tcHViLzh2T3p2L2Y0dUwvbTV5Yy82V25wLytZbVpuL2RuWjIvOTdpNC8vNC9mNy83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdTh2UC9yN0d4LzYydnIvKzV1N3YvYzNSMC8xWlhWLy9oNWVYL3ZiL0EvNTJmbi8vS3pjMy82dS93Ly9uOS9mLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9mLy8vK0xtNS8rMHRyYi9tWnFhLzliYTJ2L1kzTjMvU1VsSi80Q0FnUCsvd2NIL3BhZW4vN3E4dmYveTkvai84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9qKy8vL2k1dWYvYm01di80ZUlpUDlBUUVEL2FHbHAvOHZQMFAvVjJkci9xcXVzLzZlcHFmKzB0cmYvd2NURS84dk96Ly9Kek0zL3ZML0EvNnl1cnYraG9xTC90TGEyLyticTYvL0V4OGovVmxaVy8weE1UUCtFaElYL2QzZDMvK3p4OHYvMy9QMy84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3Y5UFgvOWZyNy82ZXBxZitWbHBiL282U2svNDZQai85NGVYbi9uSjZmLzlIVTFmL0d5Y24veE1iRy83L0J3Zis1dWJyL3VMcTYvOFBGeGYvSHljbi96OUxTLzlUWTJQK1BrWkgvZkh4OC80Mk9qditwcTZ2L2pvNk8vN1MydC8vMy9QMy83dlAwLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vci8vLysydUxqL242Q2cvL2I1K3YrZ29xTC90N2k0LzVPVGsvK1ptcHIvbkp5ZC8yTmtaUCtucXFyL3RiZTMvN1czdC8raG82UC9ZV0ZpLzZXbXB2K09qbzcvbkoyZC83S3pzLytxckt6Lzl2cjYvNU9Uay8vSnpNei8rZjcvLysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvK1BuNlAvOS8vLy9nb09FLzBkSFIvK0lpWW4vcEtXbC94NGVIdjhBQUFEL0JBUUUvNmFwcXYrSmk0di9BQUFBL3dBQUFQOHdNREQvcksydC8zMStmdjlEUkVQL25aMmQvL3YvLy8vazZPbi84dmY0Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veitQbi85dnY4Lzh6UDBQK0Zob2IvcXF5cy8yaHBhZjhBQUFEL1FVRkIvMDVPVHYvQ3hNWC90N201LzBKQ1F2ODhQRHovQUFBQS8zK0FnUCtqcGFYL2lJbUovOWpjM2YvMSt2di84L2o1Ly9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2LzMrL3ovK2YzOS8vZjgvZi9TMXRiL1NrcEsvMlZsWmY4L1B6Ly9uWjZlLzRtS2l2OUhSMGYvWFYxZC8xWllXUC9mNCtULzkvejkvL3IrL3YvMSt2di84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8rLzA5Zi93OWZiLzE5cmIvN2U2dXY5Y1hGei9UMDlQL3pjNE9QODNOemYvVUZCUS8ySmlZdi9EeGNiLzJ0N2UvL0wzK1AvdTgvVC84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLytmNy8vNk9rcGYrTGk0di9ibTV1LzNGeGNmOWpZMlAvYW1wci8ydHJhLzkyZDNmL2lJaUovN1MydC8vNi8vLy83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vMisvei83Zkh5LzgvVDFQL3k5ZmIva3BPVC82cXNyUC9zOFBILzB0YlgvKy8wOWYvMisvei84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9MMytQLzIrL3ovKy8vLy84bk16Zi9UMXRiLysvLy8vL2I3L1AveDkvai84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8rLzA5Zi8xK2ZyLzlQbjUvKy8wOWYvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5LzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBQUFBd0FBQUFZQUFBQUFFQUlBQUFBQUFBQUNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEeDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy9MMytQL3g5dmYvNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3g5dmYvK2YzKy8rN3k4Ly92OVBYLytQMysvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vUDQrZi9yNy9ELzFOalovOEhFeFAvRXg4ai8xZGpaLys3ejlQL3k5L2ovOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzl2djgvL0QxOXYrbnFhbi9kSFYxLzV1Y25mK1VsWlgvZDNkMy83Q3lzdi8wK2ZyLzlQbjYvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYveitQbi81ZXJxLzZ1c3JQK2hvNlQvemRIUi8weE1UUDlXVmxiLzA5ZlgvNXVjblAreXRMVC82TzN1Ly9MMytQL3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9iNisvLzArUG4vcXF5cy82U21wdiswdHJiLzZ1cnEvMmxxYXY5M2VIai83ZTd1LzZ5dXJ2K2xwcWIvcnJDeC8vbjkvZi8wK1BuLzhQYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9QNCtmL3k5L2ovOWZyNy85amIzUDhvS1NuL1hGMWQvN3U4dlArNHU3di9lM3g4LzM1L2YvOTNlSGovZzRXRi83bTd2UCs1dXJyL1NrdEwvelkzTi8vazZPbi84L2o1Ly9QNCtmL3orUG4vOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOC9qNS8rdnY4UC9XMnR2L242Q2cvNktrcFA5ZVgxLy9TVWxKLzNGeWN2OTZlbnIvWTJOai83M0F3Zit4dExUL1gxNWUvMzUvZi85cGFtci9Ta3BLLzJKalkvK3BxcXIvbnFDZy85M2k0Ly9xN3UvLzlQbjYvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly96K1BuL3c4YkcvN0d6cy8vZDRPSC9lWGw1LzFaWFYvK3l0TFQvaW95TS82MnZyLytmb2FIL25wK2YvMzErZnYrRWhZWC9vcUtqLzZDaG9mK3NycS8vaDRpSS83UzJ0djlKU2tyL2lvdUwvOXZmMy8rdXI2Ly95Y3pOLy9UNSsvL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL1Q2Ky8vaDVlYi9mWDE5LzR5TmpmOStmMy8vVlZaVy81ZVltUCtycmE3LzBOUFQvNU9VbFArYm5KMy9xNjJ0LzdXMnQvK2lwS1QvcDZtcC81aVptdithbTV2L3o5TFMvNnV0cmYrUmtwTC9WVlpXLzRTRmh2K0lpWW4vZzRPRC8rbnQ3di96K1BuLzhmWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9mOS92L1cydHYvZ1lHQi8yZG5aLytlbjUvL3M3UzEvN0N5c3YrMnQ3Zi9xcXVyLzdlN3UvL3o5L2YvdUxxNi8zMStmLy9lNHVMLzJ0N2YvK2ZyN1ArM3Vyci9xYXFxLzdpNnV2K3VzTEQvdHJlNC81YVhsLzlvYUdqL2hZV0YvK0RrNWYvMSt2di84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vdi8vLytRa1pML2o1Q1EvekV4TWYrenRiWC9xNjJ0Lzg3UjB2K3JyS3ovNSt6cy8vLy8vLy9kMytEL0pDVWwvd0FBQVArNXZMei8vZi8vLyszeDh2Ly8vLy8vNGVibi82bXFxLy9PMGRML3FxeXMvNnFzclA4d01USC9rcE9ULzVtYm5QLysvLy8vN3ZQMC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmZjQvL0gxOXY5OGZIei9xYXVzLzE5Z1lQL0V4c2IvdExXMS82Q2hvZi9kNGVMLy92Ly8vN2E1dWY4Zkh4Ly9BQUFBL3dBQUFQOGtKQ1gvOS9mMy8vLy8vLy90OHZQLytmLy8vOWJaMnYrY25aNy91N3k5LzdtOHZQOWpaV1gvcHFpby80S0RnLy8zL1AzLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9UNSt2K01qWTcvbEpXVi83R3pzLytpbzZUL3FxeXMvN3kvdi8vMy9QMy85dnY4LzdTM3VQOE9EZzcvQUFBQS93RUJBZjhEQXdQL1dsdGIvNDJQai8vdDhmTC84UFgyLy9mOC9mKzB0cmIvcksydC82R2lvdiswdHJiL2pJeU4vNVdYbC8vNC9mNy84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vdi8vLys1dkwzL1gxNWUvNlNscGYrNHVibi9tWnViLzY2eHNmLzUvdi8vNi9EeC8vLy8vLzkvZ0lEL0FBQUEvd1FFQlA4QkFRSC9BQUFBL3dvS0N2L2IzZDMvOXZ2OC8vWDcvUCtpcGFYL25xQ2cvN2U1dWYrZ29hSC9YVjFkLzhqTHpQLzUvLy8vNy9UMS8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL24rLy8vZTRlSC9QRHM3LzR1TWpQKzV1cnYvaW91TC84Ykp5di8zL2Y3LzdQSHkvLzcvLy85d2NuTC9BQUFBL3dNREEvOEFBQUQvQmdZRy93QUFBUCtMalkzLysvLy8vL1g2Ky8rN3ZiNy9qSTJOLzdxN3ZQOTlmbjcvUlVWRi8rM3g4Zi8xKy96LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi85ZnI4LzlIVTFmK2ZvS0QvaElXRi96WTFOZitNakl6L3BxaW8vK2JyNi8veTkvai8rUDcvLzh6UDBQOEhCd2YvQUFBQS93RUJBZjhBQUFEL0F3TUQvd0FBQVA5c2JXNy8vdi8vLy9QNCtmL2U0dVAvcHFlbi80R0JnZjgyTlRYL2k0eU0vNkNob2YvWjNkMy85ZnI3Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC8rbnU3Ly9sNmVyL3U3MjkvNGFIaC8rV21Kai96ZERSLzl6ZzRmL3g5dmovLy8vLy81S1VsZjhBQUFEL0F3TUQvd0FBQVA4QUFBRC9BZ0lDL3dBQUFQK3dzckwvL2YvLy8vUDQrZi9YMjl2L3pkRFEvNDJPanYrTGpJei93TUxDLyticTYvL3I4UEgvOHZmNC8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvVDE5ai9zYk96LzV5ZG52K2twcWYveDhqSS85UFYxZi94OXZmLy8vLy8vNGVKaWY4QUFBRC9CQVFFL3dBQUFQOEJBUUgvQUFBQS93WUZCZi9PMGRMLytQMysvL0wzK1AvTHpzNy93c1RFLzZLanBQK2VuNS8vczdXMS85amMzZi92OVBYLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84dmY0LzcvQnd2K0hoNGYvazVTVS80dU5qZitmb0tIL3JLNnYvNWFZbWYvMSt2di8rdi8vLzdpN3ZQOEFBQUQvQXdRRS93TURBLzhEQXdQL0F3TUUvd0VCQWYrWG1wdi8vUC8vLytmczdmK0tpNHovcmErdy81MmZvUCtJaW92L2twT1UvNHFMaS8vRXg4ai85UG42Ly9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvNy9UMS8vYjcvUC9aM2Q3L3A2aW8vN1MydC8rdnNiSC9tWnFhLzNaM2QvL1YyZG4vOS96OS8vci8vLzlsWm1mL0FBQUEvd0lDQS84QkFRSC9BQUFBL3dRREEvK09rWkgvLy8vLy83N0J3Zjk5ZlgzL29LR2gvNjJ2ci8rMnVMai9wcWVuLytIbDVmLzErdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvMisvei80dWJuLzR1TWpQK21xS2ovbXB5Yy84Zkp5Zit6dGJiL3k4L1AvL24rLy8vMitmbi9qWkNRL3pZMk52OUFRRUQvZzRXRi85Yloydi8vLy8vL3Q3bTUvNy9Cd3YvSXk4di9uSjJkLzZHam8vK1FrWkgvNmUzdS8vWDYrLy93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOWZyNy84akx6UCt6dGJYL2pZNk8vMXBhVy8vQXc4VC91NzYrLzdlNnV2L2I0T0gvK3YzKy8vajgvZi8zKy96LytmNysvOW5kM3YrcnJhMy95TXZMLzd5L3dQOVZWVlgvbHBlWC83SzB0Zi9QMHRQLzl2djgvKy8wOWYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzcvVDEvL3ovLy8vVzJ0di9nNFNFLzNSMGRQOTJkbmIvczdXMi84TEZ4ZisydUxqL3ZMNisvNzIvdi8rOHY3Ly91cnk4LzdhNHVQL0x6czcvc2JTMC8yMXVidjk1ZW5yL2hZV0cvK0hsNXYvNi8vLy83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3Y5UFQvb2FLaS85ZmEydittcUtqL2twT1QvNmlwcXYrY25aMy9pNDJOLzdTMnR2K3p0YlgvaUlxSy82U2xwZitpbzZQL2twS1QvNjZ3c1AvVDF0Yi9wYWFtLy9UNSt2L3Y5UFgvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OS9qLzZlM3UvL24rLy85L2dZSC9hbXBxLzR5TWpQOFBEdy8vQWdFQi81V1hsLytCZzRQL0FBQUEveG9aR2YrVGs1UC9ZV0ppLzVHU2t2LzYvLy8vNmU3di8vTDMrUC94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84dmY0Ly9UNSt2L2U0dVAvejlQVS81NmhvZjhxS2lyL1QwOVAvNktqby8rV2w1Zi9TMHRML3lvcUt2K3VzYkgvemRIUi8rTG42UC8wK2ZyLzh2ZjQvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vRDE5di8wK2ZyLyt2Ly8vK1RvNlArUWtwTC9URXhNLzBoSVNQOUdSa2IvVDA1Ty81dWNuZi9wN3UvLysvLy8vL1A0K2YvdzlmYi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC85ZnI3LzhmTHkvK2FtNXovaG9lSC8zQnhjZjkxZG5iL2hZYUgvNTZmb1AvUTA5VC85ZnI3LysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vZjcvUC95OXZmLysvLy8vOEhFeFAvTXo4Ly8rZjcvLy9QNCtmLzIrdnYvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0QxOXYvdzlmYi84ZmIzLy9EMTl2L3c5ZmIvOGZiMy8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS84QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvQUFBQUlBQUFBRUFBQUFBQkFDQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9QNCtmL3orUG4vOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOFBYMi8vSDI5Ly8yKy96LzZPM3QvK251Ny8vMisvdi84ZmIzLy9EMTl2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvdzlmYi84L2o1LzY2eHNmK1ltWm4vbHBpWS83UzN0Ly8xK3Z2LzhQWDIvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3c5ZmIvOWZuNi8vajYrdit3c3JQL3Y4TEMvM3A3ZS8rRGhZWC92TDYvLzdXM3QvLzYvUHovOVBuNS8vRDE5di93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzlQbjYvL0wzK1AvbTZlbi9hR3BxLzVlWW1mKzF1TGovaG9lSC80bUtpdiszdWJyL2taR1MvMjF1Yi8vcjcvRC84ZmIzLy9UNSt2L3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMDlmL2o1K2oveXMzTi80ZUlpUDlnWUdEL2VudDgvMzUvZi8rUWtwTC9qcENRLzRLQ2d2OTJkbmYvWW1KaS80cUxqUC9PME5ILzQrZm8vL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8rLzA5Zi80L2Y3L3pjL1AvNUtTa3YrS2k0di9iMjl3LzcyL3YvK2twYWIvcHFlby82eXRyZitlbjUvL29xT2svNmlxcXYrNnZMei9iR3hzLzQrUWtQK1JrWkgvMDliWC8vZjkvdi93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi83L1QxLy9mOS92K3h0TFQvV2xwYS81bWFtdis4dnI3L3NyT3ovOWpjM2YvYjM5Ly9ZbU5qLzluZDN2L202dXYveWN6Ti83TzF0dis4dnI3L2xKV1YvMXBhV3YrNnZMMy8rUDMrLysvMDlmL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly96K1BuLzZlN3YvNU9VbGY5eWMzUC9zTEd5LzdHenMvL2U0dVAvNU9ucS96bzdPLzhBQUFEL2hJYUcvLy8vLy8vNC9mMy8xTmpaLzdPMXRmK3JyYTcvY1hOei81ZVltZi91OC9ULzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3orUG4vbEpXVy82S2pvLytzcmEzL3I3R3kvL3IvLy8vVTJObi9IaDRlL3dBQUFQOFNFaEwvWVdKaS8rdnY4UC8xK3Z2L3E2MnQvNjZ2c1ArZm9LRC9tSnFhLy9iNy9QL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzd2UDAvLzcvLy8rZG41Ly9iVzF0LzZxc3JQK3RzTEQvOC9qNS8vLy8vLzlWVmxiL0FBQUEvd1VGQmY4QUFBRC90cm02Ly8vLy8vK2xwNmYvcTZ5dC8yWm1aLytwckt6Ly9mLy8vKy96OVAveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3orUG4vNU9qcC83UzJ0djlqWTJQL2taS1MvOWJaMmYvKy8vLy94OHZNL3dNREEvOEFBQUQvQkFRRS93QUFBUCtnbzZULy8vLy8vOUxVMWYrS2k0di9aV1ZsLzdtN3UvL242K3ovOC9qNS8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vczhmTC8wTlBVLzUyZW52K3FySzMvMXRyYS8vLy8vLytwckt6L0FBQUEvd1lHQnY4QkFRSC9DUWtKLzlMVjFmLzQvdi8vMHRiVy82ZXBxZitmb0tILzA5YlgvKzN5OC8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOVBuNi85dmY0UCtibkp6L21acWIvNmVwcWYrVWxwYi84ZlgyLzluZDN2OFBEdy8vQUFBQS93SUNBdjhBQUFEL3M3ZTMvK3Z2OFArUGtKRC9xYXVyLzVlWW1mK2VuNkQvMytQay8vUDQrZi93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi85ZnY4Lyt6eDh2K3JyYTMvbjZHaC82R2lvdi9HeWNuLzl2djcvN1MzdVA4d01USC9PRGs1LzRlS2l2L1cyZHIveHNuSi82V25wLytlb0tEL3I3R3gvKy8wOWYvMSt2di84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly92OVBYLzlmcjcvK0xtNS8rcnJhMy9iVzV1LzZlcHFmL0F3OFAvNCtmby8rbnQ3Zi9vN096LzVPanAvOGJJeWYrbHFLai9iVzV1LzdDeXN2L2w2ZXIvOVByNy8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3U4L1QvL1AvLy85RFQxUCtscDZmL2taS1MvNmlwcXYrVWxaYi9wYWFuLzZLa3BQK1htSm4vcDZpcC81S1RrLyttcUtqLzFkbmEvL3IvLy8vdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi83L1QxLy9UNStmK2dvYUwvZzRTRS94RVJFZjkrZ0lEL2NuTnoveFlWRmYrR2g0Zi9wYWVuLy9iNy9QL3U4L1QvOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL2Y4L2YvWDI5ei9ZV0ZoLzFwYVd2OVhWMWYvWm1kbi85N2o0Ly8yKy96LzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOC9qNS8rWHA2dis1dkx6L2lveU0vNDJQai8rOHY3Ly82T3p0Ly9MMytQL3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84L2o1Ly92Ly8vL3Y4L1AvOGZUMS8vci8vLy95OS9qLzhmWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OWZiLzcvUDAvL0gyOS8veDl2Zi83L1QxLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQUFBQUJBQUFBQWdBQUFBQVFBZ0FBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBIMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhQWDIvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOFBYMi8vZjgvZi8zL1AzLzhQWDIvL0QxOXYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdjlQWC84L2o1Ly9qOC9QL0l6TXoveXMzTy8vbjgvZi96OS9qLzcvVDEvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly93OWZiLytQMysvK3Z3OGYrdHNMRC9qSTJOLzQrUWtQK3ZzckwvN2ZMei8vZjgvZi93OWZiLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3c5ZmIvOVBuNi84L1MwLytTbEpUL2hvZUkvNmlwcXYrZW42RC9nb09ELzVXV2wvL1IxTlQvOWZyNy8vRDE5di94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMTl2K0tqSXovb0tHaC85dmUzLzljWGw3L3dNVEUvK2pzN2YrWm01di9qbytQLy9MMytQL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0wzK1AvdjlQWC9rcE9VLzdDeXN2L3I4UEgvR2hzYi95QWdJUC9nNU9YL3I3R3gvNVNXbHYveDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OS9qLzhQWDIvNWVZbVArOHZyLy8xOXpkL3dNREEvOEFBQUQvMHRiWC83aTZ1LytabTV2LzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOHZmNC8rN3o5UCs1dkx6L25xQ2cvOXZmNFA5SFNVbi9Penc4LzgzUjB2K2ZvYUgvdTc2Ky8rLzA5Zi94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9EMTl2L3orUG4vOHZmNC82YW9xZitlb0tEL3dzWEYvNy9Cd3YrZG41Ly9xcXlzLy9QNCtmL3k5L2ovOFBYMi8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84UFgyLy9IMjkvLzErdnIvc3JXMS8xTlRVLzlVVlZYL3Q3bTYvL1g2Ky8veDl2Zi84UFgyLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi84dmY0Ly9mOC9QL0d5c3IveU16TS8vajgvZi94OXZmLzhQWDIvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8vdzlmYi8rZjMrLy9qOS92L3c5ZmIvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvKy8wOWYvdjlQWC84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5Ly94OXZmLzhmYjMvL0gyOS8veDl2Zi84ZmIzLy9IMjkvL3g5dmYvOGZiMy8vSDI5LzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIn0=
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
