/*! obsidian-smart-connections v3.0.80 | (c) 2025 🌴 Brian (Brian Petro) */
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// node_modules/obsidian-smart-env/node_modules/base64-js/index.js
var require_base64_js = __commonJS({
  "node_modules/obsidian-smart-env/node_modules/base64-js/index.js"(exports2) {
    "use strict";
    exports2.byteLength = byteLength;
    exports2.toByteArray = toByteArray;
    exports2.fromByteArray = fromByteArray;
    var lookup = [];
    var revLookup = [];
    var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
    var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    for (i = 0, len = code.length; i < len; ++i) {
      lookup[i] = code[i];
      revLookup[code.charCodeAt(i)] = i;
    }
    var i;
    var len;
    revLookup["-".charCodeAt(0)] = 62;
    revLookup["_".charCodeAt(0)] = 63;
    function getLens(b64) {
      var len2 = b64.length;
      if (len2 % 4 > 0) {
        throw new Error("Invalid string. Length must be a multiple of 4");
      }
      var validLen = b64.indexOf("=");
      if (validLen === -1) validLen = len2;
      var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4;
      return [validLen, placeHoldersLen];
    }
    function byteLength(b64) {
      var lens = getLens(b64);
      var validLen = lens[0];
      var placeHoldersLen = lens[1];
      return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
    }
    function _byteLength(b64, validLen, placeHoldersLen) {
      return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
    }
    function toByteArray(b64) {
      var tmp;
      var lens = getLens(b64);
      var validLen = lens[0];
      var placeHoldersLen = lens[1];
      var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
      var curByte = 0;
      var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen;
      var i2;
      for (i2 = 0; i2 < len2; i2 += 4) {
        tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)];
        arr[curByte++] = tmp >> 16 & 255;
        arr[curByte++] = tmp >> 8 & 255;
        arr[curByte++] = tmp & 255;
      }
      if (placeHoldersLen === 2) {
        tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4;
        arr[curByte++] = tmp & 255;
      }
      if (placeHoldersLen === 1) {
        tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2;
        arr[curByte++] = tmp >> 8 & 255;
        arr[curByte++] = tmp & 255;
      }
      return arr;
    }
    function tripletToBase64(num) {
      return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];
    }
    function encodeChunk(uint8, start, end) {
      var tmp;
      var output = [];
      for (var i2 = start; i2 < end; i2 += 3) {
        tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255);
        output.push(tripletToBase64(tmp));
      }
      return output.join("");
    }
    function fromByteArray(uint8) {
      var tmp;
      var len2 = uint8.length;
      var extraBytes = len2 % 3;
      var parts = [];
      var maxChunkLength = 16383;
      for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) {
        parts.push(encodeChunk(uint8, i2, i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength));
      }
      if (extraBytes === 1) {
        tmp = uint8[len2 - 1];
        parts.push(
          lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "=="
        );
      } else if (extraBytes === 2) {
        tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1];
        parts.push(
          lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "="
        );
      }
      return parts.join("");
    }
  }
});

// src/index.js
var index_exports = {};
__export(index_exports, {
  default: () => SmartConnectionsPlugin
});
module.exports = __toCommonJS(index_exports);
var import_obsidian60 = __toESM(require("obsidian"), 1);

// node_modules/obsidian-smart-env/smart_env.js
var import_obsidian20 = require("obsidian");

// node_modules/obsidian-smart-env/node_modules/smart-environment/components/settings.js
async function build_html(env, opts = {}) {
  const env_settings_html = Object.entries(env.settings_config).map(([setting_key, setting_config]) => {
    if (!setting_config.setting) setting_config.setting = setting_key;
    return this.render_setting_html(setting_config);
  }).join("\n");
  const env_collections_containers_html = Object.entries(env.collections).map(([collection_key, collection]) => {
    return `<div data-smart-settings="${collection_key}"></div>`;
  }).join("\n");
  const html = `
    <div class="">
      ${env_settings_html}
      ${env_collections_containers_html}
    </div>
  `;
  return html;
}
async function render(env, opts = {}) {
  const html = await build_html.call(this, env, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process.call(this, env, frag, opts);
}
async function post_process(env, frag, opts = {}) {
  await this.render_setting_components(frag, { scope: env });
  const env_collections_containers = frag.querySelectorAll("[data-smart-settings]");
  for (const env_collections_container of env_collections_containers) {
    const collection_key = env_collections_container.dataset.smartSettings;
    const collection = env[collection_key];
    await collection.render_settings(env_collections_container);
  }
  return frag;
}

// node_modules/obsidian-smart-env/node_modules/smart-settings/smart_settings.js
var SmartSettings = class {
  /**
   * Creates an instance of SmartEnvSettings.
   * @param {Object} main - The main object to contain the instance (smart_settings) and getter (settings)
   * @param {Object} [opts={}] - Configuration options.
   */
  constructor(main, opts = {}) {
    this.main = main;
    this.opts = opts;
    this._fs = null;
    this._settings = {};
    this._saved = false;
    this.save_timeout = null;
  }
  static async create(main, opts = {}) {
    const smart_settings = new this(main, opts);
    await smart_settings.load();
    main.smart_settings = smart_settings;
    Object.defineProperty(main, "settings", {
      get() {
        return smart_settings.settings;
      },
      set(settings) {
        smart_settings.settings = settings;
      }
    });
    return smart_settings;
  }
  static create_sync(main, opts = {}) {
    const smart_settings = new this(main, opts);
    smart_settings.load_sync();
    main.smart_settings = smart_settings;
    Object.defineProperty(main, "settings", {
      get() {
        return smart_settings.settings;
      },
      set(settings) {
        smart_settings.settings = settings;
      }
    });
    return smart_settings;
  }
  /**
   * Gets the current settings, wrapped with an observer to handle changes.
   * @returns {Proxy} A proxy object that observes changes to the settings.
   */
  get settings() {
    return observe_object(this._settings, (property, value, target) => {
      if (this.save_timeout) clearTimeout(this.save_timeout);
      this.save_timeout = setTimeout(() => {
        this.save(this._settings);
        this.save_timeout = null;
      }, 1e3);
    });
  }
  /**
   * Sets the current settings.
   * @param {Object} settings - The new settings to apply.
   */
  set settings(settings) {
    this._settings = settings;
  }
  async save(settings = this._settings) {
    if (typeof this.opts.save === "function") await this.opts.save(settings);
    else await this.main.save_settings(settings);
  }
  async load() {
    if (typeof this.opts.load === "function") this._settings = await this.opts.load();
    else this._settings = await this.main.load_settings();
  }
  load_sync() {
    if (typeof this.opts.load === "function") this._settings = this.opts.load();
    else this._settings = this.main.load_settings();
  }
};
function observe_object(obj, on_change) {
  function create_proxy(target) {
    return new Proxy(target, {
      set(target2, property, value) {
        if (target2[property] !== value) {
          target2[property] = value;
          on_change(property, value, target2);
        }
        if (typeof value === "object" && value !== null) {
          target2[property] = create_proxy(value);
        }
        return true;
      },
      get(target2, property) {
        const result = target2[property];
        if (typeof result === "object" && result !== null) {
          return create_proxy(result);
        }
        return result;
      },
      deleteProperty(target2, property) {
        if (property in target2) {
          delete target2[property];
          on_change(property, void 0, target2);
        }
        return true;
      }
    });
  }
  return create_proxy(obj);
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/deep_merge.js
function deep_merge(target = {}, source2 = {}) {
  for (const key in source2) {
    if (!Object.prototype.hasOwnProperty.call(source2, key)) continue;
    if (is_plain_object(source2[key]) && is_plain_object(target[key])) {
      deep_merge(target[key], source2[key]);
    } else {
      target[key] = source2[key];
    }
  }
  return target;
}
function is_plain_object(o) {
  return o && typeof o === "object" && !Array.isArray(o);
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/camel_case_to_snake_case.js
function camel_case_to_snake_case(str = "") {
  return str.replace(/([A-Z])/g, (m) => `_${m.toLowerCase()}`).replace(/^_/, "").replace(/2$/, "");
}

// node_modules/obsidian-smart-env/node_modules/smart-environment/utils/normalize_opts.js
function normalize_opts(opts) {
  if (!opts.collections) opts.collections = {};
  if (!opts.modules) opts.modules = {};
  if (!opts.items) opts.items = {};
  Object.entries(opts.collections).forEach(([key, val]) => {
    if (typeof val === "function") {
      opts.collections[key] = { class: val };
    }
    const new_key = camel_case_to_snake_case(key);
    if (new_key !== key) {
      opts.collections[new_key] = opts.collections[key];
      delete opts.collections[key];
    }
    if (!opts.collections[new_key].collection_key) opts.collections[new_key].collection_key = new_key;
    if (val.item_type) {
      opts.items[val.item_type.key || camel_case_to_snake_case(val.item_type.name)] = {
        class: val.item_type
      };
    }
  });
  Object.entries(opts.modules).forEach(([key, val]) => {
    if (typeof val === "function") {
      opts.modules[key] = { class: val };
    }
    const new_key = camel_case_to_snake_case(key);
    if (new_key !== key) {
      opts.modules[new_key] = opts.modules[key];
      delete opts.modules[key];
    }
  });
  if (!opts.item_types) opts.item_types = {};
  if (!opts.items) opts.items = {};
  Object.entries(opts.item_types).forEach(([key, val]) => {
    if (typeof val === "function") {
      const new_key = camel_case_to_snake_case(key);
      opts.items[new_key] = {
        class: val,
        actions: {},
        ...opts.items[new_key] || {}
      };
    }
  });
  return opts;
}

// node_modules/obsidian-smart-env/node_modules/smart-environment/utils/deep_clone_config.js
function is_plain_object2(value) {
  if (!value || typeof value !== "object") return false;
  const proto = Object.getPrototypeOf(value);
  return proto === Object.prototype || proto === null;
}
function deep_clone_config(input) {
  if (Array.isArray(input)) {
    return input.map((item) => deep_clone_config(item));
  }
  if (is_plain_object2(input)) {
    const output = {};
    for (const [k, v] of Object.entries(input)) {
      output[k] = deep_clone_config(v);
    }
    return output;
  }
  return input;
}

// node_modules/obsidian-smart-env/node_modules/smart-environment/utils/is_plain_object.js
function is_plain_object3(o) {
  if (o === null) return false;
  if (typeof o !== "object") return false;
  if (Array.isArray(o)) return false;
  if (o instanceof Function) return false;
  if (o instanceof Date) return false;
  return Object.getPrototypeOf(o) === Object.prototype;
}

// node_modules/obsidian-smart-env/node_modules/smart-environment/utils/deep_merge_no_overwrite.js
function deep_merge_no_overwrite(target, source2, path = []) {
  if (!is_plain_object3(target) || !is_plain_object3(source2)) {
    return target;
  }
  if (path.includes(source2)) {
    return target;
  }
  path.push(source2);
  for (const key of Object.keys(source2)) {
    if (!Object.prototype.hasOwnProperty.call(source2, key)) {
      continue;
    }
    const val = source2[key];
    if (Array.isArray(target[key]) && Array.isArray(val)) {
      for (const item of val) {
        if (typeof item === "function") {
          const item_name = item.name;
          const has_same_fn = target[key].some(
            (el) => typeof el === "function" && el.name === item_name
          );
          if (!has_same_fn) {
            target[key].push(item);
          }
        } else if (item === null || ["string", "number", "boolean", "undefined"].includes(typeof item)) {
          if (!target[key].includes(item)) {
            target[key].push(item);
          }
        } else {
          target[key].push(item);
        }
      }
    } else if (is_plain_object3(val)) {
      if (!is_plain_object3(target[key])) {
        target[key] = {};
      }
      deep_merge_no_overwrite(target[key], val, [...path]);
    } else if (!Object.prototype.hasOwnProperty.call(target, key)) {
      target[key] = val;
    }
  }
  return target;
}

// node_modules/obsidian-smart-env/node_modules/smart-environment/utils/merge_env_config.js
function merge_env_config(target, incoming) {
  for (const [key, value] of Object.entries(incoming)) {
    if (key === "collections" && value && typeof value === "object") {
      if (!target.collections) target.collections = {};
      for (const [col_key, col_def] of Object.entries(value)) {
        const existing_def = target.collections[col_key];
        if (!existing_def) {
          target.collections[col_key] = { ...col_def };
          continue;
        }
        const new_ver = +(col_def?.class?.version ?? 0);
        const cur_ver = +(existing_def?.class?.version ?? 0);
        if (new_ver > cur_ver) {
          const replaced = { ...col_def };
          deep_merge_no_overwrite(replaced, existing_def);
          target.collections[col_key] = replaced;
        } else {
          deep_merge_no_overwrite(existing_def, col_def);
        }
      }
      continue;
    }
    if (key === "components" && value && typeof value === "object") {
      if (!target.components) target.components = {};
      for (const [comp_key, comp_def] of Object.entries(value)) {
        if (!target.components[comp_key]) target.components[comp_key] = comp_def;
        else {
          const new_ver = +(comp_def?.version ?? 0);
          const cur_ver = +(target.components[comp_key]?.version ?? 0);
          if (new_ver > cur_ver) {
            target.components[comp_key] = comp_def;
          } else {
            deep_merge_no_overwrite(target.components[comp_key], comp_def);
          }
        }
      }
      continue;
    }
    if (Array.isArray(value)) {
      if (Array.isArray(target[key])) {
        if (value.length > 0 && (typeof value[0] === "string" || typeof value[0] === "number" || typeof value[0] === "boolean")) {
          target[key] = Array.from(/* @__PURE__ */ new Set([...target[key], ...value]));
        } else {
          target[key] = [...target[key], ...value];
        }
      } else {
        if (value.length > 0 && (typeof value[0] === "string" || typeof value[0] === "number" || typeof value[0] === "boolean")) {
          target[key] = Array.from(new Set(value));
        } else {
          target[key] = [...value];
        }
      }
    } else if (value && typeof value === "object") {
      if (!target[key]) target[key] = {};
      deep_merge_no_overwrite(target[key], value);
    } else {
      target[key] = value;
    }
  }
  return target;
}

// node_modules/obsidian-smart-env/node_modules/smart-environment/migrations/exclusion_settings.js
function migrate_exclusion_settings_2025_08_22(settings = {}) {
  const { file_exclusions, folder_exclusions, excluded_headings } = settings;
  if (file_exclusions !== void 0 || folder_exclusions !== void 0 || excluded_headings !== void 0) {
    settings.smart_sources = settings.smart_sources || {};
    if (file_exclusions !== void 0) {
      if (file_exclusions.length && file_exclusions !== "Untitled" && (!settings.smart_sources?.file_exclusions?.length || settings.smart_sources?.file_exclusions === "Untitled")) {
        settings.smart_sources.file_exclusions = file_exclusions;
      }
    }
    if (folder_exclusions !== void 0) {
      if (folder_exclusions.length && !settings.smart_sources.folder_exclusions?.length) {
        settings.smart_sources.folder_exclusions = folder_exclusions;
      }
    }
    if (excluded_headings !== void 0) {
      if (excluded_headings.length && !settings.smart_sources.excluded_headings?.length) {
        settings.smart_sources.excluded_headings = excluded_headings;
      }
    }
  }
  delete settings.file_exclusions;
  delete settings.folder_exclusions;
  delete settings.excluded_headings;
  return settings;
}

// node_modules/obsidian-smart-env/node_modules/smart-environment/smart_env.js
var ROOT_SCOPE = typeof globalThis !== "undefined" ? globalThis : Function("return this")();
var SmartEnv = class {
  /**
   * @type {number} version - Bump this number when shipping a new version of SmartEnv.
   * If a newer version is loaded into a runtime that already has an older environment,
   * an automatic reload of all existing mains will occur.
   */
  static version = 2.139272;
  scope_name = "smart_env";
  static global_ref = ROOT_SCOPE;
  global_ref = this.constructor.global_ref;
  constructor(opts = {}) {
    this.state = "init";
    this._components = {};
    this.collections = {};
    this.load_timeout = null;
    this._collections_version_signature = null;
    if (opts.primary_main_key) this.primary_main_key = opts.primary_main_key;
  }
  // ========================================================================
  // ──  CONFIG (now version-aware)                                          ──
  // ========================================================================
  /**
   * Builds or returns the cached configuration object.
   * The cache is invalidated automatically whenever the “version signature”
   * of any collection class changes (controlled by its static `version`).
   *
   * @returns {Object} the merged, up-to-date environment config
   */
  get config() {
    const signature = this.compute_collections_version_signature();
    if (this._config && signature === this._collections_version_signature) {
      return this._config;
    }
    this._collections_version_signature = signature;
    this._config = {};
    const sorted_configs = Object.entries(this.smart_env_configs).sort(([main_key]) => {
      if (!this.primary_main_key) return 0;
      return main_key === this.primary_main_key ? -1 : 0;
    });
    for (const [key, rec] of sorted_configs) {
      if (!rec?.main) {
        console.warn(`SmartEnv: '${key}' unloaded, skipping`);
        delete this.smart_env_configs[key];
        continue;
      }
      if (!rec?.opts) {
        console.warn(`SmartEnv: '${key}' opts missing, skipping`);
        continue;
      }
      merge_env_config(
        this._config,
        deep_clone_config(normalize_opts(rec.opts))
      );
    }
    return this._config;
  }
  /**
   * Produces a deterministic string representing the current versions of every
   * collection class across all mains.  When any collection ships a higher
   * `static version`, the signature changes – automatically invalidating the
   * cached `config`.
   *
   * @returns {string} pipe-delimited version signature
   */
  compute_collections_version_signature() {
    const list = [];
    for (const rec of Object.values(this.smart_env_configs)) {
      const { opts } = rec || {};
      if (!opts) continue;
      for (const [collection_key, def] of Object.entries(opts.collections || {})) {
        const cls = def?.class;
        const v = typeof cls?.version === "number" ? cls.version : 0;
        list.push(`${collection_key}:${v}`);
      }
    }
    return list.sort().join("|");
  }
  // ========================================================================
  // ──  GLOBAL HELPERS / STATIC API                                         ──
  // ========================================================================
  get env_start_wait_time() {
    if (typeof this.config.env_start_wait_time === "number") return this.config.env_start_wait_time;
    return 5e3;
  }
  static get global_env() {
    return this.global_ref.smart_env;
  }
  static set global_env(env) {
    this.global_ref.smart_env = env;
  }
  static get mains() {
    return Object.keys(this.global_ref.smart_env_configs || {});
  }
  get mains() {
    return Object.keys(this.global_ref.smart_env_configs || {});
  }
  static get should_reload() {
    if (!this.global_env) return true;
    if (this.global_env.state === "loaded") return true;
    if (typeof this.global_env?.constructor?.version === "undefined") return true;
    if (this.global_env.constructor.version < this.version) {
      console.warn(
        "SmartEnv: Reloading environment because of version mismatch",
        `${this.version} > ${this.global_env.constructor.version}`
      );
      return true;
    }
    return false;
  }
  static get smart_env_configs() {
    if (!this.global_ref.smart_env_configs) this.global_ref.smart_env_configs = {};
    return this.global_ref.smart_env_configs;
  }
  get smart_env_configs() {
    if (!this.global_ref.smart_env_configs) this.global_ref.smart_env_configs = {};
    return this.global_ref.smart_env_configs;
  }
  /**
   * Serializes all collection data in the environment into a plain object.
   * @returns {object}
   */
  to_json() {
    return Object.fromEntries(
      Object.entries(this).filter(([, val]) => typeof val?.collection_key !== "undefined").map(([key, collection]) => [key, collection_to_plain(collection)])
    );
  }
  /**
   * Waits for either a specific main to be registered in the environment,
   * or (if `opts.main` is not specified) waits for environment collections to load.
   * @param {object} opts
   * @param {object} [opts.main] - if set, the function waits until that main is found.
   * @returns {Promise<SmartEnv>} Resolves with the environment instance
   */
  static wait_for(opts = {}) {
    return new Promise((resolve) => {
      if (opts.main) {
        const interval = setInterval(() => {
          if (this.global_env && this.global_env[opts.main]) {
            clearInterval(interval);
            resolve(this.global_env);
          }
        }, 1e3);
      } else {
        const interval = setInterval(() => {
          if (this.global_env && this.global_env.state === "loaded") {
            clearInterval(interval);
            resolve(this.global_env);
          }
        }, 100);
      }
    });
  }
  /**
   * Creates or updates a SmartEnv instance.
   * - If a global environment exists and is an older version or lacks 'init_main', it is replaced.
   * @param {Object} main - The main object to be added to the SmartEnv instance.
   * @param {Object} [main_env_opts={}] - Options for configuring the SmartEnv instance.
   * @returns {SmartEnv} The SmartEnv instance.
   * @throws {TypeError} If an invalid main object is provided.
   * @throws {Error} If there's an error creating or updating the SmartEnv instance.
   */
  static async create(main, main_env_opts = null) {
    if (!main || typeof main !== "object") {
      throw new TypeError("SmartEnv: Invalid main object provided");
    }
    if (!main_env_opts) {
      if (!main.smart_env_config) {
        throw new Error("SmartEnv: No main_env_opts or main.smart_env_config provided");
      }
      main_env_opts = main.smart_env_config;
    }
    this.add_main(main, main_env_opts);
    if (this.should_reload) {
      const opts = {};
      if (this.global_env && this.version > (this.global_env.constructor?.version || 0)) {
        opts.primary_main_key = camel_case_to_snake_case(main.constructor.name);
      }
      if (this.global_env?.load_timeout) clearTimeout(this.global_env.load_timeout);
      this.global_env = new this(opts);
      const g = this.global_ref;
      if (!g.all_envs) g.all_envs = [];
      g.all_envs.push(this.global_env);
    }
    clearTimeout(this.global_env.load_timeout);
    this.global_env.load_timeout = setTimeout(async () => {
      await this.global_env.load();
      this.global_env.load_timeout = null;
    }, this.global_env.env_start_wait_time);
    return this.global_env;
  }
  static add_main(main, main_env_opts = null) {
    if (this.global_env) {
      this.global_env._config = null;
      this.global_env._collections_version_signature = null;
    }
    if (!main_env_opts) main_env_opts = main.smart_env_config;
    const main_key = camel_case_to_snake_case(main.constructor.name);
    this.smart_env_configs[main_key] = { main, opts: main_env_opts };
    this.create_env_getter(main);
  }
  /**
   * Creates a dynamic environment getter on any instance object.
   * The returned 'env' property will yield the global `smart_env`.
   * @param {Object} instance_to_receive_getter
   */
  static create_env_getter(instance_to_receive_getter) {
    Object.defineProperty(instance_to_receive_getter, "env", {
      configurable: true,
      get: () => this.global_env
    });
  }
  create_env_getter(instance_to_receive_getter) {
    this.constructor.create_env_getter(instance_to_receive_getter);
  }
  async load() {
    this.state = "loading";
    await this.fs.load_files();
    if (!this.settings) await SmartSettings.create(this);
    if (this.config.default_settings) {
      deep_merge_no_overwrite(this.settings, this.config.default_settings);
    }
    migrate_exclusion_settings_2025_08_22(this.settings);
    this.smart_settings.save();
    await this.init_collections();
    for (const [main_key, { main, opts }] of Object.entries(this.smart_env_configs)) {
      this[main_key] = main;
    }
    await this.ready_to_load_collections();
    await this.load_collections();
    this.state = "loaded";
  }
  /**
   * Initializes collection classes if they have an 'init' function.
   * @param {Object} [config=this.config]
  */
  async init_collections(config = this.config) {
    for (const key of Object.keys(config.collections || {})) {
      const _class = config.collections[key]?.class;
      if (!_class) continue;
      if (_class.default_settings) {
        deep_merge_no_overwrite(
          this.settings,
          {
            [key]: _class.default_settings
          }
        );
      }
      if (typeof _class.init !== "function") continue;
      await _class.init(this, { ...config.collections[key] });
      this.collections[key] = "init";
    }
  }
  /**
   * Hook/Override this method to wait for any conditions before loading collections. 
   * @param {Object} main
   */
  async ready_to_load_collections() {
  }
  /**
   * Loads any available collections, processing their load queues.
   * @param {Object} [collections=this.collections] - Key-value map of collection instances.
   */
  async load_collections(collections = this.collections) {
    for (const key of Object.keys(collections || {})) {
      const time_start = Date.now();
      if (typeof this[key]?.process_load_queue === "function") {
        await this[key].process_load_queue();
        this[key].load_time_ms = Date.now() - time_start;
        this.collections[key] = "loaded";
        console.log(`Loaded ${this[key].collection_key} in ${this[key].load_time_ms}ms`);
      }
    }
  }
  /**
   * Removes a main from the global.smart_env_configs to exclude it on reload
   * @param {Class} main
   * @param {Object|null} [unload_config=null]
   */
  static unload_main(main) {
    const main_key = camel_case_to_snake_case(main.constructor.name);
    this.smart_env_configs[main_key] = null;
    delete this.smart_env_configs[main_key];
  }
  unload_main(main) {
    this.constructor.unload_main(main);
  }
  /**
   * Triggers a save event in all known collections.
   */
  save() {
    for (const key of Object.keys(this.collections)) {
      this[key].process_save_queue?.();
    }
  }
  /**
   * Initialize a module from the configured `this.opts.modules`.
   * @param {string} module_key
   * @param {object} opts
   * @returns {object|null} instance of the requested module or null if not found
   */
  init_module(module_key, opts = {}) {
    const module_config = this.opts.modules[module_key];
    if (!module_config) {
      return console.warn(`SmartEnv: module ${module_key} not found`);
    }
    opts = {
      ...{ ...module_config, class: null },
      ...opts
    };
    return new module_config.class(opts);
  }
  get notices() {
    if (!this._notices) {
      const SmartNoticesClass = this.config.modules.smart_notices.class;
      this._notices = new SmartNoticesClass(this, {
        adapter: this.config.modules.smart_notices.adapter
      });
    }
    return this._notices;
  }
  /**
   * Exposes a settings template function from environment opts or defaults.
   * @returns {Function}
   */
  get settings_template() {
    return this.opts.components?.smart_env?.settings || render;
  }
  /**
   * Renders settings UI into a container, using the environment's `settings_template`.
   * @param {HTMLElement} [container=this.settings_container]
   */
  async render_settings(container = this.settings_container) {
    if (!this.settings_container || container !== this.settings_container) {
      this.settings_container = container;
    }
    if (!container) {
      throw new Error("Container is required");
    }
    const frag = await this.render_component("settings", this, {});
    this.smart_view.empty(container);
    container.appendChild(frag);
    return frag;
  }
  /**
   * Renders a named component using an optional scope and options.
   * @param {string} component_key
   * @param {Object} scope
   * @param {Object} [opts]
   * @returns {Promise<HTMLElement>}
   */
  async render_component(component_key, scope, opts = {}) {
    const component_renderer = this.get_component(component_key, scope);
    if (!component_renderer) {
      console.warn(`SmartEnv: component ${component_key} not found for scope ${scope.constructor.name}`);
      return this.smart_view.create_doc_fragment(`<div class="smart-env-component-not-found">
        <h1>Component Not Found</h1>
        <p>The component ${component_key} was not found for scope ${scope.constructor.name}.</p>
      </div>`);
    }
    const frag = await component_renderer(scope, opts);
    return frag;
  }
  /**
   * Retrieves or creates a memoized component renderer function.
   * @param {string} component_key
   * @param {Object} scope
   * @returns {Function|undefined}
   */
  get_component(component_key, scope) {
    const scope_name = scope.collection_key ?? scope.scope_name;
    const _cache_key = scope_name ? `${scope_name}-${component_key}` : component_key;
    if (!this._components[_cache_key]) {
      try {
        if (this.opts.components[scope_name]?.[component_key]) {
          this._components[_cache_key] = this.opts.components[scope_name][component_key].bind(
            this.init_module("smart_view")
          );
        } else if (this.opts.components[component_key]) {
          this._components[_cache_key] = this.opts.components[component_key].bind(
            this.init_module("smart_view")
          );
        } else {
          console.warn(
            `SmartEnv: component ${component_key} not found for scope ${scope_name}`
          );
        }
      } catch (e) {
        console.error("Error getting component", e);
        console.log(
          `scope_name: ${scope_name}; component_key: ${component_key}; this.opts.components: ${Object.keys(
            this.opts.components || {}
          ).join(", ")}; this.opts.components[scope_name]: ${Object.keys(
            this.opts.components[scope_name] || {}
          ).join(", ")}`
        );
      }
    }
    return this._components[_cache_key];
  }
  /**
   * Lazily instantiate the module 'smart_view'.
   * @returns {object}
   */
  get smart_view() {
    if (!this._smart_view) {
      this._smart_view = this.init_module("smart_view");
    }
    return this._smart_view;
  }
  /**
   * A built-in settings schema for this environment.
   * @returns {Object}
   */
  get settings_config() {
    return {
      is_obsidian_vault: {
        name: "Obsidian Vault",
        description: "Toggle on if this is an Obsidian vault.",
        type: "toggle",
        default: false
      }
    };
  }
  get global_prop() {
    return this.opts.global_prop ?? "smart_env";
  }
  get item_types() {
    return this.opts.item_types;
  }
  get fs_module_config() {
    return this.opts.modules.smart_fs;
  }
  get fs() {
    if (!this.smart_fs) {
      this.smart_fs = new this.fs_module_config.class(this, {
        adapter: this.fs_module_config.adapter,
        fs_path: this.opts.env_path || ""
      });
    }
    return this.smart_fs;
  }
  get env_data_dir() {
    const env_settings_files = this.fs.file_paths?.filter((path) => path.endsWith("smart_env.json")) || [];
    let env_data_dir = ".smart-env";
    if (env_settings_files.length > 0) {
      if (env_settings_files.length > 1) {
        const env_data_dir_counts = env_settings_files.map((path) => {
          const dir = path.split("/").slice(-2, -1)[0];
          return {
            dir,
            count: this.fs.file_paths.filter((p) => p.includes(dir)).length
          };
        });
        env_data_dir = env_data_dir_counts.reduce(
          (max, dirObj) => dirObj.count > max.count ? dirObj : max,
          env_data_dir_counts[0]
        ).dir;
      } else {
        env_data_dir = env_settings_files[0].split("/").slice(-2, -1)[0];
      }
    }
    return env_data_dir;
  }
  get data_fs() {
    if (!this._fs) {
      this._fs = new this.fs_module_config.class(this, {
        adapter: this.fs_module_config.adapter,
        fs_path: this.data_fs_path
      });
    }
    return this._fs;
  }
  get data_fs_path() {
    if (!this._data_fs_path) {
      this._data_fs_path = (this.opts.env_path + (this.opts.env_path ? this.opts.env_path.includes("\\") ? "\\" : "/" : "") + this.env_data_dir).replace(/\\\\/g, "\\").replace(/\/\//g, "/");
    }
    return this._data_fs_path;
  }
  /**
   * Saves the current settings to the file system.
   * @param {Object|null} [settings=null] - Optional settings to override the current settings before saving.
   * @returns {Promise<void>}
   */
  async save_settings(settings) {
    this._saved = false;
    if (!await this.data_fs.exists("")) {
      await this.data_fs.mkdir("");
    }
    await this.data_fs.write("smart_env.json", JSON.stringify(settings, null, 2));
    this._saved = true;
  }
  /**
   * Loads settings from the file system, merging with any `default_settings` or `smart_env_settings`.
   * @returns {Promise<Object>} the loaded settings
   */
  async load_settings() {
    if (!await this.data_fs.exists("smart_env.json")) await this.save_settings({});
    let settings = JSON.parse(JSON.stringify(this.config.default_settings || {}));
    deep_merge(settings, JSON.parse(await this.data_fs.read("smart_env.json")));
    deep_merge(settings, this.opts?.smart_env_settings || {});
    this._saved = true;
    if (this.fs.auto_excluded_files) {
      const existing_file_exclusions = settings.smart_sources.file_exclusions.split(",").map((s) => s.trim()).filter(Boolean);
      settings.smart_sources.file_exclusions = [...existing_file_exclusions, ...this.fs.auto_excluded_files].filter((value, index, self) => self.indexOf(value) === index).join(",");
    }
    return settings;
  }
  /**
   * Refreshes file-system state if exclusions changed,
   * then re-renders relevant settings UI
   */
  async update_exclusions() {
    this.smart_sources._fs = null;
    await this.smart_sources.init_fs();
  }
  // DEPRECATED
  /** @deprecated access `this.state` and `collection.state` directly instead */
  get collections_loaded() {
    return this.state === "loaded";
  }
  /** @deprecated Use this['main_class_name'] instead of this.main/this.plugin */
  get main() {
    return this.smart_env_configs[this.mains[0]]?.main;
  }
  /**
   * @deprecated use component pattern instead
   */
  get ejs() {
    return this.opts.ejs;
  }
  /**
   * @deprecated use component pattern instead
   */
  get templates() {
    return this.opts.templates;
  }
  /**
   * @deprecated use component pattern instead
   */
  get views() {
    return this.opts.views;
  }
  /**
   * @deprecated use this.config instead
   */
  get opts() {
    return this.config;
  }
  /**
   * @deprecated Use this.main_class_name instead of this.plugin
   */
  get plugin() {
    return this.main;
  }
};
function collection_to_plain(collection) {
  return {
    items: Object.fromEntries(
      Object.entries(collection.items || {}).map(([key, item]) => [key, item.data])
    )
  };
}

// node_modules/obsidian-smart-env/node_modules/smart-file-system/utils/glob_to_regex.js
function create_regex(pattern, { case_sensitive, extended_glob, windows_paths }) {
  const regex_pattern = glob_to_regex_pattern(pattern, extended_glob);
  const adjusted_pattern = adjust_for_windows_paths(regex_pattern, windows_paths);
  const flags = case_sensitive ? "" : "i";
  return new RegExp(`^${adjusted_pattern}$`, flags);
}
function adjust_for_windows_paths(pattern, windows_paths) {
  return windows_paths ? pattern.replace(/\\\//g, "[\\\\/]").replace(/\\\\\\/g, "[\\\\/]") : pattern;
}
function glob_to_regex_pattern(pattern, extended_glob) {
  let in_class = false;
  let in_brace = 0;
  let result = "";
  for (let i = 0; i < pattern.length; i++) {
    const char = pattern[i];
    switch (char) {
      case "\\":
        if (i + 1 < pattern.length) {
          result += `\\${pattern[i + 1]}`;
          i++;
        } else {
          result += "\\\\";
        }
        break;
      case "/":
        result += "\\/";
        break;
      case "[":
        if (!in_class) {
          const closingIndex = pattern.indexOf("]", i + 1);
          if (closingIndex === -1) {
            result += "\\[";
          } else {
            in_class = true;
            if (pattern[i + 1] === "!") {
              result += "[^";
              i++;
            } else {
              result += "[";
            }
          }
        } else {
          result += "\\[";
        }
        break;
      case "]":
        if (in_class) {
          in_class = false;
          result += "]";
        } else {
          result += "\\]";
        }
        break;
      case "{":
        if (!in_class) {
          const closingIndex = pattern.indexOf("}", i + 1);
          if (closingIndex === -1) {
            result += "\\{";
          } else {
            in_brace++;
            result += "(";
          }
        } else {
          result += "\\{";
        }
        break;
      case "}":
        if (!in_class && in_brace > 0) {
          in_brace--;
          result += ")";
        } else {
          result += "\\}";
        }
        break;
      case ",":
        if (!in_class && in_brace > 0) {
          result += "|";
        } else {
          result += ",";
        }
        break;
      case "*":
        if (!in_class) {
          if (i + 1 < pattern.length && pattern[i + 1] === "*") {
            result += ".*";
            i++;
          } else {
            result += "[^/]*";
          }
        } else {
          result += "\\*";
        }
        break;
      case "?":
        if (!in_class) {
          result += "[^/]";
        } else {
          result += "\\?";
        }
        break;
      // We escape these to ensure they remain literal
      case "(":
      case ")":
      case "+":
      case "|":
      case "^":
      case "$":
      case ".":
        result += `\\${char}`;
        break;
      default:
        result += char;
        break;
    }
  }
  if (in_class) {
    result += "]";
    in_class = false;
  }
  if (extended_glob) {
    result = result.replace(/\\\+\\\((.*?)\\\)/g, "($1)+").replace(/\\\@\\\((.*?)\\\)/g, "($1)").replace(/\\\!\\\((.*?)\\\)/g, "(?!$1).*").replace(/\\\?\\\((.*?)\\\)/g, "($1)?").replace(/\\\*\\\((.*?)\\\)/g, "($1)*");
  }
  return result;
}
function glob_to_regex(pattern, options = {}) {
  const default_options = {
    case_sensitive: true,
    extended_glob: false,
    windows_paths: false
  };
  const merged_options = { ...default_options, ...options };
  if (pattern === "") {
    return /^$/;
  }
  if (pattern === "*" && !merged_options.windows_paths) {
    return /^[^/]+$/;
  }
  if (pattern === "**" && !merged_options.windows_paths) {
    return /^.+$/;
  }
  return create_regex(pattern, merged_options);
}

// node_modules/obsidian-smart-env/node_modules/smart-file-system/utils/fuzzy_search.js
function fuzzy_search(arr, search_term) {
  let matches = [];
  for (let i = 0; i < arr.length; i++) {
    const search_chars = search_term.toLowerCase().split("");
    let match = true;
    let distance = 0;
    const name = arr[i];
    const label_name = name.toLowerCase();
    for (let j = 0; j < search_chars.length; j++) {
      const search_index = label_name.substring(distance).indexOf(search_chars[j]);
      if (search_index >= 0) {
        distance += search_index + 1;
      } else {
        match = false;
        break;
      }
    }
    if (match) matches.push({ name, distance });
  }
  matches.sort((a, b) => a.distance - b.distance);
  return matches.map((match) => match.name);
}

// node_modules/obsidian-smart-env/node_modules/smart-file-system/smart_fs.js
var SmartFs = class {
  /**
   * Create a new SmartFs instance
   * 
   * @param {Object} env - The Smart Environment instance
   * @param {Object} [opts={}] - Optional configuration
   * @param {string} [opts.fs_path] - Custom environment path
   */
  constructor(env, opts = {}) {
    this.env = env;
    this.opts = opts;
    this.fs_path = opts.fs_path || opts.env_path || "";
    if (!opts.adapter) throw new Error("SmartFs requires an adapter");
    this.adapter = new opts.adapter(this);
    this.excluded_patterns = [];
    if (Array.isArray(opts.exclude_patterns)) {
      opts.exclude_patterns.forEach((pattern) => this.add_ignore_pattern(pattern));
    }
    this.folders = {};
    this.files = {};
    this.file_paths = [];
    this.folder_paths = [];
    this.auto_excluded_files = [];
  }
  async refresh() {
    this.files = {};
    this.file_paths = [];
    this.folders = {};
    this.folder_paths = [];
    await this.init();
  }
  async init() {
    await this.load_exclusions();
    await this.load_files();
  }
  async load_files() {
    const all = await this.list_recursive();
    this.file_paths = [];
    this.folder_paths = [];
    all.forEach((file) => {
      if (file.type === "file") {
        this.files[file.path] = file;
        this.file_paths.push(file.path);
      } else if (file.type === "folder") {
        this.folders[file.path] = file;
        this.folder_paths.push(file.path);
      }
    });
  }
  include_file(file_path) {
    const file = this.adapter.get_file(file_path);
    this.files[file.path] = file;
    this.file_paths.push(file.path);
    return file;
  }
  /**
   * Load .gitignore patterns
   * 
   * @returns {Promise<RegExp[]>} Array of RegExp patterns
   */
  async load_exclusions() {
    const gitignore_path = ".gitignore";
    const gitignore_exists = await this.adapter.exists(gitignore_path);
    if (gitignore_exists && !this.env.settings.skip_excluding_gitignore) {
      const gitignore_content = await this.adapter.read(gitignore_path, "utf-8");
      gitignore_content.split("\n").filter((line) => !line.startsWith("#")).filter(Boolean).forEach((pattern) => this.add_ignore_pattern(pattern));
    }
    this.add_ignore_pattern(".**");
    this.add_ignore_pattern("**/.**");
    this.add_ignore_pattern("**/.*/**");
    this.add_ignore_pattern("**/*.ajson");
  }
  /**
   * Add a new ignore pattern
   * 
   * @param {string} pattern - The pattern to add
   */
  add_ignore_pattern(pattern, opts = {}) {
    this.excluded_patterns.push(glob_to_regex(pattern.trim(), opts));
  }
  /**
   * Check if a path is ignored based on gitignore patterns
   * 
   * @param {string} _path - The path to check
   * @returns {boolean} True if the path is ignored, false otherwise
   */
  is_excluded(_path) {
    try {
      if (_path.includes("#")) return true;
      if (!this.excluded_patterns.length) return false;
      return this.excluded_patterns.some((pattern) => pattern.test(_path));
    } catch (e) {
      console.error(`Error checking if path is excluded: ${e.message}`);
      console.error(`Path: `, _path);
      throw e;
    }
  }
  /**
   * Check if any path in an array of paths is excluded
   * 
   * @param {string[]} paths - Array of paths to check
   * @returns {boolean} True if any path is excluded, false otherwise
   */
  has_excluded_patterns(paths) {
    return paths.some((p) => this.is_excluded(p));
  }
  /**
   * Pre-process an array of paths, throwing an error if any path is excluded
   * 
   * @param {string[]} paths - Array of paths to pre-process
   * @throws {Error} If any path in the array is excluded
   * @returns {string[]} The array of paths
   */
  pre_process(paths) {
    if (this.has_excluded_patterns(paths)) {
      throw new Error(`Path is excluded: ${paths.find((p) => this.is_excluded(p))}`);
    }
    return paths;
  }
  /**
   * Post-process the result of an operation
   * 
   * @param {any} returned_value - The value returned by the operation
   * @returns {any} The post-processed value
   */
  post_process(returned_value) {
    if (this.adapter.post_process) return this.adapter.post_process(returned_value);
    if (Array.isArray(returned_value)) {
      returned_value = returned_value.filter((r) => {
        if (typeof r === "string") return !this.is_excluded(r);
        if (typeof r === "object" && r.path) return !this.is_excluded(r.path);
        return true;
      });
    }
    return returned_value;
  }
  // v2
  /**
   * Use the adapter for a method
   * runs pre_process and post_process (checks exclusions)
   * @param {string} method - The method to use
   * @param {string[]} paths - The paths to use
   * @param {...any} args - Additional arguments for the method
   * @returns {Promise<any>} The result of the method
   */
  async use_adapter(method, paths, ...args) {
    if (!this.adapter[method]) throw new Error(`Method ${method} not found in adapter`);
    paths = this.pre_process(paths ?? []);
    let resp = await this.adapter[method](...paths, ...args);
    return this.post_process(resp);
  }
  use_adapter_sync(method, paths, ...args) {
    if (!this.adapter[method]) throw new Error(`Method ${method} not found in adapter`);
    paths = this.pre_process(paths ?? []);
    let resp = this.adapter[method](...paths, ...args);
    return this.post_process(resp);
  }
  /**
   * Append content to a file
   * 
   * @param {string} rel_path - The relative path of the file to append to
   * @param {string|Buffer} content - The content to append
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async append(rel_path, content) {
    return await this.use_adapter("append", [rel_path], content);
  }
  /**
   * Create a new directory
   * 
   * @param {string} rel_path - The relative path of the directory to create
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async mkdir(rel_path, opts = { recursive: true }) {
    return await this.use_adapter("mkdir", [rel_path], opts);
  }
  /**
   * Check if a file or directory exists
   * 
   * @param {string} rel_path - The relative path to check
   * @returns {Promise<boolean>} True if the path exists, false otherwise
   */
  async exists(rel_path) {
    return await this.use_adapter("exists", [rel_path]);
  }
  exists_sync(rel_path) {
    return this.use_adapter_sync("exists_sync", [rel_path]);
  }
  /**
   * List files in a directory
   * 
   * @param {string} rel_path - The relative path to list
   * @returns {Promise<string[]>} Array of file paths
   */
  async list(rel_path = "/") {
    return await this.use_adapter("list", [rel_path]);
  }
  async list_recursive(rel_path = "/") {
    return await this.use_adapter("list_recursive", [rel_path]);
  }
  async list_files(rel_path = "/") {
    return await this.use_adapter("list_files", [rel_path]);
  }
  async list_files_recursive(rel_path = "/") {
    return await this.use_adapter("list_files_recursive", [rel_path]);
  }
  async list_folders(rel_path = "/") {
    return await this.use_adapter("list_folders", [rel_path]);
  }
  async list_folders_recursive(rel_path = "/") {
    return await this.use_adapter("list_folders_recursive", [rel_path]);
  }
  /**
   * Read the contents of a file
   * 
   * @param {string} rel_path - The relative path of the file to read
   * @returns {Promise<string|Buffer>} The contents of the file
   */
  async read(rel_path, encoding = "utf-8") {
    try {
      const content = await this.adapter.read(rel_path, encoding);
      return content;
    } catch (error) {
      console.warn("Error during read: " + error.message, rel_path);
      if (error.code === "ENOENT") return null;
      return { error: error.message };
    }
  }
  /**
   * Remove a file
   * 
   * @param {string} rel_path - The relative path of the file to remove
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async remove(rel_path) {
    return await this.use_adapter("remove", [rel_path]);
  }
  /**
   * Remove a directory
   * 
   * @param {string} rel_path - The relative path of the directory to remove
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async remove_dir(rel_path, recursive = false) {
    return await this.use_adapter("remove_dir", [rel_path], recursive);
  }
  /**
   * Rename a file or directory
   * 
   * @param {string} rel_path - The current relative path
   * @param {string} new_rel_path - The new relative path
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async rename(rel_path, new_rel_path) {
    await this.use_adapter("rename", [rel_path, new_rel_path]);
    await this.refresh();
  }
  /**
   * Get file or directory statistics
   * 
   * @param {string} rel_path - The relative path to get statistics for
   * @returns {Promise<Object>} An object containing file or directory statistics
   */
  async stat(rel_path) {
    return await this.use_adapter("stat", [rel_path]);
  }
  /**
   * Write content to a file
   * Should handle when target path is within a folder that doesn't exist
   * 
   * @param {string} rel_path - The relative path of the file to write to
   * @param {string|Buffer} content - The content to write
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async write(rel_path, content) {
    try {
      await this.adapter.write(rel_path, content);
    } catch (error) {
      console.error("Error during write:", error);
      throw error;
    }
  }
  // // aliases
  // async create(rel_path, content) { return await this.use_adapter('write', [rel_path], content); }
  // async update(rel_path, content) { return await this.use_adapter('write', [rel_path], content); }
  get_link_target_path(link_target, source_path) {
    if (this.adapter.get_link_target_path) return this.adapter.get_link_target_path(link_target, source_path);
    if (!this.file_paths) return console.warn("get_link_target_path: file_paths not found");
    const matching_file_paths = this.file_paths.filter((path) => path.includes(link_target));
    return fuzzy_search(matching_file_paths, link_target)[0];
  }
  get sep() {
    return this.adapter.sep || "/";
  }
  get_full_path(rel_path = "") {
    return this.adapter.get_full_path(rel_path);
  }
  get base_path() {
    return this.adapter.get_base_path();
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-file-system/adapters/obsidian.js
var obsidian = __toESM(require("obsidian"), 1);
var SmartFsObsidianAdapter = class {
  /**
   * Create an SmartFsObsidianAdapter instance
   * 
   * @param {Object} smart_fs - The SmartFs instance
   */
  constructor(smart_fs) {
    this.smart_fs = smart_fs;
    this.obsidian = obsidian;
    this.obsidian_app = smart_fs.env.main.app;
    this.obsidian_adapter = smart_fs.env.main.app.vault.adapter;
  }
  get fs_path() {
    return this.smart_fs.fs_path;
  }
  get_file(file_path) {
    const file = {};
    file.path = file_path.replace(/\\/g, "/").replace(this.smart_fs.fs_path, "").replace(/^\//, "");
    file.type = "file";
    file.extension = file.path.split(".").pop().toLowerCase();
    file.name = file.path.split("/").pop();
    file.basename = file.name.split(".").shift();
    Object.defineProperty(file, "stat", {
      get: () => {
        const tfile = this.obsidian_app.vault.getAbstractFileByPath(file_path);
        if (tfile) {
          return {
            ctime: tfile.stat.ctime,
            mtime: tfile.stat.mtime,
            size: tfile.stat.size,
            isDirectory: () => tfile instanceof this.obsidian.TFolder,
            isFile: () => tfile instanceof this.obsidian.TFile
          };
        }
        return null;
      }
    });
    return file;
  }
  /**
   * Append content to a file
   * 
   * @param {string} rel_path - The relative path of the file to append to
   * @param {string} data - The content to append
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async append(rel_path, data) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.append(rel_path, data);
  }
  /**
   * Create a new directory
   * 
   * @param {string} rel_path - The relative path of the directory to create
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async mkdir(rel_path) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.mkdir(rel_path);
  }
  /**
   * Check if a file or directory exists
   * 
   * @param {string} rel_path - The relative path to check
   * @returns {Promise<boolean>} True if the path exists, false otherwise
   */
  async exists(rel_path) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.exists(rel_path);
  }
  exists_sync(rel_path) {
    return !!this.obsidian_app.vault.getAbstractFileByPath(rel_path);
  }
  /**
   * List files in a directory (NOT up-to-date with list_recursive)
   * 
   * @param {string} rel_path - The relative path to list
   * @returns {Promise<string[]>} Array of file paths
   */
  async list(rel_path, opts = {}) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    if (rel_path.startsWith("/")) rel_path = rel_path.slice(1);
    if (rel_path.endsWith("/")) rel_path = rel_path.slice(0, -1);
    if (rel_path.includes(".")) {
      const { files: file_paths } = await this.obsidian_adapter.list(rel_path);
      const files2 = file_paths.map((file_path) => {
        if (this.smart_fs.fs_path) file_path = file_path.replace(this.smart_fs.fs_path, "").slice(1);
        const file_name = file_path.split("/").pop();
        const file = {
          basename: file_name.split(".")[0],
          extension: file_name.split(".").pop().toLowerCase(),
          name: file_name,
          path: file_path
        };
        return file;
      });
      return files2;
    }
    const files = this.obsidian_app.vault.getAllLoadedFiles().filter((file) => {
      const last_slash = file.path.lastIndexOf("/");
      if (last_slash === -1 && rel_path !== "") return false;
      const folder_path = file.path.slice(0, last_slash);
      if (folder_path !== rel_path) return false;
      return true;
    });
    return files;
  }
  // NOTE: currently does not handle hidden files and folders
  async list_recursive(rel_path, opts = {}) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    if (rel_path.startsWith("/")) rel_path = rel_path.slice(1);
    if (rel_path.endsWith("/")) rel_path = rel_path.slice(0, -1);
    const files = this.obsidian_app.vault.getAllLoadedFiles().filter((file) => {
      if (file.path.length > 200) {
        this.smart_fs.auto_excluded_files.push(file.path);
        return false;
      }
      if (rel_path !== "" && !file.path.startsWith(rel_path)) return false;
      if (file instanceof this.obsidian.TFile) {
        if (opts.type === "folder") return false;
        file.type = "file";
      } else if (file instanceof this.obsidian.TFolder) {
        if (opts.type === "file") return false;
        delete file.basename;
        delete file.extension;
        file.type = "folder";
      }
      if (this.smart_fs.fs_path) file.path = file.path.replace(this.smart_fs.fs_path, "").slice(1);
      return true;
    });
    return files;
  }
  async list_files(rel_path) {
    return await this.list(rel_path, { type: "file" });
  }
  async list_files_recursive(rel_path) {
    return await this.list_recursive(rel_path, { type: "file" });
  }
  async list_folders(rel_path) {
    return await this.list(rel_path, { type: "folder" });
  }
  async list_folders_recursive(rel_path) {
    return await this.list_recursive(rel_path, { type: "folder" });
  }
  /**
   * Read the contents of a file
   * 
   * @param {string} rel_path - The relative path of the file to read
   * @returns {Promise<string>} The contents of the file
   */
  async read(rel_path, encoding, opts = {}) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    if (encoding === "utf-8") {
      if (!opts.no_cache) {
        const tfile = this.obsidian_app.vault.getFileByPath(rel_path);
        if (tfile) return await this.obsidian_app.vault.cachedRead(tfile);
      }
      return await this.obsidian_adapter.read(rel_path);
    }
    if (encoding === "base64") {
      const array_buffer2 = await this.obsidian_adapter.readBinary(rel_path, "base64");
      const base642 = this.obsidian.arrayBufferToBase64(array_buffer2);
      return base642;
    }
    const array_buffer = await this.obsidian_adapter.readBinary(rel_path);
    return array_buffer;
  }
  /**
   * Rename a file or directory
   * 
   * @param {string} old_path - The current path of the file or directory
   * @param {string} new_path - The new path for the file or directory
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async rename(old_path, new_path) {
    if (!old_path.startsWith(this.fs_path)) old_path = this.fs_path + "/" + old_path;
    if (!new_path.startsWith(this.fs_path)) new_path = this.fs_path + "/" + new_path;
    return await this.obsidian_adapter.rename(old_path, new_path);
  }
  /**
   * Remove a file
   * 
   * @param {string} rel_path - The relative path of the file to remove
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async remove(rel_path) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    try {
      return await this.obsidian_adapter.remove(rel_path);
    } catch (error) {
      console.warn(`Error removing file: ${rel_path}`, error);
    }
  }
  /**
   * Remove a directory
   * 
   * @param {string} rel_path - The relative path of the directory to remove
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async remove_dir(rel_path, recursive = false) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.rmdir(rel_path, recursive);
  }
  /**
   * Get file or directory information
   * 
   * @param {string} rel_path - The relative path of the file or directory
   * @returns {Promise<Object>} An object containing file or directory information
   */
  async stat(rel_path) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.stat(rel_path);
  }
  /**
   * Write content to a file
   * 
   * @param {string} rel_path - The relative path of the file to write to
   * @param {string} data - The content to write
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async write(rel_path, data) {
    if (!data) data = "";
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    const folder_path = rel_path.split("/").slice(0, -1).join("/");
    if (!await this.exists(folder_path)) {
      await this.mkdir(folder_path);
      console.log(`Created folder: ${folder_path}`);
    }
    return await this.obsidian_adapter.write(rel_path, data);
  }
  get_link_target_path(link_path, file_path) {
    return this.obsidian_app.metadataCache.getFirstLinkpathDest(link_path, file_path)?.path;
  }
  get_base_path() {
    return this.obsidian_adapter.basePath;
  }
  get_full_path(rel_path = "") {
    const sep = rel_path.includes("/") ? "/" : "\\";
    return this.get_base_path() + sep + rel_path;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-view/utils/empty.js
function empty(elm) {
  const range = document.createRange();
  range.selectNodeContents(elm);
  range.deleteContents();
}

// node_modules/obsidian-smart-env/node_modules/smart-view/utils/replace_html.js
var replace_html = /* @__PURE__ */ (() => {
  const cache = /* @__PURE__ */ new Map();
  return (container, html_snippet) => {
    const key = html_snippet.trim();
    let tpl = cache.get(key);
    if (!tpl) {
      tpl = document.createElement("template");
      tpl.innerHTML = key;
      cache.set(key, tpl);
    }
    container.replaceChildren(tpl.content.cloneNode(true));
  };
})();

// node_modules/obsidian-smart-env/node_modules/smart-view/utils/replace_with_fragment.js
var replace_with_fragment = (container, html_snippet) => {
  const range = document.createRange();
  const frag = range.createContextualFragment(html_snippet.trim());
  container.replaceChildren(frag);
};

// node_modules/obsidian-smart-env/node_modules/smart-view/utils/safe_inner_html.js
var restricted_re = /<(td|th|tr|thead|tbody|tfoot|caption|col|colgroup|option|optgroup|li|dt|dd|source|track)\b/i;
var safe_inner_html = (container, html_snippet) => {
  const trimmed = html_snippet.trim();
  (restricted_re.test(trimmed) ? replace_with_fragment : replace_html)(container, trimmed);
};

// node_modules/obsidian-smart-env/node_modules/smart-utils/escape_html.js
function escape_html(str = "") {
  return String(str).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/create_hash.js
function murmur_hash_32(input_string, seed = 0) {
  let remainder = input_string.length & 3;
  let bytes = input_string.length - remainder;
  let h1 = seed;
  let c1 = 3432918353;
  let c2 = 461845907;
  let i = 0;
  let k1 = 0;
  let chunk = 0;
  while (i < bytes) {
    chunk = input_string.charCodeAt(i) & 255 | (input_string.charCodeAt(i + 1) & 255) << 8 | (input_string.charCodeAt(i + 2) & 255) << 16 | (input_string.charCodeAt(i + 3) & 255) << 24;
    i += 4;
    k1 = chunk;
    k1 = multiply_32(k1, c1);
    k1 = rotate_left_32(k1, 15);
    k1 = multiply_32(k1, c2);
    h1 ^= k1;
    h1 = rotate_left_32(h1, 13);
    h1 = h1 * 5 + 3864292196 | 0;
  }
  k1 = 0;
  switch (remainder) {
    case 3:
      k1 ^= (input_string.charCodeAt(i + 2) & 255) << 16;
    // falls through
    case 2:
      k1 ^= (input_string.charCodeAt(i + 1) & 255) << 8;
    // falls through
    case 1:
      k1 ^= input_string.charCodeAt(i) & 255;
      k1 = multiply_32(k1, c1);
      k1 = rotate_left_32(k1, 15);
      k1 = multiply_32(k1, c2);
      h1 ^= k1;
      break;
  }
  h1 ^= input_string.length;
  h1 = fmix_32(h1);
  return h1 | 0;
}
function murmur_hash_32_alphanumeric(input_string, seed = 0) {
  const signed_hash = murmur_hash_32(input_string, seed);
  const unsigned_hash = signed_hash >>> 0;
  return unsigned_hash.toString(36);
}
function multiply_32(a, b) {
  return (a & 65535) * b + ((a >>> 16) * b << 16) | 0;
}
function rotate_left_32(value, shift) {
  return value << shift | value >>> 32 - shift;
}
function fmix_32(h) {
  h ^= h >>> 16;
  h = multiply_32(h, 2246822507);
  h ^= h >>> 13;
  h = multiply_32(h, 3266489909);
  h ^= h >>> 16;
  return h | 0;
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/cos_sim.js
function cos_sim(vector1 = [], vector2 = []) {
  if (vector1.length !== vector2.length) {
    throw new Error("Vectors must have the same length");
  }
  let dot_product = 0;
  let magnitude1 = 0;
  let magnitude2 = 0;
  const epsilon = 1e-8;
  for (let i = 0; i < vector1.length; i++) {
    dot_product += vector1[i] * vector2[i];
    magnitude1 += vector1[i] * vector1[i];
    magnitude2 += vector2[i] * vector2[i];
  }
  magnitude1 = Math.sqrt(magnitude1);
  magnitude2 = Math.sqrt(magnitude2);
  if (magnitude1 < epsilon || magnitude2 < epsilon) return 0;
  return dot_product / (magnitude1 * magnitude2);
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/get_by_path.js
function get_by_path(obj, path, scope = null) {
  if (!path) return "";
  const keys = path.split(".");
  if (scope) {
    keys.unshift(scope);
  }
  const final_key = keys.pop();
  const instance = keys.reduce((acc, key) => acc && acc[key], obj);
  if (instance && typeof instance[final_key] === "function") {
    return instance[final_key].bind(instance);
  }
  return instance ? instance[final_key] : void 0;
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/set_by_path.js
function set_by_path(obj, path, value, scope = null) {
  const keys = path.split(".");
  if (scope) {
    keys.unshift(scope);
  }
  const final_key = keys.pop();
  const target = keys.reduce((acc, key) => {
    if (!acc[key] || typeof acc[key] !== "object") {
      acc[key] = {};
    }
    return acc[key];
  }, obj);
  target[final_key] = value;
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/delete_by_path.js
function delete_by_path(obj, path, scope = null) {
  const keys = path.split(".");
  if (scope) {
    keys.unshift(scope);
  }
  const final_key = keys.pop();
  const instance = keys.reduce((acc, key) => acc && acc[key], obj);
  if (instance) {
    delete instance[final_key];
  }
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/geom.js
function compute_centroid(points) {
  if (!points || points.length === 0) {
    return null;
  }
  const n = points.length;
  const dim = points[0].length;
  const sums = new Float64Array(dim);
  for (let i = 0; i < n; i++) {
    const p = points[i];
    for (let d = 0; d < dim; d++) {
      sums[d] += p[d];
    }
  }
  for (let d = 0; d < dim; d++) {
    sums[d] /= n;
  }
  return Array.from(sums);
}
function compute_medoid(points) {
  if (!points || points.length === 0) {
    return null;
  }
  if (points.length === 1) {
    return points[0];
  }
  const n = points.length;
  const dim = points[0].length;
  const sum_of_distances = new Float64Array(n);
  for (let i = 0; i < n - 1; i++) {
    const p_i = points[i];
    for (let j = i + 1; j < n; j++) {
      const p_j = points[j];
      let dist_sq = 0;
      for (let d = 0; d < dim; d++) {
        const diff = p_i[d] - p_j[d];
        dist_sq += diff * diff;
      }
      const dist = Math.sqrt(dist_sq);
      sum_of_distances[i] += dist;
      sum_of_distances[j] += dist;
    }
  }
  let min_index = 0;
  let min_sum = sum_of_distances[0];
  for (let i = 1; i < n; i++) {
    if (sum_of_distances[i] < min_sum) {
      min_sum = sum_of_distances[i];
      min_index = i;
    }
  }
  return points[min_index];
}

// node_modules/obsidian-smart-env/node_modules/smart-view/smart_view.js
var SmartView = class {
  /**
   * @constructor
   * @param {object} opts - Additional options or overrides for rendering.
   */
  constructor(opts = {}) {
    this.opts = opts;
    this._adapter = null;
  }
  /**
   * Renders all setting components within a container.
   * @async
   * @param {HTMLElement} container - The container element.
   * @param {Object} opts - Additional options for rendering.
   * @returns {Promise<void>}
   */
  async render_setting_components(container, opts = {}) {
    const components = container.querySelectorAll(".setting-component");
    const promises = [];
    for (const component of components) {
      promises.push(this.render_setting_component(component, opts));
    }
    await Promise.all(promises);
    return container;
  }
  /**
   * Creates a document fragment from HTML string.
   * @param {string} html - The HTML string.
   * @returns {DocumentFragment}
   */
  create_doc_fragment(html) {
    return document.createRange().createContextualFragment(html);
  }
  /**
   * Gets the adapter instance used for rendering (e.g., Obsidian or Node, etc.).
   * @returns {Object} The adapter instance.
   */
  get adapter() {
    if (!this._adapter) {
      if (!this.opts.adapter) {
        throw new Error("No adapter provided to SmartView. Provide a 'smart_view.adapter' in env config.");
      }
      const AdapterClass = this.opts.adapter;
      this._adapter = new AdapterClass(this);
    }
    return this._adapter;
  }
  /**
   * Gets an icon (implemented in the adapter).
   * @param {string} icon_name - Name of the icon to get.
   * @returns {string} The icon HTML string.
   */
  get_icon_html(icon_name) {
    return this.adapter.get_icon_html(icon_name);
  }
  /**
   * Renders a single setting component (implemented in adapter).
   * @async
   * @param {HTMLElement} setting_elm - The DOM element for the setting.
   * @param {Object} opts - Additional options for rendering.
   * @returns {Promise<*>}
   */
  async render_setting_component(setting_elm, opts = {}) {
    return await this.adapter.render_setting_component(setting_elm, opts);
  }
  /**
   * Renders markdown content (implemented in adapter).
   * @param {string} markdown - The markdown content.
   * @param {object|null} scope - The scope to pass for rendering.
   * @returns {Promise<DocumentFragment>}
   */
  async render_markdown(markdown, scope = null) {
    return await this.adapter.render_markdown(markdown, scope);
  }
  /**
   * Gets a value from an object by path.
   * @param {Object} obj - The object to search in.
   * @param {string} path - The path to the value.
   * @returns {*}
   */
  get_by_path(obj, path, settings_scope = null) {
    return get_by_path(obj, path, settings_scope);
  }
  /**
   * Sets a value in an object by path.
   * @param {Object} obj - The object to modify.
   * @param {string} path - The path to set the value.
   * @param {*} value - The value to set.
   */
  set_by_path(obj, path, value, settings_scope = null) {
    set_by_path(obj, path, value, settings_scope);
  }
  /**
   * Deletes a value from an object by path.
   * @param {Object} obj - The object to modify.
   * @param {string} path - The path to delete.
   */
  delete_by_path(obj, path, settings_scope = null) {
    delete_by_path(obj, path, settings_scope);
  }
  /**
   * Escapes HTML special characters in a string.
   * @param {string} str - The string to escape.
   * @returns {string} The escaped string.
   */
  escape_html(str) {
    return escape_html(str);
  }
  /**
   * A convenience method to build a setting HTML snippet from a config object.
   * @param {Object} setting_config
   * @returns {string}
   */
  render_setting_html(setting_config) {
    if (setting_config.type === "html") {
      return setting_config.value;
    }
    const attributes = Object.entries(setting_config).map(([attr, value]) => {
      if (attr.includes("class")) return "";
      if (typeof value === "number") return `data-${attr.replace(/_/g, "-")}=${value}`;
      return `data-${attr.replace(/_/g, "-")}="${value}"`;
    }).join("\n");
    return `<div class="setting-component${setting_config.scope_class ? " " + setting_config.scope_class : ""}"
data-setting="${setting_config.setting}"
${attributes}
></div>`;
  }
  /**
   * Renders settings from a config, returning a fragment.
   * @async
   * @param {Object} settings_config
   * @param {Object} opts
   * @returns {Promise<DocumentFragment>}
   */
  async render_settings(settings_config5, opts = {}) {
    const html = Object.entries(settings_config5).map(([setting_key, setting_config]) => {
      if (!setting_config.setting) {
        setting_config.setting = setting_key;
      }
      return this.render_setting_html(setting_config);
    }).join("\n");
    const frag = this.create_doc_fragment(`<div>${html}</div>`);
    return await this.render_setting_components(frag, opts);
  }
  /**
   * @function add_settings_listeners
   * @description
   * Scans the given container for elements that have `data-smart-setting` and attaches
   * a 'change' event listener. On change, it updates the corresponding path in `scope.settings`.
   * 
   * @param {Object} scope - An object containing a `settings` property, where new values will be stored.
   * @param {HTMLElement} [container=document] - The DOM element to scan. Defaults to the entire document.
   */
  add_settings_listeners(scope, container = document) {
    const elements = container.querySelectorAll("[data-smart-setting]");
    elements.forEach((elm) => {
      const path = elm.dataset.smartSetting;
      if (!path) return;
      if (!elm.dataset.listenerAttached) {
        elm.dataset.listenerAttached = "true";
        elm.addEventListener("change", () => {
          let newValue;
          if (elm instanceof HTMLInputElement) {
            if (elm.type === "checkbox") {
              newValue = elm.checked;
            } else if (elm.type === "radio") {
              if (elm.checked) {
                newValue = elm.value;
              } else {
                return;
              }
            } else {
              newValue = elm.value;
            }
          } else if (elm instanceof HTMLSelectElement || elm instanceof HTMLTextAreaElement) {
            newValue = elm.value;
          } else {
            newValue = elm.value ?? elm.textContent;
          }
          this.set_by_path(scope.settings, path, newValue);
        });
      }
    });
  }
  apply_style_sheet(sheet) {
    if ("adoptedStyleSheets" in Document.prototype) {
      document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
    } else {
      const styleEl = document.createElement("style");
      if (sheet.cssRules) {
        styleEl.textContent = Array.from(sheet.cssRules).map((rule) => rule.cssText).join("\n");
      }
      document.head.appendChild(styleEl);
    }
  }
  empty(elm) {
    empty(elm);
  }
  safe_inner_html(elm, html) {
    safe_inner_html(elm, html);
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-view/adapters/_adapter.js
var SmartViewAdapter = class {
  constructor(main) {
    this.main = main;
  }
  // NECESSARY OVERRIDES
  /**
   * Retrieves the class used for settings.
   * Must be overridden by subclasses to return the appropriate setting class.
   * @abstract
   * @returns {Function} The setting class constructor.
   * @throws Will throw an error if not implemented in the subclass.
   */
  get setting_class() {
    throw new Error("setting_class() not implemented");
  }
  /**
   * Generates the HTML for a specified icon.
   * Must be overridden by subclasses to provide the correct icon HTML.
   * @abstract
   * @param {string} icon_name - The name of the icon to generate HTML for.
   * @returns {string} The HTML string representing the icon.
   * @throws Will throw an error if not implemented in the subclass.
   */
  get_icon_html(icon_name) {
    throw new Error("get_icon_html() not implemented");
  }
  /**
   * Renders Markdown content within a specific scope.
   * Must be overridden by subclasses to handle Markdown rendering appropriately.
   * @abstract
   * @param {string} markdown - The Markdown content to render.
   * @param {object|null} [scope=null] - The scope within which to render the Markdown.
   * @returns {Promise<void>} A promise that resolves when rendering is complete.
   * @throws Will throw an error if not implemented in the subclass.
   */
  async render_markdown(markdown, scope = null) {
    throw new Error("render_markdown() not implemented");
  }
  /**
   * Opens a specified URL.
   * Should be overridden by subclasses to define how URLs are opened.
   * @abstract
   * @param {string} url - The URL to open.
   */
  open_url(url) {
    throw new Error("open_url() not implemented");
  }
  /**
   * Handles the selection of a folder by invoking the folder selection dialog and updating the setting.
   * @abstract
   * @param {string} setting - The path of the setting being modified.
   * @param {string} value - The current value of the setting.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} scope - The current scope containing settings and actions.
   */
  handle_folder_select(path, value, elm, scope) {
    throw new Error("handle_folder_select not implemented");
  }
  /**
   * Handles the selection of a file by invoking the file selection dialog and updating the setting.
   * @abstract
   * @param {string} setting - The path of the setting being modified.
   * @param {string} value - The current value of the setting.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} scope - The current scope containing settings and actions.
   */
  handle_file_select(path, value, elm, scope) {
    throw new Error("handle_file_select not implemented");
  }
  /**
   * Performs actions before a setting is changed, such as clearing notices and updating the UI.
   * @abstract
   * @param {string} setting - The path of the setting being changed.
   * @param {*} value - The new value for the setting.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} scope - The current scope containing settings and actions.
   */
  pre_change(path, value, elm) {
  }
  /**
   * Performs actions after a setting is changed, such as updating UI elements.
   * @abstract
   * @param {string} setting - The path of the setting that was changed.
   * @param {*} value - The new value for the setting.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} changed - Additional information about the change.
   */
  post_change(path, value, elm) {
  }
  /**
   * Reverts a setting to its previous value in case of validation failure or error.
   * @abstract
   * @param {string} setting - The path of the setting to revert.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} scope - The current scope containing settings.
   */
  revert_setting(path, elm, scope) {
    console.warn("revert_setting() not implemented");
  }
  // DEFAULT IMPLEMENTATIONS (may be overridden)
  get setting_renderers() {
    return {
      text: this.render_text_component,
      string: this.render_text_component,
      password: this.render_password_component,
      number: this.render_number_component,
      dropdown: this.render_dropdown_component,
      toggle: this.render_toggle_component,
      textarea: this.render_textarea_component,
      textarea_array: this.render_textarea_array_component,
      button: this.render_button_component,
      remove: this.render_remove_component,
      folder: this.render_folder_select_component,
      "text-file": this.render_file_select_component,
      file: this.render_file_select_component,
      slider: this.render_slider_component,
      html: this.render_html_component,
      button_with_confirm: this.render_button_with_confirm_component,
      json: this.render_json_component,
      array: this.render_array_component
    };
  }
  async render_setting_component(elm, opts = {}) {
    this.empty(elm);
    const path = elm.dataset.setting;
    const scope = opts.scope || this.main.main;
    const settings_scope = opts.settings_scope || null;
    try {
      let value = elm.dataset.value ?? this.main.get_by_path(scope.settings, path, settings_scope);
      if (typeof value === "undefined" && typeof elm.dataset.default !== "undefined") {
        value = elm.dataset.default;
        if (typeof value === "string") value = value.toLowerCase() === "true" ? true : value === "false" ? false : value;
        this.main.set_by_path(scope.settings, path, value, settings_scope);
      }
      const renderer = this.setting_renderers[elm.dataset.type];
      if (!renderer) {
        console.warn(`Unsupported setting type: ${elm.dataset.type}`);
        return elm;
      }
      const setting = renderer.call(this, elm, path, value, scope, settings_scope);
      if (elm.dataset.name) setting.setName(elm.dataset.name);
      if (elm.dataset.description) {
        const frag = this.main.create_doc_fragment(`<span>${elm.dataset.description}</span>`);
        setting.setDesc(frag);
      }
      if (elm.dataset.tooltip) setting.setTooltip(elm.dataset.tooltip);
      this.add_button_if_needed(setting, elm, path, scope);
      this.handle_disabled_and_hidden(elm);
      return elm;
    } catch (e) {
      console.error(JSON.stringify({ path, elm }, null, 2));
      console.error(JSON.stringify(e, null, 2));
    }
  }
  render_dropdown_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    let options;
    if (elm.dataset.optionsCallback) {
      console.log(`getting options callback: ${elm.dataset.optionsCallback}`);
      const opts_callback = this.main.get_by_path(scope, elm.dataset.optionsCallback);
      if (typeof opts_callback === "function") options = opts_callback();
      else console.warn(`optionsCallback is not a function: ${elm.dataset.optionsCallback}`, scope);
    }
    if (!options || !options.length) {
      options = this.get_dropdown_options(elm);
    }
    smart_setting.addDropdown((dropdown) => {
      if (elm.dataset.required) dropdown.inputEl.setAttribute("required", true);
      options.forEach((option) => {
        const opt = dropdown.addOption(option.value, option.name ?? option.value);
        opt.selected = option.value === value;
      });
      dropdown.onChange((value2) => {
        this.handle_on_change(path, value2, elm, scope, settings_scope);
      });
      dropdown.setValue(value);
    });
    return smart_setting;
  }
  render_text_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addText((text) => {
      text.setPlaceholder(elm.dataset.placeholder || "");
      if (value) text.setValue(value);
      let debounceTimer;
      if (elm.dataset.button) {
        smart_setting.addButton((button) => {
          button.setButtonText(elm.dataset.button);
          button.onClick(async () => this.handle_on_change(path, text.getValue(), elm, scope));
        });
      } else {
        text.onChange(async (value2) => {
          clearTimeout(debounceTimer);
          debounceTimer = setTimeout(() => this.handle_on_change(path, value2.trim(), elm, scope, settings_scope), 2e3);
        });
      }
    });
    return smart_setting;
  }
  render_password_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addText((text) => {
      text.inputEl.type = "password";
      text.setPlaceholder(elm.dataset.placeholder || "");
      if (value) text.setValue(value);
      let debounceTimer;
      text.onChange(async (value2) => {
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => this.handle_on_change(path, value2, elm, scope, settings_scope), 2e3);
      });
    });
    return smart_setting;
  }
  render_number_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addText((number) => {
      number.inputEl.type = "number";
      number.setPlaceholder(elm.dataset.placeholder || "");
      if (typeof value !== "undefined") number.inputEl.value = parseInt(value);
      number.inputEl.min = elm.dataset.min || 0;
      if (elm.dataset.max) number.inputEl.max = elm.dataset.max;
      let debounceTimer;
      number.onChange(async (value2) => {
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => this.handle_on_change(path, parseInt(value2), elm, scope, settings_scope), 2e3);
      });
    });
    return smart_setting;
  }
  render_toggle_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addToggle((toggle) => {
      let checkbox_val = value ?? false;
      if (typeof checkbox_val === "string") {
        checkbox_val = checkbox_val.toLowerCase() === "true";
      }
      toggle.setValue(checkbox_val);
      toggle.onChange(async (value2) => this.handle_on_change(path, value2, elm, scope, settings_scope));
    });
    return smart_setting;
  }
  render_textarea_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addTextArea((textarea) => {
      textarea.setPlaceholder(elm.dataset.placeholder || "");
      textarea.setValue(value || "");
      let debounceTimer;
      textarea.onChange(async (value2) => {
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => this.handle_on_change(path, value2, elm, scope, settings_scope), 2e3);
      });
    });
    return smart_setting;
  }
  render_textarea_array_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addTextArea((textarea) => {
      textarea.setPlaceholder(elm.dataset.placeholder || "");
      textarea.setValue(Array.isArray(value) ? value.join("\n") : value || "");
      let debounceTimer;
      textarea.onChange(async (value2) => {
        value2 = value2.split("\n").map((v) => v.trim()).filter((v) => v);
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => this.handle_on_change(path, value2, elm, scope, settings_scope), 2e3);
      });
    });
    return smart_setting;
  }
  render_button_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addButton((button) => {
      button.setButtonText(elm.dataset.btnText || elm.dataset.name);
      button.onClick(async () => {
        if (elm.dataset.confirm && !confirm(elm.dataset.confirm)) return;
        if (elm.dataset.href) this.open_url(elm.dataset.href);
        if (elm.dataset.callback) {
          const callback = this.main.get_by_path(scope, elm.dataset.callback);
          if (callback) callback(path, value, elm, scope, settings_scope);
        }
      });
    });
    return smart_setting;
  }
  render_remove_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addButton((button) => {
      button.setButtonText(elm.dataset.btnText || elm.dataset.name || "Remove");
      button.onClick(async () => {
        this.main.delete_by_path(scope.settings, path, settings_scope);
        if (elm.dataset.callback) {
          const callback = this.main.get_by_path(scope, elm.dataset.callback);
          if (callback) callback(path, value, elm, scope, settings_scope);
        }
      });
    });
    return smart_setting;
  }
  render_folder_select_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addFolderSelect((folder_select) => {
      folder_select.setPlaceholder(elm.dataset.placeholder || "");
      if (value) folder_select.setValue(value);
      folder_select.inputEl.closest("div").addEventListener("click", () => {
        this.handle_folder_select(path, value, elm, scope);
      });
      folder_select.inputEl.querySelector("input").addEventListener("change", (e) => {
        const folder = e.target.value;
        this.handle_on_change(path, folder, elm, scope, settings_scope);
      });
    });
    return smart_setting;
  }
  render_file_select_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addFileSelect((file_select) => {
      file_select.setPlaceholder(elm.dataset.placeholder || "");
      if (value) file_select.setValue(value);
      file_select.inputEl.closest("div").addEventListener("click", () => {
        this.handle_file_select(path, value, elm, scope, settings_scope);
      });
    });
    return smart_setting;
  }
  render_slider_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addSlider((slider) => {
      const min = parseFloat(elm.dataset.min) || 0;
      const max = parseFloat(elm.dataset.max) || 100;
      const step = parseFloat(elm.dataset.step) || 1;
      const currentValue = typeof value !== "undefined" ? parseFloat(value) : min;
      slider.setLimits(min, max, step);
      slider.setValue(currentValue);
      slider.onChange((newVal) => {
        const numericVal = parseFloat(newVal);
        this.handle_on_change(path, numericVal, elm, scope, settings_scope);
      });
    });
    return smart_setting;
  }
  render_html_component(elm, path, value, scope) {
    this.safe_inner_html(elm, value);
    return elm;
  }
  /**
   * Renders an array setting component for managing a list of strings.
   * @param {HTMLElement} elm - Container element for the setting.
   * @param {string} path - Dot-notation path to store the array.
   * @param {Array<string>} value - Initial array value.
   * @param {object} scope - Scope containing settings and actions.
   * @param {object|null} settings_scope - Optional nested settings scope.
   * @returns {object} smart_setting instance.
   */
  render_array_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    let arr = Array.isArray(value) ? [...value] : [];
    const items_container = document.createElement("div");
    items_container.className = "array-items-container";
    const render_items = () => {
      items_container.innerHTML = "";
      arr.forEach((val, idx) => {
        const row = document.createElement("div");
        row.className = "array-item-row";
        const input = document.createElement("input");
        input.type = "text";
        input.value = val;
        input.placeholder = "Value";
        const remove_btn = document.createElement("button");
        remove_btn.textContent = "\u2715";
        remove_btn.title = "Remove";
        input.addEventListener("change", () => {
          arr[idx] = input.value;
          trigger_change();
        });
        remove_btn.addEventListener("click", () => {
          arr.splice(idx, 1);
          render_items();
          trigger_change();
        });
        row.appendChild(input);
        row.appendChild(remove_btn);
        items_container.appendChild(row);
      });
    };
    const add_row = document.createElement("div");
    add_row.className = "array-add-row";
    const new_input = document.createElement("input");
    new_input.type = "text";
    new_input.placeholder = "Value";
    const add_btn = document.createElement("button");
    add_btn.textContent = "+";
    add_btn.title = "Add value";
    add_btn.addEventListener("click", () => {
      const v = new_input.value.trim();
      if (!v) return;
      arr.push(v);
      new_input.value = "";
      render_items();
      trigger_change();
    });
    add_row.appendChild(new_input);
    add_row.appendChild(add_btn);
    smart_setting.controlEl.appendChild(items_container);
    smart_setting.controlEl.appendChild(add_row);
    const trigger_change = () => {
      this.handle_on_change(path, [...arr], elm, scope, settings_scope);
    };
    render_items();
    elm.appendChild(smart_setting.settingEl);
    return smart_setting;
  }
  render_json_component(elm, path, value, scope, settings_scope) {
    try {
      const smart_setting = new this.setting_class(elm);
      let obj = typeof value === "object" && value !== null ? { ...value } : {};
      const pairs_container = document.createElement("div");
      pairs_container.className = "json-pairs-container";
      const renderPairs = () => {
        pairs_container.innerHTML = "";
        Object.entries(obj).forEach(([key, val], idx) => {
          const pair_div = document.createElement("div");
          pair_div.className = "json-pair-row";
          const key_i = document.createElement("input");
          key_i.type = "text";
          key_i.value = key;
          key_i.placeholder = "Property";
          const value_i = document.createElement("input");
          value_i.type = "text";
          value_i.value = val;
          value_i.placeholder = "Value";
          const remove_btn = document.createElement("button");
          remove_btn.textContent = "\u2715";
          remove_btn.title = "Remove";
          key_i.addEventListener("change", () => {
            const newKey = key_i.value.trim();
            if (!newKey) return;
            if (newKey !== key) {
              obj[newKey] = obj[key];
              delete obj[key];
              renderPairs();
              triggerChange();
            }
          });
          value_i.addEventListener("change", () => {
            obj[key_i.value] = value_i.value;
            triggerChange();
          });
          remove_btn.addEventListener("click", () => {
            delete obj[key_i.value];
            renderPairs();
            triggerChange();
          });
          pair_div.appendChild(key_i);
          pair_div.appendChild(value_i);
          pair_div.appendChild(remove_btn);
          pairs_container.appendChild(pair_div);
        });
      };
      const add_div = document.createElement("div");
      add_div.className = "json-add-row";
      const new_key_i = document.createElement("input");
      new_key_i.type = "text";
      new_key_i.placeholder = "Property";
      const new_val_i = document.createElement("input");
      new_val_i.type = "text";
      new_val_i.placeholder = "Value";
      const add_btn = document.createElement("button");
      add_btn.textContent = "+";
      add_btn.title = "Add property";
      add_btn.addEventListener("click", () => {
        const k = new_key_i.value.trim();
        if (!k || k in obj) return;
        obj[k] = new_val_i.value;
        new_key_i.value = "";
        new_val_i.value = "";
        renderPairs();
        triggerChange();
      });
      add_div.appendChild(new_key_i);
      add_div.appendChild(new_val_i);
      add_div.appendChild(add_btn);
      smart_setting.controlEl.appendChild(pairs_container);
      smart_setting.controlEl.appendChild(add_div);
      const triggerChange = () => {
        this.handle_on_change(path, { ...obj }, elm, scope, settings_scope);
      };
      renderPairs();
      elm.appendChild(smart_setting.settingEl);
      return smart_setting;
    } catch (e) {
      console.error(e);
    }
  }
  add_button_if_needed(smart_setting, elm, path, scope) {
    if (elm.dataset.btn) {
      smart_setting.addButton((button) => {
        button.setButtonText(elm.dataset.btn);
        button.inputEl.addEventListener("click", (e) => {
          if (elm.dataset.btnCallback && typeof scope[elm.dataset.btnCallback] === "function") {
            if (elm.dataset.btnCallbackArg) scope[elm.dataset.btnCallback](elm.dataset.btnCallbackArg);
            else scope[elm.dataset.btnCallback](path, null, smart_setting, scope);
          } else if (elm.dataset.btnHref) {
            this.open_url(elm.dataset.btnHref);
          } else if (elm.dataset.callback && typeof this.main.get_by_path(scope, elm.dataset.callback) === "function") {
            this.main.get_by_path(scope, elm.dataset.callback)(path, null, smart_setting, scope);
          } else if (elm.dataset.href) {
            this.open_url(elm.dataset.href);
          } else {
            console.error("No callback or href found for button.");
          }
        });
        if (elm.dataset.btnDisabled || elm.dataset.disabled && elm.dataset.btnDisabled !== "false") {
          button.inputEl.disabled = true;
        }
      });
    }
  }
  handle_disabled_and_hidden(elm) {
    if (elm.dataset.disabled && elm.dataset.disabled !== "false") {
      elm.classList.add("disabled");
      elm.querySelector("input, select, textarea, button").disabled = true;
    }
    if (elm.dataset.hidden && elm.dataset.hidden !== "false") {
      elm.style.display = "none";
    }
  }
  get_dropdown_options(elm) {
    return Object.entries(elm.dataset).reduce((acc, [k, v]) => {
      if (!k.startsWith("option")) return acc;
      const [value, name] = v.split("|");
      acc.push({ value, name: name || value });
      return acc;
    }, []);
  }
  handle_on_change(path, value, elm, scope, settings_scope) {
    this.pre_change(path, value, elm, scope);
    if (elm.dataset.validate) {
      const valid = this[elm.dataset.validate](path, value, elm, scope);
      if (!valid) {
        elm.querySelector(".setting-item").style.border = "2px solid red";
        this.revert_setting(path, elm, scope);
        return;
      }
    }
    this.main.set_by_path(scope.settings, path, value, settings_scope);
    if (elm.dataset.callback) {
      const callback = this.main.get_by_path(scope, elm.dataset.callback);
      if (callback) callback(path, value, elm, scope);
    }
    this.post_change(path, value, elm, scope);
  }
  render_button_with_confirm_component(elm, path, value, scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addButton((button) => {
      button.setButtonText(elm.dataset.btnText || elm.dataset.name);
      elm.appendChild(this.main.create_doc_fragment(`
        <div class="sc-inline-confirm-row" style="
          display: none;
        ">
          <span style="margin-right: 10px;">
            ${elm.dataset.confirm || "Are you sure?"}
          </span>
          <span class="sc-inline-confirm-row-buttons">
            <button class="sc-inline-confirm-yes">Yes</button>
            <button class="sc-inline-confirm-cancel">Cancel</button>
          </span>
        </div>
      `));
      const confirm_row = elm.querySelector(".sc-inline-confirm-row");
      const confirm_yes = confirm_row.querySelector(".sc-inline-confirm-yes");
      const confirm_cancel = confirm_row.querySelector(".sc-inline-confirm-cancel");
      button.onClick(async () => {
        confirm_row.style.display = "block";
        elm.querySelector(".setting-item").style.display = "none";
      });
      confirm_yes.addEventListener("click", async () => {
        if (elm.dataset.href) this.open_url(elm.dataset.href);
        if (elm.dataset.callback) {
          const callback = this.main.get_by_path(scope, elm.dataset.callback);
          if (callback) callback(path, value, elm, scope);
        }
        elm.querySelector(".setting-item").style.display = "block";
        confirm_row.style.display = "none";
      });
      confirm_cancel.addEventListener("click", () => {
        confirm_row.style.display = "none";
        elm.querySelector(".setting-item").style.display = "block";
      });
    });
    return smart_setting;
  }
  empty(elm) {
    empty(elm);
  }
  safe_inner_html(elm, html) {
    safe_inner_html(elm, html);
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-view/adapters/obsidian.js
var import_obsidian = require("obsidian");
var SmartViewObsidianAdapter = class extends SmartViewAdapter {
  get setting_class() {
    return import_obsidian.Setting;
  }
  open_url(url) {
    window.open(url);
  }
  async render_file_select_component(elm, path, value) {
    return super.render_text_component(elm, path, value);
  }
  async render_markdown(markdown, scope) {
    const component = scope.env.smart_connections_plugin?.connections_view || new import_obsidian.Component();
    if (!scope) return console.warn("Scope required for rendering markdown in Obsidian adapter");
    const frag = this.main.create_doc_fragment("<div><div class='inner'></div></div>");
    const container = frag.querySelector(".inner");
    try {
      await import_obsidian.MarkdownRenderer.render(
        scope.env.plugin.app,
        markdown,
        container,
        scope?.file_path || "",
        component
      );
    } catch (e) {
      console.warn("Error rendering markdown in Obsidian adapter", e);
    }
    return frag;
  }
  get_icon_html(name) {
    return (0, import_obsidian.getIcon)(name).outerHTML;
  }
  // Obsidian Specific
  is_mod_event(event) {
    return import_obsidian.Keymap.isModEvent(event);
  }
  render_folder_select_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    const folders = scope.env.plugin.app.vault.getAllFolders().sort((a, b) => a.path.localeCompare(b.path));
    smart_setting.addDropdown((dropdown) => {
      if (elm.dataset.required) dropdown.inputEl.setAttribute("required", true);
      dropdown.addOption("", "No folder selected");
      folders.forEach((folder) => {
        dropdown.addOption(folder.path, folder.path);
      });
      dropdown.onChange((value2) => {
        this.handle_on_change(path, value2, elm, scope, settings_scope);
      });
      dropdown.setValue(value);
    });
    return smart_setting;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-collections/utils/collection_instance_name_from.js
function collection_instance_name_from(class_name) {
  if (class_name.endsWith("Item")) {
    return class_name.replace(/Item$/, "").toLowerCase();
  }
  return class_name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase().replace(/y$/, "ie") + "s";
}

// node_modules/obsidian-smart-env/node_modules/smart-collections/utils/helpers.js
function create_uid(data) {
  const str = JSON.stringify(data);
  let hash = 0;
  if (str.length === 0) return hash;
  for (let i = 0; i < str.length; i++) {
    const char = str.charCodeAt(i);
    hash = (hash << 5) - hash + char;
    hash = hash & hash;
    if (hash < 0) hash = hash * -1;
  }
  return hash.toString() + str.length;
}

// node_modules/obsidian-smart-env/node_modules/smart-collections/utils/deep_equal.js
function deep_equal(obj1, obj2, visited = /* @__PURE__ */ new WeakMap()) {
  if (obj1 === obj2) return true;
  if (obj1 === null || obj2 === null || obj1 === void 0 || obj2 === void 0) return false;
  if (typeof obj1 !== typeof obj2 || Array.isArray(obj1) !== Array.isArray(obj2)) return false;
  if (Array.isArray(obj1)) {
    if (obj1.length !== obj2.length) return false;
    return obj1.every((item, index) => deep_equal(item, obj2[index], visited));
  }
  if (typeof obj1 === "object") {
    if (visited.has(obj1)) return visited.get(obj1) === obj2;
    visited.set(obj1, obj2);
    const keys1 = Object.keys(obj1);
    const keys2 = Object.keys(obj2);
    if (keys1.length !== keys2.length) return false;
    return keys1.every((key) => deep_equal(obj1[key], obj2[key], visited));
  }
  return obj1 === obj2;
}

// node_modules/obsidian-smart-env/node_modules/smart-collections/utils/get_item_display_name.js
function get_item_display_name(key, show_full_path) {
  if (show_full_path) {
    return key.split("/").join(" > ").replace(".md", "");
  }
  return key.split("/").pop().replace(".md", "");
}

// node_modules/obsidian-smart-env/node_modules/smart-collections/utils/compare.js
function compare(item, to_item, params = {}) {
  const {
    algo = (a, b) => ({ is_equal: a === b })
  } = params;
  if (typeof algo !== "function") return { item, error: "Invalid comparison function" };
  return {
    item,
    ...algo(item, to_item) || { error: "Comparison function did not return a result" }
  };
}

// node_modules/obsidian-smart-env/node_modules/smart-collections/item.js
var CollectionItem = class _CollectionItem {
  /**
   * Default properties for an instance of CollectionItem.
   * Override in subclasses to define different defaults.
   * @returns {Object}
   */
  static get defaults() {
    return {
      data: {}
    };
  }
  /**
   * @param {Object} env - The environment/context.
   * @param {Object|null} [data=null] - Initial data for the item.
   */
  constructor(env, data = null) {
    env.create_env_getter(this);
    this.config = this.env?.config;
    this.merge_defaults();
    if (data) deep_merge(this.data, data);
    if (!this.data.class_name) this.data.class_name = this.collection.item_class_name;
  }
  /**
   * Loads an item from data and initializes it.
   * @param {Object} env
   * @param {Object} data
   * @returns {CollectionItem}
   */
  static load(env, data) {
    const item = new this(env, data);
    item.init();
    return item;
  }
  /**
   * Merge default properties from the entire inheritance chain.
   * @private
   */
  merge_defaults() {
    let current_class = this.constructor;
    while (current_class) {
      for (let key in current_class.defaults) {
        const default_val = current_class.defaults[key];
        if (typeof default_val === "object") {
          this[key] = { ...default_val, ...this[key] };
        } else {
          this[key] = this[key] === void 0 ? default_val : this[key];
        }
      }
      current_class = Object.getPrototypeOf(current_class);
    }
  }
  /**
   * Generates or retrieves a unique key for the item.
   * Key syntax supports:
   * - `[i]` for sequences
   * - `/` for super-sources (groups, directories, clusters)
   * - `#` for sub-sources (blocks)
   * @returns {string} The unique key
   */
  get_key() {
    return create_uid(this.data);
  }
  /**
   * Updates the item data and returns true if changed.
   * @param {Object} data
   * @returns {boolean} True if data changed.
   */
  update_data(data) {
    const sanitized_data = this.sanitize_data(data);
    const current_data = { ...this.data };
    deep_merge(current_data, sanitized_data);
    const changed = !deep_equal(this.data, current_data);
    if (!changed) return false;
    this.data = current_data;
    return true;
  }
  /**
   * Sanitizes data for saving. Ensures no circular references.
   * @param {*} data
   * @returns {*} Sanitized data.
   */
  sanitize_data(data) {
    if (data instanceof _CollectionItem) return data.ref;
    if (Array.isArray(data)) return data.map((val) => this.sanitize_data(val));
    if (typeof data === "object" && data !== null) {
      return Object.keys(data).reduce((acc, key) => {
        acc[key] = this.sanitize_data(data[key]);
        return acc;
      }, {});
    }
    return data;
  }
  /**
   * Initializes the item. Override as needed.
   * @param {Object} [input_data] - Additional data that might be provided on creation.
   */
  init(input_data) {
  }
  /**
   * Queues this item for saving.
   */
  queue_save() {
    this._queue_save = true;
  }
  /**
   * Saves this item using its data adapter.
   * @returns {Promise<void>}
   */
  async save() {
    try {
      await this.data_adapter.save_item(this);
      this.init();
    } catch (err) {
      this._queue_save = true;
      console.error(err, err.stack);
    }
  }
  /**
   * Queues this item for loading.
   */
  queue_load() {
    this._queue_load = true;
  }
  /**
   * Loads this item using its data adapter.
   * @returns {Promise<void>}
   */
  async load() {
    try {
      await this.data_adapter.load_item(this);
      this.init();
    } catch (err) {
      this._load_error = err;
      this.on_load_error(err);
    }
  }
  /**
   * Handles load errors by re-queuing for load.
   * Override if needed.
   * @param {Error} err
   */
  on_load_error(err) {
    this.queue_load();
  }
  /**
   * Validates the item before saving. Checks for presence and validity of key.
   * @returns {boolean}
   */
  validate_save() {
    if (!this.key) return false;
    if (this.key.trim() === "") return false;
    if (this.key === "undefined") return false;
    return true;
  }
  /**
   * Marks this item as deleted. This does not immediately remove it from memory,
   * but queues a save that will result in the item being removed from persistent storage.
   */
  delete() {
    this.deleted = true;
    this.queue_save();
  }
  /**
   * Filters items in the collection based on provided options.
   * functional filter (returns true or false) for filtering items in collection; called by collection class
   * @param {Object} filter_opts - Filtering options.
   * @param {string} [filter_opts.exclude_key] - A single key to exclude.
   * @param {string[]} [filter_opts.exclude_keys] - An array of keys to exclude. If exclude_key is provided, it's added to this array.
   * @param {string} [filter_opts.exclude_key_starts_with] - Exclude keys starting with this string.
   * @param {string[]} [filter_opts.exclude_key_starts_with_any] - Exclude keys starting with any of these strings.
   * @param {string} [filter_opts.exclude_key_includes] - Exclude keys that include this string.
   * @param {string[]} [filter_opts.exclude_key_includes_any] - Exclude keys that include any of these strings.
   * @param {string} [filter_opts.exclude_key_ends_with] - Exclude keys ending with this string.
   * @param {string[]} [filter_opts.exclude_key_ends_with_any] - Exclude keys ending with any of these strings.
   * @param {string} [filter_opts.key_ends_with] - Include only keys ending with this string.
   * @param {string} [filter_opts.key_starts_with] - Include only keys starting with this string.
   * @param {string[]} [filter_opts.key_starts_with_any] - Include only keys starting with any of these strings.
   * @param {string} [filter_opts.key_includes] - Include only keys that include this string.
   * @returns {boolean} True if the item passes the filter, false otherwise.
   */
  filter(filter_opts = {}) {
    const {
      exclude_key,
      exclude_keys = exclude_key ? [exclude_key] : [],
      exclude_key_starts_with,
      exclude_key_starts_with_any,
      exclude_key_includes,
      exclude_key_includes_any,
      exclude_key_ends_with,
      exclude_key_ends_with_any,
      key_ends_with,
      key_starts_with,
      key_starts_with_any,
      key_includes,
      key_includes_any
    } = filter_opts;
    if (exclude_keys?.includes(this.key)) return false;
    if (exclude_key_starts_with && this.key.startsWith(exclude_key_starts_with)) return false;
    if (exclude_key_starts_with_any && exclude_key_starts_with_any.some((prefix) => this.key.startsWith(prefix))) return false;
    if (exclude_key_includes && this.key.includes(exclude_key_includes)) return false;
    if (exclude_key_includes_any && exclude_key_includes_any.some((include) => this.key.includes(include))) return false;
    if (exclude_key_ends_with && this.key.endsWith(exclude_key_ends_with)) return false;
    if (exclude_key_ends_with_any && exclude_key_ends_with_any.some((suffix) => this.key.endsWith(suffix))) return false;
    if (key_ends_with && !this.key.endsWith(key_ends_with)) return false;
    if (key_starts_with && !this.key.startsWith(key_starts_with)) return false;
    if (key_starts_with_any && !key_starts_with_any.some((prefix) => this.key.startsWith(prefix))) return false;
    if (key_includes && !this.key.includes(key_includes)) return false;
    if (key_includes_any && !key_includes_any.some((include) => this.key.includes(include))) return false;
    return true;
  }
  /**
   * Compares this item with another item using a custom comparison function.
   * @param {Item} to_item - The item to compare with.
   * @param {Object} [params={}] - Additional parameters for the comparison.
   * @returns {Object} An object containing the original item and the comparison results.
   */
  compare(to_item, params = {}) {
    return compare(this, to_item, params);
  }
  /**
   * Parses item data for additional processing. Override as needed.
   * @deprecated is this used anywhere?
   */
  parse() {
  }
  get actions() {
    if (!this._actions) {
      this._actions = Object.entries(this.env.opts.items[this.item_type_key].actions || {}).reduce((acc, [k, v]) => {
        acc[k] = v.bind(this);
        return acc;
      }, {});
    }
    return this._actions;
  }
  /**
   * Derives the collection key from the class name.
   * @returns {string}
   */
  static get collection_key() {
    let name = this.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return collection_instance_name_from(name);
  }
  /**
   * @returns {string} The collection key for this item.
   */
  get collection_key() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return collection_instance_name_from(name);
  }
  /**
   * Retrieves the parent collection from the environment.
   * @returns {Collection}
   */
  get collection() {
    return this.env[this.collection_key];
  }
  /**
   * @returns {string} The item's key.
   */
  get key() {
    return this.data?.key || this.get_key();
  }
  get item_type_key() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return camel_case_to_snake_case(name);
  }
  /**
   * A simple reference object for this item.
   * @returns {{collection_key: string, key: string}}
   */
  get ref() {
    return { collection_key: this.collection_key, key: this.key };
  }
  /**
   * Emits an event with item metadata.
   *
   * @param {string} event_key
   * @param {Object} [payload={}]
   * @returns {void}
   */
  emit_event(event_key, payload = {}) {
    this.env.events?.emit(event_key, { collection_key: this.collection_key, item_key: this.key, ...payload });
  }
  /**
   * @returns {Object} The data adapter for this item's collection.
   */
  get data_adapter() {
    return this.collection.data_adapter;
  }
  /**
   * @returns {Object} The filesystem adapter.
   */
  get data_fs() {
    return this.collection.data_fs;
  }
  /**
   * Access to collection-level settings.
   * @returns {Object}
   */
  get settings() {
    if (!this.env.settings[this.collection_key]) this.env.settings[this.collection_key] = {};
    return this.env.settings[this.collection_key];
  }
  set settings(settings) {
    this.env.settings[this.collection_key] = settings;
    this.env.smart_settings.save();
  }
  /**
   * @deprecated use env.smart_view
   * @returns {Object}
   */
  get smart_view() {
    if (!this._smart_view) this._smart_view = this.env.init_module("smart_view");
    return this._smart_view;
  }
  /**
   * Retrieves the display name of the collection item.
   * @readonly
   * @deprecated Use `get_item_display_name(key, show_full_path)` instead (keep UI logic out of collections).
   * @returns {string} The display name.
   */
  get name() {
    return get_item_display_name(
      this.key,
      this.env.settings.smart_view_filter?.show_full_path
    );
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-collections/collection.js
var AsyncFunction = Object.getPrototypeOf(async function() {
}).constructor;
var Collection = class {
  /**
   * Constructs a new Collection instance.
   *
   * @param {Object} env - The environment context containing configurations and adapters.
   * @param {Object} [opts={}] - Optional configuration.
   * @param {string} [opts.collection_key] - Custom key to override default collection name.
   * @param {string} [opts.data_dir] - Custom data directory path.
   * @param {boolean} [opts.prevent_load_on_init] - Whether to prevent loading items on initialization.
   */
  constructor(env, opts = {}) {
    env.create_env_getter(this);
    this.opts = opts;
    if (opts.collection_key) this.collection_key = opts.collection_key;
    this.env[this.collection_key] = this;
    this.config = this.env.config;
    this.items = {};
    this.loaded = null;
    this._loading = false;
    this.load_time_ms = null;
    this.settings_container = null;
  }
  /**
   * Initializes a new collection in the environment. Override in subclass if needed.
   *
   * @param {Object} env
   * @param {Object} [opts={}]
   * @returns {Promise<void>}
   */
  static async init(env, opts = {}) {
    env[this.collection_key] = new this(env, opts);
    await env[this.collection_key].init();
    env.collections[this.collection_key] = "init";
  }
  /**
   * The unique collection key derived from the class name.
   * @returns {string}
   */
  static get collection_key() {
    let name = this.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
  }
  /**
   * Instance-level init. Override in subclasses if necessary.
   * @returns {Promise<void>}
   */
  async init() {
  }
  /**
   * Creates or updates an item in the collection.
   * - If `data` includes a key that matches an existing item, that item is updated.
   * - Otherwise, a new item is created.
   * After updating or creating, the item is validated. If validation fails, the item is logged and returned without being saved.
   * If validation succeeds for a new item, it is added to the collection and marked for saving.
   *
   * If the item’s `init()` method is async, a promise is returned that resolves once init completes.
   * 
   * NOTE: wrapping in try/catch seems to fail to catch errors thrown in async init functions when awaiting create_or_update
   *
   * @param {Object} [data={}] - Data for creating/updating an item.
   * @returns {Promise<Item>|Item} The created or updated item. May return a promise if `init()` is async.
   */
  create_or_update(data = {}) {
    const existing_item = this.find_by(data);
    const item = existing_item ? existing_item : new this.item_type(this.env);
    item._queue_save = !existing_item;
    const data_changed = item.update_data(data);
    if (!existing_item && !item.validate_save()) {
      return item;
    }
    if (!existing_item) {
      this.set(item);
    }
    if (existing_item && !data_changed) return existing_item;
    if (item.init instanceof AsyncFunction) {
      return new Promise((resolve) => {
        item.init(data).then(() => resolve(item));
      });
    }
    item.init(data);
    return item;
  }
  /**
   * Finds an item by partial data match (first checks key). If `data.key` provided,
   * returns the item with that key; otherwise attempts a match by merging data.
   *
   * @param {Object} data - Data to match against.
   * @returns {Item|null}
   */
  find_by(data) {
    if (data.key) return this.get(data.key);
    const temp = new this.item_type(this.env);
    const temp_data = JSON.parse(JSON.stringify(data, temp.sanitize_data(data)));
    deep_merge(temp.data, temp_data);
    return temp.key ? this.get(temp.key) : null;
  }
  /**
   * Filters items based on provided filter options or a custom function.
   *
   * @param {Object|Function} [filter_opts={}] - Filter options or a predicate function.
   * @returns {Item[]} Array of filtered items.
   */
  filter(filter_opts = {}) {
    if (typeof filter_opts === "function") {
      return Object.values(this.items).filter(filter_opts);
    }
    const prepared_filter_opts = this.prepare_filter(filter_opts);
    const results = [];
    const { first_n } = prepared_filter_opts;
    for (const item of Object.values(this.items)) {
      if (first_n && results.length >= first_n) break;
      if (item.filter(prepared_filter_opts)) results.push(item);
    }
    return results;
  }
  /**
   * Alias for `filter()`
   * @param {Object|Function} filter_opts
   * @returns {Item[]}
   */
  list(filter_opts) {
    return this.filter(filter_opts);
  }
  /**
   * Prepares filter options. Can be overridden by subclasses to normalize filter options.
   *
   * @param {Object} filter_opts
   * @returns {Object} Prepared filter options.
   */
  prepare_filter(filter_opts) {
    return filter_opts;
  }
  /**
   * Retrieves an item by key.
   * @param {string} key
   * @returns {Item|undefined}
   */
  get(key) {
    return this.items[key];
  }
  /**
   * Retrieves multiple items by an array of keys.
   * @param {string[]} keys
   * @returns {Item[]}
   */
  get_many(keys = []) {
    if (!Array.isArray(keys)) {
      console.error("get_many called with non-array keys:", keys);
      return [];
    }
    return keys.map((key) => this.get(key)).filter(Boolean);
  }
  /**
   * Retrieves a random item from the collection, optionally filtered by options.
   * @param {Object} [opts]
   * @returns {Item|undefined}
   */
  get_rand(opts = null) {
    if (opts) {
      const filtered = this.filter(opts);
      return filtered[Math.floor(Math.random() * filtered.length)];
    }
    const keys = this.keys;
    return this.items[keys[Math.floor(Math.random() * keys.length)]];
  }
  /**
   * Adds or updates an item in the collection.
   * @param {Item} item
   */
  set(item) {
    if (!item.key) throw new Error("Item must have a key property");
    this.items[item.key] = item;
  }
  /**
   * Updates multiple items by their keys.
   * @param {string[]} keys
   * @param {Object} data
   */
  update_many(keys = [], data = {}) {
    this.get_many(keys).forEach((item) => item.update_data(data));
  }
  /**
   * Clears all items from the collection.
   */
  clear() {
    this.items = {};
  }
  /**
   * @returns {string} The collection key, can be overridden by opts.collection_key
   */
  get collection_key() {
    return this._collection_key ? this._collection_key : this.constructor.collection_key;
  }
  set collection_key(key) {
    this._collection_key = key;
  }
  /**
   * Lazily initializes and returns the data adapter instance for this collection.
   * @returns {Object} The data adapter instance.
   */
  get data_adapter() {
    if (!this._data_adapter) {
      const AdapterClass = this.get_adapter_class("data");
      this._data_adapter = new AdapterClass(this);
    }
    return this._data_adapter;
  }
  get_adapter_class(type) {
    const config = this.env.opts.collections?.[this.collection_key];
    const adapter_key = type + "_adapter";
    const adapter_module = config?.[adapter_key] ?? this.env.opts.collections?.smart_collections?.[adapter_key];
    if (typeof adapter_module === "function") return adapter_module;
    if (typeof adapter_module?.collection === "function") return adapter_module.collection;
    throw new Error(`No '${type}' adapter class found for ${this.collection_key} or smart_collections`);
  }
  /**
   * Data directory strategy for this collection. Defaults to 'multi'.
   * @returns {string}
   */
  get data_dir() {
    return this.collection_key;
  }
  /**
   * File system adapter from the environment.
   * @returns {Object}
   */
  get data_fs() {
    return this.env.data_fs;
  }
  /**
   * Derives the corresponding item class name based on this collection's class name.
   * @returns {string}
   */
  get item_class_name() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    if (name.endsWith("ies")) return name.slice(0, -3) + "y";
    else if (name.endsWith("s")) return name.slice(0, -1);
    return name + "Item";
  }
  /**
   * Derives a readable item name from the item class name.
   * @returns {string}
   */
  get item_name() {
    return this.item_class_name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
  }
  /**
   * Retrieves the item type (constructor) from the environment.
   * @returns {Function} Item constructor.
   */
  get item_type() {
    if (this.opts.item_type) return this.opts.item_type;
    return this.env.item_types[this.item_class_name];
  }
  /**
   * Returns an array of all keys in the collection.
   * @returns {string[]}
   */
  get keys() {
    return Object.keys(this.items);
  }
  /**
   * @deprecated use data_adapter instead (2024-09-14)
   */
  get adapter() {
    return this.data_adapter;
  }
  /**
   * @method process_save_queue
   * @description 
   * Saves items flagged for saving (_queue_save) back to AJSON or SQLite. This ensures persistent storage 
   * of any updates made since last load/import. This method also writes changes to disk (AJSON files or DB).
   */
  async process_save_queue(opts = {}) {
    if (opts.force) {
      Object.values(this.items).forEach((item) => item._queue_save = true);
    }
    await this.data_adapter.process_save_queue(opts);
  }
  /**
   * @alias process_save_queue
   * @returns {Promise<void>}
   */
  async save(opts = {}) {
    await this.process_save_queue(opts);
  }
  /**
   * @method process_load_queue
   * @description 
   * Loads items that have been flagged for loading (_queue_load). This may involve 
   * reading from AJSON/SQLite or re-importing from markdown if needed. 
   * Called once initial environment is ready and collections are known.
   */
  async process_load_queue() {
    await this.data_adapter.process_load_queue();
  }
  /**
   * Retrieves processed settings configuration.
   * @returns {Object}
   */
  get settings_config() {
    return this.process_settings_config({});
  }
  /**
   * Processes given settings config, adding prefixes and handling conditionals.
   *
   * @private
   * @param {Object} _settings_config
   * @param {string} [prefix='']
   * @returns {Object}
   */
  process_settings_config(_settings_config, prefix = "") {
    const add_prefix = (key) => prefix && !key.includes(`${prefix}.`) ? `${prefix}.${key}` : key;
    return Object.entries(_settings_config).reduce((acc, [key, val]) => {
      let new_val = { ...val };
      if (new_val.conditional) {
        if (!new_val.conditional(this)) return acc;
        delete new_val.conditional;
      }
      if (new_val.callback) new_val.callback = add_prefix(new_val.callback);
      if (new_val.btn_callback) new_val.btn_callback = add_prefix(new_val.btn_callback);
      if (new_val.options_callback) new_val.options_callback = add_prefix(new_val.options_callback);
      const new_key = add_prefix(this.process_setting_key(key));
      acc[new_key] = new_val;
      return acc;
    }, {});
  }
  /**
   * Processes an individual setting key. Override if needed.
   * @param {string} key
   * @returns {string}
   */
  process_setting_key(key) {
    return key;
  }
  /**
   * Default settings for this collection. Override in subclasses as needed.
   * @returns {Object}
   */
  get default_settings() {
    return {};
  }
  /**
   * Current settings for the collection.
   * Initializes with default settings if none exist.
   * @returns {Object}
   */
  get settings() {
    if (!this.env.settings[this.collection_key]) {
      this.env.settings[this.collection_key] = this.default_settings;
    }
    return this.env.settings[this.collection_key];
  }
  /**
   * @deprecated use env.smart_view instead
   * @returns {Object} smart_view instance
   */
  get smart_view() {
    if (!this._smart_view) this._smart_view = this.env.init_module("smart_view");
    return this._smart_view;
  }
  /**
   * Renders the settings for the collection into a given container.
   * @deprecated use env.render_component('collection_settings', this) instead (2025-05-25: decouple UI from collections)
   * @param {HTMLElement} [container=this.settings_container]
   * @param {Object} opts
   * @returns {Promise<HTMLElement>}
   */
  async render_settings(container = this.settings_container, opts = {}) {
    return await this.render_collection_settings(container, opts);
  }
  /**
   * Helper function to render collection settings.
   * @deprecated use env.render_component('collection_settings', this) instead (2025-05-25: decouple UI from collections)
   * @param {HTMLElement} [container=this.settings_container]
   * @param {Object} opts
   * @returns {Promise<HTMLElement>}
   */
  async render_collection_settings(container = this.settings_container, opts = {}) {
    if (container && (!this.settings_container || this.settings_container !== container)) {
      this.settings_container = container;
    } else if (!container) {
      container = this.env.smart_view.create_doc_fragment("<div></div>");
    }
    this.env.smart_view.safe_inner_html(container, `<div class="sc-loading">Loading ${this.collection_key} settings...</div>`);
    const frag = await this.env.render_component("settings", this, opts);
    this.env.smart_view.empty(container);
    container.appendChild(frag);
    return container;
  }
  /**
   * Unloads collection data from memory.
   */
  unload() {
    this.clear();
    this.unloaded = true;
    this.env.collections[this.collection_key] = null;
  }
  /**
   * Displays a process notice if the operation exceeds one second.
   *
   * @param {string} process - Identifier for the ongoing process.
   * @param {Object} [opts={}] - Additional options passed to the notice.
   */
  show_process_notice(process2, opts = {}) {
    if (!this.debounce_process_notice) this.debounce_process_notice = {};
    this.debounce_process_notice[process2] = setTimeout(() => {
      this.debounce_process_notice[process2] = null;
      this.env.notices?.show(process2, { collection_key: this.collection_key, ...opts });
    }, 1e3);
  }
  /**
   * Clears any pending process notice timers and removes active notices.
   *
   * @param {string} process - Identifier for the process notice to clear.
   */
  clear_process_notice(process2) {
    if (this.debounce_process_notice?.[process2]) {
      clearTimeout(this.debounce_process_notice[process2]);
      this.debounce_process_notice[process2] = null;
    } else {
      this.env.notices?.remove(process2);
    }
  }
  /**
   * Emits an event with collection metadata.
   *
   * @param {string} event_key
   * @param {Object} [payload={}]
   * @returns {void}
   */
  emit_event(event_key, payload = {}) {
    this.env.events?.emit(event_key, { collection_key: this.collection_key, ...payload });
  }
  /**
   * Lazily binds action functions to the collection instance.
   *
   * @returns {Object} Bound action functions keyed by name.
   */
  get actions() {
    if (!this._actions) {
      this._actions = Object.entries(this.opts.actions || {}).reduce((acc, [k, v]) => {
        acc[k] = v.bind(this);
        return acc;
      }, {});
    }
    return this._actions;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-entities/adapters/_adapter.js
var EntitiesVectorAdapter = class {
  /**
   * @constructor
   * @param {Object} collection - The collection (SmartEntities or derived class) instance.
   */
  constructor(collection) {
    this.collection = collection;
  }
  /**
   * Find the nearest entities to the given vector.
   * @async
   * @param {number[]} vec - The reference vector.
   * @param {Object} [filter={}] - Optional filters (limit, exclude, etc.)
   * @returns {Promise<Array<{item:Object, score:number}>>} Array of results sorted by score descending.
   * @throws {Error} Not implemented by default.
   */
  async nearest(vec, filter = {}) {
    throw new Error("EntitiesVectorAdapter.nearest() not implemented");
  }
  /**
   * Find the furthest entities from the given vector.
   * @async
   * @param {number[]} vec - The reference vector.
   * @param {Object} [filter={}] - Optional filters (limit, exclude, etc.)
   * @returns {Promise<Array<{item:Object, score:number}>>} Array of results sorted by score ascending (furthest).
   * @throws {Error} Not implemented by default.
   */
  async furthest(vec, filter = {}) {
    throw new Error("EntitiesVectorAdapter.furthest() not implemented");
  }
  /**
   * Embed a batch of entities.
   * @async
   * @param {Object[]} entities - Array of entity instances to embed.
   * @returns {Promise<void>}
   * @throws {Error} Not implemented by default.
   */
  async embed_batch(entities) {
    throw new Error("EntitiesVectorAdapter.embed_batch() not implemented");
  }
  /**
   * Process a queue of entities waiting to be embedded.
   * Typically, this will call embed_batch in batches and update entities.
   * @async
   * @param {Object[]} embed_queue - Array of entities to embed.
   * @returns {Promise<void>}
   * @throws {Error} Not implemented by default.
   */
  async process_embed_queue(embed_queue) {
    throw new Error("EntitiesVectorAdapter.process_embed_queue() not implemented");
  }
};
var EntityVectorAdapter = class {
  /**
   * @constructor
   * @param {Object} item - The SmartEntity instance that this adapter is associated with.
   */
  constructor(item) {
    this.item = item;
  }
  /**
   * Retrieve the current vector embedding for this entity.
   * @async
   * @returns {Promise<number[]|undefined>} The entity's vector or undefined if not set.
   * @throws {Error} Not implemented by default.
   */
  async get_vec() {
    throw new Error("EntityVectorAdapter.get_vec() not implemented");
  }
  /**
   * Store/update the vector embedding for this entity.
   * @async
   * @param {number[]} vec - The vector to set.
   * @returns {Promise<void>}
   * @throws {Error} Not implemented by default.
   */
  async set_vec(vec) {
    throw new Error("EntityVectorAdapter.set_vec() not implemented");
  }
  /**
   * Delete/remove the vector embedding for this entity.
   * @async
   * @returns {Promise<void>}
   * @throws {Error} Not implemented by default.
   */
  async delete_vec() {
    throw new Error("EntityVectorAdapter.delete_vec() not implemented");
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-utils/results_acc.js
function results_acc(_acc, result, ct = 10) {
  if (_acc.results.size < ct) {
    _acc.results.add(result);
    if (_acc.results.size === ct && _acc.min === Number.POSITIVE_INFINITY) {
      let { minScore, minObj } = find_min(_acc.results);
      _acc.min = minScore;
      _acc.minResult = minObj;
    }
  } else if (result.score > _acc.min) {
    _acc.results.add(result);
    _acc.results.delete(_acc.minResult);
    let { minScore, minObj } = find_min(_acc.results);
    _acc.min = minScore;
    _acc.minResult = minObj;
  }
}
function furthest_acc(_acc, result, ct = 10) {
  if (_acc.results.size < ct) {
    _acc.results.add(result);
    if (_acc.results.size === ct && _acc.max === Number.NEGATIVE_INFINITY) {
      let { maxScore, maxObj } = find_max(_acc.results);
      _acc.max = maxScore;
      _acc.maxResult = maxObj;
    }
  } else if (result.score < _acc.max) {
    _acc.results.add(result);
    _acc.results.delete(_acc.maxResult);
    let { maxScore, maxObj } = find_max(_acc.results);
    _acc.max = maxScore;
    _acc.maxResult = maxObj;
  }
}
function find_min(results) {
  let minScore = Number.POSITIVE_INFINITY;
  let minObj = null;
  for (const obj of results) {
    if (obj.score < minScore) {
      minScore = obj.score;
      minObj = obj;
    }
  }
  return { minScore, minObj };
}
function find_max(results) {
  let maxScore = Number.NEGATIVE_INFINITY;
  let maxObj = null;
  for (const obj of results) {
    if (obj.score > maxScore) {
      maxScore = obj.score;
      maxObj = obj;
    }
  }
  return { maxScore, maxObj };
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/sort_by_score.js
function sort_by_score(a, b) {
  const epsilon = 1e-9;
  const score_diff = a.score - b.score;
  if (Math.abs(score_diff) < epsilon) return 0;
  return score_diff > 0 ? -1 : 1;
}
function sort_by_score_descending(a, b) {
  return sort_by_score(a, b);
}
function sort_by_score_ascending(a, b) {
  return sort_by_score(a, b) * -1;
}

// node_modules/obsidian-smart-env/node_modules/smart-entities/adapters/default.js
var DefaultEntitiesVectorAdapter = class extends EntitiesVectorAdapter {
  constructor(collection) {
    super(collection);
    this._is_processing_embed_queue = false;
    this._reset_embed_queue_stats();
  }
  /**
   * Find the nearest entities to the given vector.
   * @async
   * @param {number[]} vec - The reference vector.
   * @param {Object} [filter={}] - Optional filters (limit, exclude, etc.)
   * @returns {Promise<Array<{item:Object, score:number}>>} Array of results sorted by score descending.
   */
  async nearest(vec, filter = {}) {
    if (!vec || !Array.isArray(vec)) {
      throw new Error("Invalid vector input to nearest()");
    }
    const {
      limit = 50
      // TODO: default configured in settings
    } = filter;
    const nearest = this.collection.filter(filter).reduce((acc, item) => {
      if (!item.vec) return acc;
      const result = { item, score: cos_sim(vec, item.vec) };
      results_acc(acc, result, limit);
      return acc;
    }, { min: 0, results: /* @__PURE__ */ new Set() });
    return Array.from(nearest.results).sort(sort_by_score_descending);
  }
  /**
   * Find the furthest entities from the given vector.
   * @async
   * @param {number[]} vec - The reference vector.
   * @param {Object} [filter={}] - Optional filters (limit, exclude, etc.)
   * @returns {Promise<Array<{item:Object, score:number}>>} Array of results sorted by score ascending (furthest).
   */
  async furthest(vec, filter = {}) {
    if (!vec || !Array.isArray(vec)) {
      throw new Error("Invalid vector input to furthest()");
    }
    const {
      limit = 50
      // TODO: default configured in settings
    } = filter;
    const furthest = this.collection.filter(filter).reduce((acc, item) => {
      if (!item.vec) return acc;
      const result = { item, score: cos_sim(vec, item.vec) };
      furthest_acc(acc, result, limit);
      return acc;
    }, { max: 0, results: /* @__PURE__ */ new Set() });
    return Array.from(furthest.results).sort(sort_by_score_ascending);
  }
  /**
   * Embed a batch of entities.
   * @async
   * @param {Object[]} entities - Array of entity instances to embed.
   * @returns {Promise<void>}
   */
  async embed_batch(entities) {
    if (!this.collection.embed_model) {
      throw new Error("No embed_model found in collection for embedding");
    }
    await Promise.all(entities.map((e) => e.get_embed_input()));
    const embeddings = await this.collection.embed_model.embed_batch(entities);
    embeddings.forEach((emb, i) => {
      const entity = entities[i];
      entity.vec = emb.vec;
      entity.data.last_embed = entity.data.last_read;
      if (emb.tokens !== void 0) entity.tokens = emb.tokens;
    });
  }
  /**
   * Process a queue of entities waiting to be embedded.
   * Prevents multiple concurrent runs by using `_is_processing_embed_queue`.
   * @async
   * @returns {Promise<void>}
   */
  async process_embed_queue() {
    if (this._is_processing_embed_queue) {
      console.log("process_embed_queue is already running, skipping concurrent call.");
      return;
    }
    this._is_processing_embed_queue = true;
    try {
      if (!this.collection.embed_model.is_loaded) {
        await this.collection.embed_model.load();
      }
    } catch (e) {
      this.collection.emit_event("embed_model:load_failed");
      this.notices?.show("Failed to load embed_model");
      return;
    }
    try {
      const embed_queue = this.collection.embed_queue;
      this._reset_embed_queue_stats();
      if (this.collection.embed_model_key === "None") {
        console.log(`Smart Connections: No active embedding model for ${this.collection.collection_key}, skipping embedding`);
        return;
      }
      if (!this.collection.embed_model) {
        console.log(`Smart Connections: No active embedding model for ${this.collection.collection_key}, skipping embedding`);
        return;
      }
      const datetime_start = /* @__PURE__ */ new Date();
      if (!embed_queue.length) {
        console.log(`Smart Connections: No items in ${this.collection.collection_key} embed queue`);
        return;
      }
      console.log(`Time spent getting embed queue: ${(/* @__PURE__ */ new Date()).getTime() - datetime_start.getTime()}ms`);
      console.log(`Processing ${this.collection.collection_key} embed queue: ${embed_queue.length} items`);
      for (let i = 0; i < embed_queue.length; i += this.collection.embed_model.batch_size) {
        if (this.is_queue_halted) {
          this.is_queue_halted = false;
          break;
        }
        this._show_embed_progress_notice(embed_queue.length);
        const batch = embed_queue.slice(i, i + this.collection.embed_model.batch_size);
        await Promise.all(batch.map((item) => item.get_embed_input()));
        try {
          const start_time = Date.now();
          await this.embed_batch(batch);
          this.total_time += Date.now() - start_time;
        } catch (e) {
          if (e && e.message && e.message.includes("API key not set")) {
            this.halt_embed_queue_processing(`API key not set for ${this.collection.embed_model_key}
Please set the API key in the settings.`);
          }
          console.error(e);
          console.error(`Error processing ${this.collection.collection_key} embed queue: ` + JSON.stringify(e || {}, null, 2));
        }
        batch.forEach((item) => {
          item.embed_hash = item.read_hash;
          item._queue_save = true;
        });
        this.embedded_total += batch.length;
        this.total_tokens += batch.reduce((acc, item) => acc + (item.tokens || 0), 0);
        if (this.embedded_total - this.last_save_total > 1e3) {
          this.last_save_total = this.embedded_total;
          await this.collection.process_save_queue();
          if (this.collection.block_collection) {
            console.log(`Saving ${this.collection.block_collection.collection_key} block collection`);
            await this.collection.block_collection.process_save_queue();
          }
        }
      }
      this._show_embed_completion_notice(embed_queue.length);
      await this.collection.process_save_queue();
      if (this.collection.block_collection) {
        await this.collection.block_collection.process_save_queue();
      }
    } finally {
      this._is_processing_embed_queue = false;
    }
  }
  get should_show_embed_progress_notice() {
    if (Date.now() - (this.last_notice_time ?? 0) > 3e4) {
      return true;
    }
    return this.embedded_total - this.last_notice_embedded_total >= 100;
  }
  /**
   * Displays the embedding progress notice.
   * @private
   * @returns {void}
   */
  _show_embed_progress_notice(embed_queue_length) {
    if (embed_queue_length < 100) return;
    if (!this.should_show_embed_progress_notice) return;
    this.last_notice_time = Date.now();
    this.last_notice_embedded_total = this.embedded_total;
    this.collection.emit_event("embedding:progress_reported", {
      progress: this.embedded_total,
      total: embed_queue_length,
      tokens_per_second: this._calculate_embed_tokens_per_second(),
      model_name: this.collection.embed_model_key
    });
    this.notices?.show("embedding_progress", {
      progress: this.embedded_total,
      total: embed_queue_length,
      tokens_per_second: this._calculate_embed_tokens_per_second(),
      model_name: this.collection.embed_model_key
    });
  }
  /**
   * Displays the embedding completion notice.
   * @private
   * @returns {void}
   */
  _show_embed_completion_notice() {
    this.notices?.remove("embedding_progress");
    if (this.embedded_total > 100) {
      this.collection.emit_event("embedding:completed", {
        total_embeddings: this.embedded_total,
        tokens_per_second: this._calculate_embed_tokens_per_second(),
        model_name: this.collection.embed_model_key
      });
      this.notices?.show("embedding_complete", {
        total_embeddings: this.embedded_total,
        tokens_per_second: this._calculate_embed_tokens_per_second(),
        model_name: this.collection.embed_model_key
      });
    }
  }
  /**
   * Halts the embed queue processing.
   * @param {string|null} msg - Optional message.
   */
  halt_embed_queue_processing(msg = null) {
    this.is_queue_halted = true;
    console.log("Embed queue processing halted");
    this.notices?.remove("embedding_progress");
    this.collection.emit_event("embedding:paused", {
      progress: this.embedded_total,
      total: this.collection._embed_queue.length,
      tokens_per_second: this._calculate_embed_tokens_per_second(),
      model_name: this.collection.embed_model_key
    });
    this.notices?.show("embedding_paused", {
      progress: this.embedded_total,
      total: this.collection._embed_queue.length,
      tokens_per_second: this._calculate_embed_tokens_per_second(),
      model_name: this.collection.embed_model_key
    });
  }
  /**
   * Resumes the embed queue processing after a delay.
   * @param {number} [delay=0] - The delay in milliseconds before resuming.
   * @returns {void}
   */
  resume_embed_queue_processing(delay = 0) {
    console.log("resume_embed_queue_processing");
    this.notices?.remove("embedding_paused");
    setTimeout(() => {
      this.embedded_total = 0;
      this.process_embed_queue();
    }, delay);
  }
  /**
   * Calculates the number of tokens processed per second.
   * @private
   * @returns {number} Tokens per second.
   */
  _calculate_embed_tokens_per_second() {
    const elapsed_time = this.total_time / 1e3;
    return Math.round(this.total_tokens / (elapsed_time || 1));
  }
  /**
   * Resets the statistics related to embed queue processing.
   * @private
   * @returns {void}
   */
  _reset_embed_queue_stats() {
    this.collection._embed_queue = [];
    this.embedded_total = 0;
    this.is_queue_halted = false;
    this.last_save_total = 0;
    this.last_notice_embedded_total = 0;
    this.total_tokens = 0;
    this.total_time = 0;
  }
  get notices() {
    return this.collection.notices;
  }
};
var DefaultEntityVectorAdapter = class extends EntityVectorAdapter {
  get data() {
    return this.item.data;
  }
  /**
   * Retrieve the current vector embedding for this entity.
   * @async
   * @returns {Promise<number[]|undefined>} The entity's vector or undefined if not set.
   */
  async get_vec() {
    return this.vec;
  }
  /**
   * Store/update the vector embedding for this entity.
   * @async
   * @param {number[]} vec - The vector to set.
   * @returns {Promise<void>}
   */
  async set_vec(vec) {
    this.vec = vec;
  }
  /**
   * Delete/remove the vector embedding for this entity.
   * @async
   * @returns {Promise<void>}
   */
  async delete_vec() {
    if (this.item.data?.embeddings?.[this.item.embed_model_key]) {
      delete this.item.data.embeddings[this.item.embed_model_key].vec;
    }
  }
  // adds synchronous get/set for vec
  get vec() {
    return this.item.data?.embeddings?.[this.item.embed_model_key]?.vec;
  }
  set vec(vec) {
    if (!this.item.data.embeddings) {
      this.item.data.embeddings = {};
    }
    if (!this.item.data.embeddings[this.item.embed_model_key]) {
      this.item.data.embeddings[this.item.embed_model_key] = {};
    }
    this.item.data.embeddings[this.item.embed_model_key].vec = vec;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-entities/actions/find_connections.js
async function find_connections(params = {}) {
  const filter_opts = this.prepare_find_connections_filter_opts(params);
  const limit = params.filter?.limit || params.limit || this.env.settings.smart_view_filter?.results_limit || 10;
  const cache_key = this.key + murmur_hash_32_alphanumeric(JSON.stringify({ ...filter_opts, entity: null }));
  if (!this.env.connections_cache) this.env.connections_cache = {};
  if (!this.env.connections_cache[cache_key]) {
    const connections = (await this.nearest(filter_opts)).sort(sort_by_score).slice(0, limit);
    this.connections_to_cache(cache_key, connections);
  }
  return this.connections_from_cache(cache_key);
}
find_connections.action_type = "connections";

// node_modules/obsidian-smart-env/node_modules/smart-entities/smart_entity.js
var SmartEntity = class extends CollectionItem {
  /**
   * Creates an instance of SmartEntity.
   * @constructor
   * @param {Object} env - The environment instance.
   * @param {Object} [opts={}] - Configuration options.
   */
  constructor(env, opts = {}) {
    super(env, opts);
    this.entity_adapter = new DefaultEntityVectorAdapter(this);
  }
  /**
   * Provides default values for a SmartEntity instance.
   * @static
   * @readonly
   * @returns {Object} The default values.
   */
  static get defaults() {
    return {
      data: {
        path: null,
        last_embed: {
          hash: null
        },
        embeddings: {}
      }
    };
  }
  get vector_adapter() {
    if (!this._vector_adapter) {
      this._vector_adapter = new this.collection.opts.vector_adapter.item(this);
    }
    return this._vector_adapter;
  }
  /**
   * Initializes the SmartEntity instance.
   * Checks if the entity has a vector and if it matches the model dimensions.
   * If not, it queues an embed.
   * Removes embeddings for inactive models.
   * @returns {void}
   */
  init() {
    super.init();
    if (!this.vec || !this.vec.length) {
      this.vec = null;
      this.queue_embed();
    }
    Object.entries(this.data.embeddings || {}).forEach(([model, embedding]) => {
      if (model !== this.embed_model_key) {
        this.data.embeddings[model] = null;
        delete this.data.embeddings[model];
      }
    });
  }
  /**
   * Queues the entity for embedding.
   * @returns {void}
   */
  queue_embed() {
    this._queue_embed = true;
  }
  /**
   * Finds the nearest entities to this entity.
   * @param {Object} [filter={}] - Optional filters to apply.
   * @returns {Array<{item:Object, score:number}>} An array of result objects with score and item.
   */
  async nearest(filter = {}) {
    return await this.collection.nearest_to(this, filter);
  }
  /**
   * Prepares the input for embedding.
   * @async
   * @param {string} [content=null] - Optional content to use instead of calling subsequent read()
   * @returns {Promise<void>} Should be overridden in child classes.
   */
  async get_embed_input(content = null) {
  }
  // override in child class
  /**
   * Retrieves the embed input, either from cache or by generating it.
   * @readonly
   * @returns {string|Promise<string>} The embed input string or a promise resolving to it.
   */
  get embed_input() {
    return this._embed_input ? this._embed_input : this.get_embed_input();
  }
  /**
   * Prepares filter options for finding connections based on parameters.
   * @param {Object} [params={}] - Parameters for finding connections.
   * @returns {Object} The prepared filter options.
   */
  prepare_find_connections_filter_opts(params = {}) {
    const opts = {
      ...this.env.settings.smart_view_filter || {},
      ...params,
      entity: this
    };
    if (opts.filter?.limit) delete opts.filter.limit;
    if (opts.limit) delete opts.limit;
    if (opts.exclude_frontmatter_blocks) {
      if (!opts.exclude_key_ends_with_any) opts.exclude_key_ends_with_any = [];
      opts.exclude_key_ends_with_any.push("---frontmatter---");
    }
    return opts;
  }
  /**
   * Finds connections relevant to this entity based on provided parameters.
   * @async
   * @param {Object} [params={}] - Parameters for finding connections.
   * @returns {Array<{item:Object, score:number}>} An array of result objects with score and item.
   */
  async find_connections(params = {}) {
    return await this.actions.find_connections(params);
  }
  /**
   * Retrieves connections from the cache based on the cache key.
   * @param {string} cache_key - The cache key.
   * @returns {Array<{item:Object, score:number}>} The cached connections.
   */
  connections_from_cache(cache_key) {
    return this.env.connections_cache[cache_key];
  }
  /**
   * Stores connections in the cache with the provided cache key.
   * @param {string} cache_key - The cache key.
   * @param {Array<{item:Object, score:number}>} connections - The connections to cache.
   * @returns {void}
   */
  connections_to_cache(cache_key, connections) {
    this.env.connections_cache[cache_key] = connections;
  }
  get read_hash() {
    return this.data.last_read?.hash;
  }
  set read_hash(hash) {
    if (!this.data.last_read) this.data.last_read = {};
    this.data.last_read.hash = hash;
  }
  get embedding_data() {
    if (!this.data.embeddings[this.embed_model_key]) {
      this.data.embeddings[this.embed_model_key] = {};
    }
    return this.data.embeddings[this.embed_model_key];
  }
  get last_embed() {
    if (!this.embedding_data.last_embed) {
      this.embedding_data.last_embed = {};
      if (this.data.last_embed) {
        this.embedding_data.last_embed = this.data.last_embed;
        delete this.data.last_embed;
        this.queue_save();
      }
    }
    return this.embedding_data.last_embed;
  }
  get embed_hash() {
    return this.last_embed?.hash;
  }
  set embed_hash(hash) {
    if (!this.embedding_data.last_embed) this.embedding_data.last_embed = {};
    this.embedding_data.last_embed.hash = hash;
  }
  /**
   * Gets the embed link for the entity.
   * @readonly
   * @returns {string} The embed link.
   */
  get embed_link() {
    return `![[${this.path}]]`;
  }
  /**
   * Gets the key of the embedding model.
   * @readonly
   * @returns {string} The embedding model key.
   */
  get embed_model_key() {
    return this.collection.embed_model_key;
  }
  /**
   * @deprecated Use embed_model instead.
   * @readonly
   * @returns {Object} The smart embedding model.
   */
  get smart_embed() {
    return this.embed_model;
  }
  /**
   * Gets the embedding model instance from the collection.
   * @readonly
   * @returns {Object} The embedding model instance.
   */
  get embed_model() {
    return this.collection.embed_model;
  }
  /**
   * Determines if the entity should be embedded if unembedded. NOT the same as is_unembedded.
   * @readonly
   * @returns {boolean} True if no vector is set, false otherwise.
   */
  get should_embed() {
    return this.size > (this.settings?.min_chars || 300);
  }
  /**
   * Sets the error for the embedding model.
   * @param {string} error - The error message.
   */
  set error(error) {
    this.data.embeddings[this.embed_model_key].error = error;
  }
  /**
   * Gets the number of tokens associated with the entity's embedding.
   * @readonly
   * @returns {number|undefined} The number of tokens, or undefined if not set.
   */
  get tokens() {
    return this.last_embed?.tokens;
  }
  /**
   * Sets the number of tokens for the embedding.
   * @param {number} tokens - The number of tokens.
   */
  set tokens(tokens) {
    this.last_embed.tokens = tokens;
  }
  /**
   * Gets the vector representation from the entity adapter.
   * @readonly
   * @returns {Array<number>|undefined} The vector or undefined if not set.
   */
  get vec() {
    return this.entity_adapter.vec;
  }
  /**
   * Sets the vector representation in the entity adapter.
   * @param {Array<number>} vec - The vector to set.
   */
  set vec(vec) {
    this.entity_adapter.vec = vec;
    this._queue_embed = false;
    this._embed_input = null;
    this.queue_save();
  }
  /**
   * Removes all embeddings from the entity.
   * @returns {void}
   */
  remove_embeddings() {
    this.data.embeddings = null;
    this.queue_save();
  }
  /**
   * Retrieves the key of the entity.
   * @returns {string} The entity key.
   */
  get_key() {
    return this.data.key || this.data.path;
  }
  /**
   * Retrieves the path of the entity.
   * @readonly
   * @returns {string|null} The entity path.
   */
  get path() {
    return this.data.path;
  }
  get is_unembedded() {
    if (!this.vec) return true;
    if (!this.embed_hash || this.embed_hash !== this.read_hash) return true;
    return false;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-entities/smart_entities.js
var SmartEntities = class extends Collection {
  /**
   * Creates an instance of SmartEntities.
   * @constructor
   * @param {Object} env - The environment instance.
   * @param {Object} opts - Configuration options.
   */
  constructor(env, opts) {
    super(env, opts);
    this.entities_vector_adapter = new DefaultEntitiesVectorAdapter(this);
    this.model_instance_id = null;
    this._embed_queue = [];
  }
  /**
   * Initializes the SmartEntities instance by loading embeddings.
   * @async
   * @returns {Promise<void>}
   */
  async init() {
    await super.init();
    await this.load_smart_embed();
    if (!this.embed_model) {
      console.log(`SmartEmbed not loaded for **${this.collection_key}**. Continuing without embedding capabilities.`);
    }
  }
  /**
   * Loads the smart embedding model.
   * @async
   * @returns {Promise<void>}
   */
  async load_smart_embed() {
    if (this.embed_model_key === "None") return;
    if (!this.embed_model) return;
    if (this.embed_model.is_loading) return console.log(`SmartEmbedModel already loading for ${this.embed_model_key}`);
    if (this.embed_model.is_loaded) return console.log(`SmartEmbedModel already loaded for ${this.embed_model_key}`);
    try {
      console.log(`Loading SmartEmbedModel in ${this.collection_key}, current state: ${this.embed_model.state}`);
      await this.embed_model.load();
    } catch (e) {
      console.error(`Error loading SmartEmbedModel for ${this.embed_model.model_key}`);
      console.error(e);
    }
  }
  /**
   * Unloads the smart embedding model.
   * @async
   * @returns {Promise<void>}
   */
  async unload() {
    if (typeof this.embed_model?.unload === "function") {
      this.embed_model.unload();
    }
    super.unload();
  }
  /**
   * Gets the key of the embedding model.
   * @readonly
   * @returns {string} The embedding model key.
   */
  get embed_model_key() {
    return this.embed_model?.model_key;
  }
  /**
   * Gets or creates the container for smart embeddings in the DOM.
   * @readonly
   * @returns {HTMLElement|undefined} The container element or undefined if not available.
   */
  get smart_embed_container() {
    if (!this.model_instance_id) return console.log("model_key not set");
    const id = this.model_instance_id.replace(/[^a-zA-Z0-9]/g, "_");
    if (!window.document) return console.log("window.document not available");
    if (window.document.querySelector(`#${id}`)) return window.document.querySelector(`#${id}`);
    const container = window.document.createElement("div");
    container.id = id;
    window.document.body.appendChild(container);
    return container;
  }
  /**
   * @deprecated Use embed_model instead.
   * @readonly
   * @returns {Object} The smart embedding model.
   */
  get smart_embed() {
    return this.embed_model;
  }
  /**
   * Gets the embedding model instance.
   * @readonly
   * @returns {Object|null} The embedding model instance or null if none.
   */
  get embed_model() {
    if (!this.env._embed_model && this.env.opts.modules.smart_embed_model?.class) this.env._embed_model = new this.env.opts.modules.smart_embed_model.class({
      settings: this.settings.embed_model,
      adapters: this.env.opts.modules.smart_embed_model?.adapters,
      re_render_settings: () => this.env.render_component("collection_settings", this, { settings_container: this.settings_container }),
      reload_model: this.reload_embed_model.bind(this)
    });
    return this.env._embed_model;
  }
  set embed_model(embed_model) {
    this.env._embed_model = embed_model;
  }
  reload_embed_model() {
    console.log("reload_embed_model");
    this.embed_model.unload();
    this.env._embed_model = null;
  }
  /**
   * Finds the nearest entities to a given entity.
   * @async
   * @param {Object} entity - The reference entity.
   * @param {Object} [filter={}] - Optional filters to apply.
   * @returns {Promise<Array<{item:Object, score:number}>>} An array of result objects with score and item.
   */
  async nearest_to(entity, filter = {}) {
    return await this.nearest(entity.vec, filter);
  }
  /**
   * Finds the nearest entities to a vector using the default adapter.
   * @async
   * @param {Array<number>} vec - The vector to compare against.
   * @param {Object} [filter={}] - Optional filters to apply.
   * @returns {Promise<Array<{item:Object, score:number}>>} An array of result objects with score and item.
   */
  async nearest(vec, filter = {}) {
    if (!vec) {
      console.warn("nearest: no vec");
      return [];
    }
    return await this.entities_vector_adapter.nearest(vec, filter);
  }
  /**
   * Finds the furthest entities from a vector using the default adapter.
   * @async
   * @param {Array<number>} vec - The vector to compare against.
   * @param {Object} [filter={}] - Optional filters to apply.
   * @returns {Promise<Array<{item:Object, score:number}>>} An array of result objects with score and item.
   */
  async furthest(vec, filter = {}) {
    if (!vec) return console.warn("furthest: no vec");
    return await this.entities_vector_adapter.furthest(vec, filter);
  }
  /**
   * Gets the file name based on collection key and embedding model key.
   * @readonly
   * @returns {string} The constructed file name.
   */
  get file_name() {
    return this.collection_key + "-" + this.embed_model_key.split("/").pop();
  }
  /**
   * Calculates the relevance of an item based on the search filter.
   * @param {Object} item - The item to calculate relevance for.
   * @param {Object} search_filter - The search filter containing keywords.
   * @returns {number} The relevance score:
   *                   1 if any keyword is found in the item's path,
   *                   0 otherwise (default relevance for keyword in content).
   */
  calculate_relevance(item, search_filter) {
    if (search_filter.keywords.some((keyword) => item.path?.includes(keyword))) return 1;
    return 0;
  }
  /**
   * Prepares the filter options by incorporating entity-based filters.
   * @param {Object} [opts={}] - The filter options.
   * @param {Object} [opts.entity] - The entity to base the filters on.
   * @param {string|string[]} [opts.exclude_filter] - Keys or prefixes to exclude.
   * @param {string|string[]} [opts.include_filter] - Keys or prefixes to include.
   * @param {boolean} [opts.exclude_inlinks] - Whether to exclude inlinks of the entity.
   * @param {boolean} [opts.exclude_outlinks] - Whether to exclude outlinks of the entity.
   * @returns {Object} The modified filter options.
   */
  prepare_filter(opts = {}) {
    const {
      entity,
      exclude_filter,
      include_filter,
      exclude_inlinks,
      exclude_outlinks
    } = opts;
    if (entity) {
      if (typeof opts.exclude_key_starts_with_any === "undefined") opts.exclude_key_starts_with_any = [];
      if (opts.exclude_key_starts_with) {
        opts.exclude_key_starts_with_any = [
          opts.exclude_key_starts_with
        ];
        delete opts.exclude_key_starts_with;
      }
      opts.exclude_key_starts_with_any.push(entity.source_key || entity.key);
      if (exclude_filter) {
        if (!Array.isArray(opts.exclude_key_includes_any)) opts.exclude_key_includes_any = [];
        if (typeof exclude_filter === "string") {
          if (exclude_filter.includes(",")) {
            opts.exclude_key_includes_any.push(...exclude_filter.split(","));
          } else {
            opts.exclude_key_includes_any.push(exclude_filter);
          }
        }
      }
      if (include_filter) {
        if (!Array.isArray(opts.key_includes_any)) opts.key_includes_any = [];
        if (typeof include_filter === "string") {
          if (include_filter.includes(",")) {
            opts.key_includes_any.push(...include_filter.split(","));
          } else {
            opts.key_includes_any.push(include_filter);
          }
        }
      }
      if (exclude_inlinks && entity?.inlinks?.length) {
        if (!Array.isArray(opts.exclude_key_starts_with_any)) opts.exclude_key_starts_with_any = [];
        opts.exclude_key_starts_with_any.push(...entity.inlinks);
      }
      if (exclude_outlinks && entity?.outlinks?.length) {
        if (!Array.isArray(opts.exclude_key_starts_with_any)) opts.exclude_key_starts_with_any = [];
        opts.exclude_key_starts_with_any.push(...entity.outlinks);
      }
    }
    return opts;
  }
  /**
   * Looks up entities based on hypothetical content.
   * @async
   * @param {Object} [params={}] - The parameters for the lookup.
   * @param {Array<string>} [params.hypotheticals=[]] - The hypothetical content to lookup.
   * @param {Object} [params.filter] - The filter to use for the lookup.
   * @param {number} [params.k] - Deprecated: Use `filter.limit` instead.
   * @returns {Promise<Array<Result>|Object>} The lookup results or an error object.
   */
  async lookup(params = {}) {
    const { hypotheticals = [] } = params;
    if (!hypotheticals?.length) return { error: "hypotheticals is required" };
    if (!this.embed_model) return { error: "Embedding search is not enabled." };
    const hyp_vecs = await this.embed_model.embed_batch(hypotheticals.map((h) => ({ embed_input: h })));
    const limit = params.filter?.limit || params.k || this.env.settings.lookup_k || 10;
    if (params.filter?.limit) delete params.filter.limit;
    const filter = {
      ...this.env.chats?.current?.scope || {},
      // DEPRECATED: since Smart Chat v1 (remove after removing legacy Smart Chat v0 from obsidian-smart-connections)
      ...params.filter || {}
    };
    const results = await hyp_vecs.reduce(async (acc_promise, embedding, i) => {
      const acc = await acc_promise;
      const results2 = await this.nearest(embedding.vec, filter);
      results2.forEach((result) => {
        if (!acc[result.item.path] || result.score > acc[result.item.path].score) {
          acc[result.item.path] = {
            key: result.item.key,
            score: result.score,
            item: result.item,
            hypothetical_i: i
          };
        } else {
          result.score = acc[result.item.path].score;
        }
      });
      return acc;
    }, Promise.resolve({}));
    const top_k = Object.values(results).sort(sort_by_score).slice(0, limit);
    console.log(`Found and returned ${top_k.length} ${this.collection_key}.`);
    return top_k;
  }
  /**
   * Gets the configuration for settings.
   * @readonly
   * @returns {Object} The settings configuration.
   */
  get settings_config() {
    return settings_config;
  }
  /**
   * @deprecated use env.render_component('collection_settings', this) instead (2025-05-25: decouple UI from collections)
   */
  async render_settings(container = this.settings_container, opts = {}) {
    container = await this.render_collection_settings(container, opts);
    const embed_model_settings_frag = await this.env.render_component("settings", this.embed_model, opts);
    container.appendChild(embed_model_settings_frag);
    return container;
  }
  /**
   * Gets the notices from the environment.
   * @readonly
   * @returns {Object} The notices object.
   */
  get notices() {
    return this.env.smart_connections_plugin?.notices || this.env.main?.notices;
  }
  /**
   * Gets the embed queue containing items to be embedded.
   * @readonly
   * @returns {Array<Object>} The embed queue.
   */
  get embed_queue() {
    if (!this._embed_queue?.length) {
      console.time(`Building embed queue`);
      this._embed_queue = Object.values(this.items).filter((item) => item._queue_embed || item.is_unembedded && item.should_embed);
      console.timeEnd(`Building embed queue`);
    }
    return this._embed_queue;
  }
  /**
   * Processes the embed queue by delegating to the default vector adapter.
   * @async
   * @returns {Promise<void>}
   */
  async process_embed_queue() {
    await this.entities_vector_adapter.process_embed_queue();
  }
  /**
   * Handles changes to the embedding model by reinitializing and processing the load queue.
   * @async
   * @returns {Promise<void>}
   */
  async embed_model_changed() {
    await this.unload();
    await this.init();
    this.render_settings();
    await this.process_load_queue();
  }
  get connections_filter_config() {
    return connections_filter_config;
  }
};
var settings_config = {
  "min_chars": {
    name: "Minimum length",
    type: "number",
    description: "Minimum length of entity to embed (in characters).",
    placeholder: "Enter number ex. 300",
    default: 300
  }
};
var connections_filter_config = {
  "smart_view_filter.show_full_path": {
    "name": "Show full path",
    "type": "toggle",
    "description": "Turning on will include the folder path in the connections results."
  },
  "smart_view_filter.render_markdown": {
    "name": "Render markdown",
    "type": "toggle",
    "description": "Turn off to prevent rendering markdown and display connection results as plain text."
  },
  "smart_view_filter.results_limit": {
    "name": "Results limit",
    "type": "number",
    "description": "Adjust the number of connections displayed in the connections view (default 20).",
    "default": 20
  },
  "smart_view_filter.exclude_inlinks": {
    "name": "Exclude inlinks (backlinks)",
    "type": "toggle",
    "description": "Exclude notes that already link to the current note from the connections results."
  },
  "smart_view_filter.exclude_outlinks": {
    "name": "Exclude outlinks",
    "type": "toggle",
    "description": "Exclude notes that are already linked from within the current note from appearing in the connections results."
  },
  "smart_view_filter.include_filter": {
    "name": "Include filter",
    "type": "text",
    "description": "Notes must match this value in their file/folder path. Matching notes will be included in the connections results. Separate multiple values with commas."
  },
  "smart_view_filter.exclude_filter": {
    "name": "Exclude filter",
    "type": "text",
    "description": "Notes must *not* match this value in their file/folder path. Matching notes will be *excluded* from the connections results. Separate multiple values with commas."
  },
  // should be better scoped at source-level (leaving here for now since connections_filter_config needs larger refactor)
  "smart_view_filter.exclude_blocks_from_source_connections": {
    "name": "Hide blocks in results",
    "type": "toggle",
    "description": "Show only sources in the connections results (no blocks)."
  },
  // hide frontmatter blocks from connections results
  "smart_view_filter.exclude_frontmatter_blocks": {
    "name": "Hide frontmatter blocks in results",
    "type": "toggle",
    "description": "Show only sources in the connections results (no frontmatter blocks)."
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-sources/components/source.js
async function render2(entity, opts = {}) {
  let markdown;
  if (should_render_embed(entity)) markdown = `${entity.embed_link}

${await entity.read()}`;
  else markdown = process_for_rendering(await entity.read());
  let frag;
  if (source.env.settings.smart_view_filter.render_markdown) frag = await this.render_markdown(markdown, source);
  else frag = this.create_doc_fragment(`<span>${markdown}</span>`);
  return await post_process2.call(this, source, frag, opts);
}
function process_for_rendering(content) {
  if (content.includes("```dataview")) content = content.replace(/```dataview/g, "```\\dataview");
  if (content.includes("![[")) content = content.replace(/\!\[\[/g, "! [[");
  return content;
}
async function post_process2(scope, frag, opts = {}) {
  return frag;
}
function should_render_embed(entity) {
  if (!entity) return false;
  if (entity.is_media) return true;
  return false;
}

// node_modules/obsidian-smart-env/node_modules/smart-sources/actions/find_connections.js
async function find_connections2(params = {}) {
  let connections;
  const filter_settings = this.env.settings.smart_view_filter;
  const exclude_blocks_from_source_connections = params.exclude_blocks_from_source_connections ?? filter_settings?.exclude_blocks_from_source_connections ?? false;
  if (this.block_collection.settings.embed_blocks && !exclude_blocks_from_source_connections) connections = [];
  else connections = await find_connections.call(this, params);
  const filter_opts = this.prepare_find_connections_filter_opts(params);
  const limit = params.filter?.limit || params.limit || this.env.settings.smart_view_filter?.results_limit || 20;
  if (params.filter?.limit) delete params.filter.limit;
  if (params.limit) delete params.limit;
  if (!exclude_blocks_from_source_connections) {
    const cache_key = this.key + murmur_hash_32_alphanumeric(JSON.stringify({ ...filter_opts, entity: null })) + "_blocks";
    if (!this.env.connections_cache) this.env.connections_cache = {};
    if (!this.env.connections_cache[cache_key]) {
      const nearest = (await this.env.smart_blocks.nearest(this.vec, filter_opts)).sort(sort_by_score).slice(0, limit);
      this.connections_to_cache(cache_key, nearest);
    }
    connections = [
      ...connections,
      ...this.connections_from_cache(cache_key)
    ].sort(sort_by_score).slice(0, limit);
  }
  return connections;
}
find_connections2.action_type = "connections";

// node_modules/obsidian-smart-env/node_modules/smart-sources/smart_source.js
var SmartSource = class extends SmartEntity {
  /**
   * Provides default values for a SmartSource instance.
   * @static
   * @readonly
   * @returns {Object} The default values.
   */
  static get defaults() {
    return {
      data: {
        last_read: {
          hash: null,
          mtime: 0
        },
        embeddings: {}
      },
      _embed_input: null,
      // Stored temporarily
      _queue_load: true
    };
  }
  /**
   * Initializes the SmartSource instance by queuing an import if blocks are missing.
   * @returns {void}
   */
  init() {
    super.init();
    if (!this.data.blocks) this.queue_import();
  }
  /**
   * Queues the SmartSource for import.
   * @returns {void}
   */
  queue_import() {
    this._queue_import = true;
  }
  /**
   * Imports the SmartSource by checking for updates and parsing content.
   * @async
   * @returns {Promise<void>}
   */
  async import() {
    this._queue_import = false;
    try {
      await this.source_adapter?.import();
    } catch (err) {
      if (err.code === "ENOENT") {
        console.log(`Smart Connections: Deleting ${this.path} data because it no longer exists on disk`);
        this.delete();
      } else {
        console.warn("Smart Connections: Error during import: re-queueing import", err);
        this.queue_import();
      }
    }
  }
  /**
   * @deprecated likely extraneous
   */
  async parse_content(content = null) {
    const parse_fns = this.env?.opts?.collections?.smart_sources?.content_parsers || [];
    for (const fn of parse_fns) {
      await fn(this, content);
    }
    if (this.data.last_import?.hash === this.data.last_read?.hash) {
      if (this.data.blocks) return;
    }
  }
  /**
   * Finds connections relevant to this SmartSource based on provided parameters.
   * @async
   * @param {Object} [params={}] - Parameters for finding connections.
   * @param {boolean} [params.exclude_blocks_from_source_connections=false] - Whether to exclude block connections from source connections.
   * @param {Object} [params.exclude_frontmatter_blocks=true] - Whether to exclude frontmatter blocks from source connections.
   * @returns {Array<SmartSource>} An array of relevant SmartSource entities.
   */
  async find_connections(params = {}) {
    return await this.actions.find_connections(params);
  }
  /**
   * Prepares the embed input for the SmartSource by reading content and applying exclusions.
   * @async
   * @returns {Promise<string|false>} The embed input string or `false` if already embedded.
   */
  async get_embed_input(content = null) {
    if (typeof this._embed_input === "string" && this._embed_input.length) return this._embed_input;
    if (!content) content = await this.read();
    if (!content) {
      console.warn("SmartSource.get_embed_input: No content available for embedding: " + this.path);
      return "";
    }
    if (this.excluded_lines.length) {
      const content_lines = content.split("\n");
      this.excluded_lines.forEach((lines) => {
        const { start, end } = lines;
        for (let i = start; i <= end; i++) {
          content_lines[i] = "";
        }
      });
      content = content_lines.filter((line) => line.length).join("\n");
    }
    const breadcrumbs = this.path.split("/").join(" > ").replace(".md", "");
    const max_tokens = this.collection.embed_model.model_config.max_tokens || 500;
    const max_chars = Math.floor(max_tokens * 3.7);
    this._embed_input = `${breadcrumbs}:
${content}`.substring(0, max_chars);
    return this._embed_input;
  }
  /**
   * Opens the SmartSource note in the SmartConnections plugin.
   * @returns {void}
   */
  open() {
    this.env.smart_connections_plugin.open_note(this.path);
  }
  /**
   * Retrieves the block associated with a specific line number.
   * @param {number} line - The line number to search for.
   * @returns {SmartBlock|null} The corresponding SmartBlock or `null` if not found.
   */
  get_block_by_line(line) {
    return Object.entries(this.data.blocks || {}).reduce((acc, [sub_key, range]) => {
      if (acc) return acc;
      if (range[0] <= line && range[1] >= line) {
        const block = this.block_collection.get(this.key + sub_key);
        if (block?.vec) return block;
      }
      return acc;
    }, null);
  }
  /**
   * Checks if the source file exists in the file system.
   * @async
   * @returns {Promise<boolean>} A promise that resolves to `true` if the file exists, `false` otherwise.
   */
  async has_source_file() {
    return await this.fs.exists(this.path);
  }
  // CRUD
  /**
   * FILTER/SEARCH METHODS
   */
  /**
   * Searches for keywords within the entity's data and content.
   * @async
   * @param {Object} search_filter - The search filter object.
   * @param {string[]} search_filter.keywords - An array of keywords to search for.
   * @param {string} [search_filter.type='any'] - The type of search to perform. 'any' counts all matching keywords, 'all' counts only if all keywords match.
   * @returns {Promise<number>} A promise that resolves to the number of matching keywords.
   */
  async search(search_filter = {}) {
    const { keywords, type = "any", limit } = search_filter;
    if (!keywords || !Array.isArray(keywords)) {
      console.warn("Entity.search: keywords not set or is not an array");
      return 0;
    }
    if (limit && this.collection.search_results_ct >= limit) return 0;
    const lowercased_keywords = keywords.map((keyword) => keyword.toLowerCase());
    const content = await this.read();
    if (!content || typeof content !== "string" || !content.length) {
      if (content.mime_type) {
        console.warn(`Entity.search: No content available for searching: ${this.path}, mime_type: ${content.mime_type}`);
      } else {
        console.warn(`Entity.search: No content available for searching: ${this.path}, content: ${content ? JSON.stringify(content) : "empty"}`);
      }
      return 0;
    }
    const lowercased_content = content.toLowerCase();
    const lowercased_path = this.path.toLowerCase();
    const matching_keywords = lowercased_keywords.filter(
      (keyword) => lowercased_path.includes(keyword) || lowercased_content.includes(keyword)
    );
    if (type === "all") {
      return matching_keywords.length === lowercased_keywords.length ? matching_keywords.length : 0;
    } else {
      return matching_keywords.length;
    }
  }
  /**
   * ADAPTER METHODS
   */
  use_source_adapter(method, ...args) {
    if (!this.source_adapter) {
      console.warn(`No source adapter available for ${this.key}. Cannot use method ${method}.`);
      return;
    }
    if (typeof this.source_adapter[method] !== "function") {
      console.warn(`Source adapter for ${this.key} does not implement method ${method}.`);
      return;
    }
    return this.source_adapter[method](...args);
  }
  /**
   * Appends content to the end of the source file.
   * @async
   * @param {string} content - The content to append to the file.
   * @returns {Promise<void>} A promise that resolves when the operation is complete.
   */
  async append(content) {
    await this.use_source_adapter("append", content);
    await this.import();
  }
  /**
   * Updates the entire content of the source file.
   * @async
   * @param {string} full_content - The new content to write to the file.
   * @param {Object} [opts={}] - Additional options for the update.
   * @returns {Promise<void>} A promise that resolves when the operation is complete.
   */
  async update(full_content, opts = {}) {
    try {
      await this.use_source_adapter("update", full_content, opts);
      await this.import();
    } catch (error) {
      console.error(`Error during update for ${this.key}:`, error);
    }
  }
  /**
   * Reads the entire content of the source file.
   * @async
   * @param {Object} [opts={}] - Additional options for reading.
   * @returns {Promise<string>} A promise that resolves with the content of the file.
   */
  async read(opts = {}) {
    try {
      return await this.use_source_adapter("read", opts) || "";
    } catch (error) {
      console.error(`Error during reading ${this.key} (returning empty string)`, error);
      return "";
    }
  }
  /**
   * Removes the source file from the file system and deletes the entity.
   * This is different from `delete()` because it also removes the source file.
   * @async
   * @returns {Promise<void>} A promise that resolves when the operation is complete.
   */
  async remove() {
    try {
      await this.use_source_adapter("remove");
    } catch (error) {
      console.error(`Error during remove for ${this.key}:`, error);
    }
  }
  /**
   * Moves the current source to a new location.
   * Handles the destination as a string (new path) or entity (block or source).
   *
   * @async
   * @param {string|Object|SmartEntity} entity_ref - The destination path or entity to move to.
   * @throws {Error} If the entity reference is invalid.
   * @returns {Promise<void>} A promise that resolves when the move operation is complete.
   */
  async move_to(entity_ref) {
    try {
      await this.use_source_adapter("move_to", entity_ref);
    } catch (error) {
      console.error(`Error during move for ${this.key}:`, error);
    }
  }
  /**
   * Merges the given content into the current source.
   * Parses the content into blocks and either appends to existing blocks, replaces blocks, or replaces all content.
   *
   * @async
   * @param {string} content - The content to merge into the current source.
   * @param {Object} [opts={}] - Options object.
   * @param {string} [opts.mode='append'] - The merge mode: 'append', 'replace_blocks', or 'replace_all'.
   * @returns {Promise<void>}
   */
  async merge(content, opts = {}) {
    try {
      await this.use_source_adapter("merge", content, opts);
      await this.import();
    } catch (error) {
      console.error(`Error during merge for ${this.key}:`, error);
    }
  }
  /**
   * Handles errors during the load process.
   * @param {Error} err - The error encountered during load.
   * @returns {void}
   */
  on_load_error(err) {
    super.on_load_error(err);
    if (err.code === "ENOENT") {
      this._queue_load = false;
      this.queue_import();
    }
  }
  // GETTERS
  /**
   * Retrieves the block collection associated with SmartSources.
   * @readonly
   * @returns {SmartBlocks} The block collection instance.
   */
  get block_collection() {
    return this.env.smart_blocks;
  }
  /**
   * Retrieves the vector representations of all blocks within the SmartSource.
   * @readonly
   * @returns {Array<Array<number>>} An array of vectors.
   */
  get block_vecs() {
    return this.blocks.map((block) => block.vec).filter((vec) => vec);
  }
  /**
   * Retrieves all blocks associated with the SmartSource.
   * @readonly
   * @returns {Array<SmartBlock>} An array of SmartBlock instances.
   * @description
   * Uses block refs (Fastest) to get blocks without iterating over all blocks
   */
  get blocks() {
    if (this.data.blocks) return this.block_collection.get_many(Object.keys(this.data.blocks).map((key) => this.key + key));
    return [];
  }
  /**
   * Determines if the SmartSource is excluded from processing.
   * @readonly
   * @returns {boolean} `true` if excluded, `false` otherwise.
   */
  get excluded() {
    return this.fs.is_excluded(this.path);
  }
  /**
   * Retrieves the lines excluded from embedding.
   * @readonly
   * @returns {Array<Object>} An array of objects with `start` and `end` line numbers.
   */
  get excluded_lines() {
    return this.blocks.filter((block) => block.excluded).map((block) => block.lines);
  }
  /**
   * Retrieves the file system instance from the SmartSource's collection.
   * @readonly
   * @returns {SmartFS} The file system instance.
   */
  get fs() {
    return this.collection.fs;
  }
  /**
   * Retrieves the file object associated with the SmartSource.
   * @readonly
   * @returns {Object} The file object.
   */
  get file() {
    return this.fs.files[this.path];
  }
  /**
   * Retrieves the file name of the SmartSource.
   * @readonly
   * @returns {string} The file name.
   */
  get file_name() {
    return this.path.split("/").pop();
  }
  /**
   * Retrieves the file path of the SmartSource.
   * @readonly
   * @returns {string} The file path.
   */
  get file_path() {
    return this.path;
  }
  /**
   * Retrieves the file type based on the file extension.
   * @readonly
   * @returns {string} The file type in lowercase.
   */
  get file_type() {
    if (!this._ext) {
      this._ext = this.collection.get_extension_for_path(this.path) || "md";
    }
    return this._ext;
  }
  /**
   * Retrieves the modification time of the SmartSource.
   * @readonly
   * @returns {number} The modification time.
   */
  get mtime() {
    return this.file?.stat?.mtime || 0;
  }
  /**
   * Retrieves the size of the SmartSource.
   * @readonly
   * @returns {number} The size.
   */
  get size() {
    return this.source_adapter?.size || 0;
  }
  /**
   * Retrieves the last import stat of the SmartSource.
   * @readonly
   * @returns {Object} The last import stat.
   */
  get last_import() {
    return this.data?.last_import;
  }
  /**
   * Retrieves the last import modification time of the SmartSource.
   * @readonly
   * @returns {number} The last import modification time.
   */
  get last_import_mtime() {
    return this.last_import?.mtime || 0;
  }
  /**
   * Retrieves the last import size of the SmartSource.
   * @readonly
   * @returns {number} The last import size.
   */
  get last_import_size() {
    return this.last_import?.size || 0;
  }
  /**
   * Retrieves the paths of inlinks to this SmartSource.
   * @readonly
   * @returns {Array<string>} An array of inlink paths.
   */
  get inlinks() {
    return Object.keys(this.collection.links?.[this.path] || {});
  }
  get is_media() {
    return this.source_adapter.is_media || false;
  }
  /**
   * Determines if the SmartSource is gone (i.e., the file no longer exists).
   * @readonly
   * @returns {boolean} `true` if gone, `false` otherwise.
   */
  get is_gone() {
    return !this.file;
  }
  /**
   * Retrieves the last read hash of the SmartSource.
   * @readonly
   * @returns {string|undefined} The last read hash or `undefined` if not set.
   */
  get last_read() {
    return this.data.last_read;
  }
  get metadata() {
    return this.data.metadata;
  }
  get outdated() {
    return this.source_adapter.outdated;
  }
  /**
   * Retrieves the outlink paths from the SmartSource.
   * @readonly
   * @returns {Array<string>} An array of outlink paths.
   */
  get outlinks() {
    return (this.data.outlinks || []).map((link) => {
      const link_ref = link?.target || link;
      if (typeof link_ref !== "string") return null;
      if (link_ref.startsWith("http")) return null;
      const link_path = this.fs.get_link_target_path(link_ref, this.file_path);
      return link_path;
    }).filter((link_path) => link_path);
  }
  get path() {
    return this.data.path || this.data.key;
  }
  get source_adapters() {
    return this.collection.source_adapters;
  }
  get source_adapter() {
    if (this._source_adapter) return this._source_adapter;
    if (this.source_adapters[this.file_type]) this._source_adapter = new this.source_adapters[this.file_type](this);
    else {
      for (const Adapter of Object.values(this.source_adapters)) {
        if (typeof Adapter.detect_type !== "function") continue;
        if (Adapter.detect_type(this)) {
          this._source_adapter = new Adapter(this);
          break;
        }
      }
    }
    return this._source_adapter;
  }
  // COMPONENTS
  /**
   * Retrieves the component responsible for rendering the SmartSource.
   * @deprecated
   * @readonly
   * @returns {Function} The render function for the source component.
   */
  get component() {
    return render2;
  }
  // Currently unused, but useful for later
  /**
   * Calculates the mean vector of all blocks within the SmartSource.
   * @readonly
   * @returns {Array<number>|null} The mean vector or `null` if no vectors are present.
   */
  get mean_block_vec() {
    if (this._mean_block_vec) {
      this._mean_block_vec = compute_centroid(this.block_vecs);
    }
    return this._mean_block_vec;
  }
  /**
   * Calculates the median vector of all blocks within the SmartSource.
   * @readonly
   * @returns {Array<number>|null} The median vector or `null` if no vectors are present.
   */
  get median_block_vec() {
    if (this._median_block_vec) {
      this._median_block_vec = compute_medoid(this.block_vecs);
    }
    return this._median_block_vec;
  }
  // DEPRECATED methods
  /**
   * @async
   * @deprecated Use `read` instead.
   * @returns {Promise<string>} A promise that resolves with the content of the file.
   */
  async _read() {
    return await this.source_adapter._read();
  }
  /**
   * @async
   * @deprecated Use `remove` instead.
   * @returns {Promise<void>} A promise that resolves when the entity is destroyed.
   */
  async destroy() {
    await this.remove();
  }
  /**
   * @async
   * @deprecated Use `update` instead.
   * @param {string} content - The content to update.
   * @returns {Promise<void>}
   */
  async _update(content) {
    await this.source_adapter.update(content);
  }
  /**
   * @deprecated Use `source` instead.
   * @readonly
   * @returns {SmartSource} The associated SmartSource instance.
   */
  get t_file() {
    return this.fs.files[this.path];
  }
};
var smart_source_default = {
  class: SmartSource,
  actions: {
    find_connections: find_connections2
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-sources/smart_sources.js
var SmartSources = class extends SmartEntities {
  /**
   * Creates an instance of SmartSources.
   * @constructor
   * @param {Object} env - The environment instance.
   * @param {Object} [opts={}] - Configuration options.
   */
  constructor(env, opts = {}) {
    super(env, opts);
    this.search_results_ct = 0;
    this._excluded_headings = null;
  }
  /**
   * Initializes the SmartSources instance by performing an initial scan of sources.
   * @async
   * @returns {Promise<void>}
   */
  async init() {
    await super.init();
    await this.init_items();
  }
  /**
   * Initializes items by letting each adapter do any necessary file-based scanning.
   * Adapters that do not rely on file scanning can skip or do nothing.
   * @async
   * @returns {Promise<void>}
   */
  async init_items() {
    this.emit_event("source:initial_scan_started");
    this.show_process_notice("initial_scan");
    for (const AdapterClass of Object.values(this.source_adapters)) {
      if (typeof AdapterClass.init_items === "function") {
        await AdapterClass.init_items(this);
      }
    }
    this.clear_process_notice("initial_scan");
    this.emit_event("source:initial_scan_completed");
    this.notices?.show("done_initial_scan", { collection_key: this.collection_key });
  }
  /**
   * Creates (or returns existing) a SmartSource for a given file path, if the extension is recognized.
   * @param {string} file_path - The path to the file or pseudo-file
   * @returns {SmartSource|undefined} The newly created or existing SmartSource, or undefined if no recognized extension
   */
  init_file_path(file_path) {
    const ext = this.get_extension_for_path(file_path);
    if (!ext) {
      return;
    }
    if (this.fs.is_excluded(file_path)) {
      console.warn(`File ${file_path} is excluded from processing.`);
      return;
    }
    if (!this.fs.files[file_path]) {
      this.fs.include_file(file_path);
    }
    if (this.items[file_path]) return this.items[file_path];
    const item = new this.item_type(this.env, { path: file_path });
    this.items[file_path] = item;
    item.queue_import();
    item.queue_load();
    return item;
  }
  /**
   * Looks for an extension in descending order:
   * e.g. split "my.file.name.github" -> ["my","file","name","github"]
   * Try 'file.name.github', 'name.github', 'github'
   * Return the first that is in 'source_adapters'
   * @param {string} file_path
   * @returns {string|undefined} recognized extension, or undefined if none
   */
  get_extension_for_path(file_path) {
    if (!file_path) return void 0;
    const pcs = file_path.split(".");
    if (pcs.length < 2) return void 0;
    let last_ext;
    pcs.shift();
    while (pcs.length) {
      const supported_ext = pcs.join(".").toLowerCase();
      if (this.source_adapters[supported_ext]) {
        return supported_ext;
      }
      last_ext = pcs.shift();
    }
    return last_ext;
    return void 0;
  }
  /**
   * Builds a map of links between sources.
   * @returns {Object} An object mapping link paths to source keys.
   */
  build_links_map() {
    const start_time = Date.now();
    this.links = {};
    for (const source2 of Object.values(this.items)) {
      for (const link of source2.outlinks) {
        if (!this.links[link]) this.links[link] = {};
        this.links[link][source2.key] = true;
      }
    }
    const end_time = Date.now();
    console.log(`Time spent building links: ${end_time - start_time}ms`);
    return this.links;
  }
  /**
   * Creates a new source with the given key and content.
   * @async
   * @param {string} key - The key (path) of the new source.
   * @param {string} content - The content to write to the new source.
   * @returns {Promise<SmartSource>} The created SmartSource instance.
   */
  async create(key, content) {
    await this.fs.write(key, content);
    await this.fs.refresh();
    const source2 = await this.create_or_update({ path: key });
    await source2.import();
    return source2;
  }
  /**
   * Performs a lexical search for matching SmartSource content.
   * @async
   * @param {Object} search_filter - The filter criteria for the search.
   * @param {string[]} search_filter.keywords - An array of keywords to search for.
   * @param {number} [search_filter.limit] - The maximum number of results to return.
   * @returns {Promise<Array<SmartSource>>} A promise that resolves to an array of matching SmartSource entities.
   */
  async search(search_filter = {}) {
    const {
      keywords,
      limit,
      ...filter_opts
    } = search_filter;
    if (!keywords) {
      console.warn("search_filter.keywords not set");
      return [];
    }
    this.search_results_ct = 0;
    const initial_results = this.filter(filter_opts);
    const search_results = [];
    for (let i = 0; i < initial_results.length; i += 10) {
      const batch = initial_results.slice(i, i + 10);
      const batch_results = await Promise.all(
        batch.map(async (item) => {
          try {
            const matches = await item.search(search_filter);
            if (matches) {
              this.search_results_ct++;
              return { item, score: matches };
            } else return null;
          } catch (error) {
            console.error(`Error searching item ${item.id || "unknown"}:`, error);
            return null;
          }
        })
      );
      search_results.push(...batch_results.filter(Boolean));
    }
    return search_results.sort((a, b) => b.score - a.score).map((result) => result.item);
  }
  /**
   * Looks up entities based on the provided parameters.
   * @async
   * @param {Object} [params={}] - Parameters for the lookup.
   * @param {Object} [params.filter] - Filter options.
   * @param {number} [params.k] - Deprecated. Use `params.filter.limit` instead.
   * @returns {Promise<Array<SmartSource>>} A promise that resolves to an array of matching SmartSource entities.
   */
  async lookup(params = {}) {
    const limit = params.filter?.limit || params.k || this.env.settings.lookup_k || 10;
    if (params.filter?.limit) delete params.filter.limit;
    if (params.collection) {
      const collection = this.env[params.collection];
      if (collection && collection.lookup) {
        delete params.collection;
        params.skip_blocks = true;
        const results2 = await collection.lookup(params);
        if (results2.error) {
          console.warn(results2.error);
          return [];
        }
        return results2.slice(0, limit);
      }
    }
    let results = await super.lookup(params);
    if (results.error) {
      console.warn(results.error);
      return [];
    }
    if (this.block_collection?.settings?.embed_blocks && !params.skip_blocks) {
      results = [
        ...results,
        ...await this.block_collection.lookup(params)
      ].sort(sort_by_score);
    }
    return results.slice(0, limit);
  }
  /**
   * Processes the load queue by loading items and optionally importing them.
   * Called after a "re-load" from settings, or after environment init.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    await super.process_load_queue();
    if (this.collection_key === "smart_sources" && this.env.smart_blocks) {
      Object.values(this.env.smart_blocks.items).forEach((item) => item.init());
    }
    if (this.block_collection) {
      this.block_collection.loaded = Object.keys(this.block_collection.items).length;
    }
    if (!this.opts.prevent_import_on_load) {
      await this.process_source_import_queue(this.opts);
    }
    this.build_links_map();
  }
  /**
   * @method process_source_import_queue
   * @description 
   * Imports items (SmartSources or SmartBlocks) that have been flagged for import.
   */
  async process_source_import_queue(opts = {}) {
    const { process_embed_queue = true, force = false } = opts;
    if (force) Object.values(this.items).forEach((item) => item._queue_import = true);
    const import_queue = Object.values(this.items).filter((item) => item._queue_import);
    console.log("import_queue " + import_queue.length);
    if (import_queue.length) {
      const time_start = Date.now();
      for (let i = 0; i < import_queue.length; i += 100) {
        this.notices?.show("import_progress", {
          progress: i,
          total: import_queue.length
        });
        await Promise.all(import_queue.slice(i, i + 100).map((item) => item.import()));
      }
      setTimeout(() => {
        this.notices?.remove("import_progress");
      }, 1e3);
      this.notices?.show("done_import", {
        count: import_queue.length,
        time_in_seconds: (Date.now() - time_start) / 1e3
      });
    } else {
      this.notices?.show("no_import_queue");
    }
    this.build_links_map();
    if (process_embed_queue) await this.process_embed_queue();
    else console.log("skipping process_embed_queue");
    await this.process_save_queue();
    await this.block_collection?.process_save_queue();
  }
  /**
   * Retrieves the source adapters based on the collection configuration.
   * @readonly
   * @returns {Object} An object mapping file extensions to adapter constructors.
   */
  get source_adapters() {
    if (!this._source_adapters) {
      const source_adapters = Object.entries(this.env.opts.collections?.[this.collection_key]?.source_adapters || {});
      const _source_adapters = source_adapters.reduce((acc, [key, Adapter]) => {
        if (Adapter.extensions) Adapter.extensions?.forEach((ext) => acc[ext] = Adapter);
        else if (typeof Adapter.detect_type === "function") acc[key] = Adapter;
        return acc;
      }, {});
      if (Object.keys(_source_adapters).length) {
        this._source_adapters = _source_adapters;
      }
    }
    return this._source_adapters;
  }
  /**
   * Retrieves the notices system from the environment.
   * @readonly
   * @returns {Object} The notices object.
   */
  get notices() {
    return this.env.smart_connections_plugin?.notices || this.env.main?.notices;
  }
  /**
   * Retrieves the currently active note.
   * @readonly
   * @returns {SmartSource|null} The current SmartSource instance or null if none.
   */
  get current_note() {
    return this.get(this.env.smart_connections_plugin.app.workspace.getActiveFile().path);
  }
  /**
   * Retrieves the file system instance, initializing it if necessary.
   * @readonly
   * @returns {SmartFS} The file system instance.
   */
  get fs() {
    if (!this._fs) {
      this._fs = new this.env.opts.modules.smart_fs.class(this.env, {
        adapter: this.env.opts.modules.smart_fs.adapter,
        fs_path: this.env.opts.env_path || "",
        exclude_patterns: this.excluded_patterns || []
      });
    }
    return this._fs;
  }
  /**
   * Retrieves the settings configuration by combining superclass settings and adapter-specific settings.
   * @readonly
   * @returns {Object} The settings configuration object.
   */
  get settings_config() {
    const _settings_config = {
      ...super.settings_config,
      ...this.process_settings_config(settings_config2),
      ...this.process_settings_config(this.embed_model.settings_config, "embed_model"),
      ...Object.entries(this.source_adapters).reduce((acc, [file_extension, adapter_constructor]) => {
        if (acc[adapter_constructor]) return acc;
        const item = this.items[Object.keys(this.items).find((i) => i.endsWith(file_extension))];
        const adapter_instance = new adapter_constructor(item || new this.item_type(this.env, {}));
        if (adapter_instance.settings_config) {
          acc[adapter_constructor.name] = {
            type: "html",
            value: `<h4>${adapter_constructor.name} adapter</h4>`
          };
          acc = { ...acc, ...adapter_instance.settings_config };
        }
        return acc;
      }, {})
    };
    return _settings_config;
  }
  /**
   * Retrieves the block collection associated with SmartSources.
   * @readonly
   * @returns {SmartBlocks} The block collection instance.
   */
  get block_collection() {
    return this.env.smart_blocks;
  }
  /**
   * Retrieves the embed queue containing items and their blocks to be embedded.
   * @readonly
   * @returns {Array<Object>} The embed queue.
   */
  get embed_queue() {
    if (!this._embed_queue.length) {
      try {
        const embed_blocks = this.block_collection.settings.embed_blocks;
        this._embed_queue = Object.values(this.items).reduce((acc, item) => {
          if (item._queue_embed || item.should_embed && item.is_unembedded) acc.push(item);
          if (embed_blocks) item.blocks.forEach((block) => {
            if (block._queue_embed || block.should_embed && block.is_unembedded) acc.push(block);
          });
          return acc;
        }, []);
      } catch (e) {
        console.error(`Error getting embed queue:`, e);
      }
    }
    return this._embed_queue;
  }
  /**
   * Clears all data by removing sources and blocks, reinitializing the file system, and reimporting items.
   * @async
   * @returns {Promise<void>}
   */
  async run_clear_all() {
    this.notices?.show("clearing_all");
    await this.data_fs.remove_dir(this.data_dir, true);
    this.clear();
    this.block_collection.clear();
    this._fs = null;
    await this.init_fs();
    await this.init_items();
    this._excluded_headings = null;
    Object.values(this.items).forEach((item) => {
      item.queue_import();
      item.queue_embed();
      item.loaded_at = Date.now() + 9999999999;
    });
    this.notices?.remove("clearing_all");
    this.notices?.show("done_clearing_all");
    await this.process_source_import_queue();
  }
  async init_fs(opts = {}) {
    const { force_refresh = false } = opts;
    if (force_refresh) await this.env.fs.refresh();
    await this.fs.load_exclusions();
    this.fs.file_paths = this.fs.post_process(this.env.fs.file_paths);
    this.fs.files = this.fs.file_paths.reduce((acc, file_path) => {
      acc[file_path] = this.env.fs.files[file_path];
      return acc;
    }, {});
    this.fs.folder_paths = this.fs.post_process(this.env.fs.folder_paths);
    this.fs.folders = this.fs.folder_paths.reduce((acc, folder_path) => {
      acc[folder_path] = this.env.fs.folders[folder_path];
      return acc;
    }, {});
  }
  /**
   * Deletes all *.ajson files in the "multi/" data_dir, then re-saves all sources (opts.force=true).
   */
  async run_clean_up_data() {
    this.notices?.show("pruning_collection", { collection_key: this.block_collection.collection_key });
    const remove_smart_blocks = this.block_collection.filter((item) => {
      if (!item.vec) return false;
      if (item.is_gone) {
        item.reason = "is_gone";
        return true;
      }
      if (!item.should_embed) {
        item.reason = "should not embed";
        return true;
      }
      return false;
    });
    for (let i = 0; i < remove_smart_blocks.length; i++) {
      const item = remove_smart_blocks[i];
      if (item.is_gone) item.delete();
      else item.remove_embeddings();
    }
    this.notices?.remove("pruning_collection");
    this.notices?.show("done_pruning_collection", { collection_key: this.block_collection.collection_key, count: remove_smart_blocks.length });
    console.log(`Pruned ${remove_smart_blocks.length} blocks:
${remove_smart_blocks.map((item) => `${item.reason} - ${item.key}`).join("\n")}`);
    await this.data_fs.remove_dir(this.data_dir, true);
    await this.process_save_queue({ force: true });
  }
  /**
   * Retrieves patterns for excluding files/folders from processing.
   * @readonly
   * @returns {Array<string>}
   */
  get excluded_patterns() {
    return [
      ...this.file_exclusions?.map((file) => `${file}**`) || [],
      ...(this.folder_exclusions || []).map((folder) => `${folder}**`),
      this.env.env_data_dir + "/**"
    ];
  }
  /**
   * Retrieves the file exclusion patterns from settings.
   * @readonly
   * @returns {Array<string>} An array of file exclusion patterns.
   */
  get file_exclusions() {
    const csv = this.env.settings?.smart_sources?.file_exclusions;
    return csv?.length ? csv.split(",").map((file) => file.trim()) : [];
  }
  /**
   * Retrieves the folder exclusion patterns from settings.
   * @readonly
   * @returns {Array<string>} An array of folder exclusion patterns.
   */
  get folder_exclusions() {
    const csv = this.env.settings?.smart_sources?.folder_exclusions;
    return csv?.length ? csv.split(",").map((folder) => {
      folder = folder.trim();
      if (folder === "") return false;
      if (folder === "/") return false;
      if (!folder.endsWith("/")) return folder + "/";
      return folder;
    }).filter(Boolean) : [];
  }
  /**
   * Retrieves the excluded headings from settings.
   * @readonly
   * @returns {Array<string>} An array of excluded headings.
   */
  get excluded_headings() {
    if (!this._excluded_headings) {
      const csv = this.env.settings?.smart_sources?.excluded_headings;
      this._excluded_headings = csv?.length ? csv.split(",").map((heading) => heading.trim()) : [];
    }
    return this._excluded_headings;
  }
  /**
   * Retrieves the count of included files that are not excluded.
   * @readonly
   * @returns {number} The number of included files.
   */
  get included_files() {
    const extensions = Object.keys(this.source_adapters);
    return this.fs.file_paths.filter((file_path) => extensions.some((ext) => file_path.endsWith(ext)) && !this.fs.is_excluded(file_path)).length;
  }
  get excluded_file_paths() {
    return this.env.fs.file_paths.filter((file_path) => this.fs.is_excluded(file_path));
  }
  /**
   * Retrieves the total number of files, regardless of exclusion.
   * @readonly
   * @returns {number} The total number of files.
   */
  get total_files() {
    return this.fs.file_paths.filter((file) => file.endsWith(".md") || file.endsWith(".canvas")).length;
  }
  get data_dir() {
    return "multi";
  }
};
var settings_config2 = {
  file_exclusions: {
    name: "File Exclusions",
    description: "Comma-separated list of files to exclude.",
    type: "text",
    default: "",
    callback: "update_exclusions"
  },
  folder_exclusions: {
    name: "Folder Exclusions",
    description: "Comma-separated list of folders to exclude.",
    type: "text",
    default: "",
    callback: "update_exclusions"
  },
  excluded_headings: {
    name: "Excluded Headings",
    description: "Comma-separated list of headings to exclude.",
    type: "text",
    default: ""
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-collections/adapters/_adapter.js
var CollectionDataAdapter = class {
  /**
   * @constructor
   * @param {Object} collection - The collection instance that this adapter manages.
   */
  constructor(collection) {
    this.collection = collection;
    this.env = collection.env;
  }
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = ItemDataAdapter;
  /**
   * Optional factory method to create item adapters.
   * If `this.item_adapter_class` is not null, it uses that; otherwise can be overridden by subclasses.
   * @param {Object} item - The item to create an adapter for.
   * @returns {ItemDataAdapter}
   */
  create_item_adapter(item) {
    if (!this.ItemDataAdapter) {
      throw new Error("No item_adapter_class specified and create_item_adapter not overridden.");
    }
    return new this.ItemDataAdapter(item);
  }
  /**
   * Load a single item by its key using an `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to load.
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Save a single item by its key using its associated `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to save.
   * @returns {Promise<void>} Resolves when the item is saved.
   */
  async save_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Delete a single item by its key. This may involve updating or removing its file,
   * as handled by the `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to delete.
   * @returns {Promise<void>} Resolves when the item is deleted.
   */
  async delete_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Process any queued load operations. Typically orchestrates calling `load_item()` 
   * on items that have been flagged for loading.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    throw new Error("Not implemented");
  }
  /**
   * Process any queued save operations. Typically orchestrates calling `save_item()` 
   * on items that have been flagged for saving.
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    throw new Error("Not implemented");
  }
  /**
   * Load the item's data from storage if it has been updated externally.
   * @async
   * @param {string} key - The key of the item to load.
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_item_if_updated(item) {
    const adapter = this.create_item_adapter(item);
    await adapter.load_if_updated();
  }
};
var ItemDataAdapter = class {
  /**
   * @constructor
   * @param {Object} item - The collection item instance that this adapter manages.
   */
  constructor(item) {
    this.item = item;
  }
  /**
   * Load the item's data from storage. May involve reading a file and parsing 
   * its contents, then updating `item.data`.
   * @async
   * @returns {Promise<void>} Resolves when the item is fully loaded.
   */
  async load() {
    throw new Error("Not implemented");
  }
  /**
   * Save the item's data to storage. May involve writing to a file or appending 
   * lines in an append-only format.
   * @async
   * @param {string|null} [ajson=null] - An optional serialized representation of the item’s data.
   *                                     If not provided, the adapter should derive it from the item.
   * @returns {Promise<void>} Resolves when the item is saved.
   */
  async save(ajson = null) {
    throw new Error("Not implemented");
  }
  /**
   * Delete the item's data from storage. May involve removing a file or writing 
   * a `null` entry in an append-only file to signify deletion.
   * @async
   * @returns {Promise<void>} Resolves when the item’s data is deleted.
   */
  async delete() {
    throw new Error("Not implemented");
  }
  /**
   * Returns the file path or unique identifier used by this adapter to locate and store 
   * the item's data. This may be a file name derived from the item's key.
   * @returns {string} The path or identifier for the item's data.
   */
  get data_path() {
    throw new Error("Not implemented");
  }
  /**
   * @returns {CollectionDataAdapter} The collection data adapter that this item data adapter belongs to.
   */
  get collection_adapter() {
    return this.item.collection.data_adapter;
  }
  get env() {
    return this.item.env;
  }
  /**
   * Load the item's data from storage if it has been updated externally.
   * @async
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_if_updated() {
    throw new Error("Not implemented");
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-collections/adapters/_file.js
var FileCollectionDataAdapter = class extends CollectionDataAdapter {
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = FileItemDataAdapter;
  /**
   * @returns {Object} Filesystem interface derived from environment or collection settings.
   */
  get fs() {
    return this.collection.data_fs || this.collection.env.data_fs;
  }
};
var FileItemDataAdapter = class extends ItemDataAdapter {
  /**
   * @returns {Object} Filesystem interface derived from environment or collection settings.
   */
  get fs() {
    return this.item.collection.data_fs || this.item.collection.env.data_fs;
  }
  get data_path() {
    throw new Error("Not implemented");
  }
  async load_if_updated() {
    const data_path = this.data_path;
    if (await this.fs.exists(data_path)) {
      const loaded_at = this.item.loaded_at || 0;
      const data_file_stat = await this.fs.stat(data_path);
      if (data_file_stat.mtime > loaded_at + 1 * 60 * 1e3) {
        console.log(`Smart Collections: Re-loading item ${this.item.key} because it has been updated on disk`);
        await this.load();
      }
    }
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-collections/adapters/ajson_multi_file.js
var class_to_collection_key = {
  "SmartSource": "smart_sources",
  "SmartNote": "smart_sources",
  // DEPRECATED
  "SmartBlock": "smart_blocks",
  "SmartDirectory": "smart_directories"
};
var AjsonMultiFileCollectionDataAdapter = class extends FileCollectionDataAdapter {
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = AjsonMultiFileItemDataAdapter;
  /**
   * Load a single item by its key.
   * @async
   * @param {string} key
   * @returns {Promise<void>}
   */
  async load_item(key) {
    const item = this.collection.get(key);
    if (!item) return;
    const adapter = this.create_item_adapter(item);
    await adapter.load();
  }
  /**
   * Save a single item by its key.
   * @async
   * @param {string} key
   * @returns {Promise<void>}
   */
  async save_item(key) {
    const item = this.collection.get(key);
    if (!item) return;
    const adapter = this.create_item_adapter(item);
    await adapter.save();
  }
  /**
   * Process any queued load operations.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    this.collection.emit_event("collection:load_started");
    this.collection.show_process_notice("loading_collection");
    if (!await this.fs.exists(this.collection.data_dir)) {
      await this.fs.mkdir(this.collection.data_dir);
    }
    const load_queue = Object.values(this.collection.items).filter((item) => item._queue_load);
    if (!load_queue.length) {
      this.collection.clear_process_notice("loading_collection");
      return;
    }
    console.log(`Loading ${this.collection.collection_key}: ${load_queue.length} items`);
    const batch_size = 100;
    for (let i = 0; i < load_queue.length; i += batch_size) {
      const batch = load_queue.slice(i, i + batch_size);
      await Promise.all(batch.map((item) => {
        const adapter = this.create_item_adapter(item);
        return adapter.load().catch((err) => {
          console.warn(`Error loading item ${item.key}`, err);
          item.queue_load();
        });
      }));
    }
    this.collection.loaded = load_queue.length;
    this.collection.clear_process_notice("loading_collection");
    this.collection.emit_event("collection:load_completed");
  }
  /**
   * Process any queued save operations.
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    this.collection.emit_event("collection:save_started");
    this.collection.show_process_notice("saving_collection");
    const save_queue = Object.values(this.collection.items).filter((item) => item._queue_save);
    console.log(`Saving ${this.collection.collection_key}: ${save_queue.length} items`);
    const time_start = Date.now();
    const batch_size = 50;
    for (let i = 0; i < save_queue.length; i += batch_size) {
      const batch = save_queue.slice(i, i + batch_size);
      await Promise.all(batch.map((item) => {
        const adapter = this.create_item_adapter(item);
        return adapter.save().catch((err) => {
          console.warn(`Error saving item ${item.key}`, err);
          item.queue_save();
        });
      }));
    }
    const deleted_items = Object.values(this.collection.items).filter((item) => item.deleted);
    if (deleted_items.length) {
      deleted_items.forEach((item) => {
        delete this.collection.items[item.key];
      });
    }
    console.log(`Saved ${this.collection.collection_key} in ${Date.now() - time_start}ms`);
    this.collection.clear_process_notice("saving_collection");
    this.collection.emit_event("collection:save_completed");
  }
  get_item_data_path(key) {
    return [
      this.collection.data_dir || "multi",
      this.fs?.sep || "/",
      this.get_data_file_name(key) + ".ajson"
    ].join("");
  }
  /**
   * Transforms the item key into a safe filename.
   * Replaces spaces, slashes, and dots with underscores.
   * @returns {string} safe file name
   */
  get_data_file_name(key) {
    return key.split("#")[0].replace(/[\s\/\.]/g, "_").replace(".md", "");
  }
  /**
   * Build a single AJSON line for the given item and data.
   * @param {Object} item 
   * @returns {string}
   */
  get_item_ajson(item) {
    const collection_key = item.collection_key;
    const key = item.key;
    const data_value = item.deleted ? "null" : JSON.stringify(item.data);
    return `${JSON.stringify(`${collection_key}:${key}`)}: ${data_value},`;
  }
};
var AjsonMultiFileItemDataAdapter = class extends FileItemDataAdapter {
  /**
   * Derives the `.ajson` file path from the collection's data_dir and item key.
   * @returns {string}
   */
  get data_path() {
    return this.collection_adapter.get_item_data_path(this.item.key);
  }
  /**
   * Load the item from its `.ajson` file.
   * @async
   * @returns {Promise<void>}
   */
  async load() {
    try {
      const raw_data = await this.fs.adapter.read(this.data_path, "utf-8", { no_cache: true });
      if (!raw_data) {
        this.item.queue_import();
        return;
      }
      const { rewrite, file_data } = this._parse(raw_data);
      if (rewrite) {
        if (file_data.length) await this.fs.write(this.data_path, file_data);
        else await this.fs.remove(this.data_path);
      }
      const last_import_mtime = this.item.data.last_import?.at || 0;
      if (last_import_mtime && this.item.init_file_mtime > last_import_mtime) {
        this.item.queue_import();
      }
    } catch (e) {
      this.item.queue_import();
    }
  }
  /**
   * Parse the entire AJSON content as a JSON object, handle legacy keys, and extract final state.
   * @private
   * @param {string} ajson 
   * @returns {boolean}
   */
  _parse(ajson) {
    try {
      let rewrite = false;
      if (!ajson.length) return false;
      ajson = ajson.trim();
      const original_line_count = ajson.split("\n").length;
      const json_str = "{" + ajson.slice(0, -1) + "}";
      const data = JSON.parse(json_str);
      const entries = Object.entries(data);
      for (let i = 0; i < entries.length; i++) {
        const [ajson_key, value] = entries[i];
        if (!value) {
          delete data[ajson_key];
          rewrite = true;
          continue;
        }
        const { collection_key, item_key, changed } = this._parse_ajson_key(ajson_key);
        if (changed) {
          rewrite = true;
          data[collection_key + ":" + item_key] = value;
          delete data[ajson_key];
        }
        const collection = this.env[collection_key];
        if (!collection) continue;
        const existing_item = collection.get(item_key);
        if (!value.key) value.key = item_key;
        if (existing_item) {
          existing_item.data = value;
          existing_item._queue_load = false;
          existing_item.loaded_at = Date.now();
        } else {
          const ItemClass = collection.item_type;
          const new_item = new ItemClass(this.env, value);
          new_item._queue_load = false;
          new_item.loaded_at = Date.now();
          collection.set(new_item);
        }
      }
      if (rewrite || original_line_count > entries.length) {
        rewrite = true;
      }
      return {
        rewrite,
        file_data: rewrite ? Object.entries(data).map(([key, value]) => `${JSON.stringify(key)}: ${JSON.stringify(value)},`).join("\n") : null
      };
    } catch (e) {
      if (ajson.split("\n").some((line) => !line.endsWith(","))) {
        console.warn("fixing trailing comma error");
        ajson = ajson.split("\n").map((line) => line.endsWith(",") ? line : line + ",").join("\n");
        return this._parse(ajson);
      }
      console.warn("Error parsing JSON:", e);
      return { rewrite: true, file_data: null };
    }
  }
  _parse_ajson_key(ajson_key) {
    let changed;
    let [collection_key, ...item_key] = ajson_key.split(":");
    if (class_to_collection_key[collection_key]) {
      collection_key = class_to_collection_key[collection_key];
      changed = true;
    }
    return {
      collection_key,
      item_key: item_key.join(":"),
      changed
    };
  }
  /**
   * Save the current state of the item by appending a new line to its `.ajson` file.
   * @async
   * @returns {Promise<void>}
   */
  async save(retries = 0) {
    try {
      const ajson_line = this.get_item_ajson();
      await this.fs.append(this.data_path, "\n" + ajson_line);
      this.item._queue_save = false;
    } catch (e) {
      if (e.code === "ENOENT" && retries < 1) {
        const dir = this.collection_adapter.collection.data_dir;
        if (!await this.fs.exists(dir)) {
          await this.fs.mkdir(dir);
        }
        return await this.save(retries + 1);
      }
      console.warn("Error saving item", this.data_path, this.item.key, e);
    }
  }
  /**
   * Build a single AJSON line for the given item and data.
   * @param {Object} item 
   * @returns {string}
   */
  get_item_ajson() {
    return this.collection_adapter.get_item_ajson(this.item);
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-sources/adapters/data/ajson_multi_file.js
var AjsonMultiFileSourcesDataAdapter = class extends AjsonMultiFileCollectionDataAdapter {
  ItemDataAdapter = AjsonMultiFileSourceDataAdapter;
};
var AjsonMultiFileSourceDataAdapter = class extends AjsonMultiFileItemDataAdapter {
};

// node_modules/obsidian-smart-env/node_modules/smart-sources/adapters/_adapter.js
var SourceContentAdapter = class {
  constructor(item) {
    this.item = item;
  }
  async import() {
    this.throw_not_implemented("import");
  }
  async create() {
    this.throw_not_implemented("create");
  }
  async update() {
    this.throw_not_implemented("update");
  }
  async read() {
    this.throw_not_implemented("read");
  }
  async remove() {
    this.throw_not_implemented("remove");
  }
  // HELPER METHODS
  get data() {
    return this.item.data;
  }
  // async create_hash(content) { return await create_hash(content); }
  create_hash(content) {
    return murmur_hash_32_alphanumeric(content);
  }
  get settings() {
    return this.item.env.settings.smart_sources[this.adapter_key];
  }
  get adapter_key() {
    return to_snake(this.constructor.name);
  }
  static get adapter_key() {
    return to_snake(this.name);
  }
  get fs() {
    return this.item.collection.fs;
  }
  get env() {
    return this.item.env;
  }
};
function to_snake(str) {
  return str[0].toLowerCase() + str.slice(1).replace(/([A-Z])/g, "_$1").toLowerCase();
}

// node_modules/obsidian-smart-env/node_modules/smart-blocks/parsers/markdown.js
function parse_markdown_blocks(markdown, opts = {}) {
  const { start_index = 1, line_keys = false } = opts;
  const lines = markdown.split("\n");
  const result = {};
  const heading_stack = [];
  const heading_lines = {};
  const heading_counts = {};
  const sub_block_counts = {};
  const subheading_counts = {};
  const task_lines = [];
  let current_list_item = null;
  let current_content_block = null;
  let in_frontmatter = false;
  let frontmatter_started = false;
  const root_heading_key = "#";
  let in_code_block = false;
  sub_block_counts[root_heading_key] = 0;
  for (let i = 0; i < lines.length; i++) {
    const line_number = i + start_index;
    const line = lines[i];
    const trimmed_line = line.trim();
    if (trimmed_line === "---") {
      if (!frontmatter_started) {
        frontmatter_started = true;
        in_frontmatter = true;
        heading_lines["#---frontmatter---"] = [line_number, null];
        continue;
      } else if (in_frontmatter) {
        in_frontmatter = false;
        heading_lines["#---frontmatter---"][1] = line_number;
        continue;
      }
    }
    if (in_frontmatter) {
      continue;
    }
    if (!in_code_block && /^[-*+]\s+\[(?: |x|X)\]/.test(trimmed_line)) {
      task_lines.push(line_number);
    }
    if (trimmed_line.startsWith("```")) {
      in_code_block = !in_code_block;
      if (!current_content_block) {
        const parent_key = heading_stack.length > 0 ? heading_stack[heading_stack.length - 1].key : root_heading_key;
        if (parent_key === root_heading_key && !heading_lines[root_heading_key]) {
          heading_lines[root_heading_key] = [line_number, null];
        }
        if (parent_key === root_heading_key) {
          current_content_block = { key: root_heading_key, start_line: line_number };
          if (heading_lines[root_heading_key][1] === null || heading_lines[root_heading_key][1] < line_number) {
            heading_lines[root_heading_key][1] = null;
          }
        } else {
          if (sub_block_counts[parent_key] === void 0) {
            sub_block_counts[parent_key] = 0;
          }
          sub_block_counts[parent_key] += 1;
          const n = sub_block_counts[parent_key];
          const key = `${parent_key}#{${n}}`;
          heading_lines[key] = [line_number, null];
          current_content_block = { key, start_line: line_number };
        }
      }
      continue;
    }
    const heading_match = trimmed_line.match(/^(#{1,6})\s*(.+)$/);
    if (heading_match && !in_code_block) {
      const level = heading_match[1].length;
      let title = heading_match[2].trim();
      while (heading_stack.length > 0 && heading_stack[heading_stack.length - 1].level >= level) {
        const finished_heading = heading_stack.pop();
        if (heading_lines[finished_heading.key][1] === null) {
          heading_lines[finished_heading.key][1] = line_number - 1;
        }
      }
      if (heading_stack.length === 0 && heading_lines[root_heading_key] && heading_lines[root_heading_key][1] === null) {
        heading_lines[root_heading_key][1] = line_number - 1;
      }
      if (current_content_block) {
        if (heading_lines[current_content_block.key][1] === null) {
          heading_lines[current_content_block.key][1] = line_number - 1;
        }
        current_content_block = null;
      }
      if (current_list_item) {
        if (heading_lines[current_list_item.key][1] === null) {
          heading_lines[current_list_item.key][1] = line_number - 1;
        }
        current_list_item = null;
      }
      let parent_key = "";
      let parent_level = 0;
      if (heading_stack.length > 0) {
        parent_key = heading_stack[heading_stack.length - 1].key;
        parent_level = heading_stack[heading_stack.length - 1].level;
      } else {
        parent_key = "";
        parent_level = 0;
      }
      if (heading_stack.length === 0) {
        heading_counts[title] = (heading_counts[title] || 0) + 1;
        if (heading_counts[title] > 1) {
          title += `[${heading_counts[title]}]`;
        }
      } else {
        if (!subheading_counts[parent_key]) {
          subheading_counts[parent_key] = {};
        }
        subheading_counts[parent_key][title] = (subheading_counts[parent_key][title] || 0) + 1;
        const count = subheading_counts[parent_key][title];
        if (count > 1) {
          title += `#{${count}}`;
        }
      }
      const level_diff = level - parent_level;
      const hashes = "#".repeat(level_diff);
      const key = parent_key + hashes + title;
      heading_lines[key] = [line_number, null];
      sub_block_counts[key] = 0;
      heading_stack.push({ level, title, key });
      continue;
    }
    const list_match = line.match(/^(\s*)([-*]|\d+\.) (.+)$/);
    if (list_match && !in_code_block) {
      const indentation = list_match[1].length;
      if (indentation === 0) {
        if (current_list_item) {
          if (heading_lines[current_list_item.key][1] === null) {
            heading_lines[current_list_item.key][1] = line_number - 1;
          }
          current_list_item = null;
        }
        if (current_content_block && current_content_block.key !== root_heading_key) {
          if (heading_lines[current_content_block.key][1] === null) {
            heading_lines[current_content_block.key][1] = line_number - 1;
          }
          current_content_block = null;
        }
        let parent_key = heading_stack.length > 0 ? heading_stack[heading_stack.length - 1].key : root_heading_key;
        if (parent_key === root_heading_key && !heading_lines[root_heading_key]) {
          heading_lines[root_heading_key] = [line_number, null];
        }
        if (sub_block_counts[parent_key] === void 0) {
          sub_block_counts[parent_key] = 0;
        }
        sub_block_counts[parent_key] += 1;
        const n = sub_block_counts[parent_key];
        let key;
        if (line_keys) {
          const content_without_task = list_match[3].replace(/^\[(?: |x|X)\]\s*/, "");
          const words = get_longest_words_in_order(content_without_task, 10);
          key = `${parent_key}#${words}`;
        } else {
          key = `${parent_key}#{${n}}`;
        }
        heading_lines[key] = [line_number, null];
        current_list_item = { key, start_line: line_number };
        continue;
      }
      if (current_list_item) {
        continue;
      }
    }
    if (trimmed_line === "") {
      continue;
    }
    if (!current_content_block) {
      if (current_list_item) {
        if (heading_lines[current_list_item.key][1] === null) {
          heading_lines[current_list_item.key][1] = line_number - 1;
        }
        current_list_item = null;
      }
      let parent_key = heading_stack.length > 0 ? heading_stack[heading_stack.length - 1].key : root_heading_key;
      if (parent_key === root_heading_key) {
        if (!heading_lines[root_heading_key]) {
          heading_lines[root_heading_key] = [line_number, null];
        }
        if (heading_lines[root_heading_key][1] === null || heading_lines[root_heading_key][1] < line_number) {
          heading_lines[root_heading_key][1] = null;
        }
        current_content_block = { key: root_heading_key, start_line: line_number };
      } else {
        if (sub_block_counts[parent_key] === void 0) {
          sub_block_counts[parent_key] = 0;
        }
        sub_block_counts[parent_key] += 1;
        const n = sub_block_counts[parent_key];
        const key = `${parent_key}#{${n}}`;
        heading_lines[key] = [line_number, null];
        current_content_block = { key, start_line: line_number };
      }
    }
  }
  const total_lines = lines.length;
  while (heading_stack.length > 0) {
    const finished_heading = heading_stack.pop();
    if (heading_lines[finished_heading.key][1] === null) {
      heading_lines[finished_heading.key][1] = total_lines + start_index - 1;
    }
  }
  if (current_list_item) {
    if (heading_lines[current_list_item.key][1] === null) {
      heading_lines[current_list_item.key][1] = total_lines + start_index - 1;
    }
    current_list_item = null;
  }
  if (current_content_block) {
    if (heading_lines[current_content_block.key][1] === null) {
      heading_lines[current_content_block.key][1] = total_lines + start_index - 1;
    }
    current_content_block = null;
  }
  if (heading_lines[root_heading_key] && heading_lines[root_heading_key][1] === null) {
    heading_lines[root_heading_key][1] = total_lines + start_index - 1;
  }
  for (const key in heading_lines) {
    result[key] = heading_lines[key];
  }
  return { blocks: result, task_lines };
}
function get_longest_words_in_order(line, n = 3) {
  const words = line.split(/\s+/).sort((a, b) => b.length - a.length).slice(0, n);
  return words.sort((a, b) => line.indexOf(a) - line.indexOf(b)).join(" ");
}

// node_modules/obsidian-smart-env/node_modules/smart-sources/adapters/_file.js
var FileSourceContentAdapter = class extends SourceContentAdapter {
  static async init_items(collection) {
    if (collection.fs_items_initialized) return;
    collection._fs = null;
    await collection.fs.init();
    await collection.init_fs();
    for (const file of Object.values(collection.fs.files)) {
      const item = collection.init_file_path(file.path);
      if (item) item.init_file_mtime = file.stat.mtime;
    }
    collection.fs_items_initialized = Date.now();
  }
  /**
   * @name fs
   * @type {Object}
   * @readonly
   * @description
   * Access the file system interface used by this adapter. Typically derived
   * from `this.item.collection.fs`.
   */
  get fs() {
    return this.item.collection.fs;
  }
  /**
   * @name file_path
   * @type {string}
   * @readonly
   * @description
   * The file path on disk corresponding to the source. Used for read/write operations.
   */
  get file_path() {
    return this.item.file_path;
  }
  /**
   * @async
   * @method create
   * @param {string|null} [content=null] Initial content for the new file.
   * @description
   * Create a new file on disk. If content is not provided, attempts to use
   * `this.item.data.content` as fallback.
   */
  async create(content = null) {
    if (!content) content = this.item.data.content || "";
    await this.fs.write(this.file_path, content);
  }
  /**
   * @async
   * @method update
   * @param {string} content The full new content to write to the file.
   * @description
   * Overwrite the entire file content on disk.
   */
  async update(content) {
    await this.fs.write(this.file_path, content);
  }
  /**
   * @async
   * @method read
   * @returns {Promise<string>} The content of the file.
   * @description
   * Read the file content from disk. Updates `last_read` hash and timestamp on the entity’s data.
   * If file is large or special handling is needed, override this method.
   */
  async read() {
    const content = await this.fs.read(this.file_path);
    this.data.last_read = {
      hash: this.create_hash(content || ""),
      at: Date.now()
    };
    return content;
  }
  /**
   * @async
   * @method remove
   * @returns {Promise<void>}
   * @description
   * Delete the file from disk. After removal, the source item should also be deleted or updated accordingly.
   */
  async remove() {
    await this.fs.remove(this.file_path);
  }
  async move_to(move_to_ref) {
    if (!move_to_ref) {
      throw new Error("Invalid entity reference for move_to operation");
    }
    const move_content = await this.read();
    let has_existing = false;
    if (typeof move_to_ref === "string") {
      const existing = this.item.collection.get(move_to_ref);
      if (existing) {
        move_to_ref = existing;
        has_existing = true;
      }
    } else {
      has_existing = true;
    }
    if (has_existing) {
      await move_to_ref.append(move_content);
    } else {
      move_to_ref = await this.item.collection.create(move_to_ref, move_content);
    }
    if (this.item.key !== move_to_ref.key) {
      await this.remove();
      this.item.delete();
    } else {
      console.log(`did not delete ${this.item.key} because it was moved to ${move_to_ref.key}`);
    }
    return move_to_ref;
  }
  /**
   * TRANSFERRED FROM markdown.js (2024-12-13)
   * TODO NEEDS REVIEW/REFACTOR
   */
  async move_to_v1(entity_ref) {
    const new_path = typeof entity_ref === "string" ? entity_ref : entity_ref.key;
    if (!new_path) {
      throw new Error("Invalid entity reference for move_to operation");
    }
    const current_content = await this.read();
    const [target_source_key, ...headings] = new_path.split("#");
    const target_source = this.item.collection.get(target_source_key);
    if (headings.length > 0) {
      const new_headings_content = this.construct_headings(headings);
      const new_content = `${new_headings_content}
${current_content}`;
      await this._update(new_content);
    }
    if (target_source) {
      await this.merge(current_content, { mode: "append_blocks" });
    } else {
      await this.rename_and_import(target_source_key, current_content);
    }
    if (this.item.key !== target_source_key) await this.remove();
  }
  construct_headings(headings) {
    return headings.map((heading, i) => `${"#".repeat(i + 1)} ${heading}`).join("\n");
  }
  async rename_and_import(target_source_key, content) {
    await this.fs.rename(this.file_path, target_source_key);
    const new_source = await this.item.collection.create_or_update({ path: target_source_key, content });
    await new_source.import();
  }
  /**
   * Merge content into the source
   * @param {string} content - The content to merge into the source
   * @param {Object} opts - Options for the merge operation
   * @param {string} opts.mode - The mode to use for the merge operation. Defaults to 'append_blocks' (may also be 'replace_blocks')
   */
  async merge(content, opts = {}) {
    const { mode = "append_blocks" } = opts;
    const { blocks: blocks_obj, task_lines } = parse_markdown_blocks(content);
    if (typeof blocks_obj !== "object" || Array.isArray(blocks_obj)) {
      console.warn("merge error: Expected an object from parse_markdown_blocks, but received:", blocks_obj);
      throw new Error("merge error: parse_markdown_blocks did not return an object as expected.");
    }
    const { new_blocks, new_with_parent_blocks, changed_blocks, same_blocks } = await this.get_changes(blocks_obj, content);
    for (const block of new_blocks) {
      await this.append(block.content);
    }
    for (const block of new_with_parent_blocks) {
      const parent_block = this.item.block_collection.get(block.parent_key);
      await parent_block.append(block.content);
    }
    for (const block of changed_blocks) {
      const changed_block = this.item.block_collection.get(block.key);
      if (mode === "replace_blocks") {
        await changed_block.update(block.content);
      } else {
        await changed_block.append(block.content);
      }
    }
  }
  async get_changes(blocks_obj, content) {
    const new_blocks = [];
    const new_with_parent_blocks = [];
    const changed_blocks = [];
    const same_blocks = [];
    const existing_blocks = this.source.data.blocks || {};
    for (const [sub_key, line_range] of Object.entries(blocks_obj)) {
      const has_existing = !!existing_blocks[sub_key];
      const block_key = `${this.source.key}${sub_key}`;
      const block_content = get_line_range(content, line_range[0], line_range[1]);
      if (!has_existing) {
        new_blocks.push({
          key: block_key,
          state: "new",
          content: block_content
        });
        continue;
      }
      let has_parent;
      let headings = sub_key.split("#");
      let parent_key;
      while (!has_parent && headings.length > 0) {
        headings.pop();
        parent_key = headings.join("#");
        has_parent = !!existing_blocks[parent_key];
      }
      if (has_parent) {
        new_with_parent_blocks.push({
          key: block_key,
          parent_key: `${this.source.key}${parent_key}`,
          state: "new",
          content: block_content
        });
        continue;
      }
      const block = this.item.block_collection.get(block_key);
      const content_hash = await this.create_hash(block_content);
      if (content_hash !== block.last_read?.hash) {
        changed_blocks.push({
          key: block_key,
          state: "changed",
          content: block_content
        });
        continue;
      }
      same_blocks.push({
        key: block_key,
        state: "same",
        content: block_content
      });
    }
    return {
      new_blocks,
      new_with_parent_blocks,
      changed_blocks,
      same_blocks
    };
  }
  /**
   * Append new content to the source file, placing it at the end of the file.
   * @async
   * @param {string} content - The content to append.
   * @returns {Promise<void>}
   */
  async append(content) {
    const current_content = await this.read();
    const new_content = [
      current_content,
      "",
      content
    ].join("\n").trim();
    await this.update(new_content);
  }
  get size() {
    return this.item.file?.stat?.size || 0;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-sources/utils/get_markdown_links.js
function get_markdown_links(content) {
  const result = [];
  const markdown_link_re = /\[([^\]]+?)\]\(([^)]+?)\)/g;
  const wikilink_re = /\[\[([^\|\]]+?)(?:\|([^\]]+?))?\]\]/g;
  const normalise_target = (raw) => {
    const trimmed = raw.trim();
    if (/^[a-zA-Z][\w+\-.]*:\/\//.test(trimmed)) return trimmed;
    try {
      return decodeURIComponent(trimmed);
    } catch (_) {
      return trimmed.replace(/%20/gi, " ");
    }
  };
  let m;
  while ((m = markdown_link_re.exec(content)) !== null) {
    const title = m[1];
    const target = normalise_target(m[2]);
    const line_no = content.slice(0, m.index).split("\n").length;
    result.push({ title, target, line: line_no });
  }
  while ((m = wikilink_re.exec(content)) !== null) {
    const target_raw = m[1];
    const title = m[2] || target_raw;
    const target = normalise_target(target_raw);
    const line_no = content.slice(0, m.index).split("\n").length;
    result.push({ title, target, line: line_no });
  }
  return result.sort(
    (a, b) => a.line - b.line || a.target.localeCompare(b.target)
  );
}

// node_modules/obsidian-smart-env/node_modules/smart-sources/utils/parse_frontmatter.js
function parse_value(raw_value) {
  const trimmed = raw_value.trim();
  if (trimmed.startsWith('"') && trimmed.endsWith('"') || trimmed.startsWith("'") && trimmed.endsWith("'")) {
    return trimmed.slice(1, -1);
  }
  const lower = trimmed.toLowerCase();
  if (lower === "true") return true;
  if (lower === "false") return false;
  if (!isNaN(trimmed) && trimmed !== "") {
    return Number(trimmed);
  }
  return trimmed;
}
function parse_yaml_block(yaml_block) {
  const lines = yaml_block.split(/\r?\n/);
  const data = {};
  let i = 0;
  while (i < lines.length) {
    const line = lines[i];
    i++;
    if (!line.trim() || line.trim().startsWith("#")) {
      continue;
    }
    const match = line.match(/^([^:]+)\s*:\s*(.*)$/);
    if (!match) {
      continue;
    }
    const key = match[1].trim();
    let value = match[2].trim();
    if (value === ">" || value === "|") {
      const multiline_lines = [];
      while (i < lines.length) {
        const next_line = lines[i];
        if (!/^\s+/.test(next_line) || next_line.trim().startsWith("#")) {
          break;
        }
        multiline_lines.push(next_line.replace(/^\s+/, ""));
        i++;
      }
      const joined = multiline_lines.join("\n");
      data[key] = parse_value(joined);
    } else if (value === "") {
      const arr = [];
      let array_consumed = false;
      while (i < lines.length) {
        const next_line = lines[i];
        if (!next_line.trim().startsWith("- ")) {
          break;
        }
        const item_value = next_line.trim().slice(2);
        arr.push(parse_value(item_value));
        i++;
        array_consumed = true;
      }
      if (array_consumed) {
        data[key] = arr;
      } else {
        data[key] = "";
      }
    } else {
      data[key] = parse_value(value);
    }
  }
  return data;
}
function parse_frontmatter(content) {
  if (!content.startsWith("---")) {
    return { frontmatter: {}, body: content };
  }
  const lines = content.split(/\r?\n/);
  let end_index = -1;
  for (let i = 1; i < lines.length; i++) {
    if (lines[i].trim() === "---") {
      end_index = i;
      break;
    }
  }
  if (end_index === -1) {
    return { frontmatter: {}, body: content };
  }
  const frontmatter_lines = lines.slice(1, end_index);
  const frontmatter_block = frontmatter_lines.join("\n");
  const frontmatter = parse_yaml_block(frontmatter_block);
  const body_lines = lines.slice(end_index + 1);
  const body = body_lines.join("\n");
  return { frontmatter, body };
}

// node_modules/obsidian-smart-env/node_modules/smart-sources/utils/get_markdown_tags.js
var get_markdown_tags = (content = "") => {
  const tag_re = /(?<!\w)#([\w/-]+)/g;
  const tags = /* @__PURE__ */ new Set();
  let match;
  while ((match = tag_re.exec(content)) !== null) {
    tags.add(`#${match[1]}`);
  }
  return [...tags];
};

// node_modules/obsidian-smart-env/node_modules/smart-sources/adapters/markdown_source.js
var MarkdownSourceContentAdapter = class extends FileSourceContentAdapter {
  static extensions = ["md", "txt"];
  /**
   * Import the source file content, parse blocks and links, and update `item.data`.
   * @async
   * @returns {Promise<void>}
   */
  async import() {
    if (!this.can_import) return;
    if (!this.outdated) {
      this.item.blocks.forEach((block) => {
        if (!block.vec) block.queue_embed();
      });
      return;
    }
    const content = await this.read();
    if (!content) {
      return;
    }
    if (!this.item.vec) {
      this.item.data.last_import = null;
    }
    if (this.data.last_import?.hash === this.data.last_read?.hash) {
      if (this.data.blocks) return;
    }
    this.data.blocks = null;
    await this.parse_content(content);
    await this.item.parse_content(content);
    const { mtime, size } = this.item.file.stat;
    this.data.last_import = {
      mtime,
      size,
      at: Date.now(),
      hash: this.data.last_read.hash
    };
    this.item.loaded_at = Date.now();
    this.item.queue_save();
    if (this.item.should_embed) this.item.queue_embed();
  }
  // // WIP: move block parsing here
  // async read() {
  //   const current_last_read_hash = this.data.last_read?.hash;
  //   const content = await super.read();
  //   if(!content) return console.warn(`MarkdownSourceContentAdapter: Skipping missing-file: ${this.file_path}`);
  //   if(current_last_read_hash === this.data.last_read?.hash) return content;
  //   const {blocks: blocks, task_lines} = parse_markdown_blocks(content);
  //   this.handle_excluded_headings(blocks);
  // }
  // Runs before configured content_parsers (for example, templates uses outlinks)
  async parse_content(content) {
    const outlinks = await this.get_links(content);
    this.data.outlinks = outlinks;
    const metadata = await this.get_metadata(content);
    this.data.metadata = metadata;
  }
  async get_links(content = null) {
    if (!content) content = await this.read();
    if (!content) return;
    return get_markdown_links(content);
  }
  async get_metadata(content = null) {
    if (!content) content = await this.read();
    if (!content) return;
    const { frontmatter, body } = parse_frontmatter(content);
    const tag_set = /* @__PURE__ */ new Set();
    let fm_tags = frontmatter.tags;
    if (typeof fm_tags === "string") {
      fm_tags = fm_tags.replace(/[\[\]]/g, "").split(",").map((t) => t.trim()).filter(Boolean);
    }
    if (Array.isArray(fm_tags)) {
      fm_tags.forEach((tag) => tag_set.add(tag.startsWith("#") ? tag : `#${tag}`));
    }
    get_markdown_tags(body).forEach((tag) => tag_set.add(tag));
    if (tag_set.size) frontmatter.tags = [...tag_set];
    return frontmatter;
  }
  // Erroneous reasons to skip import (logs to console)
  get can_import() {
    if (!this.item.file) {
      console.warn(`MarkdownSourceContentAdapter: Skipping missing-file: ${this.file_path}`);
      return false;
    }
    if (this.item.size > (this.settings?.max_import_size || 3e5)) {
      console.warn(`MarkdownSourceContentAdapter: Skipping large file: ${this.file_path}`);
      return false;
    }
    return true;
  }
  /**
   * @deprecated use outdated instead
   */
  get should_import() {
    return this.outdated;
  }
  get outdated() {
    try {
      if (!this.data.last_import) {
        if (this.data.mtime && this.data.size && this.data.hash) {
          this.data.last_import = {
            mtime: this.data.mtime,
            size: this.data.size,
            at: Date.now(),
            hash: this.data.hash
          };
          delete this.data.mtime;
          delete this.data.size;
          delete this.data.hash;
        } else {
          return true;
        }
      }
      if (this.data.last_read.at > this.data.last_import.at) {
        if (this.data.last_import?.hash !== this.data.last_read?.hash) return true;
      }
      if (this.data.last_import.mtime < this.item.mtime) {
        if (!this.data.last_import.size) return true;
        const size_diff = Math.abs(this.data.last_import.size - this.item.size);
        const size_diff_ratio = size_diff / (this.data.last_import.size || 1);
        if (size_diff_ratio > 0.01) return true;
      }
      return false;
    } catch (e) {
      console.warn(`MarkdownSourceContentAdapter: error getting should_import for ${this.file_path}: ${e}`);
      return true;
    }
  }
};

// node_modules/obsidian-smart-env/adapters/smart-sources/obsidian_markdown.js
var import_obsidian2 = require("obsidian");
function merge_tags(fm_tags, cache_tags = []) {
  const tag_set = /* @__PURE__ */ new Set();
  if (typeof fm_tags === "string") {
    fm_tags = fm_tags.replace(/[\[\]]/g, "").split(",").map((t) => t.trim()).filter(Boolean);
  }
  if (Array.isArray(fm_tags)) {
    fm_tags.forEach((tag) => tag_set.add(tag.startsWith("#") ? tag : `#${tag}`));
  }
  cache_tags.forEach(({ tag }) => tag_set.add(tag));
  return [...tag_set];
}
var ObsidianMarkdownSourceContentAdapter = class extends MarkdownSourceContentAdapter {
  /**
   * Returns metadata using Obsidian's metadataCache, merging frontmatter and tags.
   * @async
   * @returns {Promise<Object|undefined>}
   */
  async get_metadata() {
    const app2 = this.item.env.main.app;
    const cache = app2.metadataCache.getFileCache(this.item.file) || {};
    const tags = merge_tags(cache.frontmatter?.tags, cache.tags);
    if (cache.frontmatter) {
      if (tags.length) cache.frontmatter.tags = tags;
      return cache.frontmatter;
    }
    return tags.length ? { tags } : void 0;
  }
  /**
   * Reads the file content. If opts.render_output is true, attempts to use
   * Obsidian's MarkdownRenderer to render the file to HTML, then convert it
   * back to markdown via htmlToMarkdown.
   * @async
   * @param {Object} [opts={}] - Options for reading.
   * @param {boolean} [opts.render_output=false] - If true, render MD -> HTML -> MD.
   * @returns {Promise<string>} The file content (possibly rendered).
   */
  async read(opts = {}) {
    const content = await super.read(opts);
    if (!opts.render_output) {
      return content;
    }
    const app2 = this.item.env.main.app;
    if (!app2 || !import_obsidian2.MarkdownRenderer || !import_obsidian2.htmlToMarkdown) {
      console.warn("Obsidian environment not found; cannot render markdown.");
      return content;
    }
    const container = document.createElement("div");
    await import_obsidian2.MarkdownRenderer.render(app2, content, container, this.item.path, new import_obsidian2.Component());
    let last_html = container.innerHTML;
    const max_wait = 1e4;
    let wait_time = 0;
    let conseq_same = 0;
    let changed = true;
    while (conseq_same < 7) {
      await new Promise((resolve) => setTimeout(resolve, 100));
      changed = last_html !== container.innerHTML;
      last_html = container.innerHTML;
      if (!changed) conseq_same++;
      else conseq_same = 0;
      wait_time += 100;
      if (wait_time > max_wait) {
        console.warn("ObsidianMarkdownSourceContentAdapter: Timeout waiting for markdown to render.");
        break;
      }
    }
    const newMd = (0, import_obsidian2.htmlToMarkdown)(container);
    return newMd;
  }
};

// node_modules/obsidian-smart-env/adapters/smart-sources/bases.js
var BasesSourceContentAdapter = class extends FileSourceContentAdapter {
  static extensions = ["base"];
  async import() {
  }
};

// node_modules/obsidian-smart-env/adapters/smart-sources/excalidraw.js
var ExcalidrawSourceContentAdapter = class extends ObsidianMarkdownSourceContentAdapter {
  static extensions = ["excalidraw.md"];
  is_media = true;
  // Excalidraw files are treated as media for rendering
  async read(opts = {}) {
    const full_content = await super.read(opts);
    const BEGIN_LINE_MATCHER = "# Text Elements";
    const END_LINE_MATCHER = "# Drawing";
    const text_elements_start = full_content.indexOf(BEGIN_LINE_MATCHER);
    const drawing_lines_start = full_content.indexOf(END_LINE_MATCHER);
    if (text_elements_start === -1 || drawing_lines_start === -1) {
      console.warn("Excalidraw file does not contain expected sections. File: " + this.item.key);
      this.item.data.last_read.size = 0;
      return "";
    }
    const text_content = full_content.slice(text_elements_start + BEGIN_LINE_MATCHER.length, drawing_lines_start).trim();
    const stripped_refs = text_content.split("\n").map((line) => {
      if (line.trim() === "%%") return "";
      if (line.trim() === "#") return "";
      return line.replace(/\^[a-z0-9]+$/i, "").trim();
    }).filter(Boolean).join("\n");
    this.item.data.last_read.size = stripped_refs.length;
    return stripped_refs;
  }
  get size() {
    if (this.item.data?.last_read?.size) {
      return this.item.data.last_read.size;
    }
    return this.file?.stat?.size || 0;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-blocks/utils/get_block_display_name.js
function get_block_display_name(key, show_full_path) {
  const [source_key, ...path_parts] = key.split("#").filter(Boolean);
  const source_name = get_item_display_name(source_key, show_full_path);
  if (show_full_path) return [source_name, ...path_parts].join(" > ");
  const last_heading = path_parts.findLast((part) => part && part[0] !== "{");
  return [source_name, last_heading].join(" > ");
}

// node_modules/obsidian-smart-env/node_modules/smart-blocks/smart_block.js
var SmartBlock = class extends SmartEntity {
  /**
   * Provides default values for a SmartBlock instance.
   * @static
   * @readonly
   * @returns {Object} The default values.
   */
  static get defaults() {
    return {
      data: {
        text: null,
        length: 0,
        last_read: {
          hash: null,
          at: 0
        }
      },
      _embed_input: ""
      // Stored temporarily
    };
  }
  get block_adapter() {
    if (!this._block_adapter) {
      this._block_adapter = new this.collection.opts.block_adapters.md(this);
    }
    return this._block_adapter;
  }
  /**
   * Initializes the SmartBlock instance by queuing an embed if embedding is enabled.
   * @returns {void}
   */
  init() {
    if (this.settings.embed_blocks) super.init();
  }
  /**
   * Queues the entity for embedding.
   * @returns {void}
   */
  queue_embed() {
    this._queue_embed = this.should_embed;
    this.source?.queue_embed();
  }
  /**
   * Queues the block for import via the source.
   * @returns {void}
   */
  queue_import() {
    this.source?.queue_import();
  }
  /**
   * Updates the block's data, clearing embeddings if necessary and preparing embed input.
   * @param {Object} data - The new data to merge into the block.
   * @returns {boolean} `true` if data was updated successfully.
   */
  update_data(data) {
    if (this.should_clear_embeddings(data)) {
      this.data.embeddings = {};
    }
    super.update_data(data);
    return true;
  }
  /**
   * Determines whether to clear embeddings based on the new data.
   * @param {Object} data - The new data to evaluate.
   * @returns {boolean} `true` if embeddings should be cleared, `false` otherwise.
   */
  should_clear_embeddings(data) {
    if (this.is_new) return true;
    if (this.embed_model && this.vec?.length !== this.embed_model.model_config.dims) return true;
    return false;
  }
  /**
   * Prepares the embed input for the SmartBlock by reading content and generating a hash.
   * @async
   * @returns {Promise<string|false>} The embed input string or `false` if already embedded.
   */
  async get_embed_input(content = null) {
    if (typeof this._embed_input !== "string" || !this._embed_input.length) {
      if (!content) content = await this.read();
      this._embed_input = this.breadcrumbs + "\n" + content;
    }
    return this._embed_input;
  }
  // CRUD
  /**
   * @method read
   * @description Reads the block content by delegating to the block adapter.
   * @async
   * @returns {Promise<string>} The block content.
   */
  async read() {
    try {
      return await this.block_adapter.read();
    } catch (e) {
      if (e.message.includes("BLOCK NOT FOUND")) {
        return 'BLOCK NOT FOUND (run "Prune" to remove)';
      } else {
        throw e;
      }
    }
  }
  /**
   * @method append
   * @description Appends content to this block by delegating to the block adapter.
   * @async
   * @param {string} content
   * @returns {Promise<void>}
   */
  async append(content) {
    await this.block_adapter.append(content);
    this.queue_save();
  }
  /**
   * @method update
   * @description Updates the block content by delegating to the block adapter.
   * @async
   * @param {string} new_block_content
   * @param {Object} [opts={}]
   * @returns {Promise<void>}
   */
  async update(new_block_content, opts = {}) {
    await this.block_adapter.update(new_block_content, opts);
    this.queue_save();
  }
  /**
   * @method remove
   * @description Removes the block by delegating to the block adapter.
   * @async
   * @returns {Promise<void>}
   */
  async remove() {
    await this.block_adapter.remove();
    this.queue_save();
  }
  /**
   * @method move_to
   * @description Moves the block to another location by delegating to the block adapter.
   * @async
   * @param {string} to_key
   * @returns {Promise<void>}
   */
  async move_to(to_key) {
    await this.block_adapter.move_to(to_key);
    this.queue_save();
  }
  // Getters
  /**
   * Retrieves the breadcrumbs representing the block's path within the source.
   * @readonly
   * @returns {string} The breadcrumbs string.
   */
  get breadcrumbs() {
    return this.key.split("/").join(" > ").split("#").slice(0, -1).join(" > ").replace(".md", "");
  }
  /**
   * Determines if the block is excluded from embedding based on headings.
   * @readonly
   * @returns {boolean} `true` if excluded, `false` otherwise.
   */
  get excluded() {
    const block_headings = this.path.split("#").slice(1);
    if (this.source_collection.excluded_headings.some((heading) => block_headings.includes(heading))) return true;
    return this.source?.excluded;
  }
  /**
   * Retrieves the file path of the SmartSource associated with the block.
   * @readonly
   * @returns {string} The file path.
   */
  get file_path() {
    return this.source?.file_path;
  }
  /**
   * Retrieves the file type of the SmartSource associated with the block.
   * @readonly
   * @returns {string} The file type.
   */
  get file_type() {
    return this.source.file_type;
  }
  /**
   * Retrieves the folder path of the block.
   * @readonly
   * @returns {string} The folder path.
   */
  get folder() {
    return this.path.split("/").slice(0, -1).join("/");
  }
  /**
   * Retrieves the embed link for the block.
   * @readonly
   * @returns {string} The embed link.
   */
  get embed_link() {
    return `![[${this.link}]]`;
  }
  /**
   * Determines if the block has valid line range information.
   * @readonly
   * @returns {boolean} `true` if the block has both start and end lines, `false` otherwise.
   */
  get has_lines() {
    return this.lines && this.lines.length === 2;
  }
  /**
   * Determines if the entity is a block based on its key.
   * @readonly
   * @returns {boolean} `true` if it's a block, `false` otherwise.
   */
  get is_block() {
    return this.key.includes("#");
  }
  /**
   * Determines if the block is gone (i.e., the source file or block data no longer exists).
   * @readonly
   * @returns {boolean} `true` if gone, `false` otherwise.
   */
  get is_gone() {
    if (!this.source?.file) return true;
    if (!this.source?.data?.blocks?.[this.sub_key]) return true;
    return false;
  }
  get last_read() {
    return this.data.last_read;
  }
  /**
   * Retrieves the sub-key of the block.
   * @readonly
   * @returns {string} The sub-key.
   */
  get sub_key() {
    return "#" + this.key.split("#").slice(1).join("#");
  }
  /**
   * Retrieves the lines range of the block.
   * @readonly
   * @returns {Array<number>|undefined} An array containing the start and end lines or `undefined` if not set.
   */
  // get lines() { return this.source?.data?.blocks?.[this.sub_key]; }
  get lines() {
    return this.data.lines;
  }
  /**
   * Retrieves the starting line number of the block.
   * @readonly
   * @returns {number|undefined} The starting line number or `undefined` if not set.
   */
  get line_start() {
    return this.lines?.[0];
  }
  /**
   * Retrieves the ending line number of the block.
   * @readonly
   * @returns {number|undefined} The ending line number or `undefined` if not set.
   */
  get line_end() {
    return this.lines?.[1];
  }
  /**
   * Retrieves the link associated with the block, handling page numbers if present.
   * @readonly
   * @returns {string} The block link.
   */
  get link() {
    if (/^.*page\s*(\d+).*$/i.test(this.sub_key)) {
      const number = this.sub_key.match(/^.*page\s*(\d+).*$/i)[1];
      return `${this.source.path}#page=${number}`;
    } else {
      return this.source?.path || "MISSING SOURCE";
    }
  }
  // uses data.lines to get next block
  get next_block() {
    if (!this.data.lines) return null;
    const next_line = this.data.lines[1] + 1;
    return this.source.blocks?.find((block) => next_line === block.data?.lines?.[0]);
  }
  /**
   * Retrieves the paths of outlinks from the block.
   * @readonly
   * @returns {Array<string>} An array of outlink paths.
   */
  get outlinks() {
    return this.source.outlinks;
  }
  /**
   * Retrieves the path of the SmartBlock.
   * @readonly
   * @returns {string} The path of the SmartBlock.
   */
  get path() {
    return this.key;
  }
  /**
   * Determines if the block should be embedded based on its coverage and size.
   * @readonly
   * @returns {boolean} `true` if it should be embedded, `false` otherwise.
   */
  get should_embed() {
    try {
      if (this.settings?.min_chars && this.size < this.settings.min_chars) return false;
      const match_line_start = this.line_start + 1;
      const match_line_end = this.line_end;
      const { has_line_start, has_line_end } = Object.entries(this.source?.data?.blocks || {}).reduce((acc, [key, range]) => {
        if (!key.startsWith(this.sub_key + "#")) return acc;
        if (range[0] === match_line_start) acc.has_line_start = key;
        if (range[1] === match_line_end) acc.has_line_end = key;
        return acc;
      }, { has_line_start: null, has_line_end: null });
      if (has_line_start && has_line_end) {
        const start_block = this.collection.get(this.source_key + has_line_start);
        if (start_block?.should_embed) {
          const end_block = this.collection.get(this.source_key + has_line_end);
          if (end_block?.should_embed) return false;
        }
      }
      return true;
    } catch (e) {
      console.error(e, e.stack);
      console.error(`Error getting should_embed for ${this.key}: ` + JSON.stringify(e || {}, null, 2));
    }
  }
  /**
   * Retrieves the size of the SmartBlock.
   * @readonly
   * @returns {number} The size of the SmartBlock.
   */
  get size() {
    return this.data.size;
  }
  /**
   * Retrieves the SmartSource associated with the block.
   * @readonly
   * @returns {SmartSource} The associated SmartSource instance.
   */
  get source() {
    return this.source_collection.get(this.source_key);
  }
  /**
   * Retrieves the SmartSources collection instance.
   * @readonly
   * @returns {SmartSources} The SmartSources collection.
   */
  get source_collection() {
    return this.env.smart_sources;
  }
  get source_key() {
    return this.key.split("#")[0];
  }
  get sub_blocks() {
    return this.source?.blocks?.filter((block) => block.key.startsWith(this.key + "#") && block.line_start > this.line_start && block.line_end <= this.line_end) || [];
  }
  // source dependent
  get excluded_lines() {
    return this.source.excluded_lines;
  }
  get file() {
    return this.source.file;
  }
  get is_media() {
    return this.source.is_media;
  }
  get mtime() {
    return this.source.mtime;
  }
  // DEPRECATED
  /**
   * Retrieves the display name of the block.
   * @readonly
   * @returns {string} The display name.
   */
  get name() {
    return get_block_display_name(
      this.key,
      this.env.settings.smart_view_filter?.show_full_path
    );
  }
  /**
   * @deprecated Use `source` instead. Removing after 2025-09-01.
   * @readonly
   * @returns {SmartSource} The associated SmartSource instance.
   */
  get note() {
    return this.source;
  }
  /**
   * @deprecated Use `source.key` instead. Removing after 2025-09-01.
   * @readonly
   * @returns {string} The source key.
   */
  get note_key() {
    return this.key.split("#")[0];
  }
};
var smart_block_default = {
  class: SmartBlock,
  actions: {
    find_connections
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-blocks/smart_blocks.js
var SmartBlocks = class extends SmartEntities {
  /**
   * Initializes the SmartBlocks instance. Currently muted as processing is handled by SmartSources.
   * @returns {void}
   */
  init() {
  }
  get fs() {
    return this.env.smart_sources.fs;
  }
  /**
   * Retrieves the embedding model associated with the SmartSources collection.
   * @readonly
   * @returns {Object|undefined} The embedding model instance or `undefined` if not set.
   */
  get embed_model() {
    return this.source_collection?.embed_model;
  }
  /**
   * Retrieves the embedding model key from the SmartSources collection.
   * @readonly
   * @returns {string|undefined} The embedding model key or `undefined` if not set.
   */
  get embed_model_key() {
    return this.source_collection?.embed_model_key;
  }
  /**
   * Calculates the expected number of blocks based on the SmartSources collection.
   * @readonly
   * @returns {number} The expected count of blocks.
   */
  get expected_blocks_ct() {
    return Object.values(this.source_collection.items).reduce((acc, item) => acc += Object.keys(item.data.blocks || {}).length, 0);
  }
  /**
   * Retrieves the notices system from the environment.
   * @readonly
   * @returns {Object} The notices object.
   */
  get notices() {
    return this.env.smart_connections_plugin?.notices || this.env.main?.notices;
  }
  /**
   * Retrieves the settings configuration for SmartBlocks.
   * @readonly
   * @returns {Object} The settings configuration object.
   */
  get settings_config() {
    return this.process_settings_config({
      "embed_blocks": {
        name: "Utilize Smart Blocks",
        type: "toggle",
        description: "Creates more granular embeddings by splitting sources into smaller chunks. This may improve search results especially for large documents that have well-defined sections.",
        default: true
      },
      ...super.settings_config
    });
  }
  render_settings(container, opts = {}) {
    return this.render_collection_settings(container, opts);
  }
  get data_dir() {
    return "multi";
  }
  /**
   * Retrieves the SmartSources collection instance.
   * @readonly
   * @returns {SmartSources} The SmartSources collection.
   */
  get source_collection() {
    return this.env.smart_sources;
  }
  /**
   * Processes the embed queue. Currently handled by SmartSources, so this method is muted.
   * @async
   * @returns {Promise<void>}
   */
  async process_embed_queue() {
  }
  /**
   * Processes the load queue. Currently muted as processing is handled by SmartSources.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
  }
  // TEMP: Methods in sources not implemented in blocks
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async prune() {
    throw "Not implemented: prune";
  }
  /**
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {void}
   */
  build_links_map() {
    throw "Not implemented: build_links_map";
  }
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async refresh() {
    throw "Not implemented: refresh";
  }
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async search() {
    throw "Not implemented: search";
  }
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async run_refresh() {
    throw "Not implemented: run_refresh";
  }
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async run_force_refresh() {
    throw "Not implemented: run_force_refresh";
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-blocks/adapters/data/ajson_multi_file.js
var AjsonMultiFileBlocksDataAdapter = class extends AjsonMultiFileCollectionDataAdapter {
  ItemDataAdapter = AjsonMultiFileBlockDataAdapter;
  /**
   * Transforms the item key into a safe filename.
   * Replaces spaces, slashes, and dots with underscores.
   * @returns {string} safe file name
   */
  // get_data_file_name(key) {
  //   return super.get_data_file_name(key.split('#')[0]);
  // }
  get_data_file_name(key) {
    return key.split("#")[0].replace(/[\s\/\.]/g, "_").replace(".md", "");
  }
  /**
   * Process any queued save operations.
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    this.collection.emit_event("collection:save_started");
    this.collection.show_process_notice("saving_collection");
    const save_queue = Object.values(this.collection.items).filter((item) => item._queue_save);
    console.log(`Saving ${this.collection.collection_key}: ${save_queue.length} items`);
    const time_start = Date.now();
    const save_files = Object.entries(save_queue.reduce((acc, item) => {
      const file_name = this.get_item_data_path(item.key);
      acc[file_name] = acc[file_name] || [];
      acc[file_name].push(item);
      return acc;
    }, {}));
    for (let i = 0; i < save_files.length; i++) {
      const [file_name, items] = save_files[i];
      await this.fs.append(
        file_name,
        items.map((item) => this.get_item_ajson(item)).join("\n") + "\n"
      );
      items.forEach((item) => item._queue_save = false);
    }
    console.log(`Saved ${this.collection.collection_key} in ${Date.now() - time_start}ms`);
    this.collection.clear_process_notice("saving_collection");
    this.collection.emit_event("collection:save_completed");
  }
  process_load_queue() {
    console.log(`Skipping loading ${this.collection.collection_key}...`);
  }
};
var AjsonMultiFileBlockDataAdapter = class extends AjsonMultiFileItemDataAdapter {
};

// node_modules/obsidian-smart-env/node_modules/smart-blocks/adapters/_adapter.js
var BlockContentAdapter = class {
  /**
   * @constructor
   * @param {Object} item - The SmartBlock instance this adapter operates on.
   * The `item` should at least provide `data` and references to its parent source.
   */
  constructor(item) {
    this.item = item;
  }
  /**
   * @async
   * @method read
   * @abstract
   * @returns {Promise<string>} The content of the block.
   * @throws {Error} If not implemented by subclass.
   */
  async read() {
    throw new Error("Not implemented");
  }
  /**
   * @async
   * @method append
   * @abstract
   * @param {string} content Content to append to the block.
   * @returns {Promise<void>}
   * @throws {Error} If not implemented by subclass.
   */
  async append(content) {
    throw new Error("Not implemented");
  }
  /**
   * @async
   * @method update
   * @abstract
   * @param {string} new_content The new content for the block.
   * @param {Object} [opts={}] Additional update options.
   * @returns {Promise<void>}
   * @throws {Error} If not implemented by subclass.
   */
  async update(new_content, opts = {}) {
    throw new Error("Not implemented");
  }
  /**
   * @async
   * @method remove
   * @abstract
   * @returns {Promise<void>}
   * @throws {Error} If not implemented by subclass.
   */
  async remove() {
    throw new Error("Not implemented");
  }
  /**
   * @async
   * @method move_to
   * @abstract
   * @param {string} to_key The destination key (source or block reference).
   * @returns {Promise<void>}
   * @throws {Error} If not implemented by subclass.
   */
  async move_to(to_key) {
    throw new Error("Not implemented");
  }
  /**
   * @name data
   * @type {Object}
   * @readonly
   * @description Access the block’s data object. Useful for updating metadata like line references or hashes.
   */
  get data() {
    return this.item.data;
  }
  /**
   * @async
   * @method update_last_read
   * @param {string} content The current content of the block.
   * @returns {Promise<void>}
   * @description Update the block’s `last_read` hash and timestamp based on the given content.
   */
  async update_last_read(content) {
    this.data.last_read = {
      hash: this.create_hash(content),
      at: Date.now()
    };
  }
  /**
   * @method create_hash
   * @param {string} content The content to hash.
   * @returns {Promise<string>} The computed hash of the content.
   * @description Hash the block content to detect changes and prevent unnecessary re-embeddings.
   */
  create_hash(content) {
    return murmur_hash_32_alphanumeric(content);
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-sources/utils/get_line_range.js
function get_line_range2(content, start_line, end_line) {
  const lines = content.split("\n");
  return lines.slice(start_line - 1, end_line).join("\n");
}

// node_modules/obsidian-smart-env/node_modules/smart-blocks/adapters/markdown_block.js
var MarkdownBlockContentAdapter = class extends BlockContentAdapter {
  /**
   * Read the content of the block.
   * @async
   * @returns {Promise<string>} The block content as a string.
   * @throws {Error} If the block cannot be found.
   */
  async read() {
    const source_content = await this.item.source?.read();
    if (!source_content) {
      console.warn(`BLOCK NOT FOUND: ${this.item.key} has no source content.`);
      return "";
    }
    const content = this._extract_block(source_content);
    this.update_last_read(content);
    return content;
  }
  /**
   * Append content to the existing block.
   * This method inserts additional lines after the block's end, then re-parses the file to update line references.
   * @async
   * @param {string} content Content to append to the block.
   * @returns {Promise<void>}
   * @throws {Error} If the block cannot be found.
   */
  async append(content) {
    let full_content = await this.item.source.read();
    const { line_start, line_end } = this.item;
    if (!line_start || !line_end) {
      throw new Error(`Cannot append to block ${this.item.key}: invalid line references.`);
    }
    const lines = full_content.split("\n");
    lines.splice(line_end, 0, "", content);
    const updated_content = lines.join("\n");
    await this.item.source._update(updated_content);
    await this._reparse_source();
  }
  /**
   * Update the block with new content, replacing its current lines.
   * @async
   * @param {string} new_content New content for the block.
   * @param {Object} [opts={}] Additional options.
   * @returns {Promise<void>}
   * @throws {Error} If the block cannot be found.
   */
  async update(new_content, opts = {}) {
    let full_content = await this.item.source.read();
    const { line_start, line_end } = this.item;
    if (!line_start || !line_end) {
      throw new Error(`Cannot update block ${this.item.key}: invalid line references.`);
    }
    const lines = full_content.split("\n");
    const updated_lines = [
      ...lines.slice(0, line_start - 1),
      ...new_content.split("\n"),
      ...lines.slice(line_end)
    ];
    const updated_content = updated_lines.join("\n");
    await this.item.source._update(updated_content);
    await this._reparse_source();
  }
  /**
   * Remove the block entirely from the source.
   * @async
   * @returns {Promise<void>}
   * @throws {Error} If the block cannot be found.
   */
  async remove() {
    let full_content = await this.item.source.read();
    const { line_start, line_end } = this.item;
    if (!line_start || !line_end) {
      throw new Error(`Cannot remove block ${this.item.key}: invalid line references.`);
    }
    const lines = full_content.split("\n");
    const updated_lines = [
      ...lines.slice(0, line_start - 1),
      ...lines.slice(line_end)
    ];
    const updated_content = updated_lines.join("\n");
    await this.item.source._update(updated_content);
    await this._reparse_source();
  }
  /**
   * Move the block to a new location (another source or heading).
   * This involves reading the block content, removing it from the current source, and appending it to the target.
   * @async
   * @param {string} to_key The destination path or entity reference.
   * @returns {Promise<void>}
   * @throws {Error} If the block or target is invalid.
   */
  async move_to(to_key) {
    const content = await this.read();
    await this.remove();
    const is_block_ref = to_key.includes("#");
    let target_source_key = is_block_ref ? to_key.split("#")[0] : to_key;
    const target_source = this.item.env.smart_sources.get(target_source_key);
    if (!target_source) {
      await this.item.env.smart_sources.create(target_source_key, content);
      return;
    }
    if (is_block_ref) {
      const target_block = this.item.env.smart_blocks.get(to_key);
      if (target_block) {
        await target_block.append(content);
      } else {
        await target_source.append(content);
      }
    } else {
      await target_source.append(content);
    }
  }
  /**
   * Extract the block content using current line references from a full source content.
   * @private
   * @param {string} source_content Full source file content.
   * @returns {string} Extracted block content.
   * @throws {Error} If the block cannot be found.
   */
  _extract_block(source_content) {
    if (!source_content) {
      console.warn(`BLOCK NOT FOUND: ${this.item.key} has no source content.`);
      return "";
    }
    const { line_start, line_end } = this.item;
    if (!line_start || !line_end) {
      throw new Error(`BLOCK NOT FOUND: ${this.item.key} has invalid line references.`);
    }
    return get_line_range2(source_content, line_start, line_end);
  }
  /**
   * Re-parse the source file after a CRUD operation to update line references for all blocks.
   * @private
   * @async
   * @returns {Promise<void>}
   */
  async _reparse_source() {
    await this.item.source.import();
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-sources/components/settings.js
async function build_html2(collection, opts = {}) {
  const settings_html = Object.entries(collection.settings_config).map(([setting_key, setting_config]) => {
    if (!setting_config.setting) setting_config.setting = setting_key;
    return this.render_setting_html(setting_config);
  }).join("\n");
  const html = `<div class="source-settings">
    ${settings_header_html(collection, opts)}
    ${settings_html}
  </div>`;
  return html;
}
function settings_header_html(collection, opts = {}) {
  const heading_text = collection.collection_key.replace(/_/g, " ").replace(/\b\w/g, (char) => char.toUpperCase());
  const heading_html = collection.collection_key === "smart_sources" ? get_source_heading_html(collection) : get_block_heading_html(collection);
  return `<div class="group-header">
    <h2>${heading_text}</h2>
    ${heading_html}
  </div>`;
}
function get_source_heading_html(collection) {
  const item_count = Object.keys(collection.items).length;
  if (!collection.loaded) {
    return `<span>${item_count} sources (embeddings not currently loaded)</span>`;
  }
  const total_count = collection.total_files;
  const included_count = collection.included_files;
  if (collection.loaded !== included_count) {
    return `<span>${collection.loaded}/${included_count} sources (partially loaded, should refresh/reload)</span>`;
  }
  const embedded_items = Object.values(collection.items).filter((item) => item.vec);
  const embedded_percentage = Math.round(embedded_items.length / item_count * 100);
  const load_time_html = collection.load_time_ms ? `<span>Load time: ${collection.load_time_ms}ms</span>` : "";
  return `
    <span>${embedded_percentage}% embedded</span>
    ${embedded_percentage === 0 ? "<span><b>Should run Re-import to re-embed</b></span>" : ""}
    <span>${included_count} included</span>
    <span>${total_count - included_count} excluded</span>
    ${load_time_html}
  `;
}
function get_block_heading_html(collection) {
  const item_count = Object.keys(collection.items).length;
  if (!collection.loaded) {
    return `<span>${item_count} blocks (embeddings not currently loaded)</span>`;
  }
  if (collection.loaded !== item_count) {
    return `<span>${collection.loaded}/${item_count} (loaded/total)</span>`;
  }
  const items_w_vec = Object.values(collection.items).filter((item) => item.vec).length;
  const embedded_percentage = Math.round(items_w_vec / item_count * 100);
  const load_time_html = collection.load_time_ms ? `<span>Load time: ${collection.load_time_ms}ms</span>` : "";
  return `
    <span>${embedded_percentage}% embedded (${items_w_vec}/${item_count})</span>
    <!--<span>Loaded: ${item_count} blocks (expected ${collection.expected_blocks_ct})</span>-->
    ${load_time_html}
  `;
}
async function render3(collection, opts = {}) {
  const html = await build_html2.call(this, collection, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process3.call(this, collection, frag, opts);
}
async function post_process3(collection, frag, opts = {}) {
  await this.render_setting_components(frag, { scope: collection });
  return frag;
}

// node_modules/obsidian-smart-env/node_modules/smart-model/components/settings.js
async function render4(scope, opts = {}) {
  const html = Object.entries(scope.settings_config).map(([setting_key, setting_config]) => {
    if (!setting_config.setting) setting_config.setting = setting_key;
    return this.render_setting_html(setting_config);
  }).join("\n");
  const frag = this.create_doc_fragment(html);
  return await post_process4.call(this, scope, frag, opts);
}
async function post_process4(scope, frag, opts = {}) {
  await this.render_setting_components(frag, { scope });
  return frag;
}

// node_modules/obsidian-smart-env/node_modules/smart-model/smart_model.js
var SmartModel = class {
  scope_name = "smart_model";
  static defaults = {
    // override in sub-class if needed
  };
  /**
   * Create a SmartModel instance.
   * @param {Object} opts - Configuration options
   * @param {Object} opts.adapters - Map of adapter names to adapter classes
   * @param {Object} opts.settings - Model settings configuration
   * @param {Object} opts.model_config - Model-specific configuration
   * @param {string} opts.model_config.adapter - Name of the adapter to use
   * @param {string} [opts.model_key] - Optional model identifier to override settings
   * @throws {Error} If required options are missing
   */
  constructor(opts = {}) {
    this.opts = opts;
    this.validate_opts(opts);
    this.state = "unloaded";
    this._adapter = null;
  }
  /**
   * Initialize the model by loading the configured adapter.
   * @async
   * @returns {Promise<void>}
   */
  async initialize() {
    this.load_adapter(this.adapter_name);
    await this.load();
  }
  /**
   * Validate required options.
   * @param {Object} opts - Configuration options
   */
  validate_opts(opts) {
    if (!opts.adapters) throw new Error("opts.adapters is required");
    if (!opts.settings) throw new Error("opts.settings is required");
  }
  /**
   * Get the current settings
   * @returns {Object} Current settings
   */
  get settings() {
    if (!this.opts.settings) this.opts.settings = {
      ...this.constructor.defaults
    };
    return this.opts.settings;
  }
  /**
   * Get the current adapter name
   * @returns {string} Current adapter name
   */
  get adapter_name() {
    let adapter_key = this.opts.model_config?.adapter || this.opts.adapter || this.settings.adapter || Object.keys(this.adapters)[0];
    if (!adapter_key || !this.adapters[adapter_key]) {
      console.warn(`Platform "${adapter_key}" not supported`);
      adapter_key = Object.keys(this.adapters)[0];
    }
    return adapter_key;
  }
  /**
   * Get adapter-specific settings.
   * @returns {Object} Settings for current adapter
   */
  get adapter_settings() {
    if (!this.settings[this.adapter_name]) this.settings[this.adapter_name] = {};
    return this.settings[this.adapter_name];
  }
  get adapter_config() {
    const base_config = this.adapters[this.adapter_name]?.defaults || {};
    return {
      ...base_config,
      ...this.adapter_settings,
      ...this.opts.adapter_config
    };
  }
  /**
   * Get available models.
   * @returns {Object} Map of model objects
   */
  get models() {
    return this.adapter.models;
  }
  /**
   * Get default model key.
   * @returns {string} Default model key
   */
  get default_model_key() {
    return this.adapter.constructor.defaults.default_model;
  }
  /**
   * Get the current model key
   * @returns {string} Current model key
   */
  get model_key() {
    return this.opts.model_key || this.adapter_config.model_key || this.settings.model_key || this.default_model_key;
  }
  /**
   * Get the current model configuration
   * @returns {Object} Combined base and custom model configuration
   */
  get model_config() {
    const model_key = this.model_key;
    const base_model_config = this.models[model_key] || {};
    return {
      ...this.adapter_config,
      ...base_model_config,
      ...this.opts.model_config
    };
  }
  get model_settings() {
    if (!this.settings[this.model_key]) this.settings[this.model_key] = {};
    return this.settings[this.model_key];
  }
  /**
   * Load the current adapter and transition to loaded state.
   * @async
   * @returns {Promise<void>}
   */
  async load() {
    this.set_state("loading");
    try {
      if (!this.adapter?.is_loaded) {
        await this.invoke_adapter_method("load");
      }
    } catch (err) {
      this.set_state("unloaded");
      if (!this.reload_model_timeout) {
        this.reload_model_timeout = setTimeout(async () => {
          this.reload_model_timeout = null;
          await this.load();
          this.set_state("loaded");
          this.env?.events?.emit("model:loaded", { model_key: this.model_key });
          this.notices?.show("Loaded model: " + this.model_key);
        }, 6e4);
      }
      throw new Error(`Failed to load model: ${err.message}`);
    }
    this.set_state("loaded");
  }
  /**
   * Unload the current adapter and transition to unloaded state.
   * @async
   * @returns {Promise<void>}
   */
  async unload() {
    if (this.adapter?.is_loaded) {
      this.set_state("unloading");
      await this.invoke_adapter_method("unload");
      this.set_state("unloaded");
    }
  }
  /**
   * Set the model's state.
   * @param {('unloaded'|'loading'|'loaded'|'unloading')} new_state - The new state
   * @throws {Error} If the state is invalid
   */
  set_state(new_state) {
    const valid_states = ["unloaded", "loading", "loaded", "unloading"];
    if (!valid_states.includes(new_state)) {
      throw new Error(`Invalid state: ${new_state}`);
    }
    this.state = new_state;
  }
  get is_loading() {
    return this.state === "loading";
  }
  get is_loaded() {
    return this.state === "loaded";
  }
  get is_unloading() {
    return this.state === "unloading";
  }
  get is_unloaded() {
    return this.state === "unloaded";
  }
  // ADAPTERS
  /**
   * Get the map of available adapters
   * @returns {Object} Map of adapter names to adapter classes
   */
  get adapters() {
    return this.opts.adapters || {};
  }
  /**
   * Load a specific adapter by name.
   * @async
   * @param {string} adapter_name - Name of the adapter to load
   * @throws {Error} If adapter not found or loading fails
   * @returns {Promise<void>}
   */
  async load_adapter(adapter_name) {
    this.set_adapter(adapter_name);
    if (!this._adapter.loaded) {
      this.set_state("loading");
      try {
        await this.invoke_adapter_method("load");
        this.set_state("loaded");
      } catch (err) {
        this.set_state("unloaded");
        throw new Error(`Failed to load adapter: ${err.message}`);
      }
    }
  }
  /**
   * Set an adapter instance by name without loading it.
   * @param {string} adapter_name - Name of the adapter to set
   * @throws {Error} If adapter not found
   */
  set_adapter(adapter_name) {
    const AdapterClass = this.adapters[adapter_name];
    if (!AdapterClass) {
      throw new Error(`Adapter "${adapter_name}" not found.`);
    }
    if (this._adapter?.constructor.name.toLowerCase() === adapter_name.toLowerCase()) {
      return;
    }
    this._adapter = new AdapterClass(this);
  }
  /**
   * Get the current active adapter instance
   * @returns {Object} The active adapter instance
   * @throws {Error} If adapter not found
   */
  get adapter() {
    const adapter_name = this.adapter_name;
    if (!adapter_name) {
      throw new Error(`Adapter not set for model.`);
    }
    if (!this._adapter) {
      this.load_adapter(adapter_name);
    }
    return this._adapter;
  }
  /**
   * Ensure the adapter is ready to execute a method.
   * @param {string} method - Name of the method to check
   * @throws {Error} If adapter not loaded or method not implemented
   */
  ensure_adapter_ready(method) {
    if (!this.adapter) {
      throw new Error("No adapter loaded.");
    }
    if (typeof this.adapter[method] !== "function") {
      throw new Error(`Adapter does not implement method: ${method}`);
    }
  }
  /**
   * Invoke a method on the current adapter.
   * @async
   * @param {string} method - Name of the method to call
   * @param {...any} args - Arguments to pass to the method
   * @returns {Promise<any>} Result from the adapter method
   * @throws {Error} If adapter not ready or method fails
   */
  async invoke_adapter_method(method, ...args) {
    this.ensure_adapter_ready(method);
    return await this.adapter[method](...args);
  }
  /**
   * Get platforms as dropdown options.
   * @returns {Array<Object>} Array of {value, name} option objects
   */
  get_platforms_as_options() {
    return Object.entries(this.adapters).map(([key, AdapterClass]) => ({ value: key, name: AdapterClass.defaults.description || key }));
  }
  // SETTINGS
  /**
   * Get the settings configuration schema
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    return this.process_settings_config({
      adapter: {
        name: "Model Platform",
        type: "dropdown",
        description: "Select a model platform to use with Smart Model.",
        options_callback: "get_platforms_as_options",
        is_scope: true,
        // trigger re-render of settings when changed
        callback: "adapter_changed",
        default: "default"
      }
    });
  }
  /**
   * Process settings configuration with conditionals and prefixes.
   * @param {Object} _settings_config - Raw settings configuration
   * @param {string} [prefix] - Optional prefix for setting keys
   * @returns {Object} Processed settings configuration
   */
  process_settings_config(_settings_config, prefix = null) {
    return Object.entries(_settings_config).reduce((acc, [key, val]) => {
      const new_key = (prefix ? prefix + "." : "") + this.process_setting_key(key);
      acc[new_key] = val;
      return acc;
    }, {});
  }
  /**
   * Process an individual setting key.
   * Example: replace placeholders with actual adapter names.
   * @param {string} key - The setting key with placeholders.
   * @returns {string} Processed setting key.
   */
  process_setting_key(key) {
    return key.replace(/\[ADAPTER\]/g, this.adapter_name);
  }
  re_render_settings() {
    if (typeof this.opts.re_render_settings === "function") this.opts.re_render_settings();
    else console.warn("re_render_settings is not a function (must be passed in model opts)");
  }
  /**
   * Reload model.
   */
  reload_model() {
    if (typeof this.opts.reload_model === "function") this.opts.reload_model();
    else console.warn("reload_model is not a function (must be passed in model opts)");
  }
  adapter_changed() {
    this.reload_model();
    this.re_render_settings();
  }
  model_changed() {
    this.reload_model();
    this.re_render_settings();
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/smart_embed_model.js
var SmartEmbedModel = class extends SmartModel {
  scope_name = "smart_embed_model";
  static defaults = {
    adapter: "transformers"
  };
  /**
   * Create a SmartEmbedModel instance
   * @param {Object} opts - Configuration options
   * @param {Object} [opts.adapters] - Map of available adapter implementations
   * @param {boolean} [opts.use_gpu] - Whether to enable GPU acceleration
   * @param {number} [opts.gpu_batch_size] - Batch size when using GPU
   * @param {number} [opts.batch_size] - Default batch size for processing
   * @param {Object} [opts.model_config] - Model-specific configuration
   * @param {string} [opts.model_config.adapter] - Override adapter type
   * @param {number} [opts.model_config.dims] - Embedding dimensions
   * @param {number} [opts.model_config.max_tokens] - Maximum tokens to process
   * @param {Object} [opts.settings] - User settings
   * @param {string} [opts.settings.api_key] - API key for remote models
   * @param {number} [opts.settings.min_chars] - Minimum text length to embed
   */
  constructor(opts = {}) {
    super(opts);
  }
  /**
   * Count tokens in an input string
   * @param {string} input - Text to tokenize
   * @returns {Promise<Object>} Token count result
   * @property {number} tokens - Number of tokens in input
   * 
   * @example
   * ```javascript
   * const result = await model.count_tokens("Hello world");
   * console.log(result.tokens); // 2
   * ```
   */
  async count_tokens(input) {
    return await this.invoke_adapter_method("count_tokens", input);
  }
  /**
   * Generate embeddings for a single input
   * @param {string|Object} input - Text or object with embed_input property
   * @returns {Promise<Object>} Embedding result
   * @property {number[]} vec - Embedding vector
   * @property {number} tokens - Token count
   * 
   * @example
   * ```javascript
   * const result = await model.embed("Hello world");
   * console.log(result.vec); // [0.1, 0.2, ...]
   * ```
   */
  async embed(input) {
    if (typeof input === "string") input = { embed_input: input };
    return (await this.embed_batch([input]))[0];
  }
  /**
   * Generate embeddings for multiple inputs in batch
   * @param {Array<string|Object>} inputs - Array of texts or objects with embed_input
   * @returns {Promise<Array<Object>>} Array of embedding results
   * @property {number[]} vec - Embedding vector for each input
   * @property {number} tokens - Token count for each input
   * 
   * @example
   * ```javascript
   * const results = await model.embed_batch([
   *   { embed_input: "First text" },
   *   { embed_input: "Second text" }
   * ]);
   * ```
   */
  async embed_batch(inputs) {
    return await this.invoke_adapter_method("embed_batch", inputs);
  }
  /**
   * Get the current batch size based on GPU settings
   * @returns {number} Current batch size for processing
   */
  get batch_size() {
    return this.adapter.batch_size || 1;
  }
  /**
   * Get settings configuration schema
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    const _settings_config = {
      adapter: {
        name: "Embedding model platform",
        type: "dropdown",
        description: "Select an embedding model platform. The default 'transformers' utilizes built-in local models.",
        options_callback: "get_platforms_as_options",
        callback: "adapter_changed",
        default: this.constructor.defaults.adapter
      },
      ...this.adapter.settings_config || {}
    };
    return this.process_settings_config(_settings_config);
  }
  process_setting_key(key) {
    return key.replace(/\[ADAPTER\]/g, this.adapter_name);
  }
  /**
   * Get available embedding model options
   * @returns {Array<Object>} Array of model options with value and name
   */
  get_embedding_model_options() {
    return Object.entries(this.models).map(([key, model]) => ({ value: key, name: key }));
  }
  // /**
  //  * Get embedding model options including 'None' option
  //  * @returns {Array<Object>} Array of model options with value and name
  //  */
  // get_block_embedding_model_options() {
  //   const options = this.get_embedding_model_options();
  //   options.unshift({ value: 'None', name: 'None' });
  //   return options;
  // }
};

// node_modules/obsidian-smart-env/node_modules/smart-model/adapters/_adapter.js
var SmartModelAdapter = class {
  /**
   * Create a SmartModelAdapter instance.
   * @param {SmartModel} model - The parent SmartModel instance
   */
  constructor(model) {
    this.model = model;
    this.state = "unloaded";
  }
  /**
   * Load the adapter.
   * @async
   * @returns {Promise<void>}
   */
  async load() {
    this.set_state("loaded");
  }
  /**
   * Unload the adapter.
   * @returns {void}
   */
  unload() {
    this.set_state("unloaded");
  }
  /**
   * Get all settings.
   * @returns {Object} All settings
   */
  get settings() {
    return this.model.settings;
  }
  /**
   * Get the current model key.
   * @returns {string} Current model identifier
   */
  get model_key() {
    return this.model.model_key;
  }
  /**
   * Get the current model configuration.
   * @returns {Object} Model configuration
   */
  get model_config() {
    return this.model.model_config;
  }
  /**
   * Get model-specific settings.
   * @returns {Object} Settings for current model
   */
  get model_settings() {
    return this.model.model_settings;
  }
  /**
   * Get adapter-specific configuration.
   * @returns {Object} Adapter configuration
   */
  get adapter_config() {
    return this.model.adapter_config;
  }
  /**
   * Get adapter-specific settings.
   * @returns {Object} Adapter settings
   */
  get adapter_settings() {
    return this.model.adapter_settings;
  }
  /**
   * Get the models.
   * @returns {Object} Map of model objects
   */
  get models() {
    if (typeof this.adapter_config.models === "object" && Object.keys(this.adapter_config.models || {}).length > 0) return this.adapter_config.models;
    else {
      return {};
    }
  }
  /**
   * Get available models from the API.
   * @abstract
   * @param {boolean} [refresh=false] - Whether to refresh cached models
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models(refresh = false) {
    throw new Error("get_models not implemented");
  }
  /**
   * Validate the parameters for get_models.
   * @returns {boolean|Array<Object>} True if parameters are valid, otherwise an array of error objects
   */
  validate_get_models_params() {
    return true;
  }
  /**
   * Get available models as dropdown options synchronously.
   * @returns {Array<Object>} Array of model options.
   */
  get_models_as_options() {
    const models = this.models;
    const params_valid = this.validate_get_models_params();
    if (params_valid !== true) return params_valid;
    if (!Object.keys(models || {}).length) {
      this.get_models(true);
      return [{ value: "", name: "No models currently available" }];
    }
    return Object.entries(models).map(([id, model]) => ({ value: id, name: model.name || id })).sort((a, b) => a.name.localeCompare(b.name));
  }
  /**
   * Set the adapter's state.
   * @deprecated should be handled in SmartModel (only handle once)
   * @param {('unloaded'|'loading'|'loaded'|'unloading')} new_state - The new state
   * @throws {Error} If the state is invalid
   */
  set_state(new_state) {
    const valid_states = ["unloaded", "loading", "loaded", "unloading"];
    if (!valid_states.includes(new_state)) {
      throw new Error(`Invalid state: ${new_state}`);
    }
    this.state = new_state;
  }
  // Replace individual state getters/setters with a unified state management
  get is_loading() {
    return this.state === "loading";
  }
  get is_loaded() {
    return this.state === "loaded";
  }
  get is_unloading() {
    return this.state === "unloading";
  }
  get is_unloaded() {
    return this.state === "unloaded";
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/_adapter.js
var SmartEmbedAdapter = class extends SmartModelAdapter {
  /**
   * @override in sub-class with adapter-specific default configurations
   * @property {string} id - The adapter identifier
   * @property {string} description - Human-readable description
   * @property {string} type - Adapter type ("API")
   * @property {string} endpoint - API endpoint
   * @property {string} adapter - Adapter identifier
   * @property {string} default_model - Default model to use
   */
  static defaults = {};
  /**
   * Create adapter instance
   * @param {SmartEmbedModel} model - Parent model instance
   */
  constructor(model) {
    super(model);
    this.smart_embed = model;
  }
  /**
   * Count tokens in input text
   * @abstract
   * @param {string} input - Text to tokenize
   * @returns {Promise<Object>} Token count result
   * @property {number} tokens - Number of tokens in input
   * @throws {Error} If not implemented by subclass
   */
  async count_tokens(input) {
    throw new Error("count_tokens method not implemented");
  }
  /**
   * Generate embeddings for single input
   * @abstract
   * @param {string|Object} input - Text to embed
   * @returns {Promise<Object>} Embedding result
   * @property {number[]} vec - Embedding vector
   * @property {number} tokens - Number of tokens in input
   * @throws {Error} If not implemented by subclass
   */
  async embed(input) {
    throw new Error("embed method not implemented");
  }
  /**
   * Generate embeddings for multiple inputs
   * @abstract
   * @param {Array<string|Object>} inputs - Texts to embed
   * @returns {Promise<Array<Object>>} Array of embedding results
   * @property {number[]} vec - Embedding vector for each input
   * @property {number} tokens - Number of tokens in each input
   * @throws {Error} If not implemented by subclass
   */
  async embed_batch(inputs) {
    throw new Error("embed_batch method not implemented");
  }
  get settings_config() {
    return {
      "[ADAPTER].model_key": {
        name: "Embedding model",
        type: "dropdown",
        description: "Select an embedding model.",
        options_callback: "adapter.get_models_as_options",
        callback: "model_changed",
        default: this.constructor.defaults.default_model
      }
    };
  }
  get dims() {
    return this.model_config.dims;
  }
  get max_tokens() {
    return this.model_config.max_tokens;
  }
  // get batch_size() { return this.model_config.batch_size; }
  get use_gpu() {
    if (typeof this._use_gpu === "undefined") {
      if (typeof this.model.opts.use_gpu !== "undefined") this._use_gpu = this.model.opts.use_gpu;
      else this._use_gpu = typeof navigator !== "undefined" && !!navigator?.gpu && this.model_settings.gpu_batch_size !== 0;
    }
    return this._use_gpu;
  }
  set use_gpu(value) {
    this._use_gpu = value;
  }
  get batch_size() {
    if (this.use_gpu && this.model_config?.gpu_batch_size) return this.model_config.gpu_batch_size;
    return this.model.opts.batch_size || this.model_config.batch_size || 1;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-http-request/smart_http_request.js
var SmartHttpRequest = class {
  /**
   * @param {object} opts - Options for the SmartHttpRequest class
   * @param {SmartHttpRequestAdapter} opts.adapter - The adapter constructor to use for making HTTP requests
   * @param {Obsidian.requestUrl} opts.obsidian_request_adapter - For use with Obsidian adapter
   */
  constructor(opts = {}) {
    this.opts = opts;
    if (!opts.adapter) throw new Error("HttpRequestAdapter is required");
    this.adapter = new opts.adapter(this);
  }
  /**
   * Returns a well-formed response object
   * @param {object} request_params - Parameters for the HTTP request
   * @param {string} request_params.url - The URL to make the request to
   * @param {string} [request_params.method='GET'] - The HTTP method to use
   * @param {object} [request_params.headers] - Headers to include in the request
   * @param {*} [request_params.body] - The body of the request (for POST, PUT, etc.)
   * @returns {SmartHttpResponseAdapter} instance of the SmartHttpResponseAdapter class
   * @example
   * const response = await smart_http_request.request({
   *   url: 'https://api.example.com/data',
   *   method: 'GET',
   *   headers: { 'Content-Type': 'application/json' }
   * });
   * console.log(await response.json());
   */
  async request(request_params) {
    return await this.adapter.request(request_params);
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-http-request/adapters/_adapter.js
var SmartHttpRequestAdapter = class {
  constructor(main) {
    this.main = main;
  }
  async request(request_params) {
    throw new Error("request not implemented");
  }
};
var SmartHttpResponseAdapter = class {
  constructor(response) {
    this.response = response;
  }
  async headers() {
    throw new Error("headers not implemented");
  }
  async json() {
    throw new Error("json not implemented");
  }
  async status() {
    throw new Error("status not implemented");
  }
  async text() {
    throw new Error("text not implemented");
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-http-request/adapters/obsidian.js
var SmartHttpObsidianRequestAdapter = class extends SmartHttpRequestAdapter {
  async request(request_params) {
    let response;
    try {
      if (!this.main.opts.obsidian_request_url) {
        throw new Error("obsidian_request_url is required in SmartHttp constructor opts");
      }
      response = await this.main.opts.obsidian_request_url({ ...request_params, throw: false });
      if (response.status === 400) throw new Error("Obsidian request failed");
      return new SmartHttpObsidianResponseAdapter(response);
    } catch (error) {
      console.error("Error in SmartHttpObsidianRequestAdapter.request():");
      console.error(JSON.stringify(request_params, null, 2));
      console.error(response);
      console.error(error);
      return null;
    }
  }
};
var SmartHttpObsidianResponseAdapter = class extends SmartHttpResponseAdapter {
  async status() {
    return this.response.status;
  }
  async json() {
    return await this.response.json;
  }
  async text() {
    return await this.response.text;
  }
  async headers() {
    return this.response.headers;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-http-request/adapters/fetch.js
var SmartHttpRequestFetchAdapter = class extends SmartHttpRequestAdapter {
  async request(request_params) {
    const { url, ...opts } = request_params;
    const resp = await fetch(url, opts);
    return new SmartHttpResponseFetchAdapter(resp);
  }
};
var SmartHttpResponseFetchAdapter = class extends SmartHttpResponseAdapter {
  async headers() {
    return this.response.headers;
  }
  async json() {
    if (!this._json) {
      this._json = await this.response.json();
    }
    return this._json;
  }
  async status() {
    return this.response.status;
  }
  async text() {
    if (!this._text) {
      this._text = await this.response.text();
    }
    return this._text;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/_api.js
var SmartEmbedModelApiAdapter = class extends SmartEmbedAdapter {
  /**
   * Get the request adapter class.
   * @returns {SmartEmbedModelRequestAdapter} The request adapter class
   */
  get req_adapter() {
    return SmartEmbedModelRequestAdapter;
  }
  /**
   * Get the response adapter class.
   * @returns {SmartEmbedModelResponseAdapter} The response adapter class
   */
  get res_adapter() {
    return SmartEmbedModelResponseAdapter;
  }
  /** @returns {string} API endpoint URL */
  get endpoint() {
    return this.model_config.endpoint;
  }
  /**
   * Get HTTP request adapter instance
   * @returns {SmartHttpRequest} HTTP request handler
   */
  get http_adapter() {
    if (!this._http_adapter) {
      if (this.model.opts.http_adapter)
        this._http_adapter = this.model.opts.http_adapter;
      else
        this._http_adapter = new SmartHttpRequest({
          adapter: SmartHttpRequestFetchAdapter
        });
    }
    return this._http_adapter;
  }
  /**
   * Get API key for authentication
   * @returns {string} API key
   */
  get api_key() {
    return this.adapter_settings.api_key || this.settings.api_key || this.model_config.api_key;
  }
  /**
   * Count tokens in input text
   * @abstract
   * @param {string} input - Text to tokenize
   * @returns {Promise<Object>} Token count result
   * @throws {Error} If not implemented by subclass
   */
  async count_tokens(input) {
    throw new Error("count_tokens not implemented");
  }
  /**
   * Estimate token count for input text
   * Uses character-based estimation (3.7 chars per token)
   * @param {string|Object} input - Input to estimate tokens for
   * @returns {number} Estimated token count
   */
  estimate_tokens(input) {
    if (typeof input === "object") input = JSON.stringify(input);
    return Math.ceil(input.length / 3.7);
  }
  /**
   * Process a batch of inputs for embedding
   * @param {Array<Object>} inputs - Array of input objects
   * @returns {Promise<Array<Object>>} Processed inputs with embeddings
   * @throws {Error} If API key is not set
   */
  async embed_batch(inputs) {
    if (!this.api_key) throw new Error("API key not set");
    inputs = inputs.filter((item) => item.embed_input?.length > 0);
    if (inputs.length === 0) {
      console.log("Empty batch (or all items have empty embed_input)");
      return [];
    }
    const embed_inputs = await Promise.all(
      inputs.map((item) => this.prepare_embed_input(item.embed_input))
    );
    const _req = new this.req_adapter(this, embed_inputs);
    const request_params = _req.to_platform();
    const resp = await this.request(request_params);
    if (!resp) {
      console.error("No response received for embedding request.");
      return [];
    }
    const _res = new this.res_adapter(this, resp);
    const embeddings = _res.to_openai();
    if (!embeddings) {
      console.error("Failed to parse embeddings.");
      return [];
    }
    return inputs.map((item, i) => {
      item.vec = embeddings[i].vec;
      item.tokens = embeddings[i].tokens;
      return item;
    });
  }
  /**
   * Prepare input text for embedding
   * @abstract
   * @param {string} embed_input - Raw input text
   * @returns {Promise<string>} Processed input text
   * @throws {Error} If not implemented by subclass
   */
  async prepare_embed_input(embed_input) {
    throw new Error("prepare_embed_input not implemented");
  }
  /**
   * Prepare request headers
   * @returns {Object} Headers object with authorization
   */
  prepare_request_headers() {
    let headers = {
      "Content-Type": "application/json"
    };
    if (this.api_key) {
      headers["Authorization"] = `Bearer ${this.api_key}`;
    }
    if (this.smart_embed.opts.headers) {
      headers = { ...headers, ...this.smart_embed.opts.headers };
    }
    return headers;
  }
  /**
   * Make API request with retry logic
   * @param {Object} req - Request configuration
   * @param {number} [retries=0] - Number of retries attempted
   * @returns {Promise<Object>} API response
   */
  async request(req, retries = 0) {
    try {
      req.throw = false;
      const resp = await this.http_adapter.request({
        url: this.endpoint,
        ...req
      });
      const resp_json = await this.get_resp_json(resp);
      return resp_json;
    } catch (error) {
      return await this.handle_request_err(error, req, retries);
    }
  }
  /**
   * Handle API request errors with retry logic
   * @param {Error|Object} error - Error object
   * @param {Object} req - Original request
   * @param {number} retries - Number of retries attempted
   * @returns {Promise<Object|null>} Retry response or null
   */
  async handle_request_err(error, req, retries) {
    if (error.status === 429 && retries < 3) {
      const backoff = Math.pow(retries + 1, 2);
      console.log(`Retrying request (429) in ${backoff} seconds...`);
      await new Promise((r) => setTimeout(r, 1e3 * backoff));
      return await this.request(req, retries + 1);
    }
    console.error(error);
    return null;
  }
  /**
   * Parse response body as JSON
   * @param {Response} resp - Response object
   * @returns {Promise<Object>} Parsed JSON
   */
  async get_resp_json(resp) {
    return typeof resp.json === "function" ? await resp.json() : await resp.json;
  }
  /**
   * Validate API key by making test request
   * @returns {Promise<boolean>} True if API key is valid
   */
  async validate_api_key() {
    const resp = await this.embed_batch([{ embed_input: "test" }]);
    return Array.isArray(resp) && resp.length > 0 && resp[0].vec !== null;
  }
  /**
   * Trim input text to satisfy `max_tokens`.
   * @private
   * @param {string} embed_input - Input text
   * @param {number} tokens_ct - Existing token count
   * @returns {Promise<string|null>} Trimmed text
   */
  async trim_input_to_max_tokens(embed_input, tokens_ct) {
    const reduce_ratio = (tokens_ct - this.max_tokens) / tokens_ct;
    const new_length = Math.floor(embed_input.length * (1 - reduce_ratio));
    let trimmed_input = embed_input.slice(0, new_length);
    const last_space_index = trimmed_input.lastIndexOf(" ");
    if (last_space_index > 0) trimmed_input = trimmed_input.slice(0, last_space_index);
    const prepared = await this.prepare_embed_input(trimmed_input);
    if (prepared === null) return null;
    return prepared;
  }
};
var SmartEmbedModelRequestAdapter = class {
  /**
   * @constructor
   * @param {SmartEmbedModelApiAdapter} adapter - The SmartEmbedModelApiAdapter instance
   * @param {Array<string>} embed_inputs - The array of input texts
   */
  constructor(adapter, embed_inputs) {
    this.adapter = adapter;
    this.embed_inputs = embed_inputs;
  }
  /**
   * Get request headers
   * @returns {Object} Headers object
   */
  get_headers() {
    return this.adapter.prepare_request_headers();
  }
  /**
   * Convert request to platform-specific format
   * @returns {Object} Platform-specific request parameters
   */
  to_platform() {
    return {
      method: "POST",
      headers: this.get_headers(),
      body: JSON.stringify(this.prepare_request_body())
    };
  }
  /**
   * Prepare request body for API call
   * @abstract
   * @returns {Object} Request body object
   * @throws {Error} If not implemented by subclass
   */
  prepare_request_body() {
    throw new Error("prepare_request_body not implemented");
  }
};
var SmartEmbedModelResponseAdapter = class {
  /**
   * @constructor
   * @param {SmartEmbedModelApiAdapter} adapter - The SmartEmbedModelApiAdapter instance
   * @param {Object} response - The response object
   */
  constructor(adapter, response) {
    this.adapter = adapter;
    this.response = response;
  }
  /**
   * Convert response to standard format
   * @returns {Array<Object>} Array of embedding results
   */
  to_openai() {
    return this.parse_response();
  }
  /**
   * Parse API response
   * @abstract
   * @returns {Array<Object>} Parsed embedding results
   * @throws {Error} If not implemented by subclass
   */
  parse_response() {
    throw new Error("parse_response not implemented");
  }
};

// node_modules/obsidian-smart-env/node_modules/js-tiktoken/dist/chunk-ZDNLBERF.js
var import_base64_js = __toESM(require_base64_js(), 1);
var __defProp2 = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => {
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
  return value;
};
function bytePairMerge(piece, ranks) {
  let parts = Array.from(
    { length: piece.length },
    (_, i) => ({ start: i, end: i + 1 })
  );
  while (parts.length > 1) {
    let minRank = null;
    for (let i = 0; i < parts.length - 1; i++) {
      const slice = piece.slice(parts[i].start, parts[i + 1].end);
      const rank = ranks.get(slice.join(","));
      if (rank == null)
        continue;
      if (minRank == null || rank < minRank[0]) {
        minRank = [rank, i];
      }
    }
    if (minRank != null) {
      const i = minRank[1];
      parts[i] = { start: parts[i].start, end: parts[i + 1].end };
      parts.splice(i + 1, 1);
    } else {
      break;
    }
  }
  return parts;
}
function bytePairEncode(piece, ranks) {
  if (piece.length === 1)
    return [ranks.get(piece.join(","))];
  return bytePairMerge(piece, ranks).map((p) => ranks.get(piece.slice(p.start, p.end).join(","))).filter((x) => x != null);
}
function escapeRegex(str) {
  return str.replace(/[\\^$*+?.()|[\]{}]/g, "\\$&");
}
var _Tiktoken = class {
  /** @internal */
  specialTokens;
  /** @internal */
  inverseSpecialTokens;
  /** @internal */
  patStr;
  /** @internal */
  textEncoder = new TextEncoder();
  /** @internal */
  textDecoder = new TextDecoder("utf-8");
  /** @internal */
  rankMap = /* @__PURE__ */ new Map();
  /** @internal */
  textMap = /* @__PURE__ */ new Map();
  constructor(ranks, extendedSpecialTokens) {
    this.patStr = ranks.pat_str;
    const uncompressed = ranks.bpe_ranks.split("\n").filter(Boolean).reduce((memo, x) => {
      const [_, offsetStr, ...tokens] = x.split(" ");
      const offset = Number.parseInt(offsetStr, 10);
      tokens.forEach((token, i) => memo[token] = offset + i);
      return memo;
    }, {});
    for (const [token, rank] of Object.entries(uncompressed)) {
      const bytes = import_base64_js.default.toByteArray(token);
      this.rankMap.set(bytes.join(","), rank);
      this.textMap.set(rank, bytes);
    }
    this.specialTokens = { ...ranks.special_tokens, ...extendedSpecialTokens };
    this.inverseSpecialTokens = Object.entries(this.specialTokens).reduce((memo, [text, rank]) => {
      memo[rank] = this.textEncoder.encode(text);
      return memo;
    }, {});
  }
  encode(text, allowedSpecial = [], disallowedSpecial = "all") {
    const regexes = new RegExp(this.patStr, "ug");
    const specialRegex = _Tiktoken.specialTokenRegex(
      Object.keys(this.specialTokens)
    );
    const ret = [];
    const allowedSpecialSet = new Set(
      allowedSpecial === "all" ? Object.keys(this.specialTokens) : allowedSpecial
    );
    const disallowedSpecialSet = new Set(
      disallowedSpecial === "all" ? Object.keys(this.specialTokens).filter(
        (x) => !allowedSpecialSet.has(x)
      ) : disallowedSpecial
    );
    if (disallowedSpecialSet.size > 0) {
      const disallowedSpecialRegex = _Tiktoken.specialTokenRegex([
        ...disallowedSpecialSet
      ]);
      const specialMatch = text.match(disallowedSpecialRegex);
      if (specialMatch != null) {
        throw new Error(
          `The text contains a special token that is not allowed: ${specialMatch[0]}`
        );
      }
    }
    let start = 0;
    while (true) {
      let nextSpecial = null;
      let startFind = start;
      while (true) {
        specialRegex.lastIndex = startFind;
        nextSpecial = specialRegex.exec(text);
        if (nextSpecial == null || allowedSpecialSet.has(nextSpecial[0]))
          break;
        startFind = nextSpecial.index + 1;
      }
      const end = nextSpecial?.index ?? text.length;
      for (const match of text.substring(start, end).matchAll(regexes)) {
        const piece = this.textEncoder.encode(match[0]);
        const token2 = this.rankMap.get(piece.join(","));
        if (token2 != null) {
          ret.push(token2);
          continue;
        }
        ret.push(...bytePairEncode(piece, this.rankMap));
      }
      if (nextSpecial == null)
        break;
      let token = this.specialTokens[nextSpecial[0]];
      ret.push(token);
      start = nextSpecial.index + nextSpecial[0].length;
    }
    return ret;
  }
  decode(tokens) {
    const res = [];
    let length = 0;
    for (let i2 = 0; i2 < tokens.length; ++i2) {
      const token = tokens[i2];
      const bytes = this.textMap.get(token) ?? this.inverseSpecialTokens[token];
      if (bytes != null) {
        res.push(bytes);
        length += bytes.length;
      }
    }
    const mergedArray = new Uint8Array(length);
    let i = 0;
    for (const bytes of res) {
      mergedArray.set(bytes, i);
      i += bytes.length;
    }
    return this.textDecoder.decode(mergedArray);
  }
};
var Tiktoken = _Tiktoken;
__publicField(Tiktoken, "specialTokenRegex", (tokens) => {
  return new RegExp(tokens.map((i) => escapeRegex(i)).join("|"), "g");
});

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/utils/fetch_cache.js
async function fetch_json_cached(url, cache_key = url) {
  const is_browser = typeof window !== "undefined" && typeof window.document !== "undefined";
  if (is_browser) {
    const cached_text = window.localStorage.getItem(cache_key);
    if (cached_text) return JSON.parse(cached_text);
    const remote2 = await do_fetch(url);
    window.localStorage.setItem(cache_key, JSON.stringify(remote2));
    return remote2;
  }
  const fs = await import("node:fs/promises");
  const path = await import("node:path");
  const os = await import("node:os");
  const cache_dir = path.join(os.homedir(), ".cache", "smart-embed-model");
  const cache_file = path.join(cache_dir, cache_key);
  try {
    const txt = await fs.readFile(cache_file, "utf8");
    return JSON.parse(txt);
  } catch {
  }
  const remote = await do_fetch(url);
  await fs.mkdir(cache_dir, { recursive: true });
  await fs.writeFile(cache_file, JSON.stringify(remote), "utf8");
  return remote;
}
async function do_fetch(url) {
  const resp = await fetch(url);
  if (!resp.ok) throw new Error(`failed to download ${url} \u2013 ${resp.status}`);
  return await resp.json();
}

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/openai.js
var CL100K_URL = "https://raw.githubusercontent.com/brianpetro/jsbrains/refs/heads/main/smart-embed-model/cl100k_base.json";
var SmartEmbedOpenAIAdapter = class extends SmartEmbedModelApiAdapter {
  static defaults = {
    adapter: "openai",
    description: "OpenAI (API)",
    default_model: "text-embedding-3-small",
    endpoint: "https://api.openai.com/v1/embeddings"
  };
  /**
   * Create OpenAI adapter instance
   * @param {SmartEmbedModel} smart_embed - Parent model instance
   */
  constructor(smart_embed) {
    super(smart_embed);
    this.enc = null;
  }
  /**
   * Initialize tokenizer
   * @returns {Promise<void>}
   */
  async load() {
    const cl100k_base = await fetch_json_cached(CL100K_URL, "cl100k_base.json");
    this.enc = new Tiktoken(cl100k_base);
  }
  /**
   * Count tokens in input text using OpenAI's tokenizer
   * @param {string} input - Text to tokenize
   * @returns {Promise<Object>} Token count result
   */
  async count_tokens(input) {
    if (!this.enc) await this.load();
    return { tokens: this.enc.encode(input).length };
  }
  /**
   * Prepare input text for embedding
   * Handles token limit truncation
   * @param {string} embed_input - Raw input text
   * @returns {Promise<string|null>} Processed input text
   */
  async prepare_embed_input(embed_input) {
    if (typeof embed_input !== "string") {
      throw new TypeError("embed_input must be a string");
    }
    if (embed_input.length === 0) {
      console.log("Warning: prepare_embed_input received an empty string");
      return null;
    }
    const { tokens } = await this.count_tokens(embed_input);
    if (tokens <= this.max_tokens) {
      return embed_input;
    }
    return await this.trim_input_to_max_tokens(embed_input, tokens);
  }
  /**
   * Trim input text to fit token limit
   * @private
   * @param {string} embed_input - Input text to trim
   * @param {number} tokens_ct - Current token count
   * @returns {Promise<string|null>} Trimmed input text
   */
  async trim_input_to_max_tokens(embed_input, tokens_ct) {
    const reduce_ratio = (tokens_ct - this.max_tokens) / tokens_ct;
    const new_length = Math.floor(embed_input.length * (1 - reduce_ratio));
    let trimmed_input = embed_input.slice(0, new_length);
    const last_space_index = trimmed_input.lastIndexOf(" ");
    if (last_space_index > 0) {
      trimmed_input = trimmed_input.slice(0, last_space_index);
    }
    const prepared_input = await this.prepare_embed_input(trimmed_input);
    if (prepared_input === null) {
      console.log(
        "Warning: prepare_embed_input resulted in an empty string after trimming"
      );
      return null;
    }
    return prepared_input;
  }
  /**
   * Get the request adapter class.
   * @returns {SmartEmbedOpenAIRequestAdapter} The request adapter class
   */
  get req_adapter() {
    return SmartEmbedOpenAIRequestAdapter;
  }
  /**
   * Get the response adapter class.
   * @returns {SmartEmbedOpenAIResponseAdapter} The response adapter class
   */
  get res_adapter() {
    return SmartEmbedOpenAIResponseAdapter;
  }
  /** @returns {number} Maximum tokens per input */
  get max_tokens() {
    return this.model_config.max_tokens || 8191;
  }
  /** @returns {Object} Settings configuration for OpenAI adapter */
  get settings_config() {
    return {
      ...super.settings_config,
      "[ADAPTER].api_key": {
        name: "OpenAI API key for embeddings",
        type: "password",
        description: "Required for OpenAI embedding models.",
        placeholder: "Enter OpenAI API key"
      }
    };
  }
  /**
   * Get available models (hardcoded list)
   * @returns {Promise<Object>} Map of model objects
   */
  get_models() {
    return Promise.resolve(this.models);
  }
  get models() {
    return {
      "text-embedding-3-small": {
        "id": "text-embedding-3-small",
        "batch_size": 50,
        "dims": 1536,
        "max_tokens": 8191,
        "name": "OpenAI Text-3 Small",
        "description": "API, 8,191 tokens, 1,536 dim",
        "endpoint": "https://api.openai.com/v1/embeddings",
        "adapter": "openai"
      },
      "text-embedding-3-large": {
        "id": "text-embedding-3-large",
        "batch_size": 50,
        "dims": 3072,
        "max_tokens": 8191,
        "name": "OpenAI Text-3 Large",
        "description": "API, 8,191 tokens, 3,072 dim",
        "endpoint": "https://api.openai.com/v1/embeddings",
        "adapter": "openai"
      },
      "text-embedding-3-small-512": {
        "id": "text-embedding-3-small",
        "batch_size": 50,
        "dims": 512,
        "max_tokens": 8191,
        "name": "OpenAI Text-3 Small - 512",
        "description": "API, 8,191 tokens, 512 dim",
        "endpoint": "https://api.openai.com/v1/embeddings",
        "adapter": "openai"
      },
      "text-embedding-3-large-256": {
        "id": "text-embedding-3-large",
        "batch_size": 50,
        "dims": 256,
        "max_tokens": 8191,
        "name": "OpenAI Text-3 Large - 256",
        "description": "API, 8,191 tokens, 256 dim",
        "endpoint": "https://api.openai.com/v1/embeddings",
        "adapter": "openai"
      },
      "text-embedding-ada-002": {
        "id": "text-embedding-ada-002",
        "batch_size": 50,
        "dims": 1536,
        "max_tokens": 8191,
        "name": "OpenAI Ada",
        "description": "API, 8,191 tokens, 1,536 dim",
        "endpoint": "https://api.openai.com/v1/embeddings",
        "adapter": "openai"
      }
    };
  }
};
var SmartEmbedOpenAIRequestAdapter = class extends SmartEmbedModelRequestAdapter {
  /**
   * Prepare request body for OpenAI API
   * @returns {Object} Request body for API
   */
  prepare_request_body() {
    const body = {
      model: this.adapter.model_config.id,
      input: this.embed_inputs
    };
    if (this.adapter.model_key.startsWith("text-embedding-3")) {
      body.dimensions = this.adapter.model_config.dims;
    }
    return body;
  }
};
var SmartEmbedOpenAIResponseAdapter = class extends SmartEmbedModelResponseAdapter {
  /**
   * Parse OpenAI API response
   * @returns {Array<Object>} Parsed embedding results
   */
  parse_response() {
    const resp = this.response;
    if (!resp || !resp.data || !resp.usage) {
      console.error("Invalid response format", resp);
      return [];
    }
    const avg_tokens = resp.usage.total_tokens / resp.data.length;
    return resp.data.map((item) => ({
      vec: item.embedding,
      tokens: avg_tokens
      // OpenAI doesn't provide tokens per item in batch requests
    }));
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/_message.js
var SmartEmbedMessageAdapter = class extends SmartEmbedAdapter {
  /**
   * Create message adapter instance
   * @param {SmartEmbedModel} model - Parent model instance
   */
  constructor(model) {
    super(model);
    this.message_queue = {};
    this.message_id = 0;
    this.connector = null;
    this.message_prefix = `msg_${Math.random().toString(36).substr(2, 9)}_`;
  }
  /**
   * Send message and wait for response
   * @protected
   * @param {string} method - Method name to call
   * @param {Object} params - Method parameters
   * @returns {Promise<any>} Response data
   */
  async _send_message(method, params) {
    return new Promise((resolve, reject) => {
      const id = `${this.message_prefix}${this.message_id++}`;
      this.message_queue[id] = { resolve, reject };
      this._post_message({ method, params, id });
    });
  }
  /**
   * Handle response message from worker/iframe
   * @protected
   * @param {string} id - Message ID
   * @param {*} result - Response result
   * @param {Error} [error] - Response error
   */
  _handle_message_result(id, result, error) {
    if (!id.startsWith(this.message_prefix)) return;
    if (result?.model_loaded) {
      console.log("model loaded");
      this.model.model_loaded = true;
    }
    if (this.message_queue[id]) {
      if (error) {
        this.message_queue[id].reject(new Error(error));
      } else {
        this.message_queue[id].resolve(result);
      }
      delete this.message_queue[id];
    }
  }
  /**
   * Count tokens in input text
   * @param {string} input - Text to tokenize
   * @returns {Promise<Object>} Token count result
   */
  async count_tokens(input) {
    return this._send_message("count_tokens", { input });
  }
  /**
   * Generate embeddings for multiple inputs
   * @param {Array<Object>} inputs - Array of input objects
   * @returns {Promise<Array<Object>>} Processed inputs with embeddings
   */
  async embed_batch(inputs) {
    inputs = inputs.filter((item) => item.embed_input?.length > 0);
    if (!inputs.length) return [];
    const embed_inputs = inputs.map((item) => ({ embed_input: item.embed_input }));
    const result = await this._send_message("embed_batch", { inputs: embed_inputs });
    return inputs.map((item, i) => {
      item.vec = result[i].vec;
      item.tokens = result[i].tokens;
      return item;
    });
  }
  /**
   * Post message to worker/iframe
   * @abstract
   * @protected
   * @param {Object} message_data - Message to send
   * @throws {Error} If not implemented by subclass
   */
  _post_message(message_data) {
    throw new Error("_post_message must be implemented by subclass");
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/iframe.js
var SmartEmbedIframeAdapter = class extends SmartEmbedMessageAdapter {
  /**
   * Create iframe adapter instance
   * @param {SmartEmbedModel} model - Parent model instance
   */
  constructor(model) {
    super(model);
    this.iframe = null;
    this.origin = window.location.origin;
    this.iframe_id = `smart_embed_iframe`;
  }
  /**
   * Initialize iframe and load model
   * @returns {Promise<void>}
   */
  async load() {
    const existing_iframe = document.getElementById(this.iframe_id);
    if (existing_iframe) {
      existing_iframe.remove();
    }
    this.iframe = document.createElement("iframe");
    this.iframe.style.display = "none";
    this.iframe.id = this.iframe_id;
    document.body.appendChild(this.iframe);
    window.addEventListener("message", this._handle_message.bind(this));
    this.iframe.srcdoc = `
          <html>
            <body>
              <script type="module">
                ${this.connector}
                // Set up a message listener in the iframe
                window.addEventListener('message', async (event) => {
                    if (event.origin !== '${this.origin}' || event.data.iframe_id !== '${this.iframe_id}') return console.log('message ignored (listener)', event);
                    // Process the message and send the response back
                    const response = await process_message(event.data);
                    window.parent.postMessage({ ...response, iframe_id: '${this.iframe_id}' }, '${this.origin}');
                });
              </script>
            </body>
          </html>
        `;
    await new Promise((resolve) => this.iframe.onload = resolve);
    const load_opts = {
      // ...this.model.opts,
      model_key: this.model.model_key,
      adapters: null,
      // cannot clone classes
      settings: null,
      batch_size: this.batch_size,
      use_gpu: this.use_gpu
    };
    await this._send_message("load", load_opts);
    return new Promise((resolve) => {
      const check_model_loaded = () => {
        if (this.model.model_loaded) {
          resolve();
        } else {
          setTimeout(check_model_loaded, 100);
        }
      };
      check_model_loaded();
    });
  }
  /**
   * Post message to iframe
   * @protected
   * @param {Object} message_data - Message to send
   */
  _post_message(message_data) {
    this.iframe.contentWindow.postMessage({ ...message_data, iframe_id: this.iframe_id }, this.origin);
  }
  /**
   * Handle message from iframe
   * @private
   * @param {MessageEvent} event - Message event
   */
  _handle_message(event) {
    if (event.origin !== this.origin || event.data.iframe_id !== this.iframe_id) return;
    const { id, result, error } = event.data;
    this._handle_message_result(id, result, error);
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/connectors/transformers_iframe.js
var transformers_connector = 'var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);\n\n// ../smart-model/smart_model.js\nvar SmartModel = class {\n  /**\n   * Create a SmartModel instance.\n   * @param {Object} opts - Configuration options\n   * @param {Object} opts.adapters - Map of adapter names to adapter classes\n   * @param {Object} opts.settings - Model settings configuration\n   * @param {Object} opts.model_config - Model-specific configuration\n   * @param {string} opts.model_config.adapter - Name of the adapter to use\n   * @param {string} [opts.model_key] - Optional model identifier to override settings\n   * @throws {Error} If required options are missing\n   */\n  constructor(opts = {}) {\n    __publicField(this, "scope_name", "smart_model");\n    this.opts = opts;\n    this.validate_opts(opts);\n    this.state = "unloaded";\n    this._adapter = null;\n  }\n  /**\n   * Initialize the model by loading the configured adapter.\n   * @async\n   * @returns {Promise<void>}\n   */\n  async initialize() {\n    this.load_adapter(this.adapter_name);\n    await this.load();\n  }\n  /**\n   * Validate required options.\n   * @param {Object} opts - Configuration options\n   */\n  validate_opts(opts) {\n    if (!opts.adapters) throw new Error("opts.adapters is required");\n    if (!opts.settings) throw new Error("opts.settings is required");\n  }\n  /**\n   * Get the current settings\n   * @returns {Object} Current settings\n   */\n  get settings() {\n    if (!this.opts.settings) this.opts.settings = {\n      ...this.constructor.defaults\n    };\n    return this.opts.settings;\n  }\n  /**\n   * Get the current adapter name\n   * @returns {string} Current adapter name\n   */\n  get adapter_name() {\n    let adapter_key = this.opts.model_config?.adapter || this.opts.adapter || this.settings.adapter || Object.keys(this.adapters)[0];\n    if (!adapter_key || !this.adapters[adapter_key]) {\n      console.warn(`Platform "${adapter_key}" not supported`);\n      adapter_key = Object.keys(this.adapters)[0];\n    }\n    return adapter_key;\n  }\n  /**\n   * Get adapter-specific settings.\n   * @returns {Object} Settings for current adapter\n   */\n  get adapter_settings() {\n    if (!this.settings[this.adapter_name]) this.settings[this.adapter_name] = {};\n    return this.settings[this.adapter_name];\n  }\n  get adapter_config() {\n    const base_config = this.adapters[this.adapter_name]?.defaults || {};\n    return {\n      ...base_config,\n      ...this.adapter_settings,\n      ...this.opts.adapter_config\n    };\n  }\n  /**\n   * Get available models.\n   * @returns {Object} Map of model objects\n   */\n  get models() {\n    return this.adapter.models;\n  }\n  /**\n   * Get default model key.\n   * @returns {string} Default model key\n   */\n  get default_model_key() {\n    return this.adapter.constructor.defaults.default_model;\n  }\n  /**\n   * Get the current model key\n   * @returns {string} Current model key\n   */\n  get model_key() {\n    return this.opts.model_key || this.adapter_config.model_key || this.settings.model_key || this.default_model_key;\n  }\n  /**\n   * Get the current model configuration\n   * @returns {Object} Combined base and custom model configuration\n   */\n  get model_config() {\n    const model_key = this.model_key;\n    const base_model_config = this.models[model_key] || {};\n    return {\n      ...this.adapter_config,\n      ...base_model_config,\n      ...this.opts.model_config\n    };\n  }\n  get model_settings() {\n    if (!this.settings[this.model_key]) this.settings[this.model_key] = {};\n    return this.settings[this.model_key];\n  }\n  /**\n   * Load the current adapter and transition to loaded state.\n   * @async\n   * @returns {Promise<void>}\n   */\n  async load() {\n    this.set_state("loading");\n    try {\n      if (!this.adapter?.is_loaded) {\n        await this.invoke_adapter_method("load");\n      }\n    } catch (err) {\n      this.set_state("unloaded");\n      if (!this.reload_model_timeout) {\n        this.reload_model_timeout = setTimeout(async () => {\n          this.reload_model_timeout = null;\n          await this.load();\n          this.set_state("loaded");\n          this.notices?.show("Loaded model: " + this.model_key);\n        }, 6e4);\n      }\n      throw new Error(`Failed to load model: ${err.message}`);\n    }\n    this.set_state("loaded");\n  }\n  /**\n   * Unload the current adapter and transition to unloaded state.\n   * @async\n   * @returns {Promise<void>}\n   */\n  async unload() {\n    if (this.adapter?.is_loaded) {\n      this.set_state("unloading");\n      await this.invoke_adapter_method("unload");\n      this.set_state("unloaded");\n    }\n  }\n  /**\n   * Set the model\'s state.\n   * @param {(\'unloaded\'|\'loading\'|\'loaded\'|\'unloading\')} new_state - The new state\n   * @throws {Error} If the state is invalid\n   */\n  set_state(new_state) {\n    const valid_states = ["unloaded", "loading", "loaded", "unloading"];\n    if (!valid_states.includes(new_state)) {\n      throw new Error(`Invalid state: ${new_state}`);\n    }\n    this.state = new_state;\n  }\n  get is_loading() {\n    return this.state === "loading";\n  }\n  get is_loaded() {\n    return this.state === "loaded";\n  }\n  get is_unloading() {\n    return this.state === "unloading";\n  }\n  get is_unloaded() {\n    return this.state === "unloaded";\n  }\n  // ADAPTERS\n  /**\n   * Get the map of available adapters\n   * @returns {Object} Map of adapter names to adapter classes\n   */\n  get adapters() {\n    return this.opts.adapters || {};\n  }\n  /**\n   * Load a specific adapter by name.\n   * @async\n   * @param {string} adapter_name - Name of the adapter to load\n   * @throws {Error} If adapter not found or loading fails\n   * @returns {Promise<void>}\n   */\n  async load_adapter(adapter_name) {\n    this.set_adapter(adapter_name);\n    if (!this._adapter.loaded) {\n      this.set_state("loading");\n      try {\n        await this.invoke_adapter_method("load");\n        this.set_state("loaded");\n      } catch (err) {\n        this.set_state("unloaded");\n        throw new Error(`Failed to load adapter: ${err.message}`);\n      }\n    }\n  }\n  /**\n   * Set an adapter instance by name without loading it.\n   * @param {string} adapter_name - Name of the adapter to set\n   * @throws {Error} If adapter not found\n   */\n  set_adapter(adapter_name) {\n    const AdapterClass = this.adapters[adapter_name];\n    if (!AdapterClass) {\n      throw new Error(`Adapter "${adapter_name}" not found.`);\n    }\n    if (this._adapter?.constructor.name.toLowerCase() === adapter_name.toLowerCase()) {\n      return;\n    }\n    this._adapter = new AdapterClass(this);\n  }\n  /**\n   * Get the current active adapter instance\n   * @returns {Object} The active adapter instance\n   * @throws {Error} If adapter not found\n   */\n  get adapter() {\n    const adapter_name = this.adapter_name;\n    if (!adapter_name) {\n      throw new Error(`Adapter not set for model.`);\n    }\n    if (!this._adapter) {\n      this.load_adapter(adapter_name);\n    }\n    return this._adapter;\n  }\n  /**\n   * Ensure the adapter is ready to execute a method.\n   * @param {string} method - Name of the method to check\n   * @throws {Error} If adapter not loaded or method not implemented\n   */\n  ensure_adapter_ready(method) {\n    if (!this.adapter) {\n      throw new Error("No adapter loaded.");\n    }\n    if (typeof this.adapter[method] !== "function") {\n      throw new Error(`Adapter does not implement method: ${method}`);\n    }\n  }\n  /**\n   * Invoke a method on the current adapter.\n   * @async\n   * @param {string} method - Name of the method to call\n   * @param {...any} args - Arguments to pass to the method\n   * @returns {Promise<any>} Result from the adapter method\n   * @throws {Error} If adapter not ready or method fails\n   */\n  async invoke_adapter_method(method, ...args) {\n    this.ensure_adapter_ready(method);\n    return await this.adapter[method](...args);\n  }\n  /**\n   * Get platforms as dropdown options.\n   * @returns {Array<Object>} Array of {value, name} option objects\n   */\n  get_platforms_as_options() {\n    return Object.entries(this.adapters).map(([key, AdapterClass]) => ({ value: key, name: AdapterClass.defaults.description || key }));\n  }\n  // SETTINGS\n  /**\n   * Get the settings configuration schema\n   * @returns {Object} Settings configuration object\n   */\n  get settings_config() {\n    return this.process_settings_config({\n      adapter: {\n        name: "Model Platform",\n        type: "dropdown",\n        description: "Select a model platform to use with Smart Model.",\n        options_callback: "get_platforms_as_options",\n        is_scope: true,\n        // trigger re-render of settings when changed\n        callback: "adapter_changed",\n        default: "default"\n      }\n    });\n  }\n  /**\n   * Process settings configuration with conditionals and prefixes.\n   * @param {Object} _settings_config - Raw settings configuration\n   * @param {string} [prefix] - Optional prefix for setting keys\n   * @returns {Object} Processed settings configuration\n   */\n  process_settings_config(_settings_config, prefix = null) {\n    return Object.entries(_settings_config).reduce((acc, [key, val]) => {\n      const new_key = (prefix ? prefix + "." : "") + this.process_setting_key(key);\n      acc[new_key] = val;\n      return acc;\n    }, {});\n  }\n  /**\n   * Process an individual setting key.\n   * Example: replace placeholders with actual adapter names.\n   * @param {string} key - The setting key with placeholders.\n   * @returns {string} Processed setting key.\n   */\n  process_setting_key(key) {\n    return key.replace(/\\[ADAPTER\\]/g, this.adapter_name);\n  }\n  re_render_settings() {\n    if (typeof this.opts.re_render_settings === "function") this.opts.re_render_settings();\n    else console.warn("re_render_settings is not a function (must be passed in model opts)");\n  }\n  /**\n   * Reload model.\n   */\n  reload_model() {\n    if (typeof this.opts.reload_model === "function") this.opts.reload_model();\n    else console.warn("reload_model is not a function (must be passed in model opts)");\n  }\n  adapter_changed() {\n    this.reload_model();\n    this.re_render_settings();\n  }\n  model_changed() {\n    this.reload_model();\n    this.re_render_settings();\n  }\n};\n__publicField(SmartModel, "defaults", {\n  // override in sub-class if needed\n});\n\n// smart_embed_model.js\nvar SmartEmbedModel = class extends SmartModel {\n  /**\n   * Create a SmartEmbedModel instance\n   * @param {Object} opts - Configuration options\n   * @param {Object} [opts.adapters] - Map of available adapter implementations\n   * @param {boolean} [opts.use_gpu] - Whether to enable GPU acceleration\n   * @param {number} [opts.gpu_batch_size] - Batch size when using GPU\n   * @param {number} [opts.batch_size] - Default batch size for processing\n   * @param {Object} [opts.model_config] - Model-specific configuration\n   * @param {string} [opts.model_config.adapter] - Override adapter type\n   * @param {number} [opts.model_config.dims] - Embedding dimensions\n   * @param {number} [opts.model_config.max_tokens] - Maximum tokens to process\n   * @param {Object} [opts.settings] - User settings\n   * @param {string} [opts.settings.api_key] - API key for remote models\n   * @param {number} [opts.settings.min_chars] - Minimum text length to embed\n   */\n  constructor(opts = {}) {\n    super(opts);\n    __publicField(this, "scope_name", "smart_embed_model");\n  }\n  /**\n   * Count tokens in an input string\n   * @param {string} input - Text to tokenize\n   * @returns {Promise<Object>} Token count result\n   * @property {number} tokens - Number of tokens in input\n   * \n   * @example\n   * ```javascript\n   * const result = await model.count_tokens("Hello world");\n   * console.log(result.tokens); // 2\n   * ```\n   */\n  async count_tokens(input) {\n    return await this.invoke_adapter_method("count_tokens", input);\n  }\n  /**\n   * Generate embeddings for a single input\n   * @param {string|Object} input - Text or object with embed_input property\n   * @returns {Promise<Object>} Embedding result\n   * @property {number[]} vec - Embedding vector\n   * @property {number} tokens - Token count\n   * \n   * @example\n   * ```javascript\n   * const result = await model.embed("Hello world");\n   * console.log(result.vec); // [0.1, 0.2, ...]\n   * ```\n   */\n  async embed(input) {\n    if (typeof input === "string") input = { embed_input: input };\n    return (await this.embed_batch([input]))[0];\n  }\n  /**\n   * Generate embeddings for multiple inputs in batch\n   * @param {Array<string|Object>} inputs - Array of texts or objects with embed_input\n   * @returns {Promise<Array<Object>>} Array of embedding results\n   * @property {number[]} vec - Embedding vector for each input\n   * @property {number} tokens - Token count for each input\n   * \n   * @example\n   * ```javascript\n   * const results = await model.embed_batch([\n   *   { embed_input: "First text" },\n   *   { embed_input: "Second text" }\n   * ]);\n   * ```\n   */\n  async embed_batch(inputs) {\n    return await this.invoke_adapter_method("embed_batch", inputs);\n  }\n  /**\n   * Get the current batch size based on GPU settings\n   * @returns {number} Current batch size for processing\n   */\n  get batch_size() {\n    return this.adapter.batch_size || 1;\n  }\n  /**\n   * Get settings configuration schema\n   * @returns {Object} Settings configuration object\n   */\n  get settings_config() {\n    const _settings_config = {\n      adapter: {\n        name: "Embedding model platform",\n        type: "dropdown",\n        description: "Select an embedding model platform. The default \'transformers\' utilizes built-in local models.",\n        options_callback: "get_platforms_as_options",\n        callback: "adapter_changed",\n        default: this.constructor.defaults.adapter\n      },\n      ...this.adapter.settings_config || {}\n    };\n    return this.process_settings_config(_settings_config);\n  }\n  process_setting_key(key) {\n    return key.replace(/\\[ADAPTER\\]/g, this.adapter_name);\n  }\n  /**\n   * Get available embedding model options\n   * @returns {Array<Object>} Array of model options with value and name\n   */\n  get_embedding_model_options() {\n    return Object.entries(this.models).map(([key, model2]) => ({ value: key, name: key }));\n  }\n  // /**\n  //  * Get embedding model options including \'None\' option\n  //  * @returns {Array<Object>} Array of model options with value and name\n  //  */\n  // get_block_embedding_model_options() {\n  //   const options = this.get_embedding_model_options();\n  //   options.unshift({ value: \'None\', name: \'None\' });\n  //   return options;\n  // }\n};\n__publicField(SmartEmbedModel, "defaults", {\n  adapter: "transformers"\n});\n\n// ../smart-model/adapters/_adapter.js\nvar SmartModelAdapter = class {\n  /**\n   * Create a SmartModelAdapter instance.\n   * @param {SmartModel} model - The parent SmartModel instance\n   */\n  constructor(model2) {\n    this.model = model2;\n    this.state = "unloaded";\n  }\n  /**\n   * Load the adapter.\n   * @async\n   * @returns {Promise<void>}\n   */\n  async load() {\n    this.set_state("loaded");\n  }\n  /**\n   * Unload the adapter.\n   * @returns {void}\n   */\n  unload() {\n    this.set_state("unloaded");\n  }\n  /**\n   * Get all settings.\n   * @returns {Object} All settings\n   */\n  get settings() {\n    return this.model.settings;\n  }\n  /**\n   * Get the current model key.\n   * @returns {string} Current model identifier\n   */\n  get model_key() {\n    return this.model.model_key;\n  }\n  /**\n   * Get the current model configuration.\n   * @returns {Object} Model configuration\n   */\n  get model_config() {\n    return this.model.model_config;\n  }\n  /**\n   * Get model-specific settings.\n   * @returns {Object} Settings for current model\n   */\n  get model_settings() {\n    return this.model.model_settings;\n  }\n  /**\n   * Get adapter-specific configuration.\n   * @returns {Object} Adapter configuration\n   */\n  get adapter_config() {\n    return this.model.adapter_config;\n  }\n  /**\n   * Get adapter-specific settings.\n   * @returns {Object} Adapter settings\n   */\n  get adapter_settings() {\n    return this.model.adapter_settings;\n  }\n  /**\n   * Get the models.\n   * @returns {Object} Map of model objects\n   */\n  get models() {\n    if (typeof this.adapter_config.models === "object" && Object.keys(this.adapter_config.models || {}).length > 0) return this.adapter_config.models;\n    else {\n      return {};\n    }\n  }\n  /**\n   * Get available models from the API.\n   * @abstract\n   * @param {boolean} [refresh=false] - Whether to refresh cached models\n   * @returns {Promise<Object>} Map of model objects\n   */\n  async get_models(refresh = false) {\n    throw new Error("get_models not implemented");\n  }\n  /**\n   * Validate the parameters for get_models.\n   * @returns {boolean|Array<Object>} True if parameters are valid, otherwise an array of error objects\n   */\n  validate_get_models_params() {\n    return true;\n  }\n  /**\n   * Get available models as dropdown options synchronously.\n   * @returns {Array<Object>} Array of model options.\n   */\n  get_models_as_options() {\n    const models = this.models;\n    const params_valid = this.validate_get_models_params();\n    if (params_valid !== true) return params_valid;\n    if (!Object.keys(models || {}).length) {\n      this.get_models(true);\n      return [{ value: "", name: "No models currently available" }];\n    }\n    return Object.entries(models).map(([id, model2]) => ({ value: id, name: model2.name || id })).sort((a, b) => a.name.localeCompare(b.name));\n  }\n  /**\n   * Set the adapter\'s state.\n   * @deprecated should be handled in SmartModel (only handle once)\n   * @param {(\'unloaded\'|\'loading\'|\'loaded\'|\'unloading\')} new_state - The new state\n   * @throws {Error} If the state is invalid\n   */\n  set_state(new_state) {\n    const valid_states = ["unloaded", "loading", "loaded", "unloading"];\n    if (!valid_states.includes(new_state)) {\n      throw new Error(`Invalid state: ${new_state}`);\n    }\n    this.state = new_state;\n  }\n  // Replace individual state getters/setters with a unified state management\n  get is_loading() {\n    return this.state === "loading";\n  }\n  get is_loaded() {\n    return this.state === "loaded";\n  }\n  get is_unloading() {\n    return this.state === "unloading";\n  }\n  get is_unloaded() {\n    return this.state === "unloaded";\n  }\n};\n\n// adapters/_adapter.js\nvar SmartEmbedAdapter = class extends SmartModelAdapter {\n  /**\n   * Create adapter instance\n   * @param {SmartEmbedModel} model - Parent model instance\n   */\n  constructor(model2) {\n    super(model2);\n    this.smart_embed = model2;\n  }\n  /**\n   * Count tokens in input text\n   * @abstract\n   * @param {string} input - Text to tokenize\n   * @returns {Promise<Object>} Token count result\n   * @property {number} tokens - Number of tokens in input\n   * @throws {Error} If not implemented by subclass\n   */\n  async count_tokens(input) {\n    throw new Error("count_tokens method not implemented");\n  }\n  /**\n   * Generate embeddings for single input\n   * @abstract\n   * @param {string|Object} input - Text to embed\n   * @returns {Promise<Object>} Embedding result\n   * @property {number[]} vec - Embedding vector\n   * @property {number} tokens - Number of tokens in input\n   * @throws {Error} If not implemented by subclass\n   */\n  async embed(input) {\n    throw new Error("embed method not implemented");\n  }\n  /**\n   * Generate embeddings for multiple inputs\n   * @abstract\n   * @param {Array<string|Object>} inputs - Texts to embed\n   * @returns {Promise<Array<Object>>} Array of embedding results\n   * @property {number[]} vec - Embedding vector for each input\n   * @property {number} tokens - Number of tokens in each input\n   * @throws {Error} If not implemented by subclass\n   */\n  async embed_batch(inputs) {\n    throw new Error("embed_batch method not implemented");\n  }\n  get settings_config() {\n    return {\n      "[ADAPTER].model_key": {\n        name: "Embedding model",\n        type: "dropdown",\n        description: "Select an embedding model.",\n        options_callback: "adapter.get_models_as_options",\n        callback: "model_changed",\n        default: this.constructor.defaults.default_model\n      }\n    };\n  }\n  get dims() {\n    return this.model_config.dims;\n  }\n  get max_tokens() {\n    return this.model_config.max_tokens;\n  }\n  // get batch_size() { return this.model_config.batch_size; }\n  get use_gpu() {\n    if (typeof this._use_gpu === "undefined") {\n      if (typeof this.model.opts.use_gpu !== "undefined") this._use_gpu = this.model.opts.use_gpu;\n      else this._use_gpu = typeof navigator !== "undefined" && !!navigator?.gpu && this.model_settings.gpu_batch_size !== 0;\n    }\n    return this._use_gpu;\n  }\n  set use_gpu(value) {\n    this._use_gpu = value;\n  }\n  get batch_size() {\n    if (this.use_gpu && this.model_config?.gpu_batch_size) return this.model_config.gpu_batch_size;\n    return this.model.opts.batch_size || this.model_config.batch_size || 1;\n  }\n};\n/**\n * @override in sub-class with adapter-specific default configurations\n * @property {string} id - The adapter identifier\n * @property {string} description - Human-readable description\n * @property {string} type - Adapter type ("API")\n * @property {string} endpoint - API endpoint\n * @property {string} adapter - Adapter identifier\n * @property {string} default_model - Default model to use\n */\n__publicField(SmartEmbedAdapter, "defaults", {});\n\n// adapters/transformers.js\nvar transformers_defaults = {\n  adapter: "transformers",\n  description: "Transformers (Local, built-in)",\n  default_model: "TaylorAI/bge-micro-v2"\n};\nvar SmartEmbedTransformersAdapter = class extends SmartEmbedAdapter {\n  /**\n   * Create transformers adapter instance\n   * @param {SmartEmbedModel} model - Parent model instance\n   */\n  constructor(model2) {\n    super(model2);\n    this.pipeline = null;\n    this.tokenizer = null;\n  }\n  /**\n   * Load model and tokenizer\n   * @returns {Promise<void>}\n   */\n  async load() {\n    await this.load_transformers();\n    this.loaded = true;\n    this.set_state("loaded");\n  }\n  /**\n   * Unload model and free resources\n   * @returns {Promise<void>}\n   */\n  async unload() {\n    if (this.pipeline) {\n      if (this.pipeline.destroy) this.pipeline.destroy();\n      this.pipeline = null;\n    }\n    if (this.tokenizer) {\n      this.tokenizer = null;\n    }\n    this.loaded = false;\n    this.set_state("unloaded");\n  }\n  /**\n   * Initialize transformers pipeline and tokenizer\n   * @private\n   * @returns {Promise<void>}\n   */\n  async load_transformers() {\n    const { pipeline, env, AutoTokenizer } = await import("@huggingface/transformers");\n    env.allowLocalModels = false;\n    const pipeline_opts = {\n      quantized: true\n    };\n    if (this.use_gpu) {\n      console.log("[Transformers] Using GPU");\n      pipeline_opts.device = "webgpu";\n      pipeline_opts.dtype = "fp32";\n    } else {\n      console.log("[Transformers] Using CPU");\n      env.backends.onnx.wasm.numThreads = 8;\n    }\n    this.pipeline = await pipeline("feature-extraction", this.model_key, pipeline_opts);\n    this.tokenizer = await AutoTokenizer.from_pretrained(this.model_key);\n  }\n  /**\n   * Count tokens in input text\n   * @param {string} input - Text to tokenize\n   * @returns {Promise<Object>} Token count result\n   */\n  async count_tokens(input) {\n    if (!this.tokenizer) await this.load();\n    const { input_ids } = await this.tokenizer(input);\n    return { tokens: input_ids.data.length };\n  }\n  /**\n   * Generate embeddings for multiple inputs\n   * @param {Array<Object>} inputs - Array of input objects\n   * @returns {Promise<Array<Object>>} Processed inputs with embeddings\n   */\n  async embed_batch(inputs) {\n    if (!this.pipeline) await this.load();\n    const filtered_inputs = inputs.filter((item) => item.embed_input?.length > 0);\n    if (!filtered_inputs.length) return [];\n    if (filtered_inputs.length > this.batch_size) {\n      console.log(`Processing ${filtered_inputs.length} inputs in batches of ${this.batch_size}`);\n      const results = [];\n      for (let i = 0; i < filtered_inputs.length; i += this.batch_size) {\n        const batch = filtered_inputs.slice(i, i + this.batch_size);\n        const batch_results = await this._process_batch(batch);\n        results.push(...batch_results);\n      }\n      return results;\n    }\n    return await this._process_batch(filtered_inputs);\n  }\n  /**\n   * Process a single batch of inputs\n   * @private\n   * @param {Array<Object>} batch_inputs - Batch of inputs to process\n   * @returns {Promise<Array<Object>>} Processed batch results\n   */\n  async _process_batch(batch_inputs) {\n    const tokens = await Promise.all(batch_inputs.map((item) => this.count_tokens(item.embed_input)));\n    const embed_inputs = await Promise.all(batch_inputs.map(async (item, i) => {\n      if (tokens[i].tokens < this.max_tokens) return item.embed_input;\n      let token_ct = tokens[i].tokens;\n      let truncated_input = item.embed_input;\n      while (token_ct > this.max_tokens) {\n        const pct = this.max_tokens / token_ct;\n        const max_chars = Math.floor(truncated_input.length * pct * 0.9);\n        truncated_input = truncated_input.substring(0, max_chars) + "...";\n        token_ct = (await this.count_tokens(truncated_input)).tokens;\n      }\n      tokens[i].tokens = token_ct;\n      return truncated_input;\n    }));\n    try {\n      const resp = await this.pipeline(embed_inputs, { pooling: "mean", normalize: true });\n      return batch_inputs.map((item, i) => {\n        item.vec = Array.from(resp[i].data).map((val) => Math.round(val * 1e8) / 1e8);\n        item.tokens = tokens[i].tokens;\n        return item;\n      });\n    } catch (err) {\n      console.error("error_processing_batch", err);\n      this.pipeline?.dispose();\n      this.pipeline = null;\n      await this.load();\n      return Promise.all(batch_inputs.map(async (item) => {\n        try {\n          const result = await this.pipeline(item.embed_input, { pooling: "mean", normalize: true });\n          item.vec = Array.from(result[0].data).map((val) => Math.round(val * 1e8) / 1e8);\n          item.tokens = (await this.count_tokens(item.embed_input)).tokens;\n          return item;\n        } catch (single_err) {\n          console.error("error_processing_single_item", single_err);\n          return {\n            ...item,\n            vec: [],\n            tokens: 0,\n            error: single_err.message\n          };\n        }\n      }));\n    }\n  }\n  /** @returns {Object} Settings configuration for transformers adapter */\n  get settings_config() {\n    return transformers_settings_config;\n  }\n  /**\n   * Get available models (hardcoded list)\n   * @returns {Promise<Object>} Map of model objects\n   */\n  get_models() {\n    return Promise.resolve(this.models);\n  }\n  get models() {\n    return transformers_models;\n  }\n};\n__publicField(SmartEmbedTransformersAdapter, "defaults", transformers_defaults);\nvar transformers_models = {\n  "TaylorAI/bge-micro-v2": {\n    "id": "TaylorAI/bge-micro-v2",\n    "batch_size": 1,\n    "dims": 384,\n    "max_tokens": 512,\n    "name": "BGE-micro-v2",\n    "description": "Local, 512 tokens, 384 dim (recommended)",\n    "adapter": "transformers"\n  },\n  "Snowflake/snowflake-arctic-embed-xs": {\n    "id": "Snowflake/snowflake-arctic-embed-xs",\n    "batch_size": 1,\n    "dims": 384,\n    "max_tokens": 512,\n    "name": "Snowflake Arctic Embed XS",\n    "description": "Local, 512 tokens, 384 dim",\n    "adapter": "transformers"\n  },\n  "Snowflake/snowflake-arctic-embed-s": {\n    "id": "Snowflake/snowflake-arctic-embed-s",\n    "batch_size": 1,\n    "dims": 384,\n    "max_tokens": 512,\n    "name": "Snowflake Arctic Embed Small",\n    "description": "Local, 512 tokens, 384 dim",\n    "adapter": "transformers"\n  },\n  "Snowflake/snowflake-arctic-embed-m": {\n    "id": "Snowflake/snowflake-arctic-embed-m",\n    "batch_size": 1,\n    "dims": 768,\n    "max_tokens": 512,\n    "name": "Snowflake Arctic Embed Medium",\n    "description": "Local, 512 tokens, 768 dim",\n    "adapter": "transformers"\n  },\n  "TaylorAI/gte-tiny": {\n    "id": "TaylorAI/gte-tiny",\n    "batch_size": 1,\n    "dims": 384,\n    "max_tokens": 512,\n    "name": "GTE-tiny",\n    "description": "Local, 512 tokens, 384 dim",\n    "adapter": "transformers"\n  },\n  "onnx-community/embeddinggemma-300m-ONNX": {\n    "id": "onnx-community/embeddinggemma-300m-ONNX",\n    "batch_size": 1,\n    "dims": 768,\n    "max_tokens": 2048,\n    "name": "EmbeddingGemma-300M",\n    "description": "Local, 2,048 tokens, 768 dim",\n    "adapter": "transformers"\n  },\n  "Mihaiii/Ivysaur": {\n    "id": "Mihaiii/Ivysaur",\n    "batch_size": 1,\n    "dims": 384,\n    "max_tokens": 512,\n    "name": "Ivysaur",\n    "description": "Local, 512 tokens, 384 dim",\n    "adapter": "transformers"\n  },\n  "andersonbcdefg/bge-small-4096": {\n    "id": "andersonbcdefg/bge-small-4096",\n    "batch_size": 1,\n    "dims": 384,\n    "max_tokens": 4096,\n    "name": "BGE-small-4K",\n    "description": "Local, 4,096 tokens, 384 dim",\n    "adapter": "transformers"\n  },\n  // Too slow and persistent crashes\n  // "jinaai/jina-embeddings-v2-base-de": {\n  //   "id": "jinaai/jina-embeddings-v2-base-de",\n  //   "batch_size": 1,\n  //   "dims": 768,\n  //   "max_tokens": 4096,\n  //   "name": "jina-embeddings-v2-base-de",\n  //   "description": "Local, 4,096 tokens, 768 dim, German",\n  //   "adapter": "transformers"\n  // },\n  "Xenova/jina-embeddings-v2-base-zh": {\n    "id": "Xenova/jina-embeddings-v2-base-zh",\n    "batch_size": 1,\n    "dims": 768,\n    "max_tokens": 8192,\n    "name": "Jina-v2-base-zh-8K",\n    "description": "Local, 8,192 tokens, 768 dim, Chinese/English bilingual",\n    "adapter": "transformers"\n  },\n  "Xenova/jina-embeddings-v2-small-en": {\n    "id": "Xenova/jina-embeddings-v2-small-en",\n    "batch_size": 1,\n    "dims": 512,\n    "max_tokens": 8192,\n    "name": "Jina-v2-small-en",\n    "description": "Local, 8,192 tokens, 512 dim",\n    "adapter": "transformers"\n  },\n  "nomic-ai/nomic-embed-text-v1.5": {\n    "id": "nomic-ai/nomic-embed-text-v1.5",\n    "batch_size": 1,\n    "dims": 768,\n    "max_tokens": 2048,\n    "name": "Nomic-embed-text-v1.5",\n    "description": "Local, 8,192 tokens, 768 dim",\n    "adapter": "transformers"\n  },\n  "Xenova/bge-small-en-v1.5": {\n    "id": "Xenova/bge-small-en-v1.5",\n    "batch_size": 1,\n    "dims": 384,\n    "max_tokens": 512,\n    "name": "BGE-small",\n    "description": "Local, 512 tokens, 384 dim",\n    "adapter": "transformers"\n  },\n  "nomic-ai/nomic-embed-text-v1": {\n    "id": "nomic-ai/nomic-embed-text-v1",\n    "batch_size": 1,\n    "dims": 768,\n    "max_tokens": 2048,\n    "name": "Nomic-embed-text",\n    "description": "Local, 2,048 tokens, 768 dim",\n    "adapter": "transformers"\n  }\n};\nvar transformers_settings_config = {\n  "[ADAPTER].gpu_batch_size": {\n    name: "GPU batch size",\n    type: "number",\n    description: "Number of embeddings to process per batch on GPU. Use 0 to disable GPU.",\n    placeholder: "Enter number ex. 10"\n  },\n  "[ADAPTER].legacy_transformers": {\n    name: "Legacy transformers (no GPU)",\n    type: "toggle",\n    description: "Use legacy transformers (v2) instead of v3. This may resolve issues if the local embedding isn\'t working.",\n    callback: "embed_model_changed",\n    default: true\n  }\n};\n\n// build/transformers_iframe_script.js\nvar model = null;\nasync function process_message(data) {\n  const { method, params, id, iframe_id } = data;\n  try {\n    let result;\n    switch (method) {\n      case "init":\n        console.log("init");\n        break;\n      case "load":\n        console.log("load", params);\n        model = new SmartEmbedModel({\n          ...params,\n          adapters: { transformers: SmartEmbedTransformersAdapter },\n          adapter: "transformers",\n          settings: {}\n        });\n        await model.load();\n        result = { model_loaded: true };\n        break;\n      case "embed_batch":\n        if (!model) throw new Error("Model not loaded");\n        result = await model.embed_batch(params.inputs);\n        break;\n      case "count_tokens":\n        if (!model) throw new Error("Model not loaded");\n        result = await model.count_tokens(params);\n        break;\n      default:\n        throw new Error(`Unknown method: ${method}`);\n    }\n    return { id, result, iframe_id };\n  } catch (error) {\n    console.error("Error processing message:", error);\n    return { id, error: error.message, iframe_id };\n  }\n}\nprocess_message({ method: "init" });\n';

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/transformers.js
var transformers_defaults = {
  adapter: "transformers",
  description: "Transformers (Local, built-in)",
  default_model: "TaylorAI/bge-micro-v2"
};
var transformers_models = {
  "TaylorAI/bge-micro-v2": {
    "id": "TaylorAI/bge-micro-v2",
    "batch_size": 1,
    "dims": 384,
    "max_tokens": 512,
    "name": "BGE-micro-v2",
    "description": "Local, 512 tokens, 384 dim (recommended)",
    "adapter": "transformers"
  },
  "Snowflake/snowflake-arctic-embed-xs": {
    "id": "Snowflake/snowflake-arctic-embed-xs",
    "batch_size": 1,
    "dims": 384,
    "max_tokens": 512,
    "name": "Snowflake Arctic Embed XS",
    "description": "Local, 512 tokens, 384 dim",
    "adapter": "transformers"
  },
  "Snowflake/snowflake-arctic-embed-s": {
    "id": "Snowflake/snowflake-arctic-embed-s",
    "batch_size": 1,
    "dims": 384,
    "max_tokens": 512,
    "name": "Snowflake Arctic Embed Small",
    "description": "Local, 512 tokens, 384 dim",
    "adapter": "transformers"
  },
  "Snowflake/snowflake-arctic-embed-m": {
    "id": "Snowflake/snowflake-arctic-embed-m",
    "batch_size": 1,
    "dims": 768,
    "max_tokens": 512,
    "name": "Snowflake Arctic Embed Medium",
    "description": "Local, 512 tokens, 768 dim",
    "adapter": "transformers"
  },
  "TaylorAI/gte-tiny": {
    "id": "TaylorAI/gte-tiny",
    "batch_size": 1,
    "dims": 384,
    "max_tokens": 512,
    "name": "GTE-tiny",
    "description": "Local, 512 tokens, 384 dim",
    "adapter": "transformers"
  },
  "onnx-community/embeddinggemma-300m-ONNX": {
    "id": "onnx-community/embeddinggemma-300m-ONNX",
    "batch_size": 1,
    "dims": 768,
    "max_tokens": 2048,
    "name": "EmbeddingGemma-300M",
    "description": "Local, 2,048 tokens, 768 dim",
    "adapter": "transformers"
  },
  "Mihaiii/Ivysaur": {
    "id": "Mihaiii/Ivysaur",
    "batch_size": 1,
    "dims": 384,
    "max_tokens": 512,
    "name": "Ivysaur",
    "description": "Local, 512 tokens, 384 dim",
    "adapter": "transformers"
  },
  "andersonbcdefg/bge-small-4096": {
    "id": "andersonbcdefg/bge-small-4096",
    "batch_size": 1,
    "dims": 384,
    "max_tokens": 4096,
    "name": "BGE-small-4K",
    "description": "Local, 4,096 tokens, 384 dim",
    "adapter": "transformers"
  },
  // Too slow and persistent crashes
  // "jinaai/jina-embeddings-v2-base-de": {
  //   "id": "jinaai/jina-embeddings-v2-base-de",
  //   "batch_size": 1,
  //   "dims": 768,
  //   "max_tokens": 4096,
  //   "name": "jina-embeddings-v2-base-de",
  //   "description": "Local, 4,096 tokens, 768 dim, German",
  //   "adapter": "transformers"
  // },
  "Xenova/jina-embeddings-v2-base-zh": {
    "id": "Xenova/jina-embeddings-v2-base-zh",
    "batch_size": 1,
    "dims": 768,
    "max_tokens": 8192,
    "name": "Jina-v2-base-zh-8K",
    "description": "Local, 8,192 tokens, 768 dim, Chinese/English bilingual",
    "adapter": "transformers"
  },
  "Xenova/jina-embeddings-v2-small-en": {
    "id": "Xenova/jina-embeddings-v2-small-en",
    "batch_size": 1,
    "dims": 512,
    "max_tokens": 8192,
    "name": "Jina-v2-small-en",
    "description": "Local, 8,192 tokens, 512 dim",
    "adapter": "transformers"
  },
  "nomic-ai/nomic-embed-text-v1.5": {
    "id": "nomic-ai/nomic-embed-text-v1.5",
    "batch_size": 1,
    "dims": 768,
    "max_tokens": 2048,
    "name": "Nomic-embed-text-v1.5",
    "description": "Local, 8,192 tokens, 768 dim",
    "adapter": "transformers"
  },
  "Xenova/bge-small-en-v1.5": {
    "id": "Xenova/bge-small-en-v1.5",
    "batch_size": 1,
    "dims": 384,
    "max_tokens": 512,
    "name": "BGE-small",
    "description": "Local, 512 tokens, 384 dim",
    "adapter": "transformers"
  },
  "nomic-ai/nomic-embed-text-v1": {
    "id": "nomic-ai/nomic-embed-text-v1",
    "batch_size": 1,
    "dims": 768,
    "max_tokens": 2048,
    "name": "Nomic-embed-text",
    "description": "Local, 2,048 tokens, 768 dim",
    "adapter": "transformers"
  }
};
var transformers_settings_config = {
  "[ADAPTER].gpu_batch_size": {
    name: "GPU batch size",
    type: "number",
    description: "Number of embeddings to process per batch on GPU. Use 0 to disable GPU.",
    placeholder: "Enter number ex. 10"
  },
  "[ADAPTER].legacy_transformers": {
    name: "Legacy transformers (no GPU)",
    type: "toggle",
    description: "Use legacy transformers (v2) instead of v3. This may resolve issues if the local embedding isn't working.",
    callback: "embed_model_changed",
    default: true
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/transformers_iframe.js
var SmartEmbedTransformersIframeAdapter = class extends SmartEmbedIframeAdapter {
  static defaults = transformers_defaults;
  /**
   * Create transformers iframe adapter instance
   * @param {SmartEmbedModel} model - Parent model instance
   */
  constructor(model) {
    super(model);
    this.connector = transformers_connector;
    if (this.adapter_settings.legacy_transformers || !this.use_gpu) {
      this.connector = this.connector.replace("@huggingface/transformers", "https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2");
      this.use_gpu = false;
    } else this.connector = this.connector.replace("@huggingface/transformers", "https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.5.1");
  }
  /** @returns {Object} Settings configuration for transformers adapter */
  get settings_config() {
    return {
      ...super.settings_config,
      ...transformers_settings_config
    };
  }
  /**
   * Get available models (hardcoded list)
   * @returns {Promise<Object>} Map of model objects
   */
  get_models() {
    return Promise.resolve(this.models);
  }
  get models() {
    return transformers_models;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/ollama.js
var SmartEmbedOllamaAdapter = class extends SmartEmbedModelApiAdapter {
  static defaults = {
    description: "Ollama (Local)",
    type: "API",
    host: "http://localhost:11434",
    endpoint: "/api/embed",
    models_endpoint: "/api/tags",
    api_key: "na",
    // Not required for local instance
    streaming: false,
    // Ollama's embed API does not support streaming
    max_tokens: 512,
    // Example default, adjust based on model capabilities
    signup_url: null,
    // Not applicable for local instance
    batch_size: 30,
    models: {},
    model_key: "nomic-embed-text"
  };
  get endpoint() {
    return `${this.model_config.host}${this.model_config.endpoint}`;
  }
  get models_endpoint() {
    return `${this.model_config.host}${this.model_config.models_endpoint}`;
  }
  get model_show_endpoint() {
    return `${this.model_config.host}/api/show`;
  }
  async load() {
    await this.get_models();
    await super.load();
  }
  /**
   * Estimate token count for input text.
   * Ollama does not expose a tokenizer so we use a character based heuristic.
   * @param {string} input - Text to tokenize
   * @returns {Promise<Object>} Token count result
   */
  async count_tokens(input) {
    return { tokens: this.estimate_tokens(input) };
  }
  /**
   * Prepare input text and ensure it fits within `max_tokens`.
   * @param {string} embed_input - Raw input text
   * @returns {Promise<string|null>} Processed input text
   */
  async prepare_embed_input(embed_input) {
    if (typeof embed_input !== "string") throw new TypeError("embed_input must be a string");
    if (embed_input.length === 0) return null;
    const { tokens } = await this.count_tokens(embed_input);
    if (tokens <= this.max_tokens) return embed_input;
    return await this.trim_input_to_max_tokens(embed_input, tokens);
  }
  /**
   * Trim input text to satisfy `max_tokens`.
   * @private
   * @param {string} embed_input - Input text
   * @param {number} tokens_ct - Existing token count
   * @returns {Promise<string|null>} Trimmed text
   */
  async trim_input_to_max_tokens(embed_input, tokens_ct) {
    const reduce_ratio = (tokens_ct - this.max_tokens) / tokens_ct;
    const new_length = Math.floor(embed_input.length * (1 - reduce_ratio));
    let trimmed_input = embed_input.slice(0, new_length);
    const last_space_index = trimmed_input.lastIndexOf(" ");
    if (last_space_index > 0) trimmed_input = trimmed_input.slice(0, last_space_index);
    const prepared = await this.prepare_embed_input(trimmed_input);
    if (prepared === null) return null;
    return prepared;
  }
  /** @returns {number} Maximum tokens for an input */
  get max_tokens() {
    return this.model_config.max_tokens || this.constructor.defaults.max_tokens;
  }
  /**
   * Get the request adapter class.
   * @returns {SmartEmbedModelOllamaRequestAdapter} The request adapter class
   */
  get req_adapter() {
    return SmartEmbedModelOllamaRequestAdapter;
  }
  /**
   * Get the response adapter class.
   * @returns {SmartEmbedModelOllamaResponseAdapter} The response adapter class
   */
  get res_adapter() {
    return SmartEmbedModelOllamaResponseAdapter;
  }
  /**
   * Get available models from local Ollama instance.
   * @param {boolean} [refresh=false] - Whether to refresh cached models
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models(refresh = false) {
    if (!this.model_data || refresh) {
      const list_resp = await this.http_adapter.request({
        url: this.models_endpoint,
        method: "GET"
      });
      if (list_resp.ok === false) {
        throw new Error(`Failed to fetch models list: ${list_resp.statusText}`);
      }
      const list_data = await list_resp.json();
      const models_raw = [];
      for (const m of filter_embedding_models(list_data.models || [])) {
        const detail_resp = await this.http_adapter.request({
          url: this.model_show_endpoint,
          method: "POST",
          body: JSON.stringify({ model: m.name })
        });
        models_raw.push({ ...await detail_resp.json(), name: m.name });
      }
      const model_data = this.parse_model_data(models_raw);
      this.model_data = model_data;
      this.model.re_render_settings();
      return model_data;
    }
    return this.model_data;
  }
  /**
   * Get available models as dropdown options synchronously.
   * @returns {Array<Object>} Array of model options.
   */
  get_models_as_options() {
    const models = this.model_data;
    if (!Object.keys(models || {}).length) {
      this.get_models(true);
      return [{ value: "", name: "No models currently available" }];
    }
    return Object.values(models).map((model) => ({ value: model.id, name: model.name || model.id })).sort((a, b) => a.name.localeCompare(b.name));
  }
  /**
   * Parse model data from Ollama API response.
   * @param {Object} model_data - Raw model data from Ollama
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    if (!Array.isArray(model_data)) {
      this.model_data = {};
      console.error("Invalid model data format from Ollama:", model_data);
      return {};
    }
    if (model_data.length === 0) {
      this.model_data = { "no_models_available": {
        id: "no_models_available",
        name: "No models currently available"
      } };
      return this.model_data;
    }
    this.model_data = model_data.reduce((acc, model) => {
      const info = model.model_info || {};
      const ctx = Object.entries(info).find(([k]) => k.includes("context_length"))?.[1];
      const dims = Object.entries(info).find(([k]) => k.includes("embedding_length"))?.[1];
      acc[model.name] = {
        model_name: model.name,
        id: model.name,
        multimodal: false,
        max_tokens: ctx || this.max_tokens,
        dims,
        description: model.description || `Model: ${model.name}`
      };
      return acc;
    }, {});
    this._models = this.model_data;
    return this.model_data;
  }
  /**
   * Get the models.
   * @returns {Object} Map of model objects
   */
  get models() {
    if (typeof this._models === "object" && Object.keys(this._models || {}).length > 0) return this._models;
    else {
      return {};
    }
  }
  /**
   * Override settings config to remove API key setting since not needed for local instance.
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    const config = super.settings_config;
    delete config["[ADAPTER].api_key"];
    config["[ADAPTER].host"] = {
      name: "Ollama host",
      type: "text",
      description: "Enter the host for your Ollama instance",
      default: this.constructor.defaults.host
    };
    return config;
  }
};
var SmartEmbedModelOllamaRequestAdapter = class extends SmartEmbedModelRequestAdapter {
  /**
   * Convert request to Ollama's embed API format.
   * @returns {Object} Request parameters in Ollama's format
   */
  to_platform() {
    const ollama_body = {
      model: this.adapter.model_config.model_key,
      input: this.embed_inputs
    };
    return {
      url: this.adapter.endpoint,
      method: "POST",
      headers: this.get_headers(),
      body: JSON.stringify(ollama_body)
    };
  }
  /**
   * Prepare request headers for Ollama API.
   * @returns {Object} Headers object
   */
  get_headers() {
    return {
      "Content-Type": "application/json"
    };
  }
};
var SmartEmbedModelOllamaResponseAdapter = class extends SmartEmbedModelResponseAdapter {
  /**
   * Convert Ollama's response to a standardized OpenAI-like format.
   * @returns {Array<Object>} Array of embedding results
   */
  to_openai() {
    const resp = this.response;
    if (!resp || !resp.embeddings) {
      console.error("Invalid response format from Ollama:", resp);
      return [];
    }
    const tokens = Math.ceil(resp.prompt_eval_count / this.adapter.batch_size);
    const embeddings = resp.embeddings.map((vec) => ({
      vec,
      tokens
    }));
    return embeddings;
  }
  /**
   * Parse the response object.
   * @returns {Array<Object>} Parsed embedding results
   */
  parse_response() {
    return this.to_openai();
  }
};
var is_embedding_model = (mod) => {
  return ["embed", "embedding", "bge"].some((keyword) => mod.name.toLowerCase().includes(keyword));
};
var filter_embedding_models = (models) => {
  if (!Array.isArray(models)) {
    throw new TypeError("models must be an array");
  }
  return models.filter(is_embedding_model);
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/cl100k_base.json
var cl100k_base_default = { pat_str: "('s|'S|'t|'T|'re|'rE|'Re|'RE|'ve|'vE|'Ve|'VE|'m|'M|'ll|'lL|'Ll|'LL|'d|'D)|[^\\r\\n\\p{L}\\p{N}]?\\p{L}+|\\p{N}{1,3}| ?[^\\s\\p{L}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+", special_tokens: { "<|endoftext|>": 100257, "<|fim_prefix|>": 100258, "<|fim_middle|>": 100259, "<|fim_suffix|>": 100260, "<|endofprompt|>": 100276 }, bpe_ranks: "! 0 IQ== Ig== Iw== JA== JQ== Jg== Jw== KA== KQ== Kg== Kw== LA== LQ== Lg== Lw== MA== MQ== Mg== Mw== NA== NQ== Ng== Nw== OA== OQ== Og== Ow== PA== PQ== Pg== Pw== QA== QQ== Qg== Qw== RA== RQ== Rg== Rw== SA== SQ== Sg== Sw== TA== TQ== Tg== Tw== UA== UQ== Ug== Uw== VA== VQ== Vg== Vw== WA== WQ== Wg== Ww== XA== XQ== Xg== Xw== YA== YQ== Yg== Yw== ZA== ZQ== Zg== Zw== aA== aQ== ag== aw== bA== bQ== bg== bw== cA== cQ== cg== cw== dA== dQ== dg== dw== eA== eQ== eg== ew== fA== fQ== fg== oQ== og== ow== pA== pQ== pg== pw== qA== qQ== qg== qw== rA== rg== rw== sA== sQ== sg== sw== tA== tQ== tg== tw== uA== uQ== ug== uw== vA== vQ== vg== vw== wA== wQ== wg== ww== xA== xQ== xg== xw== yA== yQ== yg== yw== zA== zQ== zg== zw== 0A== 0Q== 0g== 0w== 1A== 1Q== 1g== 1w== 2A== 2Q== 2g== 2w== 3A== 3Q== 3g== 3w== 4A== 4Q== 4g== 4w== 5A== 5Q== 5g== 5w== 6A== 6Q== 6g== 6w== 7A== 7Q== 7g== 7w== 8A== 8Q== 8g== 8w== 9A== 9Q== 9g== 9w== +A== +Q== +g== +w== /A== /Q== /g== /w== AA== AQ== Ag== Aw== BA== BQ== Bg== Bw== CA== CQ== Cg== Cw== DA== DQ== Dg== Dw== EA== EQ== Eg== Ew== FA== FQ== Fg== Fw== GA== GQ== Gg== Gw== HA== HQ== Hg== Hw== IA== fw== gA== gQ== gg== gw== hA== hQ== hg== hw== iA== iQ== ig== iw== jA== jQ== jg== jw== kA== kQ== kg== kw== lA== lQ== lg== lw== mA== mQ== mg== mw== nA== nQ== ng== nw== oA== rQ== ICA= ICAgIA== aW4= IHQ= ICAgICAgICA= ZXI= ICAg b24= IGE= cmU= YXQ= c3Q= ZW4= b3I= IHRo Cgo= IGM= bGU= IHM= aXQ= YW4= YXI= YWw= IHRoZQ== Owo= IHA= IGY= b3U= ID0= aXM= ICAgICAgIA== aW5n ZXM= IHc= aW9u ZWQ= aWM= IGI= IGQ= ZXQ= IG0= IG8= CQk= cm8= YXM= ZWw= Y3Q= bmQ= IGlu IGg= ZW50 aWQ= IG4= YW0= ICAgICAgICAgICA= IHRv IHJl LS0= IHs= IG9m b20= KTsK aW0= DQo= ICg= aWw= Ly8= IGFuZA== dXI= c2U= IGw= ZXg= IFM= YWQ= ICI= Y2g= dXQ= aWY= Kio= IH0= ZW0= b2w= ICAgICAgICAgICAgICAgIA== dGg= KQo= IHsK IGc= aWc= aXY= LAo= Y2U= b2Q= IHY= YXRl IFQ= YWc= YXk= ICo= b3Q= dXM= IEM= IHN0 IEk= dW4= dWw= dWU= IEE= b3c= ICc= ZXc= IDw= YXRpb24= KCk= IGZvcg== YWI= b3J0 dW0= YW1l IGlz cGU= dHI= Y2s= 4oA= IHk= aXN0 LS0tLQ== LgoK aGU= IGU= bG8= IE0= IGJl ZXJz IG9u IGNvbg== YXA= dWI= IFA= ICAgICAgICAgICAgICAg YXNz aW50 Pgo= bHk= dXJu ICQ= OwoK YXY= cG9ydA== aXI= LT4= bnQ= Y3Rpb24= ZW5k IGRl MDA= aXRo b3V0 dHVybg== b3Vy ICAgICA= bGlj cmVz cHQ= PT0= IHRoaXM= IHdo IGlm IEQ= dmVy YWdl IEI= aHQ= ZXh0 PSI= IHRoYXQ= KioqKg== IFI= IGl0 ZXNz IEY= IHI= b3M= YW5k IGFz ZWN0 a2U= cm9t IC8v Y29u IEw= KCI= cXU= bGFzcw== IHdpdGg= aXo= ZGU= IE4= IGFs b3A= dXA= Z2V0 IH0K aWxl IGFu YXRh b3Jl cmk= IHBybw== Ow0K CQkJCQ== dGVy YWlu IFc= IEU= IGNvbQ== IHJldHVybg== YXJ0 IEg= YWNr aW1wb3J0 dWJsaWM= IG9y ZXN0 bWVudA== IEc= YWJsZQ== IC0= aW5l aWxs aW5k ZXJl Ojo= aXR5 ICs= IHRy ZWxm aWdodA== KCc= b3Jt dWx0 c3Ry Li4= Iiw= IHlvdQ== eXBl cGw= IG5ldw== IGo= ICAgICAgICAgICAgICAgICAgIA== IGZyb20= IGV4 IE8= MjA= bGQ= IFs= b2M= Ogo= IHNl IGxl LS0tLS0tLS0= LnM= ewo= Jyw= YW50 IGF0 YXNl LmM= IGNo PC8= YXZl YW5n IGFyZQ== IGludA== 4oCZ X3Q= ZXJ0 aWFs YWN0 fQo= aXZl b2Rl b3N0 IGNsYXNz IG5vdA== b2c= b3Jk YWx1ZQ== YWxs ZmY= KCk7Cg== b250 aW1l YXJl IFU= IHBy IDo= aWVz aXpl dXJl IGJ5 aXJl IH0KCg== LnA= IHNo aWNl YXN0 cHRpb24= dHJpbmc= b2s= X18= Y2w= IyM= IGhl YXJk KS4= IEA= aWV3 CQkJ IHdhcw== aXA= dGhpcw== IHU= IFRoZQ== aWRl YWNl aWI= YWM= cm91 IHdl amVjdA== IHB1YmxpYw== YWs= dmU= YXRo b2lk ID0+ dXN0 cXVl IHJlcw== KSk= J3M= IGs= YW5z eXN0 dW5jdGlvbg== KioqKioqKio= IGk= IHVz cHA= MTA= b25l YWls PT09PQ== bmFtZQ== IHN0cg== IC8= ICY= YWNo ZGl2 eXN0ZW0= ZWxs IGhhdmU= ZXJy b3VsZA== dWxs cG9u IEo= X3A= ID09 aWdu U3Q= Lgo= IHBs KTsKCg== Zm9ybQ== cHV0 b3VudA== fQoK ZGQ= aXRl IGdldA== cnI= b21l IOKA YXJhbQ== Y2M= ICov RVI= SW4= bGVz X3M= b25n aWU= IGNhbg== IFY= ZXJ2 cHI= IHVu cm93 YmVy IGRv bGw= IGVs IHNlbGY= YXRlZA== YXJ5 IC4= J10= dWQ= IGVu IFRo ICAgICAgICAgICAgICAgICAgICAgICA= dGU= X2M= dWN0 IGFi b3Jr LmdldA== ICM= YXc= cmVzcw== b2I= TmFtZQ== MjAx YXBw Wyc= IGFsbA== b3J5 aXRpb24= YW5jZQ== ZWFy IGNvbnQ= dmVudA== aWE= IHdpbGw= SU4= ICAgICAgICAg cmV0dXJu IDwv ZGF0YQ== KQoK UmU= cGxl aWxk dGhlcg== IHlvdXI= Igo= KCQ= IG91dA== KSw= IGhhcw== U3RyaW5n c28= IHVw YXg= IGRlZg== IGJv Z2U= YWxzZQ== T04= cGVy MTI= aWNo IGJ1dA== IAo= IF8= X20= YWRk cXVlc3Q= b2RlbA== c2VsZg== ZXJ5 ZnQ= ZW5z Ly8vLw== YWtl LkM= IGdv IGZ1bmN0aW9u IEs= aXZhdGU= IGlt IGNvbnN0 LnQ= ICovCg== KTsNCg== IHZvaWQ= IHNldA== IFN5c3RlbQ== Y3Jp KCkK bGk= CWlm Lm0= YWxseQ== c2V0 ZXA= 4oCZcw== Ym8= ZGVm JywK IG1l ICE= YXRjaA== Ij4= IiwK ZWM= IElu cGg= IHw= X2Y= IHZhcg== ZW5jZQ== SWQ= cmVl aW5r bGVjdA== dWc= ZXRo IGVsc2U= LS0tLS0tLS0tLS0tLS0tLQ== MTk= Y29udA== IHNv YXRpYw== IGxv cHJv dG9u c3M= b3du YWJlbA== b2ludA== b3Vz ZWxk U1Q= VGhl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= UkU= Ijo= b2xvcg== dHA= ZWc= a2V5 dWRl IFN0 b3VuZA== IGFy Iik7Cg== ZW5lcg== c2Vy MTE= YmplY3Q= ZXNzYWdl ZmVy IG1vcmU= YXRpb25z ZW50cw== IGhpcw== IHRoZXk= LlM= IFk= dXNl bmU= aXNo b2xk X2Q= aW8= aWVsZA== IHBlcg== Q29udA== aW5ncw== IyMjIw== IGRhdGE= IHNh ZWY= Zm8= IG9uZQ== ZW5n IGRpcw== QVQ= IG5hbWU= IHRydWU= dmFs bGVk LmY= IG5l IGVuZA== MzI= LlQ= MTY= Y3Jl YXJr bG9n RXg= ZXJyb3I= X2lk dXJyZQ== YW5nZQ== IG51bGw= cnJheQ== IG15 cGFu aWN0 YXRvcg== Vmlldw== TGlzdA== CXJldHVybg== 4oCd IHByZQ== IHg= Y2x1ZGU= YXJn MTU= b3Y= Lmg= ID4= IHRoZWly Jyk= aXJzdA== aWNr Z2g= TEU= T1I= IHByaXZhdGU= dGVt DQoNCg== dXNlcg== ICk= Y29t LkE= IjsK IGlk cmVhZA== IHdobw== X2I= Ij4K IHRpbWU= IG1hbg== cnk= PT09PT09PT0= cm91cA== cm9w cHVibGlj dmVs dW1iZXI= Ymxl IHdoaWNo KioqKioqKioqKioqKioqKg== IGFueQ== IGZhbHNl d2U= IHZhbHVl IGxp Iik= bmRlcg== Z3I= IG5v cGFyYW0= MjU= Zmln LmNvbQ== IGFwcA== X2w= aW9ucw== LkQ= IENo IGFib3V0 IGFkZA== IHN1 IHN0cmluZw== SUQ= IG92ZXI= c3RyaW5n Lmw= b3VyY2U= MDAw X0M= XQo= IHF1 IFN0cmluZw== Y2E= U0U= IHJv c2g= dWFs VHlwZQ== c29u bmV3 ZXJu IGFn QVI= XTsK XS4= ID8= aWNhbA== IGRlcw== dXRo aXg= YXlz IHR5cGU= J3Q= YXVsdA== IGludGVy dmFy LmI= IHBhcnQ= LmQ= dXJyZW50 SVQ= RU4= MzA= ZW5j KGY= cmE= dmFsdWU= Y2hv MTg= dXR0b24= b3Nl MTQ= ICE9 YXRlcg== w6k= cmVhdGU= b2xs cG9z eWxl bmc= QUw= dXNpbmc= YW1lcw== IHsNCg== YXRlcw== ZWx5 IHdvcms= IGVt aW5hbA== IHNw IHdoZW4= LnNldA== ICAgICAg KToK dG8= cXVpcmU= aW5kb3c= bGVtZW50 cGVjdA== YXNo W2k= IHVzZQ== LkY= cGVj IGFk b3Zl Y2VwdGlvbg== ZW5ndGg= aW5jbHVkZQ== YWRlcg== ICAgICAgICAgICAgICAgICAgICAgICAgICAg YXR1cw== VGg= aXRsZQ== cml0 dm9pZA== KCku KAo= IG9mZg== IG90aGVy ICYm JzsK bXM= IGJlZW4= IHRl bWw= Y28= bmM= MTM= ZXJ2aWNl ICU= KioK YW5u YWRl CgoKCg== bG9jaw== Y29uc3Q= MTAw cG9uc2U= IHN1cA== Kys= ZGF0ZQ== IGFjYw== IGhhZA== IGJ1 MjAw IFJl IHdlcmU= IGZpbGU= IHdvdWxk IOKAnA== dmVu aXNz IG91cg== Y2xhc3M= cmF3 IHllYXI= RGF0YQ== IHZhbA== IHNvbWU= ZnRlcg== eXM= IC8vLw== cm91bmQ= dmlldw== IHBl IHRoZXJl IHNhaWQ= ZHU= b2Y= bGluZQ== Lyo= ZHVjdA== IGhlcg== ICAgICAgICAgICAgIA== UmVz IGNv IGNvbW0= aXNl bWlu ICAgIAo= I2luY2x1ZGU= ZXRob2Q= LlA= dXRl IGFzcw== SW50 YXNr bG9j IGxpa2U= b2R5 IGxldA== bG9hZA== IGFt cm9s IGdy eXA= IGFsc28= IEl0 dXJs aWZpYw== b3Jz X1A= X24= aWdo IHRoYW4= Q29t QU4= VUw= YXRpbmc= MTc= IFRoaXM= cmVm X1M= IHN0YXRpYw== cm9sbA== IGp1c3Q= IHJlc3VsdA== aWFu aWR0aA== IHRoZW0= KSk7Cg== ZGVy cmVhaw== Q29u Oi8v dWxl Li4u YXJjaA== ZW1lbnQ= IDw8 NTA= dXNo ZW5zZQ== YXJy IGludG8= Y2Vzcw== YW1w aWVk dW1lbnQ= IFw= XSw= d28= YWxz IHdoYXQ= YW5j VmFsdWU= PSc= b2x1bQ== IHBvcw== YWdlcw== YXllcg== IHNj dWVz IikK X1Q= IGxpc3Q= KHM= IGNhc2U= Q2g= CQkJCQk= Ly8vLy8vLy8= cG9uZW50 IHo= IGtu bGV0 REU= cmVk IGZl IH0sCg== ICw= KHQ= IGZpcnN0 Jyk7Cg== d29yZA== IGltcG9ydA== IGFjdA== IGNoYXI= Q1Q= IFRy b3BsZQ== PXs= CWY= MjQ= aWVudA== Y2VudA== Lmo= bGVjdGlvbg== KSkK IG9ubHk= IHByaW50 bWVy Llc= b2Nr IC0t VGV4dA== IG9w YW5r IGl0cw== IGJhY2s= WyI= IG5lZWQ= IGNs IHN1Yg== IGxh KCg= LiI= T2JqZWN0 IHN0YXJ0 ZmlsZQ== KHNlbGY= bmVy ZXk= IHVzZXI= IGVudA== IENvbQ== aXRz IENvbg== b3VibGU= b3dlcg== aXRlbQ== dmVyeQ== IFdl NjQ= bGljaw== IFE= cGhw dHRw Jzo= aWNz IHVuZGVy ICoK Lkw= KTs= aWNlcw== IHJlZw== KQ0K CXB1YmxpYw== U1M= IHRoZW4= cmVhdA== aW91cw== Lkc= ZWs= aXJlY3Q= aGVjaw== Y3JpcHQ= bmluZw== IFVu IG1heQ== IFdo Qm8= SXRlbQ== c3RydWN0 LnN0 cmVhbQ== aWJsZQ== bG9hdA== IG9yZw== dW5k c3Vt X2lu Li4v X00= IGhvdw== cml0ZQ== Jwo= VG8= NDA= d3c= IHBlb3BsZQ== aW5kZXg= Lm4= aHR0cA== KG0= ZWN0b3I= IGluZA== IGphdg== XSwK IEhl X3N0 ZnVs b2xl KXsK IHNob3VsZA== b3B5 ZWxw aWVy X25hbWU= ZXJzb24= SU9O b3Rl IHRlc3Q= IGJldA== cnJvcg== dWxhcg== 44A= INA= YnM= dGluZw== IG1ha2U= VHI= IGFmdGVy YXJnZXQ= Uk8= b2x1bW4= cmM= X3Jl ZGVmaW5l MjI= IHJpZ2h0 cmlnaHQ= ZGF5 IGxvbmc= W10= KHA= dGQ= Y29uZA== IFBybw== IHJlbQ== cHRpb25z dmlk Lmc= IGV4dA== IF9f JykK cGFjZQ== bXA= IG1pbg== c3RhbmNl YWly YWN0aW9u d2g= dHlwZQ== dXRpbA== YWl0 PD8= SUM= dGV4dA== IHBo IGZs Lk0= Y2Nlc3M= YnI= Zm9yZQ== ZXJzaW9u KSwK LnJl YXRlZw== IGxvYw== aW5z LXM= dHJpYg== IEludA== IGFycmF5 LCI= UHJv KGM= ZXNzaW9u PgoK IHNoZQ== Il0= YXBo IGV4cA== ZXJ0eQ== IFNl IHBhcg== dW5j RVQ= IHJlYWQ= cHJpbnQ= IHJlbA== IGZvcm0= IGRy RXhjZXB0aW9u aW5wdXQ= IHRyYW5z IyMjIyMjIyM= b3JkZXI= Qnk= IGF3 aXRpZXM= dWZm cGxheQ== LmFkZA== IOKAkw== IHdhbnQ= IGNvbXA= bWVudHM= IHx8 YXo= YmU= IG51bWJlcg== IHJlcXVpcmU= IEV4 NjA= IGNvbA== IGtleQ== ZW1iZXI= IHR3bw== IHNpemU= IHdoZXJl VVQ= cmVzdWx0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== b3VnaA== b3JsZA== b29k dWNo YXRpdmU= Z2Vy YXJlbnQ= IC8q IGFyZw== IHdoaWxl MjM= KHRoaXM= IHJlYw== IGRpZg== U3RhdGU= IHNwZWM= cmlkZQ== X0Y= IGxvb2s= QU0= aWxpdHk= ZXRlcg== 4oCZdA== CgoK YXlvdXQ= LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= YWdlcg== IGNvdWxk IGJy ZW5kcw== dXJlcw== IGtub3c= ZXRz IElm IFNo Lnc= YmFjaw== IHNlcg== ICs9 IGZy KCkpOwo= IGhhbmQ= SW5k VUxM SW0= KCk7Cgo= IG1vc3Q= IHRyeQ== IG5vdw== cm91Z2g= Pg0K YWNrYWdl IGhpbQ== Ll8= aWZ5 IGJyZWFr ICk7Cg== cmVu I2RlZmluZQ== aXR0 IGFw CWM= KG4= IFlvdQ== OgoK LW0= IGV2ZXJ5 dXN0b20= bGllbnQ= b2N1bWVudA== Y3JpcHRpb24= RXJyb3I= LWI= 0L4= XVs= OTk= dHJhbnM= IHBvaW50 IHN0ZA== IGZpbA== VGltZQ== ODA= IG1vZA== IC0+ IGVycm9y YWg= IHRleHQ= cm9sbGVy bG9zZQ== cWw= IHBvbA== Pjwv IHNob3c= VXNlcg== YXNlZA== IHsKCg== IGZpbmQ= 0LA= RUQ= c3Bhbg== ZW51 IGN1cnJlbnQ= IHVzZWQ= Y2VwdA== Y2x1ZA== IHBsYXk= IGxvZw== dXRpb24= Zmw= IHNlZQ== aW5kb3dz IGhlbHA= IHRoZXNl IHBhc3M= IGRvd24= IGV2ZW4= YXNvbg== dWlsZA== ZnJvbQ== KGQ= IGJs bGFiZWw= ZWxzZQ== 0LU= ICgh aXplZA== KCks IG9i IGl0ZW0= dW1w VVI= b3Ju IGRvbg== U2U= bWFu Mjc= YW1wbGU= dG4= PT09PT09PT09PT09PT09PQ== SGU= Z3JhbQ== IGRpZA== d24= X2g= aXZlcg== IHNt IHRocm91Z2g= IEFu Y2hl IGludg== b3VzZQ== IGVz IE5ldw== ZXhwb3J0 bWFyeQ== dXRv bGVy IGxhc3Q= IGV2ZW50 dHJ5 77w= aWx5 aWduZWQ= aW5lcw== b2xsb3c= aWNlbnNl c29sZQ== bGVhcg== KGludA== IGFnYWlu IGhpZ2g= aHRtbA== SW5kZXg= dXRob3I= IC8qKgo= IGxpbmU= RXZlbnQ= X0Q= IGRvZXM= aXRpYWw= IGNy YXJz Mjg= IHRlbQ== Y2F1c2U= ZmFjZQ== IGA= X0E= QnV0dG9u YXR1cmU= ZWN0ZWQ= RVM= aXN0ZXI= CQo= IGJlZm9yZQ== YWxl b3RoZXI= IGJlY2F1c2U= cm9pZA== IGVk aWs= cmVn IERl IGRpc3Q= fSwK IHN0YXRl IGNvbnM= cmludA== YXR0 IGhlcmU= aW5lZA== IGZpbmFs ICIi S2V5 TE8= IGRlbA== cHR5 dGhpbmc= MjY= IEFuZA== IHJ1bg== IFg= eW0= LmFwcA== IHZlcnk= Y2Vz X04= YXJlZA== d2FyZA== bGlzdA== aXRlZA== b2xvZw== aXRjaA== Qm94 aWZl MzM= IGFj IG1vZGVs IG1vbg== IHdheQ== bGV0ZQ== IGNhbGw= IGF0dA== IGNhbA== dmVydA== IGRlYw== bGVhc2U= b3Vu IH0pOwo= ZnI= Zm9ybWF0aW9u ZXRhaWw= IG51bQ== YWo= cXVlcnk= IHdlbGw= IG9iamVjdA== IEFz IHllYXJz Q29sb3I= SVM= IGRlZmF1bHQ= V2g= IGlucw== YWludA== IGphdmE= IHNpbQ== IEFy bW9u dGls KCk7DQo= KTo= U2V0 Mjk= YXR0ZXI= IHZpZXc= IHByZXM= YXJyYXk= V2U= QXQ= IGJlbA== IG1hbnk= MjE= TWFu ZW5kZXI= IGJlaW5n IGdvb2Q= CQkJCQkJ YXRpb25hbA== d2FyZQ== LmxvZw== ew0K IHVzaW5n X0I= IDo9 X3c= aXN0cw== bGlzaA== IHN0dWQ= IEFs IGd1 Y29uZmln dXJpbmc= dGltZQ== b2tlbg== YW1lc3BhY2U= IHJlcXVlc3Q= IGNoaWxk IMM= bG9i IHBhcmFt IH0NCg== MDE= IGVjaG8= ZnVuY3Rpb24= KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= cHM= RWxlbWVudA== YWxr bGljYXRpb24= Ynk= U2l6ZQ== cmF3aW5n IHBlcnNvbg== ICAgICAgICAgICAgICAgICA= XG4= b2JqZWN0 aW5jZQ== RW4= RmlsZQ== dWY= ZmZlY3Q= QUM= IHN0eWxl c3VtbWFyeQ== IHF1ZQ== X3I= ICgk TW9kZWw= aWRlbnQ= IG1ldGhvZA== SUw= b3R0 bGVzcw== SU5H ICgp IGV4cGVjdA== eW5j cGFja2FnZQ== MzU= dXJz IHByb3Q= Li8= cHJl ICkK bWE= IHN1cg== IGZvdW5k SW5mbw== cGFy aW1lcw== LmU= YWlucw== IHBvc3Q= LWQ= NDU= b2xlYW4= IHNs UEU= IHN1Y2g= c2VsZWN0 YWluZXI= IHRoaW5r IGRpZmZlcg== LnI= LyoqCg== RkY= b29s cGxhdGU= cXVhbA== IEZvcg== IG11Y2g= dWM= KG5ldw== b2R1bGU= IHNvbQ== IGh0dHA= IExpc3Q= IGNvdW50 IGluc3Q= Y2hhcg== bWl0 Lmlk YWtpbmc= IGdlbmVy cHg= dmljZQ== Mzc= X2RhdGE= IE5VTEw= fQ0K aWRk 44CC IG1lZA== b3Jn aWRlcg== YWNoZQ== d29yaw== IGNoZWNr d2Vlbg== ICgo dGhl YW50cw== Pjw= LkI= LWM= IG9wZW4= IGVzdA== ICAgICAgICAK IG5leHQ= SU0= 0YI= T1Q= w7M= IGZvbGxvdw== Y29udGVudA== ICAgICAgICAgICAg IGluY2x1ZA== SEU= IFJlcw== IGhyZWY= 0Lg= IGNhcg== eXBlcw== aW1hZ2U= VW4= IGJvb2w= QUQ= IGdhbWU= LkZvcm0= cm93cw== Ki8= dmVsb3A= LkRyYXdpbmc= IHBhdGg= aXNpb24= IGVhY2g= IFBs X3R5cGU= UGF0aA== bmVjdGlvbg== IGF2 Jyku IHN1cHBvcnQ= RU5U cmVt Iiku IG93bg== IGNvcg== Y291bnQ= bWlzcw== dWFsbHk= IG1lbQ== c3Rk aWVuY2U= c2VhcmNo IgoK Rm9ybQ== IHNleA== ZW5hbWU= IHNpZ24= IGV0 ICAgICAgICAgIA== Jywn IEFwcA== IHRob3Nl b2Zm IGVycg== IHN5c3RlbQ== IGJlc3Q= Y29kZQ== IHNhbWU= IGRp dXNz IGNyZWF0ZQ== YXRoZXI= QXJyYXk= Lmlu ZmU= U2VydmljZQ== VU4= YXRz IFo= YWx0aA== IG1hZGU= dHJ1ZQ== QUI= IG1hcms= cmlk aWZpZWQ= LA0K eW4= cHJlc3M= IGdyb3Vw IGZpbg== IExpY2Vuc2U= RmllbGQ= ZWdlcg== IHdvcmxk aW5lc3M= dHk= IHByb2Nlc3M= KGI= IGNyZQ== YXJu aXZlcw== IG1haW4= aWRlbw== MzY= X2c= QUc= dmFsaWQ= aW1n UEk= IGNvbG9y IHJlcG9ydA== IHRha2U= cmli T00= IGRheQ== UmVxdWVzdA== IHNr YmVycw== CXM= LkFkZA== b290 SW1hZ2U= IGNvbXBsZQ== b2xsZWN0aW9u IHRvcA== IGZyZWU= QVM= RGU= IE9u SUc= OTA= ZXRh RGF0ZQ== IGFjdGlvbg== MzQ= T3Zlcg== aXRvcg== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= bm90 IGluZGV4 aGVy aWNvbg== T24= Ow0KDQo= aXZpdHk= bWFuZA== LldpbmRvd3M= T0w= IHJlYWw= IG1heA== bGFuZA== Li4uLg== cmFwaA== IGJ1aWxk bGVn YXNzd29yZA== PwoK 4oCm b29r dWNr IG1lc3NhZ2U= dGVzdA== aXZlcnM= Mzg= IGlucHV0 IGFydA== IGJldHdlZW4= R2V0 ZW50ZXI= Z3JvdW5k ZW5l w6E= Lmxlbmd0aA== Tm9kZQ== KGk= Q2xhc3M= Zm9y IOKAlA== dGVu b2lu IGtl dWk= IElO IHRhYmxl c3Vi IExl IGhlYWQ= IG11c3Q= Ly8vLy8vLy8vLy8vLy8vLw== LnV0aWw= Q29udGV4dA== IG9yZGVy IG1vdg== b3Zlcg== IGNvbnRpbg== IHNheQ== c3RhdGlj LlRleHQ= IGNsYXNzTmFtZQ== cGFueQ== IHRlcg== aGVhZA== cmc= IHByb2R1Y3Q= VGhpcw== LuKAnQ== IEJ1dA== NzA= bG95 IGRvdWJsZQ== c2c= IHBsYWNl Lng= bWVzc2FnZQ== IGluZm9ybWF0aW9u cHJpdmF0ZQ== IG9wZXI= Y2Vk ZGI= Ij48Lw== UGFyYW0= aWNsZQ== IHdlZWs= IHByb3A= dGFibGU= aWRnZXQ= cGxhY2U= UHJvcA== IEFsbA== ZWxz Ym94 LgoKCgo= LlI= IFRv aXRlcg== U2g= dXJhdGlvbg== b2xkZXI= X2xpc3Q= Y29tZQ== IHN3 aXphdGlvbg== CWZvcg== Ymw= IHByb2dyYW0= KGU= YXBl Y2hlY2s= LkZvcm1z IHVuZA== YXRlZ29yeQ== NzU= YWdz IHJlc3BvbnNl VVM= cmVxdWVzdA== IHN0cnVjdA== ZXNjcmlwdGlvbg== IGNvZGU= X0g= dWZmZXI= IHdpdGhvdXQ= bG9iYWw= TWFuYWdlcg== aWx0ZXI= UE8= CXRoaXM= b3B0aW9u IHNvbA== ID09PQ== YWtlcw== Q29udHJvbGxlcg== NDQ= TWVzc2FnZQ== IHJlZg== ZXZlcg== IFNv YWluaW5n LmFwcGVuZA== IHN0aWxs IHByb3ZpZA== IGFzc2VydA== bWVk IGNhcA== dXNpbmVzcw== IHJlcA== dGluZ3M= dmVk Lk4= YXBp T0Q= IGZpZWxk aXZlbg== b3Rv 4oCc Y29s KHg= Z2h0 UmVzdWx0 Q29kZQ== Lmlz bGluaw== IGNvdXI= QW4= IHRlYW0= CWludA== aWZ0 NTU= IHNlY29uZA== IGdvaW5n IHJhbmdl X0U= bmVzcw== Mzk= IGZhbQ== IG5pbA== IENvbnQ= YWlsYWJsZQ== dXRlcw== YXRhYg== IGZhY3Q= IHZpcw== KCY= IEFO MzE= QWw= dGl0bGU= IGFuZHJvaWQ= Q0U= XCI= aXJ0 IHdyaXQ= 0L0= CW0= ZnR3YXJl b25k IHJldA== b3NpdGlvbg== IGhvbWU= IGxlZnQ= YXJncw== bWVyaWM= NDg= IGRpcmVjdA== b2Np UGw= QXM= cmV0 YWRv T2Y= Y2hu IEdldA== ZWU= cm9zcw== KCk7 X19fXw== LnBo SXQ= b3V0ZQ== IGV4cGVy Y2hvb2w= d3d3 fSw= IGFsbG93 IMI= KCkp c2l6ZQ== aXNt YWk= dHJhY3Q= YW5l Li4uCgo= Y29udGV4dA== IGJlZw== Q0g= IHBhZ2U= aGlw bm8= Y29yZQ== c3A= IGRpZmZlcmVudA== aWFibGU= IE1l X0lO YnV0dG9u IElz ZXJ2aWNlcw== IGNh IGFyb3VuZA== QXBw cmF0aW9u IHJlY2U= IHJlYWxseQ== IGltYWdl IHRhcmdldA== IGRlcA== b3B5cmlnaHQ= dHJh aW5nbGU= aXRhbA== TGF5b3V0 IGJvdGg= T3ZlcnJpZGU= YXJt PT4= YXRlcmlhbA== aWxlZA== IHB1dA== UXU= 0YA= dW5n bWFw CQkJCQkJCQk= IGxldmVs Q29tcG9uZW50 Ym9vaw== Y3JlZW4= X1JF IGNvbmZpZw== 44E= T3I= LmRhdGE= IGRvY3VtZW50 Iiwi dHJpYnV0ZQ== dXg= TG9n ZmVyZW5jZQ== cG9zdA== X2U= IGxvY2Fs YW5kb20= YXNzZXJ0 VmFs bGVjdGVk aW5h YXRhYmFzZQ== QWRk IGNvbnRlbnQ= LnByaW50 c2lnbmVk cmlj LiIKCg== IGZh IQoK LWY= aXZlZA== IHF1ZXN0 LmV4 IGZsb2F0 IGRldmVsb3A= 0L7Q TWFw YWRpbmc= IHBvc3M= VUU= bmFtZXNwYWNl X08= CWI= LkdldA== Pig= anNvbg== ZXRhaWxz NjY= IHRvbw== IGV4dGVuZHM= IE5vbmU= IGZvcmU= KFN0cmluZw== Zm9ybWF0 IGdyZWF0 aW50ZXI= Y2FsZQ== 0YE= cm9u aXZpbmc= RW50 ZW5jeQ== eHQ= b3k= MDU= IG1vbnRo IGhhcHA= IHN1cGVy YmFy ZGVmYXVsdA== X2Rl b3Jkcw== bG4= KHsK IEluZA== YXNlcw== IHRpdGxl IGNvbnRleHQ= MDg= b2g= LXA= RW0= IG1ldA== VGVzdA== IGxpZmU= X3Y= IFVT VUk= b2NhdGlvbg== bWQ= IFsK IF0= c3c= IGluY3Jl c2NyaXB0 ZW50aWFs d2F5cw== LmRl IHNyYw== IGNhdGNo IEFtZXJpYw== Ly8K ICAgICAgICAgICAgICA= IHBheQ== cGxpdA== 4oCU IGNvdW4= b2Jq LnBocA== IGNoYW5nZQ== ZXRoaW5n J3Jl YXN0ZXI= bG9z bGF0aW9u ICAK TGU= w6Q= KHs= cmVhZHk= IE5v IHBvc2l0aW9u IG9sZA== IGJvb2s= YWJsZWQ= YnVn MjAy SGFuZA== fTsKCg== aXNwbGF5 YXZpbmc= MDQ= IGdvdmVy IHZlcnNpb24= U3lzdGVt bmVjdA== cmVzcG9uc2U= U3R5bGU= VXA= YW5ndQ== IHRocmVl aW5pdA== ZXJv IGxhdw== ZW5kaWY= IGJhc2U= ZW1haWw= KGw= X1Y= IGNvbmY= QVRF IGR1cmluZw== dGVz IGNvbnNvbGU= IFBy IHNwZQ== dmVz NjU= cGF0aA== aWFsb2c= ZGl0aW9u X3Rv YXJkcw== IGFnYWluc3Q= ZXR3b3Jr IFBo X0w= Y3Vy aW1pdA== V2l0aA== IHBvd2Vy aXVt JzsKCg== IHdvbQ== bGVmdA== b3VyY2Vz YXRyaQ== IElt IE1hbg== b3J0aA== JHs= ODg= cXVhbHM= ZXNl X3NpemU= IGlzcw== b3RhbA== LWc= aXF1ZQ== cmFtZQ== IHdpZHRo ZXJn KSg= aXR0bGU= VFI= IFRoZXk= ZW5jZXM= MDI= cmw= b25z IGxhYmVs Lnk= LXQ= dXBkYXRl YW5lbA== c2M= LnRv IHByb2plY3Q= w7w= IGVsZW1lbnQ= IHN1Y2Nlc3M= CQkK LnNo cmFt Y2hlZA== KCkpCg== ICgK IGRhdGU= IHRvdA== X1NU QWxs aWZpY2F0aW9u CXZhcg== IHRyaQ== Y2hlbQ== bXk= IGJpZw== IEFk IEF0 b3Rz bnVt QWN0 IG1hcA== ZXJh Y29wZQ== LiQ= LOKAnQ== IHBvcA== IGZldw== IGxlbg== dWlk ZXRlcnM= dWxlcw== w60= c291cmNl aHR0cHM= IGRlbQ== IGVhcg== IyMjIyMjIyMjIyMjIyMjIw== IG1hdGNo b3JpZXM= NDk= YWNlcw== IENs IG5vZGU= Nzg= aXJj bG9jYWw= dW5pdHk= fTsK IGFub3RoZXI= PDw= b2dsZQ== IHNpdA== ZXdvcms= VEU= Lkk= TlM= b2xvZ3k= b3VnaHQ= LkNvbnQ= Pj4= IGNhcmU= c3RhdGU= CXByaXZhdGU= IGVmZmVjdA== Kysp X2ZpbGU= ZW5kaW5n TGluZQ== Rm9y aW9y IFNj IGZ1bg== LlNpemU= CWVsc2U= XSk= c3RhcnQ= dmlvdXM= IH0s b3Vycw== IGxlZw== IHNlcnZpY2U= IHNpbmNl aXJvbg== TGFiZWw= IG5vbg== IGxvcw== aWN0aW9u IGZ1bGw= YWN0ZXI= Ym9hcmQ= Z3Jlc3M= IHR1cm4= aXRoZXI= MDk= LnNpemU= IGJvZHk= cmVzaA== ZXR1cm4= MTk5 KF8= eWxlcw== b3JtYWw= cGk= IHNvbWV0aGluZw== IS0t dWludA== IHByb2R1 IHN0YW5k IHByb2JsZQ== IGF2YWlsYWJsZQ== bXQ= IEJs IC4uLg== IGJsb2Nr SW5wdXQ= IGtlZXA= Q291bnQ= b3Blbg== IFsn IHRocm93 dWlsZGVy QWN0aW9u IHRoaW5ncw== VHJ1ZQ== IHVybA== IEJv cHJpbnRm IHJlZA== anM= LmNyZWF0ZQ== IE9y U3RhdHVz SW5zdGFuY2U= IGNvbnRyb2w= IGNvbWU= IGN1c3RvbQ== bG9jYXRpb24= MDc= bW9kZWw= IA0K IHNvdXJjZQ== IGVhcw== Lm91dA== XQoK b25leQ== IGF3YWl0 IHBhcnRpYw== QVA= dWJsaXNo b2Rlcw== X3Bybw== cGx5 cml0ZXI= IHByb3Y= IG1pbGw= SFQ= XSkK IGNoYW5n IGFzaw== ICAgICAgICAgICAgICAgICAgICAg IG91dHB1dA== IGVtYWls Njg= LnB1c2g= IH0NCg0K aW5hdGlvbg== NDc= YXRyaXg= VGFibGU= dWNjZXNz XSk7Cg== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRpc2M= KFs= IGJ1c2luZXNz aGVpZ2h0 Lmh0bWw= dGE= ZmllbGQ= IHJlcXVpcmVk X1I= IGdvdmVybg== fQ0KDQo= bGV4 NTAw Liw= IFNldA== dXJjaA== Ly8v dHM= YWY= IG1pZ2h0 aXN0b3J5 U3Ry IG5ldmVy UmVzcG9uc2U= YXJzZQ== YWRh IEhvdw== ICop IDs= IGhhcmQ= QWQ= IGludGVybg== dXNlZA== KGRhdGE= bW9k YW5uZWw= IG5w dWdn IC8+Cg== IGNhbGxlZA== Ym9keQ== IGNobw== KHI= X3NldA== aXJk ID49 IH07Cg== IG9wdGlvbnM= IEdlbmVy IGhlaWdodA== UG9pbnQ= WW91 ZXR5 Q2xpY2s= IHNtYWxs IGlkZQ== IGFjY2Vzcw== YW5ndWFnZQ== IHByb3RlY3RlZA== IGpvYg== IFRoZXJl RGVm IGFkZHJlc3M= IHVpbnQ= Tm90 b28= YXBz PGRpdg== YWluZWQ= YXR1cg== IHN1bQ== LXc= IERhdGU= IGxpdHRsZQ== IGZyaQ== WVBF IHBvcnQ= ZWg= cHJpbmc= X3BhdGg= IHN0YXR1cw== MDY= YWlt Ym9vbA== IGFwcGU= IG9z Lm5hbWU= ZW5zaW9u X0c= IHVwZGF0ZQ== Q29uZmln YWZm RVJS IDw9 YXRlbHk= I2lm dWN0aW9u OTU= IFRl IGxpbms= IFVzZXI= LmZpbmQ= Lm9yZw== bWU= IGdpdmVu T3V0 I2VuZGlm IGJldHRlcg== UGFnZQ== IGZlZWw= ZW5u TUw= IGFscmVhZHk= IGluY2x1ZGluZw== b29nbGU= cnU= aWNhbGx5 cHJvcA== bGVhbg== b3V0ZXI= IGFsd2F5cw== b3JkaW5n SWY= b3JhZ2U= IHBhcmVudA== dmlz CQkJCQkJCQ== IGdvdA== c3RhbmQ= IGxlc3M= L3M= IEFzcw== YXB0 aXJlZA== IEFkZA== IGFjY291bnQ= cGxveQ== IGRlcg== cmVzZW50 IGxvdA== IHZhbGlk CWQ= IGJpdA== cG9uZW50cw== IGZvbGxvd2luZw== X2V4 U09O IHN1cmU= b2NpYWw= IHByb20= ZXJ0aWVz aGVhZGVy LnBybw== IGJvb2xlYW4= IHNlYXJjaA== a2Vu IG9yaWc= IGVy RWQ= RU0= YXV0 bGluZw== YWxpdHk= QnlJZA== YmVk CWNhc2U= NDY= ZXRoZXI= cG9zaXQ= IGludmVzdA== IE9S IHNheXM= bWlzc2lvbg== QU1F IHRlbXA= b2Fk IHJlc3Q= aW5mbw== IGludGVyZXN0 QXJn IHBlcmZvcm0= cG9ucw== IFZpZXc= IHZlcg== bGli KGNvbnN0 VXRpbA== TGlzdGVuZXI= YXJnZQ== Nzc= IG11bHQ= IGRpZQ== IHNpdGU= Li4vLi4v RUw= IHZhbHVlcw== IH0pCg== cGVu Tm8= aWNybw== IGJlaA== ICcuLw== YWN5 cmVj KCktPg== CSAgIA== Iikp Q29udGVudA== X1c= cGxlbWVudA== IHdvbg== IHZpZGVv YWRp cG9pbnQ= JSU= MDM= IGds ZXJ2ZWQ= dmlyb24= SUY= dXRlZA== 44M= J20= IGNlcnQ= IHByb2Y= IGNlbGw= YXJp IHBsYXllcg== YWlz IGNvc3Q= IGh1bQ== KFI= IG9mZmlj a3M= LnRleHQ= YXR1cmVz IHRvdGFs ICovCgo= b3Bl IHN0YXQ= VU0= IGxvYWQ= aWdodHM= IGNsZWFy dXJv IHRlY2hu dXBwb3J0 SVI= IHJvdw== IHNlZW0= IHE= IHNob3J0 IE5vdA== aXBw R3JvdXA= c2VjdGlvbg== bWF4 aXJs IG92ZXJyaWRl IGNvbXBhbnk= IGRvbmU= Iik7DQo= IGdyZQ== LlJl IGJlbGll cmlzdA== IGhlYWx0aA== QU5U KCkKCg== IEJl LnZhbHVl IEdy b3R0b20= IGFyZ3M= UFQ= c3RhdHVz ZnVuYw== dW1lbnRz LWg= TnVtYmVy Og0K IExvZw== ZXJ2ZXI= ICksCg== YW1lbnQ= IG9iag== aW5j IGNoaWxkcmVu aWN5 SVo= YW5kcw== YWJseQ== IGRpc3RyaWI= IGN1cg== ZXJpYWw= IGRheXM= cmVhdGVk cmVjdA== LWw= aXJt aWRkZW4= b21i IGluaXRpYWw= Lmpz IOI= UXVlcnk= IG9ubGluZQ== aW1hbA== LmNvbg== YXU= VXJs Y29udHJvbA== aXJlY3Rpb24= IGluc3RhbmNl T1JU IEZy d2hlcmU= IGphdmF4 IG9yZ2Fu YXB0ZXI= IHJlYXNvbg== b3B0aW9ucw== NTk= IE1hcg== KGE= IHdpdGhpbg== LuKAnQoK T0RF X0RF YWRtaW4= ZW5kZWQ= IGRlc2lnbg== IERhdGE= dW5l IEZpbGU= cm9vdA== IGNlbnQ= IGFycg== X2FkZA== bGVu cGFnZQ== LCc= X3N0cg== IGJybw== YWJpbGl0eQ== b3V0aA== NTg= L2M= cG9zZQ== aXJ0dWFs ZWFyY2g= X3VybA== YXJnaW4= SHR0cA== IHNjaG9vbA== YXZh IGNvbnNpZGVy LmxhYmVs IEFycmF5 NDI= d2Vi b3B0 LnByaW50bG4= dWxhdGlvbg== IGZ1bmM= UEw= ICJc IFRleHQ= YWN0b3J5 KGZ1bmN0aW9u bnVsbA== IGVuZw== ZG93bg== IGluY2x1ZGU= IEVu IERy IGRi ISE= c2lkZQ== IGluaXQ= cXVpcmVk IFNoZQ== Q29sdW1u cmVhY3Q= IGFubg== IHN0b3A= IGxhdGVy IFRoYXQ= ZW50aW9u ZGY= VUc= SUxF IGNsaWVudA== cmFmdA== ZmZlcg== UE9TVA== ZWxwZXI= IGxvdmU= cXVvdGU= b3Vk IGpzb24= IGFibGU= IG1lbg== QVg= IENvcHlyaWdodA== w7Y= YXZpZw== cmVx Q2xpZW50 fSk7Cg== LkNvbQ== ZXJj aWx0 cGVjaWFs X2NvbQ== cm9vbQ== Lk5hbWU= IGdpdmU= YW1i aWtl IGNvbmRpdGlvbg== Y2xpZW50 YXRvcnM= OiI= IGNvcHk= dXR1cmU= aXZlcnNpdHk= ZXJuYWw= e3s= IENhbg== b3VuYw== ZG8= IG9jYw== IGFwcHJv dGhlcnM= emU= IGVpdGhlcg== IEZs IGltcG9ydGFudA== IGxlYWQ= YXR0cg== QVJU RXF1YWw= IGRh ZXRjaA== ZW50aXR5 IGZhbWlseQ== YWRkaW5n IG9wdGlvbg== IGV4aXN0 aWNh IE9iamVjdA== Njk= J3Zl dmVycw== aXRpb25hbA== Njc= b3V0cHV0 IFRydWU= IE9G X3RpbWU= IG9mZmVy IH0pOwoK SEVS ZWdpbg== IiI= IHdhdGVy IGNoZQ== IE15 b3JlZA== IHN0ZXA= YW5jZXM= Q0s= QVk= 4Lg= c3RydWN0aW9u KEM= MzAw b3VjaA== U3RyZWFt YWN0aXZl YW1h RW50aXR5 cHJvZHVjdA== KCl7Cg== IGdvdmVybm1lbnQ= IElE YWpvcg== QW5k IGRpc3BsYXk= 0Ls= IHRpbWVz IGZvdXI= IGZhcg== IHByZXNlbnQ= IE5T IFwK dWVzdA== IGJhcw== ZWNobw== Y2hpbGQ= aWZpZXI= SGFuZGxlcg== IGxpYg== UHJvcGVydHk= dHJhbnNsYXRpb24= IHJvb20= IG9uY2U= IFtd Y2VudGVy PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= IHJlc3VsdHM= IGNvbnRpbnVl IHRhbGs= X2dldA== IGdyb3c= LnN3 ZWI= IFB1YmxpYw== T1A= ZWN1dGU= b2xz ICoq Iik7Cgo= IG1hc3M= dXJlZA== LmNsYXNz b21pYw== IG1lYW4= aXBz IGF1dA== KTsNCg0K IHVudGls IG1hcmtldA== IGFyZWE= dWl0 IGxlbmd0aA== IFdpdGg= c3RydWN0b3I= ZXZlbnQ= Ij48 IFNw SVY= IG11cw== aWZm IGtpbmQ= YXV0aG9y b3VuZHM= bWI= X2tleQ== NDE= d2lkdGg= cG9zaXRvcnk= IGxpZ2h0 dWs= Um93 b2hu YWxm dmlyb25tZW50 YXBwZXI= b2xsZWN0aW9ucw== IHNpZGU= X2luZm8= IGV4YW1wbGU= aW1hcnk= IHdy IGNhbXA= Y3JpYmU= MjU1 Ii8= IG1pc3M= d2F5 IGJhc2Vk IHBsYW4= Vmlz b21haW4= dW5r IGF3YXk= VVA= PFQ= T1M= aW9k IE1vbg== 4oCZcmU= IGxpaw== w6c= aXZlbHk= LnY= aW1lcg== aXplcg== U3Vi IGJ1dHRvbg== IFVw IGV4cGVyaWVuY2U= Q0w= IHJlbmRlcg== X3ZhbHVl IG5lYXI= VVJM YWx0 IGNvdW50cnk= aWJpbGl0eQ== NTc= KCksCg== ZWFk IGF1dGhvcg== IHNwZWNpZmlj YmFzZQ== KG5hbWU= b25lcw== IERv IGFsb25n eWVhcg== IGV4cHJlc3M= Lic= ZW52 IGJlZ2lu IHNvZnR3YXJl IGltcA== IHdpbg== w7Nu IHRoaW5n VHJhbnM= IFRIRQ== IDw/ IHdoeQ== IGRvZXNu aWo= Z2luZw== CWc= IHNpbmdsZQ== b2Zmc2V0 YXJuaW5n b2dyYXBo bGV5 X2NvdW50 IGFuYWw= Y3JlYXRl L20= IFJlZw== OTg= dW5jaA== PSQ= aXNr IHJpZ2h0cw== KE0= ICIiIgo= YXBlcg== Lm1vZGVs IHBv ZW1wdHk= YXJ0bWVudA== IGFudA== IFdoZW4= IHdvbWVu IEVk IHNlYXNvbg== IGRlc3Q= w6M= KGg= IHBvc3NpYmxl IHNldmVy IGJ0bg== IGRpZG4= IHNlbnQ= IGVuYw== IGNvbW1hbmQ= IF0sCg== X3g= IHJlY2VudA== b2x1dGlvbg== dmVjdG9y IEJ5 IE1heQ== IEFjdA== u78= IG1vbmV5 SU5U YnNpdGU= CXA= Lg0K 77u/ c2w= YXR0ZXJu IENsYXNz IHRvbGQ= dWRpbw== Y3VycmVudA== IGVxdQ== IGF1dG8= IFN0YXRl ZGE= bXNn KSk7Cgo= IHdvcmtpbmc= IHF1ZXJ5 IEJy IHdpbmRvdw== YXV0aA== b25seQ== CXQ= IGxlYXN0 YWdu IGV4cGw= aXR0ZXI= YXJpbmc= IGNvbHVtbg== IEdlbmVyYWw= Ijoi ZXJhbA== cmlvcg== IHJlY29yZA== SUI= RVg= IGRhdA== IG1ha2luZw== dWVk IENhcg== ZW1w Ii4= IE1lZA== IGNsb3Nl IHBlcmNlbnQ= IHBhc3Q= KGc= Oig= IHdyaXRl IG1vdmU= IHBhdA== Q29udHJvbA== LlRv IHZp Ki8K aW5hdGU= J2xs YWdlZA== TnVsbA== IHNwZWNpYWw= SVpF IGNpdHk= LyoK IEVuZw== aXhlZA== aW5hcnk= cHk= IGVmZg== YXJpbw== IHRlbGw= YXZvcg== IHNlbGVjdA== bGV2ZWw= aW11bQ== b3Blcg== QnVpbGRlcg== SVA= JyksCg== ZXNj IGZvbnQ= IjsKCg== IEFt aXNoZWQ= aWxscw== SW50ZXI= T1c= IGNvdXJzZQ== IGxhdGU= aWRkbGU= NDM= IGFtb3VudA== IGFzeW5j aW5v Y3Vs IOw= YW5kbGU= X3VzZXI= IGJlbg== IENhbA== ICRf IFJlcA== IGVub3VnaA== VG9rZW4= LnVzZXI= KGo= U2M= V2lkdGg= bm93 YXRmb3Jt IGxvb2tpbmc= IGhvbGQ= TW9kdWxl SVRZ dm8= aXNvbg== LkRhdGE= eWM= IHBvdA== IFRydW1w aWR1YWw= aWRlcw== cnQ= IHByb3BlcnR5 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== YW1ld29yaw== Z28= IGxvdw== IHBhcmE= IHByaWNl dXJ5 IHRvZGF5 cm95 ICcv IHBvbGl0 ICcn eW1i UGg= IGFkdg== IGF0dGFjaw== IFN0ZQ== Uk9N NDAw YW5h IG1lYW5z IHN0b3J5 aWRz YWtlbg== IG1lZXQ= IG1vbQ== IOKAmA== ID8+ IGRlbg== b2JpbGU= Y2hhbmdl ICAgICAgICAgICAgCg== aWNp bmE= IEZvcm0= IHNvcnQ= U2VsZWN0 cGFyZQ== IHRob3VnaHQ= X2Nvbg== IHRhc2s= b2N1cw== IERF IE1pbg== IG9wdA== CWJyZWFr dW1lcg== S0U= dGhlbg== IGRldA== IFRlc3Q= cG9ydHM= IHJldmlldw== KCcv bW92ZQ== IHN3aXRjaA== RVJU cGF0Y2g= YW5ub3Q= 44I= IGFib3Zl aXRpdmU= NTY= IHF1ZXN0aW9u IFF1 44CCCgo= Z2xl IHdvcmQ= IHByb3ZpZGU= IFJldHVybg== IHJlc2VhcmNo w6Nv dXN0cg== IHB1Ymxpc2g= Y2hlbWE= fX0= IENPTg== LWlu YWxsYmFjaw== IGNvdmVy XFw= Y29sb3I= IElT IHdoZXRoZXI= aW1hdGU= aXNj QmFy IGRpdg== QmU= b3Vybg== IGhhdmluZw== bGVt cGxheWVy YWJz YW1lcmE= bmV5 IGV4Yw== Z2V0aGVy cGxpZWQ= YW8= WyQ= ICsr aXBl c2hvdw== L2Q= Wzo= YWdlbWVudA== bGV2 X0lE OTc= cmFyeQ== YWRlcw== X3Nl YXVzZQ== IGVtcGxveQ== ICovDQo= IGZyZQ== ICdA IGNvbXBsZXQ= IGxhcmdl cmFs XHg= IGZhYw== PFN0cmluZw== IGNyZWF0ZWQ= dXBlcg== LnN0YXRl IGhvc3Q= ZW5lcmlj L2I= KCE= d2hpbGU= aWFz QlVH ICk7Cgo= IHJvbGU= UmVn IENvbG9y U3RhcnQ= IHBvcm4= dG9w IHdlYg== IGRldg== IGRlYWw= KyspCg== SW50ZWdlcg== cG9zaXRpb24= Lm9u ICgi 5Lg= IHByb2JsZW0= c3Y= IHByZXNz QUJMRQ== QVRJT04= IFNlZQ== YW5jaA== IHRob3VnaA== bGVlcA== IDwhLS0= IHBvaW50cw== ICAgICAgICAgICAgICAgICAgICAgICAgIA== Lko= IDo6 cHRy REI= Kys7Cg== LnBuZw== bm9kZQ== c29mdA== cG9uZA== IGV2ZXI= LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== TWVudQ== KCcj IHNlcnZpY2Vz cGc= fSkK cGFyYW1z IGFjdHVhbGx5 ICIv RW1wdHk= TWV0aG9k IGlkZW50 dW5pYw== IG1pbGxpb24= IGFmZg== c3R5bGU= IGNvbmM= aW9z aWdubWVudA== VUxU UHI= IjsNCg== IHVuZGVyc3RhbmQ= dWFyeQ== IGhhcHBlbg== IHNlcnZlcg== IENv U0M= IGxlcw== IGZpbGVz R3JpZA== c3Fs IG9mdGVu IGluZm8= X3Ry c3Jj b255 IHNwYWNl dW1i IHBhc3N3b3Jk IHN0b3Jl LAoK IFdoYXQ= Z2Vk IEZhbHNl VXM= c3dlcg== X2luZGV4 IGZvcm1hdA== bW9zdA== c20= TmV3 IGRldGFpbHM= IHByb2I= IEFORA== KCkNCg== aWxhcg== ICR7 cnlwdA== LkNvbGxlY3Rpb25z JHRoaXM= IEZyZWU= X29m KGZhbHNl ZGF0ZWQ= ID4+ IGZhY2U= Q1RJT04= IHNhdmU= IHR5cA== ZGV2 KCIj QUdF Y29udGFpbmVy ZWRpdA== UUw= IGl0ZW1z IHNvY2lhbA== aWVu IFJlYWN0 KS4KCg== IG1hcg== IHJlZHU= IFJF LnB1dA== IG1ham9y Q2VsbA== bmV4dA== IGV4cGVjdGVk IHlldA== IGluZGl2 dHJpYnV0ZXM= YXRpcw== YW1lZA== IGZvb2Q= U291cmNl KHN0cmluZw== ICsK aXRlcw== ZHI= IG1lbWJlcnM= IGNvbWI= aXRlbXM= IFBlcg== VEg= PVRydWU= IGJhcg== X1NF Y29tbQ== KHc= KQoKCg== IHNlbmQ= IGluYw== dW5zaWduZWQ= RkE= IHBhcmFtcw== YXBwaW5n cm9z dWdpbg== ZmE= IGNvbm5lY3Rpb24= IH07Cgo= IGJlY29tZQ== TW9kZQ== IGV2 IGRpZmY= IFVuaXRlZA== SGVpZ2h0 ZnVsbHk= aW1hZ2Vz IG1ha2Vz IGdsb2JhbA== IGNvbnRhY3Q= JzoK IGFicw== 0LDQ ZmxvYXQ= IGV4Y2VwdA== IFBvbA== Q2hpbGQ= dHlw IGNlcnRhaW4= acOzbg== T1VU IGltcHJv aWxlcw== IC0tPgo= IFBhcnQ= dmFsdWVz b3Nz Lyoq aWxpdA== IEV2ZW50 Y3VyaXR5 c3Rlcg== IGNoYXJhY3Rlcg== MTk4 IG5ld3M= ICIs IGRldmljZQ== Y2Vs bG9naW4= aGVldA== RGVmYXVsdA== QCI= CSA= Y2xpY2s= KHZhbHVl IEFi IHByZXZpb3Vz RVJST1I= b2NhbA== IG1hdGVyaWFs IGJlbG93 IENocmlzdA== IG1lZGlh Y292ZXI= IFVJ IGZhaWw= IGJsYWNr IGNvbXBvbmVudA== IEFtZXJpY2Fu IGFkZGVk IGJ1eQ== c3RpdA== IGNhbWU= IGRlbGV0ZQ== cHJvcGVydHk= b2Rpbmc= IGNhcmQ= cm9wcw== IGh0dHBz IHJvb3Q= IGhhbmRsZQ== Q0M= QmFjaw== ZW1wbGF0ZQ== IGdldHRpbmc= X2J5 bWFpbA== X3No LmFzc2VydA== IERlYw== KHRydWU= IGNvbXB1dA== IGNsYWlt Jz0+ IFN1Yg== IGFpcg== b3Bz bmF2 ZW1lbnRz KGlk IGVudGVy YW5nZWQ= RW5k IGxvY2F0aW9u IG5pZ2h0 IGRvaW5n IFJlZA== bGlu fQoKCg== dmlkZXI= IHBpY2s= IHdhdGNo ZXNzYWdlcw== IGh1bWFu IGRhbQ== cGVuZA== ZGly IHRheA== IGdpcmw= cmVldA== IGJveA== IHN0cm9uZw== KHY= cmVs IGludGVyZmFjZQ== IG1zZw== ZmVjdA== X2F0 IGhvdXNl IHRyYWNr Jyk7Cgo= amU= IEpvaG4= aXN0cg== KFM= dWJl IGNl aXR0ZWQ= VkVS Kik= cGFyZW50 IGFwcGxpY2F0aW9u YW55 LnN3aW5n IHBhY2s= XHU= IHByYWN0 IHNlY3Rpb24= Y3R4 IHVuc2lnbmVk LlBvaW50 IE9uZQ== xLE= aXBsZQ== YWlk 0YM= VmVjdG9y Ynl0ZQ== IHdhaXQ= IMOg w6U= IHRvZ2V0aGVy IHRocm93cw== Rk8= Jykp aG9zdA== aXNpbmc= LnZpZXc= IHRlcm1z ZnJhbWV3b3Jr LXI= IGFwcGx5 IHNlc3Npb24= T3B0aW9ucw== dWdnZXN0 IG90aGVycw== d2l0dGVy IGZ1bmQ= SW5pdA== X18o ZW5zb3I= R0VU IHNldmVyYWw= aWk= W2o= SU8= IHRlbXBsYXRl UG9zaXRpb24= IGVjb24= YWNoaW5l IGls LnNwcmluZw== bWFpbg== ZWx0 aW1lbnQ= UmVj bW0= IFVuaXZlcnNpdHk= dXJzb3I= ICAgICAgICAgICAgICAgICAgICA= R0w= aWN0dXJl aXRodWI= Y2Vy Y2FzdA== RnJvbQ== YWxlcw== IHN1YmplY3Q= cGFzc3dvcmQ= bnk= IGVzYw== LndyaXRl 77yM V2hhdA== Lkg= IGhpc3Rvcnk= IEZl IGluZGl2aWR1YWw= dW5pdA== IC0tPg== IGR1 SVNU IHVzZXJz ZnM= ZmFsc2U= dW50 VGl0bGU= IG1vdA== IGZ1dHVyZQ== YWNoZWQ= IHN0YXJ0ZWQ= IG1vZGU= ICc8 X2FycmF5 IGF4 J107Cg== aXJlcw== VGhlcmU= dWdodA== dG1s cG9zZWQ= aWN1bHQ= IHRvb2s= IGdhbWVz IH19 ID8+Cg== IHByb2R1Y3Rz SXM= IGJhZA== IERlcw== LnBhdGg= JwoK IFBvc3Q= YXZlbA== KDo= MTUw IG5lZWRz IGtub3du Rmw= IGV4ZWM= IHNlZW4= NTE= dW1l IGJvcmRlcg== IGxpdmU= dGVtcA== UGVy IHZhcmlhYmxl aWV0 IERlZg== IGdl ZW1l X2JhY2s= Zmlyc3Q= IHByb3ZpZGVk Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= IGZpbGVuYW1l IGhvcGU= dWx5 YXV0bw== ZmluZA== X3N0cmluZw== YnRu aXR1ZGU= QXR0cmlidXRl IHlvdW5n LnR4dA== IHdlYnNpdGU= IFByb3A= IGV5 PigpOwo= aW9uYWw= QVJS aWN0aW9uYXJ5 dXJ0aGVy Ljwv QUxM IHN0dWR5 aWxp IG5ldHdvcms= eWw= aXN0YW5jZQ== T0s= TlU= cmVzdA== IFNU aWNyb3NvZnQ= IGxpbWl0 IGN1dA== KCk6Cg== IGNvdQ== b2du IHNpemVvZg== aXZhbA== IHdlbnQ= Lno= TGluaw== IGZpcmU= IGFjcm9zcw== IGNvbW11bml0eQ== cmVnaW9u TkU= UmVm IG9mZmljaWFs IHZpc2l0 b2x2ZQ== IHJlY2VpdmVk IHRva2Vu IG1vbnRocw== IGFuaW0= IHBhcnRpY3VsYXI= c3R5bGVz aWNv IGVzcw== ODc= LkNvbnRyb2w= IMOp YmFsbA== IGxlYXJu aW5kaW5n VmFy IGRlY2w= KGVycg== TEVDVA== T25l cGhh IH4= Zm9ydA== YXN1cmU= IG1pbmQ= IEVuZA== Q2hlY2s= IHF1aWNr Iiks QU5E dXRpb25z QmFzZQ== X19fX19fX18= IGNvbW1lbnQ= SU5F 4oCZdmU= QnV0 IEVs IFVz IGFkbWlu bWFyaw== IE5hbWU= YAo= IFR5cGU= YW1pYw== cGM= bG9vcg== RlQ= IG9wcA== Y2tldA== KS0+ dHg= IHB1cg== dWVs eW1ib2w= dWF0aW9u YW5nZXI= IGJhY2tncm91bmQ= ZWNlc3M= ZWZpbmVk Li4uLi4uLi4= IGRlc2NyaXB0aW9u IHJlcHJlc2VudA== IikpOwo= cHJlc3Npb24= cm93c2Vy IHNlcmllcw== d2FyZHM= NTI= KCRf YWlzZQ== IGhvdA== YWNpdHk= cmllcw== YWN0aW9ucw== Q3JlYXRl YWRpbw== YW1wbGVz IG9yaWdpbmFs ZW5zaXZl Zm9udA== c3RyZWFt 77u/dXNpbmc= LnNwcmluZ2ZyYW1ld29yaw== MDAx c2VydmVy IGJpbGw= QUNL aWxlbmFtZQ== IGZyYW1l ID0K RWRpdA== YWRpdXM= IGRyYXc= YW5rcw== IGRldGVy IGNvbWVz X2ludA== IGZvcmVhY2g= YW5nbGU= IGVsZWN0 cGVjdGVk SGVhZGVy aXN0cmF0aW9u RmFsc2U= IEdhbWU= IGZpbHRlcg== QWN0aXZpdHk= IGxhcmc= aW5pdGlvbg== ICI8 MjU2 aXNlZA== IHJlbW92ZQ== IFRyYW5z bWV0 c2Vl Rm9ybWF0 Q29tbWFuZA== IEVY Tm9uZQ== IGZyb250 QVNF IFJlYw== b3VuZGF0aW9u IHZv OTY= PVwi KCo= Q2hhbmdl LldyaXRl Z3JvdXA= aWVudHM= dXk= KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== IGRpZw== aHI= KC0= IGdlbg== bnVtYmVy dmVj dXJvcGU= ZW50cnk= TEw= IHN0ZQ== VmFsaWQ= J10s X3BhcmFt IHNlbGVjdGVk IGFjY29yZGluZw== IERpcw== IHV0aWw= QnVmZmVy X2Vycm9y IGFzc29jaQ== X1NJWkU= IHdvcg== IHByaW50Zg== cmFn wqA= REQ= IFZhbA== IGFjdGl2 RW5n ZXRpbWU= IHZpcnR1YWw= YWlnbg== YXVy IFByZXM= IEV4Y2VwdGlvbg== IGFueXRoaW5n IE9mZg== IGhvdXJz IHdhcg== QXJncw== YWdpbmc= IG1vZGVscw== IFRpbWU= T2I= YW1z am95 IGVhcmx5 LnJlYWQ= ODY= IGNlbnRlcg== IEluaXRpYWw= IGxhbmd1YWdl bGVuZ3Ro eHk= IHNu IGluZg== UG9zdA== IGFnbw== IGVhc3k= X2NvZGU= IEFOWQ== X2No IGRvd25sb2Fk KFQ= YXZlZA== 4oCT IHN0dWRlbnRz IGZpZw== bGlnaHQ= eHg= IGJ1ZmZlcg== IERlcA== IE1hdGg= SVRI IHZhcmk= IGR1ZQ== RmFjdG9yeQ== IHBvcg== IGVw b3R5cGU= IGNhbm5vdA== IHdoaXRl PGludA== dGVybg== IHJlZ2lzdGVy IHByZWQ= Y2x1cw== X2RhdGU= IC8qKg== IGF1dGg= IFtdCg== IHBlcmlvZA== bm93bg== IHZvdA== IHNjcmVlbg== J2Q= VHlwZXM= IHRtcA== 0LXQ dXJhbA== IGJlbmVm X3k= IG5ldA== IFN0YXRlcw== J11bJw== IE5l IE5PVA== IG5lZw== MTAy IGNvbW1vbg== c2NvcGU= IGNyZWQ= Z2Vz X1RZUEU= IHN1Z2dlc3Q= b29t LgoKCg== IGFjY2VwdA== IHJhbmRvbQ== ZXJt IFZlY3Rvcg== d2l0aA== VEVS KHN0cg== IHJlc3BvbnM= IGhpdA== LlNldA== Z3JpZA== cmlh IGNsaWNr dW5kbGU= Q2FzZQ== aW5zZXJ0 VXRpbHM= ICIiIg== IGltcGxlbWVudA== YXRhbA== dGVtcHQ= dGVtcGxhdGU= b2Ny cmV0dXJucw== IHBsYXllcnM= dXNlcnM= ZWRlZg== IFRoZXNl IGFtb25n IGRlYg== aGE= LmdldEVsZW1lbnQ= IGNpcmM= IGFuc3dlcg== IHdhbGs= IHRyZWF0 IEdl IENyZWF0ZQ== IGFnZQ== IHJlcQ== T1NU YW5ndWxhcg== 0Y8= IGZpdmU= NTM= IGRpc3RyaWJ1dGVk IGZyaWVuZA== VFA= IGNsZWFu b3dz LkNvbnRyb2xz ZGlz IHdvcmRz Lmlv enk= IGhlYWRlcg== IENoZWNr 4oCZbQ== anVzdA== aG9sZGVy PSI8Pw== IEdOVQ== IENvbA== aW1lc3Q= ZW50aWM= ewoK IHRyZQ== bGFzdA== bGE= IFlvcms= TG8= IGRpc2N1c3M= IEdvZA== IGlzc3Vl cmV3 V2luZG93 IGxhbmQ= MTIw IHN0cmVhbQ== IFBhcg== IHF1YWxpdHk= UGFy X251bQ== NTQ= IHNhbA== ZWx2ZXM= T1JE KHVzZXI= IHdvcmtz IGhhbGY= ZW5zZXM= dmFz IHBvbGljZQ== KCIv dWE= IHNpbXBsZQ== QWRkcmVzcw== IGVtcHR5 ZXNo MTI4 VXBkYXRl IENyZWF0ZWQ= KCcu KS4K ICAgICAgICAgICAgICAgICAg IGFncmU= IEZST00= IGNvb2s= IGV2ZXJ5dGhpbmc= aWxpdGllcw== LnN0YXR1cw== IHJlbGF0aW9ucw== ZXh0ZXJu IG5vdGhpbmc= IHJ1bm5pbmc= CXZvaWQ= Ukk= X2E= X0NPTg== cG9y LnN1Yg== cmVxdWlyZQ== IENpdHk= IFdlc3Q= IG1vcg== c3RvcmU= RXF1YWxz b2Rlcg== IG5h IFtb ICgn IERvbg== RVJT L3A= Lmpzb24= YWJvcg== IHNvbWVvbmU= X3RleHQ= LmNzcw== LlRhYg== IFNvbWU= YXRv ZG91Ymxl IHNoYXJl KHZvaWQ= X2Rpcg== IHVy U3RhY2s= IFdvcmxk Llg= c3RyYWN0 SG93 LkdlbmVyaWM= aWNsZXM= IGVudHJ5 IGNoYW5nZXM= IHBlcnNvbmFs KEE= IG9mZnNldA== X3B0cg== IHBpZQ== IEphbg== LWdyb3Vw bW9kdWxl SXRlbXM= IEhvd2V2ZXI= dmVyYWdl LkZvbnQ= IGV2ZW50cw== Lm1pbg== IGludm9s emE= IHdob2xl IG5lZWRlZA== IGxpa2VseQ== cmllZg== T1JN dmVyc2lvbg== IGZpZ2h0 IGVpbg== RnJhbWU= MTk3 Z2Vu IE91dA== YXZpZ2F0aW9u TGVuZ3Ro aWxsZWQ= cXVlbmNl ICE9PQ== IFNvZnR3YXJl IHdyaXRpbmc= IHJhdGU= J10sCg== UGFuZWw= aW5uZXI= IFsi IHR3 Y2Q= IDsK X3N0YXRl IFNt IE1hcms= KSkKCg== cHJvdA== IE1y bWV0aG9k dXN0b21lcg== SWNvbg== IGNvcnJlY3Q= KG9iamVjdA== IE1vcmU= IGZhbGw= IHZvbA== IGRldmVsb3BtZW50 ZW50bHk= IHNp bWVkaQ== dmluZw== UFA= YWtlcg== IGluZHU= IGVsaWY= IHByZXQ= IGJlbGlldmU= bnM= b21ldA== MTIz IEludGVybg== UmVjdA== U28= LmVycm9y UmVhZA== IGZlYXR1cmVz IG1pbnV0ZXM= LS0t YXNpbmc= Y3JldA== Ij4NCg== LmFubm90 IGNvbGxlY3Rpb24= Jy4= IHNpbWlsYXI= IHRha2Vu KCIl T3JkZXI= J10K LW1k IFRI YWNlZA== IGlzbg== L2o= IHNvbg== Z3JhcGg= IEludGVnZXI= IG5lY2Vzcw== cmVlbg== IHVt IFw8 IG1vbWVudA== IGJyaW5n IGluZGlj eXNpcw== TGV2ZWw= dmVyc2U= dXJyZW5j X3Rlc3Q= IGVudGlyZQ== RG93bg== IH0KCgo= KHJlc3VsdA== IFJlYWQ= w6g= TW9k IHRyeWluZw== IiksCg== IG1lbWJlcg== IENvcg== T0RP LWNvbnRyb2w= dW50aW1l IFNpbQ== RGlhbG9n cGxvdA== X29u IHBoeXM= fS8= IG5hbWVzcGFjZQ== CQ0K YWNj UGxheWVy QVJF ODk= IGZvb3Q= IGJvYXJk cGFydA== IHN1cw== d2lzZQ== IE1j IHB1c2g= QVRB IHBsZWFzZQ== cmllZA== d2VldA== Yml0 aWRlZA== VkU= IFN3 VUI= IHR5cGVz ZWRpYQ== IGNsb3M= YWNlYm9vaw== V2hlbg== IGVkaXQ= aWdnZXI= IGVuZXJn Q29udGFpbmVy IHBob3Q= IENvdW50 IEV1cm9wZQ== Lklz IFJ1c3M= cGVlZA== IFN0cg== IHB5 IGN1bHQ= IGRlZmluZWQ= Y2NvdW50 IG9idA== LkxvY2F0aW9u IHRocmVhZA== aWxsZQ== IGluc3RlYWQ= c3Ryb25n IFNlYw== VVJF IGlkZWE= LnNl ZW15 c2VsZWN0ZWQ= Q29ubmVjdGlvbg== YWNpbmc= dGhyZWFk Lm5leHQ= IGNvbGw= IGZpbG0= aXN0aWM= IGNvbXBldA== IGNvbm4= dGhvdWdo IGNvbXBhbg== b2NrZXQ= IHRlYWNo PSg= IHBob25l IGFjdGl2ZQ== Nzk= ZGVsZXRl MTAx dHJpZXM= IG1v IGRlYXRo fSk7Cgo= b2NvbA== V2lkZ2V0 IGFydGljbGU= cm9kdQ== YW5kaWQ= 0Ys= IENy a2E= KCk6 bG9vZA== CQkJCg== IGFsbW9zdA== IHNlbGw= ZXJ2bGV0 cmlw VW5pdA== IGFwcGxpYw== IGNvbm5lY3Q= IGZlYXR1cmU= IHZpYQ== Jyks IGxpbQ== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= IEd1 RW5naW5l IGVucw== IGVudmlyb25tZW50 YmxvY2s= SEVSRQ== TlVMTA== Z3k= dGFn KSku ZXhw IGNvbXBs IGluc3RhbGw= IGNvbXBsZXRl cXVldWU= YXR1cmFs IGdlbmVyYWw= dGhvbg== IGFza2Vk b3Jlcw== KHJlcw== IHJlc2VydmVk U1A= IOKApg== xYI= IHNpZ25pZmlj T2Zm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= IEFn IEp1c3Q= IEVycm9y IGluZmw= YWRhdGE= IGljb24= YXNrcw== Jyc= X0xP Py4= YWNjb3VudA== ICgq JykKCg== cmFw X3Zhcg== IEZPUg== IHBhcnR5 IFlvdXI= Y2F0 c3RyeQ== Lm5ldw== Ym9vdA== IE5vdg== IHZlY3Rvcg== IG5vcm1hbA== IGZ1cnRoZXI= UmVwb3NpdG9yeQ== ODAw IGRhdGFiYXNl YXR0bGU= IG11c2lj IHNwZWVk IGRvYw== cHJvY2Vzcw== SUdIVA== LnBhcnNl IHRha2luZw== IHZpb2w= Y2VlZA== IEFmdGVy IGZvcndhcmQ= IGNyaXQ= Ii8+Cg== cm90 IGZhaWxlZA== ZWZvcmU= IGNvbmNlcm4= b2U= YmE= IHNlbmRlcg== IHRlcm0= aGFz PSIj IHBvdGVudGlhbA== TnVt IHB1Ymxpc2hlZA== LmNsb3Nl IEltYWdl c3RyYWludA== VUQ= IE9i IHByb2JhYmx5 bGlt IjoK b2x1bWU= IGNvbnN1bQ== NzY= YWd1ZQ== ZW5zaW9ucw== IGludmVzdGln LXllYXI= Jyk7 LXNt IGVuam95 b3JpZw== ZXJpbmc= Y3A= bGVhc2Vk cGxlbWVudHM= IHJldHVybnM= cGF0 Qk8= IEhvdXNl LkxhYmVs IHdlaWdodA== aWdoYg== IGNvbmRpdGlvbnM= IGV4Y2VwdGlvbg== ZGVzY3JpcHRpb24= IHRyYWQ= LXRv IHt9 IG1vZHVsZQ== RU5E LmFw LnByb3Bz IGNvbnN0cnVjdG9y YXZlcw== IGZhdm9y IE5vdw== O2k= IE1haW4= X2s= ZXJpZXM= 4oCZbGw= dHJhbnNmb3Jt aW1lc3RhbXA= UHJl IG1lcg== LnJlcw== c3RhbnQ= TG9jYXRpb24= X05BTUU= IGxvc3M= IAoK bmV0 IGVuZ2luZQ== QmxvY2s= IGlzc3Vlcw== IHBhcnNl IEJhcg== IHN0YXk= IEpTT04= IGRvbQ== YWlycw== d25lcg== IGxvd2Vy IiwNCg== IERlbQ== dWZhY3Q= IHBz IHBlcmZlY3Q= Ukw= IGVkdWM= bHM= ZW1vcnk= QVJSQU5U dWdl IGV4YWN0 LmtleQ== YWxsZWQ= ZWNo aWVm XC8= b2tl IGZvcm1lcg== YWxsb2M= IHNpeA== aWRh IG1hcmdpbg== IGhlYXJ0 YWxk cGFjaw== LmdldEVsZW1lbnRCeUlk IFdBUlJBTlQ= IHJhdGhlcg== IGJ1aWxkaW5n ZXJtYW4= bGljZQ== IHF1ZXN0aW9ucw== aXplcw== bGVnZQ== aXJlY3Rvcnk= IGpl IGNhcw== cHJvcHM= dXRm IHNlY3VyaXR5 IGhvd2V2ZXI= d2VpZ2h0 IGluc2lkZQ== IHByZXNpZGVudA== Q2hhcg== IFdJVEg= Lm1hcA== IGdyYXBo IHRhZw== X3N0YXR1cw== IGF0dGVtcHQ= b3Bw dXNlcw== CWNvbnN0 IHJvdW5k LCQ= IGZyaWVuZHM= RW1haWw= Pz4= UmVzb3VyY2U= S0VZ b3Nw LnF1ZXJ5 IE5vcnRo YWJsZXM= aXN0cmli X2NsYXNz ZWxsbw== VGhhdA== 0Lo= cGVjaWFsbHk= IFByZXNpZGVudA== IGNhbXBhaWdu IGFsdA== YXJlYQ== IGNoYWxs IG9wcG9ydA== LkNvbg== IGVuZXJneQ== bGlrZQ== LnN0cmluZw== aW5ndG9u KSo= eXk= IHByb2Zlc3Npb24= aXJ0aA== IHNlZw== 5pw= IGhvcg== aWVycw== Y2Fu IGJlaGluZA== UHJvZHVjdA== Zmc= IFNr LmpwZw== Pzo= XTsKCg== IGNhbGxiYWNr IEh0dHA= 0Yw= bG9uZw== TVM= QVRI IHJhaXNl IHdhbnRlZA== cm93bg== dXRvcg== bHQ= XT0= ZWxpbmU= TUE= IHNlcGFy Y3M= c2VtYg== RGlz YnNlcnY= IFdpbGw= IHBvbGljeQ== IHRoaXJk cGhvbmU= IGJlZA== L2c= Ll9f IEluYw== aXppbmc= LnJlbW92ZQ== aW5zdGFuY2U= LnR5cGU= IHNlcnY= RWFjaA== IGhhcg== IE1lc3NhZ2U= KGtleQ== U0VMRUNU UG9z KSk7DQo= IHJlY29tbQ== IHRyYWluaW5n IEVudA== IENoYXI= aWNodA== KGZpbGU= IHByaW9y R2FtZQ== IGV4aXQ= UGFyYW1z LmNvcmU= UEM= bmVz YW5jZWQ= KHJlcXVlc3Q= UGFzc3dvcmQ= fT4K IG1hZw== IHJlbGVhc2U= IHNoYWxs dWRlbnQ= IFNvdXRo YW5kbw== Oic= LlRhYkluZGV4 c2s= YW5uZXI= aXNzZXQ= IG91dHNpZGU= bGVkZ2U= IOU= IFJvYg== IGltbQ== IQo= IFdlYg== RGVz QkM= YW5jaWFs Um91dGU= RGVj ZmVyZW5jZXM= IHB1cmNo IE1vZGVs Y3Rvcg== Z24= X3N0YXJ0 X3Vu Lio= aXNlcw== IGdyb3VuZA== IHVuaXF1ZQ== IGJlYXV0 eyI= IHBvdXI= IE9jdA== IHRyZWU= c2V0cw== X3Jlcw== JyktPg== X3JlZw== KCJc IGJ5dGU= Qmw= IGRhdGluZw== IG1hdHRlcg== IFJlbQ== ICcuLi8= IEF1Zw== IExh ICQo b3VybmFs MTEx aWFt IHNob3dz d3JpdGU= IGJhbGw= IHNpbXBseQ== IGZhc3Q= IG1lbW9yeQ== QVNT IE9m b3ZlZA== YW50ZQ== YXVs aXN0cnk= KSkpOwo= IGZpdA== PHN0cmluZw== IHBvbGl0aWNhbA== YW5jZWw= Xy4= Y2FyZA== LmN1cnJlbnQ= b2No X2ltYWdl XHQ= Iwo= KEw= IGluZHVzdHJ5 Y29taW5n IGV4dHJh NjAw IHJlcG9ydGVk LnN0YXJ0 IHJlc291cmNlcw== IGltZw== Zmxvdw== X0VY KG51bGw= IFByZQ== IHdyb25n aW50ZXJmYWNl UGFyYW1ldGVy bmVycw== 4bs= dHVyZQ== ZXJzaXN0 b3VudHJ5 IHNlZW1z YWxhbmNl ZGVzdA== CVN0cmluZw== IG1haW50 IHVuaXQ= YWN0ZXJz IFRS aWZ1bA== ZXhwb3J0cw== cHJvamVjdA== QXBwbGljYXRpb24= bGVnYXRl IHRha2Vz dGVybQ== IGV0Yw== dXN0ZXI= IGFwcGVhcg== YWRkcmVzcw== IGZlbQ== aHM= IGhvbQ== LC0= IGRpZmZpY3VsdA== IGNvbWluZw== T3Blbg== IHNldHRpbmdz IFdhcg== IFRoZW4= IGF1dG9t IEZvdW5kYXRpb24= IHF1aXRl RGVzY3JpcHRpb24= IGJsb2c= aXF1 UFM= MTEw X2ZpZWxk SnNvbg== U1NJT04= IFNjaA== IExP IGRlc2NyaQ== IGV2ZXJ5b25l IHByZXR0eQ== IGxvbmdlcg== IG1lbnU= IGN1cnJlbnRseQ== c2Vj IHJlbGF0aW9uc2hpcA== IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= IE1hcA== YXNldA== IHBhcmFtZXRlcnM= IGNydXNo Ig0K SUxJVFk= aWdyYXRpb24= IGNvdXQ= dG90YWw= IG5hbWVz bmRlZg== Iik7 cmllbmQ= eW5hbWlj IGVmZm9ydA== IGFjdHVhbA== IGZpZWxkcw== T1VO dGVycw== MjUw IGZpeA== X21vZGVs IGNhc2Vz Q0E= TXk= SW50ZXJmYWNl IFNF MTk2 XV0= YWxsZQ== IE5hdGlvbmFs IEFycmF5TGlzdA== aW5saW5l LlY= YXJh cmVmaXg= YXNj UmVhZGVy INC/ YXN0aWM= KCgp Q2w= LmFubm90YXRpb24= IHBlcmZvcm1hbmNl YWlseQ== LnRvU3RyaW5n Lm5ldA== dmlld3M= LmVuZA== YXllcnM= bGF0ZQ== IEFwcg== ZWRlcmFs J10p LmJvZHk= IGhpZ2hlcg== X2Zs Y3I= YWxlcnQ= X25vZGU= IEdvb2dsZQ== IGl0c2VsZg== QXV0aA== dXJyZW5jeQ== IHNpZ25pZmljYW50 YXBwZW5k IHJlc3BlY3Q= c3RyYXA= IHVuYQ== cml0ZXJpYQ== UE9SVA== LmFwYWNoZQ== T3V0cHV0 IHByb2dyZXNz IG1pZA== IE1pY3Jvc29mdA== IHJlc291cmNl YWJsaXNo IGRpbQ== LmxvYWQ= LkFwcA== IGRpcmVjdGlvbg== IGFkZGl0aW9uYWw= ICAgICAgICAgICAgICAgICAgICAgICAg IG51bWJlcnM= IGNvbXBhbmllcw== LlRo IHNvdW5k dXNlcm5hbWU= IHN0YXRlbWVudA== IGFsZXJ0 IGNvbnRyYWN0 aG9tZQ== X2xlbmd0aA== LkNvbXBvbmVudA== ZXY= LkV4 77ya Ijs= IEhpZ2g= ICkKCg== IFBvaW50 b3Bo IGxpbmVz LT5f IikKCg== b3g= YXBwbGljYXRpb24= IF0K CgoKCgoK MTgw IHNvb24= Y3Rpb25z aW5nZXI= IGpvaW4= IFBl IOs= IGxhcw== LkU= Y3Nz L29y IFN0YXJ0 IFRP IHN1YnM= Y29ubg== Y29tcG9uZW50cw== REVCVUc= cXVhcmU= RnVuY3Rpb24= ZW5kYXI= LmluZGV4 IGZpbGw= xJk= IGNob29zZQ== aG93 IEFtZXJpY2E= YXNzZXRz LS0tLS0tLS0tLS0t IFZhbHVl IG9mZmljZQ== IHZlaA== IHRyYW5zZm9ybQ== IEFydA== IGluZGU= IGZu IGltcGxlbWVudHM= YW5nbw== cGxldGU= KyI= dG1w YW1pbHk= IGhhc2g= bWlzc2lvbnM= RVNU Z3Q= UHJvdmlkZXI= ICAgICAgICAgICAgICAgICAgICAgIA== IGZsYWc= IHBhcnRpY2lw ZGVu IFJldHVybnM= IG5vdGU= w7xy cG0= aWRlb3M= IHNwZWNpZmllZA== IEVO ZXN0ZXI= b2xpZA== IHVwb24= KHN0ZA== CXY= ICdc dXo= IHZlcnQ= IHZpY3Q= CXNlbGY= ICIk ODU= Lms= IGdyb3Vwcw== Z2l0aHVi bGFuZw== IG11dA== VE8= IHZl IFBsZWFzZQ== OwoKCg== YWNjZXNz IHsi cmVh IHJpc2s= aWNrZXI= b2dnbGU= CXdoaWxl QU5H LnNlbmQ= NzI= IHdvbWFu IGdldHM= IGlnbg== IElk X2xvZw== T05F IGV2aWQ= IEhhcg== X3N1Yg== IGVuZGw= IGluY2x1ZGVk KCkpOwoK IEFw aWdy IHNlbQ== IEJsYWNr ZG9j X3RhYmxl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== LXVw IGNhdXNl IC4u IHZhbg== X2RpY3Q= IGZvY3Vz SU5E Q0VTUw== LkxvZw== IG11bHRpcGxl aWRv IHJlZ2FyZA== LU0= YW5kbGVy b3Vyc2U= IGRlZw== LlU= IGFkZGl0aW9u IHZhcmlvdXM= IHJlY2VpdmU= 0LXQvQ== IEhU T2Jq REY= IGluY3JlYXNl IE9wZW4= XTs= IGNvbW1pdA== Pwo= YXRlZ29yaWVz YXRvcnk= c2hpcA== IE1pY2g= IGh0bWw= cm9taXNl IGxlYXZl IHN0cmF0ZWc= YXZlbg== IENvbnNvbGU= a25vd24= LW4= X0xF LmNvbXBvbmVudA== IGJyZQ== U2Vzc2lvbg== aWFuY2U= IGFsaWdu dHlwZWRlZg== X3Jlc3VsdA== IFdIRVJF LnNwbGl0 IHJlYWRpbmc= RkFVTFQ= IGNsbw== IG5vdGljZQ== X3By YXJ0ZXI= IGxvY2s= IHN0YW5kYXJk ZXRpYw== ZWxsb3c= IHBhZGRpbmc= IEhpcw== IHN0YXRlcw== X2Nhc3Q= KFA= YWE= IGludGVybmFs ZWFu IFBSTw== IEtleQ== IGVzcGVjaWFsbHk= bWluZw== IGNyb3Nz IG5hdGlvbmFs X29iamVjdA== ZmlsdGVy IHNjcmlwdA== LnVwZGF0ZQ== X2k= IEFzc2VydA== L2NvcmU= JSUlJQ== IHByb2JsZW1z aXN0b3I= IC49 IGFyY2g= IHdyaXR0ZW4= IG1pbGl0 TUVOVA== LmNo Y2FwZQ== IE11cw== X2NvbmZpZw== IEFQSQ== Zm9vdA== IGltYWdlcw== ZW5kbA== Lklu Rmlyc3Q= IHBsYXRmb3Jt LnByb3Q= T3B0aW9u c3Rl IFRPRE8= IGZvcmNl LmNvbnQ= CWVjaG8= IERhdg== UHRy KEI= UlQ= IEJhc2U= XVsn IGFubm91bmM= Y29uc29sZQ== IFB5 ZHM= LmFz IHByZXZlbnQ= YXBhbg== IHsn fTwv IFNlcnZpY2U= IFNlbg== YWRvcg== cHJvZmlsZQ== VG9w IGl0ZXI= cG8= SUVT SlNPTg== SUU= aWFudA== 44CB X2o= IFNlcHQ= X21hcA== YnVt KGNvbnRleHQ= IEhvbWU= aWFucw== R0I= NjM= IGxpdmluZw== IHBhdHRlcm4= KGlucHV0 aWNpZW50 OTk5 Q29yZQ== IGVudGl0eQ== IGludGVn Q2hhbmdlZA== IHVzZWZ1bA== LmluZm8= IHRvb2w= KGl0ZW0= IG9r IGZlZWQ= SVg= w6lz IE5ld3M= cmVtb3Zl ZXJyeQ== CQkJCQkJCQkJ aXBtZW50 YXJlcw== RG8= Q3VycmVudA== LmNvbnRlbnQ= Lkdyb3Vw dXN0cmFs INGB fSk= IHBvcHVsYXI= IHN0cmU= IG1ldGhvZHM= X0VSUk9S TGVmdA== Y2Fs YnNw LlRvU3RyaW5n IGRpcg== IGFsbG93ZWQ= IGltcGFjdA== IildCg== NjI= LmNvbmZpZw== IGVsZW1lbnRz IHByb3Rl IHRyYWlu LnRy cnM= IFJlcHVibGlj IFRhc2s= NjE= YXJpZXM= KEQ= KGdldA== 4oCmCgo= IHJlbGF0ZWQ= IHZlcnM= IHNpbA== ICIiOwo= IGNtZA== IHRlY2hub2xvZ3k= LndpZHRo RmxvYXQ= IFVzZQ== Qm9keQ== c2hvdWxk LmpvaW4= Rm9udA== bGx1bQ== eWNsZQ== IEJyaXQ= IG1pdA== IHNjYWxl IChf ZXJuZWw= IikpCg== IHNjb3Jl L3Y= IHN0dWRlbnQ= VUM= LnNob3c= IGF2ZXJhZ2U= RW5hYmxlZA== KGV4 Y29tbW9u aW1hdGlvbg== OkAi Y2hpZQ== IC4uLgoK cml2ZXI= IE1hcmNo Y2F0ZWdvcnk= Zmlu IGNvdXJ0 0LI= U2VydmVy IGNvbnRhaW5lcg== LXN0 X2Zvcg== IHBhcnRz IGRlY2lzaW9u b2Jz b3Vi bWl0dGVk ICQoJyM= IHNhdw== IGFwcHJvYWNo SUNF IHNheWluZw== IGFueW9uZQ== bWV0YQ== U0Q= IHNvbmc= ZGlzcGxheQ== T3Blcg== b3V0ZXM= IGNoYW5uZWw= IGNoYW5nZWQ= w6o= IGZpbmFsbHk= X251bWJlcg== UGxlYXNl 4KQ= b3Jpbmc= LXJl IGtpbGw= IGRydWc= d2luZG93 IGNvbnZlcnQ= b21icmU= IHdheXM= SGVscGVy IEZpcnN0 KF9f dXJpdHk= IFdpbmRvd3M= ZWVz IG1hdA== cmFwcGVy IHBsdXM= YW5nZXM= Il0u YXpvbg== L3Q= bGF0 YXN0ZQ== IHByb2ZpbGU= IHJlYWR5 I2lmbmRlZg== cm90ZQ== IHNlbnNl R2VuZXI= IENvbmZpZw== b215 IEp1bmU= IGxhdGVzdA== IHNhZg== IHJlZ2lvbg== IGRlZXA= d2l0Y2g= IFBhcms= fWA= IEZyb20= SUk= IGN2 IHJlYWNo IGNvdW50ZXI= IFdvcms= IFVSTA== IFVwZGF0ZQ== JywNCg== IGltbWVkaQ== Y2xvc2U= YWRvcw== ZmVycmVk IHdlZWtz dXJn IGRhbWFnZQ== IGxvc3Q= YW5p X2xv IGhpbXNlbGY= IGRvZw== KV0K 778= cGly dHQ= IHBhcGVy IHRoZW1z c2Vjb25k IHN0YWZm IElucHV0 Iis= IEZhY2Vib29r IGFsbG9j IHNjaGVk QUNF IHRoZW1zZWx2ZXM= IENvbXBvbmVudA== IGRyaXZlcg== amE= KHBhdGg= IGNhdGVnb3J5 YWxscw== cHU= bGx1bWluYXRl IEFjdGlvbg== LmJ1dHRvbg== IEdM aXN0aWNz IG9pbA== IHN0b2Nr Pic= IGRlYWQ= VkFM UVVF KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq IGNoYXJn UmV0dXJu IGZ1bA== ZG9t IHJ1bGVz IG1vZGlmeQ== IGV2YWw= aGFt YXRlbWVudA== XDw= dWxh PUZhbHNl UkE= IGNvbnRhaW5z NzQ= IHN0YWNr bWFy IHt9Cg== IHVuZGVmaW5lZA== QXNz IENoaW5h dmV5 Kgo= IHBsYXlpbmc= KS8= YWN0b3I= IGJvdHRvbQ== bGllcg== IE51bWJlcg== IGNvdXBsZQ== REM= IFNP Z29y LnNldFRleHQ= c3VjY2Vzcw== Y29tbWFuZA== RmlsdGVy IE91cg== X2l0ZW0= IGN0eA== IHJvYWQ= VmVyc2lvbg== Y2FzZQ== dXJ0 YXZpb3I= eWNo c2VtYmx5 IFByb2R1Y3Q= IGhlbGQ= YWZl IGluY2x1ZGVz PHF1b3Rl IGF2b2lk IEZpbg== IE1vZA== IHRhYg== YW5v w7E= aXBwaW5n LWU= IGluc2VydA== dGFyZ2V0 Y2hhbg== Lk1vZGVs SU1F XAo= IG1hY2hpbmU= YXZ5 IE5P IEludGVy IG9wZXJhdGlvbg== bW9kYWw= VGFn XTo= IHByb2R1Y3Rpb24= IGFyZWFz IHJlbg== X2Zyb20= bmJzcA== IG9wZXJhdG9y bWVu YXBwZWQ= X3Blcg== emVu KCIu LnNhdmU= PSJ7ew== IHRvcg== KHJlc3BvbnNl IGNhbmRpZA== IGNvbnY= YWlsZWQ= IExpYg== Y29tcA== dXJh 77+9 IEhlcmU= IGFyZ3VtZW50 aG9vZA== IGVzdGFibGlzaA== b2dyYXBoeQ== IG9uQ2xpY2s= YW1iZGE= IHNjaA== IG1vdmll IHNlYw== IGFjdGl2aXR5 2Kc= IHNxbA== X2FsbA== aW5jaXA= IHByb3ZpZGVz IHN5cw== YWNrZXQ= IHdhc24= IHVzZXM= IEZ1bmN0aW9u Lmdvb2dsZQ== IFJlc3VsdA== ODQ= VmlzaWJsZQ== YWdtYQ== ZWxjb21l IFN5 IENlbnQ= QUxTRQ== YWNpw7Nu RVhU IGxpY2Vuc2U= IExvbmc= IGFjY29t IGFiaWxpdHk= LmhlaWdodA== QWN0aXZl b2xvZ2ljYWw= b2x5 KSks LlNl IHBhcmFtZXRlcg== cHJpdGU= QUJJTElUWQ== LnNlcnZpY2U= IEdyb3Vw X3F1ZXJ5 IEl0ZW0= aW5pbmc= IGp1ZA== aW1z Zml4 aW5kZXI= YWdyYW0= IGZ1bmN0aW9ucw== IGV4cGVyaQ== IEVt IHJvdA== IHBlbg== LmJ0bg== IEFT I2lmZGVm IGNob2ljZQ== IFBhZ2U= X1BSTw== UVU= 5Y8= YW50aXR5 wq0= d29yZHM= IHJlYWRvbmx5 IGZsZXg= cHJvdGVjdGVk IEFueQ== IGNoYXJhY3RlcnM= ZW5jZWQ= IEp1bHk= aWxlcg== Q2FyZA== dXJhbmNl IHJldg== LmV2ZW50 YWx5 MTMw IHdvbmRlcg== IFBvcnQ= IGxlZ2Fs cm9sZQ== IHRlbg== IGdvZXM= TVA= d2hpdGU= KToNCg== KSkNCg== IHJlZmVyZW5jZQ== IG1pcw== IFByb2plY3Q= aWNrcw== PiY= Q09O IHJlcGw= IHJlZ3VsYXI= U3RvcmFnZQ== cmFtZXdvcms= IGdvYWw= IHRvdWNo LndpZGdldA== IGJ1aWx0 ZGVz UGFydA== KHJl IHdvcnRo aGli Z2FtZQ== OTE= MTky INCy YWNpb24= IFdoaXRl KHR5cGU= KGA= ODE= IG5hdHVyYWw= IGluag== IGNhbGN1bA== IEFwcmls Lkxpc3Q= IGFzc29jaWF0ZWQ= CVN5c3RlbQ== fn4= PVs= IHN0b3JhZ2U= IGJ5dGVz IHRyYXZlbA== IHNvdQ== IHBhc3NlZA== IT0= YXNjcmlwdA== Lm9wZW4= IGdyaWQ= IGJ1cw== IHJlY29nbg== QWI= IGhvbg== IENlbnRlcg== IHByZWM= YnVpbGQ= NzM= SFRNTA== IFNhbg== IGNvdW50cmllcw== YWxlZA== dG9rZW4= a3Q= IHF1YWw= TGFzdA== YWRvdw== IG1hbnVmYWN0 aWRhZA== amFuZ28= TmV4dA== eGY= LmE= IHBvcm5v IFBN ZXJ2ZQ== aXRpbmc= X3Ro Y2k= PU5vbmU= Z3M= IGxvZ2lu YXRpdmVz J10pOwo= xIU= IGlsbA== SUE= Y2hpbGRyZW4= RE8= IGxldmVscw== IHt7 IGxvb2tz ICIj VG9TdHJpbmc= IG5lY2Vzc2FyeQ== ICAgCg== Y2VsbA== RW50cnk= ICcj IGV4dHJlbQ== U2VsZWN0b3I= IHBsYWNlaG9sZGVy TG9hZA== IHJlbGVhc2Vk T1JF RW51bWVy IFRW U0VU aW5x UHJlc3M= IERlcGFydG1lbnQ= IHByb3BlcnRpZXM= IHJlc3BvbmQ= U2VhcmNo YWVs IHJlcXU= IEJvb2s= Lwo= KHN0 IGZpbmFuY2lhbA== aWNrZXQ= X2lucHV0 IHRocmVhdA== KGlu U3RyaXA= 7J0= w6fDo28= NzE= IGV2aWRlbmNl KSk7 IEJybw== IFtdOwo= IG91 YnVm U2NyaXB0 ZGF0 IHJ1bGU= I2ltcG9ydA== PSIv U2VyaWFs IHN0YXJ0aW5n W2luZGV4 YWU= IGNvbnRyaWI= c2Vzc2lvbg== X25ldw== dXRhYmxl b2Jlcg== ICIuLw== IGxvZ2dlcg== IHJlY2VudGx5 IHJldHVybmVk DQ0K KSkpCg== aXRpb25z IHNlZWs= IGNvbW11bmlj ICIu IHVzZXJuYW1l RUNU RFM= IG90aGVyd2lzZQ== IEdlcm1hbg== LmF3 QWRhcHRlcg== aXhlbA== IHN5c3RlbXM= IGRyb3A= ODM= IHN0cnVjdHVyZQ== ICQoIiM= ZW5jaWVz YW5uaW5n IExpbms= IFJlc3BvbnNl IHN0cmk= xbw= IERC 5pc= YW5kcm9pZA== c3VibWl0 b3Rpb24= OTI= KEA= LnRlc3Q= ODI= CgoKCgoKCgo= XTsNCg== IGRpcmVjdGx5 ICIl cmlz ZWx0YQ== QUlM KXsNCg== bWluZQ== ICAgICAgICAgICAgICAgICAgICAgICAgICA= KGs= Ym9u YXNpYw== cGl0ZQ== X19f TWF4 IGVycm9ycw== IFdoaWxl IGFyZ3VtZW50cw== IGVuc3VyZQ== UmlnaHQ= LWJhc2Vk V2Vi IC09 IGludHJvZHU= IEluc3Q= IFdhc2g= b3JkaW4= am9pbg== RGF0YWJhc2U= IGdyYWQ= IHVzdWFsbHk= SVRF UHJvcHM= Pz4K IEdv QE92ZXJyaWRl UkVG IGlw IEF1c3RyYWw= IGlzdA== Vmlld0J5SWQ= IHNlcmlvdXM= IGN1c3RvbWVy LnByb3RvdHlwZQ== b2Rv Y29y IGRvb3I= IFdJVEhPVVQ= IHBsYW50 IGJlZ2Fu IGRpc3RhbmNl KCkpLg== IGNoYW5jZQ== IG9yZA== Y2FtZQ== cHJhZ21h IHByb3RlY3Q= cmFnbWVudA== IE5vZGU= ZW5pbmc= 0Yc= IHJvdXRl IFNjaG9vbA== aGk= IG5laWdoYg== QWZ0ZXI= bGljaXQ= IGNvbnRy IHByaW1hcnk= QUE= LldyaXRlTGluZQ== dXRpbHM= IGJp UmVk LkxpbnE= Lm9iamVjdA== IGxlYWRlcnM= dW5pdGllcw== IGd1bg== b250aA== IERldg== RklMRQ== IGNvbW1lbnRz X2xlbg== YXJyb3c= YW1vdW50 UmFuZ2U= c2VydA== R3JpZFZpZXc= IHVwZGF0ZWQ= IE1v IGluZm9ybQ== b2NpZXR5 YWxh QWNjZXNz IGhhYg== IGNyZWF0 X2FyZw== IEphbnVhcnk= IERheQ== IikNCg== dXBsZQ== ZG9jdW1lbnQ= Z29yaXRo bWVudQ== IE92ZXI= YmI= LnRpdGxl X291dA== IGxlZA== dXJp ID8+PC8= Z2w= IGJhbms= YXltZW50 CXByaW50Zg== TUQ= IHNhbXBsZQ== IGhhbmRz IFZlcnNpb24= dWFyaW8= IG9mZmVycw== aXR5RW5naW5l IHNoYXBl IHNsZWVw X3BvaW50 U2V0dGluZ3M= IGFjaGll IHNvbGQ= b3Rh LmJpbmQ= QW0= IHNhZmU= U3RvcmU= IHNoYXJlZA== IHByaXY= X1ZBTA== IHNlbnM= KXs= IHJlbWVtYmVy c2hhcmVk ZWxlbWVudA== IHNob290 VmVydA== Y291dA== IGVudg== X2xhYmVs ID4K cnVu IHNjZW5l KGFycmF5 ZGV2aWNl X3RpdGxl YWdvbg== XQ0K YWJ5 IGJlY2FtZQ== Ym9vbGVhbg== IHBhcms= IENvZGU= dXBsb2Fk cmlkYXk= IFNlcHRlbWJlcg== RmU= IHNlbg== Y2luZw== Rkw= Q29s dXRz X3BhZ2U= aW5u IGltcGxpZWQ= YWxpbmc= IHlvdXJzZWxm LkNvdW50 Y29uZg== IGF1ZA== X2luaXQ= Lik= IHdyb3Rl MDAz Tkc= LkVycm9y 5Ls= LmZvcg== IGVxdWFs IFJlcXVlc3Q= IHNlcmlhbA== IGFsbG93cw== WFg= IG1pZGRsZQ== Y2hvcg== MTk1 OTQ= w7g= ZXJ2YWw= LkNvbHVtbg== cmVhZGluZw== IGVzY29ydA== IEF1Z3VzdA== IHF1aWNrbHk= IHdlYXA= IENH cm9wcmk= aG8= IGNvcA== KHN0cnVjdA== IEJpZw== IHZz IGZyZXF1 LlZhbHVl IGFjdGlvbnM= IHByb3Blcg== IGlubg== IG9iamVjdHM= IG1hdHJpeA== YXZhc2NyaXB0 IG9uZXM= Lmdyb3Vw IGdyZWVu IHBhaW50 b29scw== eWNs ZW5jb2Rl b2x0 Y29tbWVudA== LmFwaQ== RGly IHVuZQ== aXpvbnQ= LnBvc2l0aW9u IGRlc2lnbmVk X3ZhbA== YXZp aXJpbmc= dGFi IGxheWVy IHZpZXdz IHJldmU= cmFlbA== IE9O cmljcw== MTYw bnA= IGNvcmU= KCkpOw0K TWFpbg== IGV4cGVydA== CQkNCg== X2Vu IC8+ dXR0ZXI= SUFM YWlscw== IEtpbmc= Ki8KCg== IE1ldA== X2VuZA== YWRkcg== b3Jh IGly TWlu IHN1cnBy IHJlcGU= IGRpcmVjdG9yeQ== UFVU LVM= IGVsZWN0aW9u aGFwcw== LnByZQ== Y20= VmFsdWVz ICIK Y29sdW1u aXZpbA== TG9naW4= aW51ZQ== OTM= IGJlYXV0aWZ1bA== IHNlY3JldA== KGV2ZW50 IGNoYXQ= dW1z IG9yaWdpbg== IGVmZmVjdHM= IG1hbmFnZW1lbnQ= aWxsYQ== dGs= IHNldHRpbmc= IENvdXI= IG1hc3NhZ2U= CWVuZA== IGhhcHB5 IGZpbmlzaA== IGNhbWVyYQ== IFZlcg== IERlbW9jcg== IEhlcg== KFE= Y29ucw== aXRh ICcu e30= CUM= IHN0dWZm MTk0 IDoK IEFS VGFzaw== aGlkZGVu ZXJvcw== SUdO YXRpbw== IEhlYWx0aA== b2x1dGU= RW50ZXI= Jz4= IFR3aXR0ZXI= IENvdW50eQ== c2NyaWJl ID0+Cg== IGh5 Zml0 IG1pbGl0YXJ5 IHNhbGU= cmVxdWlyZWQ= bm9u Ym9vdHN0cmFw aG9sZA== cmlt LW9sZA== IERvd24= IG1lbnRpb24= Y29udGFjdA== X2dyb3Vw b2RheQ== IHRvd24= IHNvbHV0aW9u dWF0ZQ== ZWxsaW5n XS0+ b3Rlcw== ZW50YWw= b21lbg== b3NwaXRhbA== IFN1cA== X0VO IHNsb3c= U0VTU0lPTg== IGJsdWU= YWdv IGxpdmVz IF4= LnVu aW5zdA== ZW5nZQ== IGN1c3RvbWVycw== IGNhc3Q= dWRnZXQ= 77yB aWNlbnM= IGRldGVybWlu U2VsZWN0ZWQ= X3Bs dWV1ZQ== IGRhcms= Ly8KCg== c2k= dGhlcm4= IEphcGFu L3c= UFU= IEVhc3Q= b3ZpZQ== IHBhY2thZ2U= IG5vcg== IGFwaQ== Ym90 Il07Cg== X3Bvc3Q= dWxhdGU= IGNsdWI= JykpOwo= IGxvb3A= UElP aW9uZQ== c2hvdA== SW5pdGlhbA== IHBsYXllZA== cmVnaXN0ZXI= cm91Z2h0 X21heA== YWNlbWVudA== bWF0Y2g= cmFwaGljcw== QVNU IGV4aXN0aW5n IGNvbXBsZXg= REE= LkNo LmNvbW1vbg== bW8= ICcuLi8uLi8= aXRv IGFuYWx5c2lz IGRlbGl2ZXI= ICAgICAgICAgICAgICAgIAo= aWR4 w6A= b25nbw== IEVuZ2xpc2g= PCEtLQ== IGNvbXB1dGVy RU5TRQ== IHBhcw== IHJhaXM= SGFzaA== IG1vYmlsZQ== IG93bmVy RklH ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhlcw== IGF0dHI= d2Q= LnRpbWU= YXdu IHRyZWF0bWVudA== IEFj LlZpZXc= aW1wbA== bW9yZQ== cGFzcw== IGhh LmZyb20= IGxlYWRpbmc= RkZGRg== KGVycm9y LnVp YXRhcg== YWRlcnM= ZGF0ZXM= IHp1 IGZsb3c= VGFyZ2V0 IGludm9sdmVk IGlv cGFyc2U= JF8= aGVzdA== LmludA== LWl0ZW0= YXN5 U3A= IHNoaWZ0 TlQ= IHRm X1RS LndlYg== Q1M= IH0p IGV5ZXM= MTI1 MTA1 X3o= Jyk7DQo= aWZvcm4= IHtA IG5pY2U= Lmxpc3Q= ICAgIA0K IGZsb29y IHJlZGlyZWN0 IFVL KFsn IHdpc2g= IGNhcHQ= bGVnYWw= IElP IHN0YWdl LlN0cmluZw== IEFmcg== aWdlbg== IFNI RGVsZXRl ZWxscw== IHNvbGlk IG1lZXRpbmc= IHdvcmtlZA== IGVkaXRvcg== aW55 0Lw= X3JlYWQ= Lklk ZWZm T2Zmc2V0 Y2hh VVNFUg== CQkgICA= aXBwZWQ= IGRpY3Q= IFJ1bg== LmhwcA== IGFuZw== eG1s aW1wbGU= IG1lZGljYWw= X3Rva2Vu Y29ubmVjdA== IGhvdXI= IGNvbnRyb2xsZXI= X21lc3NhZ2U= VUlE R3I= YW5kZWQ= X0NI IGJvb2tz IHNwZWFr YW1pbmc= IG1vdW50 UmVjb3Jk CXN0cnVjdA== LldlYg== b25kb24= IC8vCg== IGZlbHQ= LkF1dG8= aWRnZQ== X3Bvcw== UFI= IG1vZGVybg== Q29sbGVjdGlvbg== X21zZw== Q0Q= IExv IHNlY29uZHM= aWJseQ== LmVxdWFscw== IGludGVybmF0aW9uYWw= I3ByYWdtYQ== b290aA== V3JpdGVy aWF0ZQ== IGNlbGU= IEJpdA== aXZv aXZlcnk= cmQ= SEVDSw== IGNhY2hl LmNvdW50 IHJvbGw= LlJlYWQ= MTA4 UkVE IHNldHVw aXpvbnRhbA== bW9kZWxz YXJndg== IGNvbnNpZGVyZWQ= PSIuLi8= c2V0dGluZ3M= IFJlbA== IGdyb3d0aA== IG1peA== IFdhc2hpbmd0b24= IHBsdA== IElN 4bo= IHR1cm5lZA== IERhdGVUaW1l IFdlZA== KHVybA== ICIt IGxldHRlcg== QXN5bmM= ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== IE9jdG9iZXI= X2xpbmU= IGF0dGVudGlvbg== IGNvbGxlY3Q= IEhhc2g= IGltYWc= VHJlZQ== IHNpdHVhdGlvbg== ZXR0ZQ== X25v SVZF IHZvbg== LnRhcmdldA== IGtub3dsZWRnZQ== IGRyaXZl LnBvc3Q= IGJsb29k IGNpdA== cHJpbWFyeQ== IGNvbmZpZ3VyYXRpb24= dGVl IHBob3Rv aXNvZGU= VHJhY2U= IGdhdmU= IHNob3Q= IEFpcg== IG1vdGhlcg== cHJpY2U= IG1vcm5pbmc= KSl7Cg== LXg= IHRyYWRl IGRlc2M= ICYmCg== IHBhcmVudHM= QXBp 5Yg= dGVk d2Vy IOY= IHN5 IEtl UGFyc2Vy 5YU= YW5jeQ== IHBpZWNl aWZvcm5pYQ== dG9TdHJpbmc= cmFu aWRpbmc= UFRJT04= Y29tZXM= L2xpYw== LmNsaWVudA== RWw= TG9uZw== IHByb2Zlc3Npb25hbA== cnVwdA== dmE= IGNvbXBsZXRlbHk= IHByYWN0aWNl MDAy IHNlbGVjdGlvbg== UmVt aW5p IGNhbQ== UkVF IHNpdGVz cGE= QVRVUw== 0YHRgg== YXJyYW50 Kig= X0tFWQ== IEJ1dHRvbg== IEZyaWRheQ== c2VxdQ== IHJlYWRlcg== IG1lc3NhZ2Vz 6K8= IGJ1Zg== S2U= IG5vdg== SFA= TXNn YWxpZ24= YXJpbHk= ICcs X3dpdGg= IGRhcw== IGhlYXJk YXRvbWlj cmlhbA== KVs= IGRpc2U= QGVuZA== IGdvbGQ= IGZhaXI= IHNhbGVz LkJ1dHRvbg== c3RyaWN0 c2F2ZQ== IG1lYXN1cmU= ICIr ZWNhdXNl Vmlld0NvbnRyb2xsZXI= IFRhYmxl LnBhcmFt IGRlY2lkZWQ= KCgo SU5GTw== IG9wcG9ydHVuaXR5 VGU= SUNFTlNF Y2NvcmRpbmc= a2k= IFVO IGNvbnRhaW4= IG1hbmFnZXI= IHBhaW4= IEZpcmU= cm9tZQ== IHBsYW5z Rm91bmQ= bGF5 IERlY2VtYmVy IGluZmx1 w7o= cmVuY2g= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXppbmc= YnJpZWY= Y2FsbA== d29vZA== IGxvYWRlZA== IGdyYW5k L2Y= aW1w X1U= MTI3 U1RS 4oCi IGNyZWRpdA== LkNvbG9y b3JnZQ== UVVFU1Q= IGRpZmZlcmVuY2U= IFBD d2FyZ3M= IHB1Yg== dW5kYXk= IGZyYQ== Lm1heA== IHRyaWVk YW5uZWxz c2VuZA== IHJlcG9ydHM= IGFkdWx0 5Lo= IGNvbnNpc3Q= IFN0cmVldA== IFByb2dyYW0= U1FM TWF0cml4 b3VuY2ls LUE= CXc= IHdob3Nl IHJlbGln IFNleA== IGdpdmVz bm9uZQ== Lm1lc3NhZ2U= KEc= LmF3dA== LXJpZ2h0 IE5vdmVtYmVy ZWxsaWc= MzYw dXRpdmU= xIM= b3Zlcm4= IGVhc2lseQ== IGlkZWFz MTA0 INC9 L2Nzcw== bHlpbmc= ZWxsZQ== Q2Fu X2NvbG9y 0L7Qsg== IHBhaXI= bmd0aA== IHNwbGl0 MTQw ZHJvcA== YXJ0eQ== b25h IGNhcGl0YWw= IGhlYXI= IGV4aXN0cw== CWxvZw== ZW1v UnVu b2k= IHBhcnNlcg== IE1ldGhvZA== IGVkdWNhdGlvbg== W2s= IGxpYnJhcnk= PiI7Cg== X1VO CXN0ZA== b2RlZA== IGNhbGxz aGVyZQ== UmVs IGJyYW5k YmFja2dyb3VuZA== Z2E= X2FkZHJlc3M= X3BhcmFtcw== Q2F0ZWdvcnk= MTAz IEluZGlh X2V2ZW50 IGluZw== UmVuZGVy LmNs dW1weQ== IHBldA== RkM= IEFudA== RXh0 IGNoYXJnZQ== ZW5lZA== Z3JhZA== RU8= IGRlcGVuZA== IC4KCg== ZnJhbWU= IGRm IGh1Z2U= IFBBUlQ= ZWRz Ozs= IEFN IGJhc2lj IExldA== bGljaA== IGFybQ== IHN0YXI= IGZlZGVyYWw= V29yaw== IGNhcnJ5 IElzcmFlbA== KG9iag== PXt7 IHNhdmVk IHN5bg== IGNvbnN0YW50 VkVOVA== IHBvc2l0aXZl IGNvbmR1Y3Q= IHNraW4= IGVhcmxpZXI= IGxheW91dA== IElQ T1VS IHRpbQ== c3R5bGVzaGVldA== X2Ns IENhcmQ= Kyspewo= IHRlbXBlcg== IERhdmlk CXRyeQ== LmRhcnQ= IHdhbnRz IHBpY3R1cmU= IHZpZGVvcw== IENvbW0= aXNpb25z X01BWA== TWFwcGluZw== LWNvbnRlbnQ= IEVhcg== LWRl IHByZW0= YnJ1YXJ5 IGNvbXBvbmVudHM= IHRocm91Z2hvdXQ= IHB1bGw= IHBhZ2Vz ZW50ZQ== cmVzcG9uZA== IGdhcw== Y3JpcHRvcg== IGVkZ2U= IGJvdW5k QUNU KioqKioq IGNyZWF0aW5n IENI IG51bGxwdHI= QnI= Kyc= LmNv Pjo6 IGxlYXJuaW5n Lkxlbmd0aA== X1NI IHBhdGllbnRz QUlO IGtpZHM= IGNvbWZvcnQ= IHNob3du dWdpbnM= IEJhY2s= ZWxsYQ== X0NM IGxhdA== IGRpc3BhdGNo IGNsYXNzZXM= LmF0 LmJlZ2lu IHN1Y2Nlc3NmdWw= YmFu IG9idGFpbg== IFNs IGxhY2s= aXRlcmF0b3I= VGhyZWFk KHNpemU= IG5vbmU= Lmhhcw== X1g= c29ydA== bmFw cGV0 Ymlu NzAw IENhbmFkYQ== VGhleQ== IGRhbnM= IE1hdA== PHRk IGhhaXI= ICcnLAo= IGN1 IGxhd3M= bGV0ZWQ= cGVk IHBvdw== IGtuZXc= X0NPTQ== Xyw= IE1hZw== aWRlbnRz KHJlcQ== ICks LWNlbnRlcg== MTkw IHdpZGU= IEF1dGhvcg== c3RhbnRz IGpvYnM= IG1hdGg= ZXRpbWVz Qm9vbGVhbg== IHNjb3Bl X2lz IG1lYXM= IGtleXM= ZWxheQ== IGV4YWN0bHk= Jz0+Jw== IFBhdWw= bWFz CXByaW50 KGxlbg== ZmQ= ICk7 LkV2ZW50 cWxp aXJpdA== aWVsZHM= b21hbg== IFRvcA== IHZvdGU= IG1hc2s= IHRoZW1l LQo= IHByb3Bz IGZpbmU= IHdyaXRlcg== X29mZnNldA== Y2Fy IGFsdGVybg== IGNvcHlyaWdodA== IGRlc3Ryb3k= cHBlcg== IGdlbmVyYXRl cHBlZA== 4oCZZA== ICAgICAgCg== bWFrZQ== IFNob3c= IGJyb3dzZXI= IGZhdm9yaXRl IGNhcmVlcg== IGhhcHBlbmVk KGNoYXI= IHJlY29tbWVuZA== IGxpdGVy LmZpbHRlcg== Z3JhZGU= IMKj UGhvbmU= b21z IG5hbWVk LWxhYmVs aXBv IE90aGVy IHBhbmVs IHJvY2s= U2NhbGU= CWFzc2VydA== 0LQ= IHRydXN0 ZnJvbnQ= IGRlbW9u QXI= TmV0 IGVjb25vbWlj Zm9vdGVy IHJhY2U= KG5vZGU= IE9wdGlvbg== c3BsaXQ= IHBoeXNpY2Fs aWZlc3Q= IHJlbW92ZWQ= Lmh0dHA= KSksCg== IGxvb2tlZA== Jzs= ZGluZw== Z2VzdA== YXR1cmRheQ== L2xpY2Vuc2Vz UHJpY2U= IGRybw== IHRvd2FyZHM= IHVucw== IENM CXN0YXRpYw== IHJvd3M= IGRlZmluZQ== LnJlcGxhY2U= IGZhdGhlcg== IERlc2lnbg== YXNzaWdu bXV0 RGV2aWNl RGlk JykpCg== b21ldHJ5 YXlsb2Fk IGhpc3Rvcg== IFBhcmFt IEJvb2xlYW4= IG5hdHVyZQ== IGpz IG5hdGlvbg== aWg= IGRpc2NvdmVy c2Vt SGFuZGxl CXI= IFRlY2hu IHdhbGw= eyQ= QHByb3BlcnR5 ICIuLi8= IGV4YW0= LmRyYXc= b3BwaW5n IG5lYXJseQ== IGNvb2w= IGluZGVwZW5k UkVT IGhhbmRsZXI= IE1vbmRheQ== IHN1bg== U3R5bGVz b3VzbHk= IAk= dmVzdA== RGlzcGxheQ== KHk= YXRpY2FsbHk= IHByZWRpY3Q= eWluZw== IHNvbWV0aW1lcw== Il0K IGRyaW5r IGJ1bA== aWZpY2F0aW9ucw== Lmluc2VydA== LnJlZw== IHRlc3Rz QWxpZ25tZW50 IGFsbGVn IGF0dHJpYnV0ZQ== IE5vdGU= IG15c2VsZg== YXJ0cw== Tm93 IGludGVyZXN0aW5n bGllbnRz IHBvcHVsYXRpb24= IENhbGlmb3JuaWE= Ikk= 5bk= IGdyZWF0ZXI= dWVzZGF5 IHRob3Vz IGNvc3Rz IGxhdW5jaA== XEh0dHA= a2Vy YmFuZA== IFBsYXk= IGJhbmQ= LnNoYXBl ZXNvbWU= YXJ0aWNsZQ== LnJm IHdlcg== w6Fz ZW1iZXJz dXNy QkE= aWNhbg== ZXR0 dmFsaWRhdGU= dWx0aQ== IGltbWVkaWF0ZWx5 emVy IGZpZ3VyZQ== b2Vz ZWxsZXI= aXJjbGU= IFNpZ24= LmRi IHJhbms= Qnl0ZXM= IHByb2plY3Rz X3JlYw== VUxBUg== QVBJ IExpbmU= UG9ydA== IHBvbGw= IGdpdmluZw== aWRlbmNl LS0K IHBsb3Q= aWNpYWw= IHdhcnJhbnQ= SVRJT04= IERvdWJsZQ== IGJpbGxpb24= Z29yaXRobQ== IGVxdWlwbWVudA== REFURQ== IEAi RUU= IHBsZQ== aWF0aW9u IGhlYWRlcnM= IHByb2NlZA== LkNvbXBvbmVudE1vZGVs IE9iYW1h IHBh IEJlc3Q= aW1hdGVseQ== LmdldFN0cmluZw== Llw= bXBsb3k= IHJhdw== X2Jsb2Nr dW5kcmVk In0sCg== MTEy Lkdyb3VwTGF5b3V0 IGJyb3VnaHQ= TlNTdHJpbmc= dGhyb3c= Y3JlYXRlZA== Lk5ldw== X3ZpZXc= Q1A= ZXBz T3A= IGdyYXRpcw== ICci IGludGVydmlldw== IiIiCg== IHBhcnRpYWw= IGFyaWE= YmluZw== QXV0aG9y Qm9vaw== IFBhdA== dW1hbg== VXNlcnM= cGx1cw== MTkz IERpcmVjdA== dmVudWU= YWxwaGE= VUNDRVNT IENhbGw= ICk7DQo= aW1hdGVk IHJlbWFpbg== IGFudGk= IExvbmRvbg== IHNhZmV0eQ== UE9TRQ== b2xlcw== Y29udHJvbGxlcg== Qnl0ZQ== IENvdXJ0 IFBoaWw= IEFzc29jaQ== ZW5h 5ZA= X1NUUg== Y29pbg== cmVzaG9sZA== IGJhdGNo X0NsaWNr ZW50aWNhdGlvbg== Pic7Cg== ZW50eQ== IGJlZ2lubmluZw== IHplcm8= IENvbnZlcnQ= IHRlcnI= IHBhaWQ= IGluY3JlYXNlZA== Y2F0Y2g= LXNpemU= MTE1 YWN0aXZpdHk= ZXF1YWxz IHF1ZXVl ICIn IEludGVybmF0aW9uYWw= IGbDvHI= dXJzZGF5 IHNjaWVudA== YWxsb3c= YXhpcw== IGFwcHJvcHJp ZWRnZQ== IGlkeA== U3VjY2Vzcw== ZW50aWZpZXI= Olw= eGlz IG1heGltdW0= YXJrcw== IGJpcnRo KGluZGV4 IG1heWJl LnB5 ZmlsZXM= IGxpbWl0ZWQ= X2NoZWNr bG9vaw== cGxpZXM= IG1vdmVtZW50 J10u IGJyb2Fk IEJF IFVuaXR5RW5naW5l LmNwcA== IEV2ZXJ5 QWRtaW4= IGZhbnM= cGFyZWQ= CiAgICAK IGZvcmVpZ24= IHBhbg== IHRvdXI= IE9yZGVy IG1vdmluZw== IGF1Zg== Q2FsbA== Y2I= xZ8= dmVudG9yeQ== IFNxbA== IGZ1bGx5 Q2xpY2tMaXN0ZW5lcg== V09SRA== IGFubm91bmNlZA== KQ0KDQo= IGFncmVlZA== cmll IGVhcm4= X2xpbms= LmFycmF5 KHRleHQ= IG1hdGVyaWFscw== LHA= ZmZmZg== dmc= IMKp IHVubGVzcw== YWpheA== TE9H IHNleHVhbA== IFwi LXRpbWU= IGNvYWNo IHN1cHBvcnRlZA== IHBob3Rvcw== aWZvcm0= LkNyZWF0ZQ== KV0= cmllcg== IGRpYWxvZw== YXZlcg== aWdl KSs= X2lkeA== Ols= X21pbg== IENvbmc= IHByZXNzdXJl IHRlYW1z U2lnbg== YmVnaW4= cmlhbg== TkVTUw== TFM= IGltcHJvdmU= IFN1bmRheQ== IGRlZmluaXRpb24= aWdlcg== cm9sbGVycw== IHRoaW5raW5n VGVtcGxhdGU= LUY= IGVtZXJn cGxhdGVz IFVTQQ== LnNldFN0YXRl IEFsc28= cmV2 IGVuYWJsZQ== IENP UEVDVA== IGNvbmNlcHQ= KS0= IOKAog== IHNldHM= IG1lYW5pbmc= ZW1vbg== IENvbnM= Y21w ZWRlcg== YW5uZWQ= aWNlbnNlZA== IFN1cGVy IGRhaWx5 IG11bHRp X3U= IGNoYWxsZW5n X21vZGU= IFByb21pc2U= IHN0cmljdA== am8= aW50b24= KGxpc3Q= T25seQ== Pns= IHZlaGljbGU= 7ZU= IFBsYXllcg== MTA2 IERlbA== IHBvb2w= LnVybA== bmVzZGF5 KCk7DQoNCg== OTAw ICIpOwo= TG9jYWw= LiIpOwo= IG9yZ2FuaXphdGlvbg== cmVuZGVy IEFwcGxpY2F0aW9u IHN1bW1lcg== ZXhwZWN0ZWQ= TkE= IHJhcA== X29iag== IHN1cmZhY2U= IFBVUg== IH0sCgo= IHZhcmlhYmxlcw== KG1lc3NhZ2U= IG9waW4= LmJhY2s= 0LDQvQ== IHdvcmtlcnM= dm0= Q28= dWdodGVy IG1hc3Rlcg== ICIiLA== IHN0b3JpZXM= LlVzZXI= IGNlbGVicg== aW5lc2U= QlM= IENvbW1hbmQ= YXNoYm9hcmQ= IG9n a2c= LmltYWdl LnN0eWxl IHN0ZXBz IEJlbg== KGFyZ3M= NDA0 IFBlcnNvbg== LHk= IG9mZmljaWFscw== fAo= IHNraWxscw== dmM= IGJ1aWxkZXI= IGdhcg== QWNjb3VudA== IEF1dGg= 55Q= J10pCg== IEFU bm4= LkludA== U1NFUlQ= IGVmZmVjdGl2ZQ== TEVURQ== IHRvb2xz QVJE IGRpZ2l0YWw= MTkx RG91Ymxl IEZpbmQ= UkM= IGlubGluZQ== L3I= QVJBTQ== QVNL IGludGVudA== YWlnaHQ= X2FkZHI= IHJlcXVlc3Rz LmZpcnN0 IGRlYnVn IHNwZW50 KCkpKTsK xZs= IHByaW5jaXA= TG9nZ2Vy Y2x1ZGVz LnVzZQ== IHN1cnY= bWVkaWE= IEZlYnJ1YXJ5 IE1hYw== IG1pc3Npbmc= IHdpZmU= IHRhbGtpbmc= IE1ha2U= IGNhcnQ= IGxvY2F0ZWQ= RW5j LWE= Y2hyb24= IGNhcmRz IGd1eQ== IHBlcnM= IFllcw== YXRldmVy IEFuZw== b2xhcg== IEV2ZW4= IGFjY3Vy IFBvd2Vy IEdvbGQ= Y2xlYXI= UHJvY2Vzcw== IHJlY29yZHM= IGtpbGxlZA== LmNsZWFy IFdBUlJBTlRJRVM= IHB1cnBvc2U= cGFuZWw= SkVDVA== w61h IGV4ZXJj V1M= L0w= LmV4cG9ydHM= IF9fXw== IHNpbg== U2VydmxldA== IGTDqQ== LmRlbGV0ZQ== cm9rZQ== U2w= dWdo ZWFycw== IHBvaW50ZXI= IGhvcA== YWxsZXJ5 IG9icw== Y292ZXJ5 CWNoYXI= CQkJCQkJCQkJCQ== CWRlZg== b2NpdHk= aXRjaGVu dWxhdGlvbnM= IEZJVA== ICku c3RyYWludHM= dmVudGlvbg== IHJlcXVpcmVz IE9wZXI= TUU= T1VOVA== YWxsZXQ= IG5vcm0= SVJF ZXhhcw== IHByb2dyYW1z IHdlYWs= Jy4k dWluZw== CSAgICAgICA= IG1pbA== IGZpcm0= aW5pdGVseQ== X1ZBTFVF YXBzZQ== YXRpc2Y= IGRlbWFuZA== X21vZA== IGRlc2NyaWJlZA== IHBsYWNlcw== VklE IGFsb25l IGV4cG9ydA== IHZlYw== IE1heA== IGFjdGl2aXRpZXM= aWN0dXJlcw== Z2VuZXI= IG1h gqw= IGV4cHJlc3Npb24= Q2FsbGJhY2s= X2NvbnRlbnQ= IE1vc3Q= IHRlc3Rpbmc= RUM= Q0hBTlQ= IGFkanVzdA== LlRocmVhZGluZw== KGN0eA== IGFncmVl aWdoZXN0 IHVp IExhdw== Llk= Pjw/ IHBvZA== LWxn 4oCdCgo= IGRlc2NyaWJl IEV1cm9wZWFu LXNo IFBVUlBPU0U= T1JZ IGNvbnZlcnM= IElsbHVtaW5hdGU= IEF2 KGNo PyI= Y2hlbg== aW1h RG9jdW1lbnQ= IG9wZXJhdGlvbnM= d2lu CWZ1bmN0aW9u LkltYWdl IHNjZW4= L2g= IFND IGV4cGxv OiU= LyoqDQo= TkFNRQ== 5og= KHZhcg== IGRpcmVjdG9y T05H IHlpZWxk IGZlZXQ= IFNlYXJjaA== IEls IHJlc3RhdXI= ZHVj IGludGVnZXI= MTA3 ICcnOwo= IGhpZ2hseQ== Y2hlY2tlZA== IFBBUlRJQw== RVJDSEFOVA== 77yJ IG9wdGlt UXVldWU= IExJ aXRhdGlvbg== IHRyYW5zcG9ydA== aXNzaW9u ZmlsbA== dXNpb24= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CWJvb2w= LXRo dXB0 IGVzc2VudGlhbA== YW50ZWQ= IGJlbmVmaXRz CVM= JzsNCg== aWtp IGdpcmxz aWNlZA== YnVmZmVy XSs= IHNvY2tldA== IHByaWNlcw== IEZyZQ== IHNhdA== IHdvb2Q= TWVudUl0ZW0= QVJH IEFkbWlu T1dO ZGs= IHJlc2V0 IGZvcm1z INC4 5pY= IFR1ZXNkYXk= MTA5 IEluaXRpYWxpemVk X3RyYWlu b3Jhcnk= YXRlZ29y IGR0 VG90YWw= Y29uc3RydWN0 aWxpZXM= IGd1eXM= 0LXRgA== IGluc3RydWN0aW9u MDEw eWxlZA== IGludGVybmV0 ZXRhZGF0YQ== YWR5 ZmFjZXM= amVjdGlvbg== IEphY2s= IHJlY3Q= Wy0= IExlZw== IGRldmljZXM= T0M= ICoNCg== b3JhdGlvbg== ZXJ0YWlu IGd1YXJk b3N0cmVhbQ== IGVudW0= LmxheW91dA== ICI7Cg== dm9rZQ== IE9r SG9tZQ== KHRy RVRI IGRlbGF5 IHB1cmNoYXNl ZGM= IGFyZW4= X29uY2U= CQkJCQo= cm9y ZHJhdw== LnJ1bg== KG1vZGVs VGltZW91dA== bGlr IEFyZw== LmVu IGZpc2g= Y3B5 X2Zl RVJDSEFOVEFCSUxJVFk= KFg= X291dHB1dA== Pz8= IGpv YW5kYXJk IGRvbGw= ZXJyb3Jz X2Jhc2U= IFBBUlRJQ1VMQVI= IGxlYWRlcg== IGNvbXBhcg== IGRvdWI= IFZpcw== U3RhY2tUcmFjZQ== LUM= IFN0dWQ= c3RpdHV0ZQ== TW9yZQ== IERlc2NyaXB0aW9u V0FSRQ== YWRz INC6 YmluZA== PXNlbGY= ZW1wbG95 W24= LmFsbA== LUI= JiY= YWxt IGN1bHR1cmU= aG91c2U= IHN1ZmZlcg== ICcl IHN0cmFpZ2h0 IFN0YXI= dWRv IGRlZA== IENPTQ== IGNvbmZpcm0= IEdvb2Q= LnNj X19fX19fX19fX19fX19fXw== RFI= Q29uZmlndXJhdGlvbg== RGF0ZVRpbWU= IGFkdmVydA== IGNvdWxkbg== YXN5bmM= c3RhY2s= JykNCg== S2l0 IGhvdXM= IG1lY2hhbg== cmF0ZQ== MjA0 IGF1ZGlv CWNvdXQ= Y29yZXM= IHNwb3Q= IGluY3JlYXNpbmc= ICMj KSkp cG9pbnRz IGNvbXBhcmVk bGln IGJlaGF2aW9y IEJZ IEF0dA== Y3JhZnQ= aGVhZGVycw== ZXRl ZW5kcmVnaW9u IGRldGFpbA== VUxF IENvbW1vbg== CXByb3RlY3RlZA== c3Rvbg== IEZJVE5FU1M= IGZyZXNo Ij4KCg== LmV4YW1wbGU= YmVyZw== IG1vdmVk CWU= IFNhdHVyZGF5 IHBheWxvYWQ= xIc= KToKCg== IGJleQ== dXJlcg== PHNjcmlwdA== IHN5bWJvbA== IGFzc3Vt IHB1bA== RWZmZWN0 IGh1bmRyZWQ= VG9vbA== YWtlZA== Y29ubmVjdGlvbg== IHZvaWNl IHBk IHRyYW5zYWN0aW9u IGxpbmtz RXJy IEluZGlhbg== VEM= YXRhbG9n bmk= c2lnbg== PDwi amk= eWE= IGRlbW9uc3Ry dWxhdGVk LlN0 IGluc3RpdA== IGJvb3N0 IGNlbGxz b2xpYw== LlBybw== Ojwv RXZlbnRMaXN0ZW5lcg== aWZ5aW5n IERp b3Jyb3c= LmV4ZWN1dGU= IGNvbGxlZ2U= WW91cg== IGxhcmdlc3Q= LmRpcw== IHF1aQ== IGluZGl2aWR1YWxz X2J1ZmZlcg== IG5n U0E= IENvbnRyb2w= IHNpbmc= IHN1aXQ= ICAgIAk= U0c= IGp1bXA= IHNtYXJ0 b21h IEV4cA== ICct IGFzc2lzdA== IHN1Y2Nlc3NmdWxseQ== c3lz IENyZQ== X3JlZg== IFRodXJzZGF5 IGJ1cg== INC0 IGJleW9uZA== IG5vZGVz RGV0YWlscw== aW5jdA== IEphbWVz IGFmZmVjdA== ZXhjZXB0aW9u IHR5cGVvZg== KA0K LXNl IGZldGNo YCw= IGNydXNoZXI= fS4= IEJP U2hvdw== IHJhdGVz IGJvbg== LWljb24= IE1lZGlh UkVTUw== IFZhbGlk 0L7Quw== IGZ1Y2s= YWNrcw== IHN0dWRpZXM= TWU= IG93bmVycw== fWVsc2U= IGdyb3dpbmc= VmFyaWFibGU= IEJlbA== LnJhbmRvbQ== dmVtZW50 b255bQ== KEY= IEZBTFNF IHRvcmNo KHJvdw== aWdv c3RydWN0dXJl MTIx IGNlcnRhaW5seQ== RGVw IEdyZWVu cXVlc3Rpb24= IGFkZGluZw== IERldmVsb3A= X2RlZg== IG1hY2g= PSU= CQkg Y29uZHM= UHJvamVjdA== IHJlamVjdA== IM4= IHBvb3I= IGF3YXJl MTE0 IEJ1aWxk IEJyaXRpc2g= IE5F IG51bWVy cmVlcw== Y2xhaW0= IG1vY2s= IG9t IHNjcmU= T0xE LnBs ZWxlcg== IGNvcnJlc3BvbmQ= X0hF IGJpbmFyeQ== MTE2 X29yZGVy IFNRTA== IGFkdmFudA== IHByZXY= Lls= LmFzc2VydEVxdWFs cGxpZXI= YXJw IGNsb3NlZA== IGVuY291cg== IFFTdHJpbmc= YXVk IGRldmVsb3BlZA== IHBlcm1pc3Npb24= LmRlYnVn b3BlcmF0b3I= ICcK IHN5bQ== YXRpdmVseQ== w6ll LWNvbG9y IEdFVA== a3k= IGFsdGhvdWdo X3JlcXVlc3Q= X2VsZW1lbnQ= Li4uLi4uLi4uLi4uLi4uLg== X0RBVEE= IGFtYXppbmc= IHNi IERlZmF1bHQ= RXZlbnRz IGZhaWx1cmU= YWNsZQ== UHJvcGVydGllcw== IGRyZWFt IGRpc3Ry IGF1 IGdlbmVyYXRlZA== 5pU= IFRlYW0= VVNF IGluY29tZQ== IGV5ZQ== X25vdA== Il0s X2Zvcm0= U3VwcG9ydA== b3JkZXJz LlByaW50 dmlsbGU= IFdlZG5lc2RheQ== b2x2ZXI= IG9wcG9z aXNhdGlvbg== b2xh Q2xvc2U= PHA= X3dpZHRo SW52YWxpZA== eGI= IHN0cnVnZw== X2FjdGlvbg== IHR4dA== IFBhdGg= YWxhcg== IE1FUkNIQU5UQUJJTElUWQ== c2VydmljZQ== IE1pY2hhZWw= YWJsZVZpZXc= RGVidWc= b2tlcw== U2hl IGd1ZXNz IEphdmE= X1BBVEg= IHBhcnRpY3VsYXJseQ== IElJ IGRvbWFpbg== 5bm0 IHJlZHVjZQ== LWxlZnQ= cmVhbA== IGFwcGVhcnM= IGNvbW8= IFVuaXQ= IEdvdmVybg== YWxp YWxsZWw= IEpldw== X0k= IGNvcw== LmNvbG9y IEdsb2JhbA== IHRlbGU= YmVu X3RyYW5z IHJlYXNvbnM= IGVtYg== ZW5zaXR5 bGluZXM= b21pbg== U2NyZWVu 0LDRgg== cGVjdHM= Y2xpcA== Zm9v cmVudA== IGFm IGRhbmdlcg== aWxpbmc= TmFtZXM= T3Vy IGRpc3RyaWJ1dGlvbg== V2hpbGU= U0w= V3JpdGU= IGdvdG8= IGNvbG9ycw== IHBvd2VyZnVs a2lu IGRlcHRo ZXJjaWFs IENvbmdyZXNz IE1hcmtldA== RGI= dW5kZXI= IExhc3Q= w58= Z3JlZw== IHBvc3Rz X1VSTA== b3Rvcw== RG9u IG1pY3Jv IGFycmVzdA== 0L8= IChA IEhvdA== IEluZGV4 OyY= IyE= IE5vcg== IENhcA== LSg= IGludGVyZXN0ZWQ= cGVhcg== IHJlbnQ= IGFsYnVt b2xpY3k= Lmxhbmc= LnRyYW5z LmZvcm1hdA== IHsNCg0K cGhlcmU= IGF4aXM= IEJ1c2luZXNz ZXJzaXN0ZW5jZQ== dXJy IG1pbmltdW0= ZW5kb3I= IFNE MTEz IEludGVybmV0 5aQ= RXhw aXZlcnNl TU0= IG9idmlvdXM= IGJhc2lz IHNjaWVuY2U= IGJ1ZGdldA== aXphdGlvbnM= UEE= IGZsYWdz cHJldA== TE9DSw== IHZhcmlldHk= IHRydXRo ZHQ= IGdvbmU= IGJhdHRsZQ== PHN0ZA== IFNpbA== cmY= dWRh IGVyb3Q= IENhbQ== IHN0YXRpb24= ICc8Lw== Y2hlbWU= IFN1bg== IGZpbmlzaGVk IHNob3A= IEtvcmU= IGVpZ2h0 X1JFRw== TkQ= Piw= Ij48Pw== KG51bQ== CWlubGluZQ== VHJhbnNhY3Rpb24= Lk9u IG1haWw= cmV5 cmVzdWx0cw== IG5hdg== SU1JVA== X2lkcw== TWFrZQ== 5Yo= TW9kYWw= IExPRw== IFN1cg== IGluc3RhbmNlb2Y= IG92ZXJhbGw= IEluZm9ybWF0aW9u IGNvbnN0cnVjdGlvbg== X0ZJTEU= YnV0 IG1lZGlj IGR1cmF0aW9u aXRuZXNz YWdlbnQ= QVY= IHNldmVu b2xm IH19Cg== Il0sCg== MTcw MTIy IGNhbGxpbmc= IGFucw== dGhyb3dz b3Jpem9udGFs IHVzZVN0YXRl LmZs IFN0YXR1cw== IE9ubGluZQ== UlI= IFJpY2g= IEhpbGw= IGJyYWlu IGZvbGxvd2Vk MjQw ZW1pYw== IHNsaWdodA== IGluc3VyYW5jZQ== LkFycmF5 IGFic3RyYWN0 IFN1bQ== cmVkaXJlY3Q= b3duZXI= KG1zZw== IENsaW50b24= Tm9u CWV4 IHZvbHVtZQ== IEV2ZW50QXJncw== LUw= IERpbQ== IE1hcnQ= IGN1cnNvcg== IGltcGxlbWVudGF0aW9u dXJyZWQ= IGxhcmdlcg== KTsKCgo= Jys= LnRyYW5zZm9ybQ== IHVwbG9hZA== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== RHJhdw== bmVs CWZsb2F0 cXJ0 IE5ldHdvcms= IHRpdA== QXhpcw== LmFuZHJvaWQ= IGNvbXBsZXRlZA== IG11cg== IGNvbHVtbnM= eGM= IHN1cHBseQ== aW1pbmFs IHNwcg== PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== IHVuaXRz KHU= bWk= cmVwbGFjZQ== W2tleQ== 4Lk= YW50aWM= IHBheW1lbnQ= LEI= IEFwcGxl Z2lu UmVxdWlyZWQ= Iys= bGFuZHM= IHNxdQ== IGZhY3Rvcg== ZGVj IHN0cmVuZ3Ro IGJveQ== IGJhbGFuY2U= IHNvdXJjZXM= c2NyZWVu LXRvcA== IEFtYXpvbg== IGhpZGRlbg== 0LXRgg== X2NsaWVudA== IGVhdA== LmRpc3BsYXk= IMK7 IHRyaWdnZXI= YW5hZ2Vy IHRybw== IGNsYWltcw== Zm9yZA== IENvbXBhbnk= IGdpZnQ= LDo= X2FwcA== aGFuZGxl IHByb2R1Y2U= L2xpYg== NTEy IC0q CXNldA== J107 YXJj YW5kZXI= IEVuZ2luZQ== IGF0dHJpYnV0ZXM= dGFzaw== PD0= KE4= IHdhcm0= d2hpY2g= IEZvcmU= YWdub3N0 bXlz IHRhbA== IFNhbA== Z2k= IFByaW50 IFRSVUU= INC+ LlVJ IGZsYXNo cm9wZXJ0eQ== LmxvY2F0aW9u IE1pbGw= Ymk= Y29udHI= LnJlcXVlc3Q= IFNhbQ== IG5lZ2F0aXZl a2l0 IHNldHQ= LnByaW50U3RhY2tUcmFjZQ== YWJl CWk= IGJ1cm4= IHNvY2lldHk= Q2FjaGU= IFNlY3VyaXR5 Lm1vZGVscw== IFdBUlJBTlRZ X3Vw Y2VpdmU= IGNsaWVudHM= LlRy IHByb3ZpZGluZw== IHJvdXQ= bWF0ZXJpYWw= IHx8Cg== IFNlcg== IE9mZmljZQ== RlRXQVJF ICck IGZvYw== IGV4Y2VsbA== IGNhdA== bm9ybWFs IGRldGVybWluZQ== CXVpbnQ= UGFuZQ== IGVtcGxveWVlcw== IFRleGFz IHRyYWZm IFJlcG9ydA== YW50YQ== IEJveA== IGRqYW5nbw== IHBhcnRuZXI= RUI= TElORQ== IGZlZWxpbmc= IGNpdmls KGZsb2F0 U3Fs IHdvdWxkbg== LmluaXQ= LmxlZnQ= LXY= X2xldmVs J30= QUY= IGxvYWRpbmc= IE9ubHk= IGNvb2tpZXM= IEds Q08= IHN0cmF0ZWd5 KCcuLw== IHNoaXA= cG9zZXM= IHNpZ25hbA== IGFscGhh LnBvcA== UmFkaXVz IHJlcGxhY2U= X0RJUg== Y291bnRlcg== YnNlcnZhYmxl ZWxh V2VpZ2h0 aGFzaA== Ym9zZQ== Zng= IEVtYWls IHJlZmVy bG9jYWxob3N0 X1JP aXF1ZXM= U3RlcA== IGFoZWFk KFZpZXc= IFNlcnZpY2Vz IEpzb24= ZXNzb3I= IHB1bg== IGFwcHJvcHJpYXRl YWtlcnM= b3Nlbg== cG9zaW5n IGFnZW50 ZmM= IHRyYW5zZmVy IGludmFsaWQ= IFJlc2VhcmNo VmVydGV4 IGdheQ== IGpvdXJuYWw= W3g= ICIiLAo= IFdlbGw= LlRhc2tz U3BlYw== IG9s IHNwZW5k IEF1c3RyYWxpYQ== TWF0Y2g= Lmp1bml0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== IE1BWA== aXphYmxl Y2x1c2l2ZQ== X3ZhbGlk IHF1YXJ0ZXI= eWFu MDA1 IEVkaXQ= YXJkZW4= PW5ldw== IGZyYWc= Qml0 emk= YWluZQ== dWRk Lk9iamVjdA== ZGVidWc= IGNhc2g= X0lN IGVlbg== IGNvbW1lcmNpYWw= IFZpZGVv bG9hZGVy IGZpeGVk IGFwcGxpY2F0aW9ucw== IF8s IFJ1c3NpYQ== aXRlY3Q= Xyg= IEJsb2Nr IHNhbg== IFRvbQ== IHBlcmhhcHM= IHNpZw== bGV2YW50 IGNvcnBvcg== YXRhc2V0 cm9uaWM= eGU= IGV0aA== U29tZQ== cG9w X09L IHRlbmQ= LlJlcw== X2FuZA== IHJldmlld3M= IHdpbGQ= MTE3 IGRlZ3JlZQ== Lk8= Lm9iamVjdHM= X2FyZ3M= bmls IGRpc2FibGVk UGFyZW50 IG5vdGVz ICIiCg== KHN0YXRl aXN0cmljdA== IGxvZ2dpbmc= LklP IE1hbA== RE0= IHhtbA== IFJvYmVydA== ZWxlbg== bGF5b3V0 Zm9s J10pKQ== LGI= IEplcg== ZmlsZW5hbWU= IGZhbg== IEN1c3RvbQ== PSIi IERpZQ== QnVuZGxl LnV0aWxz IHRyaXA= TUI= IHNvZnQ= X01PREU= IGFwcGxpY2FibGU= IHVwcGVy RVJWRVI= X2Fs X0xPRw== SGVyZQ== d3A= IFNlcnZlcg== IENsaWVudA== IGNoZW0= U2Nyb2xs IGhpZ2hlc3Q= IFNlbGVjdA== ICJA IFdoeQ== U2Vj aGVlbA== T3BlcmF0aW9u IGNvbm5lY3RlZA== aXJtZWQ= IGNpdGl6 IENoZQ== IGZvcmNlcw== IHd3dw== Um9vdA== QU5DRQ== TWFueQ== aWNpcA== cmdhbg== MjIw IFRvcg== IFByZXNz IE1vcg== LWxpbmU= dWxlZA== Plw= IHRodXM= IFJlZ2lzdGVy aG9s IENoaW5lc2U= IHBvc3RlZA== IG1hZ24= YWJpbGl0aWVz IGRpc2Vhc2U= IHJlbWFpbnM= IFByb2Y= LWZvcm0= IGNpbg== b3JnYW4= aWNhdGU= IHN0cmVzcw== XSo= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= X2NvbnRleHQ= b3JyeQ== IGRpZWQ= bWF0 IHN0YXJ0cw== Lk1lc3NhZ2U= IHJ1bnM= IGd1aWRl IHdhcnJhbnR5 ZW50aWFscw== ZGljdA== IFNpemU= dWxlcg== IHJlc3BvbnNpYmxl X1NFVA== IGNvbnRhaW5pbmc= IFByaWNl fHw= MzUw RlM= IGVtcA== X2J1dHRvbg== KHVpbnQ= IHN1ZmY= cHRo IGRlZmluaXRlbHk= cHV0ZQ== IG1hcmtldGluZw== IFdI IFNpZQ== Kz0= T0xPUg== IGNvbnN1bHQ= IHNpZ25lZA== IHNlcXVlbmNl bGVl IHJlcXVpcmVtZW50cw== aHk= RXhwcmVzcw== TVQ= c2V5 IHVsdA== 5a4= ZWxsaWdlbmNl IGFuYWx5 IGRyZXNz ZW5naW5l IEdyZWF0 IEFuZHJvaWQ= IEFsZXg= bW9kZQ== RGljdGlvbmFyeQ== LkRhdGU= 5L0= VklDRQ== IGZhbWlsaWVz IFJ1c3NpYW4= IFRpbWVz LmNhbGw= JCg= UHJvZmlsZQ== IGZvbGRlcg== Y2hlcw== IGxlZ2lz X3Jvdw== dW5lcw== 2YQ= IH0pLg== QXNzZXJ0 YWdlbg== IEhhbmQ= SXRlcg== IGJpZ2dlc3Q= b3JlYWNo IHBvbGlj IHBlcm1pc3Npb25z IHNob3dlZA== IEVsZW1lbnQ= IHRvcGlj 4oCU4oCU cm9hZA== IEJhbms= cmVjb3Jk IHBhcnRuZXJz IFJlZg== ZXNzaW9ucw== IGFzc2Vzcw== VVNU IFBhcnR5 cHJvZHU= TEM= IHVs LmZvcm0= aGlkZQ== Y29weQ== VVRG IFNPRlRXQVJF DQoNCg0K IExpbg== dW5h dWdhcg== IGFkbWluaXN0cmF0aW9u IG9wZW5pbmc= IHNjYW4= IGNvbnRpbnVlZA== Y29tcG9uZW50 LnNw IGhhcHBlbnM= dW1teQ== IFBS LkZpbGU= IERvd25sb2Fk TG9hZGluZw== ZGk= IHdhaXRpbmc= X0FERA== VGFi LnF1ZXJ5U2VsZWN0b3I= IGVjb25vbXk= IEZyZW5jaA== dHh0 IGZhbnQ= XzsK SG9sZGVy U0g= MDA0 IG51bXB5 IHN0cmVldA== IG1hbGU= XE1vZGVs YW5naW5n MzMz IEJpbGw= IHByZXZpb3VzbHk= Qkk= IFNlY3JldA== IG1pc3Q= IEZpZWxk dXBz IFByb2Nlc3M= IGtlcHQ= IE9U IHRyYWRpdGlvbmFs Lmk= YW1pbg== IGhlbHBz QW55 b3JpZ2lu aWx0ZXJz anU= ZGVzYw== IEFjY291bnQ= ICkNCg== a3RvcA== b2xseQ== IGZz IOo= IHV0 IGNlbnRyYWw= KHRlc3Q= LkFu IHNhdGlzZg== R1I= IEZ1bGw= IGhlYXQ= aWJlcg== IG9udG8= bW9z U2NoZW1h IGZhY3Rvcnk= Ii4k YXdz U3RhdGVtZW50 KHRhcmdldA== CW5ldw== LmJl IGd1ZXN0 IG1hbA== QVJZ IHJlYWNoZWQ= IG1vdXNl IGNoYWxsZW5nZQ== CWRvdWJsZQ== IFRlbQ== IHRlcnJvcg== IGV4dHJhY3Q= X1RP IHNlcGFyYXRl IG1pcg== aGVscA== IGNhcGFjaXR5 IFByb3BlcnR5 a2Fu X2NyZWF0ZQ== IExpZ2h0 LnBhcmVudA== IHVuZGVyc3RhbmRpbmc= IGVhc2llcg== IHw9 IGVuaA== IGZhdA== IHByb3Rlc3Q= YW1t X0FU LW9m aWxz IE9o IHBzeWNo ICQu aW5kcw== IHJlbGF0aXZl c2hvcA== c2hvcnQ= IFNhbmQ= MjEw dWVzdGlvbg== IGZlYXI= LwoK LmNvbnRleHQ= IHNjaG9vbHM= IHNlcnZl em9uZQ== X2Ri IG1ham9yaXR5 ZXhhbXBsZQ== IGxhbmc= CSAg UmVnaXN0ZXI= ZW5kbw== IHByb2Nlc3Npbmc= X3RlbXBsYXRl LXVzZXI= IGVn Q09N IEJsdWU= aXJv IHJlbW90ZQ== IElU IyEv IHJlZGlzdHJpYg== MTI0 cmF6 IFNpbmNl IFR1cg== MTM1 QmFja2dyb3VuZA== PT09 IHJlZmxlY3Q= IHByb3M= Y21k IHdob20= Q29tcGF0 IEFyZQ== SWRlbnRpZmllcg== IFRob20= X3BvcnQ= Z3U= IG1vbml0b3I= cm0= IHBhdGllbnQ= dmVydGVy IGdhaW4= LXVp SW5zdA== IGRpZXM= MTE4 QXJlYQ== X2ZpbHRlcg== IGdyYXQ= IHJlYWxpdHk= b3JkaW5hdGU= b2x2ZWQ= Q29udGFjdA== IGNvbXBsaWFuY2U= X29y IFZhcg== ZGw= IGFwcGVuZA== R0VS KG1heA== LnJlbmRlcg== IGR5bmFtaWM= b3JkaW5hdGVz X29wdGlvbnM= X2NvbHVtbg== IGJhdHRlcg== c3BhY2U= TGE= IFNvdXJjZQ== L2Jpbg== IGRvcw== IEJvYXJk IFRocmVhZA== IEFM KGNvbmZpZw== MTQ0 IE1lcg== IG1pbGVz X2hlYWRlcg== RVRIT0Q= aXp6 IGJlbmVmaXQ= IGludGVncg== KGN1cnJlbnQ= dWxv LmRlZmF1bHQ= IERpdg== IHRvbg== b3Ro ZXJ2YXRpb24= ZWRvbQ== IGJhYnk= Y2VpdmVk LnRvcA== cmlvcml0eQ== IExvY2Fs cmlhZ2U= IGF0dGFja3M= IGhvc3BpdGFs MTY4 IGZlbWFsZQ== IExvZ2lu IEZsb3I= IGNoYWlu YXNoaW9u VGV4dHVyZQ== U2F2ZQ== IGZhcm0= LmNvbnRhaW5z LlRlc3Q= IGtub3dz IGdlbmVyYWxseQ== aXBlbGluZQ== IG1lYW50 ZW5jaWE= IG5pY2h0 IGNvbnRlbnRz UE0= Y2hlZHVsZQ== KGxpbmU= Q0c= am9i IFJlYWw= dWVy ZmlybQ== INg= ZXRybw== ImAK IHNwZWVjaA== IHRocg== Zm9yZWFjaA== IHdhcm4= CWw= IGhlYXZ5 PGxp TmU= IGludmVzdGlnYXRpb24= TWF0aA== LXRpdGxl IGNodXJjaA== IGRlc3BpdGU= Y2hhaW4= IHdoYXRldmVy YXJpYW4= Zm4= IG1ldGE= fSkKCg== VUZG IHJlZ2FyZGluZw== X1NVQ0NFU1M= bWVz IEludGVudA== IHJlc29sdmU= cG9zcw== aXJh Zm9yY2U= b2ljZQ== w6I= IHBt IHVwZGF0ZXM= QXJy INE= dGVzdGluZw== IHRvd2FyZA== bnRheA== 64s= IGxpc3Rlbg== IGdvYWxz SW5zdGFuY2VTdGF0ZQ== RHI= IHJhcmU= IHRyYWls S2V5cw== Q2Fs Q2Fy IFBlb3BsZQ== CWxvY2Fs Y2xhc3Nlcw== UmVmZXJlbmNl LmZvckVhY2g= ZW1i YWN0aXY= IHByaW0= cmVkaWN0 IHJhZA== 5pWw LkJhY2s= IHNwcmVhZA== IGNsb2Nr IHZpcg== ZWRpdG9y IGVmZm9ydHM= IGJyYW5jaA== IGluZHVzdA== IG1vdG9y IGFtYg== IGRhdGV0aW1l IHJlbmNvbnQ= IENocmlzdGlhbg== IEFtZXJpY2Fucw== ZnVsbA== IGZtdA== Lm1haW4= IGNhdXNlZA== X3VwZGF0ZQ== IENvbnRlbnQ= QVRDSA== IGJhdGg= IEVhY2g= IHJhZGlv YWNobWVudA== dXp6 U3VibWl0 IHJlc3RyaWN0 YWJpbg== IExvYWQ= IGV4dGVuc2lvbg== IGVzc2F5 IGhhdA== YXZpb3Vy dG9CZQ== Ijpb IG9mZmVyZWQ= IHZpbGw= KGRvdWJsZQ== MTE5 5pel YmM= X2ZyZWU= IE1pc3M= IEJlcg== IOg= IExpa2U= IGhlbHBlZA== LmdldE5hbWU= X0FM IHNwaXJpdA== IEFwYWNoZQ== d3M= IHRoZXJlZm9yZQ== KHBhcmFtcw== X2ltZw== IHBlYWNl IGluY29y IEVYUEVDVA== IG1pbm9y aXBlcw== CWRhdGE= c2VsZWN0b3I= Y2l0eQ== dHJpZQ== LmJhc2U= X2ZyYW1l IG9wZW5lZA== L2pzb24= TFk= bnU= LkRl dGY= bWFyZ2lu LlBhcnNl IHBp IGVx YmQ= RmllbGRz IFRyZWU= IGJhbg== aXN0YW4= CiAgICAgICAgCg== CWds IHByb2R1Y2Vk c3lzdGVt TWFyaw== X2hhc2g= IGJn IGNvbnN0aXQ= IExlYWd1ZQ== IG1pc3Npb24= X2Zvcm1hdA== KFsK Y2x1c2lvbg== ISI= 0Lc= YnJlYWs= CXN3aXRjaA== IHRoZXI= VHJhbnNmb3Jt IGZvb3RiYWxs LWxpbms= cm91dGU= LmF1dGg= IGJhZw== b3ZlcnM= IGVuYWJsZWQ= IHJhYw== KEk= Q1I= YW5jaW5n IG1hbmFnZWQ= X3E= TkdUSA== IG1hYw== IEF1dG8= YW1lbnRl ICcnLA== LkFwcGVuZA== IHBpbg== Lml0ZW0= YWNraW5n IG9jY2Fz cGVyc29u IHRp LlJlZw== IGhhdmVu IGdsYXNz ICI8Lw== IFNpbXBsZQ== UHJpbnQ= IHN1cnJvdW5k Tk8= 44CCCg== ICAgICAgICANCg== IE1hbnk= ICJf IHdlZWtlbmQ= IHNvbWV3 LnBhcmFtcw== c21hbGw= QVRFRA== IHBsdWdpbg== ZmllbGRz IEluaXRpYWxpemU= b29u YXRpbGU= eWU= IHZvdXM= TEFH IG9sZGVy IGdhbQ== IGV4dHJlbWVseQ== IGhldA== ZW51bQ== IFNFVA== eGZm IHRpbWVy L2luZGV4 IGNyaXRpY2Fs Um93cw== X2FyZ3VtZW50 IGV4ZWN1dGU= IHNob3dpbmc= LnhtbA== LWxpc3Q= Um9sZQ== dHlwZW5hbWU= X21ldGhvZA== dGhhdA== Y2hlcg== IOKG WFQ= IHRob3VzYW5kcw== CW4= IHJlc3A= X3ByaWNl b2x1dA== QWc= IFR3bw== IGJlY29tZXM= IGh1cw== LlVzZQ== dGhlbWU= dXJi IC8qCg== ZXJpYWxpemU= QVJO IGxvc2U= TG93ZXI= IHZlbA== IGRlZmVuc2U= Y29uZGl0aW9u IGJlcw== IGRyeQ== IHNjcm9sbA== LlNob3c= SUVM 0L7RgA== IFJlc3Q= V2hlcmU= b29kcw== IEplcw== IHdpcmU= X0lORk8= IHN0cmluZ3M= Z21lbnQ= IG1hdGNoZXM= IGVsZWN0cmlj IGV4Y2VsbGVudA== IENvdW5jaWw= aWRhZGU= IHd4 cHVzaA== X2VudHJ5 IHRhc2tz IHJpY2g= c2E= IFNtaXRo VU5DVElPTg== UG9pbnRlcg== cGVjdGl2ZQ== MTMx IHdpZGdldA== aXN0YQ== IGFnZW5jeQ== IHNpY2g= b2xvZ2llcw== IHRyaWFs YWx5c2lz LmNoZWNr QVJL IG9uQ2hhbmdl YWJvdXQ= Jywk KHZhbA== IHBsYWNlZA== X05P IGRhbg== LmVxdWFs CSAgICAg IHdlYXRoZXI= LmdhbWU= IGRlc3RpbmF0aW9u X1VTRVI= aWVjZQ== IHByb3ZpZGVy Lmxhc3Q= cGxleA== Tm90ZQ== L2pz IHDDpQ== IHBsYW5uaW5n YXR0cmlidXRl UFJP YXRjaGVz IDwt IHNlZWluZw== IGNhbmNlbA== X2luZA== LmtleXM= IHZpc3VhbA== IEN1cnJlbnQ= IENvbGxlZ2U= IFJvY2s= IGFncmVlbWVudA== IFN0b3Jl b3Zpbmc= IGNvcm5lcg== YW1waW9ucw== SVNF Rmlu IHByb3RlY3Rpb24= IGZp UGxheQ== cGx1Z2lu KX0= LmZyYW1l LXo= IHRyYW5zaXRpb24= aWdpbg== IGNhbmRpZGF0ZQ== IFVuaW9u X3ZhbHVlcw== KG1hcA== Y2xl IHRyZW5k d2lkZQ== YXJlbg== TG9j VVRI IEJheQ== IHNtYWxsZXI= aXVz MTQx d2VsbA== IGNyaW1pbmFs IGNvbmZsaWM= YmVydA== X0lOVA== IGludmVzdG1lbnQ= Y3VzdG9t IFNlc3Npb24= X3dyaXRl YW5pYQ== IE1hc3M= X0VR X05PVA== IHZpb2xlbmNl QXJndW1lbnQ= X2VtYWls IGJlbG9uZw== X2Z1bmN0aW9u IGVuZW15 ZW1h IEFkZHJlc3M= LmVtcHR5 IGlubmVy IENvbnRhY3Q= TG9hZGVy PGlucHV0 IENB bG90 IHBpY3R1cmVz IFN1cHBvcnQ= X25hbWVz MTg4 TGF5ZXI= IENsaWNr U3Vt w6Y= IExvb2s= dW91cw== TGli RmxhZ3M= dGVhbQ== RVA= MTg5 aGF0 b3ZlcnJpZGU= YXBzZWQ= IGxhYmVscw== cXVpcw== IFN0cmVhbQ== X2RldmljZQ== IENvbW1pdA== KHJvb3Q= In0= LmlzRW1wdHk= MTI2 CU0= IGFuZ2xl IEJlY2F1c2U= JSUlJSUlJSU= IGFpbQ== IHN0aWNr c3RtdA== YWdyYXBo YW5zd2Vy IGNsaW4= IElzbA== LmV4dA== IElOVA== IHN0eWxlcw== IGJvcm4= IHNjcg== IGV4cGFuZA== IHJhaXNlZA== VGV4dEJveA== SUxM LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t SFRUUA== MTMy Pik= X2NoYXI= cmVzb3VyY2U= IGVwaXNvZGU= ICdf IEVz IEVhcnRo wqDCoA== VVBEQVRF MTMz IFNvdQ== dWlz dHlwZXM= IG1hcw== IGZhdg== IGNvbnN0cnVjdA== X3JhdGU= ZXJhcw== IHwK cm9wZXJ0aWVz IGV4dGVybmFs IGFwcGxpZWQ= IHByZWZpeA== b3RlZA== bGVycw== IGNvbGQ= IFNQ IENodXJjaA== IE91dHB1dA== bG9zZWQ= 55o= aWZpY2F0ZQ== b3BlcmF0aW9u aGVyaXQ= eEZG LmVudg== X2Vycg== b3No RGlyZWN0aW9u Q2FuY2Vs IEZyYW5r IGZpbmRpbmc= LikKCg== IHJvdXRlcg== 44O7 c2Vz IGNyb3c= PT0n IHNhbmQ= IHJpZA== aXR1cmU= IGVudHJl IG9ic2Vydg== IHZhYw== 8J8= LVQ= QXJ0 bmlnaHQ= LnNlYXJjaA== IGV4Y2hhbmdl IGRpc3RyaWN0 Lm9z IGRlcGFydG1lbnQ= IGRvY3VtZW50cw== IGNlbnR1cnk= IE5leHQ= SG9zdA== IEtJTkQ= IHN1c3A= LVA= cmVuZA== LmVt dWl0ZQ== aXN0ZXJz KGpzb24= IEFubg== d3Q= YXRp IEhUTUw= d2hlbg== RGlyZWN0b3J5 IHNodXQ= PGE= ZWR5 IGhlYWx0aHk= IHRlbXBlcmF0dXJl IEdlbg== IG1ldGFs IHN1Ym1pdA== IERP IGF0dHJhY3Q= IHt9Owo= IFdvcmQ= IGxs IHNlZW1lZA== a28= SUVE IGxhYm9y LkNvbnRleHQ= IGFzc2V0 eW91 IGNhcnM= IENvbHVtbg== IHLDqQ== IHNxdWFyZQ== IE5TU3RyaW5n 4oCdLA== YXBlcw== Li4uCg== IHRoYW5rcw== KHByb3Bz IHRpY2s= IGV4cGVyaW1lbnQ= IHByaXNvbg== dHJlZQ== LXRleHQ= IElPRXhjZXB0aW9u LXdpZHRo X1NUQVRVUw== ZmFzdA== LWJvZHk= LWhlYWRlcg== IGd1YXI= Y3JldGU= IFRpbQ== IGNsZWFybHk= IFJlcHVibGljYW4= IGp1c3RpZnk= 0LjRgg== CSAgICA= Y2FjaGU= Oy8v IHByZXNlbmNl IGZhY3RvcnM= IGVtcGxveWVl XSkp TWVtYmVy IHNlbGVjdG9y Ym9y IE1leA== 55qE dXRleA== X3RhZw== YWlsdXJl IE5ldA== IHJlbGk= RUc= IGZwcmludGY= IHRlZW4= bG9zcw== IGxlYXZpbmc= MTM0 RGVsZWdhdGU= IGJlYXQ= IG1pbnV0ZQ== c3Vic2NyaWJl IHJlZGlzdHJpYnV0ZQ== Q29uc3RhbnRz IGNhbmNlcg== L3s= Qkw= IHNwYW4= IENoaWxk Q2VudGVy IGVhcnRo WVM= IExldmVs IHNlYQ== LnN1cHBvcnQ= LmlubmVy Lkl0ZW0= aWxsaW5n ICAgIAogICAgCg== IExhYmVs MzIw IEVzdA== KGFyZw== MTQ1 Ym9Cb3g= CWZvcmVhY2g= Y29z RmFpbGVk c3dlcnM= RWRpdG9y cm9udA== IE1Q ZXhwcg== IExpZmU= ID8/ w7Zy IGF0dGVuZA== IFF1ZQ== IHNwZWNpZXM= LUQ= IGF1cw== U3RydWN0 IGFkdmFudGFnZQ== b3N0b24= LWJsb2Nr aW5pdGlhbA== Q1JF IHRydWx5 IGNvbXBhcmU= b3JuZXk= IHNwZWN0 RnVsbA== YmVz IHZpc2libGU= IG1lc3M= c3RhbmNlcw== IGNsb3Vk X3ZlcnNpb24= IGZ1cm4= aWNhZ28= TE9X IHRyYWZmaWM= IGZvbA== cnlwdG8= IGRlY2xhcg== IHNsb3Q= IEV4dA== IEVuZ2xhbmQ= IFVuZGVy IHRh bGV0dGVy MjAz IG9mZmljZXI= IERvbmFsZA== WWVz X2pzb24= SVRhYmxlVmlldw== IFVTRQ== bXBsb3llZQ== IG9waW5pb24= IEF1dA== Ym9yZGVy IGFkdmljZQ== IGF1dG9tYXRpY2FsbHk= aXNjbw== IG1t LnZpcw== YW1s IGluaXRpYWxpemU= ICh7 IDsKCg== IGdlbmVyYXRpb24= IGJpdHM= Y2xpcHNl IHVuZg== dXRvcnM= cGx0 IGRlbHRh ZXN0cm95 aXNpcw== PGJy IGxpbWl0YXRpb25z IGVuZGVk IE1hZA== aWxt VGhlc2U= MTg3 IE1pbmlzdGVy IGNoYXJ0 RnJhZ21lbnQ= IGluZGVwZW5kZW50 WWVhcg== IGluc3Ry IHRhZ3M= QVZF IEFyY2g= c3RvcA== UHJvZ3Jlc3M= IG1p IGxlYXJuZWQ= R2U= IGhvdGVs MTUx U00= VFlQRQ== IGN5 RVJTSU9O dW5hdGVseQ== bGltaXQ= c2Vs IG1vdmllcw== IHN0ZWVs b3o= Z2I= IENhbXA= c2l0ZQ== IExvZ2dlcg== UExF 0L7QtA== LnJpZ2h0 IENvcmU= IG1peGVk c3RlcA== IHB1dHM= c3VwZXI= Um91dGVy MTg2 Lkh0dHA= MjIy bHlwaA== IENvbG9ycw== IGFuZHJvaWR4 LnN0cg== IGlubm92 IGRlY2s= Jz4K YXBlcnM= XSg= Y29udGludWU= c3BlYw== IFJvYWQ= QVNI aWxpYXI= IGNvbnRpbnVlcw== IGFwcG9pbnQ= ICMK IFZpcg== ID8+Ig== IGJpbg== fSIs Z29pbmc= ZWFjaA== QkQ= MTg1 IEFjY2Vzcw== RG9j IE1hbmFnZW1lbnQ= QkVS YXNrZXQ= LmdldEluc3RhbmNl MTI5 IGVzdGFibGlzaGVk c29ja2V0 SU5T CXZpcnR1YWw= CXJlc3VsdA== UkVBRA== X2hlaWdodA== MTUy IEZvbnQ= ICgpOwo= X2h0bWw= IG5laWdoYm9y bG9y IGdhdGhlcg== IH0pCgo= IGlkZW50aXR5 IGZhYg== cGFkZGluZw== IFJvdXRl RW51bWVyYWJsZQ== w7Q= IGZvcmNlZA== L2pxdWVyeQ== LgoKCgoKCg== cmVzZW50cw== X2xlZnQ= LlBhcmFt CXRocm93 IEhhbQ== IGV2ZW50dWFsbHk= YWNlcg== cHVi IHRyYQ== dW5pcXVl ZGVs IEZsb3JpZGE= IENsZWFu eGE= IMK3 IHZhbGlkYXRl VmlzdWFs RXhwcmVzc2lvbg== X2Z1bmM= bWVtYmVy CWg= dHJs MTM2 CUc= bmFwc2hvdA== IFByb3BUeXBlcw== dmlu MTUz XSkKCg== b3ds aWZpZXM= ICQoJy4= IENvbnRleHQ= IFRvYXN0 LktleQ== IG9mZmljZXJz L24= c24= dW5kZWZpbmVk Lml0ZW1z dXRvdw== YW1hZ2U= IGFjY291bnRz b29raWU= U2VjdGlvbg== aWNpYW5z IGFkdmlz KGlz Wzos IEZyYW5jZQ== RnVuYw== aWNpb3Vz IHRvaw== Q2hhbm5lbA== IEFE X05VTQ== IHRpbWVvdXQ= bGVtbWE= cmVtZQ== dWo= LkFs dWNsZWFy KG9z KCI8 Wwo= ZmV0Y2g= IGJhbA== IGd1aWQ= LWFsaWdu IFdyaXRl IE9uY2U= dXRvd2lyZWQ= T0RVTEU= IHBpdGNo Q0Y= Ynl0ZXM= IENvbW1pc3Npb24= IGluY3JlZA== UEVS X3Jlc3BvbnNl IExvcw== cGFyc2Vy IGFzc3VtZQ== LlJlcXVlc3Q= IFRva2Vu X3Bvc2l0aW9u IG5vbQ== LXRlcm0= IHJlbWFpbmluZw== aW9zdHJlYW0= IHBpZWNlcw== YXB5 IExlc3M= cmFuZ2U= dW1ibg== cHJpc2U= X29wdGlvbg== MjMw SW1wbA== a3dhcmdz IGJ1c2luZXNzZXM= QWxlcnQ= IHBhcnRpZXM= IENvbnRhaW5lcg== IFByaXZhdGU= IFBsYW4= IHJlZ2lzdGVyZWQ= IGpvdXI= YWNrZXI= 0LXQvdC4 Lz4= Y2hhdA== c2VjdA== IGNyZWF0aW9u b2x1dGVseQ== IGluc3RhbnQ= IGRlbGl2ZXJ5 aWNrZW4= eWVz MTYz IEZyYW5j Ymxpbmc= ZW5kYQ== Wyg= X3Jhbmdl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== IHNjaGVkdWxl Q29ubg== IHRoYW5r eGQ= IGhvb2s= IGRvY3VtZW50YXRpb24= UGFyYW1ldGVycw== SGVsbG8= dnQ= IGFydGljbGVz IHdlc3Q= ZGVmaW5lZA== LnNlbGVjdA== b2tlbnM= IFZBTA== LmZpbGU= cmVzZXQ= IG15cw== IE1B XSks IGNpdGllcw== cmVsYXRlZA== 5Zs= IGFwcGVhcmVk IHdpZA== LnBhbmVs IElucw== LmVudGl0eQ== IGRlY3Jl IExvdQ== KHRpbWU= IFRoYW5r LmNyZWF0ZUVsZW1lbnQ= IG1lbnRpb25lZA== b3VuY2U= IFRyeQ== IFdhbGw= L2ltYWdlcw== IE1lbnU= Jw0K IEVy IGNyaXRpYw== IFllYXI= KHBhcmFt IGZsbw== Tk4= b290ZXI= IF07Cg== IEFmZg== ImdpdGh1Yg== cm9vbXM= IGh5cA== Z2xvYmFs IGF2ZWM= 5pyI IGNvbXBsZXRpb24= IGNvbmQ= b255bW91cw== KHRlbXA= IHN0YXJz IHJlbGV2YW50 IGNvdmVyZWQ= IGVsaW0= X3R5cGVz KGJvb2w= IHR1 X2V4aXN0cw== IHNlY3VyZQ== IHN0b3JlZA== XS8= eEY= IENvbnRyb2xsZXI= IG1pZ3I= TUk= IERlbg== IGFubnVhbA== VUlM LWFuZA== IGNyaW1l YmVs IGtpdGNoZW4= QGc= X3Bo b3VybmFtZW50 IFNvY2lhbA== IFNwZWNpYWw= bG9nZ2Vy IHRhaWw= IHVua25vd24= ZGVk IGFwcHJlYw== KGRi Y2Y= MTU1 IGFzc2lnbg== LW91dA== IE1vbnQ= ZHA= d2lkZ2V0 IHN0b25l LXByaW1hcnk= LmdyaWQ= UmVzdWx0cw== YXp6 IGRhdWdodGVy IGN1cnI= MTc1 IGxpbg== IHNvdXRo Zm9ybXM= IE9VVA== bGV0dGU= YWtz aWd1cmU= IEVV dmFyaWFibGU= IGJyaWVm IFNjb3R0 IGNvbmZlcmVuY2U= YW5kYQ== X2xvY2s= b3JhbA== IGVpbmU= T1JT Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw== ZXNzbw== IHJpcw== IGdlbmRlcg== ZXN0aWM= TGljZW5zZQ== KG91dA== IG1z U2Vl IHdpbGxpbmc= YXpl IHNwb3J0cw== IHllcw== bHU= IHB1cnM= L2phdmFzY3JpcHQ= LXBybw== bmF2YmFy X3Byb2R1Y3Q= L2Jvb3RzdHJhcA== IGRyaXZpbmc= IMQ= IHByb3Bvcw== dWx0aXA= dXBsaWM= LmVtYWls IGFwcHJveA== KGNs IHdlYXI= IHJlcGx5 YXNzZXQ= IGljZQ== IHR4 a3I= IEdlcm1hbnk= IEdlb3JnZQ== IGNi CWVycg== TW92ZQ== IHBvbHk= dm9pY2U= fSI= IGFuaW1hbA== QXY= IExvY2F0aW9u IG5hdGl2ZQ== XVsi PGRvdWJsZQ== IG1haXM= LGludA== IHByZXBhcg== IGludGVydmFs cGxlbWVudGF0aW9u X0VSUg== IGJ1Zw== PiI= c3RhdA== IH0sDQo= PHNwYW4= IGZhaXRo IHJvbQ== cHJldg== IEVsZWN0 RmluZA== IGdvZA== b3Rvcg== Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t b3JpZ2luYWw= Q3Bw IFNlbmF0ZQ== IHBvc2l0aW9ucw== IHdlYXBvbnM= IGNvZmY= IHB1cnBvc2Vz cG9s IGltcHJlc3M= IGFuaW1hbHM= LkVudGl0eQ== KG5w IG11cmRlcg== IGBg ZmxhZw== IHNvbHV0aW9ucw== IEFjdGl2ZQ== IGJyaWdodA== LmRhdGU= IHNpdHU= 77yI LklE IHNpZQ== KSwNCg== YWt0 U3BhY2U= LmRhdA== LmluZGV4T2Y= aGFu YXppbmU= IFpl IGNyYXNo KC8= Pj0= 0LE= MTM5 aXZh LkF1dG9TaXpl IExhdA== X2V4dA== SW5pdGlhbGl6ZQ== LnJlZ2lzdGVy MTU2 T1BZ IHJldmVyc2U= X2Rpcw== J11b IHByb21wdA== b250bw== IEpvdXJuYWw= cm91dGVy IG15c3FsaQ== I2Vsc2U= KSI= LXhz bGV0cw== cGhhbg== LkxF MTM3 V2lsbA== IGFmZm9yZA== IHNraWxs LXRvZ2dsZQ== TkM= QmluZA== VFM= SnVzdA== aXRlcmFs WVA= CXVuc2lnbmVk IHdpbmQ= MTQ5 KSk6Cg== IHdhcm5pbmc= IFdhdGVy IGRyYWZ0 IGNt IHNhbQ== IGhvbGRpbmc= emlw IFNjaWVuY2U= IHN1cHBvc2Vk R2Vu IGRpZXQ= PGg= IFBhc3M= dmk= IGh1c2JhbmQ= 77+977+9 bm90ZQ== IEFib3V0 IEluc3RpdHV0ZQ== IGNsaW1hdGU= LkZvcm1hdA== IG51dA== ZXN0ZWQ= IGFwcGFyZW50 IGhvbGRz Zmk= bmV3cw== Q00= dmlkZW8= Jzon RElUSU9O cGluZw== IHNlbmlvcg== d2E= LS0+Cg== X2RlZmF1bHQ= IERhdGFiYXNl cmVw RVNT bmVyZ3k= LkZpbmQ= X21hc2s= IHJpc2U= IGtlcm5lbA== Ojok LlE= IG9mZmVyaW5n ZGVjbA== IENT IGxpc3RlZA== IG1vc3RseQ== ZW5nZXI= IGJsb2Nrcw== b2xv IGdvdmVybmluZw== XEY= IGNvbmNlbnQ= LmdldFRleHQ= IG1i IG9jY3VycmVk IGNoYW5naW5n U2NlbmU= X0NPREU= QmVo IlRoZQ== IHRpbGU= IEFzc29jaWF0aW9u CVA= YWx0eQ== X2Fk b2RpZXM= aWF0ZWQ= IHByZXBhcmVk cG9zc2libGU= IG1vcnQ= VEVTVA== MTQy IGlnbm9yZQ== IGNhbGM= IHJz IGFzc2VydEVxdWFscw== IHN6 IFRISVM= LiIK IGNhbnZhcw== amF2YQ== IGR1dA== VkFMSUQ= LnNxbA== LmlucHV0 IGF1eA== U3Vw IGFydGlzdA== VmVj X1RJTUU= LnN0cmluZ2lmeQ== ZXR3ZWVu IENhdGVnb3J5 IFst IERldkV4cHJlc3M= IEp1bA== IHJpbmc= LmVk WVk= TGV0 VGV4dEZpZWxk IGZsYXQ= X3ByaW50 IE9USEVS YWRpYW4= IGNoZWNrZWQ= ZWxl QWxpZ24= c3RhbmRpbmc= IFtdLA== IGxhYg== dWNreQ== IENocmlzdG1hcw== KGltYWdl Lm1vZHVsZQ== IGxvdHM= IHNsaWdodGx5 KGZpbmFs ZXJnZQ== 6L8= MTQ3 IFBvbGljZQ== MTQz IFJpZ2h0 IGF3YXJk IE9T IHt9Cgo= IHB0cg== b3Zlcw== aWNhdGVk 0LXQvA== IG1hbmFnZQ== b2xpZGF5 QW1vdW50 b29sU3RyaXA= dGJvZHk= TmF2 d3JhcA== QkI= IHdhdGNoaW5n YXJpb3M= IG9wdGlvbmFs X0s= IExpY2Vuc2Vk Lk1hcA== VGltZXI= IEFQ IFJldg== KG8= LGM= dW1pbg== ZXRhaWxlZA== IEh5 IGJsYW5r YWdnZXI= IFNlbGY= KClb Lm1ha2U= ZWFybg== Y2hhbm5lbA== PHByZQ== YmxlbQ== X3Bhc3N3b3Jk X3Nw aWNpbmc= ZXo= IHRoZW9yeQ== IFRlcg== MTg0 LG4= bG9nbw== IEhUVFA= KCkpKQ== LmhhbmRsZQ== PjsK V29ybGQ= IHB5dGhvbg== IGxpZg== IHRyYXY= IGNvbnZlbg== Y29tcGFueQ== IENsdWI= MTM4 VmVy QnRu IHpvbmU= cHJvZHVjdHM= IEVkdWM= IHZlcmlmeQ== IE1pbA== b25v XSk7Cgo= RU5DRQ== IHBhY2tldA== IGNlcg== IGVudW1lcg== IHBhcnM= Zm9ybWVk IG9jY3Vw dHJl IGV4ZXJjaXNl RGF5 X3N1bQ== IGFza2luZw== YXB0aW9u IG9yZGVycw== IHNwZW5kaW5n IEVSUg== LkRpcw== IFV0aWw= 4oCcSQ== XCc= Pyk= Lz4K IGVtb3Q= IGluZmx1ZW5jZQ== IEFmcmljYQ== YXR0ZXJz 2YU= LnNlc3Npb24= IGNoaWVm CQkJCQkJCQkJCQk= IHRvbQ== Y2x1ZGVk c2VyaWFs X2hhbmRsZXI= LlR5cGU= YXBlZA== IHBvbGljaWVz LWV4 LXRy Ymxhbms= bWVyY2U= IGNvdmVyYWdl IHJj X21hdHJpeA== X2JveA== IGNoYXJnZXM= IEJvc3Rvbg== UGU= IGNpcmN1bQ== IGZpbGxlZA== MTQ4 IG5vcnRo aWN0dXJlQm94 CXJlcw== 6K4= IHRlcm1pbg== IFvigKY= SVJFQ1Q= IGJlcg== ICIuLi8uLi8= cmV0Y2g= LmNvZGU= X2NvbA== IEdvdmVybm1lbnQ= IGFyZ3Y= IExvcmQ= YXNp RXhlYw== CWxldA== dmVydGlz IGRpc2N1c3Npb24= ZW5hbmNl b3V0dWJl dHlwZW9m IHNlcnZlZA== IFB1dA== CXg= IHN3ZWV0 QmVmb3Jl YXRlZ3k= Lm9m IE1hdGVyaWFs U29ydA== T05U aWdpdGFs V2h5 IHN1c3Q= IOc= YWJldA== IHNlZ21lbnQ= IFtdLAo= IE11c2xpbQ== IGZpbmRWaWV3QnlJZA== Y3V0 X1RFWFQ= IE1hcnk= IGxvdmVk IGxpZQ== IEpP IGlzc2V0 bW9udGg= IHByaW1l dGk= IENhcm9s VXNl MTQ2 IFBvcA== IFNhdmU= SW50ZXJ2YWw= ZXhlY3V0ZQ== ZHk= IElyYW4= X2NvbnQ= CVQ= IHBoYXNl Y2hlY2tib3g= d2Vlaw== IGhpZGU= IHRpbA== IGp1 Q3VzdG9t YnVyZw== L00= VE9O IHF1YW50 IHJ1Yg== aXhlbHM= IGluc3RhbGxlZA== IGR1bXA= IHByb3Blcmx5 KExpc3Q= IGRlY2lkZQ== YXBwbHk= SGFz IGtlZXBpbmc= IGNpdGl6ZW5z IGpvaW50 cG9vbA== U29ja2V0 X29w IHdlYXBvbg== Z25vcmU= IEV4ZWM= b3R0ZW4= IE1T ICgt IFJldmlldw== IGV4YW1wbGVz IHRpZ2h0 ISg= RFA= IE1lc3NhZ2VCb3g= IHBob3RvZ3JhcGg= MTY0 VVJJ w6l0 bG93 IEdyYW5k LnBlcnNpc3RlbmNl IG1haW50YWlu IG51bXM= IHppcA== aWFscw== IEdldHM= cGVn IEJ1ZmZlcg== fn5+fg== cmFzdHJ1Y3R1cmU= IFBM dWVu b2JieQ== c2l6ZW9m IHBpYw== IHNlZWQ= IGV4cGVyaWVuY2Vk IG9kZA== IGtpY2s= IHByb2NlZHVyZQ== YXZpZ2F0b3I= LW9u LGo= IEFsdGhvdWdo IHVzZXJJZA== YWNjZXB0 Qmx1ZQ== SUNvbG9y bGF5ZXI= YXZhaWxhYmxl IGVuZHM= LnRhYmxl IGRhdGFzZXQ= YnVz IGV4cGxhaW4= KHBybw== IENvbW1pdHRlZQ== IG5vdGVk XToK RGlt c3RkaW8= MTU0 LiIsCg== X3NvdXJjZQ== MTgx IFdlZWs= IEVkZ2U= IG9wZXJhdGluZw== IGVzdGU= aXBs MzMw YWdpbmF0aW9u IHByb2NlZWQ= IGFuaW1hdGlvbg== Lk1vZGVscw== IFdhdGNo aWF0 IG9wcG9u L0E= UmVwb3J0 IHNvdW5kcw== X2J1Zg== SUVMRA== IGJ1bmQ= CWdldA== LnBy KHRtcA== IGtpZA== PgoKCg== IHlhbmc= Tm90Rm91bmQ= 0YY= bWF0aA== QGdtYWls IExJTUlU cmVkaWVudHM= IHZlbnQ= YXZpZ2F0ZQ== TG9vaw== IHJlbGlnaW91cw== IHJhbmQ= cmlv KEdM X2lw dWFu aWNpZW5jeQ== IENoYW5nZQ== Pg0KDQo= IEVudGl0eQ== IHJlbmNvbnRyZQ== IFJldA== cGxhbg== w6lu Qk9PTA== dXJpZXM= dHJhaW4= RGVmaW5pdGlvbg== PT09PT09PT09PT09 eno= NDUw QW5pbWF0aW9u IE9L X21lbnU= LmJs X3Njb3Jl IGFjYWQ= KFN5c3RlbQ== IHJlZnJlc2g= Jz0+JA== LkdyYXBoaWNz YW1lbnRv cGlk dGM= IHRpcHM= IGhvbWVz IGZ1ZWw= 4pY= X2hlbHBlcg== ICANCg== IFJvb20= LkNsb3Nl X2F0dHI= IE1vdW50 IEV2 YXJzZXI= X3RvcA== ZWFo IERlbGV0ZQ== 44CN dWtl IHVzYWdl YXJpYQ== X2Rldg== IHRleHR1cmU= IGNvbnZlcnNhdGlvbg== ZXBlcg== QmVhbg== ZG9uZQ== bm9uYXRvbWlj IFNlY29uZA== IHNob290aW5n X3ByZQ== Q29tcG9uZW50cw== IF0KCg== X18s c3RpdHV0aW9u LkNoYXI= PigpOwoK IHByZXNlbnRlZA== IHdh b2tlcg== LQoK aW5lcg== IGJlY29taW5n IGluY2lkZW50 QXR0 MTYy IHJldmVhbGVk Zm9yYw== IGJvb3Q= LnBhZ2U= RW51bWVyYXRvcg== MTY1 Xy0+ UGhvdG8= IHNwcmluZw== LiIs IERpY3Rpb25hcnk= QkpFQ1Q= IGxvY2F0aW9ucw== IHNhbXBsZXM= SW5wdXRTdHJlYW0= IEJyb3du IHN0YXRz cXVhbGl0eQ== 0YU= LWRpcw== IGhlbHBpbmc= IHBlZA== MjI0 KHNl IFdobw== YWxpYW4= aW50ZXJuYWw= IGZ0 PigpLg== LT57 IG1pbmU= IHNlY3Rvcg== IGdybw== IG9wcG9ydHVuaXRpZXM= IMO8 IG1w IGFsbGVnZWQ= IGRvdWJ0 TW91c2U= QWJvdXQ= X3BhcnQ= IGNoYWly IHN0b3BwZWQ= MTYx bG9vcA== ZW50aXRpZXM= IGFwcHM= YW5zaW9u IG1lbnRhbA== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= RlI= IGRlZmVuZA== Y2FyZQ== IGlkZWFs L2FwaQ== dXJmYWNl MDEx IGVsZQ== dWxhdG9y IFJpZ2h0cw== YW5ndWFnZXM= IGZ1bmRz IGFkYXB0 QXR0cmlidXRlcw== IGRlcGxveQ== b3B0cw== IHZhbGlkYXRpb24= IGNvbmNlcm5z dWNl Lm51bQ== dWx0dXJl aWxh IGN1cA== IHB1cmU= LkZvcmU= MTgz IEhhc2hNYXA= LnZhbHVlT2Y= YXNt TU8= IGNz IHN0b3Jlcw== ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== IGNvbW11bmljYXRpb24= bWVt LkV2ZW50SGFuZGxlcg== LlN0YXR1cw== X3JpZ2h0 LnNldE9u U2hlZXQ= IGlkZW50aWZ5 ZW5lcmF0ZWQ= b3JkZXJlZA== ICJb IHN3ZQ== Q29uZGl0aW9u IEFjY29yZGluZw== IHByZXBhcmU= IHJvYg== UG9vbA== IHNwb3J0 cnY= IFJvdXRlcg== IGFsdGVybmF0aXZl KFtd IENoaWNhZ28= aXBoZXI= aXNjaGU= IERpcmVjdG9y a2w= IFdpbA== a2V5cw== IG15c3Fs IHdlbGNvbWU= a2luZw== IE1hbmFnZXI= IGNhdWdodA== KX0K U2NvcmU= X1BS IHN1cnZleQ== aGFi SGVhZGVycw== QURFUg== IGRlY29y IHR1cm5z IHJhZGl1cw== ZXJydXB0 Q29y IG1lbA== IGludHI= KHE= IEFD YW1vcw== TUFY IEdyaWQ= IEplc3Vz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LkRF IHRz IGxpbmtlZA== ZnJlZQ== IFF0 IC8qKg0K IGZhc3Rlcg== Y3Ry X0o= RFQ= LkNoZWNr IGNvbWJpbmF0aW9u IGludGVuZGVk LXRoZQ== LXR5cGU= MTgy ZWN0b3Jz YW1p dXRpbmc= IHVtYQ== WE1M VUNU QXA= IFJhbmRvbQ== IHJhbg== LnNvcnQ= IHNvcnRlZA== LlVu NDAx X1BFUg== aXRvcnk= IHByaW9yaXR5 IEdhbA== IE9sZA== aG90 IERpc3BsYXk= KHN1Yg== X1RI X1k= IENhcmU= bG9hZGluZw== S2luZA== X2hhbmRsZQ== LCw= cmFzZQ== X3JlcGxhY2U= LmFkZEV2ZW50TGlzdGVuZXI= IFJU MTcy IGVudGVyZWQ= Z2Vycw== IGljaA== KHN0YXJ0 MjA1 L2FwcA== IGJyb3RoZXI= TWVtb3J5 T3V0bGV0 IHV0Zg== cHJlYw== IG5hdmlnYXRpb24= T1JL IGRzdA== RGV0YWls IGF1ZGllbmNl IGR1cg== IGNsdXN0ZXI= dW5jaGVk IF0s IGNvbWZvcnRhYmxl LnZhbHVlcw== IFRvdGFs IHNuYXA= IHN0YW5kYXJkcw== IHBlcmZvcm1lZA== aGFuZA== KCJA 5a0= IHBoaWw= aWJy dHJpbQ== IGZvcmdldA== MTU3 IGRvY3Rvcg== LlRleHRCb3g= Mzc3 aWNvbnM= LHM= IE9w U20= U3RvcA== CUxpc3Q= CXU= Q29tbWVudA== X1ZFUlNJT04= Llh0cmE= UGVyc29u cmI= TE9C ICAgICAgICAgICAgICAgICAgICAK IENlbnRyYWw= Mjcw SUNL cmFx IHB1dHRpbmc= IG1k IExvdmU= UHJvZ3JhbQ== Qm9yZGVy b29y IGFsbG93aW5n YWZ0ZXI= IGVudHJpZXM= IE1heWJl XSku IFNob3J0 KVw= Lm5vdw== ZnJpZW5k IHByZWZlcg== IEdQSU8= b3Npcw== IEdhbWVPYmplY3Q= IHNraXA= IGNvbXBldGl0aW9u X21hdGNo bGljYXRpb25z X0NPTlQ= Lmdyb3VwQm94 IGFscw== NjY2 Ildl X2Vx bGFu X3NlYXJjaA== IE11c2lj YXNpcw== IGJpbmQ= IElzbGFuZA== cnVt KEU= IHNlYXQ= VmlkZW8= IGFjaw== cmVlaw== PXsoKQ== IHJhdGluZw== IHJlc3RhdXJhbnQ= NDU2 REVY KGJ1Zg== cHBpbmc= dWFsaXR5 IGxlYWd1ZQ== MTc2 IGZvY3VzZWQ= YXBvbg== JGRhdGE= Q0xVRA== Q0xVRElORw== IGFic29sdXRl KHF1ZXJ5 IHRlbGxz QW5n IGNvbW11bml0aWVz IGhvbmVzdA== b2tpbmc= IGFwYXJ0 YXJpdHk= LyQ= X21vZHVsZQ== IEVuYw== LmFu LkNvbmZpZw== Q3Jl IHNob2Nr IEFyYWI= SUVOVA== L3Jl IHJldHJpZQ== eWNsZXI= aXNh IE9yZ2Fu LmdyYXBo IO0= IEJBUw== RW51bQ== IHBvc3NpYmx5 0YDQsNA= IEphcGFuZXNl IGNyYWZ0 IFBsYWNl IHRhbGVudA== IGZ1bmRpbmc= IGNvbmZpcm1lZA== IGN5Y2xl L3g= R0U= IGhlYXJpbmc= IHBsYW50cw== IG1vdXRo cGFnZXM= b3JpYQ== IFJlbW92ZQ== X3RvdGFs IG9k b2xsYXBzZQ== ZG9vcg== IGJvdWdodA== IGFkZHI= QVJDSA== X2RpbQ== ZGRlbg== IGRlY2FkZXM= UkVRVUVTVA== IHZlcnNpb25z ZmlyZQ== MDA2 IG1vdmVz ZmI= IGNvZmZlZQ== LmNvbm5lY3Q= IFJvdw== IHNjaGVtYQ== U2NvcGU= LVR5cGU= IGZpZ2h0aW5n IHJldGFpbA== IG1vZGlmaWVk VEY= RmlsZXM= bmll X2NvbW1hbmQ= c3RvbmU= INGC X3RocmVhZA== IGJvbmQ= IERldmVsb3BtZW50 IHB0 Rk9STQ== cGxldA== IGlkZW50aWZpZWQ= Y3Bw MjA2 MjI1 IGNvZGluZw== b2tlZA== IE1hc3Rlcg== SURUSA== IHJlc2lkZW50cw== cmVkaXQ= IFBob3Rv PS0= dW50ZQ== YXRldXI= MTU5 X1NUQVRF IFNpbmc= IHNoZWV0 LnZhbA== b3JzZQ== IGhlcnM= IGRldGVybWluZWQ= Q29tbW9u IHdlZA== X3F1ZXVl UEg= IEF0bA== Y3JlZA== L0xJQ0VOU0U= IG1lcw== IGFkdmFuY2Vk LmphdmE= LlNo R28= a2lsbA== ZnA= X3NldHRpbmdz IHBhbA== IHRydWNr IGNvbWJpbmVk ICIkew== IENvcnBvcg== IGpvaW5lZA== IEpvc2U= IEN1cA== dW5z ZXN0aXZhbA== bGV2aXNpb24= IGJyb2tlbg== IG1hcnJpYWdl IFdlc3Rlcm4= IHJlcHJlc2VudHM= IFRpdGxl IHNz LkFzcw== b25nb29zZQ== aWVudG8= PD4oKTsK IGFic29sdXRlbHk= IHNtb290aA== VEVSTg== IFVubGVzcw== V29yZA== IG1lcmdl aWdhbg== IFZvbA== IG5u LmdldElk INC3 MTcx IHNleHk= IHNlZWtpbmc= U2luZ2xl LnRoaXM= MTc5 IGtvbQ== Ym91bmQ= OyI= IGZvbnRTaXpl X2Rm IGluanVyeQ== KEg= IGlzc3VlZA== X0VORA== OnNlbGY= MDIw IHBhdGNo IGxlYXZlcw== IGFkb3B0 RmlsZU5hbWU= 44CQ IGV4ZWN1dGl2ZQ== IEJ5dGU= XSkpCg== IG51 b3V0aW5n Y2x1ZGluZw== LVI= Lm9wdGlvbnM= IHN1YnN0YW50 YXZheA== IEJVVA== IHRlY2huaWNhbA== IHR3aWNl IG3DoXM= IHVuaXZlcnM= eXI= IGRyYWc= IERD IHNlZA== IGJvdA== IFBhbA== IEhhbGw= Zm9yY2VtZW50 IGF1Y2g= Lm1vZA== bm90YXRpb24= X2ZpbGVz LmxpbmU= X2ZsYWc= W25hbWU= IHJlc29sdXRpb24= IGJvdHQ= KCJb ZW5kZQ== KGFycg== RnJlZQ== KEAi IERpc3RyaWN0 UEVD Oi0= UGlja2Vy IEpv ICAgICAK IFJpdmVy X3Jvd3M= IGhlbHBmdWw= IG1hc3NpdmU= LS0tCg== IG1lYXN1cmVz MDA3 IFJ1bnRpbWU= IHdvcnJ5 IFNwZWM= CUQ= 44CR ICl7Cg== IHdvcnNl KGZpbGVuYW1l IGxheQ== IG1hZ2lj IFRoZWly b3Vs c3Ryb3k= IFdoZXJl Mjgw IHN1ZGRlbg== IGRlZmU= IGJpbmRpbmc= IGZsaWdodA== IE9uSW5pdA== IFdvbWVu IFBvbGljeQ== IGRydWdz aXNoaW5n KCcuLi8= IE1lbA== cGVhdA== dG9y IHByb3Bvc2Vk IHN0YXRlZA== X1JFUw== IGVhc3Q= MjEy IENPTkRJVElPTg== X2Rlc2M= IHdpbm5pbmc= Zm9saW8= TWFwcGVy IFBhbg== IEFuZ2U= LnNlcnZsZXQ= IGNvcGllcw== TE0= IHZt 5Y0= IGRpY3Rpb25hcnk= U2Vn MTc3 ZWxpbmVz IFNlbmQ= IGlyb24= IEZvcnQ= MTY2 LmRvbWFpbg== IGRlYmF0ZQ== Tm90TnVsbA== ZXE= YWNoZXI= bGY= CWZtdA== IGxhd3k= MTc4 xJ8= IE1lbg== IHRyaW0= KE5VTEw= ICEh IHBhZA== IGZvbGxvd3M= Il1bIg== cmVxdQ== IEVw LmdpdGh1Yg== KGltZw== ZXRv KCdc U2VydmljZXM= dW1ibmFpbA== X21haW4= cGxldGVk Zm9ydHVuYXRlbHk= IHdpbmRvd3M= IHBsYW5l IENvbm5lY3Rpb24= LmxvY2Fs dWFyZA== fVw= PT0i YW5kb24= IFJveQ== d2VzdA== MTU4 aWdpbmFs ZW1pZXM= aXR6 Jyk6Cg== IFBldGVy IHRvdWdo IHJlZHVjZWQ= IGNhbGN1bGF0ZQ== IHJhcGlk Y3VzdG9tZXI= IGVmZmljaWVudA== IG1lZGl1bQ== IGZlbGw= LnJlZg== IENhcw== IGZlZWRiYWNr U3BlZWQ= KG91dHB1dA== YWpl IGNhdGVnb3JpZXM= IGZlZQ== fTs= IGRlbGV0ZWQ= cmVo IHByb29m RGVzYw== QnVpbGQ= IHNpZGVz LkFycmF5TGlzdA== LSU= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 2LE= Lm1hdGNo 0LvQuA== IGZlZWxz IGFjaGlldmU= IGNsaW0= X09O IENE IHRlYWNoZXI= X2N1cnJlbnQ= Ym4= X1BM aXN0aW5n RW5hYmxl R0VO IHR2 IHNvY2s= IHBsYXlz IGRpc2NvdW50 IEtF IERlYnVn Rm9yZQ== IElyYXE= IGFwcGVhcmFuY2U= TW9u IHN0eWxlZA== IEh1bWFu aW90 IEhpc3Rvcnk= IHNhYw== IENvbGxlY3Rpb24= IHJlY29tbWVuZGVk LlNlbGVjdGVk IG9yZ2FuaXphdGlvbnM= IGRpc2NvdmVyZWQ= Y29ob2w= YWRhcw== IFRob21hcw== TWF5 IGNvbnNlcnY= IGRvbWlu IEZvbGxvdw== IFNlY3Rpb24= IFRoYW5rcw== VXNlcm5hbWU= IHJlY2lwZQ== IHdvbmRlcmZ1bA== LnNsZWVw X2lm CQoJCg== b3Jubw== IHJ1 X3RhcmdldA== LiIi 4KY= RXZlbnRBcmdz IGlucHV0cw== IGZpZg== IHZpc2lvbg== Y3k= IFNlcmllcw== KSgoKA== IHRyYWRpbmc= IG1hcmtlcg== QmVnaW4= IHR5cGljYWxseQ== IGNhdXNlcw== ZHJvcGRvd24= X0RFQlVH MjYw IGRldGVjdA== Y291bnRyeQ== ISIpOwo= CVI= YXBweQ== IGNyZWY= KCc8 Ij0+ IExF cmVhZGVy IGFkbWluaXN0cg== w7U= dWNrZXQ= IGZhc2hpb24= LmNoYXI= aXphcg== IGRpc2FibGU= IHN1Yw== IExpdmU= aXNzdWU= IG1ldGFkYXRh ZmxhZ3M= IPCf IGNvbW1pdHRlZA== IHZh IHJvdWdo ICcnJwo= IGhpZ2hsaWdodA== X3ZhcnM= Vk8= IGVuY29kaW5n LVo= X3NpZ24= JCgiIw== IHJhaW4= cmVhdGVzdA== IEVORA== U2VsZWN0aW9u IGNhbmRpZGF0ZXM= IHNhdg== LkVtcHR5 IGRlY2lzaW9ucw== IGNvbGxhYm9y cmlkZ2U= ZmVlZA== cmVzc2lvbg== IHBlcnNvbnM= Vk0= MDA4 ZWdh X0JJVA== QWNjb3JkaW5n YWNrZWQ= IGRvbGxhcnM= X2xvc3M= IENvc3Q= fSIK Tm90aWZpY2F0aW9u IHByb3N0aXQ= IGF1dGhvcml0eQ== LnJlYw== IHNwb2tlcw== IFRvZGF5 aXN0YW50 IEhlYWQ= 4oCdLg== ZXJ0YWlubWVudA== Y2Vhbg== Y3VsYXRl IHZlbg== SG93ZXZlcg== X2Fycg== IHRva2Vucw== R3JhcGg= IEp1ZA== IFZpcmdpbg== IFNlcmlhbA== dW5uaW5n TXV0YWJsZQ== YWdlcnM= LmNzdg== IGRldmVsb3Bpbmc= IGluc3RydWN0aW9ucw== IHByb21pc2U= IHJlcXVlc3RlZA== X2VuY29kZQ== LyI= IEljb24= dWlsdA== LWRheQ== IGludGVsbGlnZW5jZQ== LklT IE9ic2VydmFibGU= IEhhcmQ= Qm9vbA== MjEx aWRlbnRpYWw= LkFuY2hvcg== IHNlbGxpbmc= Q0k= QUdFUw== dGxl YnVy VUZGRVI= Ulk= IGJpZ2dlcg== IHJhdA== IGZhbW91cw== IHR5cGVuYW1l IGV4cGxhaW5lZA== fX0K IG51Y2xlYXI= LU4= IGNyaXNpcw== IEVudGVy IGFuc3dlcnM= LyR7 L3Bs IHNlcXU= X25leHQ= bWFzaw== IHN0YW5kaW5n IHBsZW50eQ== IENyb3Nz CXJldA== ZHJv IENhc3Q= MTY3 PXRydWU= IENocmlz aWNpbw== IE1pa2U= RGVjaW1hbA== YWRkQ29tcG9uZW50 TGVu IGNvY2s= ICN7 VVJO PHRy IGF1dGhvcml0aWVz UmVzb3VyY2Vz LUg= Qm90dG9t MDEy X3F1 cHV0ZXI= ZXN0ZXJkYXk= RGlzcGF0Y2g= c2luY2U= IGZhbWlsaWFy LGk= VkM= IG1lbnQ= LEM= IGZyZWVkb20= IHJvdXRlcw== IEJ1eQ== IGNvbW1hbmRz IG1lc2g= L0M= IFNldHRpbmdz LXN0eWxl IHdpdG5lc3M= IGNsZQ== IHVuaW9u ZWZhdWx0 YXJldA== IHRob3VnaHRz IC0tLS0= X3Byb2Nlc3M= X3Vz aW5nbHk= VUVT VG91Y2g= INC8 X29wZW4= IFZlYw== IHJld2FyZA== LkNsaWNr Lzo= IG5pZQ== Q2hhbmdlcw== TW9udGg= 77yf IGV4ZWN1dGlvbg== IGJlYWNo KEludGVnZXI= CWE= Lyc= LkZvbnRTdHlsZQ== IGFib3J0 IFNpbmdsZQ== KGlzc2V0 IGRw IH19PC8= IE1h MjE0 LlJvd3M= IFBldA== JSk= cmFuZA== 6YA= UnVsZQ== IGhlbA== MDIx UklURQ== IHF1aWV0 IHJhdGlv IENPTkRJVElPTlM= b3NvcGg= IElM IGFkdmVudA== Y2Fw Ozwv IFVTQg== RHJpdmVy IG91cnM= IEpvaG5zb24= Lks= X2RlbGV0ZQ== LnE= CXN0cg== L2NvbW1vbg== CXN0cmluZw== IFBERg== YWN0cw== LkFjdGlvbg== IFF1ZXJ5 LnJlc3BvbnNl IEdpcmw= IHByb2Nlc3Nlcw== PEludGVnZXI= aW1v IGFkZHM= IGVudGlyZWx5 IHdhc2g= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== IGFuaW1hdGVk IHByb2ZpdA== ZW5jaW5n L1M= IFN5bQ== IG1hbnVhbA== RG93bmxvYWQ= ICghJA== IG1vdGlvbg== d2VicGFjaw== LWJvdHRvbQ== IGdyYXR1aXQ= UEc= KDos IGVyYQ== IGhv IEppbQ== cXVpcg== IEJBU0lT w6Fu REVS IGV4cGVuc2l2ZQ== X2Nv Qm91bmRz V2VsbA== IERlbW9jcmF0aWM= IOKGkg== LlJlbQ== X1NZ bmFtZXM= IFZp IGlzaW5zdGFuY2U= XCI+ ICo9 IFBT IGRhbmdlcm91cw== W3A= T01F T3RoZXI= IFN0cmluZ0J1aWxkZXI= UG9pbnRz aGVhZGluZw== IGN1cnJlbmN5 IHBlcmNlbnRhZ2U= X0FQSQ== IGNsYXNzaWM= dGhlYWQ= IE1P RkU= SWR4 YXdhaXQ= IMOo IGFjY2lkZW50 IHZhcmlhbnQ= IG15c3Q= IExhbmQ= IEJyZQ== IGhhcm0= IEFjYw== IGNoYXJnZWQ= aW9uZXM= VmlzaWJpbGl0eQ== YXJyeQ== IExhbmd1YWdl IHdhbGtpbmc= Ii4KCg== aWZlcg== IGxlYWRlcnNoaXA= LkZyb20= eW5hbQ== IHRpbWVzdGFtcA== aXB0 IEhhcw== UkVGRVI= IEl0cw== IGxpc3RlbmVy VVRF MjEz X2Rlc2NyaXB0aW9u IGV4cGVyaWVuY2Vz IGNyZWF0ZXM= UlM= Y2FydA== YmxhY2s= IGNob2ljZXM= d2Fy NzUw ICcnJw== IG9yZGVyZWQ= IGV2ZW5pbmc= IHBpbA== IHR1bg== IEJhZA== KGFwcA== cmFuZG9t IGV4cGxpY2l0 IGFycml2ZWQ= IGZseQ== IGVjb25vbQ== LW1haWw= IGxpc3Rz IGFyY2hpdGVjdA== MjM0 IFBheQ== IGRz IFNvbA== IHZlaGljbGVz SHo= LWNvbQ== IGtpbmc= X2VxdWFs IEhlbHA= IGFidXNl NDgw MTY5 LS07Cg== IGV4dHI= IGNoZW1pY2Fs 5L8= IG9yaWVudA== IGJyZWF0aA== IFNwYWNl KGVsZW1lbnQ= d2FpdA== REVE aWdtYQ== IGVudHI= IHNvYg== LW5hbWU= IGFmZmVjdGVk aWth IGNvYWw= X3dvcms= IGh1bmRyZWRz IHBvbGl0aWNz c3ViamVjdA== IGNvbnN1bWVy QU5HRQ== IHJlcGVhdGVk U2VuZA== ICNb IHByb3RvY29s IGxlYWRz dXNldW0= RXZlcnk= ODA4 MTc0 SW1wb3J0 KGNvdW50 IGNoYWxsZW5nZXM= IG5vdmVs IGRlcGFydA== Yml0cw== LkN1cnJlbnQ= IGAkew== b3Rpbmc= KFw= IGNyZWF0aXZl IGJ1ZmY= IGludHJvZHVjZWQ= dXNpYw== bW9kdWxlcw== QXJl LWRvYw== bGFuZ3VhZ2U= X2NhY2hl IHRvZA== Pz48Lw== b21ldGhpbmc= IGh1bg== 5bo= YXRlcnM= SW50ZW50 IGltcGxlbWVudGVk IENhc2U= Q2hpbGRyZW4= IG5vdGlmaWNhdGlvbg== UmVuZGVyZXI= V3JhcHBlcg== T2JqZWN0cw== dGw= LkNvbnRhaW5z UGx1Z2lu LnJvdw== IGZvcmc= IHBlcm1pdA== IHRhcmdldHM= IElG IHRpcA== c2V4 IHN1cHBvcnRz IGZvbGQ= cGhvdG8= fSwNCg== IGdvb2dsZQ== JCgnIw== IHNoYXJpbmc= IGdvb2Rz dnM= IERhbg== UmF0ZQ== IE1hcnRpbg== IG1hbm5lcg== bGll LlRoZQ== SW50ZXJuYWw= IENPTlRS TW9jaw== UklHSFQ= ICd7 IGNvbnRyb2xz TWF0 IG1hbmQ= IGV4dGVuZGVk T2s= IGVtYmVk IHBsYW5ldA== IE5vbg== LWNo KSIs ZXBhcg== IGJlbGlldmVk IEVudmlyb25tZW50 IEZyaWVuZA== LXJlcw== IGhhbmRsaW5n bmlj LWxldmVs c2NyaQ== WG1s QkU= dW5nZW4= IGFsdGVy W2lkeA== UG9w Y2Ft ICgoKA== IHNoaXBwaW5n IGJhdHRlcnk= aWRkbGV3YXJl TUM= IGltcGw= b3RhdGlvbg== IExhYg== PGZvcm0= CW5hbWU= IEdhbWVz cmF5 RXh0cmE= VHdv KHBsYXllcg== IExlcw== wrA= IGNoYXJzZXQ= IGpvdXJuZXk= ZXRpbmc= 5pg= 4pQ= 55So IGRpbg== IHBlcm1hbg== IHNvbHZl IGxhdW5jaGVk IG5pbmU= IHNlbmRpbmc= IHRlbGxpbmc= LnBhc3N3b3Jk IE1hdHJpeA== ZXJpYw== IGdyYWI= LnU= IExpYnJhcnk= IGRlYnQ= SU5L LmZpbmRWaWV3QnlJZA== IGZyZXF1ZW5jeQ== LmFk X1RFU1Q= IG5lZ290 IEFmcmljYW4= c2VuZGVy xaE= R2xvYmFs MTcz IGV4cGVydHM= KyspDQo= IGRlcGVuZGluZw== Z3JheQ== IGp1ZGdl IHNlbnRlbmNl bG9zdXJl QWM= IHRyYWNl RWRnZQ== IGZyaWVuZGx5 IGNvbmNlcm5lZA== YmxvZw== IGNsYWltZWQ= fSc= aW50ZWdlcg== X3RyZWU= CWNvbnRpbnVl eGk= IGFjY2VwdGVk X29uZQ== IEVkdWNhdGlvbg== dWJsaXNoZWQ= Z29u YXBwb2ludA== b3V0cw== IG1pbmluZw== IHNvbmdz IGhlcnNlbGY= IGdyYW50ZWQ= IHBhc3Npb24= IExha2U= IGxvYW4= dWVudA== Y2hhbnQ= IGRldGFpbGVk ZXhjZXB0 X2NtZA== IEhF UmVsYXRlZA== enQ= J30sCg== IHNwZWNpZmljYWxseQ== U3RhdGlj IGNhcnJpZWQ= QU5T XCI6 Q3JlYXRlZA== IGN1bA== XS0= X2FwaQ== RlA= IHNpdHRpbmc= ICIiKQ== CWdvdG8= IEVxdQ== IGFzc2F1bHQ= a2lucw== YW5jZXI= b2dlbg== IHZvdGVycw== IFByb3Q= RGVzY3JpcHRvcg== 44O8 LkFzc2VydA== YnNpdGVz b3N0ZXI= LW1lbnU= IGFybXM= LkNsaWVudA== LmJhY2tncm91bmQ= YXZpdHk= IHZ1bA== X01BU0s= IGhvdXNpbmc= IGJlYXI= X2l0ZXI= cGlyZWQ= IG1hcmtldHM= IFN0dWRlbnQ= IHRpY2tldA== IG1pbGxpb25z ZmxhdGVy KT0= IHJlY292ZXI= IEZvcmNl IEJvdGg= IHZpY3RpbQ== IERpc2M= cmVwb3J0 IGZvdXJ0aA== IEFzc2VtYmx5 L3VzZXI= TnVsbE9y dGV4dGFyZWE= IGF0aA== IChb IGNoYW5uZWxz IEp1c3RpY2U= Y2hvaWNl TE9CQUw= ZXhlYw== ZW1hbGU= IGVsZW0= X2xl IHJlc3BvbnNpYmlsaXR5 IFR3 SUNBVElPTg== IGVsc2VpZg== IGZv YXN0cw== IHRyZWF0ZWQ= c2Vu IFZpY3Q= c3VtZXI= X0JBU0U= IGFzdA== Pnt7 IFJlc291cmNl IFN0YW5kYXJk IFByZW0= dXBkYXRlZA== aXZhbGVudA== IGFzc2V0cw== X3RlbXA= IGludGVyZXN0cw== IGhhcmR3YXJl IFJvbQ== IFNoYXJl ICcnCg== ICos IFRha2U= IEltYWdlcw== X0NIRUNL KHR5cGVvZg== IEp1bg== XDxe IGxpcXU= IHdvcnN0 eW1ib2xz CQkJICAg IGRyaXZlcnM= IERvY3VtZW50 ZW5v IFRlY2hub2xvZ3k= IGFwcHJvdmVk dW1wcw== IHNub3c= Zm9ybWFuY2U= X0FTU0VSVA== dWl0cw== MjA3 2YY= IGRpZmZlcmVuY2Vz LlZpc2libGU= CQkJDQo= IFBz X2ZldGNo IHRvZG8= LicsCg== IHNlbA== dXJlcnM= aW52YWxpZA== IHR3ZWV0 VkVM IHJlc2VhcmNoZXJz IHNwcmludGY= IFJP IHBlbA== LlRyYW5z IGlsbGVnYWw= ZGlhbG9n c21hcnR5 bGc= X01JTg== IGhlcm8= ZmluYWw= IHBw Lkxl IGNp CVJU IHN1Z2dlc3RlZA== cGRm YWNoaW5n IFJv IFByb3BlcnRpZXM= IFNp IGJ1eWluZw== IG11 IGxhbmRz aWZpZXJz IEZJTEU= Uk9VUA== IGhvbGRlcg== IFNvbg== IHN5bXB0 LnJvdXRl KT8= IGFyZ2M= IGZvcnQ= IGNhc2lubw== X2NhdGVnb3J5 IGZvcnVt MjE1 cHJlZml4 YXB0dXJl VHViZQ== ZW1z aW1pemU= IG51ZQ== YXVz Y291cnNl QVRPUg== KCkpLA== QWR2ZXJ0aXM= SU5HUw== IGFja25vdw== IEtvcmVh cGxpbmc= IHdvcmtlcg== UExJRUQ= aGFs IFJpY2hhcmQ= RWxlbWVudHM= CQkJIA== c3Rhcg== IHJlbGF0aW9uc2hpcHM= IGNoZWFw QUNI IFhNTA== LCY= IExvdWlz IHJpZGU= X0ZBSUw= IGNodW5r W3M= X09VVA== IGNob3Nlbg== X1s= Lyg= IEplZmY= X3Ns cHJpdg== IENhbmFkaWFu IHVuYWJsZQ== X0ZMQUc= IG5vcw== aGlnaA== IGxpZnQ= ZnVu KCl7 ZWxseQ== eWNsZXJWaWV3 X2Fz X0xJU1Q= IHJhZGk= LmdldFZhbHVl MzA0 IEFuZ2VsZXM= IFNwYW4= X2luc3RhbmNl aXRvcnM= MjA4 IG1pZ3JhdGlvbg== QUs= T2g= wq4= LnNlbGVjdGVk IEdU IGFkdmFuY2U= IFN0eWxl LkRhdGFHcmlkVmlldw== ZWN0aW9u 0Y4= cGlv cm9n IHNob3BwaW5n IFJlY3Q= SWxsdW1pbmF0ZQ== T1U= CWFycmF5 IHN1YnN0YW50aWFs IHByZWdu IHByb21vdGU= SUVX LkxheW91dA== IHNpZ25z Ly4= IGxldHRlcnM= Qm9hcmQ= Y3RybA== Ilw= IEpvbmVz IHZlcnRleA== IGph IGFmZmlsaQ== IHdlYWx0aA== CWRlZmF1bHQ= IHNpZ25pZmljYW50bHk= IGVj IHhz YWN0dWFs LnBlcg== X3N0ZXA= YW52YXM= bWFj IHRyYW5zbA== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= SXRlcmF0b3I= IG9jaA== YWdub3N0aWM= IER1cmluZw== IERFRkFVTFQ= IHRpbGw= IHNpZ25hdHVyZQ== IGJpcmQ= IE9s MzEw IEly SFM= YXZhdGFy RVNTQUdF IGVsZXY= IG10 IE5hdg== IHJlbGF4 IHBsYXRl SVRFTQ== KGRhdGU= Lm5vdA== IGdyYWRl IH0pLAo= PyIKCg== aWVuY2Vz SGlnaA== IERJUw== MjMx ZGlzYWJsZWQ= UVVJ IG5vaXNl YXV4 IFVQ ODg4 b3Nh IHZvYw== ICkp b2NvbQ== X09GRg== IERi TG9jaw== LmVjbGlwc2U= LGQ= IERyYXc= ICIo IHZpc2l0ZWQ= IOKI IHN1Y2NlZWQ= IGltcG9zc2libGU= YWlyZQ== IFR1cm4= IGRpc2g= Rkc= IHNlbnNvcg== QU5O YWJh IHN1cmc= XSk7DQo= IGZw X2Fu LUo= LUc= IEpvYg== Q29udmVydA== IEtFWQ== IGF1dGhvcnM= X3NlcnZlcg== XHI= IC0qLQ== ZmxleA== IHNvYw== UmV0 IHNhbHQ= IOKApgoK IENsZWFy KHBhZ2U= LWRhbmdlcg== IHJvb21z Y29udg== I3s= Lm9w IEFyZWE= X1ND aGVu IGJlZ2lucw== LXk= IGV4Y2l0ZWQ= IGlnbm9yZWQ= IGJvbnVz c3R1ZGVudA== IE1lbWJlcg== IHJlbGF0aXZlbHk= IExvdw== IFByb2R1 YXRld2F5 cG9zdXJl IHRoaWNr YW5pZWw= KHZpZXc= IENydXNo RXh0ZW5zaW9u SWw= ZWVk TE9D Lmlt Lkl0ZW1z IGNvbmZsaWN0 LnByZXZlbnQ= MjUy IG9uQ3JlYXRl dXY= aXNlcg== IHdhdmU= TWFy IENvbW11bml0eQ== aWNoZQ== IE5vdGhpbmc= W20= IExlZQ== cmllbmRz MjMy w6hyZQ== ISEh YW56 LnJlc3VsdA== IFNL X1BBUkFN IGRlbW9jcg== QmFja0NvbG9y LmV4aXN0cw== Ikl0 KG9wdGlvbnM= cmF6eQ== YXNlcg== XERhdGFiYXNl YWxlbmRhcg== X2Fzcw== O30K dmVydGV4 aW5lY3JhZnQ= V2FybmluZw== YXJnbw== IGFjdG9y IEluc3RlYWQ= IFVzaW5n U2VsZg== QGludGVyZmFjZQ== IHNwZWFraW5n IFBhcmlz IExJQ0VOU0U= Lm5vZGU= IEZvb2Q= RUlG IEJp LlN0YXJ0 IElC IHVuaXZlcnNpdHk= MjU0 IEhlYWRlcg== LnByb2R1Y3Q= NDA5 Q29weQ== ZXRj cmljYWw= ID4+Pg== Ym9va3M= IGFsZ29yaXRobQ== ICdfXw== KGphdmF4 IG51bWVyb3Vz U2hhcmU= SGF2ZQ== IHJlY3J1 IHByb3Zl LnN1YnN0cmluZw== aGVhbHRo 0LXQuw== IGRlY2ltYWw= IGNvbW1pc3Npb24= c2NyaXB0aW9u eEM= IHN1bW1hcnk= YXR0ZWQ= IGNsb3Nlcg== ZmluaXNoZWQ= KCkpewo= IFdvb2Q= MzAx X2ZpZWxkcw== a3U= X2l0ZW1z RmxhZw== IGNvbmZpZGVuY2U= IEZlZGVyYWw= ZHV4 IGNvbXBhdA== IHZlcnRpY2Fs 0Lk= w6hz OyI+Cg== X21hbmFnZXI= KCkpKQo= SURF OiIs MjM1 X18K IFdheQ== MjIx 0Yg= VGVtcA== IFNUUg== cml0dGVu U3luYw== IEFW IENFTw== IEd1aWQ= IGVudmlyb25tZW50YWw= IGNvcnJlc3BvbmRpbmc= CWNvbnNvbGU= IGp1c3RpY2U= IEpT IGxpdmVk Z2Fy IEdyYXBo IFN0YXQ= IGlQaG9uZQ== LmFs IEhE IG9jY3Vy IHRocmVzaG9sZA== NTA5 IG9uY2xpY2s= UkVH LkdyYXBoaWNzVW5pdA== TWV0YQ== xb4= IGN1bQ== LmdudQ== w6s= IG9idGFpbmVk IGNvbXBsYWludA== IGVhdGluZw== IHRhcg== X3Rhc2s= IG9wdHM= MjE2 KHRv UGFzcw== IHBsYXN0aWM= dGlsaXR5 IFdpbg== LnByZXZlbnREZWZhdWx0 cGlsZQ== IEdhcg== IHF1YW50aXR5 X2xhc3Q= IGdyZWF0ZXN0 RGFv X0RJUw== IFVzZWQ= IEhQ cml0aW5n U0lPTg== Ymx1ZQ== ZG9tYWlu IHNjb3Jlcw== Tm9ybWFs X2FkbWlu IEFTU0VSVA== VGhlbg== Kioq ZGlzdA== bG9u IGhhdGU= c2hhbA== SW1hZ2VWaWV3 ZGF0YWJhc2U= IHBhbmQ= IGxvZ2lj PWZhbHNl Ymc= IENvbmZpZ3VyYXRpb24= IG51cg== T0c= IG1hcnJpZWQ= Ois= IGRyb3BwZWQ= MDQw IHJlZ2lzdHJhdGlvbg== 0L7QvA== dWx0aXBsZQ== aXplcnM= c2hhcGU= LmNvcHk= IHdlYXJpbmc= IENhdGg= IGRlZGljYXRlZA== IC4uLgo= IGFkdm9j IEZhbWlseQ== IHN0YXRlbWVudHM= ZW1hdGlj YW1waW9uc2hpcA== IG1vdGl2 IEhhdmU= IGJsb3c= Sm9i Y2VydA== X3ZlY3Rvcg== aW5zdGFsbA== IENPUFk= ZW1iZWQ= RElS IFNwcmluZw== IGV4aGli MjIz Y2Ru IENvbW1lbnQ= IE9wdGlvbmFs LnBsYXllcg== IERhcms= KHBvcw== IFNob3VsZA== IGNlbnRyZQ== IEd1YXJk w7N3 IHRyb3VibGU= RU5FUg== KHVuc2lnbmVk X3NlcnZpY2U= IG5z dWxpbmc= IE1leGljbw== IE5Z bXlzcWw= IGxpYw== 5Zw= TXI= LWZs IEN1c3RvbWVy aWRp ID8+Cgo= cmlibGU= INC/0YA= IHNpemVz X1NUUklORw== dmFsaWRhdGlvbg== IEpvbg== KEh0dHA= YWRkQ2xhc3M= Tm9kZXM= IGZyYWdtZW50 IHNwb2tl IHdhc3Rl Sm9pbg== IGlsbHVzdHI= ZWxp Y2llbnQ= IGFpZA== IHByb3NlYw== Jyl7Cg== IHBhc3Npbmc= IGZhY2Vz U2hhcGU= X1o= aXRp IGFsbGU= IHJvYm90 ICAgICAgIAo= IFNwZQ== IHJlY2VpdmluZw== IERldGFpbHM= ICIp bWc= X1JFRg== IGNvbXBhcmlzb24= Kiw= IEZvdW5k X3Nlc3Npb24= KFU= L0Y= IHh4eA== TmV0d29yaw== ZGVycw== IGNhcHR1cmU= IGNvcnJl IEx0ZA== IEFkdg== W0A= IGNsaXA= TWlsbA== IFByb2ZpbGU= IGVuZGlm IG9ibGln ZGVzY3JpYmU= LmVsZW1lbnQ= cml0ZXJpb24= TEQ= ZXJlZA== IGZhdm91cg== c2NvcmU= IEZpbHRlcg== YXR0cmlidXRlcw== IGNoZWNrcw== SW5mbGF0ZXI= IFBsdXM= IHNjaWVudGlmaWM= IHByaXZhY3k= SGVhZA== IGZlYXQ= IGRlZ3JlZXM= IFBhbGU= OyI+ IGZpbG1z IEF1ZGlv IFRhZw== IEVuZXJneQ== aXRhcg== cGFyYXRvcg== IGZlbGxvdw== IGV2dA== IFRyaQ== IERBTQ== Y2xvdWQ= IFBhc3N3b3Jk IERlbW9jcmF0cw== IEFjYWQ= JGxhbmc= IHJlYg== KCkpCgo= 0L3Riw== IEJ1cg== cmVhZGNy IGhleA== MjA5 Q29uc29sZQ== Y3Rs b3VzZWw= IFdpbGxpYW0= IGF6 X1BPUlQ= IHByYWN0aWNlcw== IGFueXdoZXJl IFBvc2l0aW9u IC0+Cg== aWFtcw== LnVzZXJuYW1l cGxhY2Vob2xkZXI= IG9kZXI= IFNlY3JldGFyeQ== IGlU bW9uZA== ZXZlbnRz P+KAnQ== LlN1Yg== IGF0dGFjaGVk IG7Do28= IGVzdGF0ZQ== MzY1 LmFjdGlvbg== IGZpZ3VyZXM= IH0pOw0K IHN1YnNjcmk= LnRhZw== bmFt LnBsb3Q= bm9vbg== bGlhbWVudA== Q2hhcmFjdGVy LnRhYg== IHdpbnRlcg== IFZhcmlhYmxl IHRyZWVz IHByb3Vk KFY= X2xvYWQ= IGhpZXI= IEVjb24= IGZk IHZpY3RpbXM= UmVzdA== aWFuYQ== IGZha2U= LlByaW50bG4= IHN0cmxlbg== IHNhZA== IGJsZQ== UHJvdA== IGJ1dHRvbnM= IHRlbGV2aXNpb24= IGxvZ28= ZXh0ZW5zaW9u CWo= c3RlaW4= YWNpb25lcw== ICIiIgoK IHNpbXA= IHJlY29yZGVk IGJyaW5ncw== IHByaW5jaXBhbA== IGZlZXM= KHNvdXJjZQ== a2Rpcg== IHV0aWxz IGNvcnJlY3RseQ== Zmls IHdlbA== UGFpcg== LWJ1dHRvbg== c2NhbGU= dmVyaWZ5 W2M= IC0tLQ== IGVzY2FwZQ== aWtlcw== TG93ZXJDYXNl aWNpYW4= IGNoYXB0ZXI= IFRZUEU= IHNoYWRvdw== IGF3ZXNvbWU= V0U= ZWxpZg== IGxhbWJkYQ== IGRpc3RpbmN0 IGJhcmU= LW9mZg== IGNvbG91cg== LmFwcGVuZENoaWxk b2xlYw== YWdh LmZpbGw= CXN1cGVy IGFkag== KHBvc2l0aW9u LmdldEl0ZW0= MjQy U2hvcnQ= IHRvdGFsbHk= VkQ= IFRyZQ== X2Vw dmVtZW50cw== IFNvbHV0aW9u IGZ1bmRhbWVudA== Rm9sbG93 IGZhY2lsaXR5 IGhhcHBlbmluZw== T0Y= LnRleHRCb3g= U3Bhbg== IMKr aWRlbg== IGV4Y2VlZA== KHBhcmVudA== IGNw 57s= IGhhc24= IHByaQ== IGNvbnNlcXU= bmVu IElOVE8= SWdub3Jl IEZ1dHVyZQ== IGNhcmJvbg== IFN0ZWVs Zm10 b2tpZQ== IHNwbA== KHRpdGxl LWluZm8= IGRlYWxz IGZpeHR1cmU= ZWE= RGl2 IHRlc3RlZA== X3JldHVybg== KQoKCgo= dXBwb3J0ZWQ= IENvb2s= IHBheWluZw== IElsbA== IGFycmVzdGVk IFByaW1l X2NhbGxiYWNr PiwK ZHJpdmVy T25jZQ== YWJi X2J5dGVz IFNldHM= KE9iamVjdA== IGNj IHNoZWxs YWxv KTsvLw== KGxvZw== MjY0 Y3RvcnM= KTwv IG5laWdoYm9yaG9vZA== NDIw YWlsYWJpbGl0eQ== dm9s IHlvdXRo IHRlY2huaXF1ZXM= IFNjaGVtYQ== dWg= bWVudGU= IHJlcG9zaXRvcnk= aW1t IGNvb2tpZQ== SlM= b3ZpZXM= Ons= Q29tcGxldGU= U2luY2U= IGxhdWdo X0JP ZW5hYmxl IERvZXM= IFdhbGs= d2hhdA== a2Vz IG11bHRpcA== aW1lbnRz ZXVy IHZpY3Rvcnk= R2VuZXJhdG9y IE1vcw== cm92ZXJz IGNvbXB1dGU= IHByb3ZpZGVycw== IE1lZGlj TFA= X0NPTkZJRw== IHZldGVy c3RlcnM= X3dpbmRvdw== dW1lcmlj CQkJCQkK LlJlc3BvbnNl IHJlcGxhY2Vk LnJvb3Q= LWZyZWU= LWNvbnRhaW5lcg== IG1hdGNoaW5n IEVkaXRvcg== PSR7 IFNhZg== IHNpbmQ= KGJ1ZmZlcg== 5Yc= LmVkdQ== KV07Cg== IE5GTA== YXlh IGRvZ3M= IGRlc2lyZQ== IE1pZGRsZQ== Q2FydA== MzA2 VGhlbWU= IG1vYg== IGRpc3BsYXllZA== aWdpdA== IGFkdWx0cw== IiIi IGRlbGl2ZXJlZA== dmlzaWJsZQ== Ijp7Cg== PDw8 IEdP c2Nyb2xs eEU= IGFzc2lnbmVk IEJvb2w= IHdw IGNvbWJhdA== IEhhdw== Li0= IHN1cHBvcnRpbmc= LkNvbnRlbnQ= MzQ1 aXJjcmFmdA== IHNwaW4= IENS Lm15 4KU= dHBs IHNwYWNlcw== Pyw= Mzg0 IFN5cmlh IHBhdHRlcm5z LWJveA== IGZyYW1ld29yaw== LyU= KGxvbmc= IHRlYWNoaW5n QVJOSU5H X2tleXM= IHRhYmxlcw== VU5D aW5hdGlvbnM= LXdlaWdodA== cmFkaW8= IFBhYw== LnNlcnZlcg== LkNoYXJGaWVsZA== cmluZw== IHF1b3Rl YW5uYQ== IHdlcmRlbg== IGNyZWFt IG1hY2hpbmVz LWs= Mzc1 IHN0aW0= IFN0b2Nr cmljaw== IGltcG9ydGFuY2U= cng= w7Vlcw== 2Yg= IHN0cm9rZQ== YWdyYQ== IHRhc3Rl IERFQlVH VGhhbmtz IFJlcXVpcmVk b3Zh TWVkaWE= IHNpxJk= KGJhc2U= cG9zdHM= IGZpbGVOYW1l Q2hlY2tlZA== IGludGVycnVwdA== ICgpCg== cHl0aG9u cGFpcg== IGNpcmNsZQ== IGluaXRp X3N0cmVhbQ== IGNvbXByZWg= bGVhcm4= UHVibGlj IGh1bWFucw== IGJyaW5naW5n b2dyYXBoaWM= X2xheWVy LWxpa2U= dXBwb3J0SW5pdGlhbGl6ZQ== aWRlYmFy IHZvdGVz IGRlc2lyZWQ= TWFzaw== IHJlbGF0aW9u Lkluc3RhbmNl SGVscA== IGluc3Bpcg== IE1vbm8= Vmlld01vZGVs b21ldGltZXM= IGJhY2tncm91bmRDb2xvcg== IHJvdGF0aW9u IG1hcmk= L3Rlc3Q= SU5TRVJU U3Rhcg== cGh5 SWRz X0dFVA== IGluY3JlYXNlcw== X2Nsb3Nl MjMz X0ZPUk0= IFvigKZdCgo= YXph VEVYVA== IMOk IFZhbg== IGxpZ2h0cw== IEd1aWRl IGRhdGVz LkNvbW1hbmQ= YW1hbg== IHBhdGhz LmVkaXQ= CWFkZA== ZHg= IHJlYWN0aW9u IEJlYWNo LmdldE1lc3NhZ2U= RW52aXJvbm1lbnQ= aW50ZXJlc3Q= IG1pbmlzdGVy IHJlYWRlcnM= CUY= IGRvbWVzdGlj IGZpbGVk Q2l0eQ== IG1hcHBpbmc= IERFUw== IHJlcGFpcg== dGljcw== aXh0dXJl IG5vbWJyZQ== LklTdXBwb3J0SW5pdGlhbGl6ZQ== em8= LklzTnVsbE9y IENhcm9saW5h IERlcg== IEVWRU5U IGdlc3Q= IGhpc3Q= cmVzb3VyY2Vz IG9ycGhhbg== LkFyZQ== IEludmVzdA== UkVGRVJSRUQ= LkxvZ2dlcg== IFJvbWFu IGN1bHR1cmFs ZmVhdHVyZQ== cHRz YnQ= IGRvdA== IGRpYW0= dXNwZW5k X2FjY2Vzcw== KCl7DQo= IHN1cnByaXNl YWJpbA== IHZpcnQ= IGJvbWI= YXJvbg== X0lT IHZhc3Q= UmVhbA== ZXBlbmQ= aWN0ZWQ= IHBpY2tlZA== IEZM IFJlcHVibGljYW5z Lnplcm9z UHJlc3NlZA== c3Vw LkNvcmU= TWljcm9zb2Z0 c2VydmljZXM= YWdpYw== aXZlbmVzcw== IHBkZg== IHJvbGVz NDAz cmFz IGluZHVzdHJpYWw= IGZhY2lsaXRpZXM= MjQ1 6KE= IG5p IGJh IGNscw== CUI= Q3VzdG9tZXI= IGltYWdpbmU= IGV4cG9ydHM= T3V0cHV0U3RyZWFt IG1hZA== KGRl KXsKCg== IGZybw== aHVz IGNvbW1pdHRlZQ== 7J20 LHg= IGRpdmlzaW9u KGNsaWVudA== KGphdmE= b3B0aW9uYWw= LkVxdWFs IFBoeXM= aW5ndQ== MDMz NzIw IHN5bmM= IE5h fX08Lw== T0xVTQ== aXTDqQ== IGlkZW50aWZpZXI= b3dlZA== IGV4dGVudA== IGh1cg== VkE= Y2xhcg== IGVkZ2Vz Q3JpdGVyaWE= IGluZGVlZA== aW5oZXJpdA== IE5pZ2h0 MzAy IHJlcG9ydGluZw== IGVuY291bnRlcg== IGtpbmRz X3ByZWQ= IGNvbnNpZGVyaW5n Lig= IHByb3RlaW4= VHlw Z3JpY3VsdA== IEJhbGw= QENvbXBvbmVudA== IEVzcw== IFJ1Yg== ODAy dWxw ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== aXR1ZA== LmF0dHI= aWVudGU= IHNwZWxs IEpvZQ== RU5URVI= X2hvc3Q= aXRhbg== IG1hdHRlcnM= IGVtZXJnZW5jeQ== dWF0ZWQ= IENoYXQ= PXsn Y29udHJp YXJrZXI= 5oiQ aXBlcg== IHNjaGVtZQ== KHN0ZGVycg== ICoo Y2VpdmVy LmNvbHVtbg== IG1hcmtlZA== X0FUVFI= IGJvZGllcw== IElNUExJRUQ= R2Fw IFBPU1Q= IGNvcnBvcmF0ZQ== IGRpbWVuc2lvbg== IGNvbnRyYXN0 ZXJ2aWV3 IEVSUk9S IGNhcGFibGU= IGFkdmVydGlzaW5n dXJjaGFzZQ== IFBB IEZyYW5jaXNjbw== IGZhY2luZw== 44CM Z2l0 IGJlZXI= IHNreQ== ZG93bmxvYWQ= IEN1cg== bWM= YW5ueQ== LmZsb29y IGNyaXRlcmlh IHBhcnNlSW50 YCwK IGFzcGVjdA== IGJ1bmRsZQ== Q291bGQ= IHRhbms= LWlk IGh1cnQ= IGJyb2FkY2FzdA== T0tFTg== b3dudA== bnVsbGFibGU= Q2Fw IGFsY29ob2w= IENvbGw= IEhlbHBlcg== IEFm Lm1ldGhvZA== IHBsYW5uZWQ= cGxlcg== IFNpdGU= IHJlc2M= b21lbnQ= IEphdmFTY3JpcHQ= U0VSVkVS IHJocw== ZXJlcw== KCIs aWZp LmZpZWxkcw== IHBhcmtpbmc= IGlzbGFuZA== IHNpc3Rlcg== Xwo= Q29uc3RyYWludHM= IEF1c3Q= ZGlt X3BvaW50cw== IGdhcA== X2FjdGl2ZQ== IHZvb3I= IFBP QmFn LXNjYWxl bGFtYmRh LkRpc3Bvc2U= cnVsZQ== IG93bmVk IE1lZGljYWw= MzAz ZW50cmllcw== IHNvbGFy IHJlc3VsdGluZw== IGVzdGltYXRlZA== IGltcHJvdmVk RHVyYXRpb24= ZW1wbG95ZWU= JC4= QWN0aW9ucw== TGlrZQ== LCg= KFJlcXVlc3Q= JXM= Lk9wZW4= KSIK IHBpeGVs IGFkYXB0ZXI= IHJldmVudWU= b2dyYW0= IExB IE1hY2hpbmU= INin IGZsZQ== IGJpa2U= SW5zZXRz IGRpc3A= IGNvbnNpc3RlbnQ= YcOnw6Nv Z2VuZGVy IFRob3Nl cGVyaWVuY2U= LkJhY2tDb2xvcg== LnBsYXk= IHJ1c2g= IGF4aW9z IG5lY2s= X21lbQ== LlBSRUZFUlJFRA== X2ZpcnN0 Q0I= IFdpZGdldA== IHNlcQ== aGFy IGhpdHM= IOKCrA== IGNvbnRhaW5lZA== cmllbnQ= d2F0ZXI= TE9BRA== IFZpcmdpbmlh IEFybQ== IC4v wrs= X3Jvb3Q= IGFzc2lzdGFuY2U= W10s c3luYw== IHZlZ2V0 ZXNjYXBl aWNlcg== Ym9vc3Q= IEZsb2F0 LVc= Ki8NCg== Kj4= MjE4 ICQoIi4= LnBvcw== IGJveXM= IHdlZGRpbmc= IGFnZW50cw== PSJf IEFybXk= IGhpbnQ= dmlzaW9u IHRlY2g= IENvbm5lY3Q= IGxlZ2VuZA== IEJldA== LkJhc2U= U3ViamVjdA== IGxpdA== UmVtb3Zl ICI6 IEZpbmFs cGVhcmFuY2U= IGlUdW5lcw== IHBhcnRpY2lwYW50cw== IFB5dGhvbg== IGJ1c3k= aWVs dmVydGljZXM= IHRlbXBsYXRlVXJs IENsb3Nl SW1n IENvcnBvcmF0aW9u dGltZXN0YW1w IGV4dGVuZA== IHdlYnNpdGVz IHBvc3NpYmlsaXR5 0L7Rgg== IGvDtg== IG1lYXQ= IHJlcHJlc2VudGF0aW9u MjQx IAkJ X1NUQVJU LmFwcGx5 IFZhbGxleQ== IFN1Y2Nlc3M= SGk= IG5vYg== IElFbnVtZXJhYmxl X3NlbGVjdA== Z2Vv LiIpCg== IHR1cm5pbmc= IGZhYnJpYw== KCIiKTsK IHBlcnNwZWN0aXZl 6Zc= IFNu VGhhbms= O2o= LlBhcmFtZXRlcnM= CSAgICAgICAgICAg IGZhY3Rz MzA1 IHVudA== Lmluc3RhbmNl IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== LWVuZA== IEpPSU4= IEhlbg== IHVyaQ== 5ZCN INC90LA= IEluZm8= IGNvbmR1Y3RlZA== IMOl T1VSQ0U= IHdpbmU= Sm9obg== LkVycm9yZg== IEFnZQ== b3VuZGVk IHJlYWxpemU= MzEy IF07 IHN1YnNlcXU= LG0= KFVzZXI= aWFubw== IGFjY29tcGw= aXNw LnN0ZA== 6Yc= IEJlZA== LnNldEF0dHJpYnV0ZQ== QlI= a2VlcA== IEFMTA== IGlzb2w= YW1tYQ== UGFja2FnZQ== IG9jY2FzaW9u LXN1Y2Nlc3M= 0LXQtA== IExJTUlURUQ= c3RyaXA= KCkKCgo= aXN0cmlidXRpb24= Q29sb3Jz ICs6Kw== RGlkTG9hZA== YWxlcg== IHRpZA== IExFRA== IExpbmtlZA== IENhcnQ= KCkpDQo= X1JFQUQ= IGtpbGxpbmc= IFBIUA== ZmVjdGlvbg== IGluc3RhbmNlcw== Y3Y= Ii8+ IHNm IHRheGVz X2xvY2F0aW9u IEJpdGNvaW4= dWFibGU= cmFuaw== aWdub3Jl dHJhY2s= 0LrQsA== IHNob3VsZG4= IE9Q PT57Cg== IGtt IGhlbHBlcg== X2hlYWQ= IFdoZXRoZXI= b2Nv X2Js IHN0YXRpc3RpY3M= IGJlYXV0eQ== IHRvZw== dGlw 64uk IGNzdg== KHNxbA== c3RkbGli d2Vhaw== IGxpa2Vz xI0= IHJlcGVhdA== IGFwYXJ0bWVudA== IGVtcGg= X2VkaXQ= IHZpdA== CXR5cGU= MjE3 RXZlbg== dXRlbg== IGNpcmN1bXN0YW5jZXM= Ymlhbg== IHN1Z2Fy V2luZG93cw== 7J4= IG9ic2VydmVk L2RhdGE= IGNhbGVuZGFy IHN0cmlrZQ== IFJFUw== X3Nj Zm9ueQ== b3JlbQ== KHo= cG93ZXI= ZXRlY3Q= IFNhdA== LmRlc2NyaXB0aW9u IGdhbmc= IFNwb3J0cw== b25ncw== IEJ1bmRsZQ== LnN1bQ== b25jZQ== IGFjY3VzZWQ= IGV4cGxvcmU= IGFwcHJveGltYXRlbHk= IGxvc2luZw== dGhlc2lz IEZ1bmQ= IGRpYWdu QXV0b3dpcmVk cHJvcGVydGllcw== IF8u IGNudA== Y2VkdXJl IHl5 IGdyYW50 c29jaw== LmlubmVySFRNTA== IF0pOwo= IENPTkZJRw== PSck NTUw XV07Cg== VU5E IGdsb2I= IGRpcmU= dWZmbGU= X01FTQ== IGF1dGhlbnRpYw== Pigi IGRlY2FkZQ== IEltcG9ydA== IG9yaWdpbmFsbHk= IGpRdWVyeQ== IGluZGljYXRl IG91cnNlbHZlcw== U3c= LmxibA== ZW5lcmF0ZQ== IGJhc2ljYWxseQ== IEhvbQ== ICsjKw== IEJyaXRhaW4= IEthcg== dG9FcXVhbA== LnN0b3A= IG1vZGFs aXNp IHN1Z2dlc3Rz IGR0eXBl IHR1cg== YmY= IGNvbm5lY3Rpb25z IEJlZm9yZQ== aXN0ZWQ= bW91c2U= IHB1bGxlZA== LmJ1aWxk IGxlZ2lzbGF0aW9u IGZvcnRo cGFk ZWdv Lk5vdw== IGV4Y2l0aW5n fQoKCgo= IGNvbXBy IHNoYXJlcw== IHJpZw== Z3JlZW4= X3ZlYw== IGVudW1lcmF0ZQ== QXV0bw== aWNhdG9y IFJheQ== YXNzZQ== IGhvbGlkYXk= IG51bGxhYmxl Z3Vu X2RldGFpbHM= IHdyYXBwZXI= c2Vx IFlvdW5n anVhbmE= ICJfXw== bGljZW5zZQ== c2VydmU= Xig= aWRlcnM= LlJlbW92ZQ== cm9wZG93bg== J1M= cGlu KHRva2Vu LkRlZmF1bHQ= IHJlYXNvbmFibGU= YW1waW9u IFNvY2lldHk= IGJlaQ== ZXJ2ZXM= cmFk IEZveA== X2ltYWdlcw== IHdoZWVs Jylb IGNmZw== KEJ5 Q29uc3RydWN0b3I= IHZhcnk= LnN3aWZ0 IHByb3h5 CUg= IEFub3RoZXI= IFBlbg== IGNoZWNraW5n IGplc3Q= bWFuYWdlcg== T3JpZ2lu dWdz b2ly PjwhLS0= IGV4cHJlc3NlZA== IG1vZGVy IGFnZW5jaWVz IGlo LWhpZGRlbg== aW91c2x5 IFJvZA== IHNvbGU= TWVk LkFueQ== IHBj YmFs RXhhbXBsZQ== IFNhbGU= IHN0cmlw IENvbXA= IHByZXNpZGVudGlhbA== TW9zdA== cHV0YXRpb24= KHJlZg== IEZvdXI= X2ZpbGVuYW1l IGVuZm9yY2VtZW50 2K8= IEdlb3Jn d2VpZ2h0cw== L2w= IGFnZ3Jlc3M= IGRyYXdpbmc= YW5keQ== PEk= LWo= YWth aHJlZg== IHRlYWNoZXJz X1E= KGl0 IE1C IHRlbXBvcmFyeQ== aXJlYmFzZQ== c3RyYQ== 5pe2 6LQ= KGxhYmVs b3Vw IHRvcGljcw== IHBvcnRpb24= aWRvcw== IEpld2lzaA== IHJlY292ZXJ5 NjUw IHN0YW5kcw== I1s= IGFmdGVybm9vbg== IEFydGljbGU= X2F0dA== IGV4cGxhbg== IFBhaw== LnNldE9uQ2xpY2tMaXN0ZW5lcg== LmNoaWxkcmVu IGlr Kyg= bGFn IGRpc2s= IGNvbnRyb3ZlcnM= Ij4m YXNw IHdpZQ== IEF1c3RyYWxpYW4= IFlvdVR1YmU= QXR0cg== Y29udGFpbnM= ZHVjZQ== IE1hdHQ= MzQw YXRlcm4= IHZvbHVudGU= IG5ld3Nw VlA= b2x0aXA= IGRlbGVnYXRl X21ldGE= IGFjY3VyYXRl IEV4YW1wbGU= JSw= IERhaWx5 IGNhYmlu IFNX IGxpbWl0cw== a2lw IGFybXk= IGVuZGluZw== IGJvc3M= IERpYWxvZw== QWxzbw== PSIjIg== b3JkYW4= cm93c2U= LW1pbg== ICIm X2xvYw== VVg= IGRldmVsb3BlcnM= IGFjY3VyYWN5 IG1haW50ZW5hbmNl IGhlYXY= IGZpbHRlcnM= LlRvb2xTdHJpcA== IG5hcnI= IEVtcA== T1JERVI= IE1vYmlsZQ== LlNlcmlhbA== Lm91dHB1dA== MjQ0 LmNvbA== TWF0ZXJpYWw= dW1h IGNvbnN1bWVycw== c2hpZnQ= IHB1ZWQ= IG1pbmk= Y29sbGVjdGlvbg== IGthbg== LmNlbnRlcg== SGlzdG9yeQ== IGJlbmNo KCkpOw== aXRvcmllcw== IGNyb3dk X2NhbGw= IHBvd2Vycw== LUU= IGRpc21pc3M= IHRhbGtz IENoYW5uZWw= Zm9yd2FyZA== X2NvbnRyb2w= L3NyYw== aWVzdA== KioqKioqKioqKioqKioqKioqKioqKioq IGJldGE= KGNvbG9y X09CSkVDVA== IEFwaQ== IGVmZmVjdGl2ZWx5 Q2FtZXJh c2Q= dXNzeQ== Mjkw RGljdA== IEVmZmVjdA== aWJpbGl0aWVz IHJldHVybmluZw== IEZhcg== ICcnKQ== IG1vZHVsZXM= MjE5 aWxhdGlvbg== ICgl VFJHTA== IHN0b3Jt b25uYQ== IEVYUA== IHNwb25z IGRpc3Bs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmFsbA== 5Yw= aWduS2V5 X1VT ZXRyaWNz IGhhbmRsZXM= VEw= X2Ftb3VudA== b3dh YnJhbmQ= IFRvb2w= IHVzdWFs Llo= Y3JlbWVudA== YWRpdW0= c3RvY2s= IHNlcnZpbmc= IEJvbg== IGxpbmVhcg== IFRhcmdldA== IFJhZGlv SEw= U2hhZGVy b21hdGlj YWd1ZXM= aW5pdHk= ZGlmZg== X2l0ZXJhdG9y cXVvdA== ICwK Y2FsbGJhY2s= IHN5bXB0b21z W18= IEJ1bA== IEZlYg== dW5kbw== X2FjY291bnQ= IHR5cGVkZWY= 0LjRgQ== dHJhcw== VXNlcklk IFBlbm4= IFN1cHJlbWU= fT4= dXNlcklk MzI3 IEtpbQ== IGdh IGFydGlzdHM= 5bg= IEFic3RyYWN0 b2tlbW9u IGhhbQ== b3ZhbA== IGNoYQ== YXRlbg== 5YY= Rml4ZWQ= IHZ1bG5lcg== IFBhcmFtZXRlcnM= cXVhbnRpdHk= LkNsZWFy U2VydmxldFJlcXVlc3Q= IHlh IHNvdWw= MDgw dHJhbnNhY3Rpb24= IHNvbG8= IHBhaXJz 5pQ= IEdyZQ== X3dvcmQ= IEND IGdp emll IHNjaGVkdWxlZA== cm90YXRpb24= Z3lwdA== dWxvdXM= Ojpf IEVsbA== PCE= CQkgIA== bHA= YWhh Q29weXJpZ2h0 MDA5 IGRyYW0= MjUx IGRpYWdyYW0= IE1lbQ== IGdhcmRlbg== Q29tcA== IGF0dGVtcHRz dWZmaXg= Pigp IHBoaWxvc29waA== X3JlbA== 5bw= IHN2 LnNlY29uZA== YW50bw== Lkpzb24= IFRlbGU= X2xvY2Fs X3NlbmQ= IGFzcGVjdHM= 7Jc= SUJMRQ== IHJhaWw= IHdpZGVseQ== YXNoZWQ= aWFy aW5m dXBwZXI= ZGphbmdv X3Jlc3VsdHM= aXNzaW5n IGVxdWl2YWxlbnQ= T1VORA== IHR5 IHBvdGVudGlhbGx5 QWR2ZXJ0aXNlbWVudA== MjM4 IFJlY29yZA== Mzgw cmVzZW50YXRpb24= X3dpZGdldA== b3VuZGluZw== IHJlbGlnaW9u IGNvbnNj IExpbQ== LmFt SHRtbA== ICc6 UEFUSA== X3NwZWM= b3J0ZWQ= aWRhZGVz X3NoYXBl IGtlZXBz LlNhdmU= IExvYw== b3Jp IFRFU1Q= dW5pY2lw IHJlZ2lvbnM= IGJlbGlldmVz L2Vu cG9zaXRl eyc= cHJlcGFyZQ== X2NvbnN0 c2FtcGxl IFdpbGxpYW1z IHN0cnQ= X0dldA== IEFuZHJldw== LmFjdGl2ZQ== IGxheWVycw== VmlzdWFsU3R5bGU= YXp5 IEtu IGFjaWQ= IEFzaWE= IGV4Y2Vzcw== CW15 IGtleWJvYXJk ZW5zdXM= IGNyZXc= IG1pc3NlZA== bWFzdGVy IFdpbGQ= IG5ld2x5 IHdpbm5lcg== IHN0dWI= aWNvZGU= Lm1vdmU= RG9tYWlu IFNhcg== IGZvcmVzdA== TEVE Y2xhaW1lcg== LmV4aXQ= IFdpbmRvdw== IHJlc2lzdGFuY2U= IENIRUNL KCIt IFJ5YW4= IHBpcGU= IGNvYXN0 REVG Ly8h X29mZg== ZXhpdA== IHVsdGltYXRlbHk= aW1pdGl2ZQ== IEtlZXA= IGhpc3RvcmljYWw= IGFueXdheQ== IEphY2tzb24= b2NrZXI= RVJO IFVJTlQ= eW50YXg= RVJZ aXNtcw== IGNu IG9jY3Vycw== IDs7 VGV4dFZpZXc= QUU= L2ltZw== IHllc3RlcmRheQ== LWRlZmF1bHQ= IHRpbnk= IHByb2M= IGFsaXZl IFJFRw== LnRo ZWFyaW5n LmdldExvZ2dlcg== PGxpbms= X2xvZ2lu Rm9sZGVy YWJj bHlwaGljb24= 0L3Qvg== IG5vdGljZWQ= b2RpZ28= IGVkaXRpb24= aW1hdG9y LkVuYWJsZWQ= LnBhcnNlSW50 IHlhcmRz CQkJCQkJCQkJCQkJ IHZlcmJvc2U= 0LvRjw== X0JZ LmxvZ2lu Lio7Cg== IE1pZA== w6llcw== IGdsbw== IGJ1aWxkaW5ncw== IHpl IEl0ZXI= IHR1YmU= IFBvdA== XE0= MjUz PHRo YnJpZGdl IFNjcmlwdA== IE1vZHVsZQ== IHZhY2M= IGluc3RhbGxhdGlvbg== dnk= VmlzdWFsU3R5bGVCYWNrQ29sb3I= IFNN LnRvdGFs NjQw YmF0 IGZpbmRz IGF0bW9z U3Vidmlldw== aXphcmQ= IHJlcGxhY2VtZW50 bGljYXRlZA== YXBpcw== IGxvZ2dlZA== IExlZnQ= R3Vp X1R5cGU= dG0= UGFk IGhvdXNlaG9sZA== IHJlbGU= IHByb3Bvc2Fs X0NMQVNT MjQz Ojo6Og== IGluZnJhc3RydWN0dXJl SW5qZWN0 L2h0bWw= MjI2 IGFkcw== aXp6YQ== IG1n Y3RyaW5l JQo= PGh0bWw= LWltYWdl IGF0dG9ybmV5 PG0= KCcs IGNhbm4= IHByaW50bG4= b29zZQ== IHllbGxvdw== LmV4cA== cGF5bWVudA== IHRhYmxlVmlldw== YXdheQ== IG9wcG9zaXRpb24= IEFnYWlu IEhhbmRsZQ== IGV4Y2x1c2l2ZQ== aW5hcg== w6ly 0L7QsQ== IENPREU= ZW1wb3Jhcnk= IHJlYWN0 cGlwZQ== MjM2 Y3o= LmFjdGl2aXR5 IGxhcmdlbHk= IGRpc3M= YXh5 ZXNpcw== IFJlbg== IGNvcm4= LlVzZVZpc3VhbFN0eWxlQmFja0NvbG9y ZGF5cw== IGZydWl0 SW5zZXJ0 X2VuYw== RXN0 X2RlYw== IEx1Yw== IMO8YmVy cGFyYW1ldGVycw== UEVSVA== ZXhwcmVzcw== X3Byb2ZpbGU= VW5rbm93bg== IHJldm9sdXRpb24= LmFkZHJlc3M= X3JlcXVpcmU= IHVuaWZvcm0= IFBhY2s= bGFy IFVJVGFibGVWaWV3 IGRlcGVuZHM= VmFsaWRhdGlvbg== Y29uZmlybQ== T3duZXI= IHRyaWI= aGV0 IElkZQ== YW5zYXM= MjQ3 TGFuZ3VhZ2U= dWV0 IFBv IFN0ZXZl IGNvbnRlc3Q= X0RFRkFVTFQ= IGFwcGFyZW50bHk= UkVFTg== IGZyZXF1ZW50bHk= IHRyYWRpdGlvbg== b2NvbGF0ZQ== U0k= IEFyZ3VtZW50 Rm9jdXM= ZXJ0ZQ== IExheW91dA== IGR4 IGdlbmVyYXRvcg== IFdhaXQ= UG9saWN5 bGlnaHRz LkV4ZWN1dGU= NTU1 UHk= IGJlZHJvb20= ZWRh cmFpZA== CXNpemU= IGFuY2llbnQ= IHB1bXA= IGR3 ICghKA== IHNwZWNpZnk= KHN0YXR1cw== IEZCSQ== LmV4Y2VwdGlvbg== IHJlbWFyaw== bHltcA== YW50ZWU= VXBsb2Fk ZXJuZXQ= 6aE= aW5lbnQ= IFJlbmRlcg== ZG0= IE1lbW9yeQ== cmljaA== IFRvb2xz IGtuZQ== IHBlcm0= YmFk IGRpbm5lcg== LnJlc2V0 IGpMYWJlbA== RmVhdHVyZQ== LlNlcnZpY2U= ICh7Cg== IHJlZmVycmVk LmNsYXNzTGlzdA== MjQ4 IGluaXRXaXRo IFRleHRWaWV3 IG5laXRoZXI= IGNvdW50eQ== ICJ7 56c= IHRhY2s= Y2xhc3NOYW1l IFVTRVI= IHJlbmV3 YGA= Z2V0TmFtZQ== IGJyb3du RXJyb3Jz ZXJ0bw== IHN1c3RhaW4= U08= bGV0ZXM= IEludmFsaWQ= MjQ2 MjI3 IGVuZW1pZXM= dW5nZQ== IGV4aXN0ZW5jZQ== ZXJyYQ== CiAgCg== dXRvcmlhbA== I2E= cGF5 Y2hhcmdl IElyZQ== YXRlc3Q= IGV4cGxvcw== IGZpcmVk TkVS IFR5 aWNpb24= VXJp IG9idmlvdXNseQ== IENvbHVt ICcr IERldmljZQ== LXJlbGF0ZWQ= X0FSRw== IHZvcg== IExlc3Nlcg== X09Q U2VyaWFsaXplcg== IHVwZ3JhZGU= TGlnaHQ= IGNvZGVz Kys7DQo= IHdyaXRlcw== Zm9vZA== IMOpdA== QHNlY3Rpb24= IHRyYWNrcw== IHNlcmlvdXNseQ== Y2h0 NDMw KHNpemVvZg== IGltbWVkaWF0ZQ== IHNjaWVudGlzdHM= IHsk X25l LkFuY2hvclN0eWxlcw== IGFjY29tbW9k IEhhcnJ5 IHNpZ2h0 IFBhbGVzdA== ZXJzaXN0ZW50 INGD LWlucHV0 IGNvb3JkaW5hdGVz wrc= MjI4 V2VsY29tZQ== LmNvbmY= IGdyZXc= IGJvbGQ= IENQVQ== KG15 IHBlcmZlY3RseQ== IG1vbWVudHM= IE1vdmll LWRhdGE= eXN0YWw= X1dJRFRI MjYy IFNjcmVlbg== 5p0= IGRpc2Fw IHJlZHVjdGlvbg== LkdldENvbXBvbmVudA== X01PRFVMRQ== IGdlbmVyaWM= IGR5 YWxsZXI= IGN1cmw= IEJvZHk= IGJhbmtz LHQ= YXZn IGV2aWw= IG1hbnVmYWN0dXJlcg== IHJlY2VpdmVy Q29sdW1ucw== IGluZ3JlZGllbnRz CW91dA== cXVlcw== LkxvYWQ= IHNsb3dseQ== IFRvd24= IENlbGw= X25vcm1hbA== X3ByZWZpeA== IEFsZXJ0 KCJ7 w6Ry 4oCcVGhl IE1E IGNvdXJzZXM= YXRoYW4= 6Zk= b2Nj IFNFUg== ZXNpZ24= QWRkcg== PVsn KCIuLw== XX0= LmZvbnQ= IEluc3RhZ3JhbQ== IEJvcmRlcg== b2Rh IGhhbGw= IHJ1bQ== X2JpdA== IHNhdmluZw== X2Rvd24= UmFuZG9t X3JlZ2lzdGVy KENvbnRleHQ= IG9wcG9zaXRl Um9vbQ== WUVT 0LDQvdC4 IGVuam95ZWQ= X3J1bg== Q2xlYXI= 4oCY IEZvcmQ= b25pYw== b3N0ZW4= Il0p X2F1dGg= Ly8NCg== IHN1ZmZpY2llbnQ= TEVT IHBoZW4= IG9o X2Nzdg== IHJvdXRpbmU= LkFyZUVxdWFs YXlsb3I= IGJhc2tldA== X0NPTU0= cnlwdGVk U2lt IFNob3A= IHN0dWRpbw== YXRvcw== KFc= W3N0cmluZw== w6R0 b2dh IHNocg== IHNpY2s= QW5vdGhlcg== IGRvb3Jz X05F IFRIUkVF Lm9yZGVy cmF6aWw= IG1hcHM= X1RSVUU= dHJhbnNsYXRl IG5lYXJieQ== MjY1 IG5hY2g= TE9BVA== YmF0Y2g= MjI5 IGx1eA== YXNoZXM= YW5nZXJz 4oCm4oCm X0VWRU5U X1VQ IGFjdHM= aW52 X01FVEhPRA== Y2Npb24= IHJldGFpbg== dXRjaA== INCx IGtub3dpbmc= IHJlcHJlc2VudGluZw== Tk9U cG5n Q29udHJhY3Q= IHRyaWNr IEVkaXRpb24= dXBsaWNhdGU= IGNvbnRyb2xsZWQ= Y2Zn amF2YXNjcmlwdA== IG1pbGs= V2hpdGU= U2VxdWVuY2U= YXdh IGRpc2N1c3NlZA== NTAx IEJ1c2g= IFlFUw== LmZhY3Rvcnk= dGFncw== IHRhY3Q= IHNpZA== JCQ= IEVudW0= Mjc1 IGZyYW1lcw== fSk7 IHJlZ3Vs J107DQo= UmVnaW9u MzIx ZmZm IGNybw== KGNvbQ== PSIr U3R1ZGVudA== IGRpc2FwcG9pbnQ= UkVTVUxU Q291bnRlcg== IGJ1dHRlcg== IEhh IERpZ2l0YWw= IGJpZA== Ij57ew== aW5nZXJz IENvdW50cnk= X3RwbA== Il0pCg== L2s= ZGF0aW5n OiM= IERBVEE= eW5jaHJvbg== X2JvZHk= b2xseXdvb2Q= IHZhbG9y aXBpZW50 b2Z0 VUJM ZG9jcw== IHN5bmNocm9u IGZvcm1lZA== cnVwdGlvbg== IGxpc3Rh UmVxdWVzdE1hcHBpbmc= IHZpbGxhZ2U= IGtub2Nr b2Nz Ins= X2ZsYWdz IHRyYW5zYWN0aW9ucw== IGhhYml0 IEpl ZWRlbg== IGFpcmNyYWZ0 aXJr IEFC IGZhaXJseQ== LmludGVy LkFjdA== IGluc3RydW1lbnQ= cmVtb3ZlQ2xhc3M= LmNvbW1hbmQ= 0Yk= CW1lbQ== KG1pbg== IG90 IGNvbGxl PXM= dGltZW91dA== IGlkcw== IE1hdGNo aWpu emVybw== NDEw IG5ldHdvcmtz Lmdvdg== IGludGVs IHNlY3Rpb25z b3V0aW5l KGNtZA== KGRpcg== IExJQUJJTElUWQ== IEJsb2c= IGJyaWRnZQ== MzA4 IENW Y29udmVydA== ICIpCg== IEJlcm4= X1BP ZXZhbA== KHNldA== dG9vbA== IHBheW1lbnRz QmVoYXZpb3Vy IGNvbmNyZXRl IGVsaWc= IGFjY2VsZXI= IGhvbGU= X28= VEVHRVI= IGdyYXBoaWNz T3du Rm9ybWF0dGVy b25kZXI= IHBhY2thZ2Vz L2E= IEtub3c= T3JEZWZhdWx0 IGR1dHk= V2FpdA== 0L3QsA== X3JlY29yZA== W3Q= TWVzaA== IG9uZ29pbmc= LmJlYW5z IHRhbg== IGludGVycHJldA== YXN0ZXJz UVVBTA== IGxlZ3M= XFJlcXVlc3Q= LWZpbGU= X211dGV4 IFNhaW50 Ly8j IHByb2hpYg== KGluZm8= Oj0= bGludXg= IGJsbw== b3RpYw== CWZpbmFs X2V4cA== IFN0b3A= YXBpbmc= KHNhdmVk X3B1c2g= IGVhc2U= X0ZS cG9uc2l2ZQ== c3RyY21w OgoKCgo= 5Lu2 b2xp IGV4dHJlbWU= IHByb2Zlc3Nvcg== SW1hZ2Vz LklPRXhjZXB0aW9u IGFkZHJlc3Nlcw== cGxlbWVudGVk IGluY29ycG9y IHVzZUVmZmVjdA== X09G IERh bm9tYnJl SVJTVA== IGRpc2NyaW0= IGNvbXBlbnM= Z3JlZ2F0ZQ== YW5jZWxs YWNoZXM= IENyaXRlcmlh JHJlc3VsdA== RGVzdHJveQ== IHNlY29uZGFyeQ== V2F0Y2g= IFNlbQ== IE1jQw== IGFjYWRlbWlj VXBwZXI= Ojp+ dXRyYWw= IERvZw== YWRlZA== MjM3 VmFsaWRhdG9y IGRlcml2ZWQ= IHNldFRpbWVvdXQ= IEtlbg== IHR5cGljYWw= IEJvYg== IGJvdW5kcw== IFNlYXNvbg== IGNyYXp5 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LXJvdXRlcg== aXR0ZXN0 IE1pcg== IGVtb3Rpb25hbA== LHY= Y24= L3N0 5b0= b25vbQ== IGRlY2xhcmVk Pi4= YWlsaW5n IC8qPDw8 IG5vcm1hbGx5 KE1l ZXZpbg== bGlrZWx5 IHBvaW50ZWQ= IFN0YWNr IHdhbGxz LlZlY3Rvcg== bWVhbg== XV0K IGxpc3RlbmluZw== YWR2 IHN3YXA= SUZU 2Ko= LmFyZ3Y= dWxz PG9wdGlvbg== bm90YXRpb25z IGVtYWlscw== IFVrcg== YXN0YQ== IFRodXM= IFN0b25l IGFwcGVhbA== LuKAmQ== IHJlZ3VsYXRpb25z UHJlZmVyZW5jZXM= IFBob25l dWxm IERS IHRlY2hub2xvZ2llcw== IHBhcmFncmFwaA== IG5lY2Vzc2FyaWx5 Mzcw MDMw LmVhY2g= PGZsb2F0 cmVzYQ== IHVuZGVyc3Q= IGZpbmdlcg== cHJlc3NlZA== LWJ5 aWZmZXI= d2F0Y2g= IEJh QUlN IHdlaWdodHM= IFJvbg== Jyl9fQ== W3NlbGY= LS0tLS0tLS0tLQo= cGVyaW1lbnQ= IHRvU3RyaW5n eGlj IENhbWVyYQ== IQoKCgo= YXVyYW50 UHJlZml4 IGluc3RpdHV0aW9ucw== OmludA== IGV4cG9zdXJl cGF0dGVybg== IExpbnV4 Lm51bWJlcg== cmVkaWVudA== QXJndW1lbnRFeGNlcHRpb24= IENoaWVm In0s IGVsZWN0cm9uaWM= cm9uZw== ZXJk c3BOZXQ= cmFpdA== Lycs IE9oaW8= Q29udHJvbGxlcnM= IGNvbnRpbnVpbmc= IFRlbXBsYXRl IEV0aA== c3o= L2Vudg== RW52 JS4= YXJ0ZXJz KSgo IFRBQkxF IMOu cGVyYXR1cmU= cHJvZ3Jlc3M= UHJlcw== 6rA= aW1wbGVtZW50YXRpb24= IGJpZW4= IHN0cmVldHM= X01TRw== TmV3cw== IyMj Oi8= IGN1dHRpbmc= eEI= cmVzc2Vk X0VOQUJMRQ== bGFi IGNhdXNpbmc= XSkpOwo= YnJh eEZGRkY= aWxseQ== cGxldGlvbg== d2lsbA== X2Jhcg== IHN0cnVjdHVyZXM= IEltcA== 24w= IDw+ IC0tLS0tLS0tLS0tLS0tLS0= X0JVRkZFUg== LmRpcg== IHBsYWlu IHBlZXI= MjQ5 Z2c= b2ludHM= IHNvbWV3aGF0 IHdldA== IGVtcGxveW1lbnQ= IHRpY2tldHM= aXJtcw== IHR1cGxl c2lz JHNxbA== cmln IGNvbnZlcnNpb24= IGdlcw== IGNvbmZpZ3VyZQ== ZWdy IENh IF9fKCc= b3VzdG9u LnRva2Vu QmxhY2s= IG1hZ2F6aW5l QVc= LklO b3Npbmc= IGJyb2tl IENydQ== REVMRVRF IGRlc3Ryb3llZA== KE1hdGg= IGFwcHJvdmFs LWRvbQ== IElJSQ== dGFibGVWaWV3 IGRlc2lnbnM= IGNydXNoaW5n IGNvbnNlbnQ= ZGlybmFtZQ== b21w IGNyeXB0 Pyg= b3JvdWdo MzA3 Lm8= CWxpc3Q= YW1zdW5n LiIiIgo= ZXJyaW5n R29vZ2xl X3BhaXI= X0lOSVQ= cmVtYXJrcw== IGdlYXI= RmlsbA== bGlmZQ== fSIpCg== IHN1aXRhYmxl IHN1cnByaXNlZA== X1JFUVVFU1Q= IG1hbmlmZXN0 YXR0ZW4= IGZydXN0cg== b3ZlbWVudA== LmNsaWNr IGlp IGV4cGFuc2lvbg== aWdz UGFyc2U= LlJlZ3VsYXI= Um9i X2xheW91dA== 7KA= IHRyYW5zbGF0aW9u IEJlYXV0 QmVzdA== X0NPTE9S PGxhYmVs IGxpcXVpZA== SVRT IHByb2Q= MjM5 IG9wZXJhdGU= VUlLaXQ= IG5hdHVy YXJndW1lbnQ= X2RldGFpbA== IENlbnRyZQ== ICItLQ== IH19Ig== bG9jYWxl LnR2 X3NlcQ== IHVwY29taW5n Q2hhcnQ= IERpdmlzaW9u IGNsaW5pY2Fs Q29tcGFueQ== U2VwYXI= bGFz IEh1bg== OnM= IGhlYWRpbmc= 0L7Qsw== ICIiKTsK W2lk Ymlh IHN0cmV0Y2g= aWNpZGU= IHJlcHJvZHU= LnByb2plY3Q= bGVnZW5k ZW5kZXJz IHJlc3BvbnNlcw== IG9udA== cml0aWNhbA== IHJlZnVnZQ== IExp IDoKCg== IFRocmVl LmNvbnRyb2xsZXI= X0lOREVY X0ZPUg== XE1vZGVscw== amF4 CWV4aXQ= IOKW IGNvdmVycw== CXk= LS4= SU5ET1c= IGZhaWxz aW5jbHVkZXM= IGZhdWx0 NDQw IGx5 NDQ0 w7Fv LnNsaWNl SUxFRA== IFB1cg== IEFzaWFu X2JhdGNo Lk1heA== dmw= IENPUFlSSUdIVA== IGdpYW50 IE1hbnVhbA== IENvcHk= Q2xhc3NOYW1l SGVhbHRo Q3Vyc29y SUJPdXRsZXQ= IHR3ZQ== 5rM= X2xhYmVscw== IGNvbGxlY3RlZA== IGZ1cm5pdHVyZQ== IGRlYWxpbmc= Q29udHJvbHM= IEhvdGVs Y2tz IGNob3Nl 4pSA b2Rk U1I= 2Yo= 7IQ= IGFjY29yZA== IE1vdmU= IE1vZGU= IE1vY2s= IHRocmVhZHM= KysrKw== IE9wdGlvbnM= UmVmcmVzaA== IERpZA== J10tPg== dWNj X2NoYW5uZWw= LmFicw== IHt9LAo= IFdhbA== ZXJpb3I= IG1haW5seQ== IERyaXZlcg== Tm90Rm91bmRFeGNlcHRpb24= IGNvdW50cw== ZWFt ICY9 UXVlc3Rpb24= IEFsaQ== IGFueW1vcmU= ZGV0YWls dGFpbA== IG1pbGU= IEZhaXI= IHNvcnJ5 IHN1cnJvdW5kaW5n IGFkbQ== RGV2 IG1hcmlqdWFuYQ== IFNvdW5k IEFzaA== RkQ= VGVhbQ== LnBvcnQ= IFtdCgo= dWJibGU= IGFzYw== IGludGVudGlvbg== QWNj Y2hp dXN0ZXJz IGluc3BpcmVk c2Vn Q0xV IG1hbmlw TWV0YWRhdGE= Q29ubmVjdA== IEJlaA== IGZpbmRpbmdz IGFzc2VtYmx5 d29ybGQ= IHJlbWFpbmVk IHVpZA== KC4= IG14 TG9vcA== CgoKCgo= IGZhbnRhc3RpYw== d2hv YWtp IEJhc2lj IFlldA== IFVzZXJz aWtpcA== IGhlYWRz IE1pY2hpZ2Fu X2l0 IFRvcm9udG8= IHJlY29yZGluZw== IHN1Ym1pdHRlZA== X3ZhcmlhYmxl bWVkaWF0ZQ== LmdyYXBoaWNz IHN0b29k IHJlYXI= dmVsb2NpdHk= X01FU1NBR0U= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cm9sZXM= IFRvdXI= X3llYXI= ZW5kbWVudA== YW1wcw== IElyZWxhbmQ= bWFs IHlvdW5nZXI= IHN0cnVnZ2xl IGNhYmxl IFNETA== KCct YW5lcw== IE5lZWQ= LlJvdw== UG9s IFBI X3NjcmlwdA== YWdlbQ== IEJhcw== X3NwYWNl LmxvYw== Omk= YWRy IGVuZ2luZWVyaW5n aXRlbg== KSY= IHVr IExpdHRsZQ== X0NPVU5U eEE= QXJyYXlMaXN0 5o0= ICIiKQo= QW5jaG9y IGhhbmc= dHdpdHRlcg== IGNvbXBldGl0aXZl LnNyYw== 44GX IHRyYW5zbGF0ZQ== IENyZWF0ZXM= b29rcw== IFJvbGw= JycnCg== L3No c29tZQ== RW5jb2Rpbmc= LnJlc29sdmU= IGRlc2lnbmVy IFN0b3JhZ2U= IHph IE5ldmVy IHNvbWV3aGVyZQ== IGJveGVz LnNvdXJjZQ== IHB5Z2FtZQ== IGdyb3du LnR3 KCkpLAo= JyxbJw== IG9wcG9uZW50 KHNyYw== LmxheWVy QVBQ IEFjdGl2 IGd1ZXN0cw== IFZBTFVFUw== fTsKCgo= Lm5hdGl2ZQ== IGFtb3VudHM= LlJF IGNsb25l IHdlcmVu ICI8PA== X2Fj IGJyZWFraW5n IHJlbGlhYmxl LlBPU1Q= IFNreQ== ICcm IHNhdmVkSW5zdGFuY2VTdGF0ZQ== YXN0aW5n aWxsaW9u Y29tbWVudHM= dWx0eQ== Lm1lbnU= L2NvbmZpZw== IAoKCg== VE9ETw== IHB1cmNoYXNlZA== X2Nvcg== CWF1dG8= Q29tcGF0QWN0aXZpdHk= Y29tcGxldGU= X2dyYXBo aXNvZGVz IHNpdHVhdGlvbnM= IEhvcg== UmVjZWl2ZQ== 4oCcV2U= IGVudGl0aWVz LmFzc2VydEVxdWFscw== 0L7Qug== IFNhbnM= dmluY2U= cm9tcHQ= PQo= IC8u LlNlbGVjdA== eWx2 IGJhdHQ= QXVkaW8= IGluY3JlYXNpbmdseQ== LkJ1bmRsZQ== IGV4cGxhaW5z MDYw dGhlYXN0 Lm9mZnNldA== IGhhbA== IHRlY2huaXF1ZQ== X2xpbWl0 IGRyYXdu QVlFUg== IGZlYXR1cmVk eXl5eQ== YXRpbg== cGhlbg== YWNoZWw= IVw= bG93ZXI= IEdS IHBhZw== IFBhcnNl IHRvdQ== 5LiA RGlzdGFuY2U= SW5kZXhQYXRo IGhlbGw= c2lt VVRUT04= VXNhZ2U= ZWxlbml1bQ== IEZhbGw= ICIuJA== IE11 IGNydWM= IHNvbnQ= UkVGSVg= MzEx IGludGVyaW9y IE9seW1w LkF1dG9TY2FsZQ== cGFyYQ== QXhpc0FsaWdubWVudA== IHJpdmVy RHRv IHdpdGhkcmF3 UmVhY3Q= LWNsYXNz YmVmb3Jl X2FsbG9j Q29udGVudHM= IFdhcw== SUNU IGZvcm11bGE= IGluZGljYXRlcw== ICAgIAoK X3N0b3Jl aXR0aW5n IEl0YWxpYW4= X1NldA== X3JlcG9ydA== IHBpZA== X1ZFUg== IHdpbnM= IENsb3Vk Iil7Cg== Y2hlc3Rlcg== IGRlbmllZA== IHdpcmQ= IFN0ZXA= IGludmVzdG9ycw== Ym9sZA== X2Rpc3BsYXk= b3V2ZXI= b3Jlcg== UmVzZXQ= IHN1cmdlcnk= IHN0cmF0ZWdpZXM= L21hdGVyaWFs X3VuaXQ= IGNvdW5jaWw= LlBlcg== IOKAng== IHJlZm9ybQ== RnJhbWV3b3Jr IGxpc3Rpbmc= X2J0bg== IGJpcw== JWQ= ZWdhcw== IHN1ZGRlbmx5 X1NFUg== MzE1 IGFv X2RpcmVjdG9yeQ== ZmFz IHByZW1pdW0= IHRyYWNraW5n IEJM IG1hdHVyZQ== IGJhdGhyb29t ICcvJw== IMSR UGVyZm9ybWVk IHNvbGRpZXJz YXJuaW5ncw== IHdhbGtlZA== LWNvbg== Ym90dG9t IHN1cnByaXNpbmc= IGdlbmU= VXN1YXJpbw== LkRFRkFVTFQ= IE1JVA== Q09ERQ== IEVneXB0 cGlja2Vy eXNxbA== QVRVUkU= ZGV0YWlscw== IENvbmZlcmVuY2U= SW5mb3JtYXRpb24= IE1haWw= LWRvd24= cmFyaWVz YnJv IHN1YmplY3Rz ICcq 6K+3 b3JpZW50 OkA= dmVyYm9zZQ== RUY= IHRvbGVy MzEz ZW5nZXJz IGVuZHBvaW50 IHN0cmFuZ2U= IGNvbG9u IHByZWZlcnJlZA== ZGVw IEVW QVJSQVk= IHdoZQ== IHB1cA== X25vZGVz IHRhbGtlZA== IGluc3RpdHV0aW9u ZGJj IGV4cG9zZWQ= dGVlbg== IEZyb250 VFQ= X05PTkU= XC9cLw== cHJvZ3JhbQ== IGVuY291cmFnZQ== LmA= c2hpcmU= IElzbGFt MzI1 ZWVu Tkk= JyI= LldpZHRo IGxpa2Vk IHsuLi4= IFN5c3RlbXM= IHZvdHJl IG1hbnVmYWN0dXJpbmc= Q29udmVydGVy IEluZg== 7Jo= RFRP IGluY2hlcw== IOCk w7k= IENoYXJsZXM= QlU= IikpOwoK IExhYm9y dW5u IGVzdGlt bW9iaWxl IExlYXJu Mjgx X0NBTEw= 4oQ= IGluZGljZXM= IHR1Yg== Mjg4 aWtpcGVkaWE= Q29zdA== cm93YWJsZQ== 66E= Z2FnZQ== IGZ1bmN0aW9uYWxpdHk= dXp6bGU= ZW1vcw== LmxpYg== IGRhc3M= 0LXQug== ZW5uYQ== IHNob3Rz IHJlc3RvcmU= L0Q= Rm9yS2V5 XSxb YWxpYXM= bGludA== LnN0cmVhbQ== 5qA= X0ZPUk1BVA== IHNpbHZlcg== LnJlcG9zaXRvcnk= IGxlZ2lzbA== LkJvcmRlcg== X2ZlYXR1cmVz UGVybWlzc2lvbg== IGhvdXNlcw== IFdhcnM= X0NPTVA= IGluanVyaWVz IGNvbnN0YW50bHk= Zmx1dHRlcg== RU5V IENvbmY= IHJlY29nbml6ZWQ= IHByYWN0aWNhbA== IGRlY2VudA== Qko= XSk7 YXN0eQ== IEFjdGl2aXR5 LW1vZGU= IHNsaWRl LklzTnVsbE9yRW1wdHk= IFlPVQ== UG93ZXI= aW5kaWNlcw== IHF1YWxpZmllZA== IHRocm93bg== aGVsbG8= MzE2 IE5pY2s= bGFo YXNzZW1ibHk= IFNtYWxs b2xkaW5n U2hvdWxk IFNpbHZlcg== KHNhdmVkSW5zdGFuY2VTdGF0ZQ== IHRvZ2dsZQ== Lk5vdA== Q3RybA== Om5pbA== IENvbnRpbnVl IEJvb3Q= 5ok= IE11cg== ZG9u IEZB U25hcHNob3Q= IGFzc29jaWF0aW9u Zm94 LGE= YXppb25l XSkNCg== Q1RZUEU= IGZhZGU= IERhcg== Lm5hdmlnYXRpb24= IGx1Y2s= U0NSSQ== IERlYWQ= IHRlcm1pbmFs X0xFTkdUSA== IGVmZmljaWVuY3k= IHVudw== IG5hcnJvdw== aW1lbnRv KENvbG9y IFNlYQ== X2FyZWE= LEE= X29wdA== IEhpbGxhcnk= LnRhc2s= IEphYw== YXN0ZWQ= IEFkYW0= IElsbGVnYWw= IHNlYXJjaGluZw== SW5zdGFuY2VPZg== SmF2YQ== IEZvcm1hdA== IHJlYWxpemVk IENoaWxkcmVu IGtpbA== KGZyYW1l 4oCdLgoK IHNjZW5hcmlv Il0pOwo= IGluY3JlZGlibGU= bGl4 SU9FeGNlcHRpb24= IFF1ZXN0 aWx0eQ== IHVubG9jaw== 4oKs IHJlZmVyZW5jZXM= IFZlcnQ= QmluZGluZw== ZWdhdGl2ZQ== IHdyYXA= LmRhdGFiYXNl KGNvbnRlbnQ= QnVm IFRyYWQ= IEF1ZA== dHJhY2U= Lm1vY2s= IHRoZXJhcHk= CUw= LlRvSW50 IEtpbmdkb20= QnVz aGF1c3Q= IiIiCgo= KGVuZA== LmRyYXdhYmxl W107Cg== IEhvc3BpdGFs IHBoYXJt LS0tLS0= IEFH w6lk PiIpOwo= IHdhbGxldA== YXRhYmxl KSQ= IG1vbnRobHk= IGRpYWdub3N0aWM= U3ltYm9s IGl0ZXJhdG9y dW5maW5pc2hlZA== IGltbWlncmF0aW9u c3I= Uk9X KGdhbWU= IGNsb3RoZXM= IFVudA== IGFjdGl2YXRpb24= X0Nvbg== Mjcz Lmhhc2g= IGluaXRpYWxseQ== Lkhhc2g= IGN1dHM= Zm91bmQ= IFN0b3J5 0YbQuA== YWNhbw== X1RZUA== cHJvdG8= ZXN0cg== LXBhZ2U= YWhy IGluY29ycmVjdA== IEpvc2VwaA== VGV4dEJveENvbHVtbg== X3N0eWxl IERhbmllbA== c2hlZXQ= IGxpdg== bGluZWQ= IHJh UnVudGltZQ== X2VtcHR5 c2x1Zw== X3N0cnVjdA== 64o= bXU= IHBlcm1pdHRlZA== IHJlZ2lvbmFs IHNvYnJl IFN1Y2g= IFtf IHJvb2Y= LkFsaWdubWVudA== dGltZXM= Lm1zZw== IGNoZXN0 IFRhYg== IGVzdGE= w6Ru IHN1YnNjcmlwdGlvbg== KGNvbW1hbmQ= c3BlY2lhbA== IG1lYWw= Iik6Cg== X2N0eA== IGNsb3NlbHk= MzA5 ZXRyeQ== LWJl YWRlbA== IFJhbQ== aWdlc3Q= IFNwYW5pc2g= IGNvbW1pdG1lbnQ= IHdha2U= Kj4o UEhQ X3s= Y2tlcg== PExpc3Q= X251bGw= Mzkw IFJlc2VydmVk IGluaGVy LkNvbHVtbnM= LkFzcE5ldA== X0lOVkFMSUQ= IFBhcmFtZXRlcg== IGV4cHI= fXs= Q2VsbFN0eWxl IHZhbHVhYmxl IGZ1bm55 SW52 IHN0YWJsZQ== KnQ= IHBpbGw= Mjk5 cGxpZXJz IENTUw== IENvbmRpdGlvbg== IFNwZWVk dWJsaXNoZXI= MjU5 IG9mZmVuc2l2ZQ== Y2VzdA== aWNhcw== IHNwYXJr IFByb3Rl c2V0dXA= SUZZ IFRheA== V2hv RmFtaWx5 LWZvcg== LnVr IGZhc2M= c3Zn IikpLg== IGJpcnRoZGF5 4paI dmVo ZWxsZWQ= IGltcG9ydHM= IElzbGFtaWM= VEE= IFN0YW4= d2VhdGhlcg== IHN1c3BlY3Q= ZWF0dXJl ZW5uZXM= V00= Lm1pbmVjcmFmdA== YXZpZA== 6L0= LnNlY3VyaXR5 aW5vcw== R29vZA== IG1hcmNo NjU1 MjU3 IHBvc3Nlc3M= dXN1YXJpbw== Q29ucw== YW1iZXI= Y2hlZHVsZXI= IGhvcnNl 570= KGJvZHk= IFRyYW5zZm9ybQ== X2RlY29kZQ== LnN2Zw== IGZvbw== IGRlbGxh ZXh0ZW5kcw== YW1lcg== IHByb2Nlc3NlZA== IEhhcnI= IEFJ IGtv Q0hBUg== KCU= IHRhcA== KHsn Y3JvbGw= RE9N IHRlYQ== IHJlaW4= MjYx IHdvcmxkd2lkZQ== X2Zu c2hh IGJpcg== w6fDtWVz PSIjIj4= IHJlcHJlc2VudGVk aWxsZXI= KGV4cGVjdGVk IGRhbmNl IHZpc2l0b3Jz LmNvbmNhdA== LWJpdA== VVJSRQ== IFJvZw== dnA= aXBo IExMQw== aXRsZWQ= aWFtaQ== Q29sbA== X3JlYWw= X3Nob3c= X2ZvbGRlcg== IGRhcg== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxhdHRlcg== YXJjaHk= IGJvdw== IG91dGNvbWU= NTEw IFBvc3RlZA== IHJpc2tz IFRoZXJlZm9yZQ== IG93bmVyc2hpcA== IHBhcmFsbGVs IHBlbmRpbmc= Z2VvbWV0cnk= IHJlY29nbml6ZQ== U1RFTQ== IENQ IGltbWlncg== SVRMRQ== ICAgIAkJ Y29ubmVjdGVk IHNtaWxl KGRvY3VtZW50 XENvbXBvbmVudA== dmVydGljYWw= IGNvbnN1bXB0aW9u IHNob2Vz LmltcGw= dW5rcw== LiI7Cg== IGZvb2Rz Xyk7Cg== LmFzc2VydFRydWU= IHBpcGVsaW5l IGNvbGxlY3Rpb25z IGVhcm5lZA== IENlcnQ= IHBhcnRuZXJzaGlw KGFjdGlvbg== MjYz IGNk IFZlcnk= T3B0aW9uYWw= IHNjcmVlbnM= IHRpdGxlcw== ZW5lcmF0b3I= IGFiYW5kb24= a2luZA== SUxURVI= IGNsb3Npbmc= bGljYQ== X2ludGVy IGNhbXB1cw== c2V0dGluZw== U3ByaXRl 44Gv X3JlcGx5 VG9MaXN0 OlwvXC8= ZWRl IGZvbGtz IGJvYXQ= KGFyZ3Y= IHBlcm1hbmVudA== IGNhcnJ5aW5n IGNvbnNlcnZhdGl2ZQ== aW1wb3J0YW50 LmltZw== IEltbQ== IGRpbWVuc2lvbnM= YWxhbmQ= c2luZ2xl RXhpdA== LS0tLS0tLS0tLQ== YXJpYW50 dGVybmFs U2Vjb25kcw== IEl0YWx5 b3RsaW4= LlJlc3VtZQ== PSci KT09 Y2VwdG9y IHNjYQ== L21haW4= U2VjdXJpdHk= X2RhdA== IGxldHM= IGFxdQ== IHdoZW5ldmVy YmVycnk= IGFjdGluZw== YW50aQ== cGQ= Jmd0 5q0= Wm9uZQ== VG9kYXk= IS4= MzIz VG9Qcm9wcw== YWJpcw== aXRhYmxl IGdhbA== XXs= aXpvbmE= IGluY29udHJp TkVU Ly8vCg== W2lu X3NhdmU= IGV4ZW0= IEtlbm4= IGV2b2x1dGlvbg== Mjcy dmFycw== X3N0YXRz LW9ubHk= IENvbG9yYWRv IHdhdGNoZWQ= Ym91cg== IHNldmVyZQ== IHByb2Zlc3Npb25hbHM= cG9ydGlvbg== IGd1YXJhbnRl 0LM= IHB1c2hlZA== IEdp 770= IHR1bQ== IEF6 IEVkZ2VJbnNldHM= IikpOw0K aXNzZQ== LmFj U2V0dGluZw== IGFwcHJlY2lhdGU= IFZhbHVlRXJyb3I= IHN1cnZl IFJvbGU= LkludGVy cGxvdGxpYg== amV0 ZGFt IHBsYXRmb3Jtcw== dGVsZQ== VVRP IEludGVybmFs Kzo= fTsNCg== R2VuZXJhbA== XEVudGl0eQ== IGxhd3llcg== cXVpdg== IFBvc3Rz aXNv IGFjY3Vt b2Jl IG1hcmtz IF07Cgo= CXRleHQ= LnN1Y2Nlc3M= Y3Vycg== YXNh ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= IHRoaW4= X292ZXI= MDE2 YXJlc3Q= IE9z KGFkZHJlc3M= IHZlbG9jaXR5 IFtdOwoK PSIuLi8uLi8= IFByaXY= Ym93 IGd1YXJhbnRlZQ== JQoK MzIy IGV2YWx1YXRl LkxFTkdUSA== IGludmVudG9yeQ== cWE= X2RlYnVn Lk9uQ2xpY2tMaXN0ZW5lcg== IGxpZXM= IGFzc2Vzc21lbnQ= ZGF0ZXRpbWU= LmJhY2tncm91bmRDb2xvcg== ICovDQoNCg== cmFm dW53cmFw IEZvb3Q= IG5vdGlmeQ== IGxvd2VzdA== RE9DVFlQRQ== IGxhbmd1YWdlcw== ZXh0cmE= LWJhY2s= IGVpbmVu dGVtcGxhdGVz Mjcx X3Bhc3M= NTIw Nzc3 IE11c3Q= IGVzdMOh X2NvcmU= IFNjb3Q= QUk= IGJpYXM= YXRpb25zaGlw Q29uc3RhbnQ= IHByb2dyYW1taW5n SW5z dXNwZW5kTGF5b3V0 IFBST1ZJRA== YW50ZXM= IHNoaXJ0 aW5hdGVk Lk9L W2E= IHRoaW5rcw== PwoKCgo= IHJlZ2FyZGxlc3M= IE1hZ2lj dWxhdGluZw== CWNsYXNz YWRkR3JvdXA= UkVBVEU= IFNV IHNpbXBs Y29weXJpZ2h0 IGJ1bmNo IHVuaXZlcnNl OTUw IEVycg== IHByZXNlbnRhdGlvbg== Y2F0ZWdvcmllcw== IGF0dGFjaA== LnNpZ24= X0FD IGRpc2NpcGw= IHJlZ3VsYXJseQ== IHByaW1hcmlseQ== aW5rcw== W1s= LnJhbmQ= LnNob3VsZA== b3dudG93bg== PSIn IHNhbnM= IHN1cHBvcnRlcnM= c2VxdWVuY2U= R08= Li4KCg== IFNwcg== IGNhcmVmdWxseQ== VUlDb2xvcg== ZGVzdHJveQ== IHRvZG9z IE9SREVS b3R0ZWQ= IGRvbnQ= YXVkaQ== X3BsYXllcg== Z3Jl NjI1 IE9pbA== PGJvZHk= X3N0YWNr LlBhZGRpbmc= IFByb2R1Y3Rz IHByaXZpbGU= MDE0 IGluanVyZWQ= IEZ1cnRoZXI= IGFsaWFz LlJlc3VtZUxheW91dA== X0xFTg== IHNlcw== J107Cgo= Y3JlZW5z IGRpcmVjdGVk LlN1c3BlbmRMYXlvdXQ= b2RnZQ== LkF0 bWFya3M= IFVuaXZlcnM= ZXJ0cw== IEVzYw== IG5hdmJhcg== IHV0aWxpdHk= YWdub3N0aWNz IGluamVjdA== IEROQQ== ICIsIg== YW1hcg== IGV1 IHJlc3RhdXJhbnRz X3B1dA== dXRlcnM= VG9vbFN0cmlw dHc= aXN0cm8= IHpvb20= IGxlZ2l0 cGVjaWZpYw== Mjg1 IENvbWU= IGxvY2FsU3RvcmFnZQ== IGFic29y LlBhbmVs IERlc2lnbmVy IG93 SUNBTA== X3VyaQ== KGZpZWxk IHN1cGVydg== RXhpc3Rz IHJlc3BlY3RpdmVseQ== IFN0YW5k Q29uZg== dXNzaWFu MzY0 IGFyYw== IG5k dWNrcw== IHJlc3Ry IHNlYXNvbnM= IENoYXB0ZXI= IFN3aXRjaA== cGlj IGhp bG9hZGVk IGZsdWlk LWJ0bg== IHJ1bnRpbWU= Lml0 MjU4 Qk4= T3BhY2l0eQ== YXNhbnQ= cnlwdGlvbg== LW5hdGl2ZQ== IHRhdWdodA== 5a8= YWdtZW50 IG11bA== UmVnaXN0cnk= X2dyaWQ= IEJyb29r OlNldA== IG1vbmdvb3Nl QU1FUw== aW5uZXJIVE1M IHNvY2k= IEludGVs Z2V0SWQ= Q21k IGFjY2Vzc2libGU= cmFtZXM= bGV0b24= IF9fKA== CWRlbGV0ZQ== IFNxdWFyZQ== IgoKCg== IGJ1Y2tldA== YXZvcml0ZQ== IEJyZWFr Kytd IGJydXNo MjY2 IHRlbnNvcg== L2h0dHA= VGlsZQ== IGZ1bmN0aW9uYWw= ICIq d2hlbA== IHRlbnQ= IENoYXJhY3Rlcg== IHNlZXM= LlNU Qmln IGV4dGVybg== VXJscw== KSkpKSw= IEpy LkJ1aWxkZXI= Ljs= bmw= X0luaXQ= IEhFUg== xbxl bXlzcWxp X2ljb24= dmFu IGZlZWxpbmdz IGxlYW4= IGhvcGluZw== VFY= PSI8Pz0= IGN1cnZl X3N0ZA== X0xJTkU= ZHN0 IG1vcmFs ZW1lcw== b2d5 IHVyYmFu MDE1 IGFzaWRl IGVkaXRpbmc= QURE U2Vjb25k VHJhY2s= IHZvdGluZw== IGhvbm9y Lics ZWxsZW4= Q2hhdA== IGltcHJvdmVtZW50 J10KCg== oIE= IHBhcnNlZA== ICAgICAgICAgCg== IGxhenk= IGZhbGxpbmc= U2VyaWFsaXpl IFBh X2dy IGZvcmV2ZXI= LndoaXRl LlF1ZXJ5 QmVk IER1 IHJlc3VtZQ== IHBhcGVycw== IEluaXQ= IHN1ZmZlcmluZw== 4oCL IGRlY2xhcmF0aW9ucw== KCkt IGV4ZWN1dGVk IEhvbA== LmJsb2Nr 44Oz U0s= IHN0dWNr IExvY2s= aW5jaXBhbA== TnVsbGFibGU= IHNlc3Npb25z dW5p IGNvdXA= YXBwcm8= Z2hhbg== X3Bvb2w= Mjgz CWlk IHNsb3Rz IG1lZGljaW5l IGdsYWQ= IE1vbm9CZWhhdmlvdXI= YXRyZQ== ICQoJw== bWVyaWNhbg== YWdn IGthbm4= X2Nvbm5lY3Q= IGJyYW5kcw== IHNrZQ== IGRpZ2l0 PG4= IGJhY2t1cA== IHBlcnNvbmFsbHk= LlByb3BlcnR5 MzE0 LmNvbW1pdA== IGNyeQ== X2NvdW50ZXI= IG1hbGxvYw== IGdyYW4= IERyb3A= cGxhdGZvcm0= cmVkZW50aWFscw== aW5raW5n IFVJTA== dWJz IG1s bGVzc2x5 R2VuZXJhdGVk ZXJlb3R5cGU= IGJhdA== TGF5b3V0UGFuZWw= TE9U Iik7DQoNCg== IG11c2NsZQ== IGNlcnRpZmljYXRl QU5ETEU= IGhhcmRlcg== IHBpeGVscw== KSIsCg== LkhlYWRlcg== IGRldmVsb3Blcg== IExhcw== ZWdhbg== Ljw= IGV4cGxvZGU= IHBhcnRpY2lwYXRl UGF0dGVybg== KHRhYmxl IFRFWFQ= Y29uc3RhbnRz eEQ= dGhldw== fSwKCg== 44Gu X2Rlcw== IHN1YnN0cg== IFNtYXJ0 IHNjYWxh Z2VudA== LWJhcg== ZXNzaW9uYWw= dW1icw== LmV4ZWM= J1w= VEs= dW5pc3Q= cHJvb2Y= Y2lhbA== cHJvYw== PXsi LmhyZWY= PSQo IGx1bmNo aXNjYWw= IEVudHJ5 IG91dGRvb3I= c2VtYmxl IGVzc2VudGlhbGx5 L0c= W10p JSI= c3Rlbg== VVNFRA== IGR1c3Q= 5bA= CQoK IHJldGlyZQ== IGZpYg== QWx0aG91Z2g= IGxvdmVz IHJlYWRz eWNsZXM= IEhlbA== X3VpbnQ= ICcuJA== X2luaXRpYWw= TmFtZWQ= IGZ1bmRhbWVudGFs QURJTkc= IHRvdw== IEFERA== IEFjYWRlbXk= MDUw OlN0cmluZw== IGNvbXByZWhlbnNpdmU= LnNjYWw= IE1ldGE= TWVzc2FnZXM= LmFubm90YXRpb25z XFJlc3BvbnNl IGFja25vd2xlZA== IEFSRQ== XT09 IGNsZWFuaW5n 6L4= RW50aXRpZXM= IFNhbGVz IFdpcw== LmV4dGVuZA== YWxsZW5nZQ== IGdhbWluZw== JHF1ZXJ5 SUNFUw== RVRDSA== SG9yaXpvbnRhbA== cXVlbnRpYWw= ODUw QkFDSw== ZGV2ZWxvcA== aXNvcg== KGNvZGU= LUs= X1BJTg== cmVxdWVuY3k= IFF1ZXN0aW9u X2NvbnRhaW5lcg== X21vZHVsZXM= IEplcnNleQ== X2RpZmY= LmVs ICooKA== Y250 IFNh Q1BQ aW5pdGU= IHVudXM= LXdoaXRl ZXRhcnk= IGludm9sdmluZw== ID8+DQo= YmVzdA== YWxsYXM= ZW50ZWQ= ICAgICAgICAgICAgICAgICAgICAgICAgCg== X2Nvbm5lY3Rpb24= IHJlcG8= ZW5hYmxlZA== 0LDQug== IHNoYQ== IG1lbWJlcnNoaXA= U3RhdHVzQ29kZQ== aW5hdGluZw== X3Nt X2N1c3RvbQ== X3dlaWdodA== IGNzcw== U3RhdA== X2Vudg== bGlua3M= VFJM IEhpdA== LHI= dXBpZA== IG9wZW5z IGdlbnQ= X3Zpcw== IGpveQ== PHc= X2Nvc3Q= IFB5T2JqZWN0 cmVuY2U= IEdlb3JnaWE= IEJyb2Fk bW1h 4oI= cGY= ICJcIg== ICgm b21v IGxpdGVyYWxseQ== iJg= bWV0cmlj IGJhcnM= emVk KHdpbmRvdw== IElzcmFlbGk= IGZvcm1hbA== aWRlbnRpZmllcg== LmRhbw== IERlYXRo JTsK IGRlY2xhcmU= YXJtcw== UkVBTQ== UEVSVFk= IGNvbnNlcXVlbmNlcw== dG9vbHM= UGVvcGxl IFdoaWNo PigpOw0K LmRlY29kZQ== X0FDVA== QnV0dG9ucw== LmZsb2F0 LkZpcnN0 66U= IFBvbGl0 IFhDVA== VGFncw== IENHRmxvYXQ= PXN0cg== IGxlYWY= LWNoZWNr IElzcw== LnN5c3RlbQ== bG9nb3V0 YWNodA== QW5nbGU= c2lu Y2hhcnQ= SU5URVI= IE5VTQ== QmFzaWM= LlByb3BlcnRpZXM= 5Lit X2NoYW5nZQ== IEJyYXppbA== QWJzdHJhY3Q= IDorOg== X3VzZQ== 0LDQuw== MjY4 IEx5 SUJVVA== IG91dGVy IC0tPg0K IHJlbGllZg== bGFw cXVlcg== X3BhcmVudA== aGVhcA== TE9TRQ== IGNvbWJpbmU= IFJvc2U= b3dlcnM= IHByb2NlZHVyZXM= IFNvcnQ= YW5pbQ== dmFyaWFudA== ZWhpY2xl IHNpZ25pbmc= UHJpbWFyeQ== Y3VycmVuY3k= IHNleGU= b2Vu dGhldGE= ZW1hbg== IGltcHJlc3NpdmU= KCdf CVU= IFRleHRTdHlsZQ== X2NudA== IHNsaWNl KCc6 IHVuZGVyc3Rvb2Q= SGlz Mjc3 MDEz IGluZm9ybWVk IG5pY2s= NDI5 KFRBRw== aGQ= IGVsZWN0aW9ucw== ZXN0dXJl IFNhbnRh IENvYXN0 LnBkZg== aW5jaXBsZQ== LmNsb25l Ym9ybg== dXRh IGxpY2Vuc2Vk Q3I= IGJyZWFk IEhvdXN0b24= IG5vZA== IGhvcGVz IENHUmVjdA== IGd1aWx0eQ== LmdpZg== IHJvc2U= LkNvbW1vbg== VGlw QU5L IEZD RHVyaW5n IFN5bWZvbnk= IGRlZmVuc2l2ZQ== a20= KT4= YXJjaGl2ZQ== IFVSSQ== eWNsaW5n LW8= IFdlYnNpdGU= QU1Q NDA1 aXNobWVudA== IGRvY3RvcnM= RGlyZWN0 QVJJ IFJlZGlyZWN0 aWVyZW4= OTYw X2Rpc3Q= eW8= IFByb2dyZXNz IHp1bQ== IG1lbW9y IEVE IGp1cg== 5o2u X1RBQkxF IHV1aWQ= RXhwcg== LmhlYWQ= KCcl cG9pbnRlcg== IGVzdGltYXRl IEdyZWc= IGxvYWRlcg== IGlPUw== IG1lbnM= W3k= IHJlZnVzZWQ= IHByZWNpc2lvbg== aXNjaA== IEFDVElPTg== Q2xvdWQ= c1dpdGg= KHJldA== Mjky X0FERFI= X2NvbmY= KGRm IGxvY2tlZA== IHJpc2luZw== 44O744O7 IE1z IHNjZW5lcw== X0VYVA== X3Jhdw== X3RoZQ== cGVvcGxl IHJlY29u IEZ1bg== IGJsZXNz IFVwZGF0ZWQ= NDIy w7xu ICAgICAgICAgICAgDQo= cGVjdGlvbg== UmVsZWFzZQ== LmxvZ2dlcg== IFNZ IGNvdW5zZWw= dXJk X3RydWU= IGV2ZXJ5Ym9keQ== aXZvdA== IGhlbmNl IE5BUw== Nzg5 IG9wcG9zZWQ= dW5rbm93bg== IERFU0M= IENoYWly ZmFpbGVk IElOQ0xVRElORw== Mzg2 MzUy IHdyaXRlcnM= e30K w610 X2NvcHk= fTo= IEJhdA== IGNvbnZlcnRlZA== ZWRpbmc= cGxhY2VtZW50 IEhvc3Q= U291bmQ= 0LjQvA== IHNvdWdodA== NDAy bWlk IHNhbGFyeQ== b2dn 4oSi YnVs IHdpcg== dmFsaWRhdG9y X1NUQVQ= LnN0b3Jl IEJhdHRsZQ== xLFu IC0tPgoK VHJ1bXA= ZG90 IENPTlQ= LmZldGNo IGNvbnRpbnU= d2Fz IGZyYXVk X3RtcA== bWl0dGVy LnBpY3R1cmVCb3g= R0E= IHRvdXJuYW1lbnQ= LklucHV0 MzQz W3I= ZXhpb24= Y2VudGFnZQ== IEtvcmVhbg== dW5kZWY= IEF2YWlsYWJsZQ== cmVzaGFwZQ== IGtpdA== IFN0cnVjdA== IFNVQg== QW5zd2Vy X2xpYg== LnR3aXR0ZXI= IG9yZQ== IERyYWdvbg== LkV4dA== LGs= IGV4cGxhbmF0aW9u cmVmcw== IERyaXZl IFRyYWluaW5n Mjgy Lkhhcw== MzQx aW50YWdl Ymln b2xvZ2lzdA== ZW5uaXM= NDYw 2Yc= IGNoaWNrZW4= ICAgICAgICAgIAo= 55s= 44Gn IHBlYWs= IGRyaW5raW5n IGVuY29kZQ== IE5FVw== bWFsbG9j CWZwcmludGY= ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 aW5jbHVkaW5n IHByaW5jaXBsZXM= IE1haA== MjY3 c3RvcmFnZQ== LWtleQ== IGtleXdvcmQ= JTs= IHRyYWluZWQ= LmNvbnRyaWI= IGt2 X18nOgo= IEJveQ== cGFyYW1ldGVy IHN1aXRl IHRob3VzYW5k IGNvb3JkaW5hdGU= LWdlbmVyYXRlZA== 7ZWY Z2VuZXJhdGVk IGFkbWl0dGVk IHB1c3N5 I3c= IHN3aW0= dW5pb24= TmE= Mjc0 IFJveWFs LmNoYW5uZWw= VXBkYXRlZA== X1JPT1Q= IHZpdGFs MzM1 cmFjdGlvbg== IENydXNoZXI= IHByZWNlZA== IGhvcml6b250YWw= Qmx1ZXByaW50 IGF0dHJz IHNtb2tl 0JI= LkVxdWFscw== RkI= IFJlc291cmNlcw== cm9sbGluZw== IHBhc3Nlcw== IE51bQ== cm90YXRl ZXR5cGU= XCIs IHNlbnNpdGl2ZQ== IHRhbGw= P+KAnQoK UHJveHk= aXk= X3NlY3Rpb24= 4oCU4oCU4oCU4oCU YnJpZA== IGNpcmN1aXQ= YXRhbg== RU5D IGRyaXZlbg== IHZvdGVk IGVkdWNhdGlvbmFs IGludGVyYWN0aW9u YWJldGVz IHRvbmU= IEluaXRpYWxpemVDb21wb25lbnQ= IG1lcmVseQ== IOye Y29va2ll X2Rpdg== IFVJTGFiZWw= dmVseQ== fSk7DQo= X0VOVA== IysjKw== YXJ0aWNsZXM= IFNvdXRoZXJu IHN0cm9uZ2Vy IEdpdmVu IEVyaWM= IElS YWJzdHJhY3Q= VW5kZXI= bmFibGU= IGluY3JlbWVudA== b3Zlbg== IGNvaW4= X3RpbWVy IHN1ZmZlcmVk IEZSRUU= J10uIg== IFF1ZWVu c3RhdHM= IG1lZXRpbmdz Mjc2 IGVudGVyaW5n IGFsb25nc2lkZQ== KHNlc3Npb24= aXRhbHM= IGZvdW5kYXRpb24= IENyZWRpdA== LmRpdg== X0FMTA== cGNpb24= X3N0YXQ= aWNraW5n RGVmYXVsdHM= X3NyYw== IG91dHB1dHM= L0I= IGVudGh1cw== LWJs LkZvcmVDb2xvcg== CXRlbXA= RmFjZQ== IGludGVyYWN0 IHdlaXJk TW91bnQ= cmVsbA== dWRlbnRz IHJlcXVpcmVtZW50 IFN1cw== SUVS IGVsZWN0ZWQ= cmVmZXJlbmNl IE1F IHNlcnZlcnM= LndhaXQ= IHNuYXBzaG90 aWx0b24= IHRyaWVz IHRpcG8= LlRpbWU= Pnc= IG1vdW50YWlu IHBvdW5kcw== IFsuLi4= ZXhpc3Rz IG5nT24= X01BUA== IGZseWluZw== MzMx eGlldHk= CXZhbHVl X0RC dW5v IHNlYXRz VFVSTg== LmF1dGhvcg== ISk= b3JjZQ== IGluZGljYXRlZA== MzE3 LnNpbg== IGFzc2lnbm1lbnQ= aW1pZW50bw== IEZyYW1l MzI0 X2dlbg== aW5lcnk= Xyk= bWVzc2FnZXM= LnNldHRpbmdz IE1lYW4= IE11c2V1bQ== aXJx YXR0YWNo IFBhbGVzdGlu X1FV X3RhZ3M= IGNhc3VhbA== ZW1lbg== QVNTV09SRA== NDMy JHM= IENpcmM= 0L7QuQ== ZXRyaWM= L1A= MDE4 IGVwb2No PGhlYWQ= X0NNRA== IGdpdA== IHBlbmFsdHk= b3JwaA== X3VzZXJz b3Vyc2Vz LkRhdGVUaW1l YXRlcm5pb24= X3Byb2plY3Q= IHN1cGVyaW9y IERhbQ== IFNlYXR0bGU= WFk= PlRoZQ== IEFr IGdyYXNz LyoNCg== KGRpcw== IGd1bnM= IHRi IEtldmlu LmFyZ3M= IEFo b3BlZA== KEo= Y29sdW1ucw== YXJndW1lbnRz IFdpdGhFdmVudHM= X2Z1bGw= IERlZmVuc2U= U2ltcGxl IGRlYXRocw== Mjk1 IGV4dGVuc2l2ZQ== IFN0aWxs IEV4cHJlc3Npb24= IEFnZW5jeQ== IHBlcmZvcm1pbmc= Rlg= IHVzdWFyaW8= VUFM U2lkZQ== b2Rvcw== YXB0b3A= IGNyZWRlbnRpYWxz X2NhcA== YXRpZW50 IERpc25leQ== IGFp IGNoaXA= IHZvbHQ= Lm1ha2VUZXh0 JSUlJSUlJSUlJSUlJSUlJQ== IGJlbGllZg== X0xPQw== IENpdmls TmF2aWdhdGlvbg== IHJldmVhbA== IHZpb2xlbnQ= IEZpbA== IGNhdGFsb2c= ZW1lZA== c2Nhbg== LmNvbnRyb2w= IGNvbnN0aXR1dGlvbg== Q291bnRyeQ== U2VwYXJhdG9y X0FQUA== dG9waWM= dWV0b290aA== TUlO IGRlc2NyaXB0b3I= eXQ= RVRIRVI= IGRpc3RyaWJ1dGU= J30K LnRyaW0= LkxpbmU= IGxibA== YXNzZXJ0RXF1YWxz IERldA== b21ib2s= KHdpZHRo IHRvcnQ= IEVYUFJFU1M= YWNv VXNpbmc= IEJyYW5k d2FsbA== RU1FTlQ= IENvbW11bmlj PHVpbnQ= IEdVSQ== RUdJTg== IFJhbmdl L2k= IFRheWxvcg== Y29zdA== IHJlc3BvbmRlZA== IFRoZW1l bmNl SVNI IGZlYXR1cmluZw== UmV0dXJucw== IEty IC4K IG5hbQ== X2Ni VGVzdGluZw== IHt9LA== eWFs LmZpZWxk IC89 X1NIT1JU bWF0ZXM= VGVzdENhc2U= YWlubGVzcw== IGV2YWx1YXRpb24= X0lURU0= IFBhY2lmaWM= CWs= IGNhbnQ= IFJvcw== KXM= IGZldA== U1RSSU5H MzE5 IERpc3Bvc2U= Z2Fs IEpvaW4= IFBvcm4= IENhdGhvbGlj QVJHRVQ= Y3B1 56CB LnNjcm9sbA== MzI4 SVNJTkc= aWZlc3R5bGU= YW5jZW1lbnQ= IG1lcmM= IEJyb3dzZXI= ZXRlcm1pbg== IG92ZXJmbG93 QXZhaWxhYmxl IGJvdHRsZQ== OlVJ aWZpY2lhbA== IGNvb3Jk Y2xhcmF0aW9u IGNvbmo= R0xPQkFM b2t1 IGt3YXJncw== Y29uZGl0aW9ucw== dWx1bQ== IGdlbnU= IEhlcm8= 5Y4= IHVuZXhwZWN0ZWQ= IERBTUFHRVM= IGth IENvdWxk VVBQT1JU IFBob3Rvcw== IGNvbmZpZGVudA== IGRldGVjdGVk ZGVn cmdi IHN0cm9uZ2x5 IH07DQo= ICk6 IGxlY3Q= dXJzaXZl Uk9M IFdlaWdodA== IGVudGVydGFpbm1lbnQ= ICkpOwo= IGdvbm5h IGJi LmRv R1M= IG1pc3Rha2U= REw= IFBST1ZJREVE ZWFybmluZw== TGltaXQ= aXNzaW9ucw== W3Y= 5LiN aXJ0eQ== RGVs IHVuZGVybHlpbmc= cHJlbmU= IGphdw== IERJ cGVlcg== IG9iamVjdGl2ZQ== IGRlcG9zaXQ= IGtvbg== IGVzcA== Mjc4 LnNldFZpc2liaWxpdHk= L2xvZ2lu PHR5cGVuYW1l IGZyYW5jaA== L2U= MjY5 UGFyYWxsZWw= IHNjb3JlZA== IEhvbg== IFZpbGw= aWdh IGFudGljaXA= X2Fzc2VydA== IE9wdA== IGRlc2NyaWJlcw== d2Fu bW91bnQ= IG1vbml0b3Jpbmc= IHRvdXQ= 64qU fSx7 Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4= PWludA== IGN1c3Q= LS0tLS0t IGF0bW9zcGhlcmU= UEFS b3J0ZQ== SVNJQkxF IElyb24= IE5vdGlmaWNhdGlvbg== LmxvZ2dpbmc= IEJPT0w= LXBvaW50 IGFmcmFpZA== ZW50YQ== IHRvbW9ycm93 QGltcGxlbWVudGF0aW9u IGVuZ2FnZQ== IEFudGg= IEZsb29y IFVs VG9vbHM= IGJhYg== IGNhcmVmdWw= 44GE IGNydWNpYWw= IGNhbGN1bGF0ZWQ= IFNB IHd5 OTEx RFg= X1RBRw== aW5kZWQ= IGpldA== IEVuZ2luZWVyaW5n Lk1BWA== ZW56 dmQ= IHB1YmxpY2F0aW9u ICMjIw== IGZhY2Vk cmFoYW0= IENhcHQ= MzM2 QXNzZXQ= IENvbnN0YW50cw== IGxvYW5z X0lQ IEZpc2g= UmVkdWM= X21hdA== RGF0ZUZvcm1hdA== X21l W11bXQ== IGludGVncml0eQ== IENvdXJzZQ== bG9iYWxz IGZhY2lsaXQ= IGVtYnI= IE5n LlN5c3RlbQ== IG1hbnVmYWN0dXJlcnM= IHByb3Zlbg== Lm9uQ3JlYXRl IGFsYXJt IMKn IGNvbW1vbmx5 aWNvcw== 5paw IFN0YXRpb24= fSku IEZpbG0= d2k= 54k= IGVuZ2FnZWQ= U3RhdHM= IGdvdmVybm1lbnRz NTQw IGFmZm9yZGFibGU= X3Byb3BlcnR5 IGFnZXM= KCctLQ== IGbDtnI= IFByb2Zlc3Nvcg== IGh5ZHJv UHVzaA== IG9yZ2FuaXplZA== Mjg0 QWNjZXB0 w6lt X2NlbGw= IG5i cGI= QXJ0aWNsZQ== IHJlbW92YWw= IGF1dGhlbnRpY2F0aW9u IEZS bGlkZQ== IHBsZWFzdXJl YXBvbA== IHBhcnRpdGlvbg== IFNpZGU= IGNyaW1lcw== IGRlbW8= aG9sZGVycw== IFBha2lzdGFu SW5zdHJ1Y3Rpb24= IGV4cGVjdGF0aW9ucw== MzMy LnNjZW5l ICcp aGVz aW5vaXM= X1Bybw== IG1vbGVj YW5kYWw= X3Nob3J0 IGRlZmF1bHRz IG5hdGlvbnM= aW5lbg== IHJ0 T0NL UGFja2V0 U0I= IFNIQUxM X2NvbnRlbnRz aXNlY29uZHM= dmVydHk= w6F0 R3VpZA== bm9t IGNvbmNsdXNpb24= LlVwZGF0ZQ== IGxvdmVseQ== IGVtaXQ= YmVj CQkJCSA= IGludGVsbGVjdA== IGJyZXc= ZWN5Y2xl RmlyZQ== MzU4 IGFkbWl0 IGFyYml0 IGFycmFuZw== IE1JTg== TWFpbA== IE5hdGl2ZQ== Q3Vy IGNvbnZlbnQ= LlJ1bnRpbWU= In0K LlJ1bg== IHByaW50ZWQ= IGNvbnZlbmllbnQ= LmFy bW9jaw== IEFkbWluaXN0cmF0aW9u 44G+ IGVsZWN0cm9u ZmxhdGU= IGxvbWJvaw== IGphdmFmeA== bmg= IHN1cHBsaWVz IHZpc2l0aW5n YWhs IHBvd2Rlcg== IHVsdGltYXRl IG9yaWVudGF0aW9u dXRhcw== X3NjYWxl Q29uZmlybQ== cGhvbmVz IE9wZXJhdGlvbg== L1Q= NDQz X0lOVEVS IGFpcnBvcnQ= IG1ldHJpY3M= IHBoZW5vbWVu YXVkaW8= MzM0 IG1haQ== KEs= aHU= YWxsaW5n cm9kdWN0aW9u IFRyYW5zcG9ydA== IE5PVEU= 5paH IGZld2Vy X1RJTQ== 7Kc= 0LrQuA== QWdl RklO Mjk0 IOyd IEF0dHJpYnV0ZQ== Z3JvdXBz ZXJr YXR0bw== LmRlZmluZQ== LkFzcE5ldENvcmU= YXRlZ29yaWE= IFNpcg== KGZvcm0= PFVzZXI= LnJvdW5k X2RheQ== LkFsbA== U2VydmxldFJlc3BvbnNl Lk5v bGFyZ2U= SUdI cXVlbnQ= IHZpcnVz IHJldHJv IGltcGVy Qml0bWFw IHZpY2U= IG9mZmVuc2U= aXN0ZQ== IEFVVEg= IOqw VG9vbFN0cmlwTWVudUl0ZW0= R3U= IHJhcGU= IERhdmlz IG92ZXJ3aGVs OmZsdXR0ZXI= LXRhYmxl IENvbnN0cnVjdG9y UHJpdmF0ZQ== ZXZlbg== Y2hy IGFwcGxpZXM= X2F0dHJpYnV0ZQ== IGNvbnRyaWJ1dGU= RVZFUg== Mjg5 TGluZXM= IEFmZ2hhbg== VmlzaXRvcg== IFNM c2Vhc29u Q1U= IGludHJvZHVjdGlvbg== IG1hdHBsb3RsaWI= xZE= IG5ld3NwYXBlcg== 4oCUYW5k PHRhZw== IGluaQ== IGRpdmVyc2U= SWdub3JlQ2FzZQ== MzUz IFVy QWdlbnQ= IGJ1bGw= LmVtaXQ= KEV4Y2VwdGlvbg== YXJMYXlvdXQ= IGluY3JlZGlibHk= IFRydXN0 PXso LW5hdg== IGVxdWFscw== IGxhZHk= IFBvZA== ZGlzYw== YWxhbQ== IElW 4pk= aXZpZHVhbA== cGhp MDE3 YWRkZWQ= IGRpZmZpY3VsdHk= IGNvbXBhY3Q= NTMw IEFjdGlvblJlc3VsdA== Y2Vycw== X2NsYXNzZXM= Tm9uTnVsbA== IHF1aXQ= IHBvdQ== U3dpdGNo aXJz LXRlc3Q= IEtpbmQ= IENhbGVuZGFy NDA2 IHN0cmVhbWluZw== fScs Mjc5 U1c= IHN0ZWFk b2Nh IHByb3ZpbmNl OTc4 IGNvbHNwYW4= IHBlcnNvbm5lbA== IEVtcGxveWVl IHByb2R1Y2Vy IGV2ZXJ5d2hlcmU= b2Ri 0J8= YnNvbHV0ZQ== YWN0aXZhdGU= IGdyaW5kaW5n IEJ1aWxkaW5n IFNhbmRlcnM= KHNj IE9mZnNldA== Ly8vLy8vLy8vLy8v fTsNCg0K KHsi IHNjYW5m IFlZ CWRlZmVy IGpldw== IHJlc3RyaWN0aW9ucw== Lm1w W2w= 5LiL bGFiZWxz cmVkaWNhdGU= YXdlc29tZQ== IHdhdmVz IGNvbmZyb250 IG1lYXN1cmVk IGRhdGFz X2V4aXQ= MzU1 b3R0b24= IHNob3VsZGVy YXNrYQ== KyM= ICAgICAgICAKICAgICAgICAK IHRyb29wcw== Mjkz IFVuZA== X2NhcmQ= d2ljaA== IG5vdXM= ICIvIg== c2I= IGNvbW11bmljYXRpb25z RXhwb3J0 IGRlY29kZQ== dGhz aW50ZXJwcmV0 QnlOYW1l IFNwaXJpdA== ZWRnZXM= T0xF IEVN dGl0 IFRocm91Z2g= IGJpbw== IFBhY2thZ2U= b3JuZQ== Mjkx IH0u NDEx YDsK IG9rYXk= IFplYWxhbmQ= aWRlbnRpdHk= KG5leHQ= IEJhbmc= TGlicmFyeQ== IGhlYXZpbHk= aWxvbg== IGRpcGw= IHJvdGF0ZQ== cHV0cw== KScsCg== IERhdGFUYWJsZQ== IG1heW9y LnRvTG93ZXJDYXNl IHNvbWVob3c= IE5vcnRoZXJu YWxj IGNhcGFiaWxpdGllcw== IHZpYnI= Kwo= IFN1 Mjg2 IFJlc2V0 X21lYW4= IGNpZw== LmNsb3Vk IEJhbmQ= IEZhY3Rvcnk= IEFyaXpvbmE= X2lv b3BoZXI= IGNvbnNjaW91cw== IMO2 XENvbnRyb2xsZXJz X3NwZWVk IEZhYw== X0NvbQ== IEJpYmxl d2Vu RURJVA== IHVubg== IFN0YWZm IElubg== IG1lY2hhbmlzbQ== IE1lbWJlcnM= IG1pZ3JhdGlvbkJ1aWxkZXI= J10uJw== LmdldEludA== PHZvaWQ= CWZyZWU= b2lkcw== XFN1cHBvcnQ= IGF1dG9tYXRpYw== IGNoYW5jZXM= 0LY= IGNvbXBsaWNhdGVk W3Jvdw== YWhvbw== IH0KCgoK TW9kZWxz V2lu IHRhcGU= aXJ1cw== aXpvbg== b25vbXk= KCJf Oi4= LnN0ZXJlb3R5cGU= Mjk2 KGVudg== X3JlY3Q= KHdpdGg= IGFzc2VydFRoYXQ= IGNvbnN0cmFpbnRz cHV0eQ== RW1wbG95ZWU= NjIw VEQ= IGd1aXRhcg== ODc1 IEpld3M= LnByb2Nlc3M= IGZpY3Rpb24= IFNoYXJlZA== 4pSA4pSA IHByb3BhZw== Lk5ldA== IGFjaGlldmVk CVE= IG51cnM= U2hhcmVk X0ZBSUxVUkU= IGJlaGF2aW91cg== IGNvbHM= aXNtbw== IGZlbWlu IGNoYWxsZW5naW5n IHBvc3Rpbmc= ZW5jaWw= IGNhcHR1cmVk IERvdQ== KHdvcmQ= IFR1cmtleQ== cGFuaWVz IHJlcHV0YXRpb24= T1JNQUw= IGVsaWdpYmxl cHJvdG9jb2w= NDE0 aWRhcw== KGZyb20= MzQ0 IGZpbmFuY2U= LXBlcg== IGdvdHRlbg== SEE= ZHVyYXRpb24= IFBhcmVudA== Njc4 IGludmVudA== IHJlc3RhcnQ= 0L7Qu9GM cml0aW9u KHJz PGJvb2w= aWVydA== IG1vZGlmaWNhdGlvbg== IFRY cmVhZGNydW1i YmFuaw== MzI2 JC8= IE1pbGxlcg== XSksCg== LkNoZWNrZWQ= IHNhY3I= c2VjdXJpdHk= IHBvc2U= IEJyYWQ= IGZpdG5lc3M= IGFubm91bmNlbWVudA== YXRpb25Ub2tlbg== IHNlcnZlcw== bmVlZA== IGdlb21ldHJ5 QVJT 5oA= YW5kaWRhdGU= IHNwcml0ZQ== X3NwbGl0 V2Vlaw== YWRpZXM= PigK Pz4i IC8vLwo= IGVpbmVy IHdlZWtseQ== CWxvZ2dlcg== X3BvcA== X21hbg== IG1pZ3JhdGlvbnM= IGFza3M= IGJz IGZhbGxz LldoZXJl LWhlaWdodA== X2ZlYXR1cmU= Lk1pbg== IGh5cGVy IHZvbGF0aWxl IHR3ZW50eQ== VHlwb2dyYXBoeQ== VW5hYmxl RGV0 LGY= LW1vZA== IHNldHRsZW1lbnQ= IGNvbnRyYWN0cw== bm9tZQ== QmFk IEJyaWFu NzY4 KHVzZXJuYW1l ISEhIQ== IGhhY2s= LkZpZWxk SFI= IEpvcmRhbg== aXph IMKg IFNoZXI= LmhlYWRlcg== KG90aGVy IER1Yg== KG9w IFJvdW5k IHZpZQ== IGFwcGw= CUo= IEluc2VydA== IExQ cmVnb24= IE1QSQ== IGFuY2hvcg== YWNh w7hy IGFkZQ== YW5jaG9y cXVlZQ== IFRyZWVOb2Rl IHRhcmdldGVk IGxhaWQ= QUJFTA== dmV0 IE9yaWdpbg== QW50 LicpOwo= ZXhwZWN0 ZWRSZWFkZXI= IE1ham9y IGluY2g= Q29tcGFy IHByZXZpZXc= IGlsbG5lc3M= IENPTlRSQUNU IEluZGVwZW5k dXVpZA== IG5vbWU= IHRj IEF2ZW51ZQ== aXNhbg== IHBocmFzZQ== X21vdmU= Iilb NDEy IHByb3Zpc2lvbg== IGNvbmNlbnRy X0lS IFV0 KCkr IG5hcw== ISw= IFJvYmlu aWF0aW9ucw== YXRpdHVkZQ== IHB4 IFdpdGhvdXQ= L2Jhc2g= ZWt0 cmVlbWVudA== MzQy T2JzZXJ2ZXI= MzE4 IFJlZ2lvbg== VUJMSUM= IHsvLw== S04= 5bc= R2FtZU9iamVjdA== 5b4= ZW5jb2Rpbmc= ICoqKg== cHJvamVjdHM= IHRr IGNoZWVzZQ== RU1QTA== YXJv INin2YQ= NjEw MzM3 IGNvbnNpc3Rz cmVmcmVzaA== dXJlYXU= IFNjYW5uZXI= IHNvaWw= IGZsYXZvcg== RGF0YVNvdXJjZQ== RXhlY3V0ZQ== 0LXQvdC40LU= IHNoaXQ= 5YiG PGFueQ== IHJldHJpZXZl IGJlbG9uZ3M= LnN0cmlw YWJzb2x1dGU= IGV4cGFuZGVk Ym95 KTot IHJlc2N1ZQ== LkpMYWJlbA== IHJlbHk= IGFsaWdubWVudA== LWZhbWlseQ== IHJlbmQ= T0xVTU4= IGJvcnJvdw== IHF1b3Rlcw== IExldw== IHNob3dlcg== IERFTEVURQ== X2xvb3A= ISIKCg== CXJl IGF0dGVtcHRlZA== YXZlcmFnZQ== IFBhaW50 cXVpc2l0aW9u b2xlbg== IGxpdGVyYXR1cmU= IFJlZmVyZW5jZQ== X1RFWFRVUkU= IFNlZw== IEluZHVzdA== Y3R5cGU= RFVDVA== X0hPU1Q= IFRyYWRl IHBsdWdpbnM= IGJyZWFzdA== dWxzZQ== IGNyZWF0dXJl Mzcy 44GZ IFdp IHN1cHBsaWVk Y29sbA== ISgi IGZ1Y2tpbmc= IENocm9tZQ== IFVyaQ== IE5hdGlvbg== IHZlcnRpY2Vz VEhF IE9yaWdpbmFs b25kZQ== IHNoYXJw IGNvb2tpbmc= MzQ3 IHsvKg== IFBzeWNo IEhvbGx5d29vZA== PSRf LkRvY2s= IGdlcg== IGJvbmU= X2Nvbm4= X3NlYw== eXNpY3M= ID0i Mjk4 U2Fs c2Y= IGRlZXBseQ== YW5nbGVz VGVybQ== YmVsbA== IFF1aWNr NTYw ZW5lcmF0aW9u YWRpb0J1dHRvbg== 5YWl fQ0KDQoNCg== IGNhcHRpb24= bGM= IEVM LFs= ICAgICAgDQo= cmV0dA== KG1ldGhvZA== IEZsYXNo NDcw ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== V0lTRQ== LnNjYWxl IHJvdWdobHk= X2NoaWxk bWVtb3J5 YXlpbmc= IGluaXRpYWxpemVk aW5hdG9y 0LDRgA== IHNjYWxhcg== IEhv YWlyZXM= KGNvbHVtbg== LmRlc3Ryb3k= UEFDSw== IGhlbQ== YW5nZWw= X1NVQg== LnF1 INc= REVGQVVMVA== cG9zaXRvcmllcw== NTAz IExlbmd0aA== IEZhc3Q= IHNpZ25hbHM= IC8vJA== cmllcnM= IGR1bW15 QU5Z IHBlcnNvbmFsaXR5 IGFncmljdWx0 UGxhdGZvcm0= RVJP IFRyYQ== IGVub3Jt CVc= QWN0aW9uUmVzdWx0 IGF2ZXI= W3N0cg== ICctLQ== LlNwcmludGY= IGRlYnV0 INGH aGV4 X3V0aWxz IHBi VUlUYWJsZVZpZXc= IHp1cg== LmVuY29kZQ== NDE2 IHZhZw== LmVycm9ycw== 0L7QvQ== IG1y IEF3YXJk IGNwdQ== IHByZXNzZWQ= J2VzdA== IEZlc3RpdmFs J1Q= IGFr cmVzb2x2ZQ== MDQz Lm1l IG5pYw== IGdlbnJl IGF0dHJpYg== IE1vb24= IGFycml2ZQ== IERhdGluZw== IHRt LkNvbmZpZ3VyYXRpb24= NTA1 LnJlZA== IGdsbQ== IHN0YXRpb25z c3dpdGNo IHRpZWQ= 5Lq6 IC8+PC8= UXVhbnRpdHk= cXVpcnk= X3RhYg== IGFsZw== VG9hc3Q= cmVzaXpl cXVlc3Rpb25z c2NoZW1h TGl0ZXJhbA== KGVudGl0eQ== TkVDVElPTg== Y2hhbmdlZA== X0ZJRUxE X0hFSUdIVA== IG9yZ2FuaWM= UFJF IENhdA== LkRyYXc= RXM= IGxvdWQ= Njgw ICAgICAgICAJ IEthdA== IGhlYXA= 4oCcSXQ= MDcw ZXRy IHVubGlrZWx5 ZXJhbHM= L2F1dGg= NTAy dG9kbw== UGxhY2U= UG9zdGVk Q29tbWVudHM= IFRlY2g= IEZpbmFsbHk= ZWdyYXRpb24= IG1pbmltYWw= IEZpbGVz IHRhbWI= 66Gc IFJlbGVhc2U= NDI1 LnJlc2l6ZQ== IM8= Y29sbGVjdA== PXA= IExJQUJMRQ== IHByb2R1Y2luZw== LXdyYXBwZXI= IHNpbmdsZXM= IE5CQQ== b3Jy ZXJlbg== LmFkZEFjdGlvbg== IHRoZXNpcw== ZG4= UFRZ LmRlcw== IGJhY3Rlcg== IEV4cHJlc3M= ICopCg== 5ZE= L2FkbWlu c2Vjb25kcw== 5Yqf dXNzaW9u YWJldGg= IENvbXB1dGVy IHJ1bGluZw== KCIuLi8= LkdFVA== IE1lZGFs aXRpb25hbGx5 Y29tbWl0 Zm9jdXM= X0xFVkVM aW5kYQ== RmFjdA== PW5w PSIiPgo= IHN1YnNlcXVlbnQ= cG9zYWJsZQ== LWZsdWlk IHRob3JvdWdo IHB1YmxpY2x5 YXB0ZXJz IFdpbHNvbg== X1BSRQ== eWFyZA== 5Lw= CWlu MzM5 IHJldmVycw== IGJ1bGxldA== Y3JpYmVk bmVzb3Rh ICgkXw== YW5ub24= Y3Vyc29y IGNsb3RoaW5n IE11bHRp Mjg3 Oics IHZlc3M= b3JkaW5hdG9y IGVpbmVt Q2Fubm90 IGFybWVk CVY= 5LiK LkZsYXQ= IFNlcA== IFN1YmplY3Q= X2ZvbnQ= IGNoYXJhY3RlcmlzdGljcw== RG9uZQ== ZWxu IyMjIyMjIyMjIyMj UE9T IGRlbnNpdHk= IFBsYXRmb3Jt LWl0ZW1z IG92ZXJz IHB1c2hpbmc= 56Q= LkNvbm5lY3Rpb24= X3Rlcm0= IGluaXRpYWxpemF0aW9u X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18= 56w= LmRvY3VtZW50 bGVzaA== CWRvY3VtZW50 IFBpbg== w6dh IGRlZmluaXRpb25z LlBhdGg= X1dSSVRF IAkK Pz4KCg== IHRlcnJpYmxl YmVhbg== aWNrZXRz IFNW QnV5 KHRhc2s= IHJlZ2ltZQ== Z29vZ2xl IGNyYWNr LnZpc2l0 TlVN ZW5lcmd5 IHN0cnVjaw== X3NhbXBsZQ== LnBheWxvYWQ= IHJldmlz IFNjZW5l IHBn IGJyZWFrZmFzdA== VVJSRU5U LmNoYXJBdA== X2V4Y2VwdGlvbg== IEFudG9u IGd1aWRlbGluZXM= IGV4aGF1c3Q= IEZpbmFuY2lhbA== IGluZGVudA== IGRlc2t0b3A= SGlkZGVu RmFpbHVyZQ== IHByaW5jaXBsZQ== IGl2 IHNla3M= bmV0d29yaw== IG51bWJlck9m IEFsYmVydA== CWxvbmc= ODAx LC4= IHplcm9z ZmFkZQ== IFR5cA== IFRlcm0= IEFydHM= LkFwcGxpY2F0aW9u IGJlaGFsZg== 5oi3 IG1lcmU= KGAkew== IGF3YXJlbmVzcw== ZWxwZXJz ZmxpeA== IHdlaWdo IGVzdGltYXRlcw== LmNoaWxk L08= IEJpdG1hcA== LmJvdHRvbQ== ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq RXhwZWN0 ZW50bw== IEZvcnVt dmVyYWw= IGphaWw= IGFiaWxpdGllcw== IEhPTEQ= IENpdA== IGR5bmFt IGdyYXk= CQkJCQkJCQkJCQkJCQ== Lm5leHRJbnQ= YW50bHk= IEFSSVNJTkc= KHByaXZhdGU= IHJlamVjdGVk IE5pYw== IGxlYXRoZXI= PXsK YWx5dGljcw== dGhldGlj LlRvcA== Mzcz LlBhZ2U= PXtg IDsNCg== ZGVwdGg= bWFubg== V0Q= IFNvbQ== LlJpZ2h0 ICl9Cg== IHRyYWl0 w5c= aWFj IHJ2 U2FtcGxl LlhtbA== b3BwZWQ= INGE bGlzdHM= IHRlYXI= aXZlcnNhcnk= LmNvbGxlY3Rpb24= IENvbnN0aXR1dGlvbg== IEh0dHBSZXNwb25zZQ== IGJyaWxs IFByb20= aG92ZXI= MzY2 IE1pYW1p IGFyZ3Vl X2Zsb2F0 NTA0 IOOC IG5hdA== IFRhbA== IGludGVncmF0aW9u KGN1cg== IHJlbW92aW5n IGNvZWZm IFRob3VnaA== IGZvcmVjYXN0 NDA4 IFZlZ2Fz U2l0ZQ== MzQ2 IHRyYWI= IEhlbnJ5 LWk= IGludm9sdmVz QlQ= IHNsbw== SW52b2tl IGx1Y2t5 MDI1 cmF0 ID8K IGhhbmRsZWQ= KGZk Y29udGVudHM= IE9GRg== UkY= IHN0eQ== IE1vdG9y dGVyeQ== dGF4 TUFQ IE1ycw== IHBob25lcw== IFVJVmlldw== IikpKTsK KGRldg== IElyaXNo MDE5 IHdz REk= X09GRlNFVA== IEV2ZW50cw== IHN0YWdlcw== IH0vLw== IGhhYmVu U1RBTkNF IFNpbg== IE1vbmV5 KHRvcA== IGFwcG9pbnRtZW50 VkVSU0lPTg== bWV0YWRhdGE= X2NvbW1lbnQ= IGNvbGxlYWd1ZXM= bWFwcw== 4pg= CgkK KGFs X3JlcQ== IGZ1dA== IGFyY2hpdGVjdHVyZQ== MzUx IFdIRVRIRVI= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== X3NjcmVlbg== IHN0eWxlVXJscw== IG1vbnN0ZXI= LnVw cGhpYQ== IHByb2Nlc3Nvcg== IFRlcnI= PScs IE1hbnVmYWN0 IE5U a2Vs aWJlcm4= CWZpbGU= QWxp cmllbnRhdGlvbg== IC8vIQ== YXBvcmU= YW5lb3Vz IENyZWF0 Zm9sZGVy NDE1 IGhheQ== U3VwcHJlc3M= KGxlZnQ= IGV1cm8= IGRpc2NsYWltZXI= dXN0cnk= c2hpcHM= X2Zk IEZh X2luc2VydA== IHJvbA== aWZ0aW5n IENvbW1lbnRz X2Jy IGxvc3Nlcw== IEFkZGVk Y2hhcmc= INC/0L4= X3N5c3RlbQ== IFNvbWV0aW1lcw== IFNwYWlu KGdyb3Vw aWFsaXM= IGRvbGxhcg== IEFyZ3M= NDk5 Mjk3 cXVpcmVz IFRlbg== LnNjc3M= IHN1cnZpdmU= dXNhZ2U= IGp1bg== aW1pdGVy 77yBCgo= IGZpZnRo dG9nZ2xl IGRlY2xpbmU= KCQi KExvbmc= aW5nZQ== IHBpbG90 LWxpZ2h0 LXJhZGl1cw== IHBvZGNhc3Q= IG5hdHVyYWxseQ== UGFnZXM= 5Li6 IERlc3BpdGU= IGxpZ2h0aW5n IGNyYXRl IEJpbmFyeQ== IHJlZHVjaW5n IGVsZWc= IE1vdXNl IFRlc3RCZWQ= IGJlZm9yZUVhY2g= X0FSUkFZ UmVkaXJlY3Q= MzI5 IGZsb29k IHNoaXBz MzYz IGVsZWN0cmljaXR5 KSoo 6rg= IFZpZXQ= aGVybw== IGRpYQ== IEtlbnQ= aGVhcnQ= IHRocmVhdHM= X2FjYw== IHN5bWJvbHM= aXNjaGVu X2luc3Q= Q3JpdGVyaW9u IFRJTQ== LkhlaWdodA== NTgw IOKAmQ== KCk7CgoK UHJvZHVjdHM= X1NQ IEN5 IGRlcGVuZGVudA== ZXN0ZQ== IGRhdG9z ZGl0 0LDQsg== SUdOQUw= IGxlc3Nvbg== Ij4n IENvdmVy IEhvcGU= IFRpbWVy IGRhZA== dmlkZXJz IFBob3Q= Lz8= cm9weQ== b21pbmc= YXNpb24= IFwo IEVU IFJlYWRpbmc= IGVwaXNvZGVz bG0= NDIx ZWNoYQ== IG5ldXJv ODIw IGhhcm1vbg== IGxpYmVyYWw= LWluZA== Mzkz REFUQQ== IGV2ZXJ5ZGF5 IGRpdmlkZWQ= IEFjdGl2ZVJlY29yZA== ZmlndXJl VUE= 5Lk= cmllbmRseQ== dGVjaA== NjAx LmdhbWVPYmplY3Q= 0LjRgtGM Mzc0 IG1vb24= ZnRpbWU= IG5vY2g= IFRPUlQ= IFZN LmluaXRpYWw= KGNoaWxk IG11c2ljYWw= IG9j YmFz IEhheQ== MzYx X2xvbmc= IG1lbXNldA== aWxleQ== YWRlbHBoaWE= U1Y= cm9hdA== X3R4 IGxvbg== IG5nT25Jbml0 YnA= IEdvbGRlbg== QUNIRQ== IHdvcnJpZWQ= YXpp RWFy VGFrZQ== KGZw YnVyZ2g= X0RhdGE= Z3Jlcw== IE9udA== cHVz IHRyYW5zcGFyZW50 IHBvY2tldA== IHJhbQ== aWdyYXRpb25z Lg0KDQo= IFso IGFkb3B0ZWQ= IHJlcG9ydGVkbHk= IERyZWFt IH0pKTsK bG9zaW5n IHRlZXRo IEJvb2tz Iiwm ZW5ueQ== TEVNRU5U IGdlbA== IFBsYW50 NDM3 IeKAnQ== Lmhvc3Q= IFJlcGx5 Mzc2 cmVuZ3Ro IHJlY29nbml0aW9u IH19Pgo= TEE= IG1pcnJvcg== IGFzc2lzdGFudA== KGRldmljZQ== IHNwaXJpdHVhbA== YnVpbGRlcg== wqc= IG91dHI= IHR0 IFBFUg== IHJhZGljYWw= TWV0aG9kcw== IHBhY2U= dWR5 IGd1dA== IEdyZWVr IG5vbmF0b21pYw== IFBhcGVy X0dQSU8= IG9ic3Q= LkFk dmlyb25tZW50cw== IFNvdg== MzU2 KGNvbg== IFRyYW5zYWN0aW9u LmFzc2lnbg== CWNhdGNo ZWx0ZXI= IGJpdGNvaW4= X0dS IDw/PQ== X2xhbmc= 7J2E QnJvd3Nlcg== IGNvbnNpZGVyYXRpb24= IEV4ZWN1dGl2ZQ== 6Ze0 O1w= IEpTT05PYmplY3Q= IEJlbGw= IHNwb2tlc21hbg== fn5+fn5+fn4= b2NrZXk= IEdybw== IEF3 Q29uc3RyYWludA== IFByYWN0 IEV2ZXI= cHJpbQ== OnsK X2lt UE4= TWlsbGlz VU1FTlQ= IGJhZ3M= w6Vy QU5ORUw= MzU0 IGlj IHRyYW5zcG9ydGF0aW9u IFNhdWRp aGFuZGxlcg== RHJhZw== IGhk Y29sbGFwc2U= X1BI IHVi QVJN IEFQUA== IHRvbmlnaHQ= IGRpbmluZw== UmVjb2du IGJj aWd0 KG51bWJlcg== Qm9vdA== IGVsc2V3aGVyZQ== IGFycm93 YXJnYQ== IGRlbGljaW91cw== IFNO V1I= VmFsaWRhdGU= IFF1YWxpdHk= KGVtYWls IGludGVycHJl aWdhdGlvbg== IGNob2NvbGF0ZQ== NTI1 X2VkZ2U= IHN0b3Bz OmZ1bmN0aW9u KXw= IHRoYWk= IExvYWRpbmc= U3Rvcnk= VHJpZ2dlcg== YnJhbmNo IHRk ZW50aWNhdGVk IGFkdmVudHVyZQ== IGJsb2NrY2hhaW4= RXZlbnRIYW5kbGVy IHNxcnQ= LlBy TG5n QmVjYXVzZQ== IHZpdg== IG9jZWFu eWx2YW5pYQ== 0LDRgQ== IFV0aWxz IGRlc3Blcg== IGRlZmVy CXJlcXVpcmU= aGw= UmVxdWlyZQ== XVw= IGRpcmVjdGlvbnM= X3Jlc291cmNl IHN1YnNjcmliZQ== IMO6 IEhlYXJ0 ZXN0cw== LXN1Yg== IFJo Zm9yRWFjaA== IGRlbGlnaHQ= IHRlcnJpdG9yeQ== LmNvbmN1cnJlbnQ= ICgr anBn IHByZXBhcmF0aW9u IHJvdW5kZWQ= Q29tbQ== LkxlZnQ= IG9waW5pb25z IE5hdmlnYXRpb24= KGZpcnN0 Iiwk IGhpcmU= IGRldGVjdGlvbg== LmdldEVsZW1lbnRz IGVwcw== IHNrbGVhcm4= IGN6 IC8+DQo= bWV0aWM= IHRyYW5zZm9ybWF0aW9u 5Y+3 IHJnYg== aXN0cmlidXRpb25z IGltcGxpY2l0 L2lu ZGVzdGluYXRpb24= 0LDRgtGM WmVybw== IHVuc2V0 OTIw LndoZXJl Lmdv IGZvcm1hdGlvbg== IGRlY2xhcmF0aW9u KCkNCg0K IEV4cGw= CQkJICA= L3Bybw== LkpTT04= NDQx IGRlc2s= LnN1YnN0cg== Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t bHlu cHNvbg== NDA3 ZGlzYWJsZQ== IEZ1bmM= CUFzc2VydA== IE1BUks= IGRlZmVhdA== IGJsaW5k IGNvbnN0YW50cw== MzYy LmhlYWRlcnM= VUlMRA== IGV4cGVuc2Vz UGl4ZWw= IGhy IGZlbA== IEVhc3Rlcm4= NDI0 NDkw X2RlbA== MzU3 IEN1Yg== IHNx CWNvdW50 IERpcmVjdG9yeQ== IGV4Y2x1cw== IGhpc3Rvcmlj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== IGNvbXBvc2l0aW9u IGRhdGFHcmlkVmlldw== IEJ1cm4= IEJD TWFzdGVy IHNwYXdu IGJlYXJpbmc= LlNldEFjdGl2ZQ== aWxv IGdhbGxlcnk= IGZvdW5kZWQ= IGF2YWlsYWJpbGl0eQ== LnNxcnQ= IHBlcw== IERPTQ== bWF0ZQ== T2N0 IG1hdGNoZWQ= aXRpdml0eQ== IGFueGlldHk= LnByaWNl IEluc3RhbnQ= 7Io= IHR1dA== SUNvbGxlY3Rpb24= LnNoYXJlZA== X3NxbA== dGJs bGlicmFyeQ== X2Rlc3Ryb3k= ZXJtYWw= IE5vdGVz IEVpbg== IHNvdXRoZXJu IE9USEVSV0lTRQ== IG1hY3Jv Lmxvd2Vy Y2xz Q29udGVudFZpZXc= Lmxpbms= Y29uc3RhbnQ= IEJlcw== IHNvbWVib2R5 bmI= Mzk5 Ij57 KGxvY2Fs Li4uLi4= IE51bGw= bXg= IMOn IHBhdXNl LS0tLS0tLS0tLS0= X01P IENN IGZvcktleQ== IERWRA== IGNsb3Nlc3Q= X0RFVklDRQ== IFN0ZXBoZW4= IEJCQw== IFRyYXZlbA== UGFpbnQ= IFJlc3VsdHM= IFJ1bGU= IHRw IHJhdGluZ3M= Y2lu Y3N2 Pi8= IEdPUA== bGFk INGA IGluZGV4UGF0aA== bWF0cml4 PWY= YXJzZWQ= IH0pOw== IENvcw== IFNjb3Jl IHRhaw== IEVTUA== IElOQw== X05VTEw= LWZsZXg= Il1b aW50bw== ZWxhbmQ= QXV0aG9yaXphdGlvbg== X0ZBTFNF IGdhdGU= IHZpZA== aXN0ZW50 VElNRQ== IHJld3JpdGU= IHRpZQ== IGFyY2hpdmU= NTEx LmV2ZW50cw== LmdldFBhcmFtZXRlcg== IFBlcm1pc3Npb24= IHByb2dyYW1tZQ== IOk= anVk IGNhbWVyYXM= MzM4 MzQ5 KHN5cw== IFN5cmlhbg== IGltcHJvdmVtZW50cw== IGhpcA== IHN1aWNpZGU= IHNjaG9sYXI= IGNvbXBhdGlibGU= MDIy cmVtb3Rl LmRvd24= RlVOQ1RJT04= IG1hbmFnaW5n IFVJS2l0 LnJhdw== Pj4+Pg== Mzcx IGRlbWFuZHM= ZWxsaXRl IGRlbnQ= IE1pY3Jv 5Y+W J11bJA== IElF aW1lbnNpb24= IHRyZW0= NjMw IGdhaW5lZA== LndpdGg= Lm9r aG91 IGJvbQ== YW1wYWlnbg== IGpvaW5pbmc= ZmlzaA== IGFkZFN1YnZpZXc= ODYw IG5vcnRoZXJu LmNvcg== b3JldA== RGll aW5pc2g= X2NvbXA= IGF0dGVuZGVk IGNvbGxhcHNl IFNT YWNlbnQ= X0VRVUFM IERlZXA= UkdC CXRlc3Q= b2x2ZXM= dXNldA== VW5pdHlFbmdpbmU= d3JpdGVy UmVzb2x2ZXI= LCU= aWZmZXJlbmNl X3JlbW92ZQ== b25kYQ== IGZlbW1l Mzg1 ZGVjb2Rl QnJhbmNo IGZsdXNo IGlubm92YXRpdmU= VGVzdHM= IFsnLi8= IGNvdmVyaW5n LmFkbWlu dWx0aXBhcnQ= KGxhbWJkYQ== 77u/bmFtZXNwYWNl IFNwb3J0 ICEo YWNsZXM= IGRlcHJlc3Npb24= IEtvbmc= NTcw IHBlcnQ= IENvbm4= IE90aGVyd2lzZQ== L2hvbWU= c3VwcG9ydGVk IHBpbms= IGludml0ZWQ= w7Fvcw== X2VuYWJsZWQ= IC0K Rlc= ZW5lcnM= IE1Z IHN1Z2dlc3Rpb25z Q2FudmFz IGZlcg== IE1hcmtldGluZw== QFRlc3Q= dW50dQ== IFZlbg== IENvdQ== aXZhbHM= RG9uYWxk bGltaXRlZA== CQkJCQkJCg== IGFuYWx5c3Q= KGVudHJ5 IHJlcHJlc2VudGF0aXZl X2F0dHJpYnV0ZXM= IGZ1cg== LmhpZGU= cmVzcA== YWRvcmVz cmlkZXM= IEpvc2g= cm9ib3Q= IE5BVA== IHNlc3Nv IGludGVncmF0ZWQ= OnRydWU= cGFydHM= IHN0dXBpZA== OmV2ZW50 QGVuZHNlY3Rpb24= IHB1 LlRhYmxl IFlpaQ== YDsKCg== IGNsYW5n PSIiPg== ZW5nYW4= X3BhcmFtZXRlcnM= LmludGVybmFs IE1vZGVybg== IG1ldHJpYw== IHNlbWk= PXt7Cg== NzA3 LmFtYXpvbg== IEJC YWludHk= dmlld3BvcnQ= MzY3 IHN0YXJ0QWN0aXZpdHk= ZGlzcGF0Y2g= KioqKio= IGZsYXY= aWZmZXJlbnQ= Mzgy W3RoaXM= IHN0YWtl IGFyZ3VlZA== dmlvdXNseQ== Lndvcms= IE9haw== T2xk KGFzeW5j bm90ZXM= IGZsaXA= IGRpc2Fn IFRF CWVycm9y PCc= IMK7Cgo= IGZpbHRlcmVk IE1hY2g= IGh1bmc= X2R1bXA= X3NhbXBsZXM= LWRpc21pc3M= IHJheQ== SW1wbGVtZW50ZWQ= REs= IGplZA== MDkw IGJyZWFrcw== IGZpdHM= Lmdy IFplcm8= b3Jv IGVxdWFsbHk= ICdb IGNvbmNlcm5pbmc= PG1ldGE= cGxheWVycw== X1BPUw== X3NpbQ== SmFu IHlvdXJz CU4= IHNwaXI= IGNoYW1waW9u IEFuYWx5c2lz YXBh IE5TTG9n X2xpbmVz w7Fh CQkgICAgICAg ODE5 LlNj UmVw ZXRyb2l0 dXJhYmxl TUlU Y29tcGF0 b3duZWQ= X2luZGljZXM= XSwNCg== IGRpc2NvdmVyeQ== IERpZWdv b2Jp LkluZGV4 IHRyZW5kcw== UExBWQ== Lm5v IGxlbnM= X2NmZw== IGFubm8= YWdhbg== IHBlcmlvZHM= dGVybXM= eXo= IGF0dGFja2Vk aWJyYXRpb24= UEVDSUFM X2dyYWQ= IGFjY29yZGFuY2U= LlJlYWRMaW5l LmRldmljZQ== cml4 LmNvbnRhaW5lcg== bWF5 ZXJjaXNl IEx1 IHJn INGB0YI= CQkKCQkK KHVu VEVSTkFM IGxlc3NvbnM= IGFsbGVnYXRpb25z IHRyYW5zbWlzc2lvbg== LlJlZg== TW9iaWxl IFRvdXJuYW1lbnQ= IE51dA== IEdh IENhcGl0YWw= ZGVmaW5pdGlvbg== LWV4cA== Y2xlYW4= IGZhbnRhc3k= IGVuaGFuY2U= ZW50ZW5jZQ== MDMx J106Cg== YWNrZXRz IGNlbGVicmF0ZQ== QCIs U2VyaWFsaXplRmllbGQ= IGFycmF5cw== dGI= CXN0 W2Fzc2VtYmx5 KHJlZw== LmNhdGVnb3J5 IGltcHJvdmluZw== IHNhbG9wZQ== Qnl0ZUFycmF5 T3JpZ2luYWw= IFt7Cg== 5Zue IENsaW4= b2VuaXg= IFNhbXN1bmc= IG1haW50YWluZWQ= IGFnZW5kYQ== ZmFpbA== IHByZXNlbnRz IHRpbWluZw== Lm1hcms= Jz48 IHByb21vdA== IGluY2w= X29ubHk= 66W8 IEF0dG9ybmV5 LWRhdGU= IGxhbmRzY2FwZQ== IGZ1 U1k= LnByb3A= IEFycg== cGFn UGFyYWxsZWxHcm91cA== JzoNCg== IGxvZ3M= YXVuY2g= dW5jaQ== bmFtYQ== VGFibGVDZWxs aXNzdWVz Lns= ZWN1cml0eQ== X2V4ZWM= b2xkcw== IGhvc3Rz IHByb3Rv X2ltcG9ydA== X3NvcnQ= IEJvdw== IE5vcm1hbA== IEZhcm0= LmNyZWF0ZVBhcmFsbGVsR3JvdXA= Um90YXRpb24= LmVycg== IHBsZWFzZWQ= aXRhZ2U= Lldo CQkgICAg TVI= IE1PUkU= IE5hdHVyYWw= X3RyYW5zZm9ybQ== QkFTRQ== ZW5lcmFs dXRkb3du LmNvbW1vbnM= V1Q= IGFhbg== LlJlc3VsdA== ZG9n IGNsaWNraW5n KSwKCg== I2xpbmU= T3BlcmF0b3I= IGNpdg== IG1lcmc= b2J1Zg== bmd0aGVu IFt7 IGNhbmNlbGw= dHJpZ2dlcg== Ljo= V09SSw== ZGVjbGFyZQ== IGRlY3JlYXNl xZtjaQ== bG9vbQ== Lk5vbmU= IE1J IEphc29u IGhlYWx0aGNhcmU= aWFtb25k c3lsdmFuaWE= Kng= IFJh W2I= IHByaW50aW5n cGhhYmV0 IExhYm91cg== b3BwZXI= IHppam4= LXRhcmdldA== X0ZVTkNUSU9O IG9jdA== 0LXQvdC40Y8= 5Zyo IHdlc3Rlcm4= IGNvbXB1dGVycw== IFJFVA== SGFzaE1hcA== W1N0cmluZw== Z2V0VmFsdWU= X0RBVEU= Lk5leHQ= IEZpZg== w6ls aWNrZWQ= 5o4= LU1N IHsKCgo= IGNvbnRhY3Rz IGRpZ2l0cw== UHJvZHU= IHVudXN1YWw= IHJhcGlkbHk= dHVyZXM= IGFuZ3J5 Y2FuY2Vs eHh4eA== X3BhcnNlcg== aWRpdHk= X1BSRUZJWA== NzEw IG1laHI= IHJhcmVseQ== ZXRoZQ== b3Blcw== ICUu d29ya3M= IHRoZXRh IGNvbnRyaWJ1dGlvbg== IFRvbnk= IHNxdWFk NTM3 0LDQuQ== IMOubg== dGhlcmU= b3V0ZWQ= CXE= mYI= Z29vZA== TEk= 6aG1 IExpdmluZw== aXphYmV0aA== IGt0 IERhbGxhcw== XV0sCg== IC8+Cgo= IHJhaXNpbmc= L3JvdXRlcg== X2dhbWU= MzY4 IENVUg== emVucw== LmVz IGZvbnRXZWlnaHQ= KGZ1bmM= bm90aWZpY2F0aW9u ICcuLi8uLi8uLi8= IGJsYW1l 44CCCgoKCg== YW5jbw== OTgw SWRlbnRpdHk= Zm9sbG93 IGFydHM= eHM= IG9mZmljaWFsbHk= IFN0dWRpbw== IHJlY29tbWVuZGF0aW9ucw== IGxvY2FsZQ== IGFtYXRldXI= IEVuYWJsZQ== IGNhcHM= LkVuZA== Mzg4 LWFkZA== X2dzaGFyZWQ= IENU Rm9yY2U= CiAgICAgICAgICAgIAo= IG9yYW5nZQ== IGxw IGFuc3dlcmVk LkdyaWQ= IGR1YWw= IHN0cmF0ZWdpYw== IG5vYm9keQ== IGZhdGFs X2VzdA== KGVs IOyg IEJ1ZGQ= QUlU X2ZhY3Rvcg== LW9uZQ== IEhBVkU= Ig0KDQo= NzYw UHJvZg== IMOkcg== c3RyaW5ncw== IGRpcnR5 IEZhY2U= IEJlZ2lu IEJ1cw== IHdpcw== 5a2X IHNwZWFrZXI= IGNhcnJpZXI= IE9t IGhhZG4= QWxsb3c= OjpfXw== IHZlcmI= IENvbXBsZXRl IEVhc3k= IGJpbGxz ICAKCg== VmVydGljYWw= IHByb24= IERlZmluZQ== IGxvb2t1cA== dmFyaWFibGVz IHBhbmRhcw== dW1lcw== IGlubm9j IHNldFVw IENoYW1waW9uc2hpcA== YXJ0aXN0 IENUeXBl Rm91bmRhdGlvbg== 4LmI IFNldHVw NDI4 IHJlY2lwZXM= IFVJQ29sb3I= IEZpZ2h0 IGF1dGhvcml6ZWQ= X2NsaWNr OTkw X3N1Y2Nlc3M= YW5nYW4= IE1vdW50YWlu IERvY3Rvcg== IGVnZw== IE1lZGljaW5l Y2xlcw== YC4K W2ludA== ZGFzaGJvYXJk IEFwcHJv LWRy IHByb2R1Y2Vz IHJlbnRhbA== IHJlbG9hZA== Mzgx IGFycml2YWw= c3BvdA== IHVuZGVydA== Mzc4 IGVxdWlwcGVk IHByb3ZlZA== IGNlbnRlcnM= IGRlZmluZXM= YWxzbw== IG9wYWNpdHk= IFVuZm9ydHVuYXRlbHk= IElsbGlub2lz INC90LU= IFRlbXBsZQ== IFRyYWls IEtlbGx5 IG1lYXN1cmVtZW50 IHNlcGFyYXRlZA== LWNpcmNsZQ== SGV5 IFJFQUQ= aWdpdHM= IGli IE1PRA== YXR0ZXJ5 0LDQtw== IHZlbmQ= 0LXQvdGC IEh0dHBDbGllbnQ= MzU5 c2FmZQ== X0FTUw== aWNpdA== IENvbnN0cnVjdA== IENsbw== IFNpeA== X1RPS0VO KGJsb2Nr IHdhcm5lZA== Lyoh ITwv YWNhZGVz IG1hcmc= ZXJhc2U= IGRpc3BsYXlz aXN0cmF0b3I= Z2V0cw== IGd0aw== X0dFTkVS bmVk XyU= IGZhdm91cml0ZQ== IEJydQ== IMOh c2Vjb25kYXJ5 IG1hc3Q= IHNvcGg= IFNhZmV0eQ== aGFyZA== MDYy cmFpc2U= IEV4Y2hhbmdl IGNvbnRlbXBvcmFyeQ== IGRyZWFtcw== IHRlbA== IG5laWdoYm9ycw== IEhvbHk= Mzgz Lm1lYW4= ODEw ZW1pdA== IE1lc3M= Q2FzdA== TkVDVA== cGx1Z2lucw== IHJi d3I= IGh1Yg== IFN0dWRpZXM= NTYy IHBvc3Nlc3Npb24= JCgnLg== ZW5zaXRpdmU= IGFkZENyaXRlcmlvbg== X18u IGV4cGVydGlzZQ== QXJjaA== IGN1Yg== ZXJ2ZXJz IHBhcnRpY2xlcw== dWFy IGJvdW5kYXJ5 KScs YWpv IHByZWY= OmA= IGhhcmFzcw== aXU= IHJlYWNoaW5n IG1lZw== IHpv KElE X3JlcXVpcmVk IHPDqQ== IFF1ZXVl QU8= IGdlbQ== ODEy cHRvbg== ODgw ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg NjYw aWpr KHsNCg== IGNvbGxpc2lvbg== IFVrcmFpbmU= IC0qLQo= TlNJbnRlZ2Vy X0JMT0NL NTY3 IFRleHR1cmU= IGRlY2xpbmVk bmFu X3dhaXQ= IHBvbGl0aWNpYW5z NDEz IGNvaW5z IGRlcml2 aGVscGVy IFBlcmhhcHM= LnJlY3Q= IFBvbHk= YWJsaW5n fS8+Cg== IGlubm92YXRpb24= XyI= ICk7DQoNCg== IHNwb3Rz IGNob29zaW5n LmNz IGZsZXhpYmxl VUludA== NDM1 OTMw IHNjcmF0Y2g= LWFs IGZlc3RpdmFs IG91dHN0YW5kaW5n PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 TWVhbg== IE9yZWdvbg== c3ltYm9s LmFjY291bnQ= ZG5leQ== Jycn ISIs OTAx IHBhcnRpY2xl w4M= W01BWA== SVZFUg== RVJFTkNF TlNNdXRhYmxl IENvbHVtYmlh XwoK LmZy IGNvZ24= VlI= IE1ldGhvZHM= IE1hZGU= IEJS IEVsc2U= IGVnZ3M= IHN3aW5n IEludg== IGRpc2Vhc2Vz IGZpcm1z IGxlbW1h fWApOwo= bGluZ3M= IGd5bQ== dW1pbnVt LlRyaW0= TWVt IGNyaXRpY2lzbQ== aWJlcm5hdGU= X1RY aW9uaQ== IGd1aWRhbmNl IHJlcGVhdGVkbHk= IHN1cHBsaWVy IHBhaW50aW5n ODY0 LkZyYWdtZW50 ZWRFeGNlcHRpb24= IHdpcmluZw== IGNvdXJ0cw== V0VC 5pyJ XC4= aWxsYW5jZQ== IGJyb3dz IFBhdHRlcm4= UExJQ0FUSU9O IFN1bW1lcg== Q2hhaW4= IGN1dGU= bWVyY2lhbA== IGRpbA== IEZyYW5rbGlu CWdsb2JhbA== SU5DTFVESU5H aGlzdG9yeQ== IGxzdA== UXQ= U0RM YWxpYQ== aWVyZQ== KC4uLg== CWNpbg== aWZmcw== dmVsb3Bl IFJvb3Q= Y2x1c3Rlcg== VXNlck5hbWU= aWduZQ== PFM= IGZlc3Q= NDE5 IGluZGljYXRpbmc= a2VlcGVy IGNhZGE= w6ln Y29uc2lu IEdC IGxi ZW1vbnk= LWljb25z X2RvYw== QWN0b3I= ZWxlbQ== LkRlbGV0ZQ== IGluZmVjdGlvbg== IFByaXZhY3k= IGdyZWF0bHk= IFBvcw== IFRyZWF0 Rmxvdw== IGF0dHJhY3RpdmU= IE1hcmM= c3Vkbw== dGVzeQ== LWFu OTk4 YWJhbWE= IFdvdWxk IHN1Y2s= aW5kZXhQYXRo IEV0 VGltZXM= Nzgw IGNsdWJz X2Fzc29j IGFjcXVpcmVk KCI6 IGludGVuc2U= Lm1hcHM= RXhwZWN0ZWQ= VG9nZ2xl IGF5 IGxpZmVzdHlsZQ== LWNhbGxlZA== IFNub3c= Vm9sdW1l IGNhbm5hYmlz IERpcmVjdGlvbg== IExpbWl0ZWQ= LXNwZWNpZmlj IGRvd250b3du L2ljb25z IHJldmVu TGVn ODg1 PW51bGw= NDk2 S2V5Ym9hcmQ= JykpLg== ICIiOw0K IGF0dGl0dWRl Lm5hdmlnYXRl LWVycm9y QU1QTEU= IEpheQ== dnI= Y293 LmNvbXBpbGU= IG1lbW9yaWVz X21hcms= IE1pbm5lc290YQ== IGtvc3Rlbg== IHByb2JhYmlsaXR5 d2FybmluZw== IGdlbmV0aWM= Rml4dHVyZQ== IEhhc2hTZXQ= Tm9tYnJl X21vbnRo xrA= LXN0YXJ0 eHlnZW4= CWZ0 aWFnbm9zdGljcw== IE1hdHRoZXc= IGNvbmNlcHRz IGNvbnN0cg== LlN0YXRl 0LjQvQ== Tm92 zrE= IFBhbmVs 5Liq Y29tcGFyZQ== PigpCg== IGFwcGx5aW5n IHByb21pc2Vk IG94 bmNpYQ== IFZhbGlkYXRpb24= b3J0cw== X2N1cg== ZWxlY3Q= ZXll KERhdGE= IHJlcG9ydGVy IEJ1ZmY= Mzk1 IHNy ICI7 aWNreQ== IHRlbXBvcg== U04= IHJlc2lkZW50 cGlyZXM= eXNpY2Fs IGVuZG9yc2U= IFNvbmc= aXNFbXB0eQ== bGVldA== X3V0aWw= IGRpc3Rpbmd1 IFRhbGs= IE1vdA== KGRlZmF1bHQ= LkFyZw== Z29yaXRobXM= X3dvcmRz aW1tZXI= X3Jlc2V0 ZmFtaWx5 V1c= IHNhdmluZ3M= IOKAnQ== X2VuYWJsZQ== c2lkZWJhcg== UnVubmluZw== IGFsaQ== IHRlc3RpbQ== IHdhcm5pbmdz IENoZW0= IEV4aXQ= IGZvdW5kZXI= cGVjdG9y IHJt X2RhdGFzZXQ= IERhcw== IGhhbg== R2V0dHk= w6Fs IG55 IHBvdmVydHk= IHJlc3VsdGVk LmJ5 IFZpc2l0 IG9idGFpbmluZw== LycuJA== ICAgICAgICAgICAK c2hhbGw= X0xFRlQ= VUlJbWFnZQ== X05hbWU= aGF2ZQ== IE5vYg== bHI= LWZvb3Rlcg== IG5ha2Vk IEdhcmRlbg== XEZhY2FkZXM= IGdyYWR1YXRl NDE3 IGZyYW5jaGlzZQ== cGxhbmU= IGNvbnRyaWJ1dGlvbnM= IHN0cmluZ1dpdGg= IGNyeXB0bw== IG1vdmVtZW50cw== YXRoZXJz IGxpZmV0aW1l IGNvbW11bmljYXRl amFy IEZyYWdtZW50 X0lG IE5hdnk= IEZpZ3VyZQ== IHNpbXVsYXRpb24= X3N0b3A= IHJlcG9ydGVycw== IHZlcnN1cw== YWph IM6x IGdvdmVybm9y TGlzdEl0ZW0= IHNlYWxlZA== LkJhY2tncm91bmQ= ZWRp YXNoaW5n IGxpcA== IElo bWVyZ2U= IG5lYw== MDI0 ZWxvY2l0eQ== QVRFRw== IHNlZWRz IGZsb2F0aW5n NzAx X0ZB d2Fsaw== CXVzZXI= X2RlcHRo IHdhZ2U= QGFwcA== Tmls KFsi KHZlY3Rvcg== IHNlY3JldGFyeQ== NDYx IGpQYW5lbA== dmV6 wqDCoMKgwqA= ZGlyZWN0aW9u IEVQ IGh1bnQ= Mzk2 SnNvblByb3BlcnR5 IFBPUlQ= XSIs 0LDQvw== IEZvcmVpZ24= cGFuaWM= IHRyaWFscw== IEFsZQ== IHJ1cmFs LXZhbHVl YXV0aG9yaXplZA== IFNjb3RsYW5k LmRyb3A= IE1U 57E= Mzkx cm93dGg= NTE1 RmlsZVBhdGg= IHJlY2FsbA== aWZsZQ== IGNlbA== IFNFTEVDVA== a24= X2Nhc2U= IGNyb3A= NTQz c3VyZQ== cG90 SUNT IHN0ZW0= IGluZHVzdHJpZXM= UHV0 IGFiZXI= cm9hZGNhc3Q= SWNvbnM= KSIpCg== 5oiQ5Yqf Z3Vp IGFzc3VtZWQ= IHJ4 RUE= 6Kc= RUxM IGRvc2U= IGluZQ== IGRlZXBlcg== bGlkZXI= IG9yZGluYXJ5 IGdvbGY= NjA1 X0lNQUdF IE5BTUU= KG1vZHVsZQ== IGF0b20= IGJlbHQ= IG9mZmljZXM= NTA2 YmV0YQ== IHBoaWxvc29waHk= KEpTT04= LWZpZWxk IGludHJvZHVjZQ== IGNvbnZlbmllbmNl b3B0aW0= PiIK YXRoeQ== IGVtcGxveWVy cXVhdGU= IGVkaXRlZA== QXJndW1lbnRz IE5hdGlvbnM= X18p IG5vc2U= IFNhbXBsZQ== JykKCgo= IGNha2U= LmdldEF0dHJpYnV0ZQ== SEQ= Mzky TW9kaWZpZWQ= NDQ1 IHByZWRpY3RlZA== xYQ= YW5pZQ== U29ycnk= KGRvYw== d2luZA== aWV2ZQ== IHByb3Zpc2lvbnM= QVRFUg== T1RF TVk= LkF1dG93aXJlZA== IEJhdGg= NDIz LkJvb2xlYW4= IGJhY2tlbmQ= Lk1vdXNl YXRlcmFs cGFwZXI= Q29uc3Q= IFZS X2VudGl0eQ== X0NUUkw= IFByb3RlY3Rpb24= IEdN IFN0dWR5 IHNvdXA= b3RpbWU= J3VzZQ== XSI= L3VzZXJz YXVn IEhvbmc= X25vcm0= 44Go IHNlY3Jl KEJ1aWxk IENvbnRyYWN0 b2xhcw== IHNhdWNl IGFnZ3Jlc3NpdmU= IHJhY2lhbA== Y2hhcmFjdGVy QEA= IGNvbXBpbGU= IFZvaWQ= X3JlbQ== X21lbW9yeQ== MzQ4 a2s= IG1pYw== U2FtZQ== VXRpbGl0eQ== IEh0bWw= IFhtbA== UmVhZHk= IGdhbGw= IGFsbGVnZWRseQ== CQkJCSAgIA== IE1ldGFs IFBlcnNvbmFs IGJvcmRlclJhZGl1cw== cnhqcw== b2JqZWN0cw== IHdhbnRpbmc= IGJvd2w= dmVuZG9y b2Zmc2V0b2Y= IFJz IFJhdGluZw== IHJhbGx5 X05PREU= NDE4 IE1peA== IGFkdmVydGlz NDg1 NjY3 IG5hcnJhdGl2ZQ== c2Fs IG1j U0Vycm9y IGZpbmdlcnM= IGFjY29tcGFueQ== IHRpcmVk IHN0cmlkZQ== IGd1aQ== ZWxpc3Q= TG9jYWxl IHJlbGVhc2Vz aWtpbmc= IGFuZ2Vy KSkpCgo= YWxsZXN0 U3VtbWFyeQ== KE8= KGZvcg== IGJhc2tldGJhbGw= IHJvYWRz IEluc3RhbGw= IEZhYg== aXRtYXA= NDc1 ICkpCg== IGludGVyc2VjdGlvbg== aWdoYm9y IEJyeQ== IEhFUkU= U29mdHdhcmU= ZWxmYXJl YWNz NjIy IHRyYWlsZXI= LmdldENsYXNz Y2hhcnM= IHJlZ3VsYXRpb24= IHJlZmVycw== IGRlc3RydWN0aW9u IGNvbnRpbnVvdXM= IEF1c3Rpbg== 6aI= YWthbg== LndpbmRvdw== IFRlbXBsYXRlcw== IGFic2VuY2U= Om4= IGRpc29yZGVy Zmxhc2g= IGRlbGV0 Ym9hcmRz ICAJ Uk9Q ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== IGFjcXU= IGxhd3N1aXQ= IFJldmlld3M= IGdhcmFnZQ== dGltZXI= IGVq IFJlY3RhbmdsZQ== IGZsb3dlcnM= Mzk4 aWxzdA== IEluc3RhbmNl U3VwZXI= ZGV0 ZGlzcG9zaW5n IEVT IElD dmVyZQ== U2s= X2NoYW5uZWxz cHV0ZWQ= L251bGw= bm5lbg== NDMx IEdhbGxlcnk= X2dsb2JhbA== QXV0aGVudGljYXRpb24= IFJhbms= IGJsb2NrZWQ= IGNhbG0= bWFya2V0 CXZhbA== IGF1Zw== cGVyaW9k IENvbnN0YW50 ID8+Ij4K IGxvYmJ5 cGFs Mzc5 IHNpbms= NTA4 aWFo 0KE= dXJuYW1l IGNvbnZlcg== IGludmVzdGlnYXRl Q2hyaXN0 SHVi IElORA== IFBlZA== dXJhcw== CXVybA== IFRybw== IHByZWZlcmVuY2Vz IGd1YXJhbnRlZWQ= YAoK IHBvcnRpb25z IGV2YWx1 Jz48Lw== KCl7Cgo= ZW5jb2RlZA== emlsbGE= LkNsYXNz ICpf Xyc= IHZpZXdlZA== IFBoaWxhZGVscGhpYQ== LnJvd3M= QWRkZWQ= IFRvdWNo ODQw LmRlbGVnYXRl cXVlZXpl c2xpZGU= IFNlbmlvcg== KHRhZw== IGludGVydmlld3M= IHN1YQ== YXRhcw== QAoK ZGlzdGFuY2U= IHNlaW4= bGF0ZXN0 IFByaW5jZQ== IGx1eHVyeQ== IHJlZnI= IEtpdGNoZW4= 0YQ= KGF0 RmluYWw= w7xjaw== X3plcm8= IEFCQw== IE1hbmNoZXN0ZXI= IGNvdw== Q09M X05VTUJFUg== Y2hhbmdlcw== Z2VuZXJhdGU= LlByaW50Zg== MzY5 c2hhcmU= U3RvY2s= IFBU QW5pbQ== YW5nYQ== IGln dXBsb2Fkcw== IHBhY2tlZA== IH1dOwo= KHNlbmRlcg== IFdpcmU= aXNvbnM= IHBsYXlvZmY= XEU= NjA4 L1I= IGhlYWRlZA== QWxwaGE= KG9yZGVy IG9wcG9uZW50cw== YWNrc29u X21lbWJlcg== VHVybg== IFNvdmlldA== 7JeQ YXVnZQ== NDQ4 IGluY29taW5n IGphaw== LWdhbWU= IE1hbGU= IE1vbnRo U3RhZ2U= LmV4ZQ== T3duUHJvcGVydHk= LnNldEl0ZW0= IGRj 5L2c IGJydXQ= IGF0dGVtcHRpbmc= Lmxlbg== IGp1ZGdtZW50 IHNhYg== IGNhZA== IEl0ZW1z Y29tZm9ydA== ZWxpemU= L2xvZw== IGVudHJlcHJlbmU= IGNvbXBpbGVy X3ZhbGlkYXRpb24= cmV2aWV3 IHRleHRCb3g= IGZyYWN0aW9u IEJhbA== PjsKCg== LkF1dG9TY2FsZU1vZGU= IGNhdHM= NDY1 IHJlZ2lzdHJ5 dWx1cw== Rkk= cGF5bG9hZA== LXNlYXJjaA== IHN0YXlpbmc= YWNpb3Vz RGVjb3JhdGlvbg== UmV2aWV3 SW5m S2VlcA== aXRpcw== LFN0cmluZw== Q29vcmQ= IHBlcm8= U2V4 IEF0bGFudGE= dWVzdGE= QXJnYg== Pio= fV8= Rm9vdGVy IGVtcGxveWVk X2JvdW5k dmlkZQ== LmZ1bmM= JHNjb3Bl IHNwbw== IEFuYWw= b3VuY2Vk YXJvdW5k IHJlc3RyaWN0aW9u IHNob3Bz 5YA= IExhdGlu LWNvbA== IGJhcmVseQ== IEV1cm8= RXI= IGZhaXJl X2Rpc3RhbmNl X3VubG9jaw== UXVvdGU= SVZBVEU= IOWI IGFpbWVk IFJldHJpZQ== Lml0ZXI= IHdyYXBwZWQ= IGFncmVlbWVudHM= c3RydW1lbnQ= KHByb2R1Y3Q= IHN0dWRpZWQ= LnNldFZhbHVl IHll IENhY2hl TUJPTA== IHF1YXJ0ZXJiYWNr IHN5bnRheA== LmdldEVsZW1lbnRzQnk= LnZlcnNpb24= d2Vic2l0ZQ== UnVubmVy X3NpbmdsZQ== YXRpdg== IEFsdGVybg== IEJlYXV0aWZ1bA== cmlnaHRhcnJvdw== IGRpdmVyc2l0eQ== cGxhc2g= KGNv LkZpbGw= IHR5cGluZw== Mzg3 MDIz IGNsYXI= SGl0 T08= YWNjbw== NTA3 d29ydGg= IHNjcmlwdHM= IE11c2xpbXM= IExM ZXJ2aW5n KGJvb2xlYW4= IGJhc2ViYWxs IENBTg== Mzk0 MDQ0 TUFJTA== ZGVwZW5k IHJlc3BlY3RpdmU= IGNvbnN0ZXhwcg== Lio7Cgo= J10pKQo= IHlhcmQ= IGlkZW50aWNhbA== aWZlY3ljbGU= VVNI dXBpdGVy LnZhbGlkYXRl Y2xp SVNURVI= SW5kaWNhdG9y RmFpbA== IGRlbW9jcmFjeQ== LnZhcg== IHNhdGlzZmllZA== LS0tLS0tLS0tLS0tLQ== ZW5jZXI= aG9y IHJvdW5kcw== REFP b2E= IGZsYXNr PWM= W10K L2Rpc3Q= IHBhcnRl IGNvbmZpcm1hdGlvbg== ZXJvbg== YXdhcmU= PD8+ IGRlcGVuZGVuY2llcw== IFZpZGVvcw== LXJvdw== ICoqLwo= IG5vdQ== IGhvdmVy 5p4= IG5pbg== IFVTRA== TWFj X0xvYWQ= IG91dGNvbWVz X3NvY2tldA== IHF1ZXJpZXM= d20= NTky IGhpdHRpbmc= aW51eA== TWljaA== dWRnZQ== QVRBQg== IHZ1bG5lcmFibGU= 5L4= IHBvcnRmb2xpbw== OllFUw== CW1hcA== Qm91bmQ= IGl0ZXJhdGlvbg== aW5jZXNz IGFjdG9ycw== IFF1YWw= X2NsZWFu 44CR44CQ TVNH R3JlZW4= IE9mZmljZXI= IHNtb2tpbmc= Pics IEZsbw== Kys7 NDMz b2x5Z29u IGJ1bGs= IGRyYW1h IGV4Y2VwdGlvbnM= b3NlZA== ICsNCg== IGxlZ2FjeQ== Q1Y= IGNvbnRyaWJ1dGVk IFRlcm1z IGJ0 NDM0 IHVudHVr IGFsaWVu PT09Cg== CVZlY3Rvcg== IGxz T25saW5l LmZhY2Vib29r bnVtZXJpYw== b2NrZXRz QXV0 YnVyeQ== LXJlZHV4 IFJlZGlzdHJpYnV0aW9ucw== R0xPQkFMUw== dXJyZW5jaWVz IHRvbnM= 4oCZLA== IMOq KGNvbA== IFN5bWJvbA== IHN0YXllZA== IE1M IG11bmljaXA= IHNleG8= U2Vu bnI= IGdhaW5z IHNob3J0bHk= Lk1lbnU= w70= S05PV04= IG9wZXJhdG9ycw== LVY= IFBhdHJpY2s= L2FkZA== X0NP aXJhdGlvbg== KHBvc3Q= UG9zdHM= L18= IHBsdWc= IGludGVsbGVjdHVhbA== IG1ldGFi IHByZWduYW5jeQ== IFByZW1pZXI= bm0= IHByZWRpY3Rpb24= NjA2 IE1pbmlzdHJ5 VGhyZWU= dmFsdWF0ZQ== IE1pbmk= YnU= 0L7Qtw== PHVs IGRk b2x2aW5n IEN1dA== NjAy IHNjaGVt LnRyYWlu aXRhdGU= IHJpY2U= IGJpcmRz 44Gr bWlkZGxl c3RydWN0aW9ucw== IG5lcnY= YXF1ZQ== NDUz IGZsdQ== IHN1cnZpdmFs IEdhbGF4eQ== IEZhbnQ= Lk9yZGVy QXR0cmli aXJ0cw== w6lj TW92aWU= IGNvbmNl cXVhcnRlcnM= IG1vb2Q= LkFkZFJhbmdl OTQy IHJlc29sdmVk 44OI IGJ1cm5pbmc= NzAy CQkJCQ0K IFdF IGhvc3Rpbmc= TEFC IG1hbmFnZXJz IHN0cmVuZ3RoZW4= PGNvbnN0 IEZpcmViYXNl b25lZA== IEplYW4= Jzwv IDo9Cg== YWxnb3JpdGht IEFyYw== IGZyb3plbg== X2V2ZW50cw== IG92ZXJzZQ== Z29vZHM= IGZhaXQ= IHZpYWdyYQ== b3Nlcw== OTIy IGNvbXBpbGVk IEF0aA== IHN1YnN0YW5jZQ== YW5pbWF0ZWQ= UEY= cHJldmlvdXM= IHJvb3Rz KGZpbHRlcg== b2x1bWVz IGludHJv KGV2dA== IEJhZw== IERlZmluaXRpb24= IEZlYXR1cmVz QW5ub3RhdGlvbg== IGF2Zw== KHN1bQ== UVVJUkU= IHJlbmRlcmVy IEZpeA== LmRhdGV0aW1l PWRldmljZQ== U3Bl Z2V0SW5zdGFuY2U= IGV4dGVuc2lvbnM= X25ldA== IFBhcmxpYW1lbnQ= IGNvbWlj NDY4 IFBpY2s= YXJtYQ== CW1vZGVs IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IG1lbmc= bWFudWFs YWRhcHRlcg== fS0= ZWRiYWNr IGVsZWN0cmljYWw= IENvdW50ZXI= QXBwbGljYXRpb25Db250ZXh0 X2J5dGU= KGJ5dGU= IEF1dG9t IHRlcnJvcmlzdA== 55A= dGhyb3VnaA== IGZpc2NhbA== b25pbmc= NDU1 IHNwZWN0cnVt IGJpdG1hcA== IHNsZQ== cHJvZA== IGFnZWQ= IGJlbmU= IFNwaQ== IGJyaWxsaWFudA== IHN0YWJpbGl0eQ== IGRpYWJldGVz IGNvbmZpZ3VyZWQ= Ym9uZQ== NzQ4 NDg0 b3VzZXM= Lmdvb2dsZWFwaXM= RkFDRQ== IGluc3BpcmF0aW9u IERldHJvaXQ= ZW5jaA== 0YDRgw== dmVoaWNsZQ== U3RhdGlvbg== IGhvbGVz IGR1cmNo Lk1lZGlh IENOTg== aW5uaW5n NjA0 IFBlbm5zeWx2YW5pYQ== IGVtb3Rpb24= U2VjcmV0 w6FyaW8= IFJhdGU= NDUx RGVwdGg= IG1vZGVz NDI2 KGlkeA== IGhlcw== IGdyZXk= U3RhbmRhcmQ= UXVlc3Q= YnV5 c3Vy IFRyYWNr b21t Lmds IChc dHdv X0lP b3NleA== X3JvbGU= 56S6 cm91dGVz U2hvcA== IEFTQw== IG1lbWNweQ== ZGlyZWN0 NDQ2 ICoKCg== IEJN IFBvcg== X2hpc3Rvcnk= IFJlc3BvbnNlRW50aXR5 LnNldEZvbnQ= IGVuZ2FnZW1lbnQ= LGg= IFdvcmRQcmVzcw== ZmVjaGE= IGVudHJhbmNl RGVzcGl0ZQ== SURFTlQ= IHNhbml0 IEdlbmVyYXRl KCIiLA== X3ZpZGVv U3RyYXRlZ3k= X29r IHRpZXM= IGxvZ2ljYWw= IEJyb24= KEZpbGU= IE1vaA== LlNwbGl0 LlRyeQ== IEhpbmQ= IHNjb3Jpbmc= IGFwcHJvYWNoZXM= IGZsb3Vy VlJU ODA0 VVNUT00= NDY3 c2NyaXB0cw== IEVwaXNvZGU= Mzg5 IEFtYg== X09S IGZyYXVlbg== IHVubGlrZQ== IHJpZGluZw== IHBpdA== IHRyYW5zZg== YXJ0ZQ== 4LmJ cmFwZQ== cmV0dmFs X2FmdGVy Ijw8 NzAz IEJlcmxpbg== IHRpc3N1ZQ== LkludGVudA== INC00LvRjw== IHN0dW5uaW5n IEhhbA== LkludGVnZXI= IHdoZXJlYXM= IGRlbGVn IHVzZXJOYW1l IGZvcm1hdHM= IGNvbXBlbnNhdGlvbg== IEh1bQ== YXJyaW5n IHVuc2FmZQ== UGlu Y2x1Yg== a2V5d29yZA== X3RoZW1l IGNhbGxlcg== IGdob3N0 IGVudGl0bGVk IE1hcw== NTYx IGRlbW9uc3RyYXRl IEhvd2FyZA== RHJvcA== I3VuZGVm NDI3 IGludm9rZQ== IEJyaWRnZQ== ZW5kZW4= aWJsaW5n U2xvdA== QVRBQkFTRQ== IHRlbXBlcmF0dXJlcw== c2VyaWVz IFJlbWVtYmVy Q2FsZW5kYXI= QkY= PT8= MDY0 IEFG KGh0dHA= bWFrZXJz ZmluaXR5 cHJlY2F0ZWQ= V0g= b2xpZGF5cw== LXVu aWFsZQ== XFVzZXI= cmVhc29u JywKCg== T1dFUg== IHByZWRpY3Rpb25z cHJvYg== Lm5u ICc7Cg== LkZyb21Bcmdi X0xPTkc= IHRyb3Vi IHVuaXR0ZXN0 ZWxpaG9vZA== CWlz NDQy IGNvbnNlYw== TEVBU0U= IGNsaWNrZWQ= IHRlbXBsYXRlcw== Qlk= cGVybQ== bWF0Y2hlcw== bGF3 KHRm X3JhdGlv aXRlbXB0eQ== IGNyZWF0b3I= Qml0cw== RW5jb2Rlcg== Ki4= IFVJVA== IE1hc2s= Y3VybA== LWdv IE9jYw== Y29ycmVjdA== IEdlcg== KGxheW91dA== dW5jdA== LmRpc3BhdGNo O2FtcA== LmlzUmVxdWlyZWQ= CWRv bWly IHB0aHJlYWQ= LWF1dG8= IEljZQ== IHZpb2xhdGlvbg== IGNvbmNsdWRlZA== IHZhcnM= Y2FudmFz IFRlbXA= IFBoaWxpcHA= iOuLpA== Y3JlYXNl IGZpc2hpbmc= YWJiaXQ= IGNvbmNlbnRyYXRpb24= aXJ0aGRheQ== IGdyb3Nz IGtp IEhhbmRsZXI= IGltbWlncmFudHM= 6IA= VW5k cG4= cmFj NDU0 IENvbnN1bHQ= Zm9sZA== IHN0cnVnZ2xpbmc= aGVhdA== R2VuZXJpYw== IHJpZGlj IENPVklE b21pdGVtcHR5 X09QVElPTg== 6rCA IGNyZWF0dXJlcw== X1BBR0U= ZWk= KGhvc3Q= X0hQUA== NTE2 IFhYWA== IGF3aw== YXNjYWRl IHByZWc= cHJvdmlkZXI= UGFs ZWdlbg== Y2xvbmU= LlJlZ2lzdGVy IGF0dGFjaG1lbnQ= YmVpdA== dGhlbGVzcw== KERhdGU= IEZvcmVzdA== Q0dSZWN0 IGNoaWxkaG9vZA== YW1pbmU= YXhlcw== J109 TmF2aWdhdG9y IHJlcGxpZWQ= X2ludg== LFQ= IEZlYXR1cmU= NDM4 ey0= TEFORw== IGNvbnZleQ== 55So5oi3 IFNlcmlm IEF1cw== bGljaGU= IHVudXNlZA== IG1vbnQ= bm9kZXM= IHNldQ== LmNsYXNzTmFtZQ== bm9ybQ== X1NFUlZFUg== IHdpbmc= aW54 UmF3 IEphbQ== NTkw IGluc2lnaHQ= NDcx NTM1 IE5H IEludGVyZmFjZQ== IHN0bXQ= IG5hbg== Y3VsYXRvcg== LWFwcA== KEJ1bmRsZQ== TWVzc2FnZUJveA== 4K4= IG1lZXRz dWJ5 T3B0aW9uUGFuZQ== aXRhcmlhbg== IGNvbGxhYm9yYXRpb24= bW92aWU= IGFybW9y X2JpdHM= IEhhdmluZw== IG51ZGU= IFNldHRpbmc= IHN1Y2M= RGVsYXk= LmNvbXBvbmVudHM= YWNodXNldA== IEFsZXhhbmRlcg== wqk= IG1ldGVycw== IHByZXBhcmluZw== IGluY2VudA== 5ZM= IGvDtm5uZW4= IENvbnNlcnY= IG51bWVybw== YWNodXNldHRz LWludA== IGVtcGhhcw== bGF5b3V0cw== RXhjZWw= SUJBY3Rpb24= IHJlc2lkZW50aWFs ZWxpbmc= IE5D IEFsbGVu IGNldHRl IG1pbmRz LnJlcXVpcmVk 2LM= IEdpcmxz IH07 IHN0cmluZ1dpdGhGb3JtYXQ= IGFkZHJlc3NlZA== dGhleQ== IEJsb29k cG9zZXI= IGphbQ== yJk= 5pWw5o2u IHN0ZG91dA== IFVURg== Q2xhc3Nlcw== PiI7DQo= IFNhdg== LkJvbGQ= IGVuYWJsZXM= CXRtcA== IG1hbnVhbGx5 IFNxdQ== dXNlcmlk LmZ1bmN0aW9u LmNhY2hl TE9QVA== LlNlcnZpY2Vz NTg4 ZGRpdA== dGlt PGltZw== IFRoaW5ncw== IEV2ZXJ5dGhpbmc= IGFwdA== Mzk3 ZW1hbmQ= IHJvbGxpbmc= 66Y= LmxldmVs IHN0b20= IFdpbnRlcg== IHZpZXdpbmc= KHZhbHVlcw== b2NvbXBsZXRl dmlh dXBv IGFib3J0aW9u NTMy acOocmU= 77yR X0JVVFRPTg== X2RvbWFpbg== IGJyYQ== IEFzdA== aW5hcw== IHN0YXRpc3Q= Y29k TFI= IGRyaXZlcw== IGZvbGxvd2Vycw== IGFsbGllcw== CWN1cnJlbnQ= ZWNlc3Nhcnk= IGRhbWFnZWQ= X3B0 YW5kbGVz b3VudHJpZXM= IHNpbXVsdA== ZXU= IGNvbnRyb3ZlcnNpYWw= X0dST1VQ IHJpYg== LkluZm8= Om1t Lm5vcm1hbA== X0FERFJFU1M= IO2V YWRkbGU= IER1cg== LkVsZW1lbnQ= NjU2 V2FybmluZ3M= IGNyZWRpdHM= IGluaGli IGVtaXNzaW9ucw== NTQ1 IGhheg== LnlvdXR1YmU= dWdnZWQ= IGJvdGhlcg== IEthbnNhcw== IEZpeGVk IFRlc3Rz IEZJWA== NTc2 VW5pZm9ybQ== IGtvbnQ= Pj4+ c3RhdGlvbg== bG9yZQ== YXR5cGU= aXNob3A= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= NTIx Q29tYm9Cb3g= IHZhY2F0aW9u IGluaXRpYXRpdmU= IGRlZmF1bHRWYWx1ZQ== Nzcw Y29uY2F0 IEto NjMy IFdlbGNvbWU= aXplZE5hbWU= TWlncmF0aW9u IGdyYWRpZW50 SG90 IGhhcmRseQ== ZWxv IFN0dWRlbnRz IGxvb3Nl NzMw YXR6 LlNlbmQ= Jy8= IHVuaXZlcnNhbA== IGVudGVycHJpc2U= IHJlZ2V4 IHZpc2l0b3I= IEZseQ== U2Vx 4LiZ IFZpc3VhbA== IGxpYnJhcmllcw== YXRvZXM= UGF5bWVudA== NDQ3 IHBlbnQ= IGdhdGhlcmVk VlJUWA== IERN U3BsaXQ= IGxldHRpbmc= 0J0= X2Vycm9ycw== ZXBvY2g= UEFSQU0= Y3U= 0YHRgtCy b2x1dGlvbnM= RWRpdGluZw== Zm9udHM= IGFsbG9jYXRlZA== IEJhc2Vk KFk= IEp1ZGdl IGJyb3RoZXJz RklMRVM= w6dv NTMx d2I= X1BJ J14= IHN3b3Jk LnNlcnZpY2Vz IG5s VGlt aWdn IE1vb3Jl IGNyeXB0b2M= 5Ye6 X3Bvc3Rz b3RhdGU= Pyc= Li4uLgoK IGts PSIk IGRlY29yYXRpb24= 4bqh IERJUkVDVA== R1VJ KT0+ewo= IG5ld3NsZXR0ZXI= IHByZWNpcw== KHBvaW50 IEVxdWlwbWVudA== dXR5 IERhdmU= IHBhcnRpY2lwYXRpb24= dWFyaW9z eGl0 LkFz RVRFUg== b3JvdXM= IHNoaWVsZA== W10+ aWxpdGFyeQ== Lm9yaWdpbg== IHByb21vdGlvbg== VW50 IGN0 VFJB NTU2 Vmlld0hvbGRlcg== IHNpZ21h ZGVsdGE= YXJlaG91c2U= Y29udHJhY3Q= KFZlY3Rvcg== NzIx IGNvbXBldGU= L2Zvcm0= L2NvbXBvbmVudHM= IG5y IEluZG9uZXM= INC+0YI= IFZvbHVtZQ== LmZpbGVz KHJlc3A= L21vZGVscw== IHN1cmY= c3RhbmRhcmQ= L28= IFhDVEFzc2VydA== VklDRVM= LkNvZGU= U0VE IGFjdGl2YXRl RGVsdGE= IGxpbWl0YXRpb24= cmlq IHByZWduYW50 Ol4o IHNvdXI= cGll ODAz IGV4cGVuc2U= aWNhdGlvbg== IExhcmdl IMKx IEJvd2w= KG1vZGVscw== L04= ODU3 UGE= LnJlbG9hZA== IHdvbmRlcmluZw== NDYy RXhlY3V0aW9u CSAgICAgIA== IEdyYXBoaWNz IENvbnRpbg== X2pvYg== IGdldE5hbWU= IE1hZ24= IERXT1JE bWFk IG5o ZmVhdHVyZXM= fSIpOwo= aGVldHM= KHRyYWlu em4= IHJlY3J1aXQ= LmNvbm5lY3Rpb24= IGJhcnJlbA== IHN0ZWFt X3NldHRpbmc= IGFuZ3VsYXI= YW5lb3VzbHk= IGJpbA== IE5vcm0= NTIy KCEk aWJ0 JSg= IHBvc2l0 IEZhdGhlcg== aW50ZW5kbw== NTY1 TGl2ZQ== MDQx IHBvcnRz IG1lag== IGxhbmRpbmc= cG9uZGVy IGNvZA== X0hFQURFUg== Lk1hcmdpbg== IGJhbGxz IGRpc2N1c3Npb25z IGJsZW5k SGV4 IGZhcm1lcnM= IG1haW50YWluaW5n ICAgDQo= c3lu W1Q= cnVz NDM5 dWZmZXJz IGNvbnRyaWJ1dG9ycw== X3N5cw== LkRlYnVn IGNvbnN0cnVjdGVk b21lcw== P2lk c2xpZGVy IHN1cHBsaWVycw== NjEx c2NyaWJlcg== cGVz 0J4= IjoNCg== XENvbnRyb2xsZXI= KSkKCgo= IGx1YQ== TXVsdGk= RU5T U3Jj IHBldGl0aW9u IHNsYXZl bG9va2luZw== VkVSVA== CXZlY3Rvcg== U3BlY2lhbA== aGg= YW5uZQ== IE5pZ2Vy L3ZpZXdz emluZw== ZW5kYW50 PEM= c3BlZWQ= NTE0 IHt9OwoK QmVnaW5Jbml0 IGZvcGVu QFJlcXVlc3RNYXBwaW5n RW5kSW5pdA== IHB1bmNo U2VuZGVy NjAz 6ZQ= Z2V0TWVzc2FnZQ== L3R5cGVz LlBJ KCcnKTsK b2N1c2Vk KGFsbA== IGRyb3Bkb3du KS5fXw== IFZpbg== LkZvcmVpZ25LZXk= NjEy Y2FuZg== b3VyZWQ= IE9yZ2FuaXphdGlvbg== INCw IEN1bHR1cmU= KGNscw== LF8= OTAy cmdiYQ== 7J2Y LmRhdGFHcmlkVmlldw== IGRvemVu IEdlcw== ODA1 NDY0 X3NoYXJlZA== bmljaw== IGhvc3A= b21ldGVy NDk1 IGNsYWltaW5n MDMy aWJsZXM= cmlr 5piv ZW5hcmlv IGRlbmdhbg== b2Ji bW9udA== X3Jhbms= KCcvJyw= IGFwb2xvZw== UHM= X3Bvd2Vy IEdyZWU= IGZ1bGZpbGw= IGZpcmViYXNl OTEw IGZhcmU= IEhpbQ== IGJlYW4= 4oCmLg== IFNQSQ== X1JY IHBlcmNlcHRpb24= cmVsYXRpdmU= Y29tcGlsZQ== dXVt dXRvcw== YXVj IEFzaw== IGluZGljYXRvcg== L3Ro LnNldFN0cmluZw== IFdpc2NvbnNpbg== LkRvbWFpbg== IGFydGlmaWNpYWw= RGV2ZWxvcA== IFNhcmFo IGx5aW5n KHNlYXJjaA== IEVtcGlyZQ== dXJyaW5n 5pe26Ze0 PSIkew== IGdldElk IFBheW1lbnQ= dHJhbnNpdGlvbg== IF0u aXhpbg== VlQ= LXNlbGVjdA== IGRlbW9uc3RyYXRlZA== IGxhc3ROYW1l ZW1wbG95bWVudA== LmdldFByb3BlcnR5 IGZvdWdodA== ZmlsZU5hbWU= IFBlcnM= NDUy LWNhcmQ= YXN0cg== YXR0cnM= IHByb21pbmVudA== RGVzaWdu YW5jb3V2ZXI= 44GX44E= YXJkbw== c2VjcmV0 IHJhZw== IHBvaXNvbg== LW1hbg== LG9taXRlbXB0eQ== NzQw CXVu aXR6ZXI= IENhc2lubw== IFJvc3M= LWZvb3Q= KHJlc3VsdHM= UGxhbg== IGxhc2Vy 6riw X0RS NTIz RmFjZWJvb2s= NDQ5 IGJvYXJkcw== c3Rh XV0s Njc1 IHRpbGVz U0laRQ== ID1+ OTcw IHByZW1pZXI= b2NhYg== IGVuY29kZWQ= IHJlc2VydmU= NjA5 IEFmZ2hhbmlzdGFu IExpc3ROb2Rl dXJscw== IHN1Ym1pc3Npb24= IG5ldQ== NDc3 ICMrIw== X1BPU1Q= IG1vaXN0 ZWxsaQ== ZWxsaWdlbnQ= LmFsZXJ0 w7Nk YnJl IENvbGxlY3Q= IGdyYXBoaWM= IGxvbmdpdHVkZQ== IFByb3ZpZA== IENhbGN1bGF0ZQ== eGZmZmY= Y3JpdGVyaWE= IHdhdGVycw== cm9jaw== bG9xdWVudA== IFRyaWI= NTEz IGJ1cnN0 IHN1ZmZpeA== LkV4dGVuc2lvbnM= aXNoZXM= aXZlbA== IExJS0U= IEdldHR5 LkFjdGlvbkV2ZW50 LnNsZg== IEhBTA== dXBhbA== RUFS NTI0 dWRp X3RpbWVvdXQ= VUY= IFNpbmdhcG9yZQ== IEFkdmVudA== X2ludGVydmFs Y2hhZnQ= IEVtZXI= IHRlbGVwaG9uZQ== IFR1cms= X2ludGVyZmFjZQ== IE93bg== IGVuY291cmFnZWQ= PE9iamVjdA== X1RleHQ= IE9udGFyaW8= IEFwcGx5 LmZpcmViYXNl IGFudGli UHJpb3JpdHk= ZW5leg== RGF5cw== Y2lk dXJyZW5jZQ== Oy8= aW5uZWQ= 0YHRjw== IHZleg== Znc= Ly8k YXR0YWNr NDU4 IHN0YXJ0dXA= YWluZXJz LmZyYWdtZW50 b3BhY2l0eQ== KGNvbm4= aGVpbQ== Lm5ldHdvcms= KHN0cmVhbQ== Njcw IE5PTg== dG9s ODMw IFhib3g= IERT IGNhY2hlZA== IHByb3N0aXR1dGFz IEJhbHQ= KCdb NTc1 IG5vZXhjZXB0 Iic= IHNk LnZhbGlk X2Fn IHJhY2Vz NDgx IHJvZA== aXR1ZGVz PD4o NTQ0 LlByb2R1Y3Q= Rm9ybXM= TkVX UGF5 CWJvb2xlYW4= X2NvbnRhY3Q= IEVsZWN0cmlj c2tpcA== IHd1cg== IGNocm9uaWM= X2RyaXZlcg== OTQw IFNhYg== IFVsdA== IFJhZA== U1RBVFVT IExld2lz T0I= IGdpZnRz LlJlYw== VFJVRQ== IGludGVuc2l0eQ== TWFya2Vy LmNvbXBhcmU= ZmZpYw== Q29va2ll IEJhYnk= IEJpZ0RlY2ltYWw= aWxldA== IEhPTERFUlM= IExhZHk= IGx1bmc= IEFsYWJhbWE= IGRlc3M= YCk7Cg== IEJ1aWxkZXI= X3JlZ2lvbg== IG5ldXRyYWw= OTA5 Qm90aA== IGhw IGhvcm4= IHNlZ21lbnRz IEVD Ij0+Ig== KHJlYw== IFBp R00= IGxhcHRvcA== U2NhbGFy NDYz aXNk LWRpYWxvZw== IEFuZGVyc29u IG1pc3Rha2Vz NzA4 IEhhbg== amVz ZXN0aW5hdGlvbg== NDM2 IHByb21pc2Vz Ymlk IFNjaWVudA== R0lO IFBlcmZvcm1hbmNl YmFnZQ== LnVzZXJz bGVhZGluZw== IG9yYWw= R3JhcGhpY3M= NDg4 X1BUUg== NTE4 aGFuZw== IGluZXY= cHJvY2Vzc2luZw== RmFjdG9y IE5B JHN0cmluZw== IGdyb3VuZHM= LlNhdmVDaGFuZ2Vz Y2xvY2s= OTQx Y3JpcGNpb24= IE5ld3Rvbg== Z2M= LmluY2x1ZGVz IGJsYXN0 ICctJw== IHB1ZWRl NDY5 LlNlc3Npb24= IGdyZXA= X2ZpbmFs IEdheQ== IEdpdmU= aXJp LXN0YXI= IFVJSW1hZ2U= X2Vwb2No dWJi ZW50aA== IGVsaXRl IGNhbXBhaWducw== IFBvcm5v X2Fzc2lnbg== UHJvdG9jb2w= IEJlaW5n IEFpcnBvcnQ= IGNvbnZlbnRpb25hbA== IFdhdA== IENJ RVRB IEFudGhvbnk= IHRhYmxldA== KGZvcm1hdA== IGNvbnNpc3RlbnRseQ== IElvd2E= NDc0 IGF2YXRhcg== MDI3 LmN1cnNvcg== IVs= IGhhbmdpbmc= SGVy U3VjaA== JzsKCgo= b3JnZW91cw== KCk9PQ== IHZpZXdNb2RlbA== IOOD IGVscw== IEFnZW50 RmV0Y2g= YXBvcg== IGN4 cHJlYWQ= IFBpZXI= b2VmZg== NjE2 U24= ODkw IFZpcnR1YWw= QXBy LldoaXRl NjE1 X01PRA== IFBvaW50cw== 5aSx IGdlbmVz IHZlbmRvcg== IG1haW5zdHJlYW0= PHNyYw== IEVsaXphYmV0aA== RGVjb2Rlcg== LXN0YXRl IEdsYXNz bmN5 YWRpYW5z X21vbg== IFJlbW90ZQ== IHdpcmVsZXNz IE1p 5Yk= NDY2 6KGo c3RhZ2U= IFRpbGU= bGxpYg== VmFyaWFudA== PT0K IGdvbGRlbg== KFFTdHJpbmc= LnB1dEV4dHJh IERvbQ== IEFuaW1hdGlvbg== IGludGVyYWN0aXZl aWZhY3Q= 6Zmk TEVU IGZyZXF1ZW50 IDw+Cg== RmlsZW5hbWU= IHNuZQ== IEZvb3RiYWxs IHJpdmFs IGRpc2FzdGVy aW9uaWM= IERhbWFnZQ== LlJlc291cmNl LWVu IFR5cGVz Z2V0U3RyaW5n KGJvYXJk IGJvbA== cGxhaW4= enlt 4Liy IHNjYW5uZXI= aWxkZXI= X21zZ3M= 5o8= KGludGVudA== IGRlc3RydWN0 IGJ1c3Q= IEVtcGxveQ== b25p IFVJVmlld0NvbnRyb2xsZXI= IG9kZHM= ZWFyZXI= R2VvbWV0cnk= IHlpaQ== X0VYUE9SVA== IEF0dGFjaw== IG5pZXQ= IGltcHJlc3Npb24= IEdpbA== X3Byb2I= NTI4 IENG IEV4cGVyaWVuY2U= L3BsdWdpbnM= Lk1ldGhvZA== IGJlbGllZnM= TmF0aXZl X2J1aWxk IHZpZw== IHJhbmtz Y292ZXJlZA== NzA1 c3VjaA== R3VhcmQ= LnBhY2s= YWRkZXI= ODA5 aXZpYQ== bG5n INCy0Ys= NTUy VGltZXN0YW1w X25vdw== IHBva2Vy IHVuYw== IHNoYXBlcw== LXR5cGVz X3BlcmlvZA== cGs= IHZldGVyYW4= IHNvbm8= IGFwcG9pbnRlZA== b3ZlcmZsb3c= LmRyaXZlcg== X2NhdA== dXR0 cGxhbnQ= aW1i IEFjY2VwdA== IGNvbmNlcnQ= CW5vZGU= CXo= Pz4NCg== IGJhbm5lZA== CSAgICAgICAgICAgICAgIA== IHRveGlj IGRpc2FwcGU= NDcz yJs= IGdyYWNl YXRlZnVs UmVwbHk= IENydXo= NDg2 IHNjcmFw IGtleXdvcmRz c2ltcA== IG1vcnRnYWdl IGN5YmVy IEV4ZWN1dGU= IGxhdGl0dWRl aWZ1 LkNPTQ== ZGJv IHNvcnRz IEdhcw== b21pYWw= LkxvY2Fs Q2VsbHM= LlJlcGxhY2U= U3RyaW5ncw== LmZpdA== IFRoaXJk JSIsCg== IHt9Ii4= IFNvbnk= IFs6 NTg1 IGZhbGxlbg== LicpCg== aW5o IE1D IHJlZGlz Q29kZXM= IHByb2ZpbGVz aG9vaw== UmVkdWNlcg== X0ZVTkM= IG5hdmlnYXRl c3RybGVu IGhvcm0= 4Z4= IFNS LmJvb3Q= IGRpZ2VzdA== CWhlYWRlcg== LmZpbmRPbmU= 5oE= RGJUeXBl bmlh X21lcmdl IGRvbm5l L0dldHR5 X0NIQVI= IGJhbmRz LlVSTA== YXJ0aWFs IGZyZXE= IHNpc3Q= Tmc= IHJlbmRlcmluZw== XENvcmU= V2lkZ2V0cw== IFZB IGFjdGl2aXN0cw== U3Rl PV8= YWxsYQ== U3RhbXA= IGxvYWRz IHh4 IExlYXJuaW5n Lk12Yw== dWly KCIk IGNvbm5lY3Rpbmc= UmVhZE9ubHk= dXJ1 IEVhZw== QklU X0RFTA== 5ac= YXJyYXNz ZXh0ZXJuYWw= IFlPVVI= IEJyZXc= IEZpdmU= IHJlc2l6ZQ== aWdpZA== ZXJhdGlvbg== NjUz INGN NTM2 5Yqg MDM5 IENhdGNo 2YE= IExlb24= YW1pbA== LkJvZHk= Q2xpcA== L2xpc3Q= LmJy RWRpdFRleHQ= CWRi LkdhbWU= KEJ1aWxkQ29udGV4dA== YmFja2VuZA== LlJlZA== ZmFjZWJvb2s= NTI5 LnVybHM= bXI= cm9sbGVk LS0tLS0tLQ== IGludGVydmVudGlvbg== IHJldGlyZW1lbnQ= IEtpdA== IFBSRQ== VXBwZXJDYXNl IFNvY2tldA== IDot IHN0dWR5aW5n IE1ldHJv YXJkZWQ= IGNvbnZlcnNhdGlvbnM= Q2FsbGVk IGV4YW1pbmU= ZXJ0aWZpY2F0ZQ== Lmd6 LXJlc3BvbnNpdmU= IHJlZnVuZA== X25ldHdvcms= MDI2 YWxsb3dlZA== ZW1wdA== IG1lYWxz Q2F0ZWdvcmllcw== IHRyYXZlbGluZw== IGtn IHNoYW1l ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= IGV4cGxpY2l0bHk= IG1hdGhlbWF0aWM= IFN1aXRl IFJHQg== KioqKioqLw== IG1peHR1cmU= bGVhcm5pbmc= LnRlbXBsYXRl YXR0cw== d3g= CWN0eA== LnByb3BlcnRpZXM= IGRyaW5rcw== IEVpdGhlcg== c2V0VGV4dA== LmdldERhdGE= LnppcA== IHJldmVhbHM= PHRhYmxl Lkhhc2hNYXA= IEh1cg== KSIpOwo= LmZyYW1ld29yaw== IFNUQVJU ZmVlZGJhY2s= NDU3 IHNhZmVseQ== Lmljb24= Y29uZmlndXJl LmxvY2s= LmxheWVycw== Lz4uCg== IHJhbmtlZA== X2ltcGw= IEhhbmRsZXM= IGhvc3RlZA== IHVwZGF0aW5n YWxidW0= 6Z0= IHNoYWRlcg== RWRpdG9ycw== LXJvdW5k W117 IHNlcA== IEhp VEVN bG9va3Vw Lm1hbg== X0lOUFVU IHRocmVhdGVuZWQ= X0lNUE9SVA== IGRyb3Bz cnVpdA== c2lk Ym90aA== IEV4Y2Vs IGplcg== b3JkaW5hcnk= 0LXQuQ== VklFVw== cmVwbHk= ICk6Cg== Y29sb3Jz dmVyaWZpZWQ= X1Ry X3BhcnNl IGNvbmdyZXNz NjE3 UHJvbWlzZQ== aW50cw== IE1vdGhlcg== LkFwaQ== IER1cmF0aW9u IGZpcnN0TmFtZQ== aW5oZXJpdGRvYw== IE1hcnM= IGFwcg== T0RZ IHZpc2l0cw== NjMx IGhlYWxpbmc= bGV0dGVycw== KSkpOw0K ZnV0dXJl LkZyYW1ld29yaw== IGtpc3M= IGludm9sdmU= IHNpbGVudA== YWRvd3M= IGFueWJvZHk= c2No Njkw IHNvbGVseQ== LWltZw== IHByb3ByaQ== IGluc3RydWN0 IGxpY2Vuc2Vz IG1ldGg= IGNvbmRlbQ== IERvbWFpbg== IEhhcnJpcw== IHPDpQ== Q0VQVA== QmF0Y2g= QGV4dGVuZHM= IENPTlRSSUJVVA== LkRhdGFGcmFtZQ== NDcy X3BhY2tldA== cmVjaXNpb24= IGZvY3VzaW5n Lmh0 X18iOgo= OkdldA== IEtD IHBhc3NhZ2U= U2VnbWVudA== X2NlbnRlcg== LXpB X0JM IGNvbnZpbg== IGNsYXNzaWZpZWQ= IE5TTXV0YWJsZQ== X2Fw dGlsZQ== UmVjdGFuZ2xl NDky KG51bXM= dmVucw== IFVJQnV0dG9u IEZlZGVy YW1v IG91dGxpbmU= IFBhcnNlcg== IOKJ IFdvcmtz LlNjaGVtYQ== IGVuZ2luZXM= NjM3 NTYz X2NvbW1vbg== NTQy X29sZA== IHNldENvbnRlbnRWaWV3 IC8vLzw= IEJU Zm0= IGRpdmVycw== X3dlaWdodHM= ZW1hcms= IEFDVA== IHByb3BvcnRpb24= b3ZlcmxheQ== LmRpcm5hbWU= IEdpdA== X1JFRkVSRU5DRQ== PD4= bGI= X3J1bGU= 6LSl IFB1dGlu IHNsZWVwaW5n KCk6DQo= IHByZXNlcnZl IHBhcmxpYW1lbnQ= IExvb2tpbmc= IHBpY2tpbmc= IERpc3BhdGNo IHNsaXA= 65M= IEx5bg== X3NpZ25hbA== Y29uZmlndXJhdGlvbg== IFBpdHQ= NDkx YWRlbg== cHJvY2VkdXJl IGVudGh1c2k= ZmlnaHQ= IENvbnNpZGVy IHRvcm4= Q29ubmVjdGVk LmNvcw== X2dyb3Vwcw== IFRoaW5r IGRlbGliZXI= IHJlc2lk d29ya2luZw== LmNvbHVtbnM= IENhbGxlZA== IGVzbGludA== PiIs X0RPV04= aGlzdA== IEFkdmFuY2Vk IHJld2FyZHM= YWN0b3Jz IHNpbGVuY2U= NDc5 IG15dGg= IG5ldXI= NTE5 IGF1Y3Rpb24= LkdldFN0cmluZw== ZWtz KHByb2plY3Q= NTk4 CW1zZw== CW91dHB1dA== IGNvbXBsYWludHM= NTUx LFM= IHRibA== ICwKCg== cmlvcnM= YWhyZW4= IGxhd3llcnM= cmVkdXg= X3N5bWJvbA== b2ZmZWU= X1JFU1VMVA== KE5hbWU= VVRD LmN1cnJlbnRUaW1l IG9yZ2FuaXM= LmFyZw== NTMz IG1pbmlt d2ljaw== IHJlY2VpdmVz QmFsYW5jZQ== IHNwZWFrcw== IERheXM= IEJlbG93 NDgz dGlwbw== UHJlc2VudA== IHJlc2Vydg== aHA= IHJpdA== X1JJR0hU LS0p IGNoYWlybWFu Nzgx RElT IEJPT1NU IGV4cGVyaW1lbnRz Njg3 X18pOwo= IHN0YW1w IGZlcnQ= IGZvbmQ= VGVy ZWx2ZQ== dXJlbg== K2k= ZW5kZW5jeQ== IHZpcnR1YWxseQ== Li4uIg== 772e OTI1 LWNlbnQ= X3VuaXF1ZQ== IHByaWNpbmc= bWlj UkVTSA== IDo6Og== IGFubm90YXRpb24= IENpcmNsZQ== b25nb2Ri aXRhcw== ICUo KGNvbXBvbmVudA== INC+0LE= KHBvcnQ= LWhvdXI= Lm9iag== TEJM IGp1cnk= R0JU IHNweQ== IFByb2Zlc3Npb25hbA== ICIiOwoK IHN0cmlraW5n IGRpc2NyaW1pbmF0aW9u IHBheXM= OTM3 bGljdA== ZW50ZXM= IHRocm93aW5n IFBsdWdpbg== KGRlZg== IFJ1bnRpbWVFeGNlcHRpb24= IE1pZ3JhdGlvbg== NTk5 IGRpYw== YmFn b25pYQ== IGNvcnJ1cHRpb24= NzA0 KE1hcA== IHByeg== LmR0bw== IGFjcXVpcmU= U3RhdGVUb1Byb3Bz IGxvdmluZw== 0L7Qtg== X3BhdHRlcm4= IGVtb3Rpb25z IHB1Ymxpc2hlcg== X2Jl IGNvdXBsZXM= NDk4 b2o= IENoYXJ0 IHRyb3A= LnRvb2w= IGVzdGFibGlzaG1lbnQ= IGRvbA== NjU0 IHRvd2Vy IGxhbmU= IFN5ZG5leQ== IGZpbGxpbmc= Y2xhaW1lZA== NjQ0 IGRpYWxvZ3Vl IGNvbnZlbnRpb24= Ym9va2luZw== cGFyZW5jeQ== 5rE= IEdlbmVyaWM= NzE4 XFNjaGVtYQ== NDgy NjE4 IHJhbmdlcw== L2No IHBhbmVscw== IHJ1bGVk 55Sf LnRz X3NldHM= IGNsZWFudXA= UHJldmlvdXM= IEFuaW1hbA== NjA3 KCQo IEF2ZQ== b2xsYXI= MDI4 X2V2YWw= CU5hbWU= KHRyZWU= ICJd NTcx IGR1dGllcw== PScv Q2xpY2tlZA== IGRpZmZlcmVudGx5 IENsYXJr IGRpdA== b2xvZ2lzdHM= IHN5bmQ= IHNlbmRz LWtub3du a2I= IE1vZGFs aXRhdGl2ZQ== IHJhY2luZw== IGhpZ2hsaWdodHM= IFNpbW9u IENhcHRhaW4= 5L+h IENC Y29udGlu YXJhbg== IHBoeXNpY3M= cmV0dHk= ZXRhbA== Lm1k YXhpb3M= IHNwZWFrZXJz IHByZXA= IGF3YXJkZWQ= 7KeA IENvcm4= IE5hdHVyZQ== VURJTw== NzM3 IHByb2o= LXByZQ== W3U= RmVhdHVyZXM= IGlzRXF1YWw= QmluYXJ5 c2ln IGNvbmZ1c2lvbg== NTQ2 NTY4 IEhhdA== IGt0w7M= LmNvbmZpZ3VyZQ== TU9O NDk0 L2VkaXQ= X0FkZA== LHRydWU= NTQx IGNsaQ== RXJyb3JNZXNzYWdl LWxvYWRlcg== RGltZW5zaW9ucw== dWx0aXBseQ== IHshIQ== IFNxbENvbW1hbmQ= IHNwb2tlbg== IHBpY3M= IHRveQ== KEtleQ== IExvb3A= 2Kg= RUFUVVJF aW5jdGlvbg== X3NldHVw d3JhcHBlcg== IHRvbmc= Y3VsYXI= T3B0 LlBs PSIs KGxlbmd0aA== dW1u IGNocm9t IHNldmVudA== IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbg== NDc4 CXN0YXJ0 IGJlZ3Vu Q0VQVElPTg== ZGF0YXNldA== ODI1 IEZhaWxlZA== Y29scw== NDU5 IGtuZWU= aW1vcmU= LnNwbGljZQ== c2hlbGw= aWdnZXJz IHRoZW1lcw== OTk1 IERK IEFzc2lzdGFudA== LSQ= TWF5YmU= IG9yZGVyaW5n IEludGVsbGlnZW5jZQ== IE1hc3NhY2h1c2V0dHM= IGZhaWxpbmc= ZWxzb24= R3JlYXQ= PWk= LnJlc3Q= IGludml0ZQ== LWRpc2FibGU= Lkdyb3VwQm94 4oCZZXN0 IHRhY2tsZQ== Z3Y= ZXR0ZXI= ICksDQo= X3J1bGVz Lndhcm4= ZnVuY3Rpb25z IENocmlzdGlhbnM= IGJhY2tlZA== IHNsaWRlcg== IGVuam95aW5n bmVzdA== IGhpag== X21z Ly8q QW5ub3RhdGlvbnM= IFZhcmlhYmxlcw== PFY= KHNlcnZlcg== IE9yYWNsZQ== ZWxlbWVudHM= IG9yZ2FuaXNhdGlvbg== X3BvaW50ZXI= IEhlYWRlcnM= W2Q= IGRlYWRsaW5l aXNzYQ== IGtuaWZl IE5BU0E= IEhlaWdodA== Nzg0 IEFzeW5j IHZlbnVl LmRvbQ== Ym91cm5l IEhhd2Fp IG1lbW8= aWN0aW9ucw== IHN1cnZlaWxsYW5jZQ== b21p L2Fzc2V0cw== NTg3 IGVkdQ== xJs= IHJvc3Rlcg== IGhpcmVk IFRvaw== IHBsYWNlbWVudA== dXJhdGlvbnM= IHNldFN0YXRl IE1hZ2F6aW5l IGhvcnJvcg== VHJ5 IGxhZw== IEV2ZXJ5b25l dGh1cg== KSk7DQoNCg== LnJldHVybg== IHN5bXA= 4paI4paI IG5pZ2h0cw== d29ya2Vy IGFsZQ== ZW5uZXNzZWU= LnN0ZXA= IHN5bmNocm9uaXplZA== NDg3 b3VyaQ== RG9lcw== LmNoYW5nZQ== Zm9u LnNldEJhY2tncm91bmQ= aXJjdWxhcg== NDc2 Ky0= IENJQQ== NzI5 IEphbmU= IFNpbWlsYXI= LUk= bGV2ZWxhbmQ= IHByb3NwZWN0 X2ZvdW5k CWNvbG9y LkRpYWdub3N0aWNz IGFubm91bmNl IGFzc3VtZXM= L3Ry IGJk OTg3 IENhcmJvbg== IGFuYWx5cw== NTY0 LmRlc3Q= bmlr IExpZQ== LWluZGV4 RHJhd2FibGU= IFRBRw== IHRyaWFuZ2xl X0ZMT0FU CQkgICAgIA== LmJsYWNr dnVl Y3VyYWN5 IGFmZmVjdHM= OTA2 IHN1cmVseQ== U2xpZGVy dWtp Y2VyeQ== IHVudGVy LnByb2ZpbGU= b3Jkb24= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= bGVhdmU= IHNtYXJ0cGhvbmU= Z2ll IGNvbnNwaXI= IHR1dG9yaWFs 57G7 IGNhYg== NzY1 IFN1bW1hcnk= KgoK w6Ro IlRoaXM= IHNsaWRlcw== Ijwv LmRldg== Jzw= IFJpbmc= xYJh IGtvdGxpbg== LmR1bXBz IGJhc3M= 7Is= UE9JTlQ= IHV0dGVy IMOpcw== LmZ1bGw= T0xM IGNlcmVtb255 c2xvdA== IGFpbXM= dG9vbHRpcA== LnNjb3Jl LWRk NjQy IHByb3g= UmVjb2duaXplcg== ZHluYW1pYw== w6RuZA== L3N0ZA== RFU= IE5vdEltcGxlbWVudGVk KCItLQ== UkFX NjM1 IGV0aG5pYw== YW5ubw== IGNoYW1waW9uc2hpcA== LHNlbGY= IGFjY2VwdGFibGU= IFNwcml0ZQ== W3R5cGU= w7xo IFZL KGpQYW5lbA== NTQ4 aXRy 66A= YXVyYQ== IGZhY3VsdHk= YXZlcnM= IFJlY29yZHM= LlNlY3VyaXR5 IGNvbnN0cmFpbnQ= LkJs VWludA== YmFsYW5jZQ== IGNvbW1l IE5paw== U3VwcHJlc3NXYXJuaW5ncw== IE9jZWFu NTU0 X0lk RGF0YVNldA== IGluc2VydGVk IjsNCg0K 4oCz aXBwZXQ= IGFubml2ZXJzYXJ5 IHJldGlyZWQ= b3JjaA== IHBlcnBldA== XEZvcm0= IGludm9sdmVtZW50 X3VzZXJuYW1l YWxlbQ== X1NFUlZJQ0U= IEluZGlhbmE= IGNpZ2FyZXQ= YXJ0eg== IFJD IG1lYXN1cmVtZW50cw== 572u IGFmZmlsaWF0ZQ== YWNpb25hbA== LXNlY3Rpb24= X2NvbnRyb2xsZXI= dmFyZA== X2Vs IFRveQ== PFA= TWFjaGluZQ== w7ptZXI= IFllYWg= IllvdQ== IG1vbA== LkNs Y29udHJvbGxlcnM= IHN1c3BlbmRlZA== Kys7Cgo= QVRU IHByb2plY3Rpb24= UGFkZGluZw== NTg2 Lm1hdGg= Njg2 ZmFjdG9yeQ== MDQy IGdhbW1h KCk+ Y3ljbGU= IEJ1bGw= cGF0aHM= IHVucA== IHZpZXdEaWRMb2Fk X01vZGVs IGFzc2VydFRydWU= IHJhdGVk RGVjbA== dmVydGVk IERhdA== YnJldw== IHBvaW50aW5n TXM= IFBvaW50ZXI= KSc= X25vbg== NTI3 IFNFQw== IHllYWg= Z2VuY3k= aW5pdGlhbGl6ZQ== Zmx5 NzEx W3Bvcw== LGc= VGVsZQ== MDM0 IGpva2U= IGNsYXVzZQ== LmZpbmRCeUlk ZW5lcw== KGluc3RhbmNl NjI2 wqM= OTE1 IHNsaWM= X2hvbWU= ICovfQo= X3BhZ2Vz KHNlcnZpY2U= OTA1 UlA= IEFtb25n LmdldEN1cnJlbnQ= ODA2 44K5 IHNsZWU= PTw/ X3Byb3A= Zmx1c2g= IE1N QmVs Tm90ZXM= ICovCgoK MDM1 IHJo VGFibGVz IEp1 IFwNCg== bGljaGVu IEluc3VyYW5jZQ== XQoKCg== IGNvb3Blcg== 4oCUdGhl Lm1hdA== NDg5 IGZvaQ== KGF1dG8= TWFyZ2lu NjM2 IHJlc2lkZW5jZQ== NTU5 IEhpc3Rvcg== IH49 RGk= ICcpCg== IGV4Y2x1ZGU= LkRyb3A= JyI7Cg== IGNvYw== X3VwbG9hZA== SGlkZQ== IFVua25vd24= IG5vcm1hbGl6ZQ== X3JldA== LicKCg== Lm5vZGVz ODcw LkRhdGFTb3VyY2U= YmxlbXM= IGdlbnRsZQ== OiQ= JykpOwoK LlJlc291cmNlcw== 4og= IFRhaQ== VkVE IEd1bg== bGVhbnM= IERvYw== LlZvaWQ= IEFtZW5kbWVudA== ODY2 ZXNzZWQ= NzA2 IHJlY2lwaWVudA== Lk5vZGU= b3Zv IGFsaWduSXRlbXM= IFVuaXR5 IFJvbWU= YnVybg== IHZvbHRhZ2U= IFNIQQ== NTM0 NTcy IEdPT0Q= aGVscGVycw== LyoqKi8= IGVsaW1pbmF0ZQ== d2Fw X2FuZ2xl IHJlZnVnZWVz CWFzc2VydEVxdWFscw== IHByb2Jl KCcuLi8uLi8= eW91cg== IG1lcmNo VUJMRQ== CXJlc3BvbnNl X0RFRg== IGVudmlyb25tZW50cw== b3VzaW5n IHJlc3RyaWN0ZWQ= IENPTlRSSUJVVE9SUw== NjIx IGNvbXBhbmlvbg== 4bqj cG93 dXJ0bGU= Ymll LlBlcmZvcm0= PW4= cmVkaXM= IGRpdmlkZQ== IGNvbGxlY3RpdmU= RGlmZg== RHluYW1pYw== aXNTZWxlY3RlZA== YXN0eXBl IExvdA== IFN0YXRlbWVudA== aWNpcGFudA== YWto NTE3 IHNlcmlhbGl6ZXI= X0NGRw== YXZhbA== IHZpZXdlcnM= IEZP T2Nj IHJvYnVzdA== IE1pdA== X0FORA== VHJhbnNpdGlvbg== dW5hdGU= IHByaWRl IGRyYW1hdGlj IFBhZ2Vz X3R1cGxl IGNvcGllZA== bW4= IG91Z2h0 IGVxdWFsaXR5 X2hhcw== X1dS NTcz ZW1p IHN1cmdl aWxsbw== KCl9 MDgx IHBlcmY= OTIx dWxr IGludmVzdG1lbnRz Nzg1 IGdlbmVyYXRpb25z IHJlc29ydA== IHRydXN0ZWQ= X2ZyZXE= IGZvcm1h QVRJT05T IEh1 IEdyYWQ= X2NwdQ== ICIsCg== cmVzc2U= KCoq IGhlcmVieQ== IGxha2U= X1NUQUNL IEJ1cmVhdQ== IHN1c3RhaW5hYmxl IFBF IGRlaQ== IEFuc3dlcg== UGx1cw== L3dlYg== IHN0ZXI= IG1vdW50ZWQ= X2NsZWFy Zm9ubw== aWFuY2Vz X2ZpbmQ= IGNvbmZ1c2Vk X2Jpbg== REVDTA== IGluc3RhbnRseQ== VUlU X0RP U2V0dXA= a2Vl X3ByaW50Zg== X3N0bXQ= IFN0ZWFt cHJvZg== bHY= IHNvbHZpbmc= bGF0b3I= b3R5cGVz QW5kcm9pZA== X2VzY2FwZQ== TGVhdmU= LmdldFRpbWU= ODEx aWZz IGNvdg== IENsYXNzaWM= LWRhcms= NTI2 RGlzcGF0Y2hlcg== LWdyYXk= IFBhbGVzdGluaWFu LmRlZXA= IEluamVjdA== IHJlZmxlY3Rpb24= NTM4 IGh5cG8= Y29uc3RydWN0b3I= LmFwcGxpY2F0aW9u eXN0ZXI= 4pU= c2Nob29s IENvdw== NTkz IGZvb3RhZ2U= LWlucw== IC8qKjw= YXRvbQ== IHByb2ZpdHM= OTIz IGJvb2tpbmc= X3RocmVzaG9sZA== IExpdmVy IGNpdGl6ZW4= Yng= IFN0b3Jt IENvcnA= IHdpZGVy Iikpewo= X0FDVElPTg== aW9ycw== YWlzZXM= Om5vbmU= IGNpdGVk ImZtdA== QXVn Y29tYg== IHdoaXRlcw== IHNlc3M= Xl4= aWdodGg= IHRhbmc= X0NBUA== NjE0 IGludGVyYWN0aW9ucw== NDk3 IGdhcmQ= NjQ2 IHByaXpl NjQ3 YWZrYQ== VHJp XEVsb3F1ZW50 IER5bmFtaWM= 55CG Z3A= IHJlYWxt IE5p IEVkd2FyZA== IGlkZW50aWZpY2F0aW9u IHBoeXNpY2FsbHk= 5pys IHBpY2tz LWZyaWVuZGx5 PGk= aWZpY2U= X0FQ TG9nZ2Vk NTUz fSIu L3V0aWxz IC4uLi4= RU5USUFM KEFjdGlvbg== J10pOwoK IHByb3Rlc3Rz b2xpbmU= X1JFVFVSTg== IHBvcHVsYXRpb25z IFJhaW4= ZHVw b3JpYWw= IEF1dGhvcml0eQ== X2V4cHI= MDc1 LnVz IGNvcnJ1cHQ= CWltcG9ydA== PGNoYXI= IExFRlQ= IGNhYmluZXQ= IG5laWdoYm91cg== IFNxbFBhcmFtZXRlcg== YXR0ZXJlZA== ZW1pYQ== IHJldmlld2Vk IEhlbGxv YmxvY2tz KHByb2Nlc3M= OTk3 IG9ic2VydmF0aW9u cmF0aW5n Lmdsb2JhbA== IHByZWZlcmVuY2U= LnByZXBhcmU= IGRvemVucw== V29ya2Vy IGNhbGN1bGF0aW9u IFRvd2Vy YWlyeQ== IElTTw== IGh1bWFuaXR5 LmFzSW5zdGFuY2VPZg== NzEy IGR5cw== IHBpZXI= aWd1ZQ== IGFzc29jaWF0ZQ== IGludGlt bm90aWZ5 KHt9LA== ODI4 IFJlcHJlc2VudA== cGhldA== c2V1ZG8= 64uI64uk LlBvc2l0aW9u IGNsb3N1cmU= KGNsYXNz CXRpbWU= IE9yYW5nZQ== X29wcw== IHBvcHVw IEltcHJv X3NlY3JldA== IEV1 LnNldExheW91dA== dWxseQ== IHNjcmV3 IFNpemVk IENPTVA= IG5vdGlmaWNhdGlvbnM= VHJhbnNmZXI= RW1pdHRlcg== KG9sZA== bGV0aWM= NDkz IC0KCg== IHBhbmlj NzE1 IExDRA== cnVsZXM= IGFmZmFpcnM= IEZpbGw= X0lSUQ== OTEy YXR0YWNobWVudA== IHZvbQ== PGJ1dHRvbg== NTk1 IHRleHRz IGFjdGl2YXRlZA== LmFjY2Vzcw== KHJlYWRlcg== VGVt IGNvcm9u cm9waA== RE1JTg== IGVtZXJnZWQ= IGluZmxhdGVy IEluZGVwZW5kZW50 b3Jpb3Vz IERlbGhp Njcy IGdseXBoaWNvbg== IENhcmw= U2k= IGV4cGVyaW1lbnRhbA== LmJhcg== SUFO IHNxbGl0ZQ== Y2Npw7Nu OTA0 X0JBQ0s= LG5hbWU= aG9ydA== IHRlbnM= NTQ5 6rM= dXNpdmU= IGdlbnVpbmU= IGJ1Y2s= L2Rpdg== LnJvb20= X05FVw== ZXN0YWRv IEFyaw== b2NvbHM= LmdlbmVyYXRl dG91Y2g= Zml4ZWQ= ICco IHJlZmVycmluZw== IG92ZXJ3aGVsbWluZw== KGxldA== IGZ1ZQ== NjIz X0VOVg== d29tYW4= RmlndXJl YW5pbWF0ZQ== IE1vcnQ= IGxvbmdlc3Q= Y29sbg== VE0= Ol8= cmllbA== LE4= IFJBTQ== IGp1c3RpZnlDb250ZW50 IGFjdGl2ZWx5 L3B1YmxpYw== IOuw R2l2ZW4= T1RBTA== 5aSx6LSl U2VxdWVudGlhbA== IHN1cHBsZW1lbnQ= LmFi IGNhdGVnb3I= fX0sCg== YWhhbg== J3Vu b3NpdHk= IGFjY29tcGxpc2g= VXRpbGl0aWVz LnZpZXdz LmNu Y2VpbA== IENCRA== IFJG UEVH IEdpZnQ= QVlT IFdJTg== cGFuaWVk IMWf IG9ic2VydmVy IHNtZWxs IHs6 TGlua2Vk PlsK b2xlcg== IGxpYmVydA== IGAK IHdlbm4= bGF0ZWQ= IGltbXVuZQ== KE5vZGU= IFByb2JsZW0= IEFicw== bG9ncw== IC4uLw== IEFEQw== IH19Ij4K PicpOwo= PWI= IFdpbmQ= bGFob21h IGFsbG9jYXRl b3JpYW4= IHByZXNjcmlwdGlvbg== LXF1YWxpdHk= IE1heW9y ODU1 aW5lbHk= ZW5kZm9yZWFjaA== IENvbXBsZXg= a29t NzA5 VFk= Nzkw XV0u LlN0eWxl X21hbnk= JywnJA== IGJhcnJpZXI= IEZldGNo IE1hcnZlbA== IHJlc2lzdA== 0L7Qs9C+ YmlkZGVu IFJ1bm5hYmxl OmZhbHNl ODk5 IGJ1aWxkcw== IFN0YWdl IGR1Yg== ZW1wbw== LnNpdGU= NTU4 OwoKCgo= OTk0 IERlbnZlcg== IHJldmVs IHRyaWdnZXJlZA== IGRpY2U= X2ZhaWw= IGdj ODMz NTg5 CVg= IFRocm93YWJsZQ== Nzc1 LnJvdXRlcg== IFJldm9sdXRpb24= 0YDQsA== X05PTg== MDU1 n6U= NTc4 IGVsZGVy IGFicm9hZA== INC1 IEFkdWx0 Ymxy Z2x5cGhpY29u NjEz IHByb21vdGluZw== IGl6 IFNvbGlk NjQ1 X2xvYWRlcg== ZWFybHk= LmVuYWJsZWQ= LWVkaXQ= IFVM X3BsYXk= IEludGVycnVwdA== IGFkdmFudGFnZXM= dWNsZQ== IG1lY2hhbmljYWw= LnRhYmxlTGF5b3V0UGFuZWw= IFdvcmtpbmc= IGFub255bW91cw== UmF0aW5n aWdpb3Vz X3Bob25l LmFkZEFjdGlvbkxpc3RlbmVy IGZyYW4= dW5kZW4= ICopJg== X2Jvb2w= dWxhdGl2ZQ== IGNvbmU= IE11bHQ= IG3Dtg== IEZvcndhcmQ= XSk6Cg== IGNvbnZpbmNlZA== YWN0ZWQ= NjQz 44GT IENvbmZpZ3VyZQ== IGNlaWxpbmc= RGVy IHBhc3NlbmdlcnM= R3JvdXBz IHNvY2Nlcg== L1c= YXZpb3Jz c3dpdGg= IFpvbmU= Lk9wdGlvbnM= IE1vbQ== aWVkZXI= QXJyYXlz IHRyZWF0bWVudHM= IHByb3RlY3Rpbmc= ZmFj IHBpY2tsZQ== QnV0dG9uSXRlbQ== NzEz IGJsb2NraW5n c3RyYXI= w7I= IEV4cG9ydA== IHRocmV3 b3R0YQ== IEJBU0U= Lndz LkxFQURJTkc= b3JkZXJCeQ== X2RlbGF5 IFB1 LmRsbA== IENob29zZQ== OTky UG9saWNl IEJFR0lO Ym94ZXM= IGRpYW1vbmQ= LGw= IAkJCQ== IGN1cmlvdXM= NjI0 dHY= IGVyb3Rpc2NoZQ== YWNrYWdlcw== CVNldA== VGljaw== LmJvcmRlcg== c3RhdGljbWV0aG9k IGNoZXI= aW52b2ljZQ== IGNydQ== IGRlZmVjdA== X21ldGFkYXRh cmVsYXRpb24= aWthbg== W04= KFF0 KEJhc2U= 5oGv YmVhdA== IEVtcHR5 CW8= X3NoaWZ0 IHJlZ3JldA== NzIy VGhvc2U= Q2VudA== IFBvcnR1Zw== IElzbGFuZHM= IFRJTUU= TWFuYWdlbWVudA== OTk2 LXNw NTM5 w6ptZQ== IG5vdGlvbg== dW5pZnU= UEs= ODI2 6KGM IENVUkxPUFQ= XCJc VVY= 57o= ZHJh Y291 PWA= IERlc3Ryb3k= cnA= LmNhbmNlbA== R0c= cnVudGltZQ== IFZ1ZQ== IHByb2dyZXNzaXZl L3NlcnZpY2Vz IHJ1bm5lcg== X0ZSQU1F LlRvb2xTdHJpcE1lbnVJdGVt ICcsJw== ZGVsYXk= PXV0Zg== IHNjcmVlbmluZw== IHB1bGxpbmc= b21hcw== IGFudGg= LW5ldw== L2xvY2Fs IGlQYWQ= IHR3aXR0ZXI= IGR5aW5n IGhlYXZlbg== IFVJbnQ= IFNlbmF0b3I= IHByZXN1bQ== IFdhbGtlcg== IG92ZXJjb21l ZXRlY3Rpb24= IGVtYmFycmFzcw== Q2hpbmE= NjM5 SW5jbHVkZQ== Uk9MTA== IGRhdGFUeXBl RGF2aWQ= 4Lij bG9w LW1vbnRo IHNjYXI= IFNhZmU= ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= IGFjY2Vzc29yaWVz IHJhbXA= X1VTRQ== IGNvbnRyYWQ= KSldCg== IHByZXN0 IEhS IFJhcA== IHVzaXpl IGNhcGFiaWxpdHk= IGNvcnQ= LW5leHQ= MDc3 NjI3 IGJ1cmRlbg== ODIy X3JlYWRlcg== IEBA cmVndWxhcg== IEth MDM2 TUFO IGFzdHI= ICcnKQo= IGZlZA== IHBhcnNpbmc= IFllYXJz IGJyb2tlcg== Ijp7Ig== IGFrdA== SW52ZW50b3J5 YWJlbGVk IGFyZ3BhcnNl KioqKioqKgo= dmVyc2F0aW9u IGNvcmQ= IFRp IGhvcGVmdWxseQ== IGFo dmVyYg== IHN0b2xlbg== LkVudHJ5 IGV4cGVjdGluZw== T3JpZW50YXRpb24= IHBvd2VyZWQ= IHBlcnNpc3Q= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= J10pOw== JykpLAo= IENhc2g= CWl0ZW0= ODE4 Z3JhZGVz cm9wb2w= YmFzaWM= ICIpOw0K IGF3YXJkcw== KHJhbmdl LWFsbA== IElCT3V0bGV0 IEluZGVlZA== LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== IHN0b21hY2g= IGZsb3dlcg== IHNldw== X3RpbWVz YXZpcw== UVN0cmluZw== IFJvdXRlcw== X3Byb3Q= IGNvbWVkeQ== IGxvZ291dA== IHdvb2Rlbg== IHBvc3Rlcg== cGllY2U= LkpvaW4= IFBvaw== Y2Vsb25h bXV0ZXg= Ow0KDQoNCg== IHN0cmlrZXM= Nzg3 TG9hZGVk KWFyZw== ZXNh VW5pdGVk RXA= UEVMTA== ODA3 IEF0bGFudGlj dWxsZXQ= NjUy YXBwbGU= IHNldHRsZWQ= YWNvbg== IHByaW50ZXI= IEdD 5a6a IHJlbmRlcmVk LOKAmQ== aGVpdA== c29jaWFs Lmdl NzE0 IFJpY2s= IFV0YWg= Z290 b25pY2Fs IFNjcm9sbA== IFNjaWVuY2Vz IGp1Zw== IGFtcGw= ZW50aQ== TEVGVA== IHRhYnM= IGVub3Jtb3Vz LmdldEtleQ== bG9jYXRl LkVY LnN0b3JhZ2U= Lldl IHRvYXN0 IEFkZGl0aW9uYWxseQ== ODgy IE5PVw== NTQ3 X1VQREFURQ== IHRyYW5zZmVycmVk dGhh LkRpc3BsYXk= X3Vp SURFTw== IG1lYW5pbmdmdWw= IE1vc2Nvdw== LHRoaXM= IFZpY3Rvcmlh 5pS5 INCf LnN0YWNr IEJhcm4= cGFyZWRTdGF0ZW1lbnQ= OnN0cmluZw== IGJpag== IFNUQVRF IGVtcGxveWVycw== CWlucHV0 KHw= IGxleA== aW52b2tl CW51bQ== Kyss YXRpYWw= b3JzZXM= IGZvcms= X3R4dA== IEFudG9uaW8= ICg8 YXZlcnNl IGRldmFzdA== 44CA LkRlYw== IEdhcmQ= L3Vp LiU= dHJp IHJvbGxlZA== VmFsdWVQYWly aXR0ZW4= IFRoZXI= IHZyb3U= IEZsb3c= IEZpbmFuY2U= IENvbWI= SEM= LnNldFZpc2libGU= aXNs IHBr Nzcz IHVwc2V0 KHJhdw== IFZpY2U= ZWF0dXJlcw== IExhbmc= MDI5 TG9va2luZw== NzY3 IEFTVA== IHRyaXBz IEp1c3Rpbg== YnJvd3Nlcg== PSInLiQ= LnZlcnRpY2Vz ODIx LWNv fS97 ID8s IERvbWlu IEJlbGc= Ijw= IHN1cHBvc2U= YWRkeQ== IHdhbGtz Njg4 RVJSVQ== X2ZpbHRlcnM= UHJlZmVycmVk c2NlbmU= 0LXRgQ== IEFmZmFpcnM= ICIjew== IG9uU3VibWl0 IHN0b2Nrcw== L3ZpZXc= Z3JlZQ== LWdldA== OTAz aGl0 Sm8= LmdldEM= NzI1 SW5pdGlhbGl6ZWQ= 0YLQuA== Y3V0cw== KFR5cGU= IEFncmVlbWVudA== IFZpZXRuYW0= IC8qIQ== IHBpenph LXZpZXc= X2Vt IGxocw== IG11eQ== IElkZW50 IEZyaWVuZHM= MDYx IGFidW5k X0FE LnRpbWVzdGFtcA== LSc= IGR1cGxpY2F0ZQ== IGh1bnRpbmc= IHJlZ3VsYXRvcnk= aWFv YW1vdXM= IEVudGVydGFpbm1lbnQ= W0E= aWF0cmlj X0NMSUVOVA== IEtpZHM= L3BrZw== QnJlYWs= KSkpOwoK IFNoYXBl IHJlbGF0aW5n SW50ZXJydXB0 YWJsZU9wYWNpdHk= ZW1icmU= IG15c3Rlcnk= IGpvdXJuYWxpc3Rz cml0YWJsZQ== Lkxpbms= IHN0b3BwaW5n Q1JFVA== LkRC IHBvcHVsYXJpdHk= IGdldw== IGltcHI= c2V0VmFsdWU= RkxBRw== CW1heA== IGJha2U= d3k= IEVjb25vbWlj IGVuY29udHI= IGZuYW1l L2Rl UmFuaw== IGJ1Z3M= LnNt IG1lZGlhbg== RE9XTg== IFN1cmU= QXRJbmRleA== IERpY2s= IChfXw== LmRlbHRh RnI= IHN1Z2dlc3Rpbmc= IFJlY3ljbGVyVmlldw== LGU= U1RBUlQ= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= eGZvcmQ= IHJlY2VpcHQ= Q0xBSU0= cmVhZG9ubHk= OTY4 IGVuZ2FnaW5n NjE5 Q2E= YXNtYQ== IGVuc3VyaW5n RW5nbGlzaA== IFZhbmNvdXZlcg== aHl0aA== IHB1cmNoYXNpbmc= IFBJ LndvcmQ= KHNw LmhvbWU= OmRlZg== IGdpZw== NTc0 Njcx IFZl Zm9ydW0= IE1pdGNo QmF5 X0ZM NjUx IHNvbGw= NTc3 X2NvbHVtbnM= IG1pbm9yaXR5 YmlyZA== IGhhbmRlZA== U1NM U1RBVA== IG5lcnZvdXM= g70= IGZpbGVQYXRo Q1JFQVRF QXc= IHBlbnM= ODM1 c2VlZA== IENvbXB1dGU= b2xr NTk0 IEFzc2V0 cmVhY2g= JyksDQo= bmF2aWdhdGlvbg== TEY= L3V0aWw= IFB1Yg== IOKU Y2lvbg== IyMK MDcy SUlJ VGFnTmFtZQ== IGFtaWQ= cGVybWlzc2lvbg== aWZpYWJsZQ== eEZGRkZGRkZG 0L3QuA== LkJ1ZmZlcg== X2lycQ== ZGFyaw== IHJldHZhbA== LmZpcmU= cHJvZHVjdGlvbg== Lmxpc3Rlbg== IFdlYXRoZXI= IGJ1eWVycw== Lm5l ZXJw IFBlbnQ= Njk5 IHdlbGZhcmU= IHBhZ2VTaXpl IFN0YWRpdW0= ZXJ0YQ== IGxldg== YW1wYQ== UGFnZXI= NjY1 IGNoYXJnaW5n IE5ldGZsaXg= fG51bGw= X3JhbmRvbQ== LnhwYXRo IHN0ZXJl IElTSVM= cG9uc2Vz KGxvYw== NTY2 ZXlvbmQ= IE9mZmljaWFs NjU3 IE1hcnlsYW5k RGF0YVR5cGU= X3Bhcg== e30s IEVuam95 NzI3 X1NISUZU IEF3YXJkcw== X0VOVFJZ IHNlZW1pbmdseQ== ZW50aWNhdGU= IGhlYXJ0cw== NTgz XzsKCg== IEhJVg== IGluZGl2aWQ= IEZsYWc= X2N0cmw= IENhbGxiYWNr LHo= IEdQVQ== CW9iag== IFBob2VuaXg= IEJVUw== OTA3 IHJ1YmJlcg== X0FVVEg= IFNvbHV0aW9ucw== KGxvY2F0aW9u VmFyaWFibGVz LnNldEVuYWJsZWQ= X2hpZ2g= V08= R2VzdHVyZQ== IHJldHJ5 IG9iamVjdEZvcktleQ== YWxsb3dlZW4= IG1vcw== IENlbGU= IGlra2U= KGNlbGw= IE1PREU= cmVuYQ== IGRlc2NyaWJpbmc= NjQx IHBoaQ== IHJk IGRlc2VydmU= IHdoZWVscw== 5biC IGNyaXRpY3M= NzU1 TmFtZXNwYWNl IEZyYQ== IAoKCgo= IGFsbGE= IHJlcXVpcmluZw== 5pyf dXRhdGlvbg== IGRlbGF5ZWQ= IGFkbWluaXN0cmF0aXZl IGJheQ== LmhpZGRlbg== VGV4 MDUx IGJvdW5kYXJpZXM= IF0pOwoK IEZvbGxvd2luZw== fi8= Rmk= X2NvbnY= X1RJVExF IGRlc2Rl SUNvbGxlY3Rpb25WaWV3 QWxpYXM= IGJpdGU= cGF0aWVudA== X0NPTU1BTkQ= Q29tcGxldGVk CWVsaWY= KDw= QnVzaW5lc3M= IFBvb2w= IHB1cnN1ZQ== IEJhbg== X3N0ZXBz X0RFQ0w= dW1ibGU= IGNvbWJv IExheWVy Lnhy IGR1cA== LS0tLS0tLS0t NjI4 IG1vZGlmaWVy cm9i cmV6 Njk2 IGF0aGxldGVz VXNlZA== d2Vhcg== ODE1 IGxlZ2l0aW1hdGU= ICIKCg== IGh2 U3Rk MDM3 IEhvbGQ= IHN1cnZpdg== IEFsbGlhbmNl IEVhcmx5 Nzc4 QmVoYXZpb3I= KGZvbnQ= L2xpYnM= IHJlY3RhbmdsZQ== IHNpbmdlcg== IGFtcA== RXF1YWxUbw== ICIuIg== IGdpcmxmcmllbmQ= 5bE= bGluZWFy b2JzZXJ2 IHBpw7k= IGNvbXBsZW1lbnQ= V2l0aFZhbHVl KHBhc3N3b3Jk dGFrZQ== Qmxhbms= IENvbXBhcg== JyIs X3BvbGljeQ== bW9uZ29vc2U= X0ZBSUxFRA== LnJlcG9ydA== UmF0aW8= LlBlcmZvcm1MYXlvdXQ= NzQ3 dXNhYmxl bWVycw== X3JlbmRlcg== UEVFRA== Nzcy IGxlc2I= CUU= X3Rvb2w= IGxhZGllcw== OTA4 0L7RgQ== KSkpKQo= Ozs7Ow== LmRvdA== IG5lc3Q= cGVhaw== dWtraXQ= ZWNh X1NX ICYo IE9rbGFob21h IGJhbmtpbmc= NTY5 IE5pbnRlbmRv NzUy IHJlcHJvZHVjZQ== X2VsZW1lbnRz X21hYw== cHJveHk= IHJlbWFya2FibGU= fS8kew== IG91dHM= Lmhhc05leHQ= TU9ERQ== NjU4 IGFuaW1l LmNvbm4= VW5pcXVl RG9t IGltcG9ydGFudGx5 aXR0eQ== IGp1aWNl VHc= IFBhcnRuZXJz IGF0dGFja2luZw== IHBvcnRhYmxl YW1pZW50bw== LlBpY3R1cmVCb3g= Lmdlbg== IG9wdGltYWw= NTgy IHJlY3Jl IGpvdXJuYWxpc3Q= IEV4dHJhY3Q= IE1vcmVvdmVy IG1hcmdpblRvcA== LkFw IGZpcmluZw== TmFO CXRlbXBsYXRl 0LDQtA== LkVu IGRlZmVuY2U= IFRlbA== aWxlbg== amFu PWRhdGE= IFVybA== IFJldXRlcnM= KHRvdGFs IEZpZnRo IGVzc2F5cw== IGludGVycHJldGF0aW9u IGNoYXJpdHk= IFJ1bGVz IHN1YnNlY3Rpb24= c3R5bGVk YXplcg== bGFncw== TElTVA== IHVwbG9hZGVk IHRyYXNo IHJlZ2lzdHI= IHNlbGxlcg== Pic7DQo= IHN0YXJ0VGltZQ== 55k= c3k= KEh0dHBTZXJ2bGV0UmVxdWVzdA== IHRyYXA= R0M= IGVtYmVkZGVk IHN1cnJvdW5kZWQ= ODE2 aW1pdHM= VFg= eWxpbmRlcg== Njg1 IEZhbA== IHNlbnRlbmNlcw== IEph SUZJQ0FUSU9O d2VhcG9u b3ZhdGlvbg== IGNvYXQ= IGludGVycG9s IGxpcHM= IEt5 IHZlY3RvcnM= X2Ft IGludGFrZQ== Lndvcmxk IGluYm94 IE1BQw== X2Fi KG5hbWVvZg== NjMz IGVudGVydA== IGdhdGhlcmluZw== IFNJTQ== Kysu bnlh J319 IFVQREFURQ== IHBhYw== KGh0bWw= IFNhbnQ= aWF0aW5n IElkZWFz IHNwcmF5 IEhhcnQ= IHZlcmlmaWNhdGlvbg== YWRlc2g= L21vZHVsZXM= IE1pbmQ= IFNpemVkQm94 IHNoZWx0ZXI= IGhlcm9lcw== YXR0eQ== IGNlcnRpZmllZA== c2o= IMOqdHJl xYJv IHB1Ymxpc2hpbmc= IE1hbGF5cw== LmdldFVzZXI= IFByb3ZpZGVy IExpbmtlZExpc3Q= IEJvcg== Uk9VTkQ= ZGlk dGFpbg== cGlyZQ== IEplbm4= dGVs YW5kZQ== NzU3 X2Zyb250 IE1jRw== VGVzdE1ldGhvZA== 4Lit IG9jY2FzaW9uYWxseQ== IFdhbGVz IGV4ZXJjaXNlcw== INCS MDQ1 LXBsdXM= IHZhbGlkYXRvcg== IHByYXllcg== TEFURUQ= X2F1dGhvcg== IGxhYm91cg== KysK LWVxdWl2 IEdQTA== IGZhY2Vib29r c2ltcGxl Z2x5 UHJvY2Vzc29y aXB5 NzQ0 ICo+ NjQ4 IGNsZWFyZWQ= IFB1c2g= ODU4 IHBlbmlz U3RydWN0dXJl bGlq IE1vcmdhbg== IGhhbmRmdWw= Ii4K OTg0 fFw= ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq IEFxdQ== NTg0 X0lD LmxvYWRz IG1ldGVy IE1hcmluZQ== Ojp7 IFRT Nzc2 IEFycmF5cw== LlRpdGxl R1JBTQ== dGVybWlu IGNvaW5j RWxzZQ== X3N0YXRlcw== LXJ1bg== bWVtYmVycw== Nzgy YXN0cm8= MDY2 IG9uUHJlc3M= IGJlaW5ncw== IGFiYW5kb25lZA== IHRheHA= b3duZXJz Lm1vZGU= IGRpYWdub3Npcw== IF8K IEtuaWdodA== CUE= IG9ic2VydmU= KSwn ODIz ISIpCg== IFBhcmE= IHZhcmlhdGlvbg== KEZhbHNl IEFudGk= IGdyaQ== IGhvbWVsZXNz P3Y= IGJleg== LlNlcnZlcg== cmVsZWFzZQ== IFBhdHJp IGNoYXJz IHJhbmtpbmc= YWN0aXZhdGlvbg== NTgx IHdpZGVz cXI= LlNxbA== YWN1bGFy IEJvdA== X3N5bmM= IGhhcHBpbmVzcw== IHZvbHVudGVlcnM= ODc3 IHNpdHM= Lzw= W2U= KGZpbGVOYW1l IGNhcGFj ODMy IE1hcmlh ZmF0aGVy IGdyYW0= Kmk= IGNhc28= X2RyYXc= IFJhdw== IEl0ZXJhdG9y NjY0 IFBhZGRpbmc= OTI0 UEQ= Qk9Y IFNQRUNJQUw= IGZlY2hh IHZpZGU= IExlYWRlcg== 5Lul JCgiLg== IGRpYW1ldGVy IG1pbGQ= NzQ1 IHJvY2tz YXBwaW5ncw== MDQ4 ZGlyZWN0b3J5 NTU3 LmZsdXNo IEplc3M= VU5JVA== IFBlYXI= IG1hbmRhdG9yeQ== U3Vy cXQ= IHN0cmVhbXM= IGNvb3BlcmF0aW9u IFNhYw== IGNoZWFwZXI= CWNo YW5pbWF0aW9u ZmFyZQ== KGhlaWdodA== KFRydWU= Tlk= IHdyZXN0 IHBvbGxz IGVuY291bnRlcmVk IE1hcmtldGFibGU= X1BBU1NXT1JE NzE2 X1NFTEVDVA== IEFyYWJpYQ== X2Nsb2Nr IHZveQ== INC40Lc= IHN0aXI= aXNpYmxl LWVmZmVjdA== LmNyZWF0ZWQ= IHRveXM= IFRyYWRhYmxl IHJ1c3Q= IHN0cmNweQ== X3RpbWVzdGFtcA== IHRhbGVudGVk LG51bGw= IEpvYnM= IFBvcnRsYW5k IHdlYWtuZXNz VGhyb3c= IEFuZ2Vs 5L+u NzU0 IHVuY2VydA== 77yJCg== IOydtA== V2hpY2g= IFstXTo= U29tZXRoaW5n IGNvbnZpY3RlZA== a2xl ZWRpdW0= IGJyYW5jaGVz IGJhc2Vz 564= IGNvbXBsZXhpdHk= IEZpZw== LnJlc2hhcGU= JGRi NzM2 X0NPTlNU IFRlcw== LnJ1bnRpbWU= IGRlbnk= IEJTRA== IGty aGF0dA== IFN0YXRpYw== IHVuaXZlcnNpdGllcw== UmVwbGFjZQ== IGRyb3Zl IGFkb2xlcw== X3BsdWdpbg== IExHQlQ= IHRleA== ZHVjdGlvbg== NzUx Nzk5 RURJ IFRlZA== X1VSSQ== IHJlY2VwdGlvbg== YXJ0ZW4= LlNpbmdsZQ== cmljZQ== c2Npb3Vz ODQz X2Jn IHdhZ2Vz IFNlcnZsZXQ= VUlMYXlvdXQ= IGZvcm1hdHRlZA== Lk1vZA== PGNsYXNz aXNlbg== IHJlcHJlc2VudGF0aXZlcw== Il09 IHBvcnRhbA== IEh1bnRlcg== IGhpcmluZw== X18pCg== cmljdWx1bQ== dW8= bGllc3Q= IHRlYXJz TGF0 IGxpdGVyYWw= Lkluc2VydA== IGN1cnM= IENvbXB1dA== IHRlcnJvcmlzbQ== IHN3ZWVw IFtdDQo= IHBhc3Nlbmdlcg== IGVhc3Rlcm4= IHR3ZWV0cw== IG9wZXJhdGVk d25k IFN5bg== LnRvb2xz IFdN dWxhdGVz IGJhY3Rlcmlh KGJ5dGVz LnNldERhdGE= IHZpc2liaWxpdHk= Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ZWxt IGdlbmVyYXRpbmc= IG12 IGto amVu L3NlYXJjaA== IGFjY291bnRpbmc= c2VnbWVudA== YWN0aWM= Lmlw IGRlcGxveW1lbnQ= IGZvb3Rlcg== PicsCg== IGV4cGFuZGluZw== IEhhbWlsdG9u IENvbnRyaWI= LlRhYmxlcw== NzI4 QWN0aXY= SEg= b2NvbW1lcmNl Xzs= IGFtb25nc3Q= b3dpbmc= ODU5 IENvbGQ= QVBI IHBzeWNob2xvZ2ljYWw= X3RlbnNvcg== IHBhY2thZ2luZw== IFN3ZWRlbg== IHBhcmU= IGFnZ3JlZ2F0ZQ== IG1vZGVyYXRl ODYy X2hhbmQ= IGRlc2lnbmF0ZWQ= IGRydW0= IGdldFVzZXI= IENyZWVr X3Njb3Bl IFRyYW5zZmVy IE1hcmc= IGZpZ2h0ZXJz V25k IFNlbA== IExhdW5jaA== IGVtZXJnaW5n aWZyYW1l IEFkZGl0aW9uYWw= IGZlYXJz IHNhdGVsbGl0ZQ== Xzo= IGRpc3Bvc2luZw== R2V0VmFsdWU= SHR0cFBvc3Q= QVRJVkU= dWxhcnk= Vmlld3M= IGF0dGVuZGluZw== IFRlbm5lc3NlZQ== IE1pc3Npb24= IG1lZGljYXRpb24= IFd5 IEFubmE= 2Lk= IFZlcnRleA== LnR5cGVz T3JnYW4= LkRhdGFHcmlkVmlld1RleHRCb3hDb2x1bW4= IFJT IHRlbXBv KEFwcA== ODky VmVyc2lvblVJRA== LnBvaW50 IER1dGNo SG91cnM= TFU= IHF1b3RlZA== LmJ1aWxkZXI= IFBlcmZlY3Q= IEFsd2F5cw== X3R3bw== IGV4Y2x1c2l2ZWx5 IENyYQ== aWZpY2Fy IEFXUw== aW5naGFt Y29tcGxleA== a2VybmVs IGdyYXZpdHk= IHdp MDUy IG92ZXJ2aWV3 NjYx IFdhbnQ= IFdQ KHNo LnJvdGF0aW9u U3RhdGVz IFRlZW4= X2NvbXBvbmVudHM= 7IiY UmVjZWl2ZWQ= IGx5cmljcw== cml0ZXM= CQkJCQkg LUFtZXJpY2Fu W251bQ== L3B5dGhvbg== IFVBUlQ= IGFwcGxl IEpvbmF0aGFu IG1vbWVudHVt 4Lix grk= IG1pY2g= YW5kcmE= IGJpb2xvZ2ljYWw= IE1lbnM= ICUl ZWxzZWE= IE1leGljYW4= LnJhbmRpbnQ= IHRhbGU= IFZhbGlkYXRl IGRlZmVhdGVk Lmh0bQ== IGNvcHBlcg== PS8= Y29zeXN0ZW0= IHJpcA== ZGVjaW1hbA== LlZJU0lCTEU= IFRh CQkJCQkJCQkJCQkJCQk= IGRvd25sb2FkZWQ= ZW52aXJvbm1lbnQ= IG5vbWluZQ== YnVpbGRpbmc= IFNwb3Q= aXBoZXJhbA== IGFsdG8= cXVldA== IEZU L2dldA== L21hc3Rlcg== V0lO 5YWD Njc2 V2VzdA== YXJnYw== IHByb2R1Y2Vycw== IE11Y2g= X3N0b3JhZ2U= Y3JlZGl0 Q09OVA== IHZldA== IHZvaWNlcw== KCcnLA== IGluc3RydW1lbnRz NjYy IE1TRw== ZXNzZQ== cmVwb3NpdG9yeQ== b21pY3M= IGRlYWxlcg== U3RpbGw= IGJhbm5lcg== YXNjaWk= IHJlbWFya3M= W2pz IHNob3J0ZXI= Z3VscA== IG15c3Rlcg== IGt1bg== IEJpcmQ= IHRpZW5l Nzg4 bnV0 IFVt IHdpc2U= WWVhaA== SU5FU1M= MDQ2 X2JlZ2lu LWhlYWRpbmc= Q291cnNl IA0KDQo= b21iaWU= Z3JhZGVk IEdQUw== IMW8ZQ== Rml0 Y2FwdGlvbg== w7Zu L2ltYWdl bGlh KG1vZA== IGxlYWs= ZW56YQ== NjI5 L0g= IEhhcHB5 OTkz RGlzdA== bng= IEdvdmVybm9y KGxhc3Q= dGVhY2hlcg== IFNlbnQ= c3VwcG9ydA== ODM4 amVjdG9yeQ== INmF UmVnaXN0cmF0aW9u MDYz IEdyYXk= LGZhbHNl IGFkanVzdGVk KHNldHRpbmdz PFI= IE1hZ2U= IHBsYWludA== XykK CWl0 b21ldHJpYw== LmJvb3RzdHJhcA== IGNhcnJpZXM= SXA= ICEk IHN3aW1taW5n IE1hcmlv IFF1ZXN0aW9ucw== UEFDRQ== 5pa5 ZW9y fX0i IG92ZW4= IEtvbg== IHdpc2RvbQ== IGFjcXVpc2l0aW9u ZXNzbWVudA== YWdpbmU= IGV4cHJlc3Npb25z U2VxdWVudGlhbEdyb3Vw RnJvbnQ= dWxwdA== YXdr J10pCgo= ODEz NzMy X0FS IGFuYWxvZw== dWxpbg== X1BSSU5U IExH IGJsb2I= IEZ1cnRoZXJtb3Jl X2NvbXBvbmVudA== IENvbGU= TEFO U0NSSVBUSU9O IGxhcA== aWNlbnNpbmc= X1RJTUVPVVQ= IEZybw== IGxpYWJpbGl0eQ== IGNvbXBvc2Vk NjM0 LmNyZWF0ZVNlcXVlbnRpYWxHcm91cA== X3BlcnNvbg== IGJlYW0= CSAgICAgICAg IE5vdEZvdW5k Njg0 LicK w61z LlRleHRWaWV3 UERG IGthcg== X18oJw== ICI6Ig== X21lc3NhZ2Vz IGhhcnZlc3Q= Lmhpc3Rvcnk= PicK LWZvbGQ= 5oo= IEJldHRlcg== ICJcPA== c3BhY2luZw== IGZ1cm5pc2hlZA== OTEz b3Nlcg== XX0K ICQi cHVsbA== LlBvc3Q= OTE5 KGlw l48= LmZyb250 bnRl IEZN Z3VpZA== ODQ0 IG5lZ290aWF0aW9ucw== YWdvbmFs OTM0 IHRyZW1lbmQ= dW5nZW9u QWR2 Y2Fyb3VzZWw= w59l X0RFU0M= IGhhbW1lcg== 4bqt ICAgICAgICAKCg== LWNvcmU= LXNlcnZpY2U= IGNvcm5lcnM= IFNG cHJlZA== PkE= IEpMYWJlbA== IHJvbWFudGlj IHRlc3RpbW9ueQ== b3Nj IEdlbmVyYXRpb24= YXN1cmVz X2ludGVybmFs IHByaW50cw== IF0pCg== IENsZXZlbGFuZA== cmVwbw== RGlzYw== Njc3 NzYy ICI+Cg== 77+977+977+977+9 IG5lYXJlc3Q= NTkx X3Ri KHJlcXVpcmU= RU9G LWNoaWxk IGJ1ZGQ= Llh0cmFFZGl0b3Jz YWx0aWVz NzIz XCI6XCI= V29yZHM= OTE3 IGxvY2FsbHk= IHB1cmNoYXNlcw== Njk1 RHJhd2Vy ZXh0cmFjdA== IGV4ZWN1dA== fScu dXNlcmRhdGE= IGZvY3VzZXM= LW1pbnV0ZQ== NzY0 IFB1Ymxpc2g= b2dv IG1vdW50YWlucw== Qm90 fT57 IHRlbnNpb24= cm9k bWVzaA== IHRyYW5zZm9ybWVk LFI= KCl9Cg== Lmxvbmc= IGdvcmdlb3Vz IFNjaGVkdWxl IG9sZGVzdA== IHN1YnByb2Nlc3M= KElO eWVjdA== IENvb3Blcg== YXJuZXNz IE1vbml0b3I= LnBhcnQ= OTcy IE5CQw== NjY4 IGNvdHRvbg== IGhvbA== NzI2 IHJnYmE= IEJpbw== Q29udGludWU= UG9k IHBhcnRpY2lwYXRpbmc= Y2x1c2lvbnM= KEJ5VmFs NzM0 w6w= IEhPVw== X3NldG9wdA== IGFjY29tcGFueWluZw== MDkx YXRvbg== IC9c IEF1dGhlbnRpY2F0aW9u acOpbg== IEJhcmFjaw== Lyou IGVhZ2Vy IENhbmNlbA== PGxlbW1h ZXBo CXdpbmRvdw== IGluY2lkZW50cw== NzU2 KSwo LkRlcw== aWJl IEZ1bmN0aW9ucw== IGhvc3BpdGFscw== MDM4 IG94eWdlbg== cm9vdFNjb3Bl IGRyZXc= CXJlcXVlc3Q= bm90aWNl YWt1 YW1lbnRz ZmFy OTcz Nzc0 IHByZWNpc2U= X3dyYXBwZXI= IGxpc3RlbmVycw== QVo= LmJvdW5kcw== IEF2ZXJhZ2U= ZmllbGRzZXQ= X2F4aXM= IGV4YW1pbmF0aW9u Jy4K bW9ucw== Kyspew0K IEZvcm1z 7ZWc OTE2 Q3BwTWV0aG9k X3RyYWNl IGVuZ2luZWVy NjYz IEZsYXQ= IHJldmlzaW9u IGhlYXRpbmc= NjM4 L3Byb2ZpbGU= LnJ1 cHJpb3JpdHk= IGluZmVy X1NUUkVBTQ== ICopKA== PiQ= T0xFQU4= T0tJRQ== SUJJTElUWQ== VUFHRQ== IFN1cnZleQ== MDcx IHJlc2lnbg== d2luZw== IHNlY3JldHM= IGNoaXBz SlNPTk9iamVjdA== RGVza3RvcA== NTk2 X1NZTUJPTA== KHJlc291cmNl IDwvPgo= IG5ld2VzdA== dWxp IGRlc2VydA== IGRpcA== IFBvdw== IGVxdWF0aW9u IHBvc3NpYmlsaXRpZXM= IEZlZA== b3NwaA== IFsl IGJ1YmJsZQ== ZXRoZXJsYW5kcw== Nzkz IGNlbWVudA== LmF1dG8= X0FO 4oCZLg== c2VsZWN0aW9u IEJvbmQ= OTg4 RGVu LU8= LmdldFR5cGU= ODk2 LldpbmRvdw== cHJlcw== IHN3aW5nZXI= In0pCg== IHBpcA== IG1pY2U= IGNvbXBvdW5k LXBsdWdpbg== aWtv IGNlbnR1cmllcw== aWN1bGFy LWlubGluZQ== CWtleQ== Plw8 RU5TSU9O IFsNCg== IHByZWNpc2VseQ== IMOpdMOp IFBhc3Q= IENhbWJyaWRnZQ== LWZ1bGw= IGFuYWx5emU= IFN0ZXZlbg== IG5lbQ== ZHVl b3Jlbg== IG11c2NsZXM= aWppbmc= ODUy Ly0= IEtlbm5lZHk= NTk3 Uk0= b3NzaWJsZQ== IGFjdHJlc3M= IGRvbG9y OTE0 5b2V TmVlZA== LnRvZ2dsZQ== IFJhY2U= d2Vycw== Lm1hdGVyaWFs IER1ZQ== IFBlbA== I3ByaW50 IGluZGVwZW5kZW5jZQ== ZXh1cw== U2hhZG93 IGVuY29kZXI= KGxldmVs IFN3aWZ0 LmRvYw== X3NlbGVjdGlvbg== OTUy IHNlcmlhbFZlcnNpb25VSUQ= OTQ1 TGFiZWxz IHBlcmZvcm1hbmNlcw== LlRhZw== IE5ITA== aXplbg== L1VJS2l0 OTkx X0NPTlRST0w= IGVhcm5pbmdz OTc1 IEFsdA== X0hBTkRMRQ== Q3R4 IHBlcnN1 IHRyYW4= 56g= X0NIQU5ORUw= IHNhdGlzZmFjdGlvbg== IEdQ NzY5 aW94 bWl0dA== bGFuZG8= IHBpZw== aW5hbHM= w6puY2lh NzMx U3VyZmFjZQ== IFVVSUQ= IGJlbmVmaWNpYWw= IHNlcXVlbmNlcw== CW1lbXNldA== IG1hZ2ljYWw= wqs= IHdvcm4= QVND cG9wdXA= Q09NUA== X2JlZm9yZQ== ZW5lc3M= VWk= TGVz LnJlcXVpcmU= LlNlcmlhbGl6YWJsZQ== YWRkR2Fw IGF1dGhvcml6YXRpb24= MDg1 LnB5cGxvdA== dXJyYXk= bGF0aXR1ZGU= ODQ1 ZnJhbWVz YWpz IGNvbXBhc3M= IG9ic2VydmF0aW9ucw== X3N1cA== LmVudmlyb24= IHRyaXBsZQ== IFJ1Ynk= IGRyYWlu X0ZJTFRFUg== U2Fu VU1Q TnVsbEV4Y2VwdGlvbg== IEdhYg== b3dl IFR1cmtpc2g= X3NlcXVlbmNl IEdyYW50 dWVsYQ== IHdv IGN1YmU= aXE= IGRpc29yZGVycw== IGV4dHJhb3JkaW5hcnk= IGN0cmw= IFNlcQ== ZW50cg== ODY1 IHNhbmN0aW9ucw== OTQ5 dXRzY2g= UmVwb3J0cw== IGluaGVyaXQ= UGVyaW9k IHBob3RvZ3JhcGh5 IEZyYW1ld29yaw== IHNwZWNpYWxpc3Q= ID8KCg== X3NlbGVjdGVk LlBsYXllcg== IGFsbG9jYXRpb24= KGFjY291bnQ= IHN0cnVjdHVyYWw= dmFibGU= LW9mZnNldA== LkFwcENvbXBhdEFjdGl2aXR5 0LDQvA== LkFkZFdpdGhWYWx1ZQ== IGljb25z IHNodXRkb3du X2xvdw== IENvbXBhcmU= IENl PWhlYWQ= bGFt LnByZWRpY3Q= X0RFQw== IFNsZWVw IEdyYXRpcw== IHN1Z2dlc3Rpb24= IERFTA== Y2FmZg== YXZpcnVz Tm90aGluZw== nos= IHdpZGVzcHJlYWQ= IG1lY2hhbmlzbXM= IHRleHRBbGlnbg== b2NjdXA= IFJhaWw= Ok5T IGZpYmVy IG1r IHZpbnRhZ2U= LWxvbmc= LnJlZHVjZQ== LkVudGl0aWVz KHJlY29yZA== IHBsZWFzYW50 RlJJTkc= LkNlbGxz T1RU CWVsc2VpZg== NjQ5 NzI0 X2NvbmZpcm0= IFZpZXdHcm91cA== c3lt IHByYXk= IHN1c3BlY3RlZA== Q29udGFpbnM= OTgz IGJvcmRlcnM= IGNvbXBvbmVudERpZA== QVNTRVJU IGluZmluaXRl LW9yZGVy IGhlbGxv IEdyYWRl LmN1cnJlbnRUaW1lTWlsbGlz YXBvbGlz emg= CU9iamVjdA== Olxc SE8= dmFsdWF0aW9u IHZvY2Fi NzE5 IGNvdXBvbg== YXRhYmFzZXM= LkdldFR5cGU= TGVhcm4= Nzky XT0i IEdhcnk= b3RpdmU= IGFzaA== IGJpYg== WFhYWA== IGJhbGFuY2Vk VkFMVUU= IE5hdA== X0Fk PEU= 5Yy6 IE1ldGhvZEluZm8= ODk3 TElC IGNvbnNpZGVyYWJsZQ== IEluZHVzdHJ5 dGVzdHM= LnNldFRpdGxl IEJsdWV0b290aA== IG1hcHBlZA== IEJydWNl IE1haW5XaW5kb3c= CXN0YXR1cw== IHJheg== IE1hbmQ= IGNsYXNzaWZpY2F0aW9u UGVybWlzc2lvbnM= OTY5 IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= IGNvbnRhaW5lcnM= OnNldA== X3htbA== IHdoaWxzdA== VGhyb3VnaA== IHZhbGlnbg== IHdvcmxkcw== Q09SRA== RURJQQ== 0YDQvtCy IHNwYXJl IEhhZA== IERFRg== KHB0cg== IHdhcm1pbmc= ODk4 4KS+ IGNvbnNlbnN1cw== YWduZQ== Q1RM IOyV Lk1haW4= d2ViRWxlbWVudA== IHBpc3Q= Rmxhc2g= QXBwZW5k LnR3aW1n VGFw IHZlZ2V0YWJsZXM= YWxn MDU4 LnNhbXBsZQ== IGNvYWNoaW5n KGluZA== Q2VsbFZhbHVl Q2hlY2tCb3g= IEhlbGw= Uk9PVA== Nzk2 IHN0YWRpdW0= IGludmVzdGlnYXRpbmc= KSU= c3RlZA== OTY1 IFdyaXRpbmc= IOqy IHVubw== IHt7LS0= IGNvb3Jkcw== IHVuc2Vy b3JnYW5pemF0aW9u IENyaW1l IERlbW9jcmF0 NTc5 IHZpbg== L2ZpbGU= MDc4 LWFwaQ== IEF5 IGZ1bmRlZA== IEJyZXhpdA== IEdo ZW50aW5h Y2FzZXM= IGRhc2g= ICEhfQo= SEk= T2ZmaWNl IGNhcHRhaW4= IHdvcnNoaXA= XEM= NzMz ODUx IGdsb2Jl X2JvYXJk IGJhYmllcw== ODc2 IGNvbnNlY3V0aXZl IGVuaGFuY2Vk ZXJldW0= IEFkdmlz IGdyYWlu Nzcx IGNyYXc= YW5jZWxsYXRpb25Ub2tlbg== LmFscGhh X1dJVEg= IE90dA== IENvb2w= LmJhdGNo IHZlcmlmaWVk KGNhbGxiYWNr IHJlZ2FyZHM= Njgz IEludFB0cg== b3VjaGVy IGtpbg== IHRvdWNoZWQ= aXTDoA== YXRob24= IGFkamFjZW50 IGFjY29tcGFuaWVk TEVBUg== IGltcGxpZXM= IGhpbGw= IEJhbHRpbW9yZQ== PSIt RmluYWxseQ== ODgz U2Ft aWNvcHQ= IHNvZA== IG1hag== IFNoaXBwaW5n IGdldEFsbA== IGNvYWNoZXM= IGRvbmF0aW9ucw== aWxvdA== IFRhcg== Y2Vycg== IGJhZGdl IG1hcmtlcnM= IFJhbmQ= YWlzZWQ= aXNzYW5jZQ== IGV4cGxvcmluZw== ODI3 dWNlZA== IEluZG9uZXNpYQ== IGJlbmVhdGg= IG1hZ25ldGlj IG11c2V1bQ== bWF0Y2hDb25kaXRpb24= IGRpc3J1cHQ= IHJlbWluZA== IFRN IC8+PA== IGZvb2w= IGVzaw== Lk51bGw= IERpZXM= X09VVFBVVA== X1RZUEVE IHBhaW50ZWQ= Njcz NzM1 IHNvcGhpc3RpYw== IEJlYXI= Km4= X1BBQ0s= IGRlbGl2ZXJpbmc= IENPVU5U 5Y2V IGplZw== LWNhcg== Zm5hbWU= IHJhbmdpbmc= ODQ4 IE5lZw== LyoqKioqKi8= IENIQVI= IHVsdHJh R3JhZA== PXQ= IGp1ZGdlcw== IERpc2U= YW5uZXJz OTg1 ODkx ODYx IHNjYWw= X2NhbA== IENPTk5FQ1RJT04= X2VtYmVk KGZu IENyYWZ0 MDQ3 IFBhcw== IiktPg== LmNvbnZlcnQ= LnJlc291cmNl IFNUQVRVUw== w7RuZw== IFRpdA== IGNsYXNzcm9vbQ== IEFyY2hpdGVjdA== IEtpbmdz IHN0ZWFkeQ== LyohCg== IEdlbmU= KSI7Cg== aWNpYQ== c3Rhbg== IENvbnN0cnVjdGlvbg== dW1wZXI= OTUx d2M= IENCUw== aW5naW5n LXBhcnR5 KGRyaXZlcg== TUFSSw== MDgy IG5lc3RlZA== ZXdhcmQ= IGRlcGVuZGVuY3k= IG1hbGVz OTI4 IE9ORQ== IFByb2R1Y3Rpb24= XVsk 44O844M= X0xPQUQ= IEJvbA== ZWxyeQ== ODMx oOmZpA== IFJlcXVpcmU= IHBsYWNpbmc= eHh4 Q0FMRQ== IHRodW1i ODI0 Q2hvb3Nl IHByb3RvdHlwZQ== Vk9JRA== IGxlc2JpYW4= NzQx IHRyYWl0cw== U2hhcnA= IGNvbnN1bWU= VHJ1dGg= IGFjdGlvblBlcmZvcm1lZA== IEVudmlyb25tZW50YWw= IERlYW4= IGVzdGFkbw== c2FtZQ== IG51bWVyaWM= IHRyYW5zaXQ= LkVtYWls LXNpZGU= X1JVTg== IFZpbGxhZ2U= X09QRU4= 6KY= LnJlbQ== LXdhcm5pbmc= YW55YQ== UHJvcGVydHlDaGFuZ2Vk ICghXw== KGNoZWNr aWxpYQ== IFNvZnQ= c3RlcHM= IE1hZHJpZA== TWVtb3J5V2FybmluZw== IGhhbmRsZXJz IGV4cGVyaWVuY2luZw== IGluc3BlY3Q= YnV0dG9ucw== UmVjZWl2ZU1lbW9yeVdhcm5pbmc= Y2hlbXk= TGlua3M= IHVybGxpYg== LlN5c3RlbUNvbG9ycw== IEVpZ2Vu IHB1bmlzaG1lbnQ= OlVJQ29udHJvbA== YmFyYQ== LXNldA== IH0NCg0KDQo= IHRvbGVyYW5jZQ== IGludGVyZmFjZXM= LnJlZGlyZWN0 aWdoYm9ycw== Y3NyZg== X2JhY2tncm91bmQ= LlV0aWxz X0hU Njky IEludGVyZXN0 aW1vcw== IGdyYW50cw== MDgz IGV4YW1pbmVk 0JQ= IGNm Zm9yZ2U= YmFja3M= IE9iamVjdHM= X3NlbnQ= LmVudHJ5 IFRIRU4= ZWxsaWRv Y2lh LHJlcw== NjU5 Njgx L3N0ZGM= Lm5k KEludA== IEF1dGhvcnM= IEFwcENvbXBhdEFjdGl2aXR5 J3s= IG1lZGk= TXVzaWM= aWdt Y2VpcHQ= IGF1c3M= IHRhcmdldGluZw== IEtleXM= aG4= Ol0K IG1pbmVyYWw= w64= LmNh NzYx b21lZA== IHNoZWV0cw== IGNhbWI= IGRlYWRseQ== LmluamVjdA== KHVuaXQ= IFNlbGVjdGlvbg== Lmdtcw== KGNvbm5lY3Rpb24= ICQoIg== w6ltb24= IEN1cnJlbnRseQ== cHRl X3BhdGhz ODQ3 bGVhZg== IGltcGxpY2F0aW9ucw== cG9zYWw= 5L2N Wy8= YW5jaWE= 6Zs= bXVs Y2ll IGdlaWxl Njc5 aW1hbHM= VUlWaWV3 IHN1cnJl c2VyaWFsaXpl SVNP IGFyYml0cmFyeQ== IHNvY2thZGRy LmZu IE1lcmM= IGNhc3Rpbmc= S2V5RG93bg== IG5ld1ZhbHVl b3BlbnM= NzE3 VG9kbw== IGZsZXhpYmlsaXR5 CQkJCSAg VmVsb2NpdHk= w7pu cm93aW5n IGNvbXB1dGVk YCkK c3RhdGVtZW50 IHJp X2NhcnQ= TG93 dHJhbnNmZXI= Lm5hdg== IGdyYXZl IERvb3I= CWFsZXJ0 Njkx Njk4 LnN1YnNjcmliZQ== LXByb2ZpbGU= CWJhc2U= IOKIkg== X18KCg== IGVuZ2luZWVycw== IGV4cGxvc2lvbg== IGRhcmk= Njgy CUxvZw== b25hbA== IGlzb2xhdGVk e2k= IE1zZw== RnV0dXJl IHJhY2lzdA== LXdyYXA= IFZlcnM= Ym9yZw== SVNJT04= INGA0LDQ IFlhbg== ODM2 aW5pdFdpdGg= IG5vbWlu KGVtcHR5 w61u 44Kk CXdpZHRo IGNoYW1iZXI= L2FqYXg= RU1Q MDkz IG5lY2Vz aXZvcw== bG9naWM= Kikm Y3JpcHRz OTc2 Um93QXQ= MDUz aWJsaW5ncw== IGVhcnM= IGNvbXB1dGluZw== IG1ha2Vy IE5laXRoZXI= YnJlYWRjcnVtYg== IHNlcmlhbGl6ZQ== IFdpdGhpbg== IGRlbGw= X1RSQUNF MDky PWE= IHdpc2hlcw== LWluY2g= IERvcg== IGlubm9jZW50 IERvbA== IGludGVucw== Zm9yY2Vk MDU0 IEJJVA== IHBob3RvZ3JhcGhz IGNhc2E= IExlbg== XEZyYW1ld29yaw== LlNpbXBsZQ== IGRlYXI= ODk1 KS8o aXBwaQ== IG93bnM= UGxheWVycw== IHByb3Bvc2Fscw== LnBp dXNhbGVt RGFtYWdl IGNhbG9yaWVz IENyZWF0aXZl IFsk IC8vDQo= Nzg2 QW5kVmlldw== w6htZQ== LmN1c3RvbQ== X2ZhY3Rvcnk= Y29tbWFuZHM= X2xvb2s= IHN0cmNtcA== WU4= YWlyZWQ= IGF1ZGl0 0L7RgdGC IFJldmVyc2U= cm9wcmlhdGU= ZXRpY3M= PHZlY3Rvcg== LnNlbGVuaXVt Lm9y IHByZWRpY2F0ZQ== IGZpbmlzaGluZw== IGtsZQ== IFJlcG9z IEtoYW4= IE1ha2luZw== IEZT IHB1dGU= CXN0YXRl X1NVUFBPUlQ= Jy0= b3JpZW50YXRpb24= IGV4aXN0ZWQ= YXR1cmE= IGV4cGVjdHM= IFNoYWRvdw== OTY2 IG9yZ2FuaXo= 5Z6L IHN1c3BlbnNpb24= NjY5 IHVpdA== IHNpbXVsdGFuZW91c2x5 IEFmZmVybw== OiIpOwo= IHJvY2tldA== Y2Fz ZXRlcm1pbmU= YWNldXQ= Njkz eGw= IEFNRA== KGdyYXBo NzU4 ODcy YXNzb2Np X0NS LmFyYW5nZQ== MDQ5 KGpMYWJlbA== IGJlZWY= UXVpY2s= LmNhcmQ= XSk6 LWdy Nzk3 LkdPTkU= X0NMT1NF IE5ldg== w61hcw== IHN0ZXBwZWQ= IEZyZWVkb20= IFdS TlNBcnJheQ== X3J4 X2RpYWxvZw== IGhvdGVscw== OTUz IChcPA== IERpYW1vbmQ= IGFzc3VtcHRpb24= dW1p KGl0ZW1z DQ0NCg== 5rOV IG5lbA== Qm9va3M= 5Y6/ dXNi IEZJTg== ODgx 5qw= IGNvcnBvcmF0aW9ucw== VVNB ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== OTI5 LnByb3BlcnR5 ZXdpc2U= X3Bsb3Q= Ij4nOwo= IHBlcHBlcg== OTg5 IHNoZWQ= IE1lZGl1bQ== IENvb2tpZQ== ODg5 IG92ZXJzZWFz ZWRvcg== YXN1cmVtZW50 NzY2 5a2Y ICcuJw== IHBocA== IFBST0M= IGV4Y2VwdGlvbmFs KHRo IEpldA== IG9jY3VwaWVk LnNldEltYWdl IFJlbGF0ZWQ= dWNrZXI= TWVtYmVycw== UFJJTlQ= IEdsbw== X1ZJRVc= fSIsCg== IGFkb3B0aW9u W10pCg== ODQy IE1pc3NvdXJp IExpbmNvbG4= ZXJhbGQ= UG9wdXA= IGZhdGU= LWJvb3RzdHJhcA== ZmVjdGlvbnM= IFBvbGw= X0FSR1M= aW5hbmNl Njk3 LWhvbWU= Liks X2RvbmU= Njk0 OgoKCg== IGRpc2N1c3Npbmc= IFNRTEV4Y2VwdGlvbg== IGVsZWN0cm8= CXJlcQ== IHp3 ODg2 IGx1aQ== OTMy IG92ZXJuaWdodA== JHVzZXI= IFdBWQ== IGFsbGVyZw== IGRpc2FwcG9pbnRlZA== IHJhZGlhdGlvbg== IGltcHJlc3NlZA== aWZpY2F0ZXM= IHRvYg== Q0xBU1M= IGN1ZGE= X2RldA== LXBvc3Q= dWx1 VHJhbnNsYXRpb24= LWhhbmQ= LnllYXI= IE1vbmdv IHVuY2xlYXI= LmVuZ2luZQ== V0VCUEFDSw== cmljZXM= X0FDQ0VTUw== IGhvbGlkYXlz cGVyY2VudA== LklkZW50aXR5 IEdvdg== IHBhc3Npb25hdGU= ISEu IEdyZWVjZQ== cGx1c3BsdXM= JykpOw== R1A= IGV4Y2l0 LnRhYlBhZ2U= X2NvbmQ= IHNwb25zb3I= TU9EVUxF X3Byb2M= ICQK IHJhdGlvbmFs LlRvb2w= IGlocg== Y2Nh 5ZOB IEVzdGF0ZQ== SUJVVEU= QWN0aW9uUGVyZm9ybWVk IFNvbGFy poI= IGVxdWl0eQ== dGlk OTM4 IHJlY2lw LnNpbXBsZQ== bWs= Njg5 IEx1a2U= IEd1YXJkaWFu IGVuY3J5cHRlZA== IGRvbWluYW50 LnBsYWNl IE5W ODM5 IHRvbmd1ZQ== KEdldA== IHN0YWlubGVzcw== LlBsYXk= IGVi YWNp LmJ1ZmZlcg== cmVhZGNydW1icw== IHZhY2NpbmU= cHJvbQ== OTc5 IHVzZXJJbmZv IHNsdWc= U2VyaWFsaXplZE5hbWU= LXdpZGU= IHJlYWN0aW9ucw== IFlhbmc= IEFkZHM= KHVzZXJJZA== IHBsYXRlcw== IE1FTQ== IGJhaWw= SW5zaWRl ZXRlZA== IGVsc2lm IHNha2U= IGN5Y2xlcw== IOyX CUk= LWNvbGxhcHNl ODQx IEdNVA== ODE0 RGVjbGFyYXRpb24= IGdyb3M= IHJlYWNoZXM= IGN1c3RvZHk= VW50aWw= NzUz ODU2 dHU= IENoZW4= IG54 KGFkZHI= IE9mZmVy IGNvbGxlZw== YXNzYWRvcg== Njc0 IG1hcHBlcg== ODU0 IFNJR05BTA== IEJsb29t IEhvbGw= IEltcGVy LWRlcw== X3NpdGU= UHJvYw== RXF1 IGF0b21pYw== IFdvbWFu c2VudA== NzM4 ODE3 c2Nhcg== IGludGVsbGlnZW50 IEdldHRpbmc= IFJlZ2lzdHJhdGlvbg== IFBoaWxs IGtpbGxlcg== dW5pY29kZQ== CgkJCg== IEphY29i IENvbnN0 IGxvY2F0ZQ== IGNhdXM= NzQ5 IFNjaG9sYXI= IGNvbnN0aXR1dGlvbmFs IGluZmxhdGlvbg== IEdvdA== PWFycmF5 ZW5kdW0= IHRyYW5zbGF0ZWQ= IGRpdm9yY2U= RW50cmllcw== IHNvcg== IFF1b3Rl aXJsaW5lcw== VUs= IGV4Y2Vs KG9wdA== IEFEVg== LDos IGNvbnRhY3RlZA== NzQy IERB IHJpbmdz IEluZHVzdHJpYWw= LmdldENvbnRleHQ= IGZvcmdvdHRlbg== IFRhbg== IHBhbnRz IG92 IGRlY29kZXI= IFBhcnRpYWw= IHZj IGJhdHRsZXM= QXJpYWw= RlJJTkdFTUVOVA== aXJhdGVz LHc= YWludGVuYW5jZQ== IE9k IFRlY2hub2xvZ2llcw== 5YmN IENhcnRlcg== LmZpbmRBbGw= Tm9tZQ== QmVu IFVzYWdl IFBpY3R1cmU= IGJhZGx5 X3BhbmVs IHBhdGVudA== IFByb3RvY29s bG90dGU= CXBsYXllcg== amVjdGlvbnM= NzQ2 IGRvdQ== X3JlbGVhc2U= dXJuaXR1cmU= X3RheA== IEZpZWxkcw== LmRhdGFzZXQ= X21hc3Rlcg== Q0xVREU= IFBoYXJt YnN0 IG9wZXJhdGlvbmFs LmNlbGw= IGlkZW50aWZ5aW5n IGp3dA== dHVwbGU= IFRD IENybw== OTM2 aXhtYXA= LWNvbXBvbmVudHM= Z2VuZXJhbA== IG96 X0Rl X2RvdWJsZQ== IFRvbw== MDg4 LlZpZXdHcm91cA== ODc5 Z2F0ZQ== ZGluZ3M= cGhvdG9z IGdyYW5kZQ== b2xsZWN0 X2xpbg== IGF3ZnVs ZmlsdGVycw== IGFsdGVybmF0ZQ== ZXNw IGNvbXByZXNz ZW8= IFNjYWxl IGluZGlyZWN0 IGludm9pY2U= CgoKCgoKCgoKCgoKCgoKCg== U3RhcnRpbmc= IFBsYXllcnM= aWVsZQ== LnRoZW4= OTgx T3Jk IFR1cGxl IGJvdXQ= IFN0YXRpc3RpY3M= UHJldmlldw== IHB1enpsZQ== IFdpZHRo U1RBVEU= IG92ZXJsYXk= CW9u IGluZnI= IHNtYWxsZXN0 bG9ja2Vk 0YLQvg== c3Ns Nzc5 IGRlZW1lZA== IHNjbw== cmVjaw== IGpCdXR0b24= IG1pc3Npb25z ODcx 56ew LlNlbGVjdGVkSW5kZXg= VEFCTEU= U2VwdA== IGFja25vd2xlZGdl IHN0cnRvdGltZQ== IFRlbGw= IERhaw== IGFsdW1pbnVt IGZlbmNl IFN0YXJz Q09ORklH IHJldHJvZml0 IGVtcGhhc2lz L2hlYWRlcg== IFNvbWV0aGluZw== aW5pc2hlZA== PSciLiQ= IFZhbGlkYXRvcnM= IHBvbGFy c2VjdGlvbnM= OTQ0 LmFzcHg= IGFzcGly Lk1vY2s= Q29kZUdlbg== IHBldXQ= OTcx IGFjY2VwdGluZw== IGJhY2tpbmc= UGljdHVyZQ== L2Fw 0LXQsw== X1NFQw== LXVzZQ== YW5ub3RhdGlvbg== IGNvZ25pdGl2ZQ== IGdyaXA= aG91cg== IExlZ2Fs IGVwaWM= LnRvb2xTdHJpcA== Lm5vdGlmeQ== Lkxhc3Q= T1JJWg== TWlkZGxld2FyZQ== Y3JpcHRpb25z bGFzaA== X0ZPVU5E IExpdmVycG9vbA== IHt9Iiw= OTMx SW5zdGFsbA== IG5pdA== IGZpZ3VyZWQ= W2xlbg== Lldpbg== LnBsYXRmb3Jt ODUz IGdhbWJsaW5n KGR0 YXZlcnk= CWluY2x1ZGU= V2hldGhlcg== Um91dGluZw== IHRoZXJhcA== UmVtb3Rl IExvc3M= eWxs IGFwcHJvYWNoZWQ= IFZlaGljbGU= IEFscGhh IHZvY8Oq YW5zd2Vycw== TlNEaWN0aW9uYXJ5 OTU0 Y29uc2lkZXI= dW51c2Vk IEZhbg== b3JhYmxl ZnJl ODcz IERJU0NMQUlN IEFjdG9y Ll0= dG9IYXZl LnVzZXJJZA== IHNwZWVkcw== ZXdheQ== IHJlY3Vycw== INCz X3ByaXY= IeKAnQoK Q2hvaWNl IHNldHRsZQ== IHBsYW5lcw== J30s VG9t SVRFUg== ISIK 5bs= YWNoZWxvcg== IHNlcGFyYXRpb24= IGRhbA== YWRq IHJlZ2lzdGVycw== cml6 IE5vdGljZQ== IGx1 IGNvdXJhZ2U= IGF4ZXM= Y2VsbGVudA== LmFzeW5j MDcz IGNvbXBhdGliaWxpdHk= 56s= ICEKCg== CXRpdGxl WUxF CW1lc3NhZ2U= VVVJRA== T0xERVI= IEhI IFN0eWxlU2hlZXQ= IGFjY2Vzc2Vk LnZhbGlkYXRpb24= dGFza3M= IHBvbGx1dGlvbg== LmNhbnZhcw== IGluZ3JlZGllbnQ= IENhYmlu QWg= b2xkb3du IE5PSQ== IMOX W2Y= ZWR1Yw== eWFsdHk= KG5vdA== X1N0YXRl OTMz YW1lbg== Nzk1 NzM5 IGRhbw== dWRhZA== ZWxsZXJz fSY= bGljaXR5 X1dJTkRPVw== IHRhdHRv dmFsb3I= LlJhbmdl IHJlZmVyZW5jZWQ= IFJlc2VydmU= TW9uZXk= ODc0 U0NSSVBU L3Byb2R1Y3Q= Y2hvaWNlcw== IHRpbg== 44KT OTE4 IHNlcGFyYXRvcg== IHBrZw== YW1tZWQ= IE1BVA== ISEKCg== IHJhaWQ= IG1vdGl2YXRpb24= IFhQ IEJhY2tncm91bmQ= IFF1YXRlcm5pb24= LmRlZmluZVByb3BlcnR5 aWtlcg== CXBhcmVudA== IE9yaWdpbmFsbHk= YW50YWdl IEhhbnM= IHRpbWVsaW5l LmN1cg== b3BpYw== IFNlcXU= bXVzdA== IENvYWw= IGZvcm1hdHRlcg== X1JHQg== IF8oIg== J30pLAo= ID09PT09PT09PT09PT09PT09 IEZVTkNUSU9O IGxuZw== aWNhdGVz bGl2ZQ== X2VuZ2luZQ== IHRvd25z ODY4 JykpCgo= IFBL KGFwaQ== CXNjYW5m MDg5 cGFja2V0 LnBob25l 4YA= IEFuZHk= X05BTUVT OTgy UExZ OTU1 IG1pbnM= aW1p IGJyaWNr IGJsYWRl LnN0ZG91dA== fWA7Cg== U2hpZnQ= CXNi IENoZWNrcw== IHBoZW5vbWVub24= QXZhdGFy IG1pbmlzdHJ5 cm9zZQ== CUZpbGU= ODc4 IHRpdGxlZA== KExPRw== IGdhbg== ZGVzaWdu KCksDQo= IGJvbmVz c3Rt xZvEhw== IElucHV0U3RyZWFt IHZvbHVudA== IFNlcmlhbGl6YWJsZQ== IGZpZ2h0ZXI= IERyYWc= VHdpdHRlcg== IHN1YnNpZA== 57w= IGZvcnVtcw== LmxvYWRpbmc= bG9nZ2Vk X3RoaXM= IHRlcnJhaW4= IGlycmU= IEluZw== IENO X29iamVjdHM= LnVpZA== IGNvbnNjaW91c25lc3M= VElOR1M= IEdhbGw= IHBvcnRyYXk= MDU2 IERldmVsb3Blcg== IHBhcnRpY2lwYW50 ICI7DQo= L21vZGVs Nzk0 IE9wZXJhdGlvbnM= Xlw= IExhdGVy IHJhaXNlcw== LW5vbmU= Lm1ldGE= PScuJA== RmluaXNoZWQ= IHJlcGxhY2luZw== IHNhbXBsaW5n IEplbg== IlRoZXJl UkVBTA== QUxF 7Iqk T3JkZXJz X3BhcmFtZXRlcg== IE9seW1waWM= IHRyw6hz IGFyZW5h aW9s Oz8+ IGltcGFjdHM= IFdT OmdldA== IGZsaWdodHM= IFJ1c3NlbGw= Y2FtZXJh Rm4= c2lnbWE= IGZvcmNpbmc= IGxvY2Fscw== IGRlcGFydHVyZQ== IGNlbGVicmF0aW9u IFNheQ== ODg0 77yS IEhpbGxz Lmhhc093blByb3BlcnR5 IHR5cGluZ3M= LkFQSQ== IGRvbmF0aW9u T3BlcmF0aW9uRXhjZXB0aW9u LkFjdGl2aXR5 Y3BsdXNwbHVz IENoYXJsaWU= IGltcG9ydGVk IGRhbm4= IG9jY2FzaW9ucw== IGltcGxlbWVudGluZw== IHB1cnBsZQ== LmRpYWxvZw== U1FMRXhjZXB0aW9u ZXJubw== IHdhcnM= IHBhc3Rl IGRlY3JlYXNlZA== IGhhcnNo IGVsYWJvcg== aW5wdXRz IFZpZXdz IGVycm9yTWVzc2FnZQ== X211bA== CXdyaXRl IENvcA== IEFubnVhbA== KGJ1dHRvbg== IHZpZGE= YmFycw== IEhhcnZhcmQ= CWV4cGVjdA== IGluZGV4ZXM= IGRvY3VtZW50YXJ5 IGZsZXNo T1JMRA== IERlbHRh TUFORA== QnJ1c2g= LWNvbHVtbg== IGRldmVsb3BtZW50cw== OTc0 Nzgz bWV0aG9kVmlzaXRvcg== c2xpY2U= IFBETw== IGludmVzdGluZw== ODY3 aXJhYmxl IHhtbG5z 77yb YXJ0YQ== IHRoZW9yaWVz X2NpdHk= ICRfXw== Q3JlYXRpbmc= KHBy RHJvcGRvd24= aXNtYXRjaA== IE5FVA== OTI2 J10pKXsK IFZhbHVlcw== IFNFTw== IFNUQVQ= IGVjb3N5c3RlbQ== IHRlbXB0 IFxc IC8vewo= IENocmlzdG9waGVy IEtlbnR1Y2t5 IEh0dHBTZXJ2bGV0UmVzcG9uc2U= IGh5YnJpZA== eW9u IGZlZWRpbmc= IEV4dHJh Tm9ybQ== SVRDSA== IFNlYW4= IFVwbG9hZA== bXVu cHVy IHBlcnNpc3RlbnQ= IElEQw== IFBlcmZvcm0= ODYz Lm1lcmdl X3Jvb20= TWVhbndoaWxl IT0n IFdlbA== QXJnc0NvbnN0cnVjdG9y ODg3 LkRhdGFiYXNl IGNvdW50aW5n KCkq lOWbng== IFRPUA== bWlsbA== IERU SUdORUQ= OTU2 IEtC IGNvbXBseQ== U291dGg= X2NvbGxlY3Rpb24= Q2hhcHRlcg== IGV4cGxhaW5pbmc= X0FN X3Rz Y2FyZHM= IHF1ZWw= IHBvbGU= IHRvdWNoZG93bg== IE90aGVycw== IHBlZXJz IFR5cGVFcnJvcg== NzYz IHNpeHRo IGNoZWVy IGRpc3B1dGU= OTYz ODkz dXNj KV0s dGh1bWI= IGhpZGluZw== IFNJRw== bGlrZXM= IFBBR0U= LlJlZmxlY3Rpb24= IGhlYWRxdWFydGVycw== VElORw== IEdob3N0 TUxF JAo= IGNvbnRyYXJ5 ZXh0ZW5k J10pLg== RkZFQ1Q= IFBpbnRlcmVzdA== w7ptZXJv cmljYW5l CXNlc3Npb24= IGNyeXN0YWw= LUNvbnRyb2w= b3Zlcm5tZW50 b2dyYWY= OTYx LWFjdGlvbg== dm9sdW1l ZnRlbg== IHVuY29u IGFuaW1hdGU= IGxlYXNl c2Ny IHJlZnVzZQ== 44CL ZnRw aW5mb3JtYXRpb24= IGV2YWx1YXRlZA== IGluamVjdGlvbg== IGphY2s= IHdvcmtzaG9w 5rOo UFRI IFRz b2ZmZXI= CW9z IGtpbmdkb20= TWlzc2luZw== IGxhd21ha2Vycw== ZXh0RmllbGQ= IHNpbmdpbmc= YWJp L2NsaWVudA== Lm1lZGlh QVRFR09SWQ== U2lnbmF0dXJl JScsCg== IEZ1Y2s= XVs6 IHNlbnNvcnM= L2NvbQ== IFByaW1hcnk= LlNRTA== X3Byb2dyYW0= IHBpbGxz IGludGVncmFs IGZsZWV0 IGRyb3BwaW5n LnNs QmVlbg== IHBldHM= IGFkdmlzZWQ= IGRyYWdvbg== X0VESVQ= KGlt OTM5 RkVS IERydWc= KHJhbmRvbQ== IGNvbXByZXNzaW9u b3VzdA== WyU= IGJ1eWVy aG9w Um9sZXM= bWFuYWdl IHBhaW5mdWw= IEJyYW5jaA== LW1vZGFs ZW5hbnQ= IE1lc2g= L2ZvbnQ= IEdyYWhhbQ== IOKY IG5j IEZyYW5jaXM= IHNwZWNpZmljYXRpb24= IGRhbWFnZXM= LWNvbmZpZw== IHRoZW9yZXQ= c2VjdXJl X211bHRp YWNldXRpY2Fs IGRlbWFuZGluZw== ZW5uZQ== SVNUUw== MDk0 KCkpKTsKCg== UmVhc29u UmVjZW50 cGhhc2U= IHBzeQ== X01BTg== IHZvbHVudGVlcg== 5b8= aXN0cmlidXRlZA== bGlv IHByb2R1Y3Rpdml0eQ== X2NvbW0= U3ByaW5n bmlz LndlaWdodA== IENhbmNlcg== QWxsb2M= IFR3ZWV0 IHNlcGFyYXRlbHk= CWNoZWNr X3Byb3BlcnRpZXM= LlVuaXQ= ODI5 X0NMSw== IGd0 ICgpOwoK IGhhbmR5 ODM0 IFRob21wc29u IHVubmVjZXNzYXJ5 IFJlYWRlcg== ODk0 R04= PXJlcXVlc3Q= IFV0aWxpdHk= LlJlcG9zaXRvcnk= IEF4 aHlkcg== Nzkx aWV1 IHRoeQ== IGx0 X21haWw= 5L+u5pS5 YWlsYW5k IFBoaWxpcA== IGJpdHRlcg== IGJldHRpbmc= ODM3 IHRpbWVk b2Nrcw== MDc2 J2E= IGFsZ29yaXRobXM= IHJlaW50ZXJwcmV0 IHRvc3M= cm9nZW4= IGhvcGVk KHNlbGVjdGVk IHZlbnR1cmU= VEVY IExlYXZl LlN1YnN0cmluZw== IGdyYXRlZnVs NzQz dWth IENvbnN1bWVy IGFnZ3JlZw== Q2lyY2xl 4LiB X2Jsb2Nrcw== IGxlZ2FsbHk= ICJ8 44OD LmJvYXJk LkFi RnVuY3Rpb25z cmVjaXBl 6Ic= IE94Zm9yZA== IHdob2xlcw== LkJ1aWxk X2NoYW5nZWQ= aGFp IGRlcGFydG1lbnRz OTY0 SW1w IGNvYWxpdGlvbg== SU5GUklOR0VNRU5U IGVtcG93ZXI= aXRjaGVz Tm9ydGg= IGluZmxhbW0= T05TRQ== IG1pc3NpbGU= IFJhag== IElzc3Vl IGF0b2k= Y2FsZWQ= LkNvbnRyb2xsZXJz IFdvbGY= IGNydXNoZXJz 4buH LkF1dGg= LmFkZEF0dHJpYnV0ZQ== aGlz IGJvb3Rz LmNsZWFu Y2FtcA== IHRlbmFudA== IHR1bmU= IHt9Jy4= IHdvcmtvdXQ= UmVwbw== IHBhcnRpYWxseQ== TUlTU0lPTg== amFtaW4= IFNC IGRldGVybWluYXRpb24= ICcnKTsK IEJlbmc= IHZvcw== IGluaGFi L2xhbmc= c2J1cmdo RXhlY3V0b3I= aG9uZQ== IENoYWxsZW5nZQ== X2xpbmtz LkxldmVs IHVuZGVyZ3JvdW5k LWNvZGU= OTU5 IG9wdGltaXphdGlvbg== bG9nZ2luZw== X2Rlc3Q= IHNuYWtl IGNoZW1pY2Fscw== X0lNUE9SVEVE YWRvb3A= IFRIQVQ= bWFuYWdlZA== IHJlZHVjZXM= IFJFQUw= IEd1eQ== X0dFTkVSSUM= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LmFtb3VudA== IGRlcmU= Z2V0VGltZQ== IHBhbnQ= YW5vbnltb3Vz IGhhcm1vbnk= IEFsYW4= IHNjZW5hcmlvcw== IGRpcnQ= aHRhZ3M= TWM= U2hlbGw= cmlu ew0KDQo= LnBvdw== CWNsaWVudA== IGNvbnNwaXJhY3k= IGFkbWlzc2lvbg== IFJlZ2lvbmFs IFZpZXdDb250cm9sbGVy IFBoaWxpcHBpbmVz IGRlcG9z IHBhcA== OTYy IFBhZA== UGF1bA== LkNvbWJvQm94 IHR1dG9y IFJlY2lwZQ== d3JpdGluZw== IGNvbnRyaWJ1dG9y T1RI U21hbGw= Vkk= IGhhY2Vy ZXF1 IEV4YW1wbGVz aHVtYW4= Lm1lc3NhZ2Vz CXR5cA== ICgNCg== IFNTTA== TEVO IFJvbW5leQ== KGdyaWQ= CW1pbg== ID4KCg== IGZydWl0cw== IHZvdGVy SW5saW5l cGFuZQ== IENvbGxlY3Rpb25z Y2hhcnNldA== IHNwYW0= emI= aXRlbWFw IHN1Y2NlZWRlZA== X0NPTA== IGVsYXBzZWQ= aW1ldGVy IHJlY292ZXJlZA== VGVuc29y aGF0dGFu LnNldHVw aXN0bw== KGhlYWQ= OTc3 IFNJWkU= IHRhY3RpY3M= IGRpc3R1cg== IHByZXZhbA== aWNpb3M= KFZhbHVl X2NvbHM= IEZhdA== IHNlYWw= IHNvbnM= IGVuc3VyZXM= MDk1 IHByZXNzaW5n PSY= aWdlbm91cw== IGhhcmFzc21lbnQ= X0pTT04= IGlnbm9y eW5vbWlhbA== b21lcg== X3N0YXRpYw== IHNpZ25pZmljYW5jZQ== IGNpcmNsZXM= X1N5c3RlbQ== IGRpc2NpcGxpbmU= IGRyZXNzZWQ= IHNwaGVyZQ== OTI3 IGNsaW1i NzU5 X2FjdGlvbnM= IEJhYg== ICc9Jyw= X3NjaGVtYQ== InVzZQ== IHVuZGVycw== IGN1cHM= LnNjcmVlbg== L25ldw== IGFwcGVhcmluZw== VE9Q dmlzZWQ= Y2xhbmc= IGludmVzdGlnYXRvcnM= IG15c3RlcmlvdXM= IHByb21pc2luZw== IHF1YWxpZnk= IGNhdmU= IGVxdWlw PXg= R1Q= KGxpbms= LnZlbG9jaXR5 LmVyYXNl b3Rlcg== KysrKysrKys= cHJvZml0 IHpvbmVz X3VpZA== LXNlcg== IG9iamVjdGl2ZXM= IG1pbGY= d2Via2l0 KG1hdGNo bmVo IEFzc29jaWF0ZWQ= IFRvZG8= PWQ= MDY1 Q2Ft IHZvY2Fs IHN1ZG8= KEVY IHRyb3U= QUJD LmJlYW4= IEdyb3VuZA== IFJFU1Q= d2VldHM= SW5n aW1vbg== OTQ2 X2J1cw== IENPTE9S dW50bw== IGZvc3M= IExpbmtz ODY5 w6RuZw== L2Zvcm1z cHJpc2Vz IGFjaGlldmVtZW50 Q0FMTA== 0LXQu9GM IFZlcmlmeQ== X1NPVVJDRQ== YXB0Y2hh SURE X3JlZmVyZW5jZQ== R29sZA== ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo= OTQ3 UmVjZWl2ZXI= MDk5 IGFq X2RpcmVjdGlvbg== fV0= IENvbXBldA== IGJhbmc= Nzk4 IENhc3M= LXVybA== dGVjaG4= IEplcnVzYWxlbQ== bG9uZ2l0dWRl Jyk7DQoNCg== IHdpbm5lcnM= VGFza3M= IERNQQ== IHRvb2x0aXA= jrc= IEJyYQ== X2R1cmF0aW9u Y3VyeQ== cGFyZW50cw== LS0tLTwv IHBhc3Nwb3J0 ODQ5 V0M= INC7 Y2Vzc2lvbg== IFllbGxvdw== IGVuY3J5cHRpb24= JwoKCg== IGxpc3Rpbmdz IENvbW11bmljYXRpb25z Ll8K ICIiIg0K IGZi IHN0cmljdGx5 IExpdGVy IEVudGVycHJpc2U= X2JvdHRvbQ== QUtF a2V0 IHRhbQ== QmV0d2Vlbg== X1RPUA== RGlzYWJsZQ== IGZpbGluZw== IENocm9u U0VRVQ== ICZfX18= ODQ2 IGZhbA== IFNMT1Q= RW1iZWQ= dXRoZXI= IFJlc3RhdXJhbnQ= IHJlYWxpc3RpYw== IScpOwo= IERFQUw= IFBlcmlvZA== LmdldFg= IHNlaHI= Il0nKS4= OTQz ZXNzYQ== CW1lbWNweQ== IGFja25vd2xlZGdlZA== c2VuYWw= IFVuaXZlcnNhbA== ICcnOwoK L3dpa2k= aWVubmU= IE5TQXJyYXk= IGFjY2VwdGFuY2U= IGxpdmVy IHRvb3Ro IGFjY3Vz CUxPRw== dmFsdQ== 5YC8 IHNlY3RvcnM= cGVyaW1lbnRhbA== L2NsYXNz X2dv TWljaGFlbA== b2xhdGlsZQ== IFBST0Y= IGNvbXByb20= c3BlY2lhbGNoYXJz IOKc IGlzRXF1YWxUb1N0cmluZw== IEh1bmc= LmFzTGlzdA== L2dv Pj4o IEtpcg== IGludHJvcw== IHNrZXRjaA== IHNraWxsZWQ= IGltbWVy IGFkZXF1YXRl X3JlcA== KGhlYWRlcg== X2xpa2U= IHBlcmNlaXZlZA== c3No IGFzc3VtaW5n IGZm X3V1aWQ= dWxhcw== IGRlbW9jcmF0aWM= LmVudGl0aWVz U2VyaWVz YXBob3Jl IG5ld2Vy fSg= U0VD YWlybw== IGNvbW1vZA== IHByaXZpbGVnZQ== IGRldXg= IEhvcA== Licv Y3RpYw== Lic7Cg== PD89 IFVU ZXRpZXM= X0NPTlRFTlQ= LnJlbGVhc2U= LmRpc21pc3M= IGZj b3VuZ2U= cHdk X3ByZXY= TWdy IEJ1ZmZlcmVkUmVhZGVy d3JpdHRlbg== IEVi ICkKCgo= dWl0bw== IGNvbnRyb3ZlcnN5 IGRpc3Bvc2Vk IGZvdG8= TGlzdFZpZXc= L2NyZWF0ZQ== IENPTA== Y29tbXVuaWM= MDY4 IGZyZWVseQ== dW5hbA== b3ZpZA== CXRy cGFnaW5hdGlvbg== IENvbW1vbnM= RWxlbQ== IFJFTQ== IGNvcnJlbGF0aW9u KCkrIg== IEhpZGU= YW5kaW5n KHZlYw== aXRvcw== IEN1bHQ= IG51dHJpdGlvbg== dmFscw== IGRldGVybWluaW5n bG9yZA== IHNjYW5kYWw= IHNoYWxsb3c= b2Rhc2g= X3NlcmlhbA== IFNsbw== IGRpc3Bvbg== UGxvdA== aWNrbGU= IGVsbA== IHVuZW1wbG95bWVudA== Rk0= cm9ucw== bMSx TW8= RXhpc3Q= SURT Q2hv IEtleWJvYXJk LnBhcnNlcg== LkdldE9iamVjdA== IHNwZWxscw== IGdlc2No IG1hZ25pdHVkZQ== X1NM aXNkaWN0aW9u ICcpOwo= aWxpYW5z IHNoYXI= IFByb2I= dWlsdGlu IHR1bm5lbA== PkM= IFdhcnJlbg== IG9wdGltaXplcg== IFNFUlZJQ0VT X29wZXI= Z2V0QXR0cmlidXRl IE1jSw== X3NlbGY= MDg0 LnJz IikKCgo= R2V0Q29tcG9uZW50 ZXJjZQ== IHRvdXM= dW5pdHM= J10pOw0K Wm9vbQ== L0U= IG9ic2M= IGZhc3Rlc3Q= b25saW5l IHBlYWNlZnVs ZmZlbg== IGNhcmdv CXBy IHNlZWtz enU= MDc0 VHJpbQ== IHdhcmQ= IHZlcmQ= IGJsb2dz LmV4Y2VwdGlvbnM= IFByZW1pdW0= IE5ldGhlcmxhbmRz U2FmZQ== RmluaXNo IEFsYnVt X0FDQw== PXRoaXM= dmlydHVhbA== XT4= X0xBQkVM IE5pY2g= X3dpbg== IEFhcm9u V1A= OyQ= YWltcw== IEltYWdlVmlldw== IGVuZGxlc3M= RVJB X0RJU0FCTEU= IGNhbmNlbGxlZA== LXVz IGluc3BlY3Rpb24= ZW1pbg== IEdyZXk= LW9wZW4= IGl0ZXJhdGlvbnM= Lm93bmVy IGtlcmFz LlBhc3N3b3Jk IFJ5 IElOUw== QWly IFNldmVyYWw= LlRhYlN0b3A= SU5HTEU= IEhhaXI= IENhbnZhcw== QUFBQQ== IGZsYXc= Y2VkZXM= LlJlcG9ydA== 7Yo= IFRpcHM= Y3JpcHRvcnM= LnRyYW5zYWN0aW9u LlNwcmluZw== IHZpZXdlcg== IGluc2lnaHRz 6L6T b3JkaW9u VUlOVA== c2Vlaw== IEF1Zg== 7J6Q IHN0cmFpbg== VG9vbHRpcA== IGR6 aWduYWw= YWR0 IHVj ZmluaXRl IG5t LmNtZA== IE15U3Fs W2RhdGE= LmphY2tzb24= LnRyZWU= UmVxdWVzdFBhcmFt X2FnZW50 IildDQo= IGFzc2Fzcw== KENvbnN0YW50cw== OnNz IE1BTg== Ky0rLQ== IEJvdHRvbQ== cHJpbnRz IFNhbWU= QEF1dG93aXJlZA== c3dhcA== aWNpw7Nu IHByb3Rlc3RlcnM= IGhvbmV5 IFZldGVy KENhbGVuZGFy LWFk IEJyb29rbHlu TGlmZQ== X1ZBUg== emVjaA== IENBTEw= X0NBU1Q= IEVsZWN0aW9u IHRoaWNrbmVzcw== VmVyeQ== X0lOVEVHRVI= LWRldg== KSkpKQ== YXBhdA== b29vbw== ZGVtbw== IHBhcnNlRmxvYXQ= IFJhdGhlcg== U1RJVA== bWFrZXI= W2N1cnJlbnQ= Y2hyb25v IGNocmlzdA== 44Gq IERldGFpbA== xrDhuw== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN1bA== aWRlbmN5 UXVl IGVsZWdhbnQ= YXBvbnM= IGRpc2hlcw== IGludGVnZXJz KHJlYWQ= MDU3 ZmluZFZpZXdCeUlk IEFtb3VudA== IFNraXA= IGhhYml0cw== Kiko IG1vbnN0ZXJz TUFD OmVuZA== IGZyYW5r QXNzZW1ibHk= IGRmcw== IG5ldXQ= X1RZUEVT ZXF1YWw= bG95ZA== KHVyaQ== IGNoaQ== IGRlZmVuZGFudA== IGNvbmZsaWN0cw== IHZpbA== LWpz IFBlYWNl IG11dGFibGU= KXNlbmRlcg== IEZvY3Vz 5bu6 IGFwcHJlY2lhdGVk c2xlZXA= IFJFRA== Q3VsdHVyZQ== IGRlc2lnbmVycw== X2dlbmVyYXRvcg== Y29kZXM= L2V4 LkdldFZhbHVl dW1ibGVk LnNjYWxhanM= cGVyb3I= IHZldGVyYW5z IH0pDQo= IHVuZm9ydHVuYXRlbHk= X0NSRUFURQ== TWFzcw== IENMQUlN IE1lZXQ= X3N1cHBvcnQ= QmFuaw== KCkuCg== RGFyaw== X0xPVw== IE1pbmluZw== IE93bmVy aWVyYQ== Q2xpZW50ZQ== IGVuY291cmFnaW5n PlM= IGJveWZyaWVuZA== IEhhbGY= IEFDQw== QWZm X2Fy LWxpZmU= Y3g= LkpCdXR0b24= aXphZG8= Lnplcm8= Lm9wZW5xYQ== b3Rvbg== LnRleHRDb250ZW50 IHRvbGw= YXRpZQ== IGJhbGxvdA== LW51bWJlcg== LkV4Y2VwdGlvbg== CXBhcmFtcw== Y2lyY2xl LW1hcA== IG5hcA== IFJvYm90 IEljaA== cmVnaXN0cmF0aW9u QW1hem9u cm9sbG1lbnQ= KGV4cA== IHRhbmtz IEdvcmRvbg== IG1hY2hpbmVyeQ== IGJhc2VsaW5l 5os= MDg2 2Kk= IENvbnZlbnRpb24= CWNvbmZpZw== b29raWVz bXVsdA== UmVjb3Jkcw== IEVTVA== IGdhcmJhZ2U= IGNvbmZvcm0= aWRhbA== IGJhcmc= IHN1cnZpdmVk IGludmVzdGlnYXRpb25z OTM1 LmNvbnRhaW5zS2V5 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K b3J0aW9u IGhvcnI= X2h0dHA= IG1hbnQ= XTsNCg0K YmluYXJ5 OTQ4 ZW1wbA== IGlucXVpcnk= IE1lYW53aGlsZQ== MDk4 IGNvbGxlY3Rpbmc= LkVudGl0eUZyYW1ld29yaw== IiwKCg== IFBpYw== QEluamVjdA== aWNrbmVzcw== IEJpbmRpbmc= IGNvbnRyb2xsaW5n cmV2ZXJzZQ== IGNoYWlycw== c2VtYmxlZA== KGFkZA== RGlzYWJsZWQ= YW5hcw== LnRyYW5zbGF0ZQ== LS0tLS0tLS0tLS0K IHJlZmxlY3RlZA== Il0KCg== RXh0ZXJuYWw= QXJyb3c= U2luZ2xldG9u JXg= IMU= IGFuY2VzdA== IE9ybGVhbnM= CWNtZA== IHByb2hpYml0ZWQ= aXRobWV0aWM= KGNoYW5uZWw= X2Nzcw== Rm9yd2FyZA== LnNvY2tldA== IGx1Yw== 4oY= IEZpcmVmb3g= IE1vdmllcw== KV8= LmVuZHM= KHNoYXBl IGRlYWx0 IHNhdmVz IGdsb3J5 IG1lam9y IGJyZWF0aGluZw== IGVsbGVy Z2V0RGF0YQ== IGFuZ2xlcw== IHRvb2xiYXI= IHNwYWNpbmc= MDU5 SVBT IGZsb29ycw== X0FDVElWRQ== IHNodWZmbGU= L3NoYXJlZA== IEVsZQ== ZWRpc2g= IHdlYmNhbQ== LmV4cGVjdA== aWxvYw== IEluY2x1ZGVz IHR3ZWV0ZWQ= IDop IEVzc2F5 Rml4 LWJldHdlZW4= X3dlYg== LmNvbnY= IHJhY2lzbQ== IHJlZmxlY3Rz dW1t 0LjRgtC1 X2Zvb3Rlcg== L2RvY3M= IFBvdXI= TmdNb2R1bGU= LmluaXRpYWxpemU= cGF0dGVybnM= X0lu IEFiYg== Kg0K IHNlbnRpbWVudA== YnVmZg== X2NvdW50cw== IHJldXNl Y2h1bms= IGltcG9zZWQ= UHJpbWFyeUtleQ== Rm9yZWdyb3VuZA== IGNvbnN1bWVk PyE= IGRpY2s= IGNocm9u IEZlcm4= IHJlc3BvbnNpdmU= OTU4 IGluc2VjdA== aWN1bHR5 IHJ3 IGFsaWtl IHN1YnNldA== IENvb2tpZXM= IFBhaXI= IHRpZXI= SUZP YXZvdXI= IFFV LHNpemVvZg== IG1lcmdlZA== bXY= aXRvbA== eWxvbg== IGp1bXBlZA== LnJvbGU= ZW5zYWpl UnVsZXM= IGJyb3dzZQ== QW5pbWF0b3I= IHlvZ2E= IHZhcmlhbnRz IGNvdXJ0ZXN5 dXJhbg== cGJz ZWxzZWlm QWx0 IExhbmU= Q0xL SU1BUlk= X1BST1BFUlRZ 77yQ IGNoYW4= IGdyYWR1YWxseQ== IHNoYWtl IGJsb25kZQ== Li4uIik7Cg== LXNleA== IGdhbWVwbGF5 YWNpZXM= LnJlZnJlc2g= VVNC IFBsb3Q= V2Fz aXNzaXBwaQ== IFRlbnNvcg== IGNyeXB0b2N1cnJlbmN5 IGRpZmZpY3VsdGllcw== RGVsZXRlZA== V2l0aG91dA== X2FwcGVuZA== X3Zlcg== OTY3 IikpDQo= IGhvbmVzdGx5 IHBpdm90 IHRlbXBz X3Bz IFVubGlrZQ== Wzot VlM= X2luZg== IGp1bmlvcg== IGFuaW1hdGlvbnM= IGZpbGVwYXRo Pzwv W1w= IG9wZXJhdGVz X3JlZA== IEJvb3RzdHJhcA== bGVhZA== ZWZmZWN0 wr0= IFN0ZXI= IEJ1Y2s= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlcHV0eQ== VGhhbg== 4bq/ T05FTlQ= IEhlYXQ= ZXRoZWxlc3M= XSl7Cg== IGtvc3Rlbmxvcw== KCk7Ly8= IGRlcGxveWVk Pnt7JA== IHVuaWNvZGU= cGxhY2Vz IENvZmZlZQ== LlNF IFBBUg== KHR4dA== Z2VicmE= IGZpcmVz TWFpbldpbmRvdw== bWVkaXVt ICjigJw= IGxn IGNtcA== L2Jhc2U= X2xheWVycw== X2VudHJpZXM= IGFkbWluaXN0ZXI= IFNVQ0g= QlA= IFNjb3R0aXNo CQ0KCQ0K Z3VhcmQ= IFN0cm9uZw== SW5zbg== IENBUA== YXN1cnk= IFNFRQ== Q2xvY2s= ZXJpZQ== XG1vZGVscw== ICQk IENhYg== IHd1cmRl IHNvbGRpZXI= IGNsaXBz IGFycmFuZ2VtZW50 IFdvbmRlcg== IEhvcm4= IHNjYXJlZA== IGN1cmU= bWtkaXI= IGFsaWduZWQ= IFBpbms= IGxhbmRlZA== RGltZW5zaW9u U2Nyb2xsUGFuZQ== LmNoYXQ= LldpdGg= IFRyYWlu XS4K IHRoaXJ0eQ== IGR1cmFibGU= IGxk IGxhdGVpbml0 IGNoYXJ0cw== IGluc3VsdA== LkZhdGFs X2N0 IG1hc2tz Q0xVREVE UHJlc2lkZW50 IGNvbG91cnM= Z21lbnRz LmF0dHJpYnV0ZXM= IEZsZXg= IENsb2Nr w61jdWw= aW1lbg== Sk8= IFJlZ2V4 X0xJTks= IGNvdWNo IElOUFVU IGJlYXRpbmc= YnVzaW5lc3M= cHJlY2Vk LnVuaXQ= IEZlbA== TmV2ZXI= b3NwZWw= LnN0YXJ0c3dpdGg= IEVQQQ== Lm9ubHk= IHByZXZlbnRpbmc= eWVy Q29sdW1uTmFtZQ== IGVsZXZhdGlvbg== Zmx1 aWN5Y2xl IG9mZmxpbmU= VG9vbGJhcg== IGNvbXBldGluZw== KV0u IG1vZw== IGlzVmFsaWQ= QXNr X2F2 X2xhdA== QU5D IEpvaA== a2Vycw== IGd1YXJkcw== IGNoYWlucw== IFNpbXBsZURhdGVGb3JtYXQ= LnN0YXRpYw== IHZlc3NlbA== IG11ZA== IHN0YWJpbA== IHN0cmV0 Z20= YW1hdGlvbg== 55w= LXdpdGg= IHJvcw== X1BB IHJlc3VsdGFkbw== IGNvbmZpZGVudGlhbA== IFRva3lv CXVzaW5n IE1hdGhm b21iaW5l IEVTUE4= IGRlYWxlcnM= IGRpc21pc3NlZA== VFJZ IHRlZW5z cmVjb3Jkcw== IHdpbmdz Z2FsbGVyeQ== YWNjb3VudHM= X0xJQg== IGphY2tldA== IE5TT2JqZWN0 IHN0b25lcw== IERlbGl2ZXJ5 IERpZXQ= L3dhdGNo IHRvaWxldA== IEd1ZXN0 LmRheQ== MDY3 IGludHZhbA== MDg3 VmlzaXQ= IGludmVzdGlnYXRlZA== IHBlbnRydQ== IFRoZWF0cmU= YW5kaWRhdGVz TGFuZw== IFNlcnY= IGNvbnRyb2xsZXJz IHNldFRpdGxl TlA= YW15 ZmxhdA== KHVp MDY5 X2RvY3VtZW50 6IO9 IENvaW4= IEFkYW1z cHRpYw== IHByb2R1Y3RpdmU= IGFjY29tcGxpc2hlZA== DQoNCg0KDQo= IGRlZmVycmVk aWVudGVz IHNpbmM= b2xhcnM= UmlnaHRhcnJvdw== IHZhcmlhdGlvbnM= KG9mZnNldA== OTU3 LkxheW91dEluZmxhdGVy IHN1c3BlbmQ= IHByZXZlbnRpb24= X3ByaXZhdGU= X2pz 4piF IHdpZWRlcg== YXR1bQ== kow= IGFwcGVhcmFuY2Vz LkRvY3VtZW50 IHZhbGlkYXRlcw== Y2FsZW5kYXI= fSI7Cg== LmRlbW8= Y29udXQ= IGNvcnJlY3Rpb24= IERlYWw= IGJhdHRlcmllcw== LmR1cmF0aW9u LFw= X21hcmtlcg== bXVsdGk= IGhhbHQ= IGNtcw== IHNoYXBlZA== QnJv cmVkdWNl ICMjIyM= Q1RPUg== IEJlbmVm IGljb25pYw== IHBpYW5v IGVmZmVjdGl2ZW5lc3M= fC4K IGFqYXg= IHZvbHVtZXM= 4Lih IGNsanM= ICAgICAgICAgICAgICAK YXRocw== cmFpdHM= 5aSn 0ZY= X211bHQ= IGZhc2NpbmF0aW5n QXZlcmFnZQ== IHByw6k= IENoYWlybWFu LmZpbmRFbGVtZW50 X3Bpbg== IGNvbXBhcmluZw== IGRhcmtuZXNz LUZp LXNlcnZlcg== IHNlbGVjdGluZw== c3RlcmRhbQ== IFBhcnRz Rk9STUFUSU9O IG5vdGluZw== IHBpbGU= b2dz IHBhbGV0dGU= X2Rv aXRpemU= MDc5 KCko IGRlZmluaW5n IHJlbWFpbmRlcg== VW5pdHM= X1RBU0s= SHR0cENsaWVudA== U29jaWFs IGZ1bmRyYQ== TlI= Y2hlc3Q= Q3VycmVuY3k= LmFkYXB0ZXI= IGRvcA== dW50aW5n QU5HVUFHRQ== Ikhl CWluZGV4 X3BhY2thZ2U= Lkljb24= IHJlcGV0 bWFzcw== PSIuJA== IFN1ZA== IGxpZA== cHJvdmluY2U= 7Jw= R1BJTw== 0Jo= IE15U1FM IGRvY3M= IEdB IGlwc3Vt S2VybmVs IGFjY2VwdHM= IGZpdHRpbmc= IGN1YW5kbw== IGR1cGxpYw== IEJyb3RoZXI= IEtsZQ== bnVtcw== IG1vcnBo ICMjIyMjIyMj IENHUG9pbnQ= PHVuc2lnbmVk 5L6L IER1a2U= LnNldEJvdW5kcw== cXM= b3JpYw== amVy IHJlZ2FyZGVk SHR0cFJlcXVlc3Q= IGJvbmRz IHRob3JvdWdobHk= ZW5jZW50 IGhpZ2hsaWdodGVk IGFjcmVz IHdvcmtwbGFjZQ== IEx1eA== IHF1b3Q= OTg2 LmluZmxhdGU= IGRvY3VtZW50ZWQ= IGFkZGljdGlvbg== IG11dGF0aW9u LmNpdHk= IGJvdHRsZXM= IFJlcG9zaXRvcnk= b25u ZXJybm8= QVJJQUJMRQ== 5bqm X0JFR0lO Z2xhcw== J30pCg== IE1hc3NhZ2U= IFdoaXQ= cmVnZXg= V0E= IG91dGxldA== LWhlYWQ= IGV4cGlyZWQ= IFRoYWk= L2luY2x1ZGU= Z3JhZGllbnQ= c2NhbmY= IHNlYW0= d2Fs CWJ1Zg== QmVhcmVy IHByZWNpb3Vz aWZhY3Rz Y29vcmQ= IGV4cGxvcmF0aW9u LmdldFk= KGhhbmRsZQ== VG9waWM= IFZlbnQ= cmhz LS0tLS0tCg== IEJyaWdodA== IGd1aWxk bW90aGVy c3Rvcm0= IG11bmljaXBhbA== IGluaw== LlRZUEU= d2w= Li4uPC8= X0RFVg== PSIuLw== X2Jvb2s= dGh5 aXR6ZXJsYW5k b3BsZXM= dHJhY3Rpb24= IENhbWVyb24= IEFuZHJl LnJlc3VsdHM= IGNocm9tZQ== IHNlY3VyZWQ= IHN1cmZhY2Vz KTw= IHRvYmFjY28= CXNwcmludGY= IGVzY2Fs IHN0ZGVycg== IE1lbGJvdXJuZQ== IGRpc3RyaWN0cw== IG1hdHQ= b2hlbg== IGRhdGFHcmlkVmlld0NlbGxTdHlsZQ== KE1vZGVs IHNlbnNpdGl2aXR5 S0E= dHJhbnNwb3J0 LmdldERhdGU= IHN1YnRsZQ== VUdJTg== Lm1vdXNl IGFsdGVybmF0aXZlcw== IGVsbGU= Y29yYXRpb24= cmVhdGlvbg== 5ps= X05PUk1BTA== RGlzcGxheU5hbWU= IGZhbmN5 SVNFRA== TU9E LlJlYWRPbmx5 IFVi IEN1 aWNvbA== IE5lbHNvbg== IENPUg== YW56YQ== IFNwYXJr ICJcXA== LS0KCg== d29vY29tbWVyY2U= IHJlbWVtYmVyZWQ= dmVyaXR5 IEV4dGVuc2lvbg== IFBE IHNlYXJjaGVz LnNv IEZvb3Rlcg== ID0n IFdBUk5JTkc= LWxv CXRhYmxl IGRyYXdlcg== cGljdHVyZQ== IEZhbnRhc3k= c3Rvcnk= IG3Dqm1l IwoK X3NsaWNl b2x0YWdl SGFy L3k= IEVS ZGll IFBPUw== LmFjdGlvbnM= KE1haW4= ZXdhcnQ= YXBldXQ= IFNURQ== aWRkaW5n LnJlYWRMaW5l IHNlYXJjaGVk V2Vk LmZpZ3VyZQ== dWdodGVycw== KCkuX18= IG9yYml0 c2hpcHBpbmc= IGZyaWVuZHNoaXA= IFNoaWZ0 LW9y cXVv V0hFUkU= IEVzcA== LmZvcndhcmQ= b2ZmaWNl IGnDpw== IENoZWxzZWE= SXRlbVNlbGVjdGVk YWNoZXJz ZGVsZXRlZA== cm91cw== ICItIg== IEdyYW4= IPCfmA== LXBvd2Vy ZXR0YQ== IHJlbWluZGVy ZW5zb3Jz IEFsbG93 xJlk X3RlYW0= IGNyb3du dGlja2V0 IGNvbGxlY3Rpb25WaWV3 bGFjZQ== IGZpeGVz IEh1Yg== Y2F0YWxvZw== IElkZW50aXR5 IGV4Y2Vzc2l2ZQ== IE5hdmlnYXRvcg== X0JS LXBsYXk= IENhbXBhaWdu ICAgICAgICAgICAgICAgCg== YXNpdmU= IHdj IEJlaWppbmc= L3d3dw== IG1ha2V1cA== IGRpc3RhbmNlcw== IHNhdGlzZnk= Q09ORA== IHdvdW5k KCld IHZpb2xhdGlvbnM= IHN0YXlz LyM= aWxpbmU= XEV4Y2VwdGlvbg== IE1vdGlvbg== IGhlYWw= X3BsYW4= cmFzZXM= KG1haW4= QXBwbGU= IGNvbXBsZXRpbmc= IGRldGVybWluZXM= U2Nhbg== IHN0ZWFs IFNvYw== QW5hbHlzaXM= IGZhdm9yaXRlcw== IGNhbXBv b25lcg== IEZsaWdodA== Li4uCgoKCg== KSkpKSk7Cg== LWNvdW50 IHB3 QXNTdHJpbmc= IHNleHVhbGx5 Rmlyc3ROYW1l IEVzY29ydA== Y2FsYw== IFdpa2lwZWRpYQ== IGRvY2tlcg== IFN3ZWV0 J2lk SW50bw== IEh1bnQ= LmVxdWFsVG8= IGxhYm9yYXRvcnk= IEJVU0lORVNT RmlsZURpYWxvZw== VHJlZU5vZGU= LkVuYw== IE1heGltdW0= IG1vdGhlcnM= 5rU= IGZyYWN0 LnN0YXJ0c1dpdGg= IGhhcmRjb3Jl Lm9i 5aeL ID48Lw== X3Jv KCgq Pz8/Pw== X3ZlcnRleA== a2VpdA== IEhhbGxvd2Vlbg== VEk= IFZh X2Nhcg== PSJ7eyQ= IHJhbmRvbWx5 0LDQvdC40LU= IHNob2NrZWQ= IFBva8OpbW9u c2lnbmFs IFNESw== bWlkZGxld2FyZQ== IHRyZWF0aW5n IGJ1cm5lZA== RGVwYXJ0bWVudA== IFNwZWN0 IGNsaWVudGU= IFJlZGRpdA== X2F2Zw== IGluc3RhbGxpbmc= X2FscGhh LGRhdGE= IHNldElk IExpc3RWaWV3 KHByb3BlcnR5 IGNyb3NzaW5n IE9iag== IFdhcmQ= IFJlZGlyZWN0VG8= IFByZXNlbnQ= IGRyYXdz Y2hlZHVsZWQ= IGxlZ2lzbGF0aXZl IHR3aXN0 IFN0cmE= IEFGUA== IENoYXA= LXBy OkNHUmVjdA== IGNlcw== Um91dGVz bm9m IHZpc2E= IFRDUA== IEVWRU4= aXZpYWw= IExldHRlcg== UkFZ IGltcGxvZGU= LmVx PScr IG1vdGl2YXRlZA== LnZpc2libGU= LnNob3J0 Pm1hbnVhbA== IFRlY2huaWNhbA== IGNvcnBvcmF0aW9u IEhX YW5rYQ== VEFJTA== aXN0YXM= IHBlcmZvcm1z IEJlaGF2aW9y LkZvcg== X09SREVS IEtpY2s= IGNhbGxiYWNrcw== X2Ry dWVnbw== aHVi dWZmaWNpZW50 c2t5 IGJw aHRhYmxl IE9OTFk= IEFVVEhPUlM= LkFyZ3VtZW50 In07Cg== IFRodW5kZXI= IEtvbQ== LlNob3VsZA== QVVUSA== YWh1 X3BheW1lbnQ= IHN0YXJ0ZXI= 7ISc 7Jqp QmxvZw== LnBhdGNo IGdvdmVybmVk YXNzeQ== LWZvdW5k IHRoZWF0ZXI= IEZvbnRXZWlnaHQ= IEJhdG1hbg== Iklm LlJhbmRvbQ== X2RlbHRh IENF QXV0aGVudGljYXRlZA== IGRyb25l IGNvdXM= cmFkaXVz TWVy KE5vbmU= IE5K X2hlYWRlcnM= IGFtZXI= cHl0ZXN0 IEFjdGlvbnM= CQkJICAgIA== IGV0dA== IGhvbHk= IHVuY29tZm9ydA== IE5pbg== IERlY2ltYWw= IE1lc3NhZ2Vz LnNlbmRlcg== XV0pCg== IGVtYnJhY2U= VGhvdWdo L3Nw IGN1bHR1cmVz IGhpZ2h3YXk= dGFy LmZhaWw= X2hpZGRlbg== IGNvbXBvbmVudERpZE1vdW50 IFdyaWdodA== IGphZw== X2ls Li4vLi4vLi4v aWd1 Rm9vZA== IGFjZQ== IGHDsW9z VVNE IG11dHVhbA== TG9naWM= IHRlbXBsZQ== IGJyaWVmbHk= IFRyaXA= Y2xhc3NtZXRob2Q= ZGVmYXVsdHM= IGNodW5rcw== LCwsLA== IFJlYXNvbg== JGlk LXVwcw== IGRhbW4= IHRydWNrcw== IHVubGltaXRlZA== IHNjdWxwdA== IENhcmRz IGF1dG9y IFRlc3Rpbmc= IGRpZXNl c2hvcHM= 57Q= KHBheWxvYWQ= IFBBVEg= IE1lbW9yaWFs IHJpZGljdWxvdXM= ZWdyZWU= LXdpbm5pbmc= IHJlaGFi IHNvcGhpc3RpY2F0ZWQ= d3BkYg== CXBhdGg= ISI7Cg== X1NZUw== LnNwZWVk IHNvYXA= c3VmZml4 V3JhcA== IGVuaGFuY2VtZW50 w4k= w7pi IHBsYXlsaXN0 IG1peGluZw== YW50aWRhZA== PSIiOwo= IFJldmlzaW9u IEJlYXQ= LmluYw== LXdheQ== ZW5jaWFz dWxlcnM= Q2F0 aWRlbA== IFNoaXA= LnNldENvbG9y IHRocmVhdGVuaW5n Lm1vZHVsZXM= IGFmdGVyd2FyZHM= IERhc2hib2FyZA== CiAK U2lnbmFs IHByaW1lcg== b3JuZXlz aWNpYXJ5 IGxpZ25l X3ByZWRpY3Q= IGFlc3Q= X2h0dHBz Pjo= IExleA== IHJlbmNvbnRyZXM= ZWdyYWw= c2NhbGE= X2ZhbWlseQ== w59lbg== X3N5bQ== IHVuY2VydGFpbnR5 IFZBTFVF IH07DQoNCg== IGJyb2FkZXI= IGhvcnNlcw== 44Gd IEthbA== b2Jh X0lORVQ= IEtpbGw= anF1ZXJ5 YW1pbmF0aW9u W0Ai IG11ag== IyMjCg== Rmlyc3RPckRlZmF1bHQ= dGhlblJldHVybg== Q2hl L2Zvb3Rlcg== IHBhcmtz YXNqZQ== IEd1bGY= IG1vZGVzdA== LkluaXQ= 77yfCgo= IHByb3NwZWN0cw== IHN2Zw== IOWP LkRpYWxvZw== X05FVA== ICgoJA== IGVr IFdhcm5pbmc= IE1L PExN ICcNCg== aWVt aGV0aWM= IGl4 dGhpbms= LXNoYWRvdw== IEVsZA== IE5ldmFkYQ== IExlYWY= IEdST1VQ IHByb21v ZW50aW5l CU1hcA== IE1vZGVscw== IEtyaXN0 X2tlcm5lbA== LW1hZGU= IGNlcnI= QXNzZXRz ZWxsYXI= IGludm9rZWQ= LnZ1ZQ== IGN1bHRpdg== Q2xvc2Vk IGdlbmVyYXRlcw== ZmZmZmZm dGhlc2l6ZQ== c3FydA== IENhc3RsZQ== LmNhcg== IGtlZW4= dW5kYQ== IENyb3c= IFNpbmdo eXRob24= IGJlYW5z bGFyZw== 5paH5Lu2 QXdlc29tZQ== dW5jYXRl UGF0aHM= b2pp KGN1cnI= Q09ORFM= IG1pbQ== IHNob3VsZGVycw== SGFyZA== YXN0ZXM= 0LDQtdGC IGNvbnZpbmNl ZGVjZXNz bWFkZQ== IENNRA== Lklt IGNoYW9z ZW5zaXZlbHk= IGNvb2xpbmc= IGJ1cmllZA== KCdA X1Nl CQkJCQkJCQkJCQkJCQkJCQ== LmNvbXBhbnk= LnN1Ym1pdA== cGhhbnQ= IGJvb3RzdHJhcA== X2hlbHA= 4Kc= LmR1bXA= IGRpZmVy X21hcHBpbmc= IGNpcmN1bGFy IGVzY29ydHM= IGJlcmU= IGdyYWR1 IExlZ2VuZA== aW1lZGlh IEJhcmNlbG9uYQ== IGJlZHM= 5Yiw 44CK X3ZvbHVtZQ== IHRyZW1lbmRvdXM= IHNjYWxpbmc= IHBpbnM= ZW5hcw== dHlwZXBhcmFt RGFzaGJvYXJk cmVuZGVyZXI= IHNwaQ== ICYk IFNraW4= YWxtYXJ0 IGhvY2tleQ== ICciLiQ= IGVycm5v IGJldw== Rm9sbG93aW5n Lk1vZHVsZQ== ZXJhYmxl IE1pbGl0YXJ5 IFJpbw== X2F2YWlsYWJsZQ== IFN1cmZhY2U= IHN0YWI= SUZJRVI= IExJU1Q= IGRhc2hib2FyZA== IGNsdXN0ZXJz LnBsdWdpbg== IGpvdQ== IERlY29y Rm91cg== IGRlbGxl KioqKioqLwo= aWF6 aW5kZQ== Y2hpbmc= IGdldEl0ZW0= LkFkZHJlc3M= bWVudGVk QW1lcmlj UGxhaW4= IHVzYg== IFByYWN0aWNl X21lbnQ= LmJsdWU= SGludA== 0YDQsNCy IGNvbm5lY3Rvcg== IGluaGVyaXRlZA== 0LjQsg== IGludGVydmFscw== IGNlcmU= IHVk IGluY29u LkV4aXN0cw== IE1pYw== Rks= KGNhcmQ= LlNldHRpbmdz IGV4aGliaXRpb24= IG9uUHJlc3NlZA== IHJlc3RvcmVk ZW5ndQ== LmRlZg== IHJlY3Y= LiIpOw0K ZW5jb2Rlcg== YXRoZXJpbmU= KGRlc3Q= YXplZA== I2VuZHJlZ2lvbg== c2VtYmw= LE0= b2J5 INC/0LXRgA== LkNhbGw= IGF0dGVuZGFuY2U= LWJvcmRlcg== IGFkZHJlc3Npbmc= w6pu IExldg== IGJhc2g= YmVuY2g= Q3JlZGVudGlhbHM= U3BhY2luZw== KG9m X1JFU0VU aWd1b3Vz IGNydWVs IGNyb3NzZWQ= IGxldXI= IEdvbGY= b3JyZWN0 IHBhY2tldHM= IERhdGFTZXQ= IHBhcnRseQ== U0VRVUVOVElBTA== IGluZGljYXRpb24= IFNhbHQ= YWNpYQ== ICopOwo= CWluZm8= IFZpZXdCYWc= b256 IGVkaXRvcmlhbA== IEFyZW5h IHNpcg== X1N0YXRpYw== KHNvY2tldA== c3U= Y2hvb3Nl Lm1vbnRo Lk15 MDk2 w6lyaQ== O2ZvbnQ= ZG9lcw== IGNvbnZlcnRlcg== IHNhbHY= IGxy IGluZmx1ZW5jZWQ= KGZlYXR1cmU= IFF1ZWVucw== bGV0dA== X01PTg== JmFtcA== VG91Y2hhYmxlT3BhY2l0eQ== T0ZG IG1ldGFib2w= KGl0ZXI= IHZpdGFtaW4= IElORElSRUNU YXV0b20= X3B1YmxpYw== IGFkanVzdG1lbnQ= IHNwZWNpYWxpemVk d2luZG93cw== LmFkZEFsbA== IGFjY29yZGluZ2x5 IEpPcHRpb25QYW5l IGNlbGxzcGFjaW5n IHF1YWQ= IGNyZWVw IG91dGxldHM= fWApCg== IHByaWVzdA== X1RIUkVBRA== IE1hcng= IEJ5VmFs IGN1YWw= 6Z2i IHRlbXBvcmFyaWx5 QW5u a2VsZXRvbg== 5aU= IExPQw== YXVlcg== ZGVyaXZl IGJlaGF2aW9ycw== YXNlbmFtZQ== IENlbnR1cnk= IGhvcnJpYmxl TUVTUw== X0xpc3Q= d2Vp UGF0 IENob2ljZQ== X0ZST00= CWxpbmU= Lmludm9rZQ== LkJvdHRvbQ== IG5vd2hlcmU= LiIKCgoK X2V4cG9ydA== IHN0cnVnZ2xlZA== LkFwcGVhcmFuY2U= IEpCdXR0b24= IEplcmVteQ== KFtb IGtpY2tlZA== bWFyc2hhbA== c3RhZmY= ZXNpdHk= IHF1aXo= X2VmZmVjdA== IH0pKTsKCg== bWVs YmFubmVy IFBJTg== IGludmVudGlvbg== IGNvbnNvbGlk IG9wcw== IEJldHdlZW4= amFjaw== ZXJuYXRpb25hbA== IHNhY3JpZmljZQ== YWdhdGlvbg== IEpveQ== IGFtZW5kbWVudA== IFNvbGQ= IHByaXNvbmVycw== 0LDQvdC90Ys= RG9jdW1lbnRz KV0pCg== dXN0ZWQ= IExpbmVhckxheW91dA== b3Nv X0VN LnNlbGY= Lk1pZGRsZQ== KS8v IFwn IGZ1Y2tlZA== IE11cnJheQ== IHByb2ZvdW5k X0VMRU1FTlQ= dWx0YQ== aWxlcnM= cG9ydGZvbGlv SnVuZQ== dGNw bW9kaWZpZWQ= IFRyYWNl IEtlbA== YWx5emVy KT0+ IFJlcGFpcg== X0JF QnJhbmQ= dWFydA== cHJldmlldw== IGluaXRpYXRpdmVz cnVubmluZw== YmFuZw== CXVwZGF0ZQ== IENvYWNo UmljaA== IHlvdXR1YmU= IHJpdHVhbA== YXBwYQ== IFJvYmluc29u cHJlY2lzaW9u Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw== PVtdCg== IGNlbGVicmF0ZWQ= T1RP IGluY2x1c2lvbg== SlA= JzsNCg0K IG5vdGFibGU= KF8u TWFuYWdlZA== IGd1aWRlcw== Jm5ic3A= YXRlZFJvdXRl IEFkanVzdA== IGNvbG9yZWQ= X3Njb3Jlcw== IFRlc2xh X3Byb2dyZXNz Lmluc3Q= Wydf LmZsYWdz IGZjbG9zZQ== X09QRVI= xbx5 X25vdGU= IHRyYW5zZ2VuZGVy 5ZU= UklQVA== IGFic2VudA== IGFtZXQ= IG9wZXJhbmQ= 66k= IGhvb2Q= dG9Mb3dlckNhc2U= YXZv IENpcmN1aXQ= IExpbmQ= LS19fQo= PW0= IHN1cHByZXNz IE1BUA== aWFuZw== LWFkbWlu IHNpZGViYXI= IEJ1 IEhleA== LEY= IFNpZ25hbA== IHRyYW5zcGFyZW5jeQ== IEZlZGVyYXRpb24= L1Y= UmVx IHB1bHNl IHRlbmRz TnVtYmVycw== JSc= IGRlcG9ydA== ZGF0YXM= X1VJTlQ= X3RyYQ== b2tv ICI/ Y29tcGV0 c29sZXRl dW5kcnk= IG92ZXJsYXA= fWAsCg== Lmx5 X3N1bW1hcnk= IExvc3Q= LkNlbnRlcg== IGRpc2FiaWxpdHk= LlNlcmlhbGl6YXRpb24= IGdlb20= ID86 IFdv IHNoaXBwZWQ= guaVsA== IHVnbHk= IGV4Y2l0ZW1lbnQ= IGV4dGVyaW9y IGNoZWNrb3V0 IGt1cg== LEQ= IEFsYXNrYQ== IHN5bnRoZXRpYw== IEJ1ZGdldA== IFN1YnNjcmliZQ== ICYK yJlp IFl1 CXF1ZXJ5 fS4K IHRyYWdlZA== YXNzZW4= IGFjY29tbW9kYXRpb24= IHBoeXNpY2lhbg== IHJlbmFtZWQ= IHRpZGFr esSF IG1pbnVz bnljaA== MDk3 X0VYQ0VQVElPTg== dGhyZWFkcw== IHRpcmU= X2NyZWF0ZWQ= ZW5zdXJl IHdvcnRoeQ== IGV4Y3VzZQ== IGNsb3Ro LnBhcmVudE5vZGU= L3BsYXRmb3Jt IFVGQw== IEd0aw== dW5ueQ== IGdpYnQ= a2VsZXk= aHVt KHR4 CWRldg== IG91dGZpdA== ZG9vcnM= IGZvbg== aWN1dA== dm9sYXRpbGU= IGhvbW9zZXg= TWF4aW11bQ== IGV4cGVuZA== IH0pOwoKCg== RXE= b25kZXJz ZGVwYXJ0bWVudA== IFBoeXNpY3M= In0pOwo= IHBhcmFk LlN0cg== IHNlbGU= SUZJRUQ= IGRlbGl2ZXJz aXZhbg== IHJlc3BvbnNpYmlsaXRpZXM= IGFkdm9jYXRlcw== 6LU= IFJJRA== LnBhcmFtZXRlcnM= TWV0cmljcw== cm9uaWNz IFVJVGFibGVWaWV3Q2VsbA== QWJzb2x1dGU= aXBzZQ== eWx1bQ== TUxFbGVtZW50 X1ZBTElE PHRpdGxl RGxn cGFjZXM= IHN5bmRyb21l YmVhbnM= X2RhdGFiYXNl b3ppbGxh IE1lZw== REJH IGx1Yg== QmFnQ29uc3RyYWludHM= YWJhZA== IHByb2plY3RlZA== X0JZVEU= LlNpemVG c3RyZWV0 CgoKCgoKCgoKCg== IExPU1M= IGRpcmVjdG9ycw== L25ld3M= IG51cnNpbmc= IERvbmU= LkhUVFA= ZGlzY291bnQ= IFJvdA== VG9NYW55 IGVuYWJsaW5n IGF1c3Np b3N0YQ== ICAgICAgICAgICAgICAgIA0K 6L29 IGhlbGljb3B0 IEluc2lkZQ== 5L+h5oGv aXNwZXI= IEFsbGFo QVJDSEFS IHJvbGxz Q29tcGFyZQ== WFA= SW5kZXhPZg== U1VN IGFzc3VyZWQ= IFBoeXNpY2Fs RW5kcG9pbnQ= Lkdsb2JhbA== LmRldGFpbA== IHRoZWZ0 Lmp1cGl0ZXI= IGh1bW9y LlJlbmRlcg== QWxleA== LmNhcA== IGJ1ZmZlcnM= IGRpc3Bvc2U= dGlvbg== LnByZXNlbnQ= emVs LFA= IGRlc3BlcmF0ZQ== LmdldENvbHVtbg== IHR3aW4= 7JY= LmNhbg== IGZsZWU= IElyYW5pYW4= IHN0aWNreQ== IFVUQw== TFQ= Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v IGxpY2Vuc2luZw== X1BPSU5U IE1hcHM= IGxvbA== PW1vZGVscw== LXRhYg== IE5hc2g= X2xvZ2dlcg== dG9yY2g= IENPTlNFUVVFTlRJQUw= Tm90RW1wdHk= L3JlYWN0 IHBm IGFzc2VydGlvbg== IHN1YnNlcXVlbnRseQ== X2Nhbg== IHBhbmRlbWlj b2d1ZQ== IisK X2VudA== X1BhcmFt LgoKCgoKCgoK UmVzZWFyY2g= Q2FwdHVyZQ== IGJlbG92ZWQ= ZGVt IGV4dHJhY3RlZA== IGZpZ2h0cw== RVJD KGF1dGg= cG9zaXRpb25z IHJldmVyc2Vk KHN0YWNr IF8p dXRvZmY= X2Zsb3c= 54K5 KEdhbWU= IGV4Y2x1ZGVk IENTVg== Y2c= IFRpdGFu cGF1c2U= IGNlcmNh IGR1bXBzdGVy TGVzcw== IGtvdGxpbng= YXN0ZXJ4bWw= IHBvaW50ZXJz IGZsb3dz IFR1bg== IE1haW5BY3Rpdml0eQ== IGRpc2NyZXQ= IGNvbWJpbmF0aW9ucw== dmlzaXQ= X2JpbmQ= b290aW5n ZGF0ZXI= X2xvb2t1cA== Lm5pbw== IHN3ZWF0 IFJk IHNjaWVudGlzdA== IFBpeGVs QE5nTW9kdWxl UGxheWluZw== IHVuZm9sZA== VHJhbnNsYXRl IExhd3JlbmNl IEZJWE1F QmlsbA== IFJJR0hU IHdoZXJldmVy IG9vaw== dmlkZW5jZQ== IF1dOw== IFNraWxs dW5pc3Rk IPCfmYI= IGZlbWFsZXM= LS0pCg== jrflj5Y= IEZyZWQ= T3ZlcmFsbA== 2YI= IGVzc2VuY2U= IHRoZXJlYnk= IHdvdW5kZWQ= IERPV04= bGVzc29u dGV4dHVyZQ== Um91bmQ= IGF1dG9tYXRlZA== INCh IFVwZGF0ZXM= IHNoYWRl cHVibGlzaA== IEdlYXI= PWxhbWJkYQ== IGxldmVy KSsi aGlsbA== IHJhZGFy cnlpbmc= ICIpLg== ZmlsbGVk IGxpbmV1cA== IGRs IHdvcmtzcGFjZQ== Vm8= X2R0 67I= X0l0ZW0= TlNVUkw= LnZlcmlmeQ== IEhhd2FpaQ== R29k TWFyY2g= IFvigKZd IHBlbG8= dXJpb3Vz IFBpdHRzYnVyZ2g= Lkl0 Q2xlYW4= Plw8Xg== IGlvcw== c291bmQ= Il07 IGZyZWVk cm90dGxl IExvd2Vy W2NvdW50 5Z0= IHBhbGU= IFdheW5l ZWFydGg= X2NhdGVnb3JpZXM= VUNL Lm1ldGFkYXRh IHN1bW1vbg== SE9NRQ== 0L7Qu9GM0Lc= IG1hbnVmYWN0dXJlZA== IGRvY2s= IGNvbXBldGl0b3Jz X01PREVM b2tpYQ== IEhleQ== zr8= IGJhY2t3YXJk IFBPU1M= cm9wYQ== IGNyaQ== X09CSg== VHJhbnNwb3J0 LWhpZ2g= IGVyb3Rpaw== X3Nsb3Q= IGFydGlj X2ZyYW1ld29yaw== LXNlcmlm IFNxbERiVHlwZQ== Jyko KyIv IHdvcmU= U2ls IHN0b3Jpbmc= IFBoYXNl dWFudA== IGJ1bXA= aW5obw== IGRpZ24= IGJhY2tz cXE= KGhhc2g= IGdlbw== IHRlbmRlcg== TG9nbw== ISkK IE1Y IEFydGh1cg== ZXNzb2E= X0No IGJlZHJvb21z PSIjIj48 IHRocm9hdA== aW5zaWM= LmludGVnZXI= IHByaW1pdGl2ZQ== VHJ1dGh5 IGZhY2lsaXRhdGU= IGNyZWF0aXZpdHk= IEROUw== IGdyYQ== dWV6 IGNvdW50bGVzcw== IFBvbGFuZA== J00= IERpc3Q= IHZlc3Q= IGNlcnRpZmljYXRpb24= 4buR aGVsZA== ZXh0ZW5zaW9ucw== KHN0YXRpYw== IGdyYWRlcw== IFViZXI= 44Gf IFtdKQo= ZGF0b3M= IGdldERhdGE= IENoYXJn IEJT Lm1pY3Jvc29mdA== LnZpZGVv LmRpcmVjdGlvbg== LT57Jw== bHVh YXBlc3Q= IGJvaWxlcg== ZXJlaw== IGRlY2lkZXM= Lmphcg== SVND IFdvcmRz KENPTg== RU1QTEFURQ== cmVlemU= c2hvdHM= YXBwcw== dW50ZWQ= LnNldE5hbWU= Ojo8 LWJvbGQ= 6rI= 5a+G TG9uZ3JpZ2h0YXJyb3c= IHVuZmFpcg== IGVhcm5pbmc= IHNoZWxm VVJFTUVOVA== IGlkbGU= X01FTlU= LkN1c3RvbQ== QUdFUg== LSI= X3N3aXRjaA== YmVjYXVzZQ== KXZpZXc= bWFyZQ== X2NvbmRpdGlvbg== IFN0YXJ0aW5n TXZj KHByZQ== ZHVtcA== X0xPQ0s= YXRldGltZQ== LmNhbGxiYWNr IENlcg== b3BvbA== aWJyYXJ5 IHJlc2VydmF0aW9u CQkJCQkJCQo= bGVjdG9y Z3JhZHVhdGU= IGdlbmVyb3Vz IGlvbg== cmljYW8= bXE= X2NvbXBsZXRl KGN1cnNvcg== IEZvcm1Db250cm9s OmNlbnRlcg== IHN1YnN0aXR1dGU= IFBsYW5uaW5n IHBlbnNpb24= IHJlY29tbWVuZGF0aW9u IFRhZ3M= IGdlZg== IGFsYnVtcw== IHdhc2hpbmc= cm9j IHRyYWlucw== YXRpbmdz IGV4cG9uZW50 YWNrYmFy LWxu w6Fn LkRhdGFBbm5vdGF0aW9ucw== IEVJRg== IE1hbGF5c2lh CVBPUlQ= b251cw== IGNsZXZlcg== IHBldQ== PgoKCgo= IEFyZ3VtZW50cw== IGRlYnVnZ2luZw== KHJpZ2h0 J0Q= Y29tcHV0ZQ== IGZpbmVzdA== T1JBR0U= IHNwZWN0YWN1bGFy cGhyYXNl IGluZGlh IGxlZ2VuZGFyeQ== YmlydGg= IGNvbXBvc2l0ZQ== IGdyb3dz IFRE IGVwaWQ= IGxhdW5jaGluZw== XV1b TWludXRlcw== IENoYQ== IGNsZWFuZWQ= IHdpdG5lc3Nlcw== dWthbg== CVR5cGU= IGhhYmU= cGFyYWdyYXBo IEpQYW5lbA== IEhhbm4= IHZhcmllZA== IFBva2Vtb24= IE1VU1Q= 5Yqo LnZpc2liaWxpdHk= b3B1cA== Xls= LmV4cGFuZA== ICInLA== LmZhc3RlcnhtbA== X2F1dG8= IFNoZWV0 bWFya2Vy UGFyY2Vs ZXdz IFN0cmF0ZWd5 LW1ha2luZw== IHVudmU= IHRyYWlsaW5n IGNsaWNrcw== IEdldENvbXBvbmVudA== CWNvbnRlbnQ= SUdFTkNF RVJORUw= TlNNdXRhYmxlQXJyYXk= IGJyZWF0 IGhhcm1mdWw= tog= IGJlc2lkZXM= IGJvcmluZw== IGJydXRhbA== dmFuZw== KHBhcnNl cXVpY2s= IHB5dGVzdA== IHN3aXRjaGluZw== KCldCg== IOyE TEVS CWZvbnQ= IG5ldHQ= KV0KCg== KC9c 5p6c dG9BcnJheQ== IGJyZWVk IENBUg== IFdlYXBvbg== QWJz dG90 IHNldE5hbWU= YXB0aXZl IDos IGVzY2FwZWQ= b3JkZW4= IFByaQ== dGh1bWJuYWls IGRlc2NyaXB0aW9ucw== L3N0eWxlcw== IFBDSQ== IGFscGhhYmV0 YXN0aWNzZWFyY2g= Tk9URQ== IGNpYWxpcw== IEdyaWZm IHBvcnF1ZQ== IHByb3RlaW5z cGxheXM= IHN0YXRpbmc= IGltYWdpbmF0aW9u IGZhY2lhbA== IE1lY2hhbg== IGFycmFuZ2Vk X3VzZWQ= IGFycmFuZ2VtZW50cw== IFBpcGU= aG9zdG5hbWU= IHByb3ZpbmM= VGl0 LkZsYXRTdHlsZQ== IFNwbGl0 IExvYWRlcg== LmNj IGNsaW5pYw== LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== IGJha2luZw== IEVOVA== bmVhdGg= 44CBCgo= QU5F LkVudGl0eUZyYW1ld29ya0NvcmU= YXBwZXJz Lmlj IE5nTW9kdWxl IEZPUk0= ICc7 LXByb2ZpdA== aHc= ZW5lbXk= IEV5ZQ== IGNhdXRpb24= dG93bg== IHVyZ2Vk IEppbW15 eW5jaHJvbm91cw== LXNpemVk bWFraW5n LHs= XScs X09iamVjdA== YWhvbWE= IGFjdGl2aXN0 SU5WQUw= IENvbW1lcmNpYWw= IE9ybGFuZG8= KHRhYg== INio QWxnb3JpdGht IGhlcml0YWdl R2V0TWFwcGluZw== IGZhaWx1cmVz cmlvcw== YXRpdmE= IHRldA== IGNhcnBldA== KFo= dGhyZWU= IGRpc2Nsb3N1cmU= LkVSUk9S X2NhbGxlZA== IGRpYWw= IG9jY2FzaW9uYWw= LkVycg== IGZ1bmNpb24= Y2FmZm9sZA== IHJlbGVhc2luZw== 77yJCgo= X1ZhbHVl IFZhcmk= eWVsbG93 IHN0cnVnZ2xlcw== LmNhbA== IERha290YQ== CWNsb3Nl IHNhbmR3aWNo IGFuYWx5dGljcw== ICoqKQ== JiM= IEpvcw== IHBhc3NpdmU= QVRUUg== VGhyb3dhYmxl IE11bg== IFVpbnQ= KGRpc3Bvc2luZw== YXJhaw== IExlYWRlcnM= IGFmZmVjdGluZw== IGl0ZW1WaWV3 IGVjb25vbWljcw== ZnY= 4LmA LnJi IE92ZXJhbGw= IHdlYWx0aHk= IGV2b2x2ZWQ= bmRh IEh1cw== cmVzdHJpY3Q= dW1lbg== IEFncmljdWx0 IQoKCg== IGV4cGlyZXM= IHNwb2tlc3BlcnNvbg== aW50ZXJ2YWw= IMOi IHF1ZWVu KG5pbA== aW5nbw== SGVhcA== 2Y4= IGNvbXBsYWlu U3lt IENsb25l IFJ1 IFdJTEw= IENyeXN0YWw= L2NvbnRlbnQ= aW5nZW4= b2ludG1lbnQ= TGFzdE5hbWU= YXZpY29u IElCTQ== IERpbWVuc2lvbg== YW5o aWNpcGFudHM= IEFubmU= LnByb2dyZXNz IGFsZ28= b2JpbA== IFZvaWNl IEZF IGdsaQ== IHZlZA== IHByZXZlbnRz XENvbHVtbg== IGZvbGs= ZXR0aQ== IG1u IENMQVNT IGRpc3BsYXlpbmc= IEts IEZlcnI= ZHV0bw== Lmli IGRhZG9z J25hbWU= LXNwYWNl IGl0YWxpYW4= IGludmVyc2U= IGRlbnNl dXRlcg== IElFbnVtZXJhdG9y LXNpZ24= IG5hdGlvbndpZGU= IHBlcnNvbmE= IHNvbHZlZA== IGRyYW1hdGljYWxseQ== TG9nb3V0 IGdyYXY= IGFuYWx5c2Vz b2xsbw== IGxhbXA= LnRlYW0= IEVyb3Q= PVsi IGRhbmNpbmc= ID8+Lw== IGNhdGVy ZmZl IFNoYQ== IEJvcw== IFJFUVVJUkU= IE1vbnN0ZXI= IFJC IElERQ== IHN1aXRz IGZvcm1EYXRh KHRoZXRh IHNwYXRpYWw= PU5VTEw= IFNxbENvbm5lY3Rpb24= IOA= IFZlbmV6 IE1vcm5pbmc= IHB1YmxpY2F0aW9ucw== IE5PTklORlJJTkdFTUVOVA== Zmlyc3ROYW1l dWRz V291bGQ= X0hFQUQ= IGludmVzdGVk c3RhYmxl ZnJlZA== IGNvbW1hbmRlcg== U0VT 4oCUYQ== YW5jaGU= IE1vdmVtZW50 67M= U3VpdGU= IGp1cmlzZGljdGlvbg== 66as IEJldGg= alF1ZXJ5 IElzYQ== IGRlbnRhbA== LCo= IExpbWl0 aWxpYXRpb24= PSJ7 YmFzdA== IHR1cmI= aXN5 T09L IGFkdm9jYXRl aW1hZw== TEVDVElPTg== 0LvRjA== KGNhdGVnb3J5 LmRlYw== IHVuaXF1 X3Nu IGF0dHJhY3RlZA== IMOJ IFJ1bm5pbmc= X2VkZ2Vz IERpc2FibGU= X0FT 5Zu+ IG5ldHdvcmtpbmc= X2JyYW5jaA== SGF2aW5n dG9CZVRydXRoeQ== R0k= IGNhbXBz c2Vw LXBhcnQ= ICkKCgoKCgoKCg== dXN0cmFsaWE= IFJlcG9ydHM= cml0bw== IHdhaXN0 X3BsdXM= IFdX LXBlcnNvbg== QXByaWw= IHNhcg== LnRhcg== IGFncmljdWx0dXJhbA== dGlj IHRjcA== IHNldFZhbHVl YWdlbnRv IEFwcGU= cGlsZXI= Q0FERQ== IGFuY2hl YXRjaGVy IGNvbWljcw== IGxicw== X3NlZ21lbnQ= J109JA== aXR0ZXJz aWNoZXI= R0lORQ== IHV0aWxpemU= IEN1cnNvcg== X2V4cHJlc3Npb24= IGRhZw== PGxvbmc= IHJoeXRo 5o+Q IGNvbnN1bHRhdGlvbg== WWV0 IikpCgo= X01BQw== Y291bGQ= ICdcXA== IFZv CWh0dHA= IGdz cGhlcg== LWdyaWQ= SmFtZXM= SnVs IHNjaG9u IHRlbnNvcmZsb3c= IExPR0dFUg== YW1hcw== IHNjaXB5 IGNvbnZpY3Rpb24= LmFn IGFkbWluaXN0cmF0b3I= KSl7DQo= IG51bg== Imdyb3Vw UG9y IG51cnNl ZXhwcmVzc2lvbg== YWt5 IEhlYXZ5 Lm9wdA== LmdldEFsbA== IG92ZXJs LyIs X2NvdW50cnk= 544= IEdFTkVS X3JvdXRl IERhbA== wrQ= b2xvYWQ= IHVuY29tZm9ydGFibGU= KG1lbnU= IGhvc3RuYW1l JyIpOwo= IGNhbGN1bGF0aW9ucw== LWNsaWNr IHByb3RlY3RpdmU= 44Kv X0Zvcm0= dW5ncw== QWN0dWFs bWY= IFByb2Nlc3Npbmc= IEludmVudG9yeQ== KG1hdHJpeA== YXBwcm9wcmlhdGU= d2Vn aWph IGNocg== IHJpZmxl LXdzag== a2Fy IGluZGVwZW5kZW50bHk= SU9T IGNvbnNpc3RlbmN5 dm4= L3N5c3RlbQ== IENoYW5nZXM= IGV4cG9zZQ== aWNpZW50cw== IHJlbGF0ZQ== CW5leHQ= 6Kg= dWRlcw== IGdsYXNzZXM= RlhNTA== Li4uLi4u IFBkZg== IGFwcHJvdmU= IHtc IGV4aXN0ZQ== KSko QVJFTlQ= 0L7Qvw== IExhdGVzdA== IE5pZ2VyaWE= LkludGVyZmFjZXM= IHJlbW92ZXM= RW5lbXk= IGVuZm9yY2U= dmVydHM= CXBvcw== X3RleHR1cmU= V0FSRA== IElOQ0lERU5U KGNvbnRhaW5lcg== IGRlZmVuZGluZw== IFJY IEhvb2s= YnJpcw== IEZsYXNr R3JheQ== LikK dmlzaWJpbGl0eQ== IFJlZGlyZWN0VG9BY3Rpb24= ZXJyYWw= X2VsZW0= IHJlc29u ZnJvbnRlbmQ= X3ZhcmlhYmxlcw== YXRlcmlh ICsi YXZlbGVk UklY IGRlZmljaXQ= X0NoZWNr WVlZWQ== VG9PbmU= c3B5 IHVuaXRlZA== ZW5kZW50 IHBvZGU= 44GM Q0FU KGZtdA== IEJvbnVz IHJlY2s= wro= TW9kdWxlcw== IHZhY3V1bQ== UmFkaW8= IERBTUFHRQ== UGVu IFBhcmtlcg== OzsK IFJlYWxseQ== X25lZw== cGVuZGluZw== IG5vbWluZWU= IENhdGVnb3JpZXM= IFVsdHJh V2VhcG9u IGRlZmVuZGVy SXNz IEdlbmRlcg== IERyZXNz IGltcHJpc29u IGJhbmtydXB0 aW1lbnNpb25hbA== UEhB IFN0cmF0ZWc= IFBST0ZJVFM= IHBhdHJp Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= ZGVsZWdhdGU= IGZvclN0YXRl IGRldm90ZWQ= X21ha2U= IHRlcnJvcmlzdHM= IFNuYXA= X25hdg== IEFB IElhbg== CWFwcA== UGxhY2VtZW50 X2hkcg== PEs= IHNhbmc= c3Ryb2tl LVE= Pjw/PQ== LW1vZGVs YXZhbmE= IFdhbmc= ICAgICAgICAgICAgIAo= CWluaXQ= IGVudHJlcHJlbmV1cg== YXRpdm8= TG92ZQ== LW92ZXI= V2F0ZXI= IG1vZHM= Z2VuY2U= VGVjaG4= Png= LlRhc2s= bW9uZXk= aWJhYmE= J30pOwo= IFNwZWNpZmlj IExpbmVhcg== X09QVA== SGFzaENvZGU= KFBsYXllcg== LkNvbnRhaW5zS2V5 IGNvbGxhcHNlZA== dHJhbnNwYXJlbnQ= X1JBTkdF Vmlld2Vy KGNmZw== IHNvcnRpbmc= IGluZmVjdGVk IE5hY2g= IGFjY29tbW9kYXRl LmVsZW1lbnRz X1BBUlQ= IFNleHk= PWdldA== KHllYXI= IHhocg== Ol0= b3dza2k= IHN1bW1hcg== IMK/ IGludGU= IHdvcmtmbG93 IFRhaXdhbg== dmVyc2lvbnM= 5Y+R IHN1cnByaXNpbmdseQ== IG9wdGljYWw= IHByb2Nlcw== IGRpc2FncmVl IG51ZXZv IENBTQ== c29ydGVk bGVhc2Vz aXN0bGU= SWRlbnQ= CWV2ZW50 amVjdGVk Q2h1bms= VmFycw== LnByb3ZpZGVy IHByb2NlZWRpbmdz IGluY2x1c2l2ZQ== IGFydHdvcms= ZW5kYW50cw== 77yaCg== c2Vlbg== IGxpZw== IG1ha2Vycw== X2Z1bg== IGxlbmd0aHM= UGF0aFZhcmlhYmxl W2l0ZW0= 4Li1 RGVhZA== RkZGRkZG IFVyYmFu dXBsZXM= aWNoZW4= KG51bGxwdHI= LnNwZWM= LFN5c3RlbQ== VVJBVElPTg== KGpvYg== 5byP IHRyYWNrZXI= xZk= IE1S IFNRTGl0ZQ== IGR0bw== IDs7Cg== IG1pbnQ= IEludHJvZHVjdGlvbg== Y2Fv IHF1ZXN0aW9uZWQ= IGZpdHRlZA== cmV2aXNpb24= c3E= IG1pZw== X3VuaXRz X2FzeW5j IGZsaWNr fSk7CgoK IG5vdHJl fWAs RmlsdGVycw== IG11bmRv X2RheXM= IGZybQ== dXRj IHZhbHM= ZXdpZHRo IEdlbmVyYXRvcg== IEFydGlzdA== IElEcw== IEFydGljbGVz cmVhdGVy IENvbXBvbmVudEZpeHR1cmU= Lj0= IHJvdQ== LW5v LmJ1a2tpdA== ZWdn IERpZmY= YXRpY3M= 0YPRhw== 4oCUCgo= IENoYXJsb3R0ZQ== Ynll IH0pOw0KDQo= IFZpaw== IEJyb3c= IGx2 IEdpYg== LXdpbmc= R0xJR0VOQ0U= KEls IEVuZ2luZWVy LldhaXQ= IFBpY3R1cmVz IHJoZXQ= IHRoZXJtYWw= IHByYWlzZQ== PD4oKTsKCg== IFNwaWRlcg== UGF1c2U= IEJha2Vy IHNsb3dlcg== IH1dCg== X2VucXVldWU= IGRpc2FwcGVhcmVk IFRpY2tldA== SU5VWA== X0xPQ0FM 0LDRgdGB QEluamVjdGFibGU= Y29tbXVuaXR5 R2VzdHVyZVJlY29nbml6ZXI= 5Zu9 IHNjYWxlcw== IC0o Lycr IFNpdA== IGV4ZWN1dGl2ZXM= YXJkaW5n IGFkdmVycw== IGJhY2t3YXJkcw== CWNvbnRleHQ= IEhhbXA= IFBG IERlY2s= IENyYWln QW1lcmljYW4= IGJlbGw= IHByb2w= dWZlbg== IHJuZw== YXJzaGFs IFNpbXBseQ== Zmlyc3RuYW1l c2hvcmU= SnVseQ== IG1vcnRhbGl0eQ== IOKGkgoK SGVscGVycw== IGJlbmNobWFyaw== ZW1hZGU= IG9yZ2FuaXNhdGlvbnM= Lmdzb24= IFRleHRGaWVsZA== IGNpdmlsaWFucw== LkFycmF5cw== IE1pc3Npc3NpcHBp IGludGVybWVkaWF0ZQ== Z2V0VXNlcg== X2NsdXN0ZXI= UmVsYXRpdmU= Zm9yZWlnbg== LnF1ZXJ5U2VsZWN0b3JBbGw= Rm9yZWlnbktleQ== IHJlYXNvbmFibHk= LS0tLS0tLS0tCg== Q2FyZHM= IEthbQ== IFRob3I= IHJvbGxlcg== LWVsZW1lbnQ= IEN1cnJlbmN5 ZGRpZQ== QUxMWQ== IFJB IHBlcm1ldA== YWFhYQ== IGhvbWV3b3Jr IFZpdA== IG1vbGQ= IEZlcg== W3N0YXJ0 IHN0YXRpc3RpY2Fs IHNjYXJ5 X0hPTUU= LkJlZ2lu Q29uc3RydWN0 b2dlbmlj IERFQUxJTkdT IHRhbWJpw6lu aXhvbg== LmluZA== YWNyZQ== IHRyYW5zZm9ybXM= IE5hcA== LkJsb2Nr dXNzaWE= cGlyYXRpb24= dWxlbnQ= IGNlaWw= Q2xhdXNl bmFpcmU= VEVT IG5lYXQ= U1RE IFJlZ0V4cA== cGVyZm9ybQ== Oik= IHVuaW9ucw== IHN1YmxpYw== IHdpbmRz bG9hdGluZw== Z2xpY2g= IHBhZ2luYXRpb24= U2tpbGw= QXBwbHk= IE9wZXJhdG9y aXN0b2dyYW0= IHF1YWxpdGllcw== Q3Jvc3M= IGRlY29t XSwi IEp1YW4= Lm1vZGFs LkNoaWxk IFJvZ2Vy U1RJVFVURQ== OkNHUmVjdE1ha2U= YWxldHRl IHN0YQ== YXNpZGU= IGJsdXI= IFdh aWZldGltZQ== cmVlZA== Y29udHJvbHM= IGJpbnM= INC/0L7Quw== Ki8sCg== VUlT IFJvdQ== IERlbW8= LWF3ZXNvbWU= IENoYWlu IGhhc3Rh IEJhcnQ= LktFWQ== IHZlbmRvcnM= bm9mb2xsb3c= IERlc3Q= X2J1aWxkZXI= IGFyZ3Vlcw== X2Fuc3dlcg== Z290bw== IFJFU1VMVA== IE1PTg== IHBvZGVy b29ucw== X0NBU0U= IHJlcGxpYw== IGZpbmFuY2luZw== IERBVEU= Y2Vybg== X3RyYWNr dGllcw== L2xvZ28= IE5FR0xJR0VOQ0U= Z2V0VHlwZQ== PlQ= YmV0 Z2lybA== IElOQ0lERU5UQUw= LXNpdGU= LnRyaWdnZXI= IExpc2E= X2lucHV0cw== IHJlbGF0aXZlcw== TG9nZ2VkSW4= Q29uZmlndXJl SUs= LmFjY2VwdA== UmVzdW1l IERyYWZ0 ICo+KA== IFdB ZWRpYW4= ZXJuZXNz IExheW91dEluZmxhdGVy Ki8NCg0K b3RoeQ== IG9ibGlnYXRpb24= U3Vic2NyaWJl IHRodW1ibmFpbA== ZXhpc3Q= IGluc2lzdGVk IFVJQ29sbGVjdGlvblZpZXc= IEFuZ3VsYXI= IHRhYmxldHM= IEltcGFjdA== 44CNCgo= YWhv IGNoYXJhY3RlcmlzdGlj Z2Q= ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= b3VydA== YC4= QXBwcm8= Q29vcmRpbmF0ZQ== UmVtZW1iZXI= IG1hcmluZQ== XT09Jw== IEFkbWluaXN0cmF0b3I= LmdldERlZmF1bHQ= IGZvcmdvdA== IFN0cnVjdHVyZQ== VnVl YXJzaW5n bW9tZW50 a3c= X2N1cnNvcg== QXR0YWNr IGF0aGxldGlj IGRpYWdub3NlZA== IGVuZGU= 5Yig6Zmk SG91c2U= IFBBUkFN IHdpa2k= IE9wcA== IGNvbnNlcnZhdGlvbg== IHNuZA== X3RlbQ== c3Vic3Ry IENhcGU= LnNpbQ== VVRJT04= YW5hbg== 4oCZdW4= IGd5 LXdvcms= IGNvbXBlbGxpbmc= PScj CXN1Yg== IGRpcmVjdG9yaWVz 7Yq4 IHRvdWNoZXM= b3V0aW5lcw== LkNvbGxlY3Rpb24= c2NoZWR1bGU= LmxhdA== IERvY3RyaW5l Q0FB IFJlZmVy IHNoaWZ0cw== IGxpa2VsaWhvb2Q= cHJldGVy IEZlbWFsZQ== IGludGVyY2VwdA== IGxvdQ== 55m7 IHJ1Zw== IENyb3du ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= LXByb2R1Y3Q= IHByb21wdGVk dW5nbGU= ZG9ja2Vy IFR1 IFVuaXF1ZQ== X0Vycm9y dWxvcw== IOKE IChg R2V0dGluZw== X3NjYWw= IEVuaA== w7x0 IHN1c3RhaW5lZA== IHBhdGNoZXM= IHByb3NwZXI= IEdhemE= X2xpZ2h0 IGluY29ucw== LS0tLS0tLS0K CQkgICAgICA= U0Y= Q04= OiI7Cg== IENvbGxpbnM= KCop IGNvbXBpbGF0aW9u J10NCg== IGNvbnNlcXVlbmNl LC4uLg== IGRt IEJMT0NL Q2x1c3Rlcg== IHNraQ== KGFyZ2M= VHVwbGU= IGpvaW5z IFNoZXJpZmY= V2Fy aW5kaQ== IGNvbW1lbnRlZA== SE9TVA== IGludml0YXRpb24= YXBhbmVzZQ== IHBlcm1pdHM= cHJlY2VkZW50ZWQ= X3pvbmU= IEFteQ== X1JE TWluaW11bQ== IGludm9jYXRpb24= LmVuYWJsZQ== aWNodGVu LW93bmVk Imlk X1BPSU5URVI= RmFj IHNwZWNpZmljYXRpb25z IG5vbWluYXRpb24= IGdw PCg= IHJvYm90cw== IEplcnJ5 IGhvbGRlcnM= IHdhbmQ= Y21z IH0pKQo= LlRvYXN0 IElMaXN0 QmFzZWQ= em9vbQ== L3N0eWxl IEJlY2s= TWVu IGNvbnRyaWJ1dGluZw== IHVuZG8= IE9I IGFkZE9iamVjdA== IGVpZ2Vu c2lnbnVw 6ZSZ IGRpc3RhbnQ= UEFSQVRPUg== IE1hcmk= IG3DoQ== RW1w w7Nz IOyImA== ZXZ0 K2o= cGFyaw== IFN0YXk= IER1bg== IHNveQ== PiU= YXppbmVz IHRpZW1wbw== KG1l cHJlc2VudA== LlRoaXM= IGVkaXRvcnM= RklFTEQ= Lldvcms= IFVuaXZlcnNl IGRydW5r LnRpbWVy IGFsdGVyZWQ= IE5hcg== 66Cl LkFjdGl2ZQ== aWRvcg== 560= LmRlbHRhVGltZQ== IGF3a3dhcmQ= JnF1b3Q= IFNhZmFyaQ== IHRyaWNrcw== TUVOVFM= ZGl2aXNpb24= IHZhcnlpbmc= IEhpZ2h3YXk= IHBob3RvZ3JhcGhlcg== IFN0ZXdhcnQ= IGxhc3Rpbmc= LlByZQ== LmFtYXpvbmF3cw== IEx1Y2s= LkRlc2NyaXB0aW9u IE5heg== bmVn IGPDsw== PDwiXA== IFN1cnY= IFVuYw== UmVjaXBl LkJvcmRlclN0eWxl IG1vZGlmaWNhdGlvbnM= LWF0 QVRGT1JN aGRy YWtv IHN1YmxpY2Vuc2U= IEp1bXA= IGJlaW0= IE1hbmhhdHRhbg== LmJvb2w= X2h3 0YLRjA== Qmlu IGdhdGV3YXk= IiI6 IFVJUw== OiIr LWRlZg== IFJlZ3VsYXI= L3Rlc3Rpbmc= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= c3RyaW5nc3RyZWFt IGRpc3Bhcg== IG1vYmls LXJlYWQ= IEFkYXB0ZXI= IENoYW1waW9ucw== IHNjaGVkdWxlcg== IGtpbGxz IE11bHRpcGxl aXJyb3I= IGdvZHM= QURP YWt0ZQ== IFVzdWFyaW8= LmNpcmN1bGFy IHJlY2VwdA== IEV4cHI= IGVsZGVybHk= IG5pY2VseQ== IGJlc3Rl V2FudA== IGNsYXNzaWNhbA== LnNwcml0ZQ== b2JqYw== IE1hc29u IHNpc3RlbWE= LkJsYWNr ZXNv IFplaXQ= IGRpdmlk IGVudGVycw== X3N1YmplY3Q= IFBsYW5ldA== Lndhcm5pbmc= IEdyYW0= X3Rva2Vucw== IGhvdXNlaG9sZHM= X2N1c3RvbWVy dXNlck5hbWU= Y3Jvc3M= IHBpb25l IGFzc2lzdHM= X1NN aWJv IGxveWFs IHVzZWxlc3M= I2VsaWY= IFVsdGltYXRl Q29tZQ== Z2Vs IGRpY2g= eHl6 aWtlbA== b2JyYQ== X3NjYW4= IEludGVyaW9y IE5pY2U= IHBsYWM= CXRhcmdldA== IHZpcmFs YXNzbw== KCkv dW5kZQ== IEFkb2Jl T3M= dmlzaXRlZA== IE9X IEZlZWQ= IFNlcXVlbmNl IG1hbmFnZXM= aW5zb24= IExvdWlzaWFuYQ== e30p IEhhYg== IExE IGJpcA== cHJpdGVz KGVsZW0= LmhpYmVybmF0ZQ== w6lsw6k= IG9obmU= X3RyYW5zYWN0aW9u IGFubnVuY2k= UHVibGlzaGVk IEhvbmRh IFRhbQ== IFBhY2tldA== X3NlbGVjdG9y IGNoYWxsZW5nZWQ= UHJvY2Vzc2luZw== LWhvdmVy IHRyYWluZXI= X2NhbmNlbA== IE5TRGljdGlvbmFyeQ== YWJyaWM= IE1MUw== X3NlbnNvcg== IHNocmluaw== IEZY dGhyZXNob2xk CUhY LW1hcms= YC5g U2NoZW1l KGZ1bGw= X3dyaXRlcg== IFN5cw== IGZsZWQ= IENpbg== LXdpZGdldA== IFByZXZpb3Vz R2VuZGVy X3F1ZXN0aW9u RmVlZA== IHNjcnV0 KHByZWZpeA== 44CC44CC IGluZmVjdGlvbnM= UGFydHM= IGhpZXJhcmNoeQ== X0RFTEVURQ== IFBhdGllbnQ= X3BheQ== IHByb21vdGVk IOyL IGNpdmlsaWFu IGFncmljdWx0dXJl IFBpZWNl IHN0YW5jZQ== dXRzY2hl QXNzaWdu LkFDVElPTg== Rmln X3JhZGl1cw== IFN5bmM= ZHVjZXI= ZmFpbHVyZQ== ZW5zZWQ= cHRpbWU= Qk0= X2RhdGV0aW1l cXVpdm8= UVVFVUU= 6ICF QXBwZWFy IHN1bW1pdA== OnZvaWQ= IHZpbmU= 6K6k b25uZQ== X1RSQU5T LmdyZWVu X2Nj IGh1bmdyeQ== ICI+ KCkpOw0KDQo= RXh0cmFjdA== aXplbnM= IHNvbHZlcg== Tm90aWZ5 IGVuZ2xpc2g= IFNob3BwaW5n aW50ZXJmYWNlcw== UkVR IGlsbGVn IFVJSW1hZ2VWaWV3 IGRpc2Nvbm5lY3Q= IFVudGls IENvbnNlcnZhdGl2ZQ== QENvbHVtbg== IHNoaWZ0ZWQ= IDoNCg== IGZpY2g= IGRsYQ== IHNob2U= IiksDQo= dWxhcml0eQ== X1JFU1A= V2VhdGhlcg== VUlBcHBsaWNhdGlvbg== Lml0ZXJhdG9y IGFnaW5n LlBhcmVudA== b3dpZQ== KGVxdWFs IENvbnY= L2RlZmF1bHQ= IG1lYXN1cmluZw== LnByZXY= LklzVmFsaWQ= LkZhdA== IHPEgw== a2V5d29yZHM= d2l0aG91dA== IHNvdmVyZQ== IGV4Y2hhbmdlcw== IG1lbHQ= IGlzbGFuZHM= IEludGVncg== IGp1bXBpbmc= IGdsZQ== IGpvdXJuYWxpc20= IGRhdGVk TG9jYWxpemVk IFJlZnJlc2g= UGFydGljbGU= IGFh IFNUUklDVA== IGJvZA== LlByb2Nlc3M= X0FVVE8= IFB1Ymxpc2hlZA== ZXZlcnk= IHRlY2hub2xvZ2ljYWw= bHN4 IGlycml0 QWRkaXRpb25hbA== IGRlbGltaXRlcg== X2xhbmd1YWdl LWFyZWE= Ym95cw== IFR1YmU= IHdhdA== IG1lY2hhbmljcw== X293bmVy U3BlbGw= IFN0b3JpZXM= LkFwcGVuZExpbmU= VGFibGVWaWV3 aGVt c3RpY2s= b2xsb3dlcg== SUZG IFVW b2xsaXNpb24= U1VC IGNvbXBhcmFibGU= IGRvbmRl c2FsZXM= bGx2bQ== IH1dLAo= T1RUT00= IFB1cnBvc2U= TGFi IGludGVydmlld2Vk b2lz YXNpbA== LnNldElk IEluc3RydWN0aW9u LS0+ IE1vZGlmaWVk YXRpb25hbGx5 IE1lZXRpbmc= 6K+v I3JlZ2lvbg== IHJvdXRpbmc= LmZvY3Vz IFlvdXRo PEQ= IE5hZw== Y29udGFjdHM= IGZvcm1pbmc= IG1pZQ== JyxbJy4uLw== IEJQ IGFwcGV0 IFRlYWNoZXI= IFRQ IGFubnVhbGx5 b3V0ZWRFdmVudEFyZ3M= IFNwZWFrZXI= IHJlbmFtZQ== Q0ZH KCIvLw== 5o6l L3BhZ2Vz IHByw6lz IFNwZWxs LkFsbG93 IElOVEVSUlU= ICgj 4oCZCgo= X0dlbmVyaWM= Lmltc2hvdw== X3RpbQ== LWZhY2U= KCYo YXRpbnVt IHJldm9sdXRpb25hcnk= IEhvdXJz cmFpbg== IGFueXRpbWU= IGFiYg== LmpzcA== U2Nyb2xsVmlldw== IFRydXRo IGFudGljaXBhdGVk IGFjY2VudA== LmNoZWNrZWQ= IHNwZWNpZmllcw== IGNhZg== IGNlbGxwYWRkaW5n IGNvb2tlZA== IEh1Z2g= cGVlaw== X1JBVEU= IGRvcm0= Lw0K SVZJVFk= LkNvbnRyb2xsZXI= KHBhcnQ= LmNvbnN0cmFpbnQ= IGludmFzaW9u TU9WRQ== IGdsdWM= bGVuYW1l IGFtZW4= ZW5nbGlzaA== IFN3aXR6ZXJsYW5k IjsKCgo= cGVzdA== LmNvbGxlY3Q= Tmli IERpY3Q= IEVtYg== KHN1YmplY3Q= IG91dHJhZ2U= IGRlY2lkaW5n IHNlbnRlbmNlZA== RmVjaGE= IkE= IHF1ZXI= IGZvbnRGYW1pbHk= IHF1YWRy LVk= X0NBQ0hF IGFuYWx5emVk IGdhaW5pbmc= IEFnYWluc3Q= IFNvdWw= dGF1 IGxpZ2h0d2VpZ2h0 IFRG IEVmZmVjdHM= LlR5cGVz LmFkZENsYXNz IHZlZ2Fu 6YE= Lici IEV4cGxvcmVy LmRldGVjdA== LnNoaWZ0 IG9ibGlnYXRpb25z bGFzdE5hbWU= IGFzc29jaWF0aW9ucw== IFRpbWVTcGFu dW50ZXI= IEZyZXNo Q29tcGF0aWJsZQ== UHVi aWRnZXM= Lm9wdGlvbg== dmFyaQ== Lmhhc2hDb2Rl IGdlYg== LnNlY3Rpb24= LW5vdA== IFN1Ym1pdA== VE4= cmVnaXN0cnk= X21lZGlh IG5hag== ZmZ0 IG1hdGU= LXRoaXJk IHBvY2tldHM= ZXN0YQ== IGJlbnQ= IE5vcmQ= IHJldGFpbGVycw== IE1vcnJpcw== LiIiIgoK V3Jvbmc= IMWb UmF5 LmVj IEJpbmQ= X0hBTkQ= KG5vbg== aXNWYWxpZA== IHNpbWlsYXJseQ== X0xJTUlU IGR5bmFtaWNz IGRpc3RpbmN0aW9u 44GG PE4= IG9ydGg= IFRveW90YQ== IEthdGU= IExT b3JpZQ== IFNwcmluZ3M= IGZyZWFr bGFzdG5hbWU= X01VTFQ= LXN0ZXA= Iig= QUREUg== IGVudGVydGFpbmluZw== X0NPTkY= IGRlY29kZWQ= IHN0cmVhaw== IHdhaXRlZA== IG5vdGlmaWVk cm9kdWNlZA== dmlzdWFs LkxheW91dFBhcmFtcw== 5rA= ZXNpYW4= Zml0cw== c3ByaW5n IEJlcm5pZQ== VXNlckRlZmF1bHRz IHBlZGVzdA== QXBwZWFyYW5jZQ== IFdpa2k= IE5PVElDRQ== IHNzaA== IGR1cmFudGU= IFppcA== xLFy IE5BVE8= IHR3ZWx2ZQ== IHJveWFs 77g= IG1lcmNoYW50 IEZ1cm5pdHVyZQ== J10pLAo= LFg= IGZvbGRlcnM= IEdhdGU= CWZ1bmM= cGljaw== X3VzdWFyaW8= IFZlcm0= bWVudGlvbg== dXJwb3Nl IGFsZXJ0cw== eGlvdXM= X3NpZw== IEZ1 ICg6 IGR1bWI= 5YWz IGFjY3VyYXRlbHk= 6YeN UkI= LXNjcmVlbg== IFZFUg== am91cg== IHJvbWFuY2U= dWNjZWVk LmNob2ljZQ== IGFkaXA= X2RpbXM= U2VyaWFsaXphYmxl 44KL LmpvYg== IHByb2c= dWNoYXI= IGdlbnRseQ== IFJTUw== aWN0dXJlZA== X0VOQUJMRUQ= CWxhYmVs YXdrcw== IEVuc3VyZQ== cmVtZW1iZXI= 7KCV IHRyYW5zbWl0 e3sk LlRyYW5zYWN0aW9u dXJzZQ== X3JlbGF0aXZl IHNpemVk IFhY IFByaW5jZXNz IExhcnJ5 IHByw7M= INGB0YLRgA== IHNpc3RlcnM= ZXN0cnVjdA== IGNoZWNrcG9pbnQ= Omxlbmd0aA== IENhcmxvcw== L2ljb24= X1RBUkdFVA== VG9rZW5z IHBhdGllbmNl IFNlbGVjdGVk cXR5 LnNob3dNZXNzYWdl IHdpbGRsaWZl IFByb3Bz Ym0= LWFycm93 IHBhcmNlbA== ZmlyZWJhc2U= IEJlbmphbWlu Y2Vzc28= LnRpbQ== IEdhcmM= LmFueQ== IEhPV0VWRVI= IEtv IGdyYWJiZWQ= X2ZyYW1lcw== IG9iamVjdEF0SW5kZXg= IEFEVklTRUQ= IHN1YnVy CUdM IH0pfQo= LWxlbmd0aA== 7Iuc IFBvdHRlcg== X2J1ZmY= Lmd1aQ== IEVuY29kaW5n RWxlY3Q= LW1lc3NhZ2U= IO+/vQ== IMiZaQ== IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbg== 0LDRhtC4 IG1pbmltaXpl IHJlc3BvbmRpbmc= JF9bJw== IEluZGl2aWR1YWw= w6Fj IElOVEVS IG1hc3R1cmI= IEJpbg== KCck 65Oc IG9wZW5seQ== ID48 IHVudG8= b2xvZ2ljYWxseQ== IE11bA== VklESUE= IHNsaW0= IENvbW1pc3Npb25lcg== KG9u IHVuZGVybmVhdGg= L2Ri dm90ZQ== KE1lc3NhZ2U= IFBvcGU= RGVmaW5lZA== IHN3aWZ0 dXJm IGFkYXB0ZWQ= U0VM IHJldmVudWVz IGRpdmluZQ== PXk= R3JhZGllbnQ= X2FjdA== IC8qITw= IHBvbHlnb24= IEZEQQ== IENhcnI= YXRhYmxlcw== KHN0ZG91dA== IHJlZnJpZ2Vy IGNvb3JkaW4= YXZvcml0ZXM= 0YjQuA== IGNvbXBhc3Npb24= IFBPU1NJQklMSVRZ LXNlY29uZGFyeQ== dXJhY3k= IGNvbXByb21pc2U= X0FW X29z IGJlc2lkZQ== g50= IGxu LnBsdWdpbnM= Q2FwYWNpdHk= YWxhaA== LmJpbg== IENSQw== X2JhbGFuY2U= IGZsZXhEaXJlY3Rpb24= IGFtYml0 IG5pY2tuYW1l IEZvcmNlcw== Q0xF IFNoZWxs IHNhaWw= IFdyaXRlcg== IEFsaWNl ZHc= IEluZGlhbnM= IE1hcnNoYWxs X1NSQw== IG5vcm1hbGl6ZWQ= IEphZw== 44KS emVpdA== cnBj w61j LmlubGluZQ== IHRyYXZlcnM= X251bWVyaWM= IHV0aWxpdGllcw== IGV2YWM= SU5QVVQ= CXJlZ2lzdGVy TVg= IENhbXBiZWxs IGRhdGFzZXRz IGRlbWFuZGVk IGluaXRpYWxTdGF0ZQ== Z2Fu IGVp VW5leHBlY3RlZA== LXdlYg== dHJhaXQ= LFk= IFRvZGQ= IHNrZWxldG9u IG9wdGltaXpl 56ys IFVwb24= IFN0T2JqZWN0 IGFwbGlj Lic8Lw== QUND YWxvdXM= IGhhc2hDb2Rl IEJpYg== SU5BTA== IGludmlzaWJsZQ== IGhldGVy IHNhZmVy fS8v LnRoZW1l Lm5hdmlnYXRpb25Db250cm9sbGVy X21lc2g= c2tpbGw= IFZpb2w= wrI= IEVPRg== IEtp eW1tZXRyaWM= IG1heGxlbmd0aA== xaM= ZnJpZW5kcw== IEV2YW5z IGxlbW9u ICgu U2xpZGU= IFRoYWlsYW5k IENhbm4= IGFtZW5k IGNpcg== IHNpbGx5 ZXNpbWFs X3BpYw== cHJvY2Vzc29y SmF2YVNjcmlwdA== IGV2aWRlbnQ= X2Rp PlA= dnJvbg== LlVO IHBhaW50ZXI= aXphcnJl IGxhdg== IHBvbQ== cHJlZw== PWZ1bmN0aW9u KHNlcmlhbA== aWZpY2E= dW1pbmc= 5Zyw 44GC LW9w VUNI IEhlbmQ= LnByb3BUeXBlcw== IHlv IHJvdXRpbmVz IGNhcmluZw== U2Vt IHJlc2VydmVz IHByaW9yaXRpZXM= cmVkaXRz SVNUUg== Q29udGVudFR5cGU= IFNjaHc= L21lZGlh IGVzdHI= IGNsaW1iaW5n LXdlZWs= Y2hlcmNoZQ== c2Vuc29y VG9BcnJheQ== IE1vbnRyZWFs IGNsb3Vkcw== IEluamVjdGFibGU= IFJpY2U= IHByb3BhZ2FuZGE= X3Byb3ZpZGVy IGluZG9vcg== IGluYXVn IGRpcGxvbQ== IG1lc3NhZ2luZw== X211dA== 5aaC IGt3 T05T YXJpYW5z UlBD KV0NCg== LXJheQ== IFNvcg== bWFsbA== IG1hcmtldHBsYWNl IHZ0aw== TWE= b2dhbg== aWdp IHNwb25zb3JlZA== IERhbmk= LlNFVkVS PicuJA== bXVsdGlwYXJ0 IFdvbA== IHRhYmxlTmFtZQ== IFVzZXJuYW1l QmFja2dyb3VuZENvbG9y IGZyaWdodA== X0VNQUlM U2VwdGVtYmVy X3ZhbHM= b3BpYQ== IHNwb3R0ZWQ= LUNo IGRhdGFTb3VyY2U= LyIK 0LXQutGC IFJlcXVlc3RNZXRob2Q= IFJlcGxhY2U= LWRv YWhu IFBoRA== XS4KCg== Tk9O Z2VtZW50 IFRocg== IHF1aWV0bHk= IHRvcnR1cmU= IHRlYXM= IENZ IGF0cg== ZGV2ZWxvcG1lbnQ= LWRldGFpbA== IGxpZ2h0ZXI= IGFyZ3Vpbmc= IGRlc2VydmVz IGN1cnJpY3VsdW0= X0NPTlRFWFQ= xYJ5 SElURQ== CUlE L3VwbG9hZHM= IHRpdHM= cmVv X2Ryb3A= LlVURg== IHBpY2t1cA== IGdyb2Nlcnk= IFB1cmU= IGVhc2llc3Q= UGhpbA== LmZlYXR1cmU= KCIq IGludmVzdG9y dG9r IGphcg== TG9z 4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU LnF1ZXVl LXNwZWVk TWFs dW1ibHI= IENPTlNU IEhSRVNVTFQ= IERhbmNl KGZpbGVQYXRo IGF0dHJpYnV0ZWQ= 4KWN IEJ1bmQ= Y29pbnM= IHPDo28= IHBpcg== cGVyc29uYWw= IHByZWxpbQ== IHByb3Bvc2U= IFRM XV0p IFN1YnNjcmlwdGlvbg== IEtyZQ== LGxlbg== LkZpcnN0T3JEZWZhdWx0 KS0t X3Byb2R1Y3Rz LkdldEJ5dGVz U2hpcA== IGVuY3J5cHQ= IFNH IE15c3Q= aGly IGl0ZXJhdGU= IGludGVuZA== Lm1vY2tpdG8= IGNoYXB0ZXJz KGFuZ2xl IFZsYWQ= 6K6+ Jy4KCg== UmVzcG9uc2VCb2R5 IEFiZA== ZGVhbA== IGJhcnJpZXJz LW91dGxpbmU= YmlsbA== IEZhbGxz X3NlY29uZA== LmluY2x1ZGU= LmNlaWw= IG9jY3VwYXRpb24= cGhvbnk= Lm1vdmVUbw== IEplbm5pZmVy QVNURVI= OyI+PA== IEVuYWJsZWQ= IHRlcm1pbmF0ZQ== IElv bGF0aW9ucw== IFRIRU9SWQ== IGVhcmxpZXN0 IHJhY2s= IFNjYXI= c2hha2U= Y2hpcA== IHV2 IGFsbGlhbmNl 0L/QuNGB IEdPT0RT emlvbmU= IFZJ IHst IGZpbHRlcmluZw== IG1pc2Nvbg== LkRvY2tTdHlsZQ== IGJ1c2g= IGp1bms= 5ow= IFFVRQ== IGhvb2tz IGZpcm13YXJl IG1pZGRsZXdhcmU= ZGlj IE9ha2xhbmQ= IGFycml2ZXM= UGF5bG9hZA== cGl4ZWw= XXw= IHN0YXJ0RGF0ZQ== LlBSTw== X2F1ZGlv IG1pZGZpZWxk aWdpZGJvZHk= IFN3aXNz IENsaXA= IER1bXA= IFRleHRCb3g= IGdlaA== eWllbGQ= b2Rz IHJlZmVyZW5kdW0= QmFja2VuZA== IENyZWFt IGRvbWluYXRlZA== IEFyY2hpdmU= IHJpZGVycw== LnByZXBhcmVTdGF0ZW1lbnQ= IHF1YW5kbw== IGNoZWY= d2lraQ== aW5lbA== YW1wbGluZw== KCJcXA== IHNhZw== X3Byb3h5 44GV cGRv LmdldEVsZW1lbnRzQnlUYWdOYW1l IGRlbW9uc3RyYXRpb24= IE5QQw== IGFyY2hpdm8= ZW5kYW5jZQ== IGVmZmljaWVudGx5 KGFjdHVhbA== LnRhYmxlVmlldw== IG11c2g= IGJlYXJz X3RocmVhZHM= amFz YWh1bg== IG5ldXJhbA== IGRlc2lnbmluZw== IEdEUA== IGxpZnRlZA== 55uu IEpvaW50 IEluY2x1ZGU= IEdpYW50cw== IHdpdGhkcmF3YWw= IFJlbnQ= bmF0aXZl IFNlZWs= Z3Jlc3Npb24= X0NQVQ== XFM= IFNoaWVsZA== IHNvbGlj IGJvb20= eWVjdG8= IG1hbnVmYWN0dXJl IOKAiw== IGJib3g= IGVhcnRocXU= b2xsZWN0b3Jz OkAiJQ== IGxvb3Bz SmU= YWxraW5n IFdoYXRz IEJveXM= LmJvb2s= QVJHRQ== X3BpeGVs IHN1c3BlY3Rz zrk= dXNw IEJNVw== aWVjZXM= KHBlcnNvbg== 5byA 6bs= IFBvZGNhc3Q= IGJvdQ== KEl0ZW0= w7s= KElucHV0 SHR0cEdldA== IGJ1cmc= KV4= Qk9BUkQ= Ki8s IGd1bHA= IEJlbm4= IGRlY2tz LnN0YXR1c0NvZGU= IGFjdXRl IGh1Zw== dWd1 IHBsZWQ= LCIl aGFwZQ== INC30LDQvw== IE1haW5l LnJlYWw= IGRhbGFt IE1pbm9y LkZsb2F0 ZGlzcA== IHRs IGVuY291bnQ= PT4k IGZn dGVlcw== IFJlY29tbQ== w6Rs IGNoZW1pc3RyeQ== QmxvY2tz T0lE IGZvcmV4 IEFwcGVuZA== IHsq IFN1cHBseQ== Q0dGbG9hdA== KGJs IGF0ZQ== YWRvcmE= IGd1c3Q= QXNzb2Np Pi4K RkVUQ0g= LnNlcmlhbA== d2lkZ2V0cw== YXJkbGVzcw== aWVmcw== X0ZVTEw= ZXJuZXRlcw== IFByZWQ= 2K0= 5LqL dWJlcm5ldGVz IExhdXJh IGxhYmVsZWQ= SGlnaGxpZ2h0 IGFubm95aW5n L3VwZGF0ZQ== KGRlc2NyaXB0aW9u IGludGltaWQ= JGM= IikpKQo= LkFQ IFtdKg== IEVYSVQ= Lkhvc3Q= IE9QRU4= LnNlbmRNZXNzYWdl X2NhbWVyYQ== X3RpbGU= IHRoZXJt b25vbW91cw== IGRpc2Fkdg== IG5hYXI= aW5kZXhPZg== IFBQ LnByb3RvY29s QUZF IHRleHR1cmVz IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj dW1iYWk= LnN0YXRz IEdF IGll IFNURA== IE1hbm4= LnJlZmxlY3Q= S0I= IGRpdmU= Lndhdg== LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t L3NldHRpbmdz LmxpZmVjeWNsZQ== IGRhdWdodGVycw== b3J1cw== dWJlcg== TklORw== c3RyaQ== IFRpcA== IHpu IHN3aXRjaGVk aW5ldA== dWZmeQ== IFRyYW5zcG9ydGF0aW9u KGNvbmY= ZnJpY2E= IFhM IExlYWQ= X3BlcmNlbnQ= PE1hcA== IHRocnVzdA== b3Ji aWtr IHRyYXVtYQ== QWNjZXNzb3I= IEZpdA== IFN0cmluZ0J1ZmZlcg== ZXhwbA== KHNjcmVlbg== IGF1ZGllbmNlcw== IE9QVElPTg== X3JvdW5k W25vZGU= YmVo LT5fXw== cGVybWlzc2lvbnM= IERldGVybWluZQ== Lk1hbg== IGFkdmFuY2Vz LklucHV0U3RyZWFt IHN0cm9uZ2VzdA== IGVCYXk= ICMt IGRpcm5hbWU= IFNNUw== IG1lZGljYXRpb25z IGFtZW5kZWQ= IGNodXJjaGVz IEltcGVyaWFs JHJvdw== IE1hZGlzb24= IEluc3A= IGFmZmFpcg== IHBzeWNob2xvZ3k= dmg= IHNldmVyaXR5 4oCQ IHN0cmlwcw== QUg= dmVydGlzaW5n IGNvbnNl SU1BR0U= IFN0YXRz CXNj LkN1cnNvcg== IGZyZWV6ZQ== c3Nvbg== KHhtbA== IFN1c2Fu LnRpbGU= ZWRlZA== ICAgIAkJCQ== dWVsbGU= IE1pdGNoZWxs YmFzZWQ= T3BlcmFuZA== veaVsA== IEZG CXN0cmNweQ== b3VuY2Vz aWxkbw== LmV4ZWN1dGVRdWVyeQ== IGFwcHJvYWNoaW5n IFNldmVu IG51dHM= IHJpYw== YXNzaWdubWVudA== IGNhbGN1bGF0b3I= IE11cnBoeQ== IEJvdQ== 7YQ= IGJ1dHQ= IHRpY2tz UHJvamVjdHM= aWxpYg== LnRleHRDb2xvcg== bW92 X2xvZ28= KHRlbXBsYXRl IElOSVQ= IGltYWdlVmlldw== c2NyaXB0aW9ucw== T1JJVFk= Q29uc3VtZXI= IHVucHJlY2VkZW50ZWQ= IHRvdXJpc3Q= IGJyb24= IGNvbnRyYWN0b3I= IGxpY2VuY2U= IE5hbQ== 5q8= KHRyYW5zZm9ybQ== X0FUVA== UHJlZg== IEdhbQ== IHZlc3NlbHM= IGhhdg== TGF0ZXI= LlRvTG93ZXI= IHVybHM= IGJyZWFrZG93bg== IHBlbmFsdGllcw== IGZvc3Rlcg== IFVF IGNsdWU= Y29tZWQ= 5ZCN56ew LW1haW4= IHB0cw== IGNvdW50ZWQ= aWN0cw== L3Bvc3Q= IGdldGF0dHI= IHBpbmc= QU5DRUw= IHBlYw== 0YXQvtC0 YW50b20= IEJsdWVwcmludA== IEV2ZW50RW1pdHRlcg== IGzDpA== 5rI= IHN0cmF3 KGNvbXA= J3VuZQ== Pk4= LWNsaWVudA== ZXNNb2R1bGU= LWJhc2U= IHJldHJlYXQ= X3NpbXBsZQ== CQkJCQkJIA== ZmVl JykNCg0K Q29udHJvbEl0ZW0= IHN1YnNjcmliZXJz cGxlYXNl IEVmZg== IHBvdW5k IEJ5dGVz IFRlYQ== X2FjdGl2aXR5 IG1heGlt IG9wY29kZQ== QlNE LmNvbnN0YW50 O30= b21icmVz IGNhcmVlcnM= KS4KCgoK IHNwcmVhZGluZw== LWV4cGFuZGVk IE9yZA== YW1hcmlu IG1vYmlsaXR5 VW5mb3J0dW5hdGVseQ== YWtr Tkw= X3JlZGlyZWN0 IFBH IFNlbnNvcg== Ym9s dGFw X01FTU9SWQ== IFVJQWxlcnQ= cGxpdHVkZQ== V2Vic2l0ZQ== IExvZ28= bG92ZQ== W2luZA== IGFsdG9nZXRoZXI= IHdvbmRlcmVk IGVzcGVy IExpYmVyYWw= IG9zcw== IGVsaXQ= IHN0aWZm b2RveA== X21lbnRpb25z IERvdWdsYXM= X3BpZA== IENL IGluaXRXaXRoRnJhbWU= LmJsb2c= cGtn YW5naGFp UVVJUkVE dXU= IG1rZGly QVRBTA== IHVuaA== aW5jZXM= c3Ro IGh5cG90aGVzaXM= IGNhdGE= IFRC IENsYXI= IHByZWRlY2Vzcw== IHNpdHVhdGVk LXdvcmxk KSkv IGhlYWRsaW5lcw== LnN0YXQ= IG91dGJyZWFr c3BhdGg= X0ZMQUdT IFNlcnZsZXRFeGNlcHRpb24= U3Vu RlJPTQ== IERpcg== 44O744O744O7 X2Nvb3Jk IE9wdGlt TW9uaXRvcg== LmJpdA== WFhY IHRvZGFz ZmVsZA== 0YDQuA== aW1pcg== IHBvbGl0aWNhbGx5 IG1vbGVjdWxhcg== IHRyYWRlZA== IHt7JA== IFN3ZWRpc2g= ICdALw== X1JFQUw= IHdhcmVob3VzZQ== dG9kYXk= LEw= b3Jw PHNlY3Rpb24= LWJy eW1l IFVzZXJTZXJ2aWNl IGxpYmVydHk= IG1vbWVudG8= KEltYWdl PHNpemU= U2No IGpvZw== aW9sb2d5 YXJlbnRseQ== IHF1YW50dW0= IEFidQ== IHJpbQ== IG1hbmE= Rm9udFNpemU= QnVpbGRpbmc= c3RhaXJz QUlMQUJMRQ== ICYn IHNlY3Q= IHNpZ2g= KGJhdGNo LklDb250YWluZXI= cG9sbA== IENvcnBz zrU= YXJ1 IEtheQ== LnJhbmdl X2NsaWNrZWQ= IFJvYmVydHM= Lk5ldHdvcms= ZmluaXNo LU1hbg== IGNvbGxlZ2Vz IEZpbmU= IikpLAo= ZmlsbQ== IHJlbWluZGVk IGdlc3R1cmU= b3V0aWw= IHRocmVhZGluZw== IG9iamV0 IHRvdXJz YWN0aXZhdGVk Lm1rZGly PXVzZXI= IHJlZGU= ZsO8 X1NZU1RFTQ== cHY= IGNvbmdy IG1hc3Nhc2pl IHByYWN0aXRpb24= VW5pdmVyc2l0eQ== IHRhYmluZGV4 0Jg= U2V0cw== IGNvdW50aWVz Z3Vlc3Q= ZmFu IHdvcmRlbg== LmRp 0L3QsNGH wr8= aWdEZWNpbWFs IHNob3Jl IGfDtg== IHJlcGFpcnM= IGhlbHBlcnM= IGNlbnRlcmVk T0xMT1c= IG1hcFN0YXRlVG9Qcm9wcw== IGNlbnRz PEE= IGV4cGVjdGF0aW9u T2N0b2Jlcg== IGJnY29sb3I= Y2FsZXM= LkNPTg== IFZlbA== IGNyeWluZw== LXNlYXNvbg== IGZ1bmN0aW9uaW5n X0xPQ0FUSU9O w7xzcw== YmVyeQ== UGFyYQ== b21pbmF0b3I= LWxl IGV0aGljYWw= aGFzaHRhZ3M= ZW1wbG8= IG7Dum1lcm8= KGFjdGl2aXR5 LlN0b3A= LnN0cmZ0aW1l SUxE IHRvZQ== CU5vZGU= IikNCg0K IFB1ZXJ0bw== IGV4ZWN1dGluZw== IEdVSUQ= IG9wcG9zaW5n YWxwaA== IGV4aGliaXQ= X2ZsYXNo IG1laWxsZQ== IGpzb25PYmplY3Q= SGVybw== YWludGVk X0RPTQ== IHdpbA== IHNsb3Bl IG3DpQ== IElyYXFp IG9yZ2FuaXpl CWpRdWVyeQ== SFVE c2hpbmU= Lndl IFNraWxscw== cG9uc29y IGNvbmNsdXNpb25z IHJlZm9ybXM= IHJlbHVjdA== bmFtZWQ= IE9saXZlcg== IC8vfQo= LWxvb2tpbmc= IGZvZw== IEhP IEZyaWVk IGluZXZpdGFibGU= IERhdGFHcmlkVmlldw== SG91cg== aWxsZXM= bG9naWNhbA== IGNvbm5lY3Rpdml0eQ== LnR3aWc= IEt5bGU= KGRzdA== LVNo IFN0dWRpb3M= KExldmVs LmpldA== X1BST1RP LWRlY29yYXRpb24= T1RIRVI= IHJlYWRpbHk= LlBhcmFtZXRlcg== IG11bHRpcGx5 IExJQg== YXJtZWQ= IHNvb25lcg== 5oQ= X0VT IGZvc3NpbA== IEFuYw== 4oCcVGhpcw== bG9kYXNo UHl0aG9u IGhpc3RvZ3JhbQ== d2VzdGVybg== IGluZmFudA== IGNvb3JkaW5hdG9y IG5pYg== Om0= IHJlc3BlY3RlZA== IGRlZmluaXQ= JlQ= X3BhZA== IFRyaWdnZXI= dGhhbA== IGltYWdlTmFtZWQ= IGJlYXRlbg== CXJj IFBhbGFjZQ== IGhhemFyZA== IGlzb2xhdGlvbg== X3Jj Y29udHJl T1VUUFVU IHJlaWdu IFBsYXRl QVRFUw== IGZsdXg= IHBhY2tz LmdldFNlbGVjdGVk IHBhcnRpY2lwYXRlZA== IG5lZWRsZQ== LWRlcHRo Ojo6Ojo6 LWxhdw== aW5zcGFjZQ== b25pdG9y PW5v IEF0b21pYw== IEJyYWlu RWRpdGFibGU= LXNj cmVkZW50aWFs IFBlcnJ5 a2ll IC0tLS0tLS0tLS0K LnN0cm9rZQ== KEludGVudA== IHVuaXR5 dW1sYWg= RnVydGhlcg== IHByemU= IHPDuA== 44KK IFBST0NVUkVNRU5U IEhvdXNpbmc= IGF0dG9ybmV5cw== IGNvbXBvc2U= YXR0ZXJpbmc= IldoYXQ= ZHJhdWw= IHN0cmFpZ2h0Zm9yd2FyZA== SW5zdGFudA== LkpUZXh0RmllbGQ= IHRyYWRlcw== 0LvQsA== IHsh IGxhdGVseQ== SU1H IEFsZA== IElOTkVS IGNhcnRvb24= LlNvdXJjZQ== RkFMU0U= IGRvdWdo ZmVu KHJlY3Q= RGF0YVRhYmxl Tmljaw== IEJ1dHRlcg== cmVhZHM= X2NvbW1lbnRz RU5W IENvbm5lY3RpY3V0 LUZJUlNU CQkJICAgICA= YWNoaQ== Lk1zZw== cmVjdGlvbg== IHJlbGF4ZWQ= IHNoYWZ0 IGVm IEFkZGluZw== IGJyZWFjaA== IO+8mg== cmFtYQ== IGNvbmR1Y3Rpbmc= ICg7 KGds IENBVVNFRA== YXNoaQ== IEZMQUc= IENvbW1lcmNl IElOVEVHRVI= aG91cnM= IFNjaG9vbHM= IG51Y2xl QWdhaW4= cHJvag== IHNldmVudGg= RU1QTEFSWQ== KG1vY2s= J10sDQo= X1NQRUVE PmZhbHNl IHNwYQ== IE5lYXI= 7JU= IGludHJpZw== X21lbWJlcnM= d2F2ZQ== IGFuYWx5c3Rz X09T ZWRpbg== IEZyaQ== IHJldHJpZXZlZA== UmVndWxhcg== X29icw== RVhQT1JU Jyl9fSI= ImNsYXNz X18oKA== YnVja2V0 IHN0cm8= IFBhdGNo eXN0aWNr ZnVsbmVzcw== YXBvcw== RGE= CQkJCQkgICA= IGVucmljaA== dW5vcmRlcmVk aG9sZQ== Q29uZw== PFByb2R1Y3Q= IEN1cnQ= KHRoZQ== X2xvd2Vy IGF2b2lkaW5n IGJ1eno= IHZpYWJsZQ== dWJh LWlz YXJlbA== IGFjdGVk LWRldGFpbHM= 4LiH IFRoZW9yeQ== IFB1bg== IEFub255bW91cw== Li4uIgo= w6hyZXM= 5Y+v IFZpc2lvbg== X3NlbQ== YXNoYQ== IGNlbGVicml0eQ== IGVuZERhdGU= IHBvcHVsYXRl IGN1aXM= cXVhbnQ= Zmxvb3I= IGdsb2JhbGx5 IGNydWlzZQ== IFN0YW5sZXk= IGJpa2Vz LmdldENvbm5lY3Rpb24= IHBvb3JseQ== X290aGVy YW1waW5n LiIpOwoK b2Rp X0FETUlO LmNvbG9ycw== IEdhbWluZw== Pic7Cgo= U1RSVUNU UVI= SURz KGFyZ3VtZW50cw== X2F1eA== KEV2ZW50 X1BSSVZBVEU= IFRyZWs= IGRvd25sb2Fkcw== bXV0YWJsZQ== X1NUUlVDVA== KHd4 IGRvbWFpbnM= anNweA== IFZpYWdyYQ== Q29tbWFuZHM= SnM= LmNmZw== Q29udGVudFBhbmU= IEVkaXRUZXh0 4KWN4KQ= QXR0YWNo IEFSTQ== cG9zaXRpdmU= IEdlbmVyYXRlZA== IHNlaXplZA== PTo= IGVsZWN0cm9uaWNz IEFwcENvbXBvbmVudA== LycsCg== LmVxdWFsc0lnbm9yZUNhc2U= RG9jdHJpbmU= ZGlzaw== IFBvbGl0aWNhbA== Q0hP PEY= CWhlaWdodA== IEJ1Zw== Lmxl aWto IG1pbGxpc2Vjb25kcw== IGNvbnN0aXR1 bWFn Lm5s LXJhbmdl YW5nZ2Fs Jyxb cm9wb2xpdGFu IMOc IFVD LmRlc2M= LUxBU1Q= ZnN0cmVhbQ== aWJpbA== IGZpZXI= VkVSWQ== IOuz SVJU X1VJ KGFicw== IGtuZWVz IHJvb2tpZQ== IFZhYw== YXJlbmE= Y29tbWVuZA== LVw= IFNVQlNUSVRVVEU= U29mdA== IHBhcnRpcg== d2VhbHRo 6KaB KGRhdGFzZXQ= IENsaW1hdGU= LXNob3c= IHJlbGlhYmlsaXR5 X2NodW5r 5Luj X3N0b2Nr IEVYRU1QTEFSWQ== 77iP IHbDrQ== IHNtaWxlZA== IGRyaWxs LkZ1bmN0aW9u IFNJ IHJlZ3Jlc3Npb24= LVg= IEphcg== cHJlZg== CXN1Y2Nlc3M= IEhpdGxlcg== IGluc3RpbmN0 IGZlbW1lcw== IGxvdmVy PAo= IG11bHRpcGxpZXI= cmls UmVzaXpl IEF1dGhvcml6YXRpb24= IEthbg== RGlzcGF0Y2hUb1Byb3Bz IGNyb3Bz dG9rZW5z ZWNu ZW50aWFsbHk= IElOVEVSUlVQVElPTg== ZmFrZQ== VW5kZWZpbmVk IEFL IFRlc3RDYXNl IHJhYg== IHRvcnJlbnQ= IE90 QmFycw== IGxlY3R1cmU= IGVuam8= IHJlc3BvbmRz IGluZGV4ZWQ= T2ZXb3Jr X2NoYWlu KSktPg== IEJlYXV0eQ== IGA8 IHRvdWNoaW5n IHwtLQ== CWZsYWc= bm9ybWFsaXpl IHRyYXBwZWQ= IGVzdGFibGlzaGluZw== L2J1aWxk QUo= Znk= LXJlYWN0 YXZu UklQVElPTg== IGt1dA== IEZhc2hpb24= IEluZm9ybQ== Y3VyaXRpZXM= PGJ5dGU= IFVrcmFpbg== IHN1Zw== IGNvbnNpc3Rpbmc= b29kbGU= LmN0eA== LlRvTGlzdA== IGNvbW1lbnRhcnk= IHRyYW5zZmVycw== IG5vc3Q= aWhhZA== IFVwcGVy IGNvbmZ1c2luZw== bWlzc2luZw== LWNs IGJvdW5kaW5n IGNvbmdyZXNzaW9uYWw= IHJldmVhbGluZw== ZGg= cnVw IHRyZXM= cmVwZWF0 LAoKCgo= X3RhYw== IGV4cGVk R2lybA== aG9yaXpvbnRhbA== ICIuLi8uLi8uLi8= KG9wdGlvbg== IHdlaXRlcg== CXNxbA== ID0+ewo= IGdhcmxpYw== IHJlcHI= IHJlcGxpZXM= KHByb3A= IHNwaXJpdHM= IGluc3BpcmU= IGJhc2VtZW50 LnJlamVjdA== IGhpbnRz IHBvbGxpbmc= CSAK X3JhdGluZw== IGNhdGg= YXZpZXI= IGNvbXByZXNzZWQ= IFZT XSc= IGp1ZGljaWFs IFRyZW5k dHJhaW5pbmc= RVNUQU1Q b2duaXRpb24= xIE= U0VOVA== dmVudGlvbnM= IGNvbnN1bHRhbnQ= dW1waA== IHVzZXJTZXJ2aWNl LE5VTEw= a2g= RGVhcg== X0JBRA== aXRhdGlvbnM= IG1ldGFwaA== J8Op YW5kaXNl LWZvbnQ= LmNoYXJ0 IHNn X0NvbnRyb2xsZXI= LmpwZWc= IFVMT05H CWdhbWU= KHNz IE1hag== CWdv IFNhZA== IEJlcmc= IE1pbmU= UGFjaw== IHJlc2lzdGFudA== IFJPTQ== IHBlZw== IFN0YW5mb3Jk IFlhaG9v IHNjYWxlZA== IGxhbg== PVtd Ii8+PC8= IHBsb3Rz LioK IHRyYXZlbGVk IE9zY2Fy Vkw= IGxpbmtpbmc= IHRpcmVz ICcqJw== IEJ1ZmZlcmVk ZXJp ICoqKio= IG92ZXJsb29r Lk5vbg== IHLDqXM= IGVneQ== 5bCP IGF0dGFja2Vy CQkJCQkJCQkJCQkJCQkJ LnN5bmM= QVNDQURF R3JvdW5k IGRlY2F5 IFRvbg== IGpld2Vscnk= IGJ5cGFzcw== IG1lbWJy Uk5B PFN5c3RlbQ== IE1lZGljYXJl KG5ldA== b3Np SEI= REVD e0VJRg== X2ZpbGw= IHRyYXZlbGxpbmc= b2JzZXJ2ZXI= IGNvbnN1bHRpbmc= UkVBVA== UGhhc2U= KGlp IFNVTQ== Pg0NCg== IHN1ZA== CWJhY2tncm91bmQ= IHNjaG9sYXJz LW11dGVk YXLDoQ== ID09PT09 IF9fX18= Q3JlYXQ= ZW5ldmVy L3dw IFZQTg== RXJyb3JDb2Rl KV0sCg== KGJ1aWxkZXI= IEVuZW15 U2Vuc29y dXNh IHRyaWdnZXJz IHBsYXlvZmZz X1JFUQ== ICh+ IEJhcnJ5 IHBlcm1hbmVudGx5 IFJVTg== IGJ1cmU= LkZhdGFsZg== IGNoaWNr CXBhbmlj cHNp b2th 6YCJ Pls= IHVuZGVyc3RhbmRz IEp1bmlvcg== IElORk8= PW15c3FsaQ== dXN0YWlu LXNvdXJjZQ== c2Vydg== IENSRUFURQ== LmF1 IHNlbGxz ICAKICAK RXVyb3Bl enc= cHJlaA== IE5TQQ== IHh5 4Li0 IEJleW9uZA== SW5zdGVhZA== Tm9uUXVlcnk= IGFyaXNl IGF2b2lkZWQ= LmVtcGxhY2U= X21vZGVscw== fSksCg== IGhpZA== ICZf LnBvaW50cw== LmdldFdpZHRo LkV4ZWM= IC8vLy8= IFNlc3Npb25z Li4uXA== IENvbG9tYg== IGFjY2VsZXJhdGlvbg== cmVzdG9yZQ== IGlsZQ== b2JpYw== PE5vZGU= IERY IEJlc2lkZXM= LmFnZQ== IENvbnRhaW5z TmF0aW9uYWw= IEltcGxlbWVudGF0aW9u IGVmZmlj IFJN SHk= IFdlZGRpbmc= b2tpZXM= IHJlY3Vyc2l2ZQ== IHByb3NlY3V0b3Jz LlNlbGVjdGlvbg== IEZvcm11bGE= QmVlbkNhbGxlZA== W2lp IEZyYW4= IHRyYWdlZHk= X0ZFQVRVUkU= mag= Y29tcGFzcw== IEJo PwoKCg== LndyaXRlcg== IEhvdXI= RGJDb250ZXh0 aW92 YW1vbg== cmVwcg== 6YM= CWZp J11d IERyeQ== LnJv IE9ic2Vydg== 5qCH Rm9ybWVy IEJhbGFuY2U= CWpzb24= IHByenk= SVNT KHNvY2s= IExJTkU= IGRlY2U= IGFsbHk= IHRlbmRlbmN5 RnVu IHNjaGVtZXM= IGludGVydmVu 5piO IGFkdmVyc2U= cXVvdGVsZXY= IHNhY3JpZmlj X3NpZGU= IG11dGV4 QUdJQw== IG9jY3VycmluZw== IENvbW11bmljYXRpb24= dW1hcg== 57yW IFRyZWF0bWVudA== LnBlcnNvbg== IExD IGVjaA== KCgi IERpc2Vhc2U= w6Rk IEFa LkFjY291bnQ= IGNvbnRpbnVvdXNseQ== RU5ESU5H IFJFVFVSTg== LXN0cmluZw== LmZpbGVuYW1l c3ludGhlc2l6ZQ== UmVzcG9uZGVy KG9wdHM= cmVncw== IG51ZXN0 UGVlcg== Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= IGdhdWdl IEtpbg== LnNjaGVtYQ== IGFycmFuZ2U= IEJsYWtl X1R5cGVJbmZv Q292ZXI= IEhhbXBzaGlyZQ== UGFwZXI= LWlubmVy dXRpbGl0eQ== IGNyb3Nzb3JpZ2lu Rk9S IGlnbm9yaW5n IERE YXZhbg== IHRyYWRpdGlvbnM= IGdldFN0cmluZw== IGV0aGljcw== IE1hdGVyaWFscw== REVTQw== IGVuenlt aW9sZXQ= IENoaXA= IE1jRG9uYWxk IG5lcnZl 54Q= Iild 5rGC IFN1Z2Fy X1NJTQ== anBlZw== IGRpc2NyZXRpb24= IFRO Ym92ZQ== IE1pbmltdW0= IEZvcm1Hcm91cA== IHdvcmtmb3JjZQ== IEV4ZWN1dGlvbg== ZXJyZXI= CSAgICAJ IHByZXNjcmliZWQ= LlRleHRBbGlnbg== T1BFTg== IFBC aW1pdHk= IEV4dGVybmFs wrBD IEFwcGxpY2F0aW9uQ29udHJvbGxlcg== IGJhcnI= aW1wbGljaXQ= X2RvdA== IENvbG9u Q09MT1I= LlByb2plY3Q= Kjwv LXhs IG9zYw== KHBhdHRlcm4= Jyl9Cg== c3VjY2Vzc2Z1bA== YWxvZw== U3R1ZGVudHM= XXN0cmluZw== YW50b24= YXR0aQ== Y2hlbWljYWw= LmluZg== KGRy OlVJQ29udHJvbFN0YXRl dG9JbnQ= XTwv 0LDQtdC8 IMW+ LkFjdGlvbkxpc3RlbmVy LlNFVkVSRQ== IFNhbHY= X1RSQU4= L2ludGVybmFs IHdlbGNvbWVk LmNvbW1lbnQ= bXV0YXRpb24= IEZBUQ== Lm9uZQ== IExBQg== In19 IFJvbA== aWV2ZWQ= IGFkdmVudHVyZXM= IGZ1bmVyYWw= IHNwb3VzZQ== KG9wZW4= IFJlYWR5 IHRvdXJpc20= YWRpbg== X2ZhY2U= 4oKB IG1pZ3JhbnRz IFB1cmNoYXNl Y29yZA== IE9VVFBVVA== KSkNCg0K U2VndWU= dGFicw== IGRvdHM= IG5haWw= Ym9ybmU= IGRlc2lyZXM= IHByZXZlbnRlZA== J109PQ== IHRpbWVseQ== SUNB U2Nhbm5lcg== IEx1Y2Fz IGdpdGh1Yg== J11bXQ== ZGlh Y29ub21pYw== IGRpZXNlcg== dW5kZXJz LkhhbmRsZXI= PyIs LmRhdGFi IGFkdmlzZQ== LmFuaW1hdGlvbg== IG92ZXJoZWFk IG9ic3RhY2xlcw== X2pvaW4= IG3DqQ== RmxhdA== LmRpc3Bvc2U= IEV4cGVjdGVk IGZsZXc= IGVtYm9k X3NsdWc= IG5hbWVseQ== IHdpdG5lc3NlZA== c29saWQ= LmxlZ2VuZA== UXVhbA== X3N1cmZhY2U= 44Op QW1lcmljYQ== IGFmZmlsaWF0ZXM= IFByb3M= X2V4dGVuc2lvbg== YmluZGluZw== U1RBTEw= LnJlYWR5 IGNvcHlpbmc= IEhlbmNl IGRpc2NvcmQ= X3NoaXA= UHJvcGVydHlOYW1l CQkgICAgICAgICAgIA== IGFjaGlldmluZw== IEJlYw== Wmlw U29tZXRpbWVz 44GL IGNvbnRyYQ== IHB1bmlzaA== IGluc3VsaW4= IGRpc2FwcGVhcg== X2VudW0= LmF1dA== IGhhc2F0dHI= YWZmZWN0ZWQ= c2hl JHRhYmxl a3Np IGxhY2tpbmc= IGRpc2NvdW50cw== U3RtdA== IEFyZ2VudGluYQ== IHVucGFjaw== IFJvdXRlZEV2ZW50QXJncw== ICc/ aW50ZXJvcA== IHNvZmE= IGR5bg== IEdyYWNl IGludGVncmF0ZQ== 2YM= IGRlbGF5cw== IEltcGxlbWVudA== UHJvb2Y= IGFwcGxpY2FudHM= IExlYXRoZXI= 7Ja0 IGVuam95YWJsZQ== U3Bpbm5lcg== L3o= IGZvYW0= IExhYm9yYXRvcnk= IHJlc2VhcmNoZXI= IENocmlzdGlhbml0eQ== IGN1c3RvbWl6ZQ== IGNpcGhlcg== IGRvZA== IHPDsw== QEVudGl0eQ== T05MWQ== aW52ZW50b3J5 IGNvbmNsdWRl IGN1ZW50YQ== IENvaGVu LWluY29tZQ== bWJI bWVudGF0aW9u IHZlcnc= dWRw QU1M LmNvbWJvQm94 Zmg= am9icw== RmlsZVN5bmM= IEJhcmJhcmE= IFNjYW4= Y3JlZW5zaG90 IE9ydGg= LnZpZXdEaWRMb2Fk IEFSUkFZ LEA= L2ludA== R2VuZXJhdGU= IGRlbW9uc3RyYXRlcw== IFplbmQ= 5YiX CXZvbGF0aWxl PXI= IGZt CWJ1ZmZlcg== ZW5hdGU= LkNvbWJpbmU= IG1pc2M= Y2hlbWFz IHB1cmVseQ== IGdsVmVydGV4 LlJlc3Q= IHJlY2FsbGVk IGZyZWVs IHNxdWU= VHJhY2tlcg== IFBocA== IERpc3RhbmNl IGJlYXN0 Q29tcGxleA== IGNvbnNpZGVycw== 572R dHJpYnV0aW9u IGNvbXBsaW1lbnQ= X2xpbmVubw== IE11dGFibGU= IHVuZGVm IEdlbQ== IGNvbXBvdW5kcw== LnV1aWQ= IGFub255bQ== IHN0YWlycw== IERiU2V0 d29ydA== IFNlbnM= LkJlZm9yZQ== IGVuZGZvcmVhY2g= IFRvZ2V0aGVy YXRpbGl0eQ== IG1vaXN0dXJl LSR7 KFRlc3Q= VEI= bXVzaWM= IGluc2lzdA== IGhlYWRsaW5l LkFuZA== UEFUQ0g= IFByZXBhcmU= IHN3aXRjaGVz KnA= IFll X2Ficw== LmhhbmRsZXI= IGFzc2lnbm1lbnRz UHJlZmVyZW5jZQ== RU5USVRZ IHBpcGVz IEFsZXJ0RGlhbG9n b2dyYXBoaWNhbA== IHBhdGlv IHdlYnBhY2s= YnBz TmF2TGluaw== Lk51bWJlcg== IEFybW9y IFBldGVycw== IERlc2M= ZHVpbm8= IEljb25z LmdldEhlaWdodA== IHRleHRWaWV3 CU5VTEw= YWxsb2NhdGU= fSR7 IFByaXpl LW51bQ== Lk1vdmU= 6L6T5YWl LmNhbWVyYQ== UHJvYmxlbQ== CXR5cGVkZWY= KHN0b3Jl IERJU0NMQUlNRUQ= IHN1YnN0YW50aWFsbHk= RkZG IGVwc2lsb24= IGluZXF1YWxpdHk= X2NoaWxkcmVu 5LiH cmVsdQ== UGllY2U= YW50cnk= YmFiZWw= dmV0aWNh IHN1cnZleXM= IGRldGVjdG9y CWFyZ3M= LlNlbGVjdGVkVmFsdWU= IGludGVyZmVyZW5jZQ== Li4uKQo= LlNUUklORw== IFR5bGVy IENhdGFsb2c= VmVydGljZXM= IFByb2plY3Rz IExlYmFu LiIpCgo= Lmtlcm5lbA== IHJpZGVz IE11dA== YW50aA== 0L7RgNC8 ZW5uaWFs LnRhc2tz LnNldFByb3BlcnR5 YXRlZ29yaQ== 5pyA L2Nvbg== YnJhY2U= IE5TRXJyb3I= J10pKTsK bGlzdGVk IFByZXZpZXc= QWN0aXZhdGU= IGN5Y2w= LWFjdGl2ZQ== aGFk VG9v IHJlZ2lzdA== bGljYWw= IHBvZXRyeQ== SW1wb3J0cw== 77yB77yB Ojw= IGNoYXJt IENvdW4= b2xsaWRlcg== IGh3 fWAK PWFyZ3M= IE5ldXJv aXRpY2Fs aWVuZW4= IERvdA== X09OTFk= RE4= IFBsYXlTdGF0aW9u IHN0ZWVw IHByYWN0aWNhbGx5 IGFwcGxpY2FudA== IGFyb20= YW5pYw== CWRpc3BsYXk= IHRlcm1pbmF0ZWQ= IGNsYXJpdHk= IE1lbnVJdGVt IEt1cg== aWpl X3dlZWs= KGRpY3Q= X3JlY29yZHM= IENvc3Rh IGtldA== RXh0ZW5zaW9ucw== IG5ldWtlbg== aW5zaQ== X2luYw== IOaW IGVpbmY= IFJpc2s= IGVsZXZhdGVk cGVycw== VURB IEtO IGxpbmVk IE1vcm0= KTsKCgoK Pn0K cGxhaW50 Z2V0VGV4dA== IGluZGl2aWR1YWxseQ== IGNoZWNrYm94 VVk= IExhbWI= IGR5c2Z1bmN0aW9u IExhcg== 4LA= IENyZWF0aW5n Jyk7CgoK IlRoZXk= bG9jYXRpb25z X0NPUkU= SW50ZXJhY3Rpb24= dW1ibmFpbHM= IFBhcnRuZXI= YnJpdA== IGxlc3Nlcg== IFNsb3Q= c2V0QXR0cmlidXRl IFdhdmU= LnBv L3N0b3Jl IGJyb3dzaW5n X3Bk c3VtZQ== c2Vk Q3VydmU= IHBsYXNtYQ== IHN1c3BpY2lvdXM= 7J24 IEJhaA== IEV4cGxpY2l0 X0ND LkNsaWVudFNpemU= XFZpZXc= IHN1YnN0aXQ= bG9vbg== IEdBTUU= IEJyaWQ= m+W7ug== X1VzZXI= IHNxdWFyZXM= Zm9uZQ== IHNhY3JlZA== dWdocw== XWludGVyZmFjZQ== IFRocm93 IEtpcms= IGVtcGlyZQ== IGFzc2Vzc2Vk VGF4 IEhlYXZlbg== LWJ1ZmZlcg== X1NUQVRJQw== w6luw6k= LWJvcmRlcmVk IHB1bmN0 KG1vZGU= IGtlaW5l U2VudA== IENhbGN1bA== IEV2ZQ== IHN0eWxpc2g= IG9pbHM= LlRlc3RDYXNl IHRyYWRlbWFyaw== IGxpdGVyYXJ5 IGNvbmNlbnRyYXRpb25z IFJlbGF0aW9ucw== KENsYXNz IHN0ZGlu IHbDpg== YmFja3Vw LlZFUlNJT04= LkF1dG9TY2FsZURpbWVuc2lvbnM= c3RhcnRlcg== VHJhbnNhY3Rpb25hbA== LXBhbmVs U3R1ZGlv a2M= IENoYW1iZXI= IFNwaWVs IHJobw== 2KfZhA== ISc= LkF0dHJpYnV0ZXM= IG11cmRlcmVk YXBldXRpYw== IGludGltYXRl IHRleHRGaWVsZA== IEJ1ZmZhbG8= ZHVtbXk= IiU= IExpYmVydHk= b2Jhcg== IFRhbms= IFBvcHVsYXI= ZXJ2aXNvcg== IEluaXRp IE1hbGw= IFByaW9y Q0FQ IENsYXk= IENlcnRpZmljYXRl LkxvY2s= LXN0cmlw LWRyaXZlbg== L2FsbA== IE1lc3NhZ2VCb3hCdXR0b25z X1NFQ1JFVA== X3Bi IHJhdHM= 4KS+4KQ= IG50 LlJvdXRlcg== X3RvcGlj IHRlbm5pcw== IFBVQkxJQw== IEFjdGl2YXRlZFJvdXRl ICcsCg== IGNvc3R1bWU= IGpva2Vz LkhhbmRsZQ== CWJ5dGU= IGZsYXZvcnM= KGNj IHBlcnNvbmFz CWltYWdl IE5hemk= IGdyYW1tYXI= IMO6bHQ= IHZhbHZl IHZpYw== IFJhY2hlbA== X2ludmFsaWQ= UHJlZnM= c3RkaW50 KHJvdXRl IGh0bWxzcGVjaWFsY2hhcnM= IHBlb3BsZXM= cGxpbmU= IG52 IFF1YW50 b3BwZXJz IGN1cnJlbnRVc2Vy IENhdGFs IHJlY29uYw== IGNvbmp1bmN0aW9u bHg= YW1idXJn IGluZmx1ZW50aWFs ZGFuZ2Vy aW5kZXJz ICVAIiw= LmNvbmZpZ3VyYXRpb24= b3NvbWU= LmlkZW50aXR5 IHBpY2tlcg== bm9zdA== IERJWQ== QXVndXN0 YWJsbw== TGVhZg== IFJlY28= Y2tv RE9D IEhlcm0= OmFueQ== IEludGVydmlldw== IFRleA== eGZl KHdvcms= IGxlYXA= SGVhZGluZw== IHF1YXJ0ZXJz XEJ1bmRsZQ== cmVi UGVyaGFwcw== IEdtYkg= QmlydGg= CXN1bQ== IFdhdHNvbg== Lm5pbA== 56E= e30KCg== aWNhaWQ= R2V0dGVy Im5hbWU= ICINCg== X25vbmU= em0= YWN1dGU= dWVzdG8= IHNvdXM= IHJlYnVpbGQ= IG5ld3NwYXBlcnM= IEhheg== IGtpdHM= aWZv Qmx1cg== IHN1aXRlZA== LUlu 4K8= IEtlaXRo IE5vcndheQ== SU5JVA== aXJlY2Npb24= aWV0aWVz X3VzYWdl IERvdWc= cmlzZQ== IHRyaWxsaW9u aW1pdGVk IFJFTA== YWxpYw== IGNyaXRpY2l6ZWQ= dGhlb3JlbQ== IGNlYXNl IHNpZGV3 IFRlcnJ5 IHN1YnNpZGk= IGZpcm1seQ== IGF3cw== IGhvdHQ= IGRyZXNzaW5n YmFkZ2U= IEFwcGxpY2F0aW9ucw== 6L+U5Zue IGxhdWdoZWQ= IGhvYmJ5 IG11c2ljaWFucw== ICou LnBsYWNlaG9sZGVy IGNvdW50ZXJz IENhcGl0b2w= U0RL IGhlbG1ldA== YW5kYm94 cXVpdA== IGNyaW1pbmFscw== IHRlZW5hZ2Vy KHVwZGF0ZQ== R2w= LnNlbGVjdGlvbg== IGRpc2NoYXJnZQ== IHByZXNlbnRpbmc= dWZhY3R1cmVy X1VOS05PV04= IHN0cmVzc2Vk 5Zmo UHJvdG8= X2NvcnJlY3Q= aGF1cw== IHJlbm92 IGZpcmVhcm1z IHRlY2huaWNhbGx5 LWJyb3dzZXI= IGNhbmR5 U3Ryb2tl IGV4ZWN1dG9y IG9jY3VycmVuY2U= IElQdg== X0lOVEVSRkFDRQ== IFJldHJpZXZl LmJhZA== RXhjaGFuZ2U= TmF2YmFy IEtpZA== KGdldEFwcGxpY2F0aW9uQ29udGV4dA== X1NUT1A= IEJvc3M= TGlzdGVuZXJz IHNob290ZXI= IEFsYg== w6RjaA== IHBpeA== LmtleUNvZGU= YWxvbmU= IGFic3VyZA== IEN1bQ== IE5ld3RvbnNvZnQ= aWt0 IGxhdWdoaW5n IGNhcGl0YWxpc20= cmVlTm9kZQ== VHg= X1FVRVJZ LlNsZWVw KGxvZ2lu V2ViRWxlbWVudA== IGNlbGVicmF0aW5n IGRlcHJlY2F0ZWQ= IG1hYXI= IGFydGlzdGlj X0FTU09D IEJvcmRlclJhZGl1cw== CXdw IHN1cnZpdm9ycw== SW5uZXI= LXJlZA== IHByb3NlY3V0aW9u X3Bw KCI8Lw== IF49 IGxhbQ== IFRyYWRpbmc= ZmxhcmU= RGV0ZWN0b3I= TUY= IEVtZXJnZW5jeQ== IEVhZ2xlcw== cXVhZA== IEluY3Jl cGxpYW5jZQ== XE1pZ3JhdGlvbg== IHVwZ3JhZGVz Q1BV YWdnaQ== ZnByaW50Zg== aWdpb24= IGJlYXV0aWZ1bGx5 IGRyaWVk X0hJR0g= IGdwaW8= TVND IERlcHV0eQ== IERlY2w= IHRyZWFzdXJl c2dpdmluZw== X3NpZGViYXI= IGFwYXJ0bWVudHM= IFdy IGJvYXRz IGJvcg== Lmxhbmd1YWdl IFVp bGl0 ZnJt YW5jaWVz IG1hc3Nlcw== IEFzc2lnbg== IFBPTA== IG1hcERpc3BhdGNoVG9Qcm9wcw== IGJyYWNrZXQ= IFBhcA== IENp IEludG8= IHRlYW1tYXRlcw== IGZvcmFsbA== dWx1aQ== IENhcm4= X0lOUw== YXppb25p Y2Vw IHRvdXJpc3Rz LWJsdWU= IExlZA== IHBlbmV0 IEZv IGltYWdpbmc= cHJh IHNsYXZlcw== b2xlcmFuY2U= IGluY29ycG9yYXRlZA== Jiw= dWFibHk= IEthcA== WG1sRWxlbWVudA== IE11ZWxsZXI= Q2hhbmdlTGlzdGVuZXI= IEhvbGlkYXk= CSAgICAgICAgIA== RmxleA== CVVzZXI= Il0pKQ== X3N1Ym1pdA== LmJvbGQ= IGxvY2tz IEN1YmE= dWRzb24= SG9vaw== IFdhcm5lcg== X3N0YXI= Ij0+JA== IGNvbW1h dW5jaGVja2Vk Z3JhcGhpY3M= cm9ycw== R1JPVU5E KHB1YmxpYw== IGN1c3RvbWl6ZWQ= IEFya2Fuc2Fz IFJldw== IGV4cGlyYXRpb24= 15U= IEN1bA== IG5vbnM= LkZpbHRlcg== IHNlbmF0b3I= X2RlZmluaXRpb24= YXNoaW5ndG9u eW1waA== L0o= IGZ1c2U= cmFtaWQ= IFN1cHBsaWVy IGF1dG9jb21wbGV0ZQ== IH0pLA== LiIKCgo= X2Z1bmN0aW9ucw== CXRv LmV2YWw= IFRPYmplY3Q= UmVmZXJlbmNlcw== IGhlYXRlZA== SEFM ICkpfQo= fSQ= IEJhcnI= X1VOSVQ= KyQ= IGdldFZhbHVl aXBlZA== Y2hpZWQ= KHZt Y3Vl X2ludGVnZXI= X2NvdXJzZQ== dGhpcmQ= IHJldmlzZWQ= KiovCg== X0RJUkVDVA== T3V0T2Y= KCIo IEZlZWw= IHJlYXNz IHN1YnRpdGxl cGVyaQ== bmY= IGVuam95cw== IHRyZWF0cw== KXRoaXM= LXRhYnM= YW5jZXJz IGNvbnRpbmVudA== IGNhcmRpbw== U2Vy LnF1ZXN0aW9u IHBocmFzZXM= VmFsaWRhdG9ycw== IHBvcHVs IGzDrQ== c29uZw== X0lOVEVSTkFM IGFkdmlzZXI= IHB1eno= IGFtYml0aW91cw== IFRvYg== IERQ IHByZXNpZGVuY3k= IHN1cnJlbmRlcg== IHdhdGNoZXM= X2JpbmFyeQ== IFNvb24= IGNhbmFkYQ== KCIiKQo= XT0n IEJyYW5kb24= ZXBzaWxvbg== cnc= LmFkZENoaWxk LkNvcHk= UHJpbmNpcGFs UGhvdG9z IG1hcmdpbmFs IGJhc2ljcw== ZWluZw== TXVzdA== X1N0cmluZw== IG9sZQ== TWFnZW50bw== LmN1c3RvbWVy KHByZXY= 4Lil IGxveWFsdHk= Q29n IHByb3RvY29scw== IENvbXBhbmllcw== IHRoZW9yZXRpY2Fs IGFjY2Vzc2luZw== IFplbg== Lm9uZXM= YXR0aWNl X3dvcmxk emVz IHRhdHRvbw== IG1lbm9z IGludGVyc2VjdA== Il07Cgo= YmVsaWU= IGluYWN0aXZl LnJlYWRsaW5l LWxhYmVsbGVk LmRvbmU= bGlja3I= IFdPUks= IGRlcml2YXRpdmU= IGRhdGFiYXNlcw== 4oKC IHN4 LmlzQXJyYXk= IHlz IHBhZGE= IEJ1bGxldA== KGAv aXNBY3RpdmU= IENHU2l6ZQ== KGVxdWFsVG8= IENvbHVtYnVz IG1hcnJ5 REVW X2xpbWl0cw== cm9uZXM= SUFT IHRhdQ== bWlubw== X1dyaXRl IFdpbmU= IFtbJw== IFB1bGw= cml0ZXJz cmllbnRz IHNoaWZ0aW5n dXBw X1RJTUVS IENvbmRpdGlvbnM= 4bql IE9yZGVycw== IFN0cmVuZ3Ro 5omA IHZhbGlkaXR5 IGZvdA== ZXR1cg== IGJvbHQ= 5YaF IEFsb25n b3NoaQ== IGFzc3VtcHRpb25z IG1hZ2F6aW5lcw== X1NQSQ== IHB1bnQ= X1BST0RVQ1Q= IHJlbGF5 IEphdmFzY3JpcHQ= LnRl LWVz IHdpZGdldHM= KGZz PEl0ZW0= X2V4dHJh IHJlY3J1aXRpbmc= RXQ= IG5lY2Vzc2l0eQ== cHc= IG5vdmVscw== dXNzZWxz Q3JlYXRvcg== IE1WUA== IE9D dGhvb2Q= Y2xpZW50cw== KSkq IGNoYXJhY3Rlcml6ZWQ= X1NFTkQ= dXRp VHk= LmZyb21Kc29u QFNlcnZpY2U= 44KC Q2hyaXM= X0lz IEpvaG5ueQ== IGNsZWFuZXI= IEluaXRpYWxpemVz VU5L KGF4aXM= 0LXQtw== aWV2YWw= IFdhcnJpb3Jz fSko RE1J 4pmA IFRyZWFzdXJ5 IGZlYXM= IHNsYQ== X0VOVU0= bGhz IEluc3RpdA== aXBwZXJz TGluZWFy UmVhZGluZw== cXVpcmllcw== LWNlbGw= Y2hyb21l LlNlYXJjaA== SU5B 57G75Z6L IAogCg== IFNhbXVlbA== IG1pbGxz IGRvbmF0ZQ== IEdlbw== KHJvd3M= IHNoZWVw IMOpbA== 5L2T IGJlbQ== X1VOVVNFRA== IFJDQw== IGludHJvZHVjaW5n YXR0YQ== IFByaW9yaXR5 IEZC IFNlcmdl PiI7 YXRjaGluZw== IEtub3dsZWRnZQ== CVRoZQ== O21hcmdpbg== bGVzc25lc3M= b3BhcmQ= dW1hdGlj KCkpKTsNCg== IGZhbHM= KGNhY2hl VHlwZUlk 6YCa X2Nob2ljZQ== IEdvdGg= IFNpdGVz TUc= X2JvcmRlcg== SW5kaWNlcw== Q29tcGFyZXI= IFJlZGlzdHJpYnV0aW9u IGNsb3NldA== IHZlcnNhdGlsZQ== SW5wdXRz KioqKioqKioqKioqKioqKioqKio= IG9iZXNpdHk= cXVpeg== Z3Jh KGdsb2JhbA== 5Yqh IGNvbGxlY3Rvcg== IGtvcg== b3ZhYmxl QURD IEV2ZW50SGFuZGxlcg== Lm5j IHBsYXliYWNr aWVudG9z X3Blcm0= X1dBUk5JTkc= IE9seW1waWNz Lm5vcm0= IEJyb2FkY2FzdA== X3NtYWxs ZHJpdmU= Lmlsb2M= IHR5cGVk TUVN X2NvbnM= RE1FVEhPRA== IGx1bg== LmRpc3RhbmNl KHBhcg== cG9vbg== IGJhc3Q= YWN0aXZpdGllcw== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== Og0KDQo= U0VS KSYm X2xzdA== IFBvbGlzaA== IGtub2NrZWQ= IGZydXN0cmF0aW9u YXVrZWU= IHBob3NwaA== aXF1aWQ= X2NvZWZm 5q2k TGF0ZXN0 IER1c3Q= VGlwbw== IG1haW50YWlucw== IG1hcnNo aW5jaW5u bGJs Q2FyZQ== IG5laWdoYm9yaG9vZHM= X2dwaW8= IEFyc2VuYWw= RGVt IFdoZQ== X2hvb2s= IGxkYw== IEhhcnBlcg== IEJlcmtlbGV5 IGdyYWR1YXRlZA== UGVyY2VudA== IGFycml2aW5n IEFkdmVudHVyZQ== KHNjb3Bl KCcq cXVhcnRlcg== IE1hcmll U3BlYWtpbmc= X2NvZGVnZW4= IGltbXVu Y2FzdGVy 44KM 5ZWG IERpbWVuc2lvbnM= LnJlY29yZA== IHRleHRv IE1pY2hlbGxl UGVuZGluZw== KGJ5 X1BBUg== dWNodA== YmVl LlRocmVhZA== YW1waXJl a25vdw== IENsaW5pY2Fs IG1hcmdpbkJvdHRvbQ== IGRpc3Rpbmd1aXNo LkZ1bGw= LnVuZGVmaW5lZA== IFNlcXVlbGl6ZQ== IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== IGVkdWNhdGVk X09WRVI= 5bqP IMKgIMKg X2VhY2g= IHVyZ2U= ZGVwYXJ0 IGRvbm9ycw== IEF1 IGJpbGxpb25z IGJlbG9uZ2luZw== X2FnZQ== X0ludA== IHN1YnN0YW5jZXM= bWFjaGluZQ== ISEhCgo= IGpzb25pZnk= aWJiZWFu IENhZA== IGVuZFRpbWU= IGN5Y2xpbmc= IFVJVGV4dEZpZWxk IGxldmVyYWdl IHZhbmlsbGE= ZWF0 TGF1bmNo KHB0 c3RhdGVz IENvbnRyb2xz IFJlc3BvbnM= IEpha2U= IGFzbGVlcA== Zm9ydHVuYXRl Lm5leHRMaW5l U2l6ZU1vZGU= 7J28 VGVzdGluZ01vZHVsZQ== R2VybWFu IEludmVzdGln LnJldmVyc2U= IEJBQ0s= KERhdGVUaW1l IG5vbnByb2ZpdA== IEV4cGVjdA== IHRhbnRv J10pLA== CXRoZQ== TXVsdGlwbGU= KGdldEFjdGl2aXR5 X1dBSVQ= IGrDoQ== ZGVjb3I= bGV2YW5jZQ== IEdpdEh1Yg== bWluYXRpb24= X3F1YW50aXR5 LlNjYW5uZXI= IExpb24= 6ZSZ6K+v IGRyZQ== IHRhbnRyYQ== IGNvbnRlbnRUeXBl IGZpZA== X2FsdA== TlNJbmRleFBhdGg= LXBs 5YyW IGFudGliaW90 dGFibGVz YWNpYWw= IFJlZ2lzdHJ5 IG9saXZl aWdlcnM= IHN1YnNjcmliZXI= X3ByZXM= IFN5bnRheA== IGxvdmVycw== LkJ5dGU= b2xkZXJz X2ZvcndhcmQ= YWx3YXlz Q2FwdGlvbg== UHJpdg== IFRhbXBh aXNhdGV1cg== LWxhYmVsbGVkYnk= IFRvU3RyaW5n IOyCrA== IGluaXRpYXRlZA== V0Y= IGluc3RpdHV0aW9uYWw= aW5qZWN0 IFNjcg== IGRvY3RyaW5l IHNwYWNpb3Vz aXN1cmU= IEFuYQ== InRpbWU= ZXNzYWdpbmc= IGNpZA== IE5hbg== IGluY29tcGxldGU= VEFH LWJ1aWxk RGVjZW1iZXI= IHJlc2lkdWFs KFBETw== IExpc3Rlbg== IGdseXBo IGdhcHM= bmVh LlJlY3Q= IHNhdQ== IFBob3RvZ3JhcGg= IGV4ZWN1dGFibGU= IEV4cGVydA== Q29yb3V0aW5l X3NpemVz IE5M LmlzVmFsaWQ= KTt9Cg== LXJlZw== IGNpdGluZw== Y3dk IE90dGF3YQ== IEJhdHQ= IHJlbmV3YWJsZQ== IHByZWxpbWluYXJ5 IGFzeWx1bQ== IHdyaXN0 IHV0aWxpeg== IGRldGVudGlvbg== RmFzdA== IGFuZ2U= aW5jaW5uYXRp IHN0ZWVyaW5n IE5hTg== aW9zaXR5 L3BhZ2U= IOi/ c3Rlcm9s IGRpc2c= KERC IERFU0NSSVBUSU9O IF8k IG9ic3RhY2xl IGJpemFycmU= IGV4dHJhY3Rpb24= X2V4cGVjdGVk IGxvc2Vz IENlbGVicg== IGh0bWxGb3I= IGV4cGxvaXQ= 0L7Qu9GM0LfQvtCy WFla IG1hZ25ldA== YW1wZWQ= IGF0b21z U291cmNlcw== cGVjdGl2ZXM= 0YHQu9C4 ID0NCg== IGRhcmU= IFdhbHRlcg== IGJyaWdodG5lc3M= IGFubm90YXRpb25z 648= aXNrZQ== U2NoZWR1bGU= LmltYWdlcw== cm9zc28= ICIuLg== Z2FtbWE= IGluc3RydWN0b3I= IG92ZXJ3cml0ZQ== LWFt IGRldmFzdGF0aW5n IFNhaW50cw== IGhz IGJvbnVzZXM= JG91dHB1dA== aWpk KEFjdGlvbkV2ZW50 bW9uaXRvcg== IG1hdHRyZXNz SmFudWFyeQ== Lmpw IGNhcmFjdGVy IGltcG9zZQ== X3Jlc3Q= IFNpZ25hdHVyZQ== IGNvcm9uYXZpcnVz 44GK X2NvbXBhcmU= TWVhc3VyZQ== aXRhdGVk ZWxpams= aWdvcw== ZXNhcg== IHJ1c2hlZA== bWV0cnk= X1NFUEFSQVRPUg== X1dF X0FUVFJJQlVURQ== IHlhbWw= IHNwZWNz IFJhaA== cGhlcmlj IEludmVzdG1lbnQ= w6RsbA== IGFwcGVhbGluZw== IHZpZXdwb3J0 56k= IG1hcmdpbkxlZnQ= IHN1YnRyYWN0 IEVESVQ= CUFycmF5TGlzdA== Z3JhZGluZw== IEZhaWx1cmU= YXNwZXI= RUVL KG5vdw== PG9iamVjdA== IEFsaWdubWVudA== cGxlYWRv cXR0 KEVSUk9S IElOVkFMSUQ= IHVzZXJpZA== cmFpc2Vz SURJ IHZhcmlhbmNl IE5pbA== L2RlbGV0ZQ== X01BSU4= LlRva2Vu LkNhdGVnb3J5 PikK Q29sbGlzaW9u IEdyZWF0ZXI= IFJhY2luZw== YWxhbg== IG1vbmV0YXJ5 LG5ldw== IFNvcnJ5 LkVuYWJsZQ== IEluc3RhbnRpYXRl b2xsZW4= 66m0 IENhbGxpbmc= X2hvdXI= QURB IHNoeQ== KSoq ID09Pg== IGVzcGVjaWFs IGludGVycHJldGVk IT0i IHBoYXJtYWN5 LnNpbmdsZQ== IENpYWxpcw== IHBhcmFz LnRvVXBwZXJDYXNl IERlbW9u UHJpbWU= IHJhbmtpbmdz QWRkaW5n X0hBU0g= IEV4YW0= 2qk= IFZpY3Rvcg== T2theQ== Il07DQo= IGZvcnR1bmU= IEZFVENI ZXhwYW5k LkludGVyb3A= IGJhcm4= 5raI dWV2bw== IHNwZWN1bGF0aW9u 4pSA4pSA4pSA4pSA IE51 IEJsdWVz KGZuYW1l IGluaGFiaXQ= IFwiJQ== Q0VT dWxhcmlv X2Ny IHZhbGlkYXRlZA== IG1pZG5pZ2h0 YW5raW5n IGluY29ycG9yYXRl IHB1cnN1aXQ= RVhQ cHJpbWU= UGlk LVVT IE51cnM= IFdoZWVs 6Zg= IGlucA== IHN1cHBvcnRpdmU= Lm1lbWJlcg== IFNob3Q= LkNoZWNrQm94 IGFmZmlybQ== VG9y RnVsbFllYXI= IGNvbnNpZGVyYWJseQ== Y3JlZGVudGlhbHM= X29wdHM= Um9sbA== KHJvdW5k IGNvbWVudA== X1VBUlQ= IGV4dGVuZGluZw== Ukc= cmVzdWx0YWRv aXR1 LmdldFNlc3Npb24= IGF0dHJhY3Rpb24= JkQ= JGh0bWw= IEplc3NpY2E= IEFzc29jaWF0ZQ== YcOx X2Vk IExhZw== IG9yaWdpbnM= KCkpLT4= YWRkRXZlbnRMaXN0ZW5lcg== SUFMT0c= 5ZCm LkNvbXBhcmU= QWxidW0= IEt1 PFE= YXJnZXN0 IHByb2xvbmc= IGNvbmZpZ3VyYXRpb25z IGFjY2lkZW50YWxseQ== X3Bob3Rv ICcnOw0K IHZlcnNl Qm9i IGZhcm1pbmc= ZGVsaXZlcnk= IE1hY2s= IHVzZVNlbGVjdG9y LmJvb3RzdHJhcGNkbg== a2VlcGluZw== ZW55 LnVwbG9hZA== IE1FVEhPRA== Y3JlYXRvcg== PF8= IEVhc3Rlcg== Li0t VUlCdXR0b24= 44KJ b21ldGVycw== IHNoaW5l IGhvZ3k= XHM= IGhhcm5lc3M= LkNlbGw= IGxpZnRpbmc= IGNvbWJpbmVz IE9jY3Vw ZXhjbHVkZQ== cGF0aWFs IHJlc3Bpcg== X2ZpdA== IGZpZnR5 IE1vbA== IHR1bmVk LWRpbWVuc2lvbmFs IHFz IHRvcHM= PiI7Cgo= cXVpc2l0ZQ== Y2hhbm5lbHM= L3Jlcw== IEFuYWx5dGljcw== LmFwcGNvbXBhdA== L3Rv IG9uRXJyb3I= KGF0dHI= SVJN IHJhZ2F6 LWFz LlNlY29uZA== b3JpZW50ZWQ= IGRvbm4= IGxpZ2h0bmluZw== Zmlk IFBsZQ== 44G+44GZ dHJv LlRydWU= T2JzZXJ2YWJsZQ== 15k= dW1iaW5n IHByb3NwZWN0aXZl LWZpbHRlcg== IHB1cnN1YW50 KHBvaW50cw== LkJpbmQ= IHBhbG0= Y2xlYXJmaXg= w7Zz IEdvbno= IHdlYWtlbg== RHJpdmU= ZW5pZG8= bGxk b2JveA== YW5lYW4= R290 5L+d UmVnZXg= 5oM= IHNhbGFk YXNzaXM= Im5ldA== aW5oZXJpdERvYw== IFJW cXVpZXI= IGNsYXp6 xLHFnw== b3N0ZXJvbmU= IGFpcmxpbmU= Lmxpc3RkaXI= IGRvd25sb2FkaW5n IFBhbG0= d2F1a2Vl Jmx0 LkJM X0lOTElORQ== b2Zmcw== PDwo X25ld3M= IGNoYXNl Lz48 IGV1cm9z IEVneXB0aWFu IFN0YWlubGVzcw== X0JPT0w= IEd1aWxk IER5bmFt W2luZGV4UGF0aA== IO8= IG1lbW9yYWJsZQ== IENoYW1waW9u UmVzb3VyY2VNYW5hZ2Vy LkxvZ2lu IEZvcm1lcg== eXBlZA== IGxsZWc= OyIs RFdPUkQ= IHRheGk= IGJvbWJz cmFo LnRhZ3M= X3Rlc3Rz c3RvbmVz 4oCdKQ== W2c= cnR5cGU= IHZ1 IGhvc3RpbGU= Q2hhcnM= IFBhdHJpb3Rz L3N0YXR1cw== PEI= IEluY29tZQ== IERhZA== IHBhdHJvbA== X0NIQU5HRQ== IHVwZ3JhZGVk IGNoaW5h c2V0cQ== U3RhcnRlZA== LlVuZGVm IGNoZWNrc3Vt IGZydXN0cmF0ZWQ= e28= IGVuZg== IHdvb2Rz IEFueW9uZQ== RW5jb2Rl IFF0V2lkZ2V0cw== YXJlYXM= IHNoZWVy c2tp ZW5kcG9pbnQ= X1Rlc3Q= U291cA== fn5+fn5+fn5+fn5+fn5+fg== KGZpbGVz CQkJCQkNCg== LnNwYXJr IHZhbHVlZA== ICUK LmNvbnRyb2xz IFhDVEFzc2VydEVxdWFs IGZhbWU= IFJpYw== RE9U IEFsYmVydGE= 5L2/ b3NhbA== LldlYkNvbnRyb2xz IC0tLS0tLS0tLS0tLQ== IE1pcw== IFNZUw== Tm9ubnVsbA== PWl0ZW0= IGV4cGlyZQ== RGVjb2Rl X29wZXJhdGlvbg== IFZhbGlkYXRvcg== LkNFTlRFUg== dWZmcw== Km0= IGF2YW50 5qyh 4oCcWW91 LnBlcm1pc3Npb24= Li4uKQ== IExpYw== X2Nvb3Jkcw== Lm5vbWJyZQ== Y2xv LkludGVybmFs IENobw== X3N3 CUls Y2xr IGNhc3RsZQ== KGxheWVy cGl0 IGd1aWRlZA== IOKWiA== IHN1cGVyYg== IHN1cHBsZW1lbnRz X2NlbnQ= IHBlZWs= SU5BUlk= LkNvbnRlbnRBbGlnbm1lbnQ= ZmFsbHM= IikpOw== V2FsbA== KS4NCg== IERhbm55 aXJtaW5naGFt SUFMSVo= KGNyZWF0ZQ== Iklu U2VydmljZVByb3ZpZGVy IHByaWNlZA== bWFjcm8= YW1hYw== LmJveA== LS0tLQo= 44Or IFN1aXQ= dXJzdA== YnJ1 b3VybmFscw== bnVtZXJv X18oKQo= RGFz IE1pdHQ= dWRlcg== P1w= ZnU= W0I= IDopCgo= KGludGVy YnJhaW5z IGF0dGl0dWRlcw== VmVyaWZ5 IHNpZ25hdHVyZXM= YWNrQmFy IGdk SmFjaw== LmNhdA== IHp6 d2FyZg== RlRFUg== Iik7CgoK QWxpdmU= SUNMRQ== IFdoYXRldmVy IG91dGxpbmVk c3ByaXRl 0LXQsg== X0FC X0RFUFRI IGNydXNoZWQ= YWFh KGV2 5py6 QW50aQ== SUNP aXNFcXVhbFRv LnN1bg== aWN1bG8= c2FsZQ== X2hleA== IFZr YXB0b3I= VW5pb24= IERpc2NvdW50 bGlzdGE= LlVuZGVmT3I= IGF1dG9tYXRpb24= Tm9y 5a+5 5Y+C5pWw IHJlZmxleA== IExhdXJl LnNob3dNZXNzYWdlRGlhbG9n LnRlbXA= IGFrYW4= IF9fX19fXw== LklzVHJ1ZQ== QVJFRA== YWdsZQ== RW5lcmd5 IHF1YW50aXRpZXM= 4oCZw6k= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== IGNpdGl6ZW5zaGlw bW91dGg= IGluYXBwcm9wcmlhdGU= IE91dGRvb3I= V2hpdGVTcGFjZQ== QW5vbnltb3Vz bG9hZHM= d2ViRWxlbWVudFByb3BlcnRpZXM= VGVu IGFjY2lkZW50cw== IGFkdmVydGlzZW1lbnQ= IFllbWVu KGNhbGw= IHNsYXZlcnk= 0YHQvw== IExhbQ== X0JJVFM= b21lZ2E= IE9sZQ== IGtpZG4= X0Fu IFJhaWQ= Q3JlYXRpb24= c2F2ZWQ= IHByb3BvcnQ= V0FSTklORw== XFA= IHB3ZA== RGF0YVJlYWRlcg== aXNjaGVy YWRlb24= IFByZWRpY3Q= IHJlYXNvbmluZw== IGRlc3Ryb3lpbmc= SGVs KmQ= IExlZ2lzbA== X1By CQkJICAgICAgIA== IHN5bXBhdGg= IGNoZXNz IG1hbQ== OmhvdmVy IGNvbnZlcnRz IHBlbGE= IHByb2dyZXNzaW9u ICJfIg== IEdpbGw= CXNob3c= IHN1cHBvc2VkbHk= YWNjdXJhY3k= ZWxpbg== IHVuZm9sZGluZw== IEh5cGVy IHdhbm5h IHVwcw== KCM= IENyaW1pbmFs KFBvaW50 YXRMbmc= YWN0bHk= IGNvbnRyYWN0b3Jz J119 ZHJhdWxpYw== w7NkaWdv IFRU IFdpZGU= IEFSRw== X2lj RkxBR1M= U2Nob29s IGNsZWFyaW5n LWJlaW5n PXtb LGNvbnN0 bWFuZW50 T3ZlcmxheQ== KCci 6YeP IFRpbWVzdGFtcA== IG1haWxpbmc= IENha2U= LlRoYXQ= IG1lZGl0YXRpb24= cXA= IGVtcHJlc2E= IExpb25z IHdlbGQ= IExpbmtlZElu IGN1c2g= IGdlbm9tZQ== LkluZGV4T2Y= YWdhaW4= IGZhbGxiYWNr IGNhbXBpbmc= cmVkZA== LXN0cmlwZWQ= IGR2 RmVicnVhcnk= IFByb3h5 dXNr IGRpZXNlbA== V1JJVEU= UkVBSw== TG9yZW0= Lkludm9rZQ== LWRpdg== SW50ZXJjZXB0b3I= IERI aWFsZXM= IHZpbGxhZ2Vz 2LQ= IEVOVg== U3lz LlhS IHBvZW0= w4I= Y2FkZQ== cGxvdHM= IHso LmdpdA== L3N2Zw== bmNtcA== IMSN YWluZXM= 5Ye95pWw ICgpCgo= b3BzaXM= IFJlbGF0aW9uc2hpcA== X2F1dA== IEJvbWI= CWNvbQ== KnNpemVvZg== b2ZmaWNpYWw= X3BheWxvYWQ= CQkJCQkgIA== Lm1hbmFnZXI= IEFyb3VuZA== CXNlbmQ= IEV4ZXJjaXNl IEJpbGx5 aXZp IG5lZWRpbmc= X3VybHM= X3Rhc2tz IEhlbQ== IHRlYXJEb3du ZW5jcnlwdA== LnRpZQ== IGFzbQ== SUNI IENHUmVjdE1ha2U= 7ISx dWxvbmc= IGl0cg== IEdTVA== IG9mZmVyaW5ncw== cm9iZQ== RUVF b3BlcmF0b3Jz X1BST1A= aW5kZW50 QURF b3Jm 65A= IGJsZXNzZWQ= dmFzY3VsYXI= IGNvbm9j SGFwcHk= QnJpZGdl aWxpdGF0aW9u am9pbnQ= IEFkbWluaXN0cg== LXRyYW5zZm9ybQ== IG1lYW50aW1l L0s= IEJlZHJvb20= IHJpZ2lk IGJyb3dzZXJz RU1QVFk= LlNlcmlhbGl6ZQ== X0VE IHN0aXRjaA== IGphbg== ZWxsdA== IGJyYWNl IHRyYWlscw== cHVibGlzaGVk 5a+G56CB fScpCg== IGFjaWRz ICEhIQ== X2RpcmVjdA== PigpKTsK YWrEhQ== X09DQw== IHBsYW5ldHM= 5p+l IER1Ymxpbg== IHNlcmll LnByaW50Zg== ZGVlcA== YCk= IFwk IM68 X1ZJREVP ZW5kb3Jz IENyeXB0bw== RmFy LlRyYW5zcGFyZW50 LlRS aWFzbQ== X3RyYWluaW5n IHRlYWNoZXM= IEJlbHQ= IGxpbWl0aW5n IEthdGg= IEluZGV4UGF0aA== IGFjaGlldmVtZW50cw== IHNlcsOh aW50ZXJvcFJlcXVpcmU= IGRpc3Nl Lklm YXJtaW5n dWxzaW9u UG8= X0RFVEFJTA== UHJvdG90eXBl IENBTA== IGFncmVlcw== LnZv LkV4ZWN1dGVOb25RdWVyeQ== IFRvcGlj ICd7fQ== QXJt IGVjYw== TWFn IHNlcmlhbGl6ZWQ= CWNvbm4= Y2FjaGVk PXRm IEJ5dGVBcnJheQ== cHJvdG9idWY= dmFyY2hhcg== CUFTU0VSVA== IGxpc3Rl X3RyaWdnZXI= t7g= RmVlbA== VGFob21h IExpaw== IHN0cnVjdHVyZWQ= ZXJndXM= LkluaXRpYWw= X2dl Y2xqcw== LmNvbnRhY3Q= IGFuZGVyZQ== JHN0bXQ= X0NVUlJFTlQ= IERpc2NvdmVy JHJlcw== Zm9ybWF0dGVy SGE= dmFuZ3N0 IGVtZXJnZQ== 44CC4oCd IENhYmluZXQ= LXNxdWFyZQ== 6YOo IHJhZ2U= IEFK IFZU c2hhZG93 IEZhaXRo ZW5hbWVz cHJldHR5 aGFzaWw= cGFydHk= IHZhcmNoYXI= IGZvdG9z IGFsdW0= IEJlbGdpdW0= LnlsYWJlbA== IGRlag== X251bWJlcnM= IGh1 LnNldEFkYXB0ZXI= IFVzdWFsbHk= KHNhbXBsZQ== LlNoYXJlZA== IGJvb2tlZA== ID4+PQ== IG1pbmVyYWxz Ij48Pz0= IGFkanVzdG1lbnRz IERM IHZpYnJhbnQ= IERlcGVuZGVuY3k= IHphcA== L1g= IGZvbnRz dHJpcA== 0LjRhw== IHR1YmVz Y2xhbWF0aW9u IOun IHByb3RhZ29u b3Vwb24= IEJydXNo KHByZWQ= b3VybmV5 J10pLT4= cHJvZw== Ym9v X21k X3BhY2s= KGV4cHJlc3M= dXR6 XEF1dGg= LGlk IENoaWxl YWN0aWNl IHJlY3J1aXRtZW50 IHBvc2Vz IHZ1bG5lcmFiaWxpdHk= aW5zdGFuYw== b3J1bQ== ZGVzcw== IHhs JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSU= KGZpZw== IGRlbGV0aW5n LmRlbA== KScpCg== IFdlZWtseQ== Pz8/ KHN0cmNtcA== c21pdGg= IHB1cnN1aW5n LXNv IEFwcHM= LycK IGRlY2lz Rk9SRQ== RXZlcnlvbmU= IGxhbmVz VmlydHVhbA== LmF0dGFjaA== KExvZw== IE1lZGljYWlk KFBhdGg= IFR1cm5lcg== L2FwcGxpY2F0aW9u IHBvcnRyYWl0 IG9wcG9zZQ== Y2hlY2tvdXQ= IGZpbmlzaGVz X01F QmFycmllcg== U29uZw== VkFS RWFybGllcg== cmVsbGE= IGhhc3Q= YXphcg== IHB1bGxz bmd4 IGluc3BpcmluZw== 0YPRjg== LWRpcmVjdGlvbg== IGV4cGxvc2l2ZQ== IGNyZWF0ZWRBdA== c3Rv IHdoZWF0 IEJ1aWx0 J2Fp IHRyYWNrZWQ= aGFtbWFk Um93QXRJbmRleFBhdGg= X2hlYXA= RHVl IGNvbm5lY3Rz LnB1Ymxpc2g= ZW11 IGJ1bGxldHM= QkFS b2xhdGU= IGludGVybmFsbHk= IGNhdGNoaW5n LXBhc3N3b3Jk b3VjaGVk 5oCn ZW91cw== IHhyYW5nZQ== UXVhbGl0eQ== dnY= TWFuYWdl KCgk YWNlbWVudHM= IEJyb3RoZXJz IEhFQUQ= IFVuc3VwcG9ydGVk c2Fu ZXNp KioqCg== IGFkYXB0YXRpb24= IFdvcmtlcg== J10v LnNhdmVmaWc= KHRyYW5z 2Kw= bmVl Q29ycmVjdA== Li4uIikK IHN1Ym1pdHRpbmc= LXBhdGg= CWxhc3Q= aXNzYW4= LnhsYWJlbA== IFNlcGFy L25v X2Jlc3Q= IE1pbGxz X3NvY2s= KGZsYWc= IGRlc3RpbmF0aW9ucw== ZW1wdGlvbg== IEZBSUw= 5ZKM IHJw ZmFjdA== CWxlbg== REFZ IHNlaXo= X2RzdA== bGlw LkxpbmVhcg== IEJhc2tldA== JHQ= JGk= LWJyYW5k IE5laWw= IEVx IHRob3U= b2dlbmU= IHNjaG9sYXJzaGlw 5pu0 IHN3bw== YWdpbmF0b3I= ZW5p KGJvb2s= IGJsaW5r dGh1cw== IGNhbmNlbGxhdGlvblRva2Vu IFBhbGVzdGluaWFucw== IHByb2ZpdGFibGU= IGJhY2twYWNr ZW5zb24= PExvbmc= IHBvb2xz IHN0aWNrcw== IHNwb2tlc3dvbWFu QmVpbmc= IEhlcml0YWdl IE5pa2U= U0hB IE5vdEltcGxlbWVudGVkRXhjZXB0aW9u JGNvcmU= IFJpY28= L2xhdGVzdA== IEN6ZWNo bmVyUmFkaXVz KGxpbmVz IHNlbWVzdGVy IHdvdW5kcw== UHJvY2VkdXJl Lm1haWw= KCkpOgo= IGNvcnJpZA== dGVyZWQ= IE5DQUE= IGdhbGF4eQ== X2tpbmQ= aWxr IHRyYXM= X1BPTA== IEhldA== IHJlZnVnZWU= IHRlZW5hZ2U= LmJpbmRpbmc= cG9zdGFs IGnDp2lu IERhdGFUeXBl 6ZY= eWNsZXJ2aWV3 LHZhbHVl X2lkZW50aWZpZXI= PGI= IG91dGZpbGU= DQogICAgDQo= IGNyw6k= IHJlc3BvbmRlbnRz IEJlYXN0 Y2VsZWQ= IGludGVyZg== LXRoZW1l Z2lm IFJhbmdlcnM= SVRBTA== IGF1dGhlbnRpY2F0ZQ== Q29tcGxldGlvbg== dXJzb3Jz IGNpbmVtYQ== IGRpc2NvdXI= IEphdw== T0NLRVQ= IHByYXllcnM= IEx1aXM= ZnJhZw== PVsK IGJyYXZl X3Bvc2U= Q2VydGlmaWNhdGU= LWZl aWZlcmF5 IEZsYWdz Q29udGFpbmVyR2Fw IENyaXQ= UmVzdWx0U2V0 CWN1cg== IGNvcnJlc3BvbmRz U3RhZmY= Lkh0dHBTZXJ2bGV0UmVxdWVzdA== IG5ldXJvbnM= IE1haW5BeGlzQWxpZ25tZW50 ZWRhcg== IGdhZA== X3BhcnRz IM6y IGZ4 L2ZpbGVz IEJyb3M= aGlwcw== IGdsdWNvc2U= IGZhcm1z IG1lbnRhbGx5 cmVzdGF1cmFudA== VGFibGVOYW1l IE1lcmNlZGVz LlZpc3VhbA== IGFuY2g= aW5hbGc= X3J1bnRpbWU= IHByb3ByaWV0YXJ5 IGludGVudGlvbnM= aXpp U2xpY2U= OyI+PC8= X1dPUkQ= XE1pZ3JhdGlvbnM= IEVOQUJMRQ== X1BBUkFNRVRFUg== IEJpc2hvcA== LnN1YmplY3Q= aWxsYXM= Lm1hdHJpeA== dXJyZW5jZXM= Knk= IGNvc3RseQ== IENodWNr IGNsb3Nlcw== IE1pZ2h0 LXN0b3Jl IG1hbGw= aWV0ZW4= LkFicw== IGNvdXBsZWQ= LmJhc2lj IDo6Ojo6Ojo6 TWFrZXI= Y2Fubm90 IGFjaA== IEVsaQ== 4oiS b3JuYQ== IGNwcw== IHRoZXJlb2Y= IEB7 IE5TTXV0YWJsZUFycmF5 zr0= cHJvZHVjdGl2ZQ== U3F1YXJl dGVtcHRz IGVsaW1pbmF0ZWQ= PE0= IGNvbnNlcnZhdGl2ZXM= IFN1cmc= LnBhcg== IEJ1Y2g= KmI= Rm9ydA== Q29sb3Vy IENoaQ== ZWRpYw== PnRydWU= IE5ZQw== IGJvcmVk IERldGVjdA== IGFwcGFy IGplYW5z IFRhaw== SU9E IEhvcnNl KEZJTEU= KD8= cmlxdWU= b3B0aW1pemVy bmF0 bG95cw== CVRva2Vu b3VidGVk dWVzcw== b2NvYQ== RGF0YU1lbWJlcg== X1BPV0VS Y2xhc3NMaXN0 UHVzaEJ1dHRvbg== IFdpRmk= LlN0cmVhbQ== Lmd1aWxk IG5vZw== IFBvcnR1Z2Fs IFVudGVy UHJpbWl0aXZl Ym9zcw== IERldXRzY2g= IGVyb3RpYw== IHN0cmNvbnY= LlRyeVBhcnNl IGdyYW1z LlN1Y2Nlc3M= X3Br IEhhcnZleQ== LW1pbmRlZA== LmNvdW50cnk= W10i IGFuZ2Vs IGJlYXRz IFZvcg== aWxpbw== Lm1hc3Rlcg== c29tZXRoaW5n IFBBQ0s= KGlm UmVxdWVzdEJvZHk= IGFudGVz L3dpZGdldA== IG1vZG8= IEFX ZmluZGVy IG9wdGltaXplZA== IG1pc3NpbGVz TkI= CWludGVybmFs dGV4 IFNyaQ== IGRhbWFnaW5n IE1haXM= LUFsbG93 IFpo LWFsdA== ICkpOwoK 6Ik= IGluZmx1ZW5jZXM= IGNhdGFs X1JFR0lTVEVS IEFQSXM= LWNlbnR1cnk= IGJpb2xvZ3k= IEFjdHVhbA== IGhlZWxz VFJBQ0U= X0RJRw== RGF0YXNldA== IE1hdHRlcg== IGNsYXNzaWZpZXI= Lndpa2lwZWRpYQ== IFJvZ2Vycw== IGRvbmF0ZWQ= cmF3bGVy ZW5lbg== IGNhc2lub3M= b3J0YWw= IHByaXZl c3Bl ZHVjZXJz LmVw IGdyYXNw YWNqaQ== IGRhaXJ5 IGJ1c2Vz LmNvbW0= Lmlucw== IElSUw== IEJlZXI= YWRj b2FyZA== X01FVA== ICcrJw== cmFucw== IGtpbmRh IOKUgg== IE1hdXI= 0LDQsw== IGJhbmR3aWR0aA== aWJ1cw== IERpZmZlcmVudA== KG1hdA== IFJlc3VtZQ== X1VOUw== ZXN0YWJsaXNo IGZvbmN0aW9u U3Vic2NyaXB0aW9u X2NvbXBhbnk= IGxpZ2h0bHk= LmNvbmZpcm0= LnlhbWw= IEJvb3N0 Q29tbWVyY2U= LXRlbXBsYXRl X0RFTEFZ IEhJ IG5hdmln KFNlbmRlcg== IEhT XyIr IFJFUVVFU1Q= IHdpZmk= PSIiCg== XSktPg== IHJvcGU= IHZpb2xhdGVk IGdsYW5jZQ== IEt1cmQ= IOiu ZGVjaw== IElTQk4= IGluZmVjdA== IEZvbw== IGdldHRlcg== IHRlbmVy YXBwZQ== Lmho X2hvdA== PEFN cG9seQ== ISIsCg== IGNvbnZlcnRpbmc= IFdXRQ== Uk9T KCd7 Q29tbWl0 KUw= IE9yZQ== IHNwYXJzZQ== IGRpc3Bvc2Fs IGNhbmNlbGVk 5ZCO IGFlcg== IHZpbnls 4buD cmVjb2du YXJraW5n IHRyaWNreQ== KnM= IHByb2NlZWRz IGlzbw== IGNvY29udXQ= IGNyYWZ0ZWQ= SUVMRFM= IHF1ZXN0bw== IGNvbW11bg== X0NPTk5FQ1Q= IHRyYWZmaWNraW5n RGVlcA== YcOnw7Vlcw== Y29kaWdv dmVhdQ== IGJldHJheQ== aW50YQ== VEVE w6Zy bWFydA== X0JVUw== L3Nj aWFsbHk= IGNpZ2FyZXR0ZXM= 6K+B KG5u IG1vZGVsaW5n L3Byb2R1Y3Rz d2Fybg== IG1ldHJv IEl2 Jik= IENhYmxl zrs= Q29tcGFyaXNvbg== Z2FyeQ== IEJB UEFSVA== IHB2 X3VwZGF0ZWQ= Q3JlZGl0 b3J0aHk= b2JzZXJ2YWJsZQ== IHRoZWF0cmU= QkxF O30KCg== bGF1bmNo X3N0cmluZ3M= dWdv IFJQRw== LWF1dGg= 0KA= aG9sbQ== IFBhbmQ= VWlk IGltcGx5 7Jy8 J109Jw== L1VzZXI= IHN0cmNhdA== 0L3Ri9C5 RGF0YUFkYXB0ZXI= IGxhbmRzYw== IGRpcGxvbWF0aWM= 77yT KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== IENoaWNrZW4= IGJjcnlwdA== LkluZg== W2NvbA== IFF1YW50aXR5 LXBvc2l0aW9u IGRpZXRhcnk= IGZpbG1t SXNyYWVs UHJldg== IE1pbGxpb24= IHJlbWVk IGJpbGxpbmc= IG91dGRvb3Jz LnRt IG5hZA== Rm9yZw== Wlo= IHNzbA== XSwn S1Q= ZnJlcQ== PWRvY3VtZW50 Ymx1cg== rLg= IEplZmZlcnNvbg== Q3M= KHNhdmU= IHN0cmFw SW5kaWE= IGlkZW9sb2d5 Qk9TRQ== IEZQ KGFucw== IGZldmVy IFlhbQ== S2luZw== 4LI= QVRJTkc= Ym9oeWRy cm9sbGJhY2s= IG5ld05vZGU= IE5WSURJQQ== IGhvbm91cg== IENvbmZpcm0= eGJk IHN1Y2Nlc3Nvcg== L3U= bGl2 b3VybmFtZW50cw== QXR0YWNobWVudA== IGdydXA= IHRyaWJl IGNhcmVz ZWZ0 X3NhbWU= J2xhYmVs IOOAkA== TW90b3I= IGluZXhw ICIoIg== X1BPU0lUSU9O IHZhbGxleQ== IFJlc3VsdFNldA== IHByZXNlcnZlZA== IG11dGF0aW9ucw== IHF1ZXN0aW9uaW5n bXVuaXRpb24= cGFyc2VJbnQ= IFNy IE1ldGFkYXRh 4oCd77yM dGltZXN0YW1wcw== IHRyYW5zaXRpb25z 7Zk= 0Yo= aW9t LkRv IHBpbmU= IGZ1bmc= IHRyYW5zbWl0dGVk Y3RpbWU= IEZhbQ== UmV2aXNpb24= QmFz VVBFUg== RGVzdGluYXRpb24= dG9IYXZlQmVlbkNhbGxlZA== IHVuZm9ydHVuYXRl SU5FUw== X3Byb2Y= QW1vbmc= IEN5YmVy IEJhdHRlcnk= Z2VucmU= IFZpZXdNb2RlbA== LT0= IHV0aWxpemVk cGFpbnQ= LkludGVnZXJGaWVsZA== ZXJuaXR5 Y29tcGlsZXI= 4oCLCgo= IE1hc3RlcnM= LlRvQXJyYXk= IHN0cnRvbA== IFVrcmFpbmlhbg== fSkpOwo= IHNoZW1hbGU= IlRoYXQ= Zm9yYWxs L2Rvd25sb2Fk IHJoZXRvcmlj LmxhdGl0dWRl IFdIRU4= IHNob2NraW5n SUZJQw== Lk5vcm1hbA== X0ZPTERFUg== IGRyaWZ0 IG1vdW50aW5n LWJvb2s= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK IFdpcmVsZXNz PiIuJA== IHJlbGllcw== KENvbnNvbGU= SW50ZXJuYXRpb25hbA== LT57JA== TWlk IGRpc3NlcnQ= ZGRz IGRlcG9zaXRz CWRyaXZlcg== I2dh cHJpc2luZw== cHJpbnRsbg== IHByZXNlbnRlcg== IG1pbmVz Q1NT IER1YWw= KCEo IGthbQ== IGlzTG9hZGluZw== IFByb3RlY3Q= LnVwcGVy YXJpdW0= XToKCgo= WWlp LXNoaXJ0 IElNQUdF X2NvbG9ycw== IHVyZ2VudA== LkNvbnRhaW5lcg== ISgK U2F0dXJkYXk= IHNvY2lldGllcw== IFRoYW4= IENvZA== PUA= IGF0dGFjaG1lbnRz Lm1vYmlsZQ== IHNwaXRl IGJvdW5jZQ== cmF3bA== aW5zdGFuY2V0eXBl IFRydWNr IG1hbmlwdWxhdGlvbg== KENvbmZpZw== LWluc3Q= IHN0b3I= aXR1dGlvbg== UHJlZmVycmVkR2Fw IG1haW5BeGlzQWxpZ25tZW50 IGxpc3RlbmVk JycnCgo= b3R0YWdl LXByb2plY3Q= LkFQUExJQ0FUSU9O CXJvb3Q= IHdoaXQ= IGJpbGRlcg== IGtlcg== IGFwcGxpYW5jZXM= cm93YXZl 7J2A ZW1hdGljcw== IE9yZw== b3Bpbmc= X1NFQVJDSA== IGNoYW0= YWRkQ29udGFpbmVyR2Fw ICgpLg== IEFycm93 SWxsZWdhbA== Q3VycmVudGx5 IHVzYQ== IHBhc3N3b3Jkcw== IHJlbm93bg== YXZlcm4= IEV2aWw= IGNvbmNhdA== IGR1bw== IHZhbGU= IEJlYW4= IGluZGljYXRvcnM= Y21hdGg= IFB1bXA= Tm92ZW1iZXI= aWZpY2FudA== X0RPTUFJTg== cmVnYXI= IFBvcnRhbA== IiQ= IGZvcm1lcmx5 Il06Cg== IFZpc2liaWxpdHk= LmdldEVsZW1lbnRzQnlDbGFzc05hbWU= X1JFRA== IGNoYW1waW9ucw== 4LQ= VmFsb3I= X2Vz KmE= LXJlcGVhdA== QmFuZA== LnN0YWdl IGJ1cmVhdWM= Q250 ZXRlbg== LWZ1bmN0aW9u IG11aXRv UElE X2VkaXRvcg== IGNyYXNoZWQ= ZGVhZA== a2F0 YWdo IEVYVA== YXNzZXI= LXNtYWxs IHJlYWxpeg== KEVudGl0eQ== w7pz IEFjdHVhbGx5 IEVsaXRl IGhlbG0= KG5vbmF0b21pYw== YXNoZXI= Q29tbXVuaXR5 YWxsZW5n aXJ5 IEdyb3d0aA== IHN1ZQ== IGZyZXF1ZW5jaWVz X2Rlc2NyaXB0b3I= LkF0dHJpYnV0ZQ== IHJlY2lwaWVudHM= X05T LyIr aWJhbg== IGF0aGxldGU= IElnbg== X0RNQQ== KGRz IFJlcXVpcmVtZW50cw== QURJ ZXJleg== XEFkbWlu YnJhc2th IFJ1c3Q= UmVsYXRpb24= Q09E IFZFUlNJT04= ZW1tYQ== KSl7 LkR1cmF0aW9u IENhbWI= LWxvZ28= IHJlYWRhYmxl IGNyZWF0b3Jz KCldOwo= VXBEb3du LWhhbGY= LmdldE1vbnRo KHNm UGlj IGh1bmdlcg== LnR4 IGV4Y2VlZGVk X3NlZWQ= KF4= X3Nr LnBlcmZvcm0= ID46Og== IG1vbmdv PWZsb2F0 YmluZFBhcmFt U21hcnQ= aWZh IHNlY3VyaXRpZXM= IHByZWp1ZA== ICwi IGNvcnBz IHZyYQ== YW1hY2FyZQ== aXRlcnI= KE1lZGlh dWNoZQ== IGNvYg== IGxpYmVy Lmdlb21ldHJ5 TG9jYXRvcg== IHNsaWRpbmc= IHN1cmdpY2Fs X0NVUg== IGNvbnNlY3Q= Wyo= IFJlc29ydA== U3R1Yg== X0RPVUJMRQ== IFNvcGg= IGVsZWN0b3JhbA== X2Rpc2FibGU= INGB0L4= IExpZ2h0bmluZw== IG1lbnRpb25z b2N5 IGxlYWtlZA== IHJlbGF4aW5n UHJlc2VudGVy dnNw IGd1aWx0 PS09LQ== LnJlcGx5 IE1pcnJvcg== Q2FtcA== ICsjKyMrIys= ICsjKyMrIysjKyMr LkF1dGhvcg== IGRpcmVjdGl2ZQ== LWhvb2s= 7YSw fQoKCgoK QHB5dGVzdA== X3JhbmQ= bWlz IGNvbG9yZnVs dWpl bGFzc2Vz IENsYXNzZXM= LmhhdmU= JSks 6aKY IGRpc3R1cmJpbmc= c3Vic3RyaW5n IEtvaA== SW52ZXN0 cHVyY2hhc2U= IHJlY3ljbGluZw== IEFSVA== aWVyYXJjaHk= IGZwcw== LmNoZWNrQm94 7ZW0 X21hdGVyaWFs ZHVjYXRpb24= IGZ3 dWRpdA== IHJldmlld2luZw== IFNpZA== U3ludGF4 IFdyaXR0ZW4= YXJnYXI= VU1F L3E= Q2xhc3NpZmllcg== T2ZmaWNpYWw= IGpheno= IG9tZWdh UGh5c2ljcw== IGx1Z2Fy X2FjY2Vzc29y LmNvbW1hbmRz QWJpbGl0eQ== IEJhdGNo UkFN IGVuY291bnRlcnM= LlF1 QllURQ== IERpc3RyaWJ1dGlvbg== IHVzbw== IFJlY292ZXJ5 YXBwcm92ZWQ= IGRlbmlhbA== L3NoYXJl TGlua2VkTGlzdA== KQ0KDQoNCg== dWRkeQ== IGZpbmVz IHJ5 VW5pY29kZQ== CXJlbmRlcg== IHByZW1pc2Vz IHBvbg== YWxpYXNlcw== L0ZvdW5kYXRpb24= Y3VkYQ== IENvY2s= LDop KGZvbGRlcg== IG3DqWQ= ZHJhZw== IHRhbGVudHM= ICAgCgo= 0LXRgdGC0LI= bW9i LnltbA== IGFzdGVy IGRpc2NyZQ== Z29hbA== IEdUWA== IFNVQ0NFU1M= IExPTkc= KGZpbmQ= IHNpbmd1bGFy X3N6 IEV0aGVyZXVt Li4K IGlycmVz Jykpewo= IG1pbmlzdGVycw== U3RlcHM= aXZlcnNhbA== IE5ldmVydGhlbGVzcw== LWxlZA== ICglKQ== 56Gu IHRpbWV6b25l IHN0cmFuZ2Vy KHJlbmRlcg== IHNodXRpbA== IG1waA== IHRyaW8= cHB5 IHByZWRvbWlu IGVuZG9ycw== IFJ1c3NpYW5z CXJvdw== IHdpemFyZA== LnNlcmlhbGl6ZQ== IGNvbXBsYWluZWQ= IHNpZG8= IGRlbGlnaHRlZA== LW1l IFJhdg== SHVtYW4= YWRheXM= cmVjdg== V29ya2luZw== SnVtcA== IMOlcg== IEF1dG9tYXRpYw== X0Jhc2U= 5qC8 YXVyYW50cw== wq8= 5rg= KENUeXBl SUZJ KGFtb3VudA== IGJlbGlldmluZw== PW15c3Fs IGZpcg== IHJlc3RvcmF0aW9u ZXJlY28= 0KI= Xycr IGVib29r IGRlYnJpcw== KGlucHV0cw== QVlPVVQ= IHNjcmVhbWluZw== YXZpYQ== bGFuZGVy IGRpc3RyZXNz IGFzc2VtYmxlZA== IEF2b2lk KHRocmVhZA== IFJQQw== X0VYSVQ= KHF1ZXVl 0LjRgdGC RGxs IHNrdWxs X3B1Yg== Y2hleg== bWluYXRl ZW5zZW4= IGluc2FuZQ== Ym91bmRz IFJvc2Vu IGNvbmRpdGlvbmluZw== cHJvY2Vzc2Vk dmlkZW9z Zm91cg== LkNvbnY= fDsK UGVyc29uYWw= Y2VycHQ= OlVJQ29udHJvbFN0YXRlTm9ybWFs IGRvc2Vz IEthcmw= IEZyZXF1 LkJBU0U= IFZvdGU= IGNvbmN1cnJlbnQ= IE1lc3NhZ2VCb3hJY29u IMOW IER1YmFp IFJldGFpbA== Om51bWJlcg== IE9ic2VydmVy IEJpZ0ludGVnZXI= X29yaWdpbg== X1dPUks= RnJhbWVz IG5vdGFibHk= LuKAnA== IHRyb3BpY2Fs IG5pY2hl YW1pbmE= LnN5cw== KHRva2Vucw== bW9kaWZ5 b3NpdA== c3Ryb20= IENvbWljcw== T1BUSU9O VGlja2V0 IGZhY3Rvcmllcw== IGRpc3B1dA== X0ZpbGU= IEZpbm4= ZWVl IERpc2NvcmQ= X21vbmV5 LnRwbA== X3NhZmU= TEI= IGdsdXQ= Sks= LmZsb3c= LWNvbnQ= Z29z IGhvcml6b24= IFJ1c2g= Ojoq UGlwZQ== dWxsYQ== Ym9yb3VnaA== aGVpbWVy KG1vdmU= KFRleHQ= fSk7DQoNCg== d2VsY29tZQ== IENvbXBvbmVudHM= IGdvdmVybmFuY2U= Y2xvc2Vk CW1hcmdpbg== IGxhdW5kcnk= IFRlcm1pbmFs aXphcmRz LuKAlA== LnJlbW90ZQ== LnJhZGl1cw== IFF1ZWJlYw== IGRo VGVjaA== IE1pc3Q= c2VsbGVy X2xpdGVyYWw= IGdlbml1cw== IGJyYWlucw== Z2Vt IE1lYXN1cmU= IGNhdGFzdA== cmFuY2U= LlRleHRGaWVsZA== IGNvbnN1bWluZw== ICdcJyc= b3VidGVkbHk= IENlcnRhaW4= RXY= ZXJ0aQ== YmVpbmc= RXhwZXJpZW5jZQ== IC8vWw== IEFyYWJpYw== IENyaXN0 IEF6dXJl IGhvcmE= bGFkZXNo XEJsdWVwcmludA== ZGFy LnJlbA== IHN1cHJlbQ== IFJlYWdhbg== IEF0dHJpYnV0ZXM= LXNpZGViYXI= IHVzZVN0eWxlcw== IEFpcmxpbmVz IGhpbGxz L3hodG1s dmluYw== X21vY2s= CiAgICAgICAgICAgICAgICAK IFBpbGw= LkxheW91dFN0eWxl IENvbW1hbmRlcg== XTw= c2lnbmF0dXJl IHt9DQo= IGhhdHJlZA== IOuL b2xlc3Rlcm9s ICoqKioqKioq YW5jZWxsb3I= Y3JvcA== VElN CQkKCg== eXNxbGk= dWl0aXZl CXVuc2V0 X3NlbA== IG1lbnVz dGljaw== IGNvbnN0aXR1dGU= IEVsZW1lbnRz IFJlZGlz YWdnaW8= X2Zw X2RlcGVuZA== ZW1hcw== Q0FTVA== b3Jhbmdl am9u IEVtaWx5 IHBvdGF0b2Vz IHJlY2VwdG9y IEVsZWN0cm9uaWM= IExpZ2h0cw== IGNvbWJpbmluZw== IFNvbWVvbmU= ICMjIyMjIyMjLg== IFRPRA== L3Nob3c= WGQ= LiIn YWZ4 IHRyYWdpYw== U3R5bGVk IE1hcmNv R2FsbGVyeQ== ZGFsZQ== LuKAnQoKCgo= w6lyaWU= L3NlcnZpY2U= 5LqG IGFtYmllbnQ= X1NFVFRJTkdT LkFkYXB0ZXI= bGVuZQ== IHRyYXZlbHM= Tm90aWNl IGNsZWFucw== IEZlbQ== Y2hhaXI= 0YPQvQ== L215 X2JhZA== IEVjb25vbWljcw== SVNB X0NOVA== KE1lbnU= 5LqO IFJpZGdl IGxlbmd0aHk= RG90 IGp1bXBz IGhleQ== JHBkZg== IHdvcm0= IHN1dA== IHNoZXI= aWFtbw== IENhbGM= dHJpZXZl IGNvcHM= IENocm9t IHJlZ3VsYXRlZA== cmVhdG1lbnQ= IEhpZ2hlcg== b2tz IGRlemU= TE9DQVRJT04= b25nc1Rv IGZpbml0ZQ== IHZhcmllcw== IHBvc2l0aW9uZWQ= J2ls 6YeR IGhpa2U= KGRvbmU= cGxheWxpc3Q= IGFkYQ== IGNvYXN0YWw= IE5hbmN5 LkRhdGVUaW1lRmllbGQ= Q3BwQ29kZUdlbg== IFNpbWlsYXJseQ== cmV1cg== IENvbnRy IEhpZGRlbg== IEJldGE= YXRjaGVk X2luc3RhbGw= Lk91dHB1dA== TG9va3Vw IFJpY2htb25k cXVhcmVk IG1hbmdh LWNvbnRyb2xz IEJlcm5hcmQ= TGFyZ2U= IHNsaWNlcw== IG9mZmVuY2U= IE1lZ2E= IGVzdGFy IGpvaW50cw== IHN1bW0= X3BsYXRmb3Jt QnVmZg== LmFkZFN1YnZpZXc= IHJldGFpbmVk TGV0dGVy LmRpbQ== IGVzc2VyZQ== IFNjYWZmb2xk RVhQRUNU CVJF LmxvbmdpdHVkZQ== w7xuZA== IHN0YXR1ZQ== LmFkZFdpZGdldA== IENhcmliYmVhbg== YWRkUHJlZmVycmVkR2Fw aWxkZQ== VUlMYWJlbA== IE9wcG9ydA== IGltcGVyaWFs dXJzaW9u IG1hbmRhdGU= IHByb21vdGlvbmFs IHZr aWHFgg== IHB5bA== IENyZWF0aW9u 0L7Qt9C0 IHNpbXBsZXI= LndoYXQ= IFJlY2VudA== U3Rvcm0= LnF1YW50aXR5 IExvdg== Ii0= dWJibGVz X25vdGlmaWNhdGlvbg== KHdvcmxk dXJnZXI= Kigt OiIK aG0= YW5zaGlw IEFsbW9zdA== IG1vdG9yY3ljbGU= X2ZlZQ== IGFic29yYg== IFZpbmNlbnQ= IHNvdW5kZWQ= w61zdA== IHBoYXJtYWNldXRpY2Fs aHRhZw== IEtpbmRsZQ== aXRhbGl6ZQ== IEVtcGVyb3I= b3VzdGlj IHNwZWNpYWxpc3Rz 5YWs Qm9yZGVyU3R5bGU= L1w= UkVMQVRFRA== KCcsJyw= KGV4cHI= IGh0 5Y2I X0NyZWF0ZQ== IHNwZWNpYWxseQ== IFtdOw0K IGhlZWw= IHNlcHQ= X2FyY2g= KGluaXRpYWw= JS4KCg== XCIsXCI= IGRpc2N1c3Nlcw== IHVwdA== IFsm IG1hbnVz LmhhbmQ= IE1BSU4= IERlbm1hcms= IF0sDQo= IGNyeXN0 IG5hY2s= Q29vcmRz X2lubmVy IG1pZHN0 IGF3YWtl INCe LWJyZWFr w612ZWw= X1BBU1M= IFBhcmFtcw== IGRldHI= IHNwaWRlcg== IENvbmNlcHQ= IHByZW5k Q0hFRA== LkV4aXQ= IHBvcHVsYXRlZA== IHZpcnR1ZQ== X1NFU1NJT04= IG5vdXZlbA== b2F1dGg= INC00LDQvdC90Ys= cmluaw== LkhlYWRlclRleHQ= YXR1cmF0ZWQ= IGVyc3Q= IOWF 4KWH X3Zpc2libGU= ZXllcg== IGxpYWJsZQ== IGRlYmU= IGJ3 ey0j X1dJTg== ZGZz SG92ZXI= IFBVVA== LWFuZ2xl IG5vYmxl IHRyYWNlcw== ZW5jdg== IHVzZXJEYXRh X2lucw== IFN1eg== IG5ld3NsZXR0ZXJz IE1vZGk= IGVudHJlcHJlbmV1cnM= IHRyaWJ1dGU= IHJ1bW9ycw== IHJy IFF1YXJ0ZXI= 6rOg IGZlZWRz w7Nn IGVudmVsb3Bl IGxlYXI= IGvDuA== ZGV2ZWxvcGVy U2ltaWxhcg== OiIpCg== c3Vic2NyaXB0aW9u TW9kaWZpZXI= aXRhbGlj IG5hc3R5 IHRlcm1pbmF0aW9u IGNoYXJtaW5n IOKf dG9ucw== LnRyYWNl aG90cw== IFVS TW9udA== IGp1c3RpZmllZA== IEdhbmc= aW5lYQ== IGJvZw== KGFw XyQ= IGNvbnRhbWlu LkRvdA== CURlYnVn KGV4cG9ydHM= IHBhaXJlZA== IEFzc2lnbm1lbnQ= IGF1dG9tb2JpbGU= k40= IHBoYXNlcw== dnc= QFN1cHByZXNzV2FybmluZ3M= PVw= cmFudA== LWVk CWF3YWl0 IGNlcnRpZmljYXRlcw== Jz4i IGludGFjdA== Q1RSTA== TWlrZQ== Z3JlZ2F0aW9u QVRURVJO IHJlcHVibGlj X3VwcGVy aWxpYXJ5 IGNvbXB1dGF0aW9u aGlyZQ== IFNoaW4= X0FOWQ== IE1hbnVmYWN0dXJlcg== IENhcm0= IGJlYXJpbmdz X2NvbWI= Y2Fk dXJpc3RpYw== IHdob2xlc2FsZQ== IGRvbm9y LmludGVyZmFjZXM= cHJlc3Nv IEJydW4= LWNsb3Nl cHJvdmU= X1NL CWZyYW1l ZXRyb3M= IFBhaW4= X0VYUA== IExU X2Zz LmRhdGFz CXNz dm9pcg== IEF4aXM= TWFqb3I= PSI8 W2g= IHByb2Zlc3M= aWdyYXRl KHNjb3Jl S2V5d29yZA== Im9z ICAgIAkK YW5hbHlzaXM= IHJlcGxheQ== LnBhc3M= XGQ= dGxz IHNhbmN0 LmxpZ2h0 X21vYmlsZQ== 0YHRgtGM CXRvdGFs dWl0eQ== IHBhdXNlZA== TkFT IGVuY29yZQ== bG9l IC0qLQoK LmhpZ2g= YW1wbGVy IFNlY3VyZQ== IGZyYWdtZW50cw== X3ZlbA== aWxsYXJ5 IFN0ZWlu IERhd24= IG1heGltaXpl 4Lii IC9e IGNvbnRpbnVhbGx5 IHNoYWRvd3M= CSAgICAgICAgICAgICAgICAgICA= IElBY3Rpb25SZXN1bHQ= IGluZm9ybWFjacOzbg== Q0hFQ0s= LlNlbGVjdGVkSXRlbQ== YnVuZGxl b2xsZXk= PEludA== QUlORVI= IFdpbmc= dGl0bGVz b3VudGFpbg== Q1k= IExvY2FsZQ== Zm9ybWVy PGNvbnRleHQ= UmFkaW9CdXR0b24= X3NjaGVkdWxl IGZhYnVsb3Vz Um9iZXJ0 X1BST0ZJTEU= IGdhdGVz SU1Q IFBlbnRhZ29u Z29sZA== YmFjaA== ZW1wbG95ZWVz Um90YXRl IGNoYW1w IHNlbGJzdA== QWx0ZXJu IGNvbnZlcnRWaWV3 Lyw= IH4o U3RyZWV0 X3BsYWNl IHBlcnNvbmFsaXplZA== UHVibGlzaGVy IFNPQ0s= X05BTUVTUEFDRQ== IFN0YW5kYXJkcw== c29ldmVy X0NFTlRFUg== SW50ZXJlc3Q= w7R0 dGVtcGVyYXR1cmU= Vmlld3BvcnQ= Z2V0UmVzb3VyY2U= IGVhdGVu IHNlbXByZQ== IGFibm9ybWFs IGN5bGluZGVy IHRyb3VibGVz bm9k 0YvQsg== Z2FtZXM= X2ds UGxhbmU= Z3JleQ== X3RibA== LkNvbXBvbmVudFBsYWNlbWVudA== IENoYXNl TG9nZ2luZw== bWFueQ== 7IY= IGZsYW1l PSI8Pz0k IEdyb3Vwcw== LVU= 0YDQsNC9 CgoKCgoKCg== IHZhdWx0 b21vbg== cHJvYmxlbQ== IHRyYWRlcnM= IHBlcmlwaGVyYWw= IGhvbWVwYWdl KGRlcw== IFN1Y2Nlc3NmdWxseQ== IHJlYm9vdA== IGNlbGx1bGFy aWlp IFBsYW5z bGlzdGluZw== CWRpcw== IFJlZmxlY3Q= CWV4Y2VwdA== Iiko IHRhbWLDqW0= VmVoaWNsZQ== YWNjaQ== bHVzaA== T3JkZXJCeQ== IGltYWdpbmVk Y29kZWM= IGRhdGVUaW1l TWljcm8= IHJlbWluZHM= IGZydXN0cmF0aW5n IFZpc3Rh VHJhaW4= INCy0YE= IG1vbGVjdWxlcw== YXZpbg== IGRvdWJsZWQ= IGJyYWtl IGNhbGNpdW0= RnJpZGF5 IElkZW50aWZpZXI= 5Z8= 0YvQuQ== IEphaA== UmVu IHNjYW0= IERlbm5pcw== LnNldEludA== 4p8= IGFwcGVhbHM= IEF1cg== IHNwbGFzaA== ZXF1YWxzSWdub3JlQ2FzZQ== d2h5 IHNhcA== U3VwcG9ydGVk IHNlcmE= IDoi IFZlcm1vbnQ= IHJldW4= IE5vdmE= ICAgICAgICAgICAgCiAgICAgICAgICAgIAo= UmF0ZWQ= IGxheWluZw== IEthcmVu LkRlc2VyaWFsaXpl IGNvZGVj IHRheHBheWVycw== OyIpOwo= IGNydWRl IG1vbGU= IHVzZUNvbnRleHQ= CXJlc3A= IHBrdA== IENhbm5vdA== UGlwZWxpbmU= 5YaG dGljYWw= QWN0aW9uQmFy YWVkYQ== IENyaXRpY2Fs IE5hZA== IGJsZWVkaW5n IGxsdm0= L2N1c3RvbQ== IFNpbXBzb24= U3k= aXRhYmx5 IFN1bW1pdA== KCkpKS4= RUxMT1c= JCcs TWV0 SW52b2ljZQ== b2xpc3Q= IHNwaW5l YXV0aWZ1bA== cGFpZA== IGxvY2tlcg== X2FybQ== XCI+PA== IHRyYWplY3Rvcnk= X3Jpbmc= IGh5ZHJvZ2Vu dHJvbg== IHN0YXR1dGU= IGNvbmRpdGlvbmFs IHRyYXk= LXNjaG9vbA== KHdpZGdldA== JGNvbmZpZw== IHJlcXVlc3Rpbmc= LnVpbnQ= ZXRvbg== YnJpdGllcw== T2ZUeXBl QURNSU4= cHJlZGljdA== IGdlZ2Vu IEhhcHA= T0NVTUVOVA== IEFwYXJ0 IC0tLS0t cm9l dWlkZQ== anVzdGlmeQ== IFNxdWFk IHByb2Zlcw== LmJvdA== X2N1cnJlbmN5 aW5uZW4= IE11bWJhaQ== IE51bWJlcnM= YXZhbmF1Z2g= YWduaXR1ZGU= 4oCcVGhlcmU= PWh0dHA= 54mH IHZi Kyc8Lw== IG9yZ2FuaXppbmc= YW5pdW0= SW5TZWN0aW9u LmFuZA== IGV0ZXJuYWw= IHNvdWxz X09ORQ== X25z X2Jhc2lj IHJldFZhbA== LXNoYXBlZA== aWZkZWY= IE1vemlsbGE= IGVpZw== Y29tcGxldGVk Tm90aWZpY2F0aW9ucw== VEVDVA== cmllbg== Y29vcmRpbmF0ZXM= IHByZXRlbmQ= cG9uc29yZWQ= LnN0ZGVycg== IGdhbWVycw== IGRlZmVuZGVk VG9vbFRpcA== dWl0YXI= IGZyYW5jYQ== IFdvb2Rz IGlocmU= IHBzZXVkbw== IGNyb3dkcw== IFNZU1RFTQ== bGVj LmtlcmFz IGNpcmN1bGF0aW9u ZWVy LmNi dXp6eQ== 7Zg= LnJlYWRlcg== IHNlcXVlbA== U2V2ZXJhbA== LnBvcnRhbA== LS0tLS0K aXN0cmFy 77u/Ly8= UGk= IFwiIg== IGN1c3RvbXM= IGRpc3BsYXlOYW1l IG5vdGljZXM= IGNhcmI= Ll8KCg== IHByb2R1Y3Rv INGB0Ls= IG51bWVyaWNhbA== IHVuaW50 IGNvZGlnbw== T3JkaW5hbA== U3RyaW5nVXRpbHM= IGTDqWM= IExhbg== IHNob3djYXNl IGFyaXRobWV0aWM= LXNjcm9sbA== X1RFTVBMQVRF IFJvdXRlck1vZHVsZQ== IFNoYWRlcg== INCd cG9saWN5 UGVyZm9ybWFuY2U= CWJvcmRlcg== KGZpbGVwYXRo 56m6 X2VuZXJneQ== X0NT VGhlaXI= LnNwYWNpbmc= KGRw IExBTkdVQUdF IGhpc3RvcmljYWxseQ== Ij57eyQ= IGlub2Rl c2ls IGhhY2U= IHNldmVyZWx5 IE92ZXJ2aWV3 IHNwcmF3 IGJlYWNoZXM= OmxlZnQ= t7s= KCR7 IEZJUlNU IFNwYQ== LWFzcw== IGJhaXNl IE5PREU= IFBpenph UGV0 KHNlcQ== XCI+Cg== Q3BwTWV0aG9kUG9pbnRlcg== IHZw IGlh X3NlY29uZHM= ZW1ldA== L2Jsb2I= X1RIUkVTSA== Li4uDQo= RGVzdA== IE5I LmRhdGFTb3VyY2U= aXTDqXM= IEphaw== c2VsbA== IHdvcmtzaG9wcw== PHU= IHJpdmFscw== IEVYSVNUUw== aG9t LXRva2Vu Y29tcGF0aWJsZQ== LkpQYW5lbA== IHBoeXNpY2lhbnM= YXJ0aW4= IGRlc2lyYWJsZQ== IGRpc3RpbmN0aXZl LkRlcA== Z2lk aWxpYXRl LG1heA== IHByZW1pZXJl IHFEZWJ1Zw== IGFkdm9jYWN5 IHdoaXNwZXI= UHQ= IHVuY2hhbmdlZA== X3F0eQ== 6K+35rGC U2Vhc29u YXZlbGVuZ3Ro IFB1bA== IGTDrWE= J11dXSwK YWxpcw== KCIm Ym9ybw== IGJt IFJhZGk= d3Jvbmc= IEdvaW5n aW1lVHlwZQ== aWpp LWZlZWRiYWNr IE5hbWVz IEJhcHQ= IHByb2JhYmxl IEV0aGVy IFBvbGl0aWNz X3Byb3RvY29s bGluaW5n U2F0 IGNvcnJlbA== LlByaW1hcnk= KG51bGxhYmxl UklPUklUWQ== IGNvbG9yaW5n IHV0aWxpemluZw== ZGFz IGV4cG9ydGVk IGNhcnJpZXJz Q29udg== LmVkaXRvcg== acOz KGhhbmRsZXM= IGFwcHJlY2lhdGlvbg== LmltcG9ydA== IEF1c3RyaWE= IFN0cmlw aWxpZ2h0 IGFwcHJvcHJpYXRlbHk= IFByZXN0 IFdpcg== IFVJQXBwbGljYXRpb24= YWxjaGVteQ== IE1vYg== IERldGVybWlu ZXJndXNvbg== cmVnaXN0ZXJlZA== X2NvbnZlcnQ= IFZsYWRpbWly LlNob3dEaWFsb2c= cmVmbGVjdA== IHNob29r IGFzc3VyZQ== IE9mdGVu IGNpdmlsaXphdGlvbg== IHZvY2FidWxhcnk= Zm9yZWdyb3VuZA== IFNjb3Bl IHVud2FudGVk YWN0aW5n IChbXQ== IG1hcmtpbmc= Lm9yaWdpbmFs IE1PVkU= IHNwb3J0aW5n Y2VwdGlvbnM= TlNOdW1iZXI= U2l6ZXM= IHByb3ZpbmNpYWw= X1RyYW5z IHByb2JsZW1hdGlj ZGlnaXQ= IEVtbWE= bG9ja3M= IENyZXc= aWJh Jyk6 aXNoYQ== IG1hbW0= IG9jY3VyZWQ= d2Nz KHJ1bGU= IG1lcmNoYW5kaXNl ZXNwZWNpYWxseQ== IFR3aW4= IG5hbWluZw== IHNsb2c= IGltcHJvdmVz IGFkaGVy OnRleHQ= LmhhZG9vcA== X0hUVFA= LnRvTGlzdA== LmRpc2FibGVk IGxlbnNlcw== LmluaQ== IFJhcmU= IFVidW50dQ== IHNjcmFt b2xhdGlvbg== dGl0dWxv RXZlcnl0aGluZw== IG5vZGRlZA== aWNodGln X2NvbnN0YW50 emM= bGlmdA== IE5vdGlmeQ== b25kbw== IElORg== KCIr IEtheg== IGRyZWFk Lm1hcHBlcg== bGV1cg== IENvbWV5 IE5C aWNlcnM= LlB1c2g= IEhhY2s= IEJyYXppbGlhbg== X3Byb2Q= IC8vCgo= IGJpY3ljbGU= IHVuYXZhaWxhYmxl IGFkb2xlc2NlbnQ= Ymxr IG1pdGln X2JsdWU= 7Jg= ZmFkZUlu IFV0aWxpdGllcw== IE1O O2s= PHN0eWxl LXN0YXR1cw== aW5kbw== IGlubmluZ3M= IGdq IHx8PQ== LmV1 Ok51bWJlcg== IGN1aXNpbmU= IFVSTHM= aWVr IHdpcmVz CXBz aWVn Lm1r c29hcA== IHNvbWV0aW1l IHN0YXA= X3Nlcmllcw== LlRhcmdldA== 5ro= LmRlc3RpbmF0aW9u T1VOVEVS UmFpc2Vz JkE= IHNtYXJ0cGhvbmVz TklFbnY= LnNkaw== IGhlbGljb3B0ZXI= IGltcGU= IEJpcnRo QVU= YnJlYWRjcnVtYnM= Y29vcmRz IGV4cGxvcmVk IGxvZA== IElw Z2FibGU= aWFuZQ== IGFydGlmYWN0cw== Qm94TGF5b3V0 2KfYsQ== bGlzdGVuZXI= LmNhcnQ= IEh1ZmY= IEhpbmR1 IERhdGFUeXBlcw== IERydXBhbA== SUdOT1JF IG9mZnNldHM= IFJUQw== LWxvZ2lu 5q4= IFFPYmplY3Q= IHByb3NlY3V0b3I= Um9jaw== X2NoYXQ= V2F5 7LI= IG5lZ2xpZw== IGR1ZGU= Ozw= IGRlbGVnYXRlcw== X2ZhaWxlZA== L2Rldg== L3dvcms= KE5ldw== ZXRhYmxl KCki KEljb25z IHBvcms= IE1vZGVsQW5kVmlldw== IFZJUA== IEtvcg== bWl4 IG94aWQ= IFNDUkVFTg== IEZvdXJ0aA== LyIsCg== IHRlZQ== IFN0ZXZlbnM= dGlja3M= IHBsZWRnZQ== aWJib24= IExvYW4= IG5lbw== bnVtcHk= IFNoYXJlZFByZWZlcmVuY2Vz LW9yaWVudGVk IExvZ2dlckZhY3Rvcnk= IEdyYXBoUUw= emVuaWE= Il8= V29tZW4= LmNhc3Q= IGRlbGliZXJhdGVseQ== K2I= IEFybg== Zm9udFNpemU= IG1hemU= IGJsYW1lZA== Lm1hcw== fSkNCg== ZWxlcmlr IHNjYW5uaW5n IFdvcmtzaG9w IGZpbmRlbg== IGNhdXQ= VUlGb250 KHJldHVybg== YWxpbg== Y2FzdGxl Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v IGluY2VudGl2ZQ== b3BhdGg= YmxvYg== IGNpZ2FyZXR0ZQ== IGZlcnRpbA== Ki8KCgo= IFNoYXI= CiAgICAgIAo= IHVuY2VydGFpbg== IFN0b24= T3BlcmF0aW9ucw== IFNwZW5jZXI= IGRlZmlu IFNvbG8= b25lc3Q= t7vliqA= IHVvbW8= R2l2ZQ== IGRlbnRybw== O3BhZGRpbmc= ZW50YWk= IENhcnM= IGVudGh1c2lhc20= IE9wZXJhdGluZw== U2tpcA== cGFyYXRpb24= IHByb3RlY3Rz IHJldmVy ZGc= IENpbmNpbm5hdGk= IGNvbnNlY3RldHVy IG11c3M= ZW1wbG95ZWQ= YXVzZXM= aW5rbGU= LlZhbHVlcw== o7w= bG92 X1dBUk4= IGJvb2ttYXJr IEFwb2xsbw== LmF4aXM= IG3DqXQ= IG9wZW5lcg== IHR1bW9y ZGFu IGVsZW1lbnRhcnk= IHNraXBwZWQ= IEtlcg== YXNpYQ== X3Jlc3A= IGRlbW9s IENhbmFkaWFucw== IHRhc3Rlcw== VUludGVnZXI= ICckew== LmF3cw== Uk9JRA== cmlhbnM= TVE= b3JkYWJsZQ== IGNvdXNpbg== UHJvcGFnYXRpb24= KFNlc3Npb24= cGhhbHQ= VUxE IFNjYWxhcg== IGJsb29keQ== IOCm Lm1hc2s= LHE= IFVuaXRz IGNlbnRyZXM= IFByaW0= Ll0KCg== IFNoYXc= UHJvbQ== IFRob3VnaHQ= Q2hlY2tlcg== X291dHB1dHM= KGNoYW4= RUlOVkFM IGJvYg== X2NtcA== UGVk IG1hdHJpY2Vz IHZyb3V3ZW4= IGdlbnVpbmVseQ== aGlnaGxpZ2h0 KGRpc3BsYXk= KSE9 IGRlbGljYXRl IEx1dGhlcg== IE1pbGVz IHVzZXJJRA== JT0= YXRldXJz X0JVRg== LS0tLS0tLQo= aW1pdGl2ZXM= IHNoZWx2ZXM= c2xvdw== X2luZm9ybWF0aW9u TEVH V3I= LmZvcm1z Y2VsYW5k L3Vu OiY= LuKAmQoK PSIl IHByb3N0 IGZvbnRzaXpl dWNpw7Nu Z2V0aWM= YW10 PSIu RGVjb3I= QnJpdA== ICIiKS4= IGZvdW5kaW5n LkZpbGVOYW1l IFRpZXI= IGRpc2Nsb3Nl w6Ft LnN5bg== LlZpZXdIb2xkZXI= bGljYW50 X3N0YWdl TW9uZGF5 IGRlc2VyaWFsaXpl dGFsaw== IHRyYWRpdGlvbmFsbHk= 5oCB 2K4= TEVY IGVo CVJPTQ== IHt9KQo= UXVlc3Rpb25z bmNweQ== IGZpeGluZw== 0LrRgw== X0tleQ== Ong= IFNUUklORw== INGE0LDQuQ== CWxlZnQ= IEJlbmNo ZWxsaWo= VVJSRUQ= IERpYWdyYW0= fWNhdGNo L3RpbWU= IE1pc3Npbmc= ZGJuYW1l IHNvcmU= IFdhbHQ= dWdnaW5n cmVwcmVzZW50 IEdT bmV5cw== CXBhZ2U= IHZvbGNhbg== KGJ0bg== IGV4Y2VlZHM= IGVyZw== IHBpbG90cw== IFNlZA== ZXJzaW9ucw== IHBhdHJvbg== UlY= L3RvcA== LmFzc2V0 X2Nyb3Nz LkVkaXRvcg== LnRi IHdlbGNvbWluZw== U0NSRUVO KWZpbmRWaWV3QnlJZA== Q29kZXI= PElBY3Rpb25SZXN1bHQ= X1FVRVVF 4YM= IGhlaWdodHM= UmVxdWVzdHM= IHN5bWJvbGlj DQ0KDQ0K IGNvdXBvbnM= LWZpdmU= IERlc2t0b3A= IG1pc21hdGNo ICdfJw== X0RJVg== QVNPTg== LnRyYW5zcG9zZQ== KG1hc2s= IENlbHQ= LkhhbmQ= YXR1 asSZ IHt9KTsK TWlzcw== IHByaW1h bXVuZA== b2x2 IFByZXR0eQ== IHJlYmVs IEZE YXN0aWNhbGx5 T0xU LWF4aXM= dXhl IGVpbmZhY2g= IENoZW1pY2Fs X3NlZw== bGVldGNvZGU= bG9wZQ== X29yaWc= ICAJCQ== KERvdWJsZQ== IFBheVBhbA== LkJhY2tncm91bmRJbWFnZQ== IGhvbWVtYWRl Liku KHBhcnNlcg== YXRybw== YWNjb3JkaW9u RGVmaW5l IOyeiA== IEFVVE8= LnN1bW1hcnk= c2NhbGFy IEhvb2Q= cXVpbg== X2Rlcg== IEdlc2No LmNvbXB1dGU= RmVlZGJhY2s= IHBoYXJtYWM= IMWfaQ== IGdsb3Nz IEZJTFRFUg== SU5TVEFOQ0U= IGthbA== LlBM X0ZSRUU= R3JhZGU= IOKZ Lm1ldHJpY3M= IGNhZ2U= Llh0cmFHcmlk X2Rz emln aW50ZXJvcFJlcXVpcmVEZWZhdWx0 LnJlbW92ZUNsYXNz PT09PT09PT09PT09PQ== IG1hc3RlcnM= U3RhdGVFeGNlcHRpb24= aWxsZXJ5 IEJyYWR5 IGxpbmluZw== X2Nz aW5zdWxh IH06 W3Bvc2l0aW9u IFJ4 IEJZVEU= IFN0cmlrZQ== INCa IENsdXN0ZXI= LmRvd25sb2Fk QWxsb3dlZA== IGFtZW5pdGllcw== IG9uVGFw ZnVsV2lkZ2V0 IHN0cmVuZ3Rocw== dHdlZXQ= IGFzY2VuZGluZw== IGRpc2Nsb3NlZA== Z3Jhdg== ZGlzdHJpY3Q= KTw8 KSwi KGRlZnVu X3w= IGdhemU= 0LDRjw== IGZvcnR5 PT09PT09PT09PT0= U2NpZW5jZQ== c2VtYmxlcg== CWJvZHk= X3RyYW5zZmVy IGxvbmd0aW1l IGNvbXBsaWNhdGlvbnM= IGJvb3Ro VkVSUg== IHlpZWxkcw== IG5hdmlnYXRvcg== OjpfKCc= RUNUT1I= X0NvbmZpZw== IGxhc3RlZA== dXNhbA== 55m75b2V IGdsb3Zlcw== IGJlbGx5 U2FsZXM= KE1ldGhvZA== KG1lbWJlcg== IFJlZWQ= cGFzc2Vk U2lnbklu LG51bQ== VUxPTkc= IExFRw== bmVscw== IG1lbnRvcg== KHJj IE9idmlvdXNseQ== Lmlm IEZyZWRlcg== SEVBRA== QGF1dGhvcg== Q29uZGl0aW9ucw== IGdhcmRlbnM= IFJpcA== KHVzZXJz IE9rYXk= IHdyZXN0bGluZw== aW1lc3RvbmU= IENlcnRpZmllZA== IHZlcmRpY3Q= YWlkYQ== LmlubmVyVGV4dA== aWNhc3Q= CWF0 IHByZXN1bWFibHk= IEZVTg== YWplcw== 0Jc= PiIsCg== X1Bpbg== dWVzZQ== IG92ZXJyaWRlcw== X3JlYWR5 QWR2YW5jZWQ= IG9waQ== LWNhcnQ= KCIvIiw= IERlYg== Q1JZ IFZlcnRpY2Fs IE9WRVI= IENvcnBvcmF0ZQ== ICIiOw== IHN0ZXBwaW5n ZWo= IGFjY3VzYXRpb25z IG9yYXo= X3RhaWw= IGluZHVjZWQ= IGVsYXN0aWM= IGJsb3du LC8v IGJhY2tncm91bmRz 4oCZdW5l LXNkaw== IHNldEludGVydmFs IGluY2VudGl2ZXM= IHZlZ2V0YWJsZQ== X09u ZXhwYW5kZWQ= cGl4 X3NoYWRlcg== IFNQRFg= QGV4YW1wbGU= IFdyYXBwZXI= Llplcm8= UG9zaXRpdmU= IHNwaW5uZXI= IGludmVudGVk IEdhdGVz 0L7RgtC+0YA= IGNvbXBhcmlzb25z 6Lc= LnByaW1hcnk= ZGF0YVByb3ZpZGVy YWRkaXRpb25hbA== CW9wdGlvbnM= c25hcHNob3Q= LnNldEhvcml6b250YWw= ICJ7fQ== IEZpc2hlcg== aGFsdGVu PFR5cGU= IG1heExlbmd0aA== IE10 IOqwgA== LmpldGJyYWlucw== IGlkZW50aWZpZXM= IGZsb3dpbmc= IERpc2N1c3Npb24= YXRzYnk= IHNjaHc= dWdodHk= IHJpdmVycw== LnVuaXF1ZQ== X1BIWQ== ZWRyYWw= KGxs IGNzcmY= cHBlcnM= w7xs IEVzcGVjaWFsbHk= cG9ydGVk IEhhcnJpc29u KioqKioqKi8K VGV4dENvbG9y 7Iq1 d2lyZQ== IHN0YXR1c0NvZGU= IEZpbmlzaA== Y2VuY2U= IE1jQ2Fpbg== IFdvcg== KGF3YWl0 ICktPg== IFJlZ2lzdGVyZWQ= SU5FRA== a2Fs cGFyaXNvbg== IG9iamV0bw== Vmk= bWFuZGE= IHJlbmV3ZWQ= IFNvZg== ZXNzZWw= Lm5kYXJyYXk= IGNyYXA= 566h LmFic3BhdGg= KHVw IGNsZWFyYW5jZQ== IFRX X0NPUFk= ICAgICAgICAgICAgCQ== IGZvcmVzdHM= IGFyZ3VhYmx5 IEFTUw== aGV5 YW1lbA== X2ZvcmU= IFNvdXRoZWFzdA== IGFidXNlZA== IHByYWN0aWNpbmc= YWtlZGlycw== 5Li7 X3Jlc291cmNlcw== IHBvbmQ= LkZpeGVk TGFzdEVycm9y IFBzeWNob2xvZ3k= ICIvLw== ITo= UmV1c2FibGU= IG1lbnNhamU= IHJvc3B5 IGJvdXI= IHZhcmlldGllcw== IGVtcGF0aA== KCh7 X29yZw== IE1lcw== IE1hZ2VudG8= SVNUT1JZ VW5sZXNz IGhq IER1dHk= SnVu LHNpemU= IHBhaW50aW5ncw== IGRpc3BlbnM= ZGFydA== IGJlaGF2aW9yYWw= IHJwYw== Y2FsY3VsYXRl ZnJ1aXQ= X21t CXB0aHJlYWQ= TWF4TGVuZ3Ro IGN1cnJlbmNpZXM= X2NhcGFjaXR5 IE96 IGZpcmVhcm0= IGNvZWZmaWNpZW50 IGJhbmtydXB0Y3k= d2FydA== IGZhdGlndWU= QVZB IGVzcGE= X3Bj IFF1b3Rlcw== X0xJR0hU IFRpY2tldHM= IHJlbGF0ZXM= IHB1Ymxpc2hlcnM= IHVubG9ja2Vk IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== IEludGVycnVwdGVkRXhjZXB0aW9u IG91dGxvb2s= cm4= IHJlYmVscw== V3JpdHRlbg== IGFzaWFu b3R0bw== IAkJCQk= X2dwdQ== VHh0 LkltYWdlVmlldw== IHN1aXM= X3RhYmxlcw== LlJlY3ljbGVyVmlldw== IHdoYXRzb2V2ZXI= 6IE= XSsrOwo= YXNzZXJ0VHJ1ZQ== X3ZlcmlmeQ== IFJpdmVycw== IF1b SmV0 aWRpYW4= U2libGluZw== IGdlbnJlcw== LkFjY2Vzcw== T1BT IHRyaXZpYWw= 4Liq YWxlbg== 0LLQtdC0 IFN3b3Jk IHNjcnV0aW55 KGNi IGNvbW1lcmNl IGd1YXJhbnRlZXM= X2Fkdg== IExFVA== cmVjaW8= IGhpbGFy IGJhY2t5YXJk 44CP IGlsbHVzdHJhdGVk L3ZlbmRvcg== LlV0aWw= IHdvdw== TE9Z IE1hcnNoYWw= Ij4nLiQ= IEJhaw== IG1vZGlmaWVycw== ZGljdGlvbmFyeQ== IFN0cmU= bXVsdGlwbGU= IikpLA== IENvcnQ= J10iKS4= KGFkbWlu IENyZWF0b3I= SW50ZXJuZXQ= KG1z bG9neQ== REVDTEFSRQ== IE1hcmN1cw== PDw8PA== 44Gg X215 KGluc3Q= IHNjaWVuY2Vz TkRFUg== LmVudGVy IGl0dQ== IGJlaGF2ZQ== UGFu b21iaWVz PSc8 JykpOw0K IE1FTlU= IFdvcmtlcnM= Lk5vRXJyb3I= IGJpbmRpbmdz IGRpc2FiaWxpdGllcw== e1w= IE11bmljaXA= IGNvcmVz dXJwbGU= IE5va2lh dXNpb25z IEZpdG5lc3M= LmhhbmRsZUNoYW5nZQ== IGphdmFzY3JpcHQ= 7JqU KGRlYw== IHBhY2tpbmc= LWRlcGVuZA== IHRyYW5zY3JpcHQ= emVyb3M= X2FsZXJ0 PyIsCg== bGlicw== sdC+0YI= IHwKCg== dHJhaW5lZA== IEdlbnQ= IFJhYg== eHA= X2NvbmZpZ3VyYXRpb24= 5aSp X2FjY2VwdA== LnJlY3ljbGVydmlldw== OnVybA== IE11aGFtbWFk IHByaXZpbGVnZXM= X2Jhbms= dWt1 d2FsbGV0 IFJPT1Q= IGVuY3VlbnQ= P2ZhbWlseQ== CXBvc2l0aW9u IGNn IHByZWNpcA== bWV0aG9kcw== X2Zhc3Q= aW5jcmVtZW50 IFRpZ2Vy X09DQ1VSUkVE cXVpcA== IEhBUw== X2RvbQ== IHdyZWNr Ymo= IGRlcm4= IG9yZ2Fucw== LmVudHJpZXM= IF8oJw== cmFtZW50bw== IEphbWll IHB1bms= SVBQ IHByb2dyYW1h IGF0dGFpbg== IHByb3Zlcw== L3NpZ24= IGFuc3dlcmluZw== IGxhZGRlcg== KioqKioqKioqKioqKioqKioqKioqKioqKioqKg== IFdhbG1hcnQ= IENPTlRFTlQ= ZHVjdG9y IHZlcmJhbA== IFBJRA== Y3J5cHRv X0NBTExCQUNL ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== IHBvdGVudA== IHNob3J0cw== LlVyaQ== LnVuaWZvcm0= O2JvcmRlcg== IFdlcg== IGhlcmVpbg== bGxh IElocg== UGl4bWFw bGl0ZXJhbA== ISkKCg== Z2VuZXJpYw== cnVzdA== X3NjcmlwdHM= b3N0bw== aXR1cw== IENvYWxpdGlvbg== IHJlbW90 ZGVwbG95 IEVhZ2xl 44CB44CM IGltcG9ydGFudGU= CW9iamVjdA== IHNlYXNvbmFs bmVq YWlkdQ== QmluZFZpZXc= IFNpZXJyYQ== LWJn IG1ha2VTdHlsZXM= W29mZnNldA== R2FtZXM= IGhvcm1vbmU= QVJJTw== aGVhZHM= KHNlbGVjdA== IFN0YXJ0ZWQ= QHBhcmFt X2RlY2w= X2Jsb2c= IGHDsW8= XEFwaQ== IE1pbHdhdWtlZQ== UHJvdmlk QW5pbWF0ZWQ= IGNvb2xlcg== IFNlZWQ= LkVkaXQ= z4Q= IFRha2luZw== IGJvcmRlckNvbG9y LWZvdW5kZXI= LkxvZ2dlckZhY3Rvcnk= ICIiCgo= QUxU IExhdGU= RURJQVRF ICk7CgoK YWZh IGNhbmNlbGxhdGlvbg== QXRvbQ== IEJpcm1pbmdoYW0= ZW1wcmVzYQ== SEVNQQ== YXNjYWw= IHVwc2lkZQ== LlZlcnNpb24= IEZvbGRlcg== IEVpZ2h0 IFZpbnRhZ2U= IEFwcERlbGVnYXRl IFByZXZlbnRpb24= LnNlcGFyYXRvcg== U1RN KHJvb20= Z2VuZXJhdG9y IGNhdHRsZQ== CVo= IFBhcnRpY2xl J307Cg== IG5laWdoYm91cnM= IFN0YXRlbGVzcw== IGFsdGl0dWRl IHNhaW50 0L7QsdCw0LI= IGNvbnZpbmM= IENvbnRlbnRz IGpldW5l KHRz U2VyaWFsaXphdGlvbg== KGNvbGxlY3Rpb24= IEpheno= IERvZA== IFJvY2g= YWNpbw== Y29tbWVuZGVk REVGSU5F Lm9ubG9hZA== IHNwZWNpYWx0eQ== UExBQ0U= X01PVkU= IGFjY291bnRhYmxl UmV1dGVycw== IGZpY2tlbg== IGRlcHI= V293 Vm9pZA== LnNwYWNl 4LiX IHRx IFBldHM= PCQ= KEN1cnJlbnQ= YmVycmllcw== cGxhbmF0aW9u IGxpc3RPZg== IFRodQ== IFBSSU5U IG1pc21v IGRvaQ== Y2hr IFVuaWNvZGU= KHJvbGU= IHZpcmdpbg== PFBvaW50 X1JFU1BPTlNF LWhvdXNl IFZlbmV6dWVsYQ== RU1BSUw= IHDDumI= X2V4aXN0 QmFsbA== LkNM cmVmZXJlbmNlcw== IEJlYXV0aWZ1bFNvdXA= CUV4cGVjdA== VEhJUw== 0YPQtA== YmFuZQ== IHRlbXBvcmFs RVJJQw== ZXRhcw== IHJlZnJlc2hpbmc= IHNlY3VsYXI= QHN5bnRoZXNpemU= YWNjdXI= IG5lbGxh IFNPTA== LnBpcGU= Q2hhbm5lbHM= 6Ieq IGluc2VydGlvbg== 4buL ZWxpYQ== IGFkanVzdGFibGU= Q2FuYWRh IElURU0= IGN1cnZlcw== IENoZWFw bGV0aW5n IG9wdGltaXN0aWM= YWxsbw== IHBvbGl0aWNpYW4= X2Rvd25sb2Fk PWVkZ2U= T1JUSA== IG1vZGVsbw== YXJ0bw== LnJvdGF0ZQ== IHNlbGVuaXVt 5oiR X2FsaWFz IHJlbm93bmVk Licu IGN6eQ== IGFsbGVz LkNvbXBpbGVy IEJhc3M= Q29ubmVjdG9y LlJvbGU= TElOSw== IGNyaXRlcmlvbg== bGVtZXRyeQ== U3VjY2Vzc2Z1bGx5 L3BuZw== IGV5ZWI= YXNwYmVycnk= KGdy IGRhbmdlcnM= IGNvcnJlY3RlZA== IGdsb3c= IGVsYWJvcmF0ZQ== IEJlYXJz YXdhaQ== PSInKw== IHByb21vdGlvbnM= IG1hdGhlbWF0aWNhbA== ICJg X0dlbmVyaWNDbGFzcw== IENoZWY= LlNvcnQ= dGFibGVOYW1l UklD IHZvbHVudGFyeQ== IEJsYWRl LWVsZWN0 IENvbWJhdA== IEFiaWxpdHk= IGFiZG9t IGR1Y2s= VG1w 5YWo IGVyYXNl LlBo IERlZmF1bHRz cGFydG1lbnQ= X1VTQg== w6p0ZQ== Oyc= IHBhZHM= IE9iYW1hY2FyZQ== LlRvdGFs IGRpdmVydA== IGNyaWNrZXQ= IHJlY3JlYXRpb25hbA== KHJlZA== IENsZQ== UlU= IG1pc3Rha2Vu IE1vbnRhbmE= IHN0cml2ZQ== X3NsaWRlcg== IFBsYXN0aWM= IGRlY29yYXRlZA== IFZQ bGljbw== CWZhbHNl IHByZWZz KFwi X2ZhbHNl aWVuZG8= IEAk QnVja2V0 YWN0aWNhbA== IFpoYW5n LmNvbHM= LkJpbmRpbmc= IHdheA== X1NUT1JBR0U= IGxhd24= IHJm LlNjZW5l IENhbGN1bGF0b3I= LmRlc2lnbg== IHJlc2ls 0LvQtdC8 RW1wbG95 IFByaWNlcw== IFBXTQ== YWdp LmV2YWx1YXRl CXBhcmFt IGJyYXNz YmJlbg== IGluZmxhbW1hdGlvbg== dWxsaXZhbg== IGFubm90 IHBI aWFtZXRlcg== IEJUQw== KGJveA== U3Rvcnlib2FyZA== IGNsYXk= LmFzc2VydFJhaXNlcw== fHN0cmluZw== LkFwcGx5 IG1hdGNoZXI= dW5kZWQ= IHNhdGlzZnlpbmc= IOyglQ== UmVuZGVyaW5n X2FwcHJv aW5kcm9tZQ== QU5FTA== X2ZpeA== YnJ1c2g= Lk1hdGNo IHNtaWxpbmc= b25hdXQ= U3VuZGF5 IGRlbGV0aW9u IGVuY291cmFnZXM= UHVsbA== IHJldmVuZ2U= IHF1YXJyeQ== dHJhZGU= IGNhYmxlcw== KGRlbHRh aXRlc3BhY2U= IGZo LmJ1bmlmdQ== IHZpZWw= X0lOQ0xVREVE IFRhaWw= YWRhcg== b2Zz IG1ldGFscw== Z29t X21ldGhvZHM= IG5q LlN0ZA== KHdpbg== JCgn IHR1cnRsZQ== dXJvbg== IGVucm9sbGVk IEh6 IEJveERlY29yYXRpb24= IHBvbnQ= cmVsYXRpb25zaGlw Qmk= s7s= IG1hc2N1bA== IHNoYWRlcw== IHZy IExvZ2lj IGFpbg== IERJU1Q= IGNvbGxhcg== InByb2ZpbGU= R2VuZXJhdGVkVmFsdWU= IFBvc3NpYmxl IGVpbmVz g4E= LnRpbWVvdXQ= IEVj IGplcnNleQ== LkRvdWJsZQ== IHF1YWxpZnlpbmc= dm9y Q1JFRU4= X0FwcA== X3JlY3Y= IGFsaWVucw== SXRz RXNj aWF0b3I= IEVjbGlwc2U= IGdo VmljdA== CWh0bWw= dG9v LmNvbnN0 IGFudGVyaW9y IFd1 KGtleXM= IHVsdHI= X3BvbHk= IFRhcA== IEJ1ZA== QVdT IGNyYXNoZXM= X3RvdA== Q29udGlu LWhhbmRlZA== YWx0aG91Z2g= 4Lia aWZpY2VudA== IGRldmU= dXRvcnk= IFdvcnRo X01T IGZsb29yaW5n IHNlbGxlcnM= IFRoYW5rc2dpdmluZw== IHBuZw== IHZhbG9yZXM= IHNsZWV2ZQ== IGZpbGxl 0JA= IGFwcG9pbnRtZW50cw== IHZpbQ== VXNlckluZm8= Qk9PU1Q= IHBvc2Vk aW5pdGlhbGl6ZWQ= LnByb2R1Y3Rz IExlYWRlcnNoaXA= bWFudWVs JyU= ZW1hcmtz UGVyY2VudGFnZQ== KGRpc3Q= LmF2YXRhcg== KGhPYmplY3Q= 5LuK X2lmZg== aWNvbmU= Oyk= X25pbA== IGFib2w= 0LXRgdGC IHZlbnVlcw== LkNvbnZlcnQ= IScpCg== LkJpdG1hcA== c2tpbg== X0NPTFVNTg== UmV2 R1JFU1M= Z293 IHdpc2hlZA== dHJhY3Rz LmFzc2VydEZhbHNl IHNjcmVlbnNob3Q= IGZvaXM= Q29tYg== TGluZVdpZHRo IEdyYWI= IGludGVuc2l2ZQ== CXNo Kyk= LmZpcnN0TmFtZQ== X1BST0NFU1M= IHRpbHQ= aXRvcmVk LkxPRw== IGJhaw== IGludGVudGlvbmFsbHk= LnBsYXllcnM= KGNhbnZhcw== KSkpDQo= LlByb3ZpZGVy X1BVQkxJQw== VGFsaw== IExpdg== Y2hlZHVsZXJz IGxj YWRpYw== ZmVhdHVyZWQ= LnJlc291cmNlcw== RnVsbE5hbWU= IG1lYW53aGlsZQ== QnVmZmVycw== IHJlc29sdmVy IFNBUA== X1RF R05V IEZvcm1zTW9kdWxl X3do IFN3ZQ== LndpZGdldHM= IGNhYmluZXRz IHN1c2NlcHQ= IEJvdHQ= YWN0aXZleA== YXZhcg== YW50aWNz ICI9Ig== X2t3YXJncw== IGdhbWVPYmplY3Q= IEFuZ2xl Lkl0ZXI= bWFyc2g= IEJpcnRoZGF5 IENNUw== cmVxdWVzdHM= IFBlYXJs X0VPTA== IGxpbnV4 KG9yZw== X01vdXNl LmNvbnN0cnVjdG9y IHpk IGtpY2tz YXJ0aXNhbg== IGVheA== S24= cG9uZ2U= IEZpbmxhbmQ= IG1ldHJlcw== IEFzc2Vzc21lbnQ= cGFydG5lcg== L3ByZQ== IScsCg== W0ludA== IG9zbG8= ZGF0ZXBpY2tlcg== L1N0cmluZw== b3BsYXk= IEhlYnJldw== LGRvdWJsZQ== IHRyYWJhbA== KyJc CUVJRg== L3RleHQ= X0ZJUlNU IFBldGU= IGVnbw== IGV4dHJhcw== UERP IHJlZ3VsYXRl IFFXaWRnZXQ= c3Rz IFNob3dz IE5IUw== LmNvdXJzZQ== cHRocmVhZA== IEZ1ZWw= LnRpbWVz IMKw IHN0cmlkZXM= KCQoJyM= KHdvcmRz IHJoeXRobQ== IHNwb250 IHNlbnNhdGlvbg== IHNwaWtl Q2xvc2luZw== 6aG16Z2i TnVtZXJpYw== IGJyZWF0aGU= IGZpbmFsZQ== X0ZBQ1Q= aW5pb24= IGNoaWxs IGZvcm1hbGx5 QU5HRUQ= ICc6Jw== INC/0YDQuA== YXE= IEZhYnJpYw== KGxhdA== IFByaW5jaXBhbA== IGVycm8= b2NhbGU= Tm9t IGZvc3Q= X0NVU1RPTQ== LmludGVsbGlq ZXJ0b29scw== IGNsYXNzZQ== YWRpZW50cw== IGZ1bmRyYWlzaW5n RU5F X09QVElPTlM= X29i Ly99Cg== IHByb3RlY3Rpb25z LnNlZWQ= TlY= dGVybWluYWw= Ozs7 UHJlZGljYXRl IOy2 IGJvbWJpbmc= R0Y= IGNoZXc= KSkpLg== cXVhbGlmaWVk XT17 bGlzdGVu Q0VOVA== ZGlnZXN0 RWFzdA== IGRpdmVy IGVuZHBvaW50cw== IGVl IGNvbGxlYWd1ZQ== IGRpc3NlcnRhdGlvbg== X2NvbW1pdA== X0RBVA== LnJj IGJyZWFzdHM= IFJ1Zw== IFBpbA== Q29udHJhY3Rz IEJyeWFu V2ViVmlldw== IGNvbmNlbnRyYXRl IElubmVy ICd8 c3Rkb3V0 X1N1Yg== Pi0tPgo= Vm9s IFNTRA== KSkpLA== Lk9wdGlvbmFs IG51cnNlcw== IG9yYg== X3Bl KTsNCg0KDQo= cGxhY2Vk ZXNzZXI= IHRoZXJhcGV1dGlj IHdoaXRlc3BhY2U= IGFzdG9u U3VjY2Vzc2Z1bA== IHByYWlzZWQ= IFdlcw== IGVpZ2h0aA== aXJhbA== IHZyb3V3 IGZhY3Rpb24= X2JpYXM= IHdpdGNo IG5wYw== KHNi IFJvZHJpZw== X2JpZw== RGVwZW5kZW5jeQ== IEFicmFoYW0= YXJkaQ== Q0FS bm9z IGFidW5kYW5jZQ== IG51dHJpZW50cw== aW5zdGVpbg== LlZlcnQ= IElTUw== PFU= IHN1bXM= X2hpc3Q= IGZhcm1lcg== IEFicg== U2hvdA== IEJhZFJlcXVlc3Q= IGhhc3M= IFJhaWxz IGFmZmlsaWF0ZWQ= 5p2l IGVyZg== SU5G IFZpZXdIb2xkZXI= bWluaQ== IFJvdGg= IGZhaXRoZnVs IFBoaWxsaXBz QU5ET00= XS5b X1BBWQ== IEFyY3RpYw== ZmFrZXI= RGlnaXQ= TWFsZQ== c3RkZXJy c2V5cw== IMWh X3JlbW90ZQ== bGlxdWU= IGluZGVm IEluZHVzdHJpZXM= aXRyYQ== X3BhaXJz PGlvc3RyZWFt IHNhbGFyaWVz aWtlbg== LkZyYW1l UExJQw== X1NQRUM= IE1lZGl0ZXJy IHN5c3RlbWF0aWM= IGludGVycm9n SWNvbkJ1dHRvbg== c2Vh aW50cm8= IElzc3Vlcw== ZW5jcnlwdGVk IGludGVybmF0aW9uYWxseQ== IHNucHJpbnRm IHBhc3Rh IEJyYWRsZXk= X1N0YXR1cw== QUxL X1BBRA== LmxhdW5jaA== PHNlbGVjdA== IGhhcmRlc3Q= IHBoeQ== ICgoKg== LXNsaWRl IE5vYm9keQ== U3U= IGFzw60= Y2xvc2VzdA== X2luaXRpYWxpemVy IHN1cHBvcnRlcg== LWdlbg== IHRhbGVz IGNvcnA= X2Z1 c2F0 bmVpZ2hib3I= Lk1pZ3JhdGlvbnM= IGFsZ3Vu IHNpbm9u LlNwZWM= PywK LkdM bWFsZQ== IG1vbml0b3Jz eWxhbg== LUxpY2Vuc2U= Lm1hdGNoZXM= IEFCUw== IE1hc3Q= IFdhbGxldA== KCQoIiM= RGlydHk= IGNvcGU= IGludGVycG9sYXRpb24= b3VzZWQ= IEpldHM= LkZMQUc= LkNhbmNlbA== LkV2ZW50cw== bmV2ZXI= IE1Ieg== PkQ= IHNlcnZsZXQ= YmFzdGlhbg== ID4m U0lE X2Nsaw== IGRpdmlzaW9ucw== fScsCg== IGRpbGRv IHBhcmFkZQ== bWFqb3I= IGFib2FyZA== Oysr IGZ1c2lvbg== In0seyI= IERpYWxvZ1Jlc3VsdA== CWFycg== LWVt X25y KGhhbmRsZXI= Lk5FVA== Llh0cmFSZXBvcnRz IFNoYWg= IEJyaWVm LSw= IHByZWNpbw== CQkJICAgICAg IHRhbnQ= IEdyYW5kZQ== L3htbA== X0lDT04= IFJldHJv dW5xdWU= IG5hZw== dG9GaXhlZA== WEw= IGRlY2xhcmluZw== IENvbmNyZXRl IEFtYXppbmc= CXByaW50aw== IGRlYmF0ZXM= REFURUQ= IGFlc3RoZXRpYw== ZW1ldGVyeQ== Um91dGluZ01vZHVsZQ== IE5hc2h2aWxsZQ== V0FZUw== IHdvbGY= IG9ic2VydmVycw== T1RB YW5zb24= IGVh IGdyZWVuaG91c2U= k43kvZw= IHN0YWly IGltbWlncmFudA== X2FwcGx5 cGVhcmU= IEJsb29tYmVyZw== X1BMQVlFUg== UmVzcA== 5q2j Q2hvb3Nlcg== IElDb2xsZWN0aW9u UGV0ZXI= RXJybw== LmRldGVjdENoYW5nZXM= TWFwcw== IHNxdWVlemU= IEhvbWVz d2VnaWFu IGZvcm1hdHRpbmc= IG5lZ290aWF0ZQ== dWxk IE5lcA== IFFC IGVjb25vbWllcw== ICovLA== IHJlZHVuZA== IEFiZXI= LklzTnVsbE9yV2hpdGVTcGFjZQ== eWNsZWQ= ICAgICAgICAgICAgICAgICAgCg== X1No IHNrZXB0 IHJlY3JlYXRlZA== IGdldFR5cGU= IG1hcmdpbnM= IGNvbG9uaWFs Y2hhcnRz Ly9A IHByb2Nlc3NvcnM= 6K+0 YmF0aXM= 5oSP YXRvcmlv bWVudGlvbmVk UGF0aWVudA== IHByZXk= Q2hlY2tib3g= X3hwYXRo LnNraXA= IE1vcm1vbg== IE1lbW9yeVN0cmVhbQ== Q1JFTUVOVA== IGt1 bWVsZA== XERhdGE= IEtlcm5lbA== aWx0cg== 6YCB KHByb2ZpbGU= Q2FyYm9u Uk9MRQ== KHBs XSoo Lm1lbW9yeQ== IG1lZGFs IGFkdmlzb3I= aXTDpHQ= IGhkcg== aWVydW5n IFByb3ZpZGVz KGFscGhh IHRlZW5hZ2Vycw== LXBhcnNlcg== LkxhdExuZw== XSgpCg== IGZlbG9ueQ== CQkJCgkJCQo= Qk9PSw== IHNsYXNo IGNsZWFyZml4 IFByb3BoZXQ= 5a65 cmlnaHRuZXNz LWZp LmtpbmQ= ZXJ0b24= Smlt IG1hbmlwdWxhdGU= IHdvcmtzaGVldA== b2xpbg== c3RhcnM= IGFydGlmYWN0 X0VNUFRZ CW1haW4= LS0tLS0tLS0tLS0tLTwv L3N0YXRpYw== SVRJRVM= IENvdW5zZWw= IFdD IEJMQUNL LXN5c3RlbQ== IFRyaXBsZQ== LmJ0 c29mdHdhcmU= XScpLg== SW5qZWN0aW9u X25vdGlmeQ== IGZpZnRlZW4= IGFtYmFzc2Fkb3I= YnJlYWtpbmc= VVJJQ29tcG9uZW50 IFByb3Rlc3Q= LlJlc2V0 IE1Qcw== dnJv LmdldFN0YXR1cw== X21vcmU= Y3Vw IEtlbnlh 5bey IGFtbXVuaXRpb24= 15XX IERhc2g= IHVuZGVyZ28= IGJ1ZGR5 0YLQvtGA ZXRpY2FsbHk= X091dA== IEJyb2Fkd2F5 qow= IEZpdHo= IHN0cmlwcGVk LWNhY2hl IHVtYg== IGFub20= IHNpYmxpbmdz b2N1bWVudGVk SW50ZXJydXB0ZWRFeGNlcHRpb24= IHBlbmc= bHN0 X0FMSUdO LWNhcA== UkQ= Y2VsbHM= IE1vdG9ycw== IHRyYW5zbGF0aW9ucw== dXN0ZXJpbmc= 6Zo= IGxlYWtz ZmlsZVBhdGg= IG91dGdvaW5n X2VuZHBvaW50 X0dM LmxpZmVyYXk= cmljaHQ= IE9wZW5HTA== LmpwYQ== IGFmZmVjdGlvbg== Zmx1eA== IGdseQ== IGJ1ZA== Pic7 IGV4cHJlc3Npbmc= IElR IEZhY3Q= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK X21hc3M= KSk6 IGNvbmRvbQ== IGNyZWF0ZVN0YXRl b21ldG93bg== IGlycg== ID4o PkI= aXRlcmF0aW9u 44Oq IHNoaXJ0cw== b3VudHk= LT4k X1NJR04= IERhbGU= IGpq RWFzeQ== RnJl IE55 IGNobG9y bWF0Y2hlZA== IEdlcm0= LVVB IE5hdGhhbg== ZWR1Y2F0aW9u LXlhcmQ= LWNoZQ== aG91c2Vz cml0aW9uYWw= IHByb3hpbWl0eQ== IGRpZXNlbQ== 4bqtcA== IGRyb3VnaHQ= LmF1ZGlv IExlbw== IGZhdm9yYWJsZQ== aW5jaA== IERhdw== cmlibHk= X3N0dWRlbnQ= aWRhYmxl T1ZF IGxhY2tz b3VuY2luZw== LmJ1c2luZXNz IHJlb3Blbg== bWF5YmU= X0dMT0JBTA== IGRyZXNzZXM= IEVkd2FyZHM= ZW5zaWJsZQ== IEhhcmR3YXJl IEV4Y2VsbGVudA== IFRpbWVVbml0 Q1RJT05T IHNjaGVkdWxlcw== IHNlZ3Vl T3BlbnM= YW1tZW4= LUlkZW50aWZpZXI= IHN0YXJpbmc= IGhhcHBpbHk= IEhvYg== J18= ICIpOw== YW1lbnRvcw== ZXRjaGVk IC8+fQo= LlVzZXJz IGludGVycnVwdGVk Q29udGFjdHM= IHJlZ2lzdHJv aW5idXJnaA== Q0hB X2ltcA== cGhpcw== c2F5 IHJldGFpbGVy Lk5PREU= L21hcHM= X0xBU1Q= IENoYXJnZQ== X2d1YXJk Q29sbGlkZXI= IFN0YXRlbGVzc1dpZGdldA== IjpbIg== KCIuLi8uLi8= aW94aWRl IFN1bmQ= ICcnOw== dW5zZXQ= YWRkV2lkZ2V0 0LvRjg== ZWxsZXM= YWxrZXI= QXJj IGRlZHVjdA== R1VJTGF5b3V0 IFZpbGxh IGZvcmJpZGRlbg== X3doZXJl IFwv IFRpYg== X0FY XQ0KDQo= IEJpcg== IGJlbmQ= IE1BS0U= IE1FVA== IGZ1dHVyZXM= IHdlaWdodGVk IiIiDQo= IGF1dGhvcml6ZQ== KHByb2dyYW0= fSx7Ig== IGNvZWZmaWNpZW50cw== w6pz UGVyUGFnZQ== IEJhdGhyb29t IFB1Ymxpc2hpbmc= R1BM IHN1Ym1pc3Npb25z IE5VTUJFUg== asSF IGFkZGl0aW9uYWxseQ== ZW1wcmU= IFNoZWw= b3R5cA== U29sdXRpb24= IHRodW5kZXI= X2Vj IAogICAgCg== IEZlbGxvdw== IGtheQ== IG5ld1N0YXRl T05UQUw= SW1wbGVtZW50YXRpb24= Lkxvb2s= IGVudHM= IGxvcnM= IEJJRw== ZmFi IGF2ZXJhZ2Vk IEZlZWRiYWNr IFdlbGxz IG1hcnRpYWw= IGluZHVs IENvbW11bmlzdA== IEZvcmV4 IEFncmljdWx0dXJl Ils= IHF1YXI= IEtvbnQ= CXZpZXc= LkJ5dGVz ZGVza3RvcA== IE1ha2Vz YWtlc3BlYXJl Lk51bGxhYmxl IHNwb3RsaWdodA== VkI= b3d5 KHRvcmNo dHJpZGdl X2JvdW5kcw== IGFwb2xvZ2l6ZQ== LmFkZEl0ZW0= YW50ZA== Kik7Cg== LHU= KGdlbg== 57uT cmVhdG9y IENvcmQ= b3VwcGVy Lm1ldHJv IGV3 IFdPUkQ= LkFmdGVy IGRldGFpbmVk IEhhbW1lcg== ZXhpc3Rpbmc= IG9zdA== IG1vbnVtZW50 LWN1c3RvbQ== VXNlcklE IE5vbQ== IHJlamVjdGlvbg== KGRpbQ== IHNpbmdsZXRvbg== CWRpZQ== YXJpYW5jZQ== cmVwb3J0cw== XSE9 ZWxkYQ== IHByZXZhbGVuY2U= X3JlZ3M= LiIu IGZlbWluaXN0 Q29kZWM= ICoqCg== KGxhYmVscw== X01BUks= RkFJTEVE IGFkbWluaXN0ZXJlZA== V04= ICAgICAgICAJCQ== IG5vdW4= d2ln IGdvdHRh IHJpZg== LWlt IFBhdWxv IENvbW1hbmRUeXBl XSkpCgo= LXplcm8= VHJhaW5pbmc= IGxvcmQ= X2FydA== cmVkZGl0 Q2VydA== IHBlc28= Um90 IGVuZGFuZ2Vy LmRy dXNlckluZm8= dW50cw== bnY= IFRyYWlsZXI= LWZpcnN0 KG1ha2U= IGJlbmVmaWNp LWJsYWNr acOf IHVuZG91YnRlZGx5 IG1leA== IEFuY2llbnQ= KGFz IGRlc2NlbnQ= UGljaw== IHJlcGxpY2E= JG9iag== w6Rocg== IGFycm93cw== ZnR5 IExpYnlh dWdh Y2hhcmdlZA== VHVy IGhvbWlj aXNzZW4= IEZha2U= IGJlZXJz IHNjYXR0ZXJlZA== KFRpbWU= VVRJTA== IGJ1cmVhdWNy L3BsYWlu IHN0aWNraW5n RkFJTA== IENvdmlk VGhpcmQ= X3ByZXNlbnQ= IFBpZXJyZQ== IOuq IFsuLi5dCgo= UHJvYg== IFRyYWZmaWM= aWNhbw== ZG9jdG9y ICksCgo= VGFicw== YWx1 77ya4oCc IGluaGVyZW50 X05v cml0aXM= IFByb29m LmJhc2VuYW1l 5Lya IGNoaW0= IFByb3RlY3RlZA== Y3JpdA== IHByb25l INC60L7QvQ== IEhlcm9lcw== IGFueGlvdXM= IGFub3M= IHdlZWtlbmRz IHNleHQ= IHJlZHVjZXI= PVVURg== aGFsZg== IFNhdw== Lm1t IG51ZXZh LmN1cnJlbnRUYXJnZXQ= Lmx1YQ== X0VYVEVOU0lPTg== CXJlZw== IEN0cmw= X2FsaWdu YWNjZXB0YWJsZQ== IHJ1c2hpbmc= ZnJhYw== IGJvYXN0cw== Rml2ZQ== wrE= IFRlbXBlcmF0dXJl Pik6 IGNoYXJ0ZXI= UkVBVEVE IHN1YmplY3RlZA== IG9wYw== aGVhbHRoeQ== 5L2/55So IFNjaWVudGlmaWM= IGZyYXU= cmlhZ2Vz 4LiU LmludmVudG9yeQ== YXRpb25hbGU= TWFk bWludXRlcw== Pj4oKTsK IEVudg== IHJlY29yZGluZ3M= IHN1c3BpY2lvbg== c3FsaXRl CXJlYWQ= 44Gm IHdvcnJpZXM= LnB1dFN0cmluZw== IFNoYW5naGFp KHVpZA== cmVy IHbDrWRl Iik6 IG1ldGhvZG9sb2d5 INC60L7RgtC+0YA= Y2Nj YXZhZA== IGluZHVjdGlvbg== CVRocmVhZA== LHN0cmluZw== 4bqhaQ== bmVobWVu dWl0aW9u ICpfXw== LmVtZg== IOyc L3RoZW1lcw== IE5pbmU= Lk9uZQ== IEVtYmVk IGZheg== dWF0aW9ucw== IHByaXZhdGVseQ== IGxpbmc= W0Y= dXNoaQ== IGxhdW5jaGVz KEtFWQ== R01U IGFpbWluZw== cGF0aWJsZQ== IEJpZGVu aXc= IERlZ3JlZQ== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= ICQoJzw= w6FyaW9z dG9VcHBlckNhc2U= 7KCc IEVVUg== IG92ZXJzaWdodA== IHRhYmxlc3A= VXBkYXRlcw== Lm1ha2VkaXJz IGh1bWlkaXR5 L3RlbXBsYXRl QWx3YXlz KElT X2NlcnQ= RGln IHVuZGVyd2F5 b3J0b24= IEh1cnJpY2FuZQ== IHNwZW5kcw== IFNlZ21lbnQ= IGZsaWVz IFRvZ2dsZQ== IEx5bmNo IHNlbnNlcw== IEtvcw== c2V0RW5hYmxlZA== aXN0aWNhbGx5 IHRlc3Rlcg== IGFkbWluaXN0cmF0b3Jz IHRhZ2dlZA== 0JM= IHNob3J0Y3V0 IFJlc29sdXRpb24= IHN1cGVydmlzaW9u IEFzaGxleQ== VHJhY2tpbmc= dWxhdG9yeQ== YW5kZWw= aXN0ZW4= IHVucmU= KGRpZmY= QU5UUw== IHJpZGVy IHPEhQ== LlNlcmllcw== X29yZGVycw== T1JJWk9OVEFM IHJldGVudGlvbg== 44CCPC8= LlRlc3Rz U3lu LnBhcnNlRG91Ymxl a29kZQ== emVudA== R2VuZXJhdGlvbg== IGFkbWl0cw== IExlYWs= IGFrYQ== Uk9XUw== IEFuZ2VsYQ== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5vb24= IHN0YXJr IGRyYWdnZWQ= 44O844I= IHJlY3ljbGVyVmlldw== IFNpbGljb24= X3N1ZmZpeA== Sm9u Y29jaw== IFByb2JhYmx5 SW50cm9kdWN0aW9u IFRlcnJvcg== KFRoaXM= IEJhc2ViYWxs IGplbnRlcg== Y2hlc3RyYQ== Lm5hbg== PWc= IGNsYXJpZnk= eWlp cm9vdHM= IG5vdGVib29r IEV4Y2VwdA== IHJpc2Vz IEJydXNzZWxz YXRvcmllcw== LlVTRVI= cm9zc292ZXI= L3VwbG9hZA== IEV2ZW50dWFsbHk= Q29uc2lkZXI= IEJvdW5k LmlkZW50aWZpZXI= KHVuaXR0ZXN0 IGluZmVyaW9y IGNyYw== IGF1dGlzbQ== VUlBbGVydA== IEthdmFuYXVnaA== aW5lbWVudA== cXVldWVSZXVzYWJsZQ== U2tpbg== LmJhY2tlbmQ= LmdldFN0YXRl dW5kaW5n IHN1YmNsYXNz IHJlZmluZWQ= IGFubm95 IHJuZA== RGlyZWN0b3I= IOuC YmVjY2E= bW9uZ29kYg== IENvbW1vbndlYWx0aA== QXo= IFRoaW5n IHJlY29t dW5pbmc= CWNvbg== CSAgICAK ZW1pY3M= ZWNk IGhvcm55 QVRSSVg= IG1pc2xlYWRpbmc= IEJldw== L25vZGU= Y3N0ZGlv 4Lin IGFkZGl0aW9ucw== cmly X3JlcXVlc3Rz IHJlY2hlcmNoZQ== c3R1ZGVudHM= X3Bvc2l0aW9ucw== ZXJ0ZXh0 IEV2b2x1dGlvbg== YW5kZXo= IGRpc3R1cmI= a2V5dXA= IEJ1dGxlcg== LnJlYWRsaW5lcw== X3N0ZGlv IGJlZQ== IEFyY2hpdmVz IG5ldmVydGhlbGVzcw== VVJJVFk= IGRyb25lcw== dXJpdGllcw== IOKYhQ== Ij4NCg0K IGRpYWdvbmFs IENhbmNlbGxhdGlvblRva2Vu X0ludGVybmFs IHJ1aW4= LlF0 b2NyYXRpYw== VGVs IEFuc3dlcnM= bWF0aWM= IHhw YXRlbQ== X2pvYnM= X2FueQ== IHNlbmlvcnM= IGxhbmRtYXJr IFFMaXN0 IG1hbmV1 b3RpZnk= LyI7Cg== L3NlcnZlcg== IFBoaWxvc29waA== dXRlbmFudA== KGlv aHo= IGF1dGhlbnRpY2F0ZWQ= ZHY= LUNvbXBhdGlibGU= T3JpZ2luYWxseQ== LGZ1bmN0aW9u 44CCDQo= IFJlcHJlc2VudGF0aXZl YXNpbHk= aXJjdWl0 LmR0 KG1hdGg= Lk1hcnNoYWw= Wyw= IENpdGllcw== X3R1cm4= fCkK IGNhbnRpZGFk YWx0ZXI= CXVp IE5lYnJhc2th IHNraXJ0 LmJn U2hhcmVkUHJlZmVyZW5jZXM= KHN0eWxl IGdyaWVm Z2V3 IHNhZmVn b2xhbmc= X2xpc3Rz 7Js= IGdyYW5pdGU= IGhvdHRlc3Q= LmpkYmM= LkN1c3RvbWVy IOKJpA== IHdhYXI= X3NjZW5l Kycv IEpUZXh0RmllbGQ= IHNlYXRpbmc= IHdlYXJz IGAv Q2FzZXM= IFlvdXR1YmU= xLFt IGJhbGNvbg== LEc= TWV0YURhdGE= LXByaWNl U0NS VW5pdHk= IHRydW5r PXtgJHs= IGVhcnRocXVha2U= UGFydGlhbA== IHN1YnN0 IGVsaW1pbg== PSInLg== Ly8qW0A= IHN1cGVydmlzb3I= dnJvbGV0 X2FydGljbGU= IHBhbmU= Ymlv IG1vdG9ycw== Tk0= RnJhbms= IG9uaW9u LXdvcmQ= SXRlbUNsaWNrTGlzdGVuZXI= IGJyaXQ= ZW5kZW5jaWVz Q29tcHV0ZXI= X3J1bm5pbmc= KGRheQ== LWhl KG5hbWVk IFNhY2g= 0L7Rhw== Y2FtcGFpZ24= LkFic3RyYWN0 KHdyYXBwZXI= LnBheQ== IHV3 R2Vv cmFpbHM= L3NlbGVjdA== aWNodGU= c29ucw== RVZFTlQ= IGFsaW1lbnQ= UHJvdmlkZXJz QXdhaXQ= X0lOVEVSVkFM Lm9mZg== IGdsdXRlbg== X2Nsb3Vk IHdlbg== LmV4dHJhY3Q= CWJ1dHRvbg== L01N UGFydHk= IGRlbW9ncmFwaGlj X2Vycm5v IGhpa2luZw== KCcnKQo= IixAIg== IHdpdA== csOh b2xvZ2ll IFN0eWxlcw== IEJyb3dzZXJNb2R1bGU= LlJlcXVlc3RNYXBwaW5n aWNhbnM= UEFHRQ== Y3JlYXRpb24= IEZlcmd1c29u dWRlZA== bnVtYmVycw== IEdUSw== IHByZXNlbnRhdGlvbnM= IEJvYmJ5 X3NwYW4= ZXN0eWxl IGlsbGVnYWxseQ== YWJlbGE= IGJhdHRsZWZpZWxk Y2FwYWNpdHk= dGVycm9y XSIpOwo= IHdhcnJpb3I= bGVhZGVy IERCRw== IFJldmVudWU= IHZpZ2ls IGNvdW50ZXJwYXJ0cw== KEVycm9y QUNURVI= IGhlZWZ0 IHNlbGVjdGlvbnM= emV1Zw== dG9t LXR3bw== LjsK X3N0YXRlbWVudA== IEFpZA== IFZ1bA== X3JnYg== IHByaXplcw== IGVkaXRhYmxl CWZvcm0= xLFuxLE= LmRlY29y RGVtbw== bGljZXM= IGVuY3R5cGU= cmF0dWxhdGlvbnM= IFJPUw== X2NoYXJz IEphaHI= cGFydGlhbA== 0YPRgg== IFJlY2VpdmU= IExhbmRz QVBURVI= IGNob3BwZWQ= Li4i IEFuYWx5 IFVJRA== IFJhZGVvbg== IEJlZQ== IHVubQ== Pk0= LmZpbmRhbGw= VG9rZW5pemVy IFdIQVQ= IHNq RHJhd2luZw== RXNz T05E irY= KHBhY2tldA== 4oCUYnV0 SW52b2NhdGlvbg== IE51Y2xlYXI= PzsK IGdyYW5kZXM= IENyeXB0 cmVtYXJr ICcuLi8uLi8uLi8uLi8= IGluYWJpbGl0eQ== bWFnaWM= Y2F0cw== IHNpbXVsYXRl OiR7 aW5mbGF0ZQ== IGVuZXI= Ok5P aXBsZXM= IG1lcml0 IFJhdGVk IGdsdWU= L2Jsb2c= IGdyZW4= IHRocmlsbGVk LkNI dW5jYW4= IFBSSU1BUlk= IHBlcnNlYw== IGZlYXJlZA== Lk1JTg== IFRoZWF0ZXI= 6ZI= YXRlZ29yaWU= 5q61 IGFwcGV0aXRl c3F1YXJl IEFsZXhhbmQ= LlVzZXJJZA== X2d0 X2VudGVy IGdyYWR1YXRlcw== RnJhZ21lbnRNYW5hZ2Vy QXV0aG9yaXpl LU5MUw== KE15 IHRyaXVtcGg= dXN0aW5n X1BBUkFNUw== Q2hhcmFjdGVycw== KDosOiw= X0JVSUxE TUh6 IHdhc2hlZA== IHVuY2xl U3RldmU= YXJkb3du PHN0ZGlv X3Rlcm1z IE1BUg== IGhvc2U= dWN1cw== IENsYWlt IFJhbXM= IG1vZGVsQnVpbGRlcg== IG7DqQ== dXNlcklE PWpzb24= LlJlc3BvbnNlV3JpdGVy mOiupA== IGdydXBv LWl0 IEtP LU1haWw= IGNvbmZlcmVuY2Vz SUZB IEFzc2Fk IHByb25vdW5jZWQ= IGFuY2VzdG9ycw== IFRSQUNF IEdlRm9yY2U= IHByaXZhdA== cGVsbA== ZW1vamk= INmI R2VucmU= IGNvbmNlbnRyYXRlZA== amFuZw== TU9URQ== IFpvb20= dG9vbGJhcg== IHV0dGVybHk= IGVuY29tcGFzcw== IFNvY2Nlcg== IGV1cm9wZQ== LWFpcg== LmFuaW0= X0NUTA== aGVyZW50 cmV4 aW50ZXJhY3RpdmU= 44Gn44GZ IEthcw== IGRlc3BlcmF0ZWx5 KGFy IGJpaw== IHRyYXZlcnNl ZXVycw== UmVjeWNsZXJWaWV3 IE1hcmdhcmV0 IGhvcGVmdWw= IE1pZw== X01FTUJFUg== cmVjZWl2ZXI= TWF0Y2hlcg== ZGVwZW5kZW50 IGV4Y2VsbGVuY2U= 0LDQtg== TE9T QXNwZWN0 IGFkYWxhaA== IEVjb25vbXk= dWxvdXNseQ== IGV2YWx1YXRpbmc= IGRldmlhdGlvbg== ZXh0ZXI= L2RhdA== Q29scw== IFBva2Vy Ym9hcmRpbmc= LkNoaWxkcmVu QU5HTEU= w68= IFlvZ2E= IGhhdGVk QWRhbQ== IEZDQw== SU1BTA== IGZhaW50 X0RJU1BMQVk= IGV2b2x2ZQ== IGZyaWRnZQ== IHLDqWc= IGVtb3Rpb25hbGx5 4oCcSWY= YXdlaQ== ZXJlc2E= Jywi QkVHSU4= IFZBUkNIQVI= IHhp ZmFjdG9y dHo= X3BoYXNl U0VR KHJhbmQ= IG1hdGhlbWF0aWNz IGNvbnRleHRz LWFj IEZJRw== IENhcHRpb24= IFdhaXRGb3I= LXdlc3Q= IGZpcmVmaWdodA== X0xFRA== ZWN0aW9ucw== CXRocm93cw== IFRha2Vz b2JyZQ== IEF2YXRhcg== IElubm92YXRpb24= IGNhbGlicmF0aW9u OnRoaXM= X2VuY29kaW5n IGNhbGN1bGF0aW5n ICMjIyMjIyMjIyMjIyMjIyM= IFByb2dyYW1z IEhJR0g= LmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGU= UG9seWdvbg== X0RCRw== Il0sDQo= 0LDQsQ== IHNpbWlsYXJpdHk= IHByemV6 IEZpcm0= IG1pc3VuZGVy IE1vdmluZw== IE1PVg== IHJlYWN0b3I= UmVxdWVzdGVk ZXhwZWN0cw== IGVyZWN0 bGljaHQ= b3VsZGVy SURHRVQ= IGRldmls IHByb2dyYW1tZXM= IENvbW1vbk1vZHVsZQ== ICInIg== KEF1dGg= 44CC77yM IFN0YXRlZnVsV2lkZ2V0 6K6h L29wZW4= aW5hbGx5 LlJvdW5k IFdpc2g= IGh1bWFuaXRhcmlhbg== QWNjZXNzVG9rZW4= IFNPQw== IHBva2Vtb24= IHZhcG9y X2FkZGVk CUdldA== c3BlbGw= IEluaXRpYXRpdmU= IEhFTA== YWlycm8= YmxlZA== INCx0Ys= IHNlbnNpYmxl IEx1YQ== fCgK IGZpeHR1cmVz IG9yZ2FzbQ== Q3V0 dWt0 Z3Vl IGNyZWRpYmlsaXR5 OmltYWdl IENQUA== LnNu KGRlc2M= IFJlaWQ= LWRlZ3JlZQ== X3NvdW5k Q2xvbmU= 4buZ YWtzaQ== PiR7 X2NvbmZpcm1hdGlvbg== IHRyb3BoeQ== V29ya3M= IEVsZWN0cm9uaWNz IE1lZGl0ZXJyYW5lYW4= X21ldHJpY3M= IGFubm91bmNpbmc= IERBWQ== X3Byb3Rv IHBlYXI= YmFzZVVybA== CQkJCQkJCQkK IGNvb3JkaW5hdGlvbg== Ok4= LmFuaW1hdGU= IENvdHRvbg== X2hpdA== 4pw= IGpldHp0 aWZ0ZXI= KGZpZWxkcw== b3dubG9hZA== aWZpY2FjaW9u LmN1ZGE= IExpdQ== PmVxdWFscw== IEFjZQ== 0YDQsNC8 IFN1cGVybWFu IEdhcmNpYQ== IGFycmVzdHM= YWdhcg== IHt9KQ== IG1hY3Jvcw== cm91cGU= w6p0cmU= IHR3aXN0ZWQ= c3RydW1lbnRz Xygi X3ZlcnRpY2Vz IFRyYW5zaXRpb24= 0LjQug== W21heA== bWluZA== IGFjY2Vzc1Rva2Vu IHVubGU= bXVz Y29w IEZhY3Rvcg== IGNvbmNlZA== IHJldHI= LmxpbmFsZw== LXNsaWRlcg== b2Js X1N0YXRpY0ZpZWxkcw== IHpvbWJpZQ== c2VsbGluZw== IGNoYXA= IHNoYWtpbmc= IFRyYW5zbGF0ZQ== IEFtc3RlcmRhbQ== IEVUSA== X0VYVEVSTg== a2Q= X2Rpc2M= IHByZWNlZGluZw== IHByaXg= T2JqZWN0TmFtZQ== X21vZGlmaWVk YXJkd2FyZQ== ID8+Ij4= IERX YCR7 ID8+Ij48Pw== dXllbg== IGRvbm5h IHhzaQ== ICQiew== IERyYXdpbmc= LG5pbA== IG9uZGVy Qkc= T2JzZXJ2 IGNvbnNpZGVyYXRpb25z Ym9hdA== IEJhbmtz IGluZGljdA== LEk= IEJsdQ== KHZlcnNpb24= Y2xpZW50ZQ== b2xhbg== TEVTUw== YXNzZXJ0U2FtZQ== X3ZvaWQ= IFdBUw== CWVudW0= IG1peGVy RVc= YWZmZQ== IGJsb3dqb2I= dGV4dEZpZWxk IGltbWVuc2U= X3JlcG8= IGdsb2JhbHM= YW50YWdlcw== LnRvZGF5 VGh1cnNkYXk= IEJyaWc= e30pCg== IEltYWdpbmU= KEdQSU8= IGVzdG8= IFByb3ZpbmNl IE1lbnRhbA== X2NlbGxz IEp1bGlhbg== LlNjcmVlbg== IGNhbmRsZQ== IG1vbmRl IHZlcmc= aXRlcmFscw== LWxheW91dA== R3Vlc3Q= IHZpbmQ= IEVjaG8= Jyl9 IG1hbm4= X0JPT0xFQU4= aGFw IG5pZ2h0bWFyZQ== VUdI IG5vbmV0aGVsZXNz IGF0aGU= IEhvbGxhbmQ= IEJvcm4= XE9STQ== YW51dA== X2xldmVscw== IHBldGl0ZQ== LWFydA== X1NIT1c= bnVtYmVyT2Y= X3RodW1ibmFpbA== YW1pbnM= IERlZmluZXM= ICI9 LlN0YXR1c0NvZGU= IGRpZ25pdHk= IEJpa2U= Lk5ld0xpbmU= IEdsYXM= KGxvZ2dlcg== IGNhdGNoZXM= dm90ZXM= IGV4YW1pbmluZw== L3JlZ2lzdGVy IHNwZWNpZnlpbmc= X2ZpeGVk IGRyYXdpbmdz VGhyZXNob2xk QXg= IEFyY2hpdGVjdHVyZQ== KHBpZA== V2lyZQ== KGNvbnQ= bGFuZQ== TGlzdHM= IHNwcmludA== IGdyYW5kZmF0aGVy X0FH IHNjaGVkdWxpbmc= Q0xVUw== YXR1cml0eQ== IGxvY2tpbmc= W3NpemU= X3N0eWxlcw== IHdi LS0+Cgo= IHNwaW5uaW5n X3BlbmRpbmc= TWF0Y2hlcnM= LktleXM= IFBW ZW51cw== YW50aXM= IGRpc2NhcmQ= IGhhdWw= IGVtcGly IHBhdGh3YXk= IG9haw== 0LzQtdC9 LWluZHVjZWQ= IGltcGFpcg== IENhbGdhcnk= LmlzSGlkZGVu ZHo= X2luY2x1ZGU= IGdt ICcoJw== UFk= dWdnZXN0aW9ucw== IGNvbW1vZGl0eQ== Y3Jv L3N1Yg== IGdldEluc3RhbmNl IExlZ2FjeQ== IEtpbA== QmFs KHNob3J0 SW5mb3Jt K3g= KnI= IEhvcGVmdWxseQ== b3JhdGU= IG1hY2hlbg== IHRyZWF0eQ== IE9yaQ== LnB1YmxpYw== LWhvcml6b250YWw= IHRhY3RpYw== IGJvcmQ= d2FyZXM= IGFtbW8= IExpc3Rz IGVxdWF0aW9ucw== L2hlcg== IE5TVw== Qm91bmRpbmc= X0NvbGxlY3Rpb25z IGF2YWls LkRyb3BEb3du 6LA= IGho IGzDoA== LnBi IG1lbW9yaWFs IEFUVFI= IGV4aGF1c3RlZA== IHRzcA== CXJlZGlyZWN0 IGxpa2V3aXNl U1RFUg== TGphdmE= IGNvbmRlbW5lZA== b2NhdXN0 KHN0cmljdA== IGV4ZW1wdA== IHNtcw== IGV4YWdnZXI= U1lT IGxvdW5nZQ== Ol4= IHRvZGQ= ZGVi YXRvcmlhbA== IFBvcnRlcg== IHR1aXRpb24= IGV4ZW1wbA== IHBhcmVu LmxpbmVUbw== IGtpZG5leQ== IMOnYQ== IGN1aQ== 77yM6K+3 WEM= IG1vxbw= IG5vbWluYXRlZA== bHVuZw== SW1HdWk= IEJ1eno= IHN0ZXJlbw== cG9ydGFs cmVzYXM= IGtsYXNz IGRyYWZ0ZWQ= IHByb2plY3RpbGU= L2dwbA== KHBhcmFtZXRlcnM= KikK IGFzc2lzdGVk IE5TSW50ZWdlcg== c2l0ZW1hcA== Om50aA== LlZpZXdz LkFyZ3VtZW50UGFyc2Vy IG1lZXI= emllcg== IERpZw== PD89JA== X3Blcm1pc3Npb24= CUFkZA== b2xvZ2lh IHNjaQ== IGZpbmFuY2lhbGx5 IHNjcm9sbGluZw== LmRpc3Q= X0hBUw== dWJ1bnR1 LnBhZ2Vz SW5jcmU= YnVyc2U= IEFtYXRldXI= 5rqQ QmxvYg== IGNob2xlc3Rlcm9s REVT bWluaW11bQ== IHJlZnVzaW5n dW5uZWQ= 0Jw= IFJE LlNlcnZsZXQ= ICovOwo= dWRkZW4= IHZpZXdCb3g= IG1ldGFib2xpc20= IHN0ZWFsaW5n IEJldmVy YWduZXRpYw== VkVSUklERQ== X0FVRElP 0YDRiw== IGFyY2hpdmVz LmxpbmVhcg== PXs8 dW5jYXRlZA== QWNjZXNzRXhjZXB0aW9u IHBpY3R1cmVCb3g= CXNlbGVjdA== TGF0aXR1ZGU= dmlzb3I= cmVpYg== IHBhaw== SG9wZQ== IEl0ZXJhYmxl LnJlc3BvbnNlVGV4dA== IFF1YWQ= IEJyb29rcw== IFRvdA== T1BU ZWxvbmc= IGNvY2FpbmU= IGFubw== RGFu IHBzaQ== 0LDQu9GM LmdldENoaWxk IFJFRg== LWFi IFRyaWFuZ2xl PFRleHQ= IENvbG9tYmlh aW5reQ== 6Imy KX0+Cg== IHBsYWc= cGluZQ== IGJsYW5rZXQ= IDo8Lw== IFRyYW5zbGF0aW9u bm92 IHBlcmZlY3Rpb24= IENvbmZlZGVy LnN0dWI= LkludGVyb3BTZXJ2aWNlcw== LlN0b3Jl IGVucm9sbG1lbnQ= IGRlZXI= TW92ZW1lbnQ= LWZyb20= aGM= IGV2YW5nZWw= IElsbHVzdHI= IHRydW1w X1N0YXJ0 cGxhbmVz IEJpbA== SW5mb3M= LXRyYW5z IHJhbmNo IExpbmRh X21hcg== UkVU L25ldA== TGF3 TkY= IFByZXZlbnQ= IGNyaWVk IGVkdWNhdGU= YXN0aWNz eWk= LkxpbmVhckxheW91dA== TUVUSE9E IEVn bWFwcGVy 5pmC LmFzYXJyYXk= z4E= acOnw6Nv UmV1c2U= X3Jldg== IFBST0RVQ1Q= X0NvZGU= ICAgICANCg== IFNFUlZJQ0U= X2NvdmVy LiwK LkV4ZWN1dGVSZWFkZXI= IERpbmluZw== LmFyY2g= IG90cm8= IERpc2NvdmVyeQ== IEtleUVycm9y IEJlbmVmaXRz X1NIQQ== LlVubWFyc2hhbA== SEVBREVS TXV0ZXg= QU1B IGluaXRpYXRl U3RheQ== TGl0dGxl ICgpLA== IGRlY2VudHJhbA== UmVzb2x1dGlvbg== LmhlYWx0aA== CWZjbG9zZQ== 5Lqk IHN0YWtlaG9sZGVycw== IGFyY2hhZQ== RGlnaXRhbA== bGVzY29wZQ== X3Blbg== IEl0ZW1TdGFjaw== IENhbm9u IEtlbmQ= IMO4 X2FqYXg= aW5ncmVkaWVudHM= RGVsaXZlcnk= U2VjdGlvbnM= IGRpc2FwcG9pbnRpbmc= IEdyZW4= LHJl IGRlY3J5cHQ= b2xvZ2lj X2ZtdA== IFNsaWRlcg== bmFo V2FzaGluZ3Rvbg== enVuZw== INGG eWN6 aWV2ZXM= LkRFQlVH IFRJ IGhhY2tpbmc= IGNlbnRy Zmxvd3M= IGRpZFJlY2VpdmVNZW1vcnlXYXJuaW5n IGFjY291bnRhYmlsaXR5 Q09VTlQ= 0LvQtdC80LXQvdGC Ymxv L2lk IFNsb3c= aXp6YXJk LnJlbW92ZUV2ZW50TGlzdGVuZXI= IOyehQ== L0k= aXNtYQ== IEh1ZHNvbg== fX0s dW1lZA== IHJlYWxpc2U= dW5zYWZl IHp1cw== IHNob3J0YWdl b2xpYQ== X3ByaW9yaXR5 IGZsb29kaW5n b3BlcmF0aW9ucw== UG9seQ== YWJhbg== W2N1cg== IGVza29ydGU= X0RFU0NSSVBUSU9O X25hdA== IG1hbGljaW91cw== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= IFBhcmtz IHRheHBheWVy IEZvc3Rlcg== IHNleHVhbGl0eQ== 57O7 67A= XA0K LnNlZWs= 0LDQvdC40Y8= L2FydGljbGU= 6L+H IFVocg== IGdyYW5kbW90aGVy IEJsZQ== ZnVydA== YW1iYWg= bm90aWZpY2F0aW9ucw== ZGVwcmVjYXRlZA== IHVpbnRwdHI= b2tp KEFycmF5 IGF1dG9ub21vdXM= IG9icg== wq/Crw== IGJhc2VuYW1l IHVudmVpbGVk c29s IE5vdEltcGxlbWVudGVkRXJyb3I= IGRlcHJlc3M= XycuJA== IFVOSVQ= JScs LXRhZw== Z3JlcA== IE1haW50ZW5hbmNl IHdhcmZhcmU= X1JFU09VUkNF KHNwZWM= KGN2 IG5hZGE= 55S1 IGNyb3dkZWQ= QmVsb3c= IFphY2g= RXN0YWRv X3ByaW1l IHRyYWJham8= IGluZm9ybWF0aXZl U2NvdHQ= IHNlcmlhbGl6ZXJz IE5hcw== VGh1bms= IG1lcmN5 LC4uLgoK IGFkZGljdA== LmNvbnN0YW50cw== IGRhdGFmcmFtZQ== X3JlYXNvbg== Z29tZXJ5 7Iq164uI64uk IG5lZ2xlY3Q= IExpbmVz IG1lbWI= X0VYRUM= YXNzYWdl IFlhcmQ= e30nLg== IGxvdHRlcnk= dGVpbg== X2NhbGM= aWt1 X1JFQ09SRA== V2Fybg== IGhlYWx0aGllcg== dXJlbWVudA== IHlhcm4= IENvcm5lcg== KHppcA== KGluaXQ= IExpdA== SFc= c3Vic2V0 IE1G RVRFUlM= X3JvdA== IGVyZQ== IE92ZXJyaWRl V2FsbGV0 X3Jld2FyZA== IHNhZ2U= c2V0VmlzaWJsZQ== IEpzb25SZXNwb25zZQ== SUNZ 6K+i VmFyQ2hhcg== YWF0 LWdyZWVu IGlycQ== YW5pdHk= IHdob2V2ZXI= X3NoYXJl IGZvdXQ= cm9sbHM= IHdpbGxpbmduZXNz LmNvbXBvbmVudEluc3RhbmNl IGhvbm9yZWQ= dXJ2ZXk= QmVy IHJ1bm5lcnM= IGxpZXU= b3Jwb3I= X3N0cnVjdHVyZQ== QmFyQnV0dG9uSXRlbQ== YWR4 IEJlbm5ldHQ= IGRpbGln IGZsdWN0 SURERU4= X1NlbGVjdGVk KGRpdg== IHF1aWNrZXI= YWxvbmc= Z3JhcGhxbA== aW5leg== IGNpdGU= IEluc3RydWN0aW9ucw== IGluc2VydGluZw== LmNsb3VkZmxhcmU= Y291cG9u ZWRMaXN0 IFN0b3Jlcw== X21hbGxvYw== 56ym IEF3ZXNvbWU= IGxhbWI= UkVTVA== IGludGVzdA== IE5hdmJhcg== LmZlYXR1cmVz SW5jcmVtZW50 IFBvbQ== IGluc3VmZmljaWVudA== X0xPR0lO UExFTUVOVA== IE9BdXRo LklORk8= IGV4b3RpYw== IENBU0U= CSAgCg== IEdhbmQ= dGhlc2Vz IG5vdm8= IERlbGw= 4oCm4oCm4oCm4oCm X3NvZnQ= IGFncmVlaW5n Y2VudHM= bG9hbg== JyIsCg== IFJhbg== REVM IG9yZ2FuaXNlZA== K24= IEhlYWx0aGNhcmU= IGRldGVyaW9y IGltcGxlbWVudGF0aW9ucw== IGNhcm4= ICwn IExPQUQ= IHBsYW50ZWQ= 5pyq Rm9ybUNvbnRyb2w= X21hdGNoZXM= IHBlcmlvZGlj X1Rv IEpvZWw= IGFua2xl IG1pbGl0YW50cw== IFdpdGNo dW5pZm9ybQ== dWVudGE= T2ZXZWVr IHBlcnBldHI= IGludGVydmVudGlvbnM= KHdyaXRlcg== YW50aW5l UHJvZ3Jlc3NCYXI= IGxlYWd1ZXM= Y29tcHJlc3M= aXppb25l IEVB Il09Ig== IFN0ZXBoYW4= bWludXM= c3N0cmVhbQ== X2xlZA== ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= IldoZW4= QWxyZWFkeQ== IGNvbnRlbXBs IGF0YXU= IENvbmdyZXNzaW9uYWw= IHJhcHBvcnQ= IEJvdXI= aXNoaQ== IHR5bQ== IEFybWVu INGA0LDQtw== LWZvcm1hdA== X1JlYWQ= KGNvbHVtbnM= IG5ldWU= X2JveGVz IFNhbmR5 XywK IFdpemFyZA== IG9yZGVu IGZpbGVzeXN0ZW0= ZmxpZ2h0 IHdzeg== YW5jZWxlZA== IGRhd24= IEdzb24= X3dhcm5pbmc= IEljZWxhbmQ= IHNsdXQ= IHNldElz X2lkZW50 IG9mZnNob3Jl IFNrZXRjaA== OyU= IHRyaWJlcw== X1NQQUNF IG90cm9z Q29tcGlsZXI= CUVuZA== IF0pLAo= R3Jhdml0eQ== IHRlbnNpb25z IHNtb290aGx5 S25vdw== b290aGluZw== IFN0YXJ0dXA= IEh5cA== IGFtYXpvbg== IFJlY2VpdmVk emVuaWU= 654= IENob2NvbGF0ZQ== IMSw Ik5v IEFMUw== IFByb2dyYW1taW5n IERvZ3M= IGdvb2RuZXNz KGVycm5v L2Vz IHJlbW90ZWx5 IEhvb2tz VXVpZA== IG92ZXJseQ== IOWQ IGdwdQ== IHN0aW11bHVz KHN0ZXA= LllvdQ== IGJpb20= SU5D LmJpdHM= KG1Db250ZXh0 IGFtZXJpY2Fu IHRlcnJpdG9yaWVz IE5E XSIK IE1hcHBpbmc= IHByb2NlZWRpbmc= LmF4 IHN1YnN0cmluZw== QlVUVE9O IEln LXBhbmU= IEFucw== IGdyYWR1YXRpb24= IHBlcnNwZWN0aXZlcw== TWl4aW4= X21pbnVz CQkJCSAgICA= IikpKQ== bm9ybWFsaXplZA== Lmxhc3ROYW1l IGNsYW4= QXNpYQ== KE1vdXNl cGFnaW5hdGU= IGdpZg== ZWxpZw== IHBvc3RlcnM= bmluZ3M= IM+E IGFwb3N0 IElocmU= RGxsSW1wb3J0 IEVxdWFs IGRpc3Rpbmd1aXNoZWQ= bmVhcG9saXM= IGJhY2tkcm9w IEFsdGVybmF0aXZlbHk= L21vZA== IGxlbmQ= IFNIT1c= X2NvZGVz IGF0w6k= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LWNhc2U= Y2h0ZQ== IGRvbmM= OmFkZA== TmVnYXRpdmU= ZmF2b3JpdGU= IGF0dHJhY3Rpb25z aW50Q29sb3I= IFBpcg== Q29ubmVsbA== TWFuaWZlc3Q= dGVhbXM= IH07CgoK IHBsdXJhbA== IG92ZXJ0aW1l IEV1cm9wYQ== IEJhbmdsYWRlc2g= KGFu IGxpbmd1 aXRpbWU= aW5zdG9u LnNoYWRvdw== 56iL IFVTUw== U2VydmVyRXJyb3I= SVZFUlM= IEppbg== IGh1bWJsZQ== YXV0b2xvYWQ= YXJleg== 4oCy IEFzdHI= aWNvbG9u LlZpZXdNb2RlbHM= b2Jv IHN3aXBl IHJlY2Vzc2lvbg== 6ZU= IOyY bmVyZw== aW5ncmVkaWVudA== bWFpbHRv IEZhbWU= UHJpbnRpbmc= UGl4ZWxz IEJhc2g= cG9zdGE= X0pP IGluZmFtb3Vz IExhbmM= KGxvY2FsU3RvcmFnZQ== LmJsaXQ= IHlvdW5nZXN0 IGZpZWxkTmFtZQ== IGNvbnRpbmc= IHdvb2w= IEltR3Vp IE5TVA== LnByZWZpeA== VG9JbnQ= IFNveA== IGhhYml0YXQ= KCJ8 PSciKw== SU5HVE9O X3dyYXA= dWNrZXRz IFdSSVRF IG1lZGljaW5lcw== IG1lbWJyYW5l IEpUZXh0 IHJlcHJvZHVjdGlvbg== X3JlY2VpdmU= VGFibGVSb3c= cXVldWVSZXVzYWJsZUNlbGw= aG9va3M= IHJlbHlpbmc= IGRyaWxsaW5n X0ls KGV4Y2VwdGlvbg== IGR1cmFiaWxpdHk= IGhlc2l0YXRl IGNvbXBhcnQ= SUxJTkc= IEVsZGVy IGNhZmZl IGRldmVsb3Bz aXNoZXI= IHBseQ== IHRvbA== X1BMQVk= IGZyaWN0aW9u KGFsd2F5cw== IGluZGlnZW5vdXM= IE9wZXJh IENhbXB1cw== YW5jZW1lbnRz IGxpdHRlcg== LmxpbWl0 KFRva2Vu ZW5pcw== IGhpZ2hsaWdodGluZw== IEF1Yg== IHZhbGlkYXRvcnM= LWhvc3Q= d2hlZWw= PHs= KSkr IE5ld3NsZXR0ZXI= X2F2ZXJhZ2U= IHNvZGl1bQ== IEhpbA== IE1pbGU= IEF1dGhTZXJ2aWNl U3RhdGlzdGljcw== IE51dHJpdGlvbg== IHNwb25zb3Jz b3ZlbmFudA== PT09PT09PT09PT09PT0= LkFic29sdXRl IGbDpQ== SGFuZGxpbmc= IC0tLS0tLS0K KGRpcmVjdG9yeQ== IikuCg== YW5vbA== LmJyb3dzZXI= IEdyaW5kaW5n IGNr RnJlcXVlbmN5 KClbJw== QWRqdXN0 Y3Jldw== YWZldHk= IGdu IHdpdmVz b29v IHByb3N0aXR1 IG/DuQ== aWZ0eQ== IGxpdGlnYXRpb24= IEV6 SmVmZg== LnBr IFNob2Vz Y29ybg== eXl2c3A= IGFkYXA= PXU= Q09ORg== QU5EQVJE IGVsZXZhdG9y YmlsbGluZw== IGNhbmQ= IGNhcnA= W2ZpZWxk LWxpYg== c2VxdWVudGx5 Pi0= IGxjZA== LS0tLS0tLS0tLS0tLS0t KCIi IHRhY3RpY2Fs IFJvbmFsZA== ZXh0cg== IEZlc3Q= IGZ1ZXI= LW5hdmlnYXRpb24= IGti Z2hvc3Q= IGhhbmRsZUNoYW5nZQ== X2Nscw== KCkhPQ== Q29tcGFyYXRvcg== LnZt IENveA== X3Jldmlldw== L0A= X2Nvb2tpZQ== IHJlY29nbmlzZWQ= bGRhcA== VGhyZWFkcw== IFNleHVhbA== IEJlYXJpbmc= KFNRTA== IHhy IHRoaWdo VVJMQ29ubmVjdGlvbg== IFNVVg== IG1Db250ZXh0 IGluY2lkZW5jZQ== IEVzdGU= LnN1cA== X3Rl KEVYSVQ= Q01E LyI+ QWxtb3N0 IFVuZQ== IGFuZGVyZW4= IFNpbmdsZXRvbg== IGJvcmU= VGhpbms= IG5hcmM= XWluaXRXaXRo X3Nob3A= KHN0cmF0ZWd5 IScs aGVyaXRz IERlc2s= X21hY2hpbmU= Lm5ldHR5 xLFuZGE= PTw= IFFS IFNpZGViYXI= LnNwbGl0Q29udGFpbmVy IG9uU3VjY2Vzcw== IG1vbmtleQ== RW5qb3k= KG5vZGVz cGVjdHJ1bQ== ICgqKA== CVVJTlQ= LGhlaWdodA== IE5ldHdvcmtz LnRhaWw= LmxpbnNwYWNl ICIuLi4= TGlzdGVu xqE= LkNoYW5uZWw= LWRlZmluZWQ= UmVwZWF0 YWRqdXN0 RVJN X2FwcGxpY2F0aW9u LmFzc2VydE5vdE51bGw= LXN0cmVhbQ== IHJhYmJpdA== IHBvc2l0aW9uaW5n IHdva2U= IGZpbmc= IG11bHRpcGxheWVy IHJlZ2lzdGVyaW5n dW50aWw= w6Vu KDo6 dXNzaW9ucw== IHBvdGF0bw== IEVxdWFscw== LlN1cA== L2FwYWNoZQ== ICg9 LiIp LnB0cg== IFNwZWVjaA== LmNsaXA= IEdhYnJpZWw= IG11c2ljaWFu L2lzc3Vlcw== LnNob3A= IEhpZXI= X1JFVA== X2J1Y2tldA== 44Oh YXZz IHJveg== Zmxvd2Vy V3JpdGVCYXJyaWVy IE1pbGFu IGxlZ2lzbGF0dXJl IERvbGw= IHByb3Zpbmc= LmNvbmNhdGVuYXRl 4pWQ IGdjaGFy Y2RuanM= Ymxlcw== IExpc3Rpbmc= 0LvQvg== LnhyTGFiZWw= IFNhaw== anVzdGljZQ== IFZhbGVudGluZQ== dW5sZXNz IHBpZ2Vy KHJ1bg== IHRlc3RpZmllZA== QU5B IFJlbW92ZXM= KSkpKTsK cmVjYXRlZA== IFJ1bnRpbWVNZXRob2Q= IGNvbnF1 44Ki IHRpc3N1ZXM= YWlsZXI= w6l0w6k= LVN0YXI= IGZsYW1lcw== LnNldEljb24= IHN1cGVybg== IHZhZ2luYQ== LXZhcmlhYmxl IHdlbGxuZXNz Q1VS IGJlbGxl LmdldFJlcXVlc3Q= IHBvY28= YmVuaA== YWdlbnM= IHNwaWxs IEp1cg== IGRpc3BhdGNoZXI= 0L3QvtCz0L4= ZW1vbmlj KGRpcm5hbWU= INCU IHBhc3Nl IGdhbno= cmljaW5n RVU= IG11amVyZXM= ZXNzZW4= LmF0dHJpYnV0ZQ== amo= CQkgCg== W14= IHN0cnRvbG93ZXI= bGV4ZXI= ZWN0YXI= aG90ZWw= LnNxdWFyZQ== IHJhbGw= IGxvd2VyZWQ= aGFuZGxlZA== TWFya2V0 IFVzZXM= aXZhcw== LkJ1c2luZXNz 44GX44Gm RElW IHdhc3RlZA== IGF2b2ly w6pt X0FDQ09VTlQ= LmV0 CVNETA== a2Fw IGZveA== dXBwZXQ= e30sCg== Iiwn RmF2b3JpdGU= UEVORA== IEFFUw== fSks IGRlZHVjdGlvbg== IHBvbMOtdA== IGNvbXBvbmVudFdpbGw= IFRlbGVyaWs= X1NFTEY= IG11c2U= Q3JhZnQ= IGRlbnM= 4KS/ KHRw IHRhc3R5 IGJhbGFuY2Vz IGRlZGljYXRpb24= IFdhbGxhY2U= IHVubGF3 XCI+XA== IG11bQ== LXVwZGF0ZQ== ZW1lbnRl IHNvZGE= UmVwdWJsaWM= YXNtaW5l w6lyaWM= KFN0YXR1cw== IEpzb25Db252ZXJ0 IERpc2s= LlJlZGlyZWN0 IGZpbG1pbmc= L21vbA== Um8= IHZpbGxl IHRyYWJhag== IHN5bnRoZXNpcw== cmVnYQ== IHJs U2NoZWR1bGVy SVNIRUQ= Y3VycmVudFVzZXI= KGVycm9ycw== J2g= X2JvdA== eGltbw== IFVTQVJU X3N1cGVy X0RFQ1JFRg== 0L3QvtC5 X1JPVw== IHByb21vdGVz IFRB IGhvcmFz IFJlcHJlc2VudHM= IG5hbWVvZg== IEV4Yw== IEdhcmFnZQ== IHNlaW5l LCM= IGhlcmI= L3Jlc291cmNlcw== IHBsZWFkZWQ= LnJhZGlvQnV0dG9u IOaY T3Bz IE5lc3Q= Y3N0cmluZw== IERlZmVuY2U= IHJlZmVyZQ== X2xlYWY= IHJldmVsYXRpb24= 66c= LmV4ZWN1dGVVcGRhdGU= X1dPUkxE IGV4cGFucw== KCJcIg== amFi IGRvdWJ0cw== IEdlb21ldHJ5 IGludHJvZHVjZXM= IHNlbmF0b3Jz IGNhbmFs LmhlbHBlcg== IEJpb2xvZ3k= X1NFTlM= LnByZXZpb3Vz LXRvdWNo YWJpdA== IGltcGFjdGVk IGJyYWNrZXRz LmRpcmVjdA== YWNjdW0= IHRlc3Rvc3Rlcm9uZQ== CWFjdGlvbg== IENoYW5jZQ== IHBlYWtz Q3BwQ29kZUdlbldyaXRlQmFycmllcg== IHVuYmVsaWU= X3ByZXNz LlJlbA== YW5nbGVk L3RlbXBsYXRlcw== LS0+DQo= bGltZQ== IHN1ZmZpY2llbnRseQ== X250 RXhwYW5k LmlzZmlsZQ== IGlzRW1wdHk= IHF0 IG11bGhlcg== YWNvYg== R2Vvcmdl 5bi4 IGFzc2lt YXNv IGNvbXByaXNlZA== T1Y= KENPTkZJRw== CXdyaXRlcg== IGRlc3A= IHRlbnVyZQ== KGNy LnBvb2w= IEJyZW5k IGNlbnNvcg== KHRpbWVvdXQ= IHBsZWE= LldyYXA= IHRpZ2h0bHk= IFdlcmU= IElnbm9yZQ== YWJlaQ== IGJyaWRnZXM= IGNvbmRlbW4= IHNpbXBsaWNpdHk= IHJvdXRpbmVseQ== IGJsYWNrcw== amI= IFBpdA== VXRm IC8K cmVsb2Fk IHNldE9iamVjdA== L2dsb2JhbA== IGZhdHR5 IHNvY2tz Q291bGRu IGVyb3Rpc2s= 5p2h IFByZXNzdXJl IE1heg== bnBvcw== dG9sb3dlcg== IEVR dXRldXI= IE1vbWVudA== IGV0YQ== e3stLQ== IGdyYXBocw== IEd1YXI= cmluZQ== KC0t IEh0dHBTdGF0dXM= KHN0dWRlbnQ= Km5w IHJhaWx3YXk= IGFzeW5jaHJvbm91cw== X3Zt J10sJw== LHRleHQ= bWVyY2hhbnQ= KEd1aWQ= IEdyYQ== aXhlcg== ZmV0Y2hBbGw= LmFkZExpc3RlbmVy ZmxpcA== KiQ= PigpLA== IHN1bmxpZ2h0 YXNzaWduZWQ= IGFiYw== IENPTFVNTg== IPCfmYIKCg== KS4uLg== IGVuc2VtYmxl IG5ld2xpbmU= X1NJTkdMRQ== aWVkYWQ= IGRhcmtlcg== b3JtYXA= IGxpb24= cGxpdHM= IGlsbHVzdHJhdGlvbg== IElFRUU= IHZpc3Rh b3VzYW5kcw== KioqKioqKg== IFRvbW15 IGh1ZQ== U2Vs IGF1cmE= IFRoZXJhcHk= IGFuaW1hdG9y LmNvbnN0cmFpbnRz IHZhZ3Vl KCIiKQ== IHZpbGxhaW4= IGJsZXNzaW5n IHN0cmluZ0J1aWxkZXI= IE1pc2M= IERJUg== ZmF4 LW5vZGU= IFdhbGtpbmc= IEFV c2Vzcw== IGdyaWxs VkVSVElTRQ== IEZvb2Rz IHRvdXJuYW1lbnRz w5M= IE1hcnNo IHdvbmRlcnM= TG9uZ2l0dWRl LkNvbW1hbmRUZXh0 PWlucHV0 X2VuY29kZXI= cGFnZVNpemU= IGdldFN0YXRl Pj4K LmdyZXk= cG9k IHJlYWRpbmdz IHJlY29uc2lkZXI= U3RhcnR1cA== IGV4Y2Vy LmJhbGFuY2U= X2N5Y2xl X1RpbWU= TE9DQUw= IEVGSQ== IFJleW4= LnNldEZvcmVncm91bmQ= Ynlu IGRpc2Nvbm5lY3RlZA== QUNUSVZF IGVtYmVkZGluZw== aWNrZXJz IHN1cnJvdW5kaW5ncw== KmM= IGdhcmFudA== IGJm IHdpcGU= IOS4iw== X1RSQQ== YWRveA== 55U= IHN1Y2tz IFNvbmdz IEFzc29jaWF0ZXM= IEJhbGQ= IEJyZXR0 dmVuaWxl IHZ0 IGluYWRl IHJlc2lnbmVk IEdsZW5u LnBhdHRlcm4= LkRhdGFCaW5k 0YPQvA== TGF5b3V0SW5mbGF0ZXI= Y2hldA== IFRlc3RhbWVudA== Lm1z IHBhdg== IFJlYWN0RE9N dXJkeQ== QURBVEE= TXU= L2FjdGlvbnM= IEpz X2V4dHJhY3Q= IEJyaW5n Omlk c3RydA== aXZhdGlvbg== IG91dHJpZ2h0 YXp1 bG95bWVudA== 0LjRjw== YWxkbw== IFB1Ymxpc2hlcg== RWR1Y2F0aW9u UGFsZXR0ZQ== X2Rydg== ICgkKA== IEFuZGE= IHJlbWVkeQ== IGluY29uc2lzdGVudA== dGVjdGlvbg== IHJlZ3VsYXRvcnM= IHNob3J0ZXN0 KHBhaXI= IEluc3RhbGxhdGlvbg== IGRlZmVuZGFudHM= ICgpOw== LWxhcmdl TWVs IHRocmVhdGVu 0L3Rjw== IGZldGlzaA== b3RpbmU= X2RpYw== IDwk IHN0YWdnZXI= c3Bp JHJlc3BvbnNl U2Vydg== LWJvcm4= am9z CWltZw== CVdIRVJF X2x0 5b2T LmNvc3Q= IFR1ZQ== LmxhYmVscw== IExW d2Nzc3RvcmU= IEplc3Nl 4Lir VHJhZGU= IHByZWRlY2Vzc29y 64I= ZmluYWxseQ== X2dlbmVyYWw= b2dnbGVy X1JFR0lPTg== bmVtZW50 IGJsb2dnZXI= IEhhcmJvcg== IERhdGFzZXQ= W3c= IGF0dGVuZGVlcw== Lmljbw== bWF4aW11bQ== LlVubG9jaw== X1NZTkM= w6FnaW5h IGRvd25z IFdpaQ== XSkv IGtpY2tpbmc= dW5pY2F0aW9u IERBQw== IElEUw== IFJlbnRhbA== IGN1cnJlbnRUaW1l IHZhY2NpbmVz IERldmls IG5vcnM= X21vdXNl dXJyZWN0aW9u KG5v ID4NCg== IGFnZ3Jlc3Npb24= IGJyZWVkaW5n LnN5bWJvbA== aW1hbg== QWJzb2x1dGVQYXRo IFdITw== X2ZsdXNo LXJvb3Q= YXJuYQ== Jk0= IGZhdGhlcnM= IFJvY2tldA== aXZlYXU= IHdhbmRlcg== IGNvbXBvcw== IFdhcnJpb3I= IFNlYXQ= IENsaW5pYw== X2ludm9pY2U= KGRpc3BhdGNo UHJvZHVjdG8= YXR1cmluZw== b3NzaWVy IE1BWQ== IGRhZ2dlcg== IHNhbml0aXplZA== IFJGQw== IHByb3Bo IHVyaW5l IGdyaW5k IEV4cGFuZGVk ZGVzY3JpcGNpb24= LWZ3 IEtlcnJ5 PW5hbWU= IGNoaw== IG5hdGlvbmFsbHk= IHRoZWU= SW5j ID8+Pg== LlJhZGlvQnV0dG9u Lkh0dHBTZXJ2bGV0UmVzcG9uc2U= L1k= CWZpZWxk IGhvbW1l eXBlcg== UGh5c2ljYWw= PXY= IGRyaXY= IEVycm9ycw== IGPEgw== RGVhdGg= IFdJTkRPVw== IHBvZXQ= IFNoYXJw IEltbXV0YWJsZQ== CWNyZWF0ZQ== IGdlaHQ= IFJlZm9ybQ== YWlzZXI= IEluaXRpYWxpemF0aW9u IGltbXVuaXR5 LmNvbXBvc2U= IGxhdGVuY3k= IExlYmFub24= IFBhcmFk IGZ1ZWxz IEV4aGli Y29o JSI+Cg== IENMSQ== KWluaXRXaXRo LVph X0NMRUFS cmVnbg== IGZpbmFuY2Vz LnN0YW5kYXJk X0NBVEVHT1JZ LmxpYnJhcnk= IHRyYXZlbGVycw== X3dw IEV2YWx1YXRpb24= c3RhcnRpbmc= ICkpLAo= ZXBpc29kZQ== IFZhcmlhbnQ= IGRhZW1vbg== IEp1bGlh IE5S IGRvdWJsZXM= PHY= L3J1bnRpbWU= IGludGVycHJldGVy IElOREVY IEhvbG1lcw== X0RJTQ== IHBhZGRsZQ== X2V4YW1wbGU= IGZvcmVncm91bmQ= LnJvdXRlcw== IHNvd2ll U1VDQ0VTUw== IENEQw== IEJE Xy0= YXN1cmVk V3JpdGluZw== IGN1cnJlbnRQYWdl KGFuc3dlcg== IEFTQ0lJ 4Kg= IHNvY2lhbGx5 eXl5 IFNwZWNpYWxpc3Q= KGN1c3RvbWVy aXN0YW5p a2VzdA== IE1haw== IHRobw== LnB0 KGNvbW1lbnQ= IENvbnZlcnRlcg== Z2Ft Ymlucw== LnRlbGU= IFZldGVyYW5z X0FMTE9D 0L7Qu9GM0LfQvtCy0LDRgg== aW5uYW1vbg== O3dpZHRo b2hs IGZhbnRhcw== IHN1bmc= CUs= KEpzb24= IG5laWdoYm91cmhvb2Q= IHZvdw== IHNpbnM= b25hY2Np IGVwb2Nocw== aW1hZ2Vu LkNoYW5nZQ== Lm15YmF0aXM= U2Vlaw== V0VS 566h55CG IGludGVyZXNz X0V2ZW50 ZWRlcmxhbmQ= IHRlcnJpdG9y IGNpdWRhZA== dWNrZWQ= IHNuYWNr IHRyYW5zcG9ydGVk IE1hbmlmZXN0 IERBVA== X3RoZXRh IHdvbnQ= LgoKCgoKCgoKCgo= irbmgIE= IEVwaWM= RGVjaw== bHRyYQ== X1pFUk8= IFtdOw== L3NjcmlwdHM= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 5oOF IHdlZWQ= TkJD IHJhcGVk IEdhdGV3YXk= W00= IFRpbWVvdXQ= ZW5jaG1hcms= LlZpZXdNb2RlbA== IHBvcm5vcw== IFlh dGhyaXRpcw== IEZseW5u IG1lZ2E= YWNpbg== IHRyaWJhbA== LmFwcGxl IEJsbw== w6Ju aWJp cm92 IExpdmVz Xi4= Z2V0UmVxdWVzdA== IEVzdGFibGlzaA== Y29udGFpbmVycw== IHN0YXJyaW5n IGNlbGVicml0aWVz IFJlbGF0aXZl IEhlaWdodHM= IHRxZG0= IE5vcnRod2VzdA== aXZpYw== CWNs IGF1dG9tb3RpdmU= ZW50cmlj IGZvcnR1bmF0ZQ== IGZpcmVwbGFjZQ== c2V1ZA== bmlja25hbWU= O3M= X0NBTA== aGFsdA== KG5z X2RlbGV0ZWQ= RGV2ZWxvcG1lbnQ= bW92aWVz IGlkZW50aXRpZXM= IHByb21wdGx5 2KfZhg== IGFudGU= ICInLCc= 5Y+j aW1wc2U= IHlhcA== VHlwZU5hbWU= IGJpdGNo IGFzc29jaWF0ZXM= SEVNRQ== LWVtcHR5 INiq b2x2ZXJz IHBpc3RvbA== U2NvcGVk YWduZXI= J109PSc= IElNUA== ZXhj IG9taXR0ZWQ= IG1pbmRzZXQ= IFtdKA== IG9ybg== X0NBTQ== QXZn TG9jYWxpemVkU3RyaW5n IE5hdHVy IGNvbXBvc2Vy IFBsYXlpbmc= IG92ZXJk X3V0Zg== LnNr IEZvbA== JHBhZ2U= LE9iamVjdA== IGJlZXM= YWxhcnk= YnVsbGV0 X2xpYnJhcnk= T2ZmZXI= bG9jYXRlZA== IChfLA== 4oCcSGU= IE93bmVycw== KSkuCg== IGJyaQ== LkFkbWlu a3Rpb24= 0LvRjtGH IGVyb3RpY2k= Q2FuY2VsbGVk IGFncg== cmV2aWV3cw== X2RtYQ== UklDVA== IGdmeA== bXBp cHBv IC8vQA== IHVwcGVyY2FzZQ== IGNvbW1pdHRpbmc= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== VXNlckRhdGE= IHZhaQ== CXNvcnQ= IGNvbmdyYXQ= IGRpb3hpZGU= 0LTQsA== LmFyZWE= IEpvc2h1YQ== IEtvY2g= X2JyZWFr YXp1cmU= aXN0aWNhbA== X0FMUEhB X3ZpZXdz IGVsaW1pbmF0aW5n T01C ZW51bWVy IEh5ZHJv KCoo RVJUSUNBTA== IGluZXZpdGFibHk= IHN0b2xl LWVhc3Q= aWVyb24= IGxpbmdlcg== L2RvYw== xbo= IEFscmVhZHk= YXNpbw== IC0tCg== IGFiYnJldg== IEF0b20= aGlt IElOU0VSVA== c3Vu 4pmq Q09OTkVDVA== ZXJhdG9y IE1hbm5pbmc= IDoo Z2Fz PT4n IHF1ZXJ5c2V0 O30NCg== IFBvcHVsYXRpb24= dXRlZFN0cmluZw== cmVzaWRlbnQ= X0ZPTlQ= IFJlc3BvbmQ= IG9ic2N1cmU= IG9ic2VydmFibGU= IENvbnRyaWJ1dG9ycw== a29u IE11c2s= ZXhhbw== IFR1Yg== Qm9vdEFwcGxpY2F0aW9u U09S Lkhvcml6b250YWw= LmZpbmRCeQ== LnBvd2Vy IHBvc2l0aXZlbHk= dmVuaWVuY2U= IEpvbmc= IHdoaXN0bGU= INC30L3QsNGH IGxlbmRpbmc= IGRlc3RydWN0aXZl IG9uRGVsZXRl YXV0aG9yaXphdGlvbg== KCk7Pz4= X29yaWdpbmFs c2NpZW5jZQ== YXRyYQ== Pyw/LA== IEFzYw== IGNvbnZpbmNpbmc= JGE= b3JnZW4= X0RhdGU= IFByb3ZpZGU= IGxvbmVseQ== KScK ZXhjaGFuZ2U= Oz8+Cg== LmZhc3Q= U2FtcGxlcw== TG9uZG9u J10pDQo= IElvbmlj IHBlc3Nv IEtuaWdodHM= IFJhZg== X2F0dHJz IHJlcGVhbA== Pk1haW4= IE9yZGVyZWQ= X05ldw== PSIiPjwv dXJscGF0dGVybnM= QVRJT05BTA== cGVlY2g= IElkYWhv IHByaW5jZXNz IEN1c3RvbWVycw== YXdheXM= YWRi IEJyeWFudA== bm9uY2U= IGFkdWw= IGBgKA== IGFmdGVybWF0aA== PWRpY3Q= dGV4dEJveA== IHNwZXJt IGNvdWdo SG9y 4oCZUw== LkNvbXBvbmVudFJlc291cmNlTWFuYWdlcg== IHJlZ3VsYXRvcg== IHBhcnRuZXJzaGlwcw== L3Byb2plY3Rz dHJ5cw== IExhc2Vy 4p+p IEZ1bms= IHVuY29uc2Npb3Vz IGNydXN0 IFRlYW1z IEJhbm5lcg== IEhvbmV5 bGVtcw== IG1heFdpZHRo UG9pbnRlckV4Y2VwdGlvbg== ZmFkZU91dA== LVN0 IHN0cmFuZ2Vycw== X0dP V3JpdGFibGU= X0luZm8= Lk5vbk51bGw= YW5ub3RhdGlvbnM= IEdE IGVuZG9yc2Vk CVRva2VuTmFtZQ== IERlcGVuZGluZw== WU5BTQ== IE1ldGVvcg== IEluY3JlYXNl Lk1hbnk= PT0o LlVVSUQ= X0tFUk5FTA== IHZpZMOp IHBx IFF0R3Vp IFZhcmlvdXM= IGpvaG4= X3BhdGNo IHRvdXRlcw== IEZhaWw= IHN1cnZpdmluZw== KCIkew== ICAgICAgIA0K IGltYWdlVXJs LndvcmRwcmVzcw== c291cmNlcw== CWdsVmVydGV4 4oCZYQ== IGVzY29s UkFSWQ== IFNuYWtl IHF1aW50 IGxhc3Rz IEhhcm1vbg== IGNvaWw= IGV4cGxvaXRhdGlvbg== bGVlbg== Jz4iOwo= IFNFUlZFUg== IEhFQURFUg== X3ZlbG9jaXR5 IEludm9rZQ== LnRpbWVzdGFtcHM= IHN1bGY= SVFVRQ== IGluaGFiaXRhbnRz cGhpbnM= YXp6bw== IG1vbm8= TGVnZW5k IG5vbmNl SUZF OyI7Cg== LWNyZWF0ZQ== IiIsCg== cGVybWl0 IEltbWlncmF0aW9u IHBhdGhuYW1l ZmZlY3RpdmU= 4pmA4pmA IGV4YW1z LWV2ZW50 IFRpbGw= W21pZA== RklY O2NvbG9y KE9yZGVy X3RyYWl0cw== IG9yZGVyQnk= IHN1bnQ= IE5pY2hvbGFz 2LI= IHN1bm55 aW5lcnM= IGFjY2Vzc2liaWxpdHk= IEhC LmNvbXA= CW9w IG1pbm9yaXRpZXM= ZXRoZXVz IGNvbGxhYm9yYXRpdmU= cHJpdA== SElS IHdyYXBz CWRyYXc= Z29k IElY LmFwcHM= IE5N IGlycmVsZXZhbnQ= IFRpZ2Vycw== IGRpYWc= R1Y= IEFjY2Vzc29yaWVz a29udA== IHNpbXBsaWZ5 IEZhdm9yaXRl X3Rvb2xz KFtdKTsK IHRvd2Vycw== QmVz IGh1bnRlcg== IHNhbG9u KGJ1ZmY= CWRlYnVn IG1hbHdhcmU= TW92aW5n LW9wdGlvbnM= KSsn IExPVkU= X1NPQ0tFVA== X2Zpbg== IERlbGF3YXJl IHNoZXJpZmY= LWludmFsaWQ= IEZVTEw= INC/0L7QtA== ZWxhcw== InN0cmluZ3M= IFJlcHJlc2VudGF0aXZlcw== c3VyZmFjZQ== cmVzb2x2ZWQ= aHRkb2Nz KSk6DQo= IHByZXNzdXJlcw== IG5vcm1z IHBsYQ== IHN1cm5hbWU= IHBvc3RhbA== IERlcGFydA== IHNsYXVnaHRlcg== b3JpZGE= IGhlYmJlbg== IGRlc2Fy Y29tcGFjdA== X0xBTkc= 5ZCI b3BvbHk= X3JhZA== IFNURE1FVEhPRA== TGF6eQ== ICAgCQ== Li4uLA== KHdlYg== IFBvbnQ= IGV0d2Fz IHVwd2FyZA== X2hhdA== IF0sCgo= IGJhc2VVcmw= IHdvcnJ5aW5n LWFkZG9u KGdldENsYXNz U1BJ IGNhcHR1cmluZw== KX0sCg== RWZmZWN0cw== IGNvbXBldGVudA== IGZvdWw= IHN1YnNjcmliaW5n IE9CSkVDVA== SVhFTA== YnVja3M= KGVkZ2U= KHBhc3M= IFBldGVyc29u IGJvb2Jz IERlbGF5 X3NxdWFyZQ== ZWxpbQ== b3RlcnM= X1BD JUU= b25jbGljaw== IFNWRw== IHRvcHBlZA== IGZpc3Q= c21hcnQ= IFJhbHBo KG93bmVy am91cnM= IGJyb256ZQ== IEFyZ3VtZW50RXhjZXB0aW9u KG9yaWdpbmFs X1NDQUxF X2Nw IHJlY29tbWVuZHM= LnNldFN0eWxl U3VyZQ== TEFORA== IHJlcGVhdGluZw== TWF0dA== LlZpc2liaWxpdHk= IGVudGVycHJpc2Vz LlNldHVw KHNjZW5l IFJlYWN0aXZl dXJnZQ== Ync= LlB1dA== cGVyc2lzdA== LmNvb2tpZQ== IEF1ZGk= YHM= c3VwcGxpZXI= KEZvcm0= wqE= X3Nv jIA= IExlZ2lvbg== dHRl TmQ= TG9zcw== KGF0dHJz LnNjYXR0ZXI= IGdyb29t IGdsaW1wc2U= IG5haWxz IGN1bXVsYXRpdmU= IGZhemVy X3NlcnZpY2Vz Lk51bQ== aWJpbGl0 X3Jlc29sdXRpb24= IFR4 dW1pbml1bQ== b3Bh LnNjaGVkdWxl c210cA== 4LiV dXJyeQ== w7xr Z29vZw== X3NpZ25hdHVyZQ== LmludG8= IFN0ZXBz IGhvbWVvd25lcnM= IE5TVVJM IFBBQw== ICAgICAgICAgICAgCgo= PicpCg== ZW5o IGluY2Fw JE1FU1M= IG1vaW5z IEZp IG9mZnNlYXNvbg== cHJlc3Npb25z Pi48Lw== IE1hcmtlcg== IG9uQ2xvc2U= TEVWRUw= IGludGVyZmVyZQ== IENvbGlu IFJlc2lzdGFuY2U= RGlzY291bnQ= IFdlYkVsZW1lbnQ= IGJhdGhyb29tcw== bGVnYWN5 IENhcHR1cmU= IGFyaXNpbmc= ICIpOwoK 0YjQuNCx IEluZmluaXR5 QWR2ZXJ0aXNlbWVudHM= IENvbWluZw== IFBST0pFQ1Q= X1BST1RPQ09M IHVzZURpc3BhdGNo LmNoYW5uZWxz IENpdGl6ZW5z ZW50cmU= X21w LkNvbnN0YW50cw== IFNlcmlhbGl6ZQ== X0lOQw== KGx1YQ== IGNsYXNo X3dpdGhvdXQ= LmtleVNldA== IHJlY2VpdmVycw== 5pa55rOV KG1lbQ== IEhvcml6b250YWw= IGNvY2t0YWls IGNob29zZXM= LklubmVy IHJlbGllZA== b3VudGVy ICJe IHRlbmFudHM= ImA= X1BN ZXJzZWQ= IH19Ij48Lw== IHByb3ZpbmNlcw== X1JBVw== XEFwcA== IHByb3N0aXR1ZXI= X2dhaW4= LnRlbmNlbnQ= ZmZlY3Rz KHBr c2t1 IHVzYWJsZQ== RVJWRUQ= IGFudGVubmE= aGVh cGxpc3Q= X1BMVUdJTg== 0YHQuw== Lmxvb2t1cA== 4buB IGVubGFyZw== IHBpc3M= SGFt aW1hcA== IGludmFsaWRhdGU= IHNpbGs= PSIjIj4K IEdyYXNz IEdvYWw= X3BkZg== SGFuZGxlcnM= IHN0YWNrcw== LmdldEZ1bGxZZWFy PVtdOwo= 6L2m LFY= KHNwbGl0 0YPQvdC6 IGJha2VjYQ== IH4vLg== cGV6 dGFpbHM= IEdsZW4= IHNldEltYWdl IENvbWlj QkxPQ0s= CVRoaXM= b2FkZXI= IGNhcGl0YWxpc3Q= X1NURVA= KEJvb2xlYW4= IENvcnJlY3Q= cmluYQ== IGNvbmNhdGVu 5a6e KCk6Cgo= IHVuYW5pbQ== bGxp YWxhcnM= LW5l IGRpdm9y IEtpY2tzdGFydGVy XS5f PG51bWJlcg== L21lbnU= R1JBUEg= dmlzaXRvcg== IGltcHJvcGVy X05FWFQ= IGJpc2E= YmFja2dyb3VuZENvbG9y L2lucHV0 IG1vaQ== R29hbA== bGlxdQ== IG1pc2NvbmR1Y3Q= IGNvbXByaXNlcw== YXducw== IFBpZQ== cmFpcw== cm9sZXVt IGN1cnNl eXU= X3BvbGw= LmN1cnJlbnRVc2Vy RVNI XSlb IHN0b3J5dA== KT87Cg== Kj0= IEJ1cmc= L2xheW91dA== X2JhY2tlbmQ= Oz8+PC8= IFdoYXRzQXBw IE1vdW50YWlucw== dmlzaW9ucw== Zmx1ZW5jZQ== LmNyZWF0ZUNvbXBvbmVudA== IFBzeQ== Zm9yZ2V0 c3J2 X0NPTVBPTkVOVA== IE5leHVz ICl7 ZW5kaQ== SU1VTQ== IEdG 57uE 4oCUdGhhdA== Yms= TW96aWxsYQ== IGRlZmVuZGVycw== LXNldHRpbmdz aW1taW5n IE9QVA== IENX IHRoYXRz IE9wZW5pbmc= UmVsZWFzZWQ= bnBt IGhycw== IGdyb3VwZWQ= LyIuJA== IEhpc3RvcmljYWw= KCQiew== b3ZpYw== KHNpZ24= IFBob3RvZ3JhcGh5 IHNpZ251cA== X0FSQ0g= LnRlc3RuZw== L2FuZ3VsYXI= UmVzdENvbnRyb2xsZXI= c2hpdA== dWxsZQ== LnBhdXNl KFtdLA== KHF1ZXN0aW9u aWxvZ3k= IEV1Zw== LWxvY2Fs IGt2aW4= IHJlc2VydmF0aW9ucw== b2JpYQ== IHN1YnNpZGlhcnk= IGFjY3VtdWxhdGVk IFFWYXJpYW50 IEJKUA== IE5vcm1hbg== IEludGVncmF0aW9u LlZhcmlhYmxl KFJlc291cmNl KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== RXhwb3Nl ICd9 LkNPTE9S INGH0LjRgQ== QWpheA== IHRocnU= TW92aWVz IHByb3Bvc2l0aW9u L3RoZW1l TW9kZWxQcm9wZXJ0eQ== IEF3cw== IEFuZHJlYQ== IE1lcmdl LmZpbmlzaA== KHJlcXVpcmVk IFByZWw= ZWxlZA== 5pON5L2c LlRSQQ== TUFT IHJlYWxpc2Vk cm9pZHM= CWZu cmg= LiI8Lw== dmlkaWE= IGRlcHVpcw== IEJW TG4= IGx1c3Q= QXNj CQkJCQkJCSA= aXNsZQ== LWNhcmU= X0lOVg== IERyZXc= IHdoYXRz IENhcGFjaXR5 UGFybQ== X21vbml0b3I= LnN0dWRlbnQ= IFJOQQ== LmVuZHN3aXRo Ymlo IE1MQg== L3Byb2plY3Q= IHJlc3Rpbmc= c2VwYXJhdG9y eWQ= ZXJ0aWE= IG1vbml0b3JlZA== Ij4qPC8= LkZD IE5FV1M= IENhbGxz IGFkZXF1 Q2hlY2tpbmc= ZXN0aW1hdGU= IHJlY2FsbHM= X2ZyZXF1ZW5jeQ== IHVzZVJlZg== IEdyb3Zl IFhpYQ== IMOt ZXNzZW5nZXI= LWNvc3Q= LmZj IEt1bWFy LkZvY3Vz ZWxsYW5lb3Vz LkFsZXJ0 ZWF4 IG9yY2g= LnBt IGxhbmRsb3Jk KHBvcA== X2FjdHVhbA== IExC R3JhbmQ= LnJlbmRlcmVy IGxvYg== Y3VzdG9tZXJz IGNhcHR1cmVz V0lORE9X IGRvY2g= IGFwb2xvZ3k= IEphbWE= QFs= LnRha2U= bm9vcA== IGx1bQ== IGRpZmZlcmVudGlhbA== IGVmZmljYWN5 CUlO X0JPWA== X3Nk X3J0 Y29kZXI= b3VuY2VtZW50 aGFzQ2xhc3M= IHJpc2t5 IEVzdGFkbw== LURE IENhcnNvbg== U3VmZml4 IHRvZGE= IFRyYWNrZXI= IERlbGVnYXRl YCxg IFBhcmtpbmc= IG5lcg== YXpv IEZpbGVJbnB1dFN0cmVhbQ== IHJlY291bnQ= cWk= Y2tlbg== IHNvY2lhbGlzdA== IEludm9pY2U= INC/0YDQvg== JSIs ZW5uZW4= IHZpdm8= IG9yZ2FuaXphdGlvbmFs IHVuY29tbW9u dXRhcg== IGh1bGw= VHVlc2RheQ== IGFzc2Vzc21lbnRz KGFwcGxpY2F0aW9u IHByZW1pc2U= U3RhcnRUaW1l IGRr IGludGVyZmVy IFF1ZWVuc2xhbmQ= IGNyZWRlbnRpYWw= IGxlaXN1cmU= WVo= IENtZA== QlVT dXNhbg== CXZlYw== aW9sb2dpY2Fs IExvdHM= IGVubGlnaHQ= IGZyZXNobWFu IENPTU1BTkQ= IEFjdGlvbkxpc3RlbmVy dXRt YXJpdXM= VHdpZw== IHN3ZXB0 LXRvb2w= xJA= Y2hhcHRlcg== LWdyYWRl IGN1cmlvc2l0eQ== IHN1c3RhaW5hYmlsaXR5 IE1pbmVjcmFmdA== d2VuZA== SWZFeGlzdHM= IEN1bHR1cmFs IFNhY3JhbWVudG8= TGF5ZXJz U3Vic2NyaWJlcg== LkdyYXBo IGxt ZXN0eQ== YWR2ZXJ0 JHA= IEhvY2tleQ== IERFVA== c2V0VGl0bGU= eWFuZw== IGJhYmU= ZWxzaXVz VHJhdmVs IG1lc21v KG1hcFN0YXRlVG9Qcm9wcw== X1NFTA== LXBvcA== IGVtaXNzaW9u 4oCZLgoK LnN3aXRjaA== b3Rpb25z LnBob3Rv TFY= YW1vZGVs IHdvcmR0 SUdHRVI= IFRPREFZ T0xT X0lERU5U IGNvbW1lbnRpbmc= RGF0b3M= IGhpbGFyaW91cw== KGFueQ== IGRhbXA= LWNvbnRyb2xsZWQ= ICI8Pw== X2JsYWNr TmV0QmFy LnNldFNlbGVjdGVk Q3Nz IHF1YXJ0 IG93bmluZw== IEZJRUxE LnJlbHU= IGxpcw== 7Jqw LlJFTEFURUQ= IGxvaw== IEZsaXA= IHByZXN0aWdpb3Vz IGRn IElucHV0U3RyZWFtUmVhZGVy IHVzdQ== IGdpcg== IGFuYQ== X3B5 dW5uZWw= CXN5c3RlbQ== IGNvYXRpbmc= IEdlbnJl ZXJybw== IENMSUVOVA== IHN0cmV0Y2hlZA== Lkhhc1ZhbHVl Ozs7Ozs7Ozs= 54mI IGZpbmFscw== LmdldENoaWxkcmVu IC0tfX0K IENvd2JveXM= IEVkaW5idXJnaA== IFBsYXph YWJlbg== QXJ0aXN0 VVJB IEh1Z2hlcw== b2JiaWVz X25vaXNl Lk9iamVjdHM= RXhwcmVzc2lvbnM= IGFudGhyb3A= JykpDQo= KS4i Y3JpcHRpdmU= IHNhbG1vbg== IHdhc3Q= cmhv LnRpY2s= IGV4cGxvcmVz IEFsZ29yaXRobQ== Q2hhckFycmF5 4LiE X1BBQ0tFVA== SkU= Il1dOwo= Lm5vdGU= QmFja2luZw== IEhvbGRlcg== cmVpY2g= IFppb24= L2dy ICAgICAgICAgICAgICAgICAgIAo= TW90aW9u IFRyaWJ1bmU= IGNyaXRpY2FsbHk= IENSTQ== IGJsb3dpbmc= IGNvbW1pc3Npb25lcg== Sm9l IFRlbGV2aXNpb24= CXByZQ== IFRSQU4= IFZpa2luZ3M= IEJFVA== d291bGQ= LkNhcHRpb24= IGJhY29u aG1h bWVyZ2Vk IHN1YnNjcmlwdGlvbnM= b2NjdXBpZWQ= TGl2ZURhdGE= IGFsbG93YW5jZQ== cmlnZXNpbWFs ZGRk LmxvZ291dA== IFRhbmc= IHdhcm10aA== TW9kZWxJbmRleA== IFByYQ== IHNjZW50 IGhhY2tlcnM= IGlsbHVzdHJhdGU= SWNo IGRpYXM= Q0FTRQ== IFNjaQ== JHVybA== IE1PRFVMRQ== dXNob3J0 bGllcnM= IERldmljZXM= bWluc3Rlcg== dW5hbWU= IHVucg== RXhhbXBsZXM= IHJpc2Vu LmFp Y2hyb20= X3dvcmtlcg== IGFsaWFzZXM= TW91c2VFdmVudA== IHNldHRlcg== IFB1cnBsZQ== Sm9pbkNvbHVtbg== PWU= VEhPT0s= IFRvdw== IENydXNoaW5n IEplZGk= IEdyaWZmaW4= IGtvcw== X0ZT aW5nZXM= c29sZXM= KG5hbWVz IEJpZA== LXBvd2VyZWQ= TXVsdA== YW1pbGlhcg== LmNsZWFuZWQ= IFppbW1lcg== CWNsZWFy IHVuc3VwcG9ydGVk Q2FsbGFibGU= IHJlcHM= YWx0ZXJu X1JFUE9SVA== LmdldENvbHVtbkluZGV4 X1NUT1JF IHN1Y2h0 c3VidGl0bGU= IHBlcmQ= q5g= Lk5PVA== fT48Lw== OmQ= bWRp YmluZFZhbHVl IERlY2lzaW9u UmV0dXJuVmFsdWU= LGluZGV4 eGZj IHNlcnVt Z2V0RmllbGQ= Q29ubmVjdGlvblN0cmluZw== LW9iamVjdA== LnJlY3Y= IHVuZGVyZ3JhZHVhdGU= LkluZnJhc3RydWN0dXJl IEthYg== IGFkdmlzb3J5 LXRyZWU= IG11ZQ== aW5mb3Jt LmVtYmVk IGVycm9yQ29kZQ== bWljcm8= IHNwYXJrZWQ= IGltYWdlcnk= Y29uYw== X21pc3Npbmc= IHN1cnBsdXM= S1M= CVJUSE9PSw== VGVsbA== cml1bQ== IFJhZGl1cw== cmlrYQ== bG9zaW9u IEhlcm4= R2FtbWE= IEZlZQ== IE5hbWVk IENhbnlvbg== IEpTT05BcnJheQ== IHp3ZWk= IFNTSA== IHNlcnZhbnQ= Y29hbA== IGRlbnlpbmc= IHNwbGl0cw== SW5jb3JyZWN0 IHRveA== IEFuYWx5c3Q= IGFjY3JlZA== dWJsZQ== IHd0 IFRyaWFs LmV4dGVuc2lvbg== IENhcmVlcg== IHNlY3VyaW5n IExpbA== IHByb2plY3Rpb25z IHllYXN0 TWFkZQ== IGZvdW5kYXRpb25z YWNpZmlj LnZvbHVtZQ== IG1pcnJvcnM= IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= IHZpb2xhdGU= YXJzZXJz IHNvY2lv IHRraW50ZXI= IExJTks= LmdldFNpemU= IFdob2xl KXZpZXdEaWRMb2Fk CWRvbmU= dWRlYXU= XCI+PC8= QW5kcmV3 ZXJi IGbDtg== LmNsdXN0ZXI= IGRpc2NvdXJzZQ== X0RFRklO IHB1ZWRlbg== IExPVw== LmF2 IHByZWNh IHF1bw== IHZlbG9j LCcn IHh5eg== CXBhZGRpbmc= IHRvbWF0b2Vz IEJlbnQ= X2N1cnI= TlNEYXRl IGdldEN1cnJlbnQ= IFtg V2VkbmVzZGF5 LkJhcg== IFZvdXM= aW56 IFF1aW5u ZXhjZWw= ZG9z IG91dGRhdGVk T1VUSA== IE1ha2Vy ZXBlbmRlbmN5 IGR1bGw= IFdpbm4= b2dl Y2xhdmU= IG5vdmE= IGF2YWw= Q2FwdA== IFNwb3RpZnk= IGp1bA== KXRhYmxlVmlldw== IGZpbGVuYW1lcw== IGVza29ydA== 5ZGo IHNrZXc= dGVyaW9y IGZpbmFuYw== IHRhYmxh IFVJQg== ICgpOg== IERvY2tlcg== cGVyY2VudGFnZQ== TWVldA== aWNoaQ== IGludGVyaW0= ICc9Jw== LkpTT05PYmplY3Q= KGZpZA== IGRvd250 IHRyYW5zaWVudA== IFN0ZXBo IGlnbm9yYW5jZQ== IENvZGVz PScnLA== IElDRQ== IHRyYW5xdQ== IEV4dGVuZGVk IG11bmQ= IEhPTUU= IGtpbG9tZXRlcnM= IGltYWdlbg== b3V4 KHN6 WW91bmc= dWZmZWQ= IFdha2U= IGFpZGU= UFJPQw== IFJhdA== IExpdGg= YmFydA== IEFycmFuZ2U= cHJvbXB0 0KM= KGN0 IEludGVydmFs ZGVwdA== RGFuaWVs IGZpbGxz LnRlbnNvcg== KHRyaW0= IGplYWxvdXM= RmVi XENvbW1vbg== IGFtZW5kbWVudHM= X29wZXJhdG9y X2N1c3RvbWl6ZQ== IF1d IGJu IGRpc2FwcG9pbnRtZW50 IG1pbGxlbm4= LndoZW4= IG9iZXk= IG9mZmVuZGVycw== V2lsZA== IGNlbGxGb3I= IGFwcGFyYXR1cw== LmFmdGVy IEVQUw== IGFkb3JhYmxl b3BlcmFuZA== KGxpc3RlbmVy dmVhbA== ICko IGNhcmRpb3Zhc2N1bGFy dXBsaWNhdGVz cmlzdG9s IHJlZnVzZXM= KFFXaWRnZXQ= IGVsZW1lbnRv TnVtYmVyT2Y= LmRlbGF5 Lmdyb3Vwcw== Ij4nKw== 5Z2A YWNlbmN5 KFVSTA== X2hhbGY= PWw= IGxpc3RWaWV3 KHNlY3Rpb24= LnRvQXJyYXk= Ky8= IFJvZHJpZ3Vleg== aXN0cmVhbQ== IGVsaWdpYmlsaXR5 Ojot Lm5ld0luc3RhbmNl UEI= IEFzc2V0cw== IENvbXBvc2l0ZQ== IExhYnM= IEhhbWFz KyspOwo= IGJsaw== IE5lbw== THVj QGxvZ2lu IHVuYXdhcmU= Lm1ldA== X1JFTEVBU0U= KFNU QU1JTA== cmlrZQ== ICgpewo= KHNwcmludGY= IEFjY291bnRz IFZJRVc= IEFq 44Kw IHdoaXNr IGlkaQ== IHJvZGU= IGlobg== IEVsZW1lbnRhcnk= UXR5 IGludHJpZ3Vpbmc= IOWk Sm9icw== CW9mZnNldA== IEFobWVk IFRhbGliYW4= IOiOt+WPlg== IGluamVjdGVk LkF1dGhlbnRpY2F0aW9u X2xpbmVhcg== LkRlY2ltYWw= IGFwcGxlcw== IHNoYXJlaG9sZGVycw== IGJha2Vk LmRpZmY= IEVkZGll b2tlcnM= IGNvbmZyb250ZWQ= dm9pY2Vz IHR1cw== IFNwaW4= Tk9ERQ== X1Vu Q1RY L2dvb2dsZQ== VGVtcGVyYXR1cmU= ICcnKS4= IG1hZ25pZmljZW50 IHN0YXJ0SW5kZXg= c2VtYmxlcw== QW55b25l ems= ZWhlbg== IERhbWU= LnN0cmljdA== IHJlcGxhY2Vz IGxpbmViYWNr IHB1c2hlcw== IGNoZWVr IFNoaQ== X0JZVEVT UkVB 4bqjbg== X0NPTk5FQ1RJT04= R2F0ZXdheQ== IFRyYXZpcw== IEFY IEJhc2ljYWxseQ== IFVwZ3JhZGU= 4Ko= dGhlbWVz ZXJtbw== a29y RmVtYWxl X2F0dGFjaA== IOyCrOyaqQ== IHBveg== PT09PT09PT09PT09PT0K KHN5bWJvbA== IFNlY3Rvcg== X18pCgo= X3BhZGRpbmc= 77yaIg== IGZhYnM= IHJhbmdlZA== c2V0TmFtZQ== IHBlcnJvcg== 4pc= IEZpbGVSZWFkZXI= IGZ1bGZpbGxlZA== X0N1cnJlbnQ= IGRvbWluYXRl IHNtdWdn UG9zdE1hcHBpbmc= X2ZvcmNl IGJsb2M= IEdpYW50 KHZpZGVv IENV U3lzdGVtU2VydmljZQ== IGVsZg== IGtvbnRha3Q= 66o= a2Vlcw== Z3Rr IHBhcmFtSW50 IG1hcmt1cA== dWFsZXM= IGFjY291bnRlZA== IGdhbmdiYW5n UllQVA== IFdyb25n IGNyZWRpdGVk IE1FU1NBR0U= IGZsYXdz IGJidw== IG1ldGFib2xpYw== IE9FTQ== L2V2ZW50 KENvbGxlY3RvcnM= bW9udG9u YXBwZWFy IG9wdGVk IGNoZWF0 IGRhdg== IFByb2NlZWQ= IOq4 YW5rZWQ= 0LjQtw== YW5zaw== IEhhbmc= IENsZXI= IGRpc2d1 IGNtYXA= LmNsanM= IGF1bWVudA== bGV6 IEpvaW5lZA== X3JlY2VpdmVk IGFlcmlhbA== b3RlbA== IGdyZWV0 InM= IEdlbmVzaXM= IENhbGlm cGFuaW9u IHRhaWxvcmVk bWFwcGluZw== YW5kRXhwZWN0 LnRyYWNr YXRvbXk= IE93 dWxsYWg= Llllcw== IFNpbXBsZU5hbWU= ZGJo J2Vu IG5vbnNlbnNl IHBoaWxvc29waGljYWw= KGdldENvbnRleHQ= IGlzc28= IEFDRQ== c3RhcnREYXRl IGLEmWQ= IEFVVEhPUg== IEdsb2Jl IGluc2VjdHM= X0Fs dXNoaW5n 6K6w L0hvbWU= IExvY2FsRGF0ZQ== bmVlZGVk aGVzaXZl IGlsbHVzaW9u 5LqM IHRyYXQ= eG8= L2RldGFpbA== X01BVENI IGJyb2FkYmFuZA== IHdhbA== IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbg== SVJFQ1RJT04= IG5vcnRoZWFzdA== ZXNpdW0= IENsaWVudGU= dWxhbmNl bnR5 IHRlY24= RGV2aWNlcw== IGdyYWlucw== IE9n IFNFTA== dWRpYW50 ICsrOwo= IGV4cGxhbmF0aW9ucw== b2Njbw== IGRpZXRz IGNvaG9ydA== KGNvbnRyb2xsZXI= Lkl0ZXJhdG9y LXJpY2g= cm9jZXNz R0Q= IGNhcmJvaHlkcg== IGZyaWVk IEVtcGxveW1lbnQ= 7J6l IExlb25hcmQ= XyR7 cXVhcmVz IGNvbXBhbmlvbnM= IHBhcmlz IHN0aW11bGF0aW9u IFpvbw== IHJlbGV2YW5jZQ== IENvbG91cg== IHNwZWFy b3Rpb25hbA== IExpdGU= IEtvc3Rlbg== IMOz X2F0dGFjaG1lbnQ= b3JwaGlj IGRhbWl0 IGRsZw== IHRocml2ZQ== Q0hBTkdF IEFwcGFyZW50bHk= IGF0dWFs IHJvb3RlZA== KGltYWdlcw== YXdp YXJpYXQ= IGNoZXJyeQ== U1RBVElD bW50 IFVzZXJJZA== aWxsZXQ= IEhpc3Bhbmlj IG5haw== IGNlbnRybw== IGRpbXM= X2luaXRpYWxpemU= xLFr IENlbnRlcnM= UkVO IGV2b2x1dGlvbmFyeQ== IFRvcGljcw== X2RhbWFnZQ== ZW1lcg== IHJ1bmQ= IHB1bmlzaGVk IGN1Ymlj ZmFpcg== W107Cgo= IGluc3RhbnRpYXRl IG92ZXJzZWU= LWRlbGV0ZQ== dW50ZWVy c3RhcnRUaW1l IFBpcGVsaW5l X0dBTUU= IENpcg== CU51bGw= LkZvcm1hdHRpbmc= dWN1bWJlcg== IFJpZGU= IHpvbw== IGNoZWNrZXI= 5ZCM PUM= IGdyaXQ= Iik7Ly8= X3h5 IERlY2xhcmF0aW9u IGNhbGxhYmxl Rm9v IExpc3RJdGVt IGluYWNjdXI= bWxpbg== CURhdGE= IGV2b2x2aW5n YXdhbg== IGNhZmU= Zm9saw== X0lEWA== IEFueXRoaW5n IFBhbGVzdGluZQ== IEdyaWRWaWV3 IGNvbG9ueQ== IEdlcm1hbnM= KCs= LnBpZA== LmpzeA== IFN1cGVyaW9y Q2hyaXN0aWFu IExlY3Q= CUdhbWU= IGluc3RydW1lbnRhbA== QW5pbWF0aW9ucw== 0LTQsNC7 IE1vc2Vz CQkNCgkJDQo= enM= a3Rl 5Lia X0RJU1Q= Yml0bWFw ZEI= IHBlcnNpc3RlbmNl 0YDQvtGB JGw= QnJvbg== IHt8 X2NoYXJ0 IENvbnN1bQ== IGhlbXA= ICIpKQo= IGF0dGFja2Vycw== IGtub3dsZWRnZWFibGU= IGNldA== IHZpcnVzZXM= J0k= IHBpdGNoZXI= IHN3ZWVwaW5n PWxpc3Q= YXB0b3Bz LmRlcHRo IGluc3RydWN0ZWQ= IFJ1cw== YmVuaGF2bg== INC40L0= U3BvcnRz IG9uc2V0 5p2D LlJFRA== X3Np IFBTVA== Lm9uQ2hhbmdl PnRhZw== IFJvaA== X2NoYXJhY3Rlcg== IExhd3M= IEJhY2hlbG9y X3N3YXA= LnJlYWN0aXZleA== IHJld2FyZGluZw== TWVkaXVt LVs= IFJlY2VudGx5 Sm9pbnQ= cGFydGl0aW9u IE1pbnV0ZXM= IGluZG8= IGFic29yYmVk IEdO X0lORA== IHNhYmVy U3Bhd24= b3V0cHV0cw== IEplZmZyZXk= IG1lZGlldmFs aGVk R3VpZGU= IHBzeWNobw== IGdsYW0= RWxpbQ== w6RkY2hlbg== X3BsYWlu IFNhdQ== LWZvdXI= IGFuYWx5emluZw== UVVFUlk= IHRvbWF0bw== X2J1dHRvbnM= VkVO LnNldFN0YXR1cw== LlVybA== KwoK IGNvbXBsYWluaW5n ZGVncmVl Y29uZmlybWVk IHN1YnQ= cGFyc2Vk IHRvcnF1ZQ== IHRyb3VibGVk IFRBUkdFVA== IHRyYWRlbWFya3M= IENvb3JkaW5hdGU= IFZpdg== IC8vfQoK IGFwcsOocw== LmdldFBvc2l0aW9u KEtleUNvZGU= IFNpbHZh IG1ldGVvcg== IGVuZG9yc2VtZW50 T3ZlcnZpZXc= IFBvc3M= LkluamVjdA== IGV2ZW5seQ== IHZpc3VhbGl6YXRpb24= IHdjaGFy IEhETUk= IGZ1bmN0 aWNrbmFtZQ== JywnJywn IGZvcndhcmRz TWFuYWdlZE9iamVjdA== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= CXNlcnZlcg== IE91dGxvb2s= IENocm9uaWNsZQ== IGR1YmJlZA== IGRvaw== IFdlYXI= LkFM cGFyZW4= LkludGVyZmFjZQ== SW50ZXJmYWNlcw== LmNvZA== IGRpYg== Lkdsb2JhbGl6YXRpb24= IEFjYWRlbWlj IGFzc21z QXV0b20= IGx3 IE5X ICYmDQo= IHByb2JsZW1h IE1hbnVmYWN0dXJpbmc= bGltaXRz LW1vYmlsZQ== IGZpbG1l L21hcA== IGRvaXQ= IEluaw== IHN1ZWQ= LmFycg== IHVuZGVybWlu IFByb2M= Y3JvbGxWaWV3 X18k IHNpZGV3YWxr KHRoYXQ= 4Li3 W3E= Z3JhbW1hcg== IHTDqw== cXVpdG8= IHNwaXJhbA== ZXh0ZW5kZWQ= IGZvY2Fs IGRpZ2dpbmc= cGFz IFRhbGw= LnByb3h5 aXR1cmVz VFJBQ1Q= IFJlYWxt IGZlZGVy IG9yaWVudGVk IEFsdGVybmF0aXZl IG93ZQ== IHNvdXJjZWQ= aW5rZXI= LmRldA== U2Vw IFF1aQ== IFBhbG1lcg== KF8s c2FtcGxlcw== b3llcg== dWxsYW4= cXVleg== RWRnZXM= IHNob3V0 IEFjaGll IGhhYXI= X0NvbnN0cnVjdA== IHByZW1hdHVyZQ== IHJldmVydA== JykuCg== IHNjaG4= ZmlsdGVyZWQ= bnVsbHB0cg== U2F2ZWQ= aXRlY3R1cmU= Q0xB IHZs c3RlbGw= CU1l IExpcA== bmF0aW9uYWw= IHdob2xseQ== IHNwcmluZ3M= LlRpbWVy CXNyYw== ZWxzZW4= 5YW2 IGNvbW11bmljYXRpbmc= IFF1aXo= IHRlbmc= IGdleg== IE91dHNpZGU= LlNpZ24= KGNz IGRpc3B1dGVz IFdlaXNz YW5uZXM= Pk5v IEJhY2g= LnJlbW92ZUFsbA== cmVmZXI= L2Rhc2hib2FyZA== IEFqYXg= SW5kZXhDaGFuZ2Vk IFdlYWs= JyIK IHNpZ2h0cw== YWNjZXNzVG9rZW4= IEpvaQ== KGRvbWFpbg== CWN2 IGNvbnRpbnVhdGlvbg== IHBsdW0= YWRpcg== LnNldE1lc3NhZ2U= IO+8jA== IHN3YWxsb3c= IExhbXA= IHF3 IHV1 Q29pbg== dWJpYw== IERlYWxz cmFjZQ== IGRpY3RhdG9y IG1lbWU= dHVybmVk IEp1bGll LmdyaWRDb2x1bW4= IHB1cHB5 IHBhbQ== ICl7DQo= IGludml0aW5n IGZyZW5jaA== dmlt IHdyYXBwaW5n ICMtfQo= KFst RWFybHk= IHNoaW55 LmZhY2Vz IHJlYmVsbA== YWJjZGVm w6RsdA== IGVzdGltYXRpb24= cGh5cw== bG9zdXJlcw== X1JFTA== IGV4Y2x1c2lvbg== IFNreXBl d2Vpc2U= LXN0b3A= bm90aGluZw== IEVnZw== aXNvcnM= UmljaGFyZA== IGNvdW5zZWxpbmc= IGNvbW1lbQ== IFFNZXNzYWdlQm94 IFN5bmQ= IEZyb3N0 IENvbXBldGl0aW9u IEF3YWtl IHRlZA== aWNpb25lcw== IERldkNvbXBvbmVudHM= VkVSVElTRU1FTlQ= b3R0aQ== LnJ1bm5lcg== IHVuaXF1ZWx5 LmZsYWc= CXJz X2dlbmVyaWM= IGBgYAo= QUNISU5F IG1laW4= KEFwcGxpY2F0aW9u KGJy IHJhdGlvcw== Oiw= IFhDVGVzdA== dXN0YWluYWJsZQ== LXd3dw== aXRsZXM= X1RFTVA= IHN5c3Q= dW1lcmljVXBEb3du CWFzc2VydFRydWU= IHdm LnBlZWs= IEJ1bGc= IHRlcnJpZnlpbmc= Lk1PREU= IEdX w6Fy IGZpYw== IGNvbW1pdG1lbnRz LXRlY2g= IExpcXVpZA== b3Bleg== emhlaW1lcg== YcOxYQ== LW1lZGlh KGFuaW1hdGVk X2dvYWw= IGd1bQ== eXN0b25l LlNFVA== IFdlbmQ= c2V0Q2VsbFZhbHVl IG1zZ3M= Y2FzaA== QUxMT0M= L2F3cw== IG1pY3Jvd2F2ZQ== LlBvaW50ZXI= CUNvbnNvbGU= X3NvcnRlZA== IEZpbGlw UHJvZA== IC8vITw= aW5ncm91cA== IGtz X1RSSQ== IHRlYXNwb29u IEFUVA== IHJlY292ZXJpbmc= IEdMT0JBTA== LlBhcg== IC8+Owo= IG1hcmJsZQ== dWxhdG9ycw== IEN5Y2xl IGhlcmJz X21ldHJpYw== KSE= X0NMT0NL X0J1dHRvbg== SGFycnk= 6L+b IHN0cmFpbnM= IEFwcEJhcg== IENoYW4= L3ZpZGVv IGJhbQ== LlByb2dyZXNz JGY= bGVtZW4= IGlycmVndWxhcg== IER1bmNhbg== IE1pbnQ= LXZpZGVv 4Ka+ w7N3bg== IEVNUFRZ IHN0YWNrZWQ= IEhB X2N1dA== IHdoZXJlaW4= IFdheXM= KGNvdW50ZXI= 6K+V Rm9ybUdyb3Vw IGJsZXc= Y291cnNlcw== IHByb2R1Y3Rvcw== cnlz IFJlc3Ry IHN0eWxpbmc= PnM= IHBpdg== IGl0ZXJ0b29scw== Z2V0UmVwb3NpdG9yeQ== IElr X2RldmljZXM= bGF5dWk= IGhhbGZ3YXk= IGZyYW7Dpw== IHR1bmluZw== T0E= X05vZGU= YXJkZQ== IGZpZXJjZQ== bGljdGVk Iw0K IGJyZWFrdGhyb3VnaA== IEVyaWs= IGJyaWRl IC4i Y3VsdXM= aW5zaWRl IEluZGlhbmFwb2xpcw== IEVF IHlvZw== dXJyZXQ= LmZz LmdyYWQ= X2NhcmRz X2FjY3VyYWN5 X2VwaQ== cXVlZGE= L29yZw== 6aqM IGNvbXB0ZQ== KSlb T3V0c2lkZQ== R3JlYXRlcg== IFJlbmRlcmVy LmFjdG9y QWNjb3VudHM= SWRsZQ== X2hvdXJz ZXJuZXI= Sm9pbmVk IG1lbmo= cmVxdWlyZXM= IE9QRVI= LnJlbW92ZUNoaWxk CXNw IGVzc2U= cmlmdA== eEZF IFNoYWtlc3BlYXJl X19fX19fX19fX19f IGJ1ZGdldHM= TW9kZWxTdGF0ZQ== ZmlsbGFibGU= LWNvbXBvbmVudA== b2Nvcw== IEJVVFRPTg== L2lv LG91dA== c21z VGhvbWFz IEFybWVk cmVzdW1l IHJvdGF0aW5n IFZhdWx0 IHNldXM= Ligq IGFtaW5v IFtdKTsKCg== IHByb3ZvYw== bm94 LkdldEVudW1lcmF0b3I= PT09PT09PQo= 5paZ X3Njcm9sbA== IGZpbG1lZA== IFNvY2k= Z2Fw Z3Jv Vm90ZQ== IkJ1dA== X1JD QW5pbWFs woA= aWJpbGU= IGF3YWtlbg== b3Jlc3Q= aW5qYQ== IEl2YW4= KENvbW1hbmQ= ICoqKioq zrc= IGt2aW5kZXI= L2hlbHBlcnM= X2Nhc2Vz dGc= 7IS4 UmVnaXN0ZXJlZA== CXBhc3M= X2RpZ2l0cw== IGNvbnRvdXI= IGluZmFudHM= IGp1c3RpZmljYXRpb24= IEZvcnR1bmF0ZWx5 Q29udHI= IG9uQ3JlYXRlVmlldw== X1NBTVBMRQ== IGFsbG93TnVsbA== IG51ZA== IGZldGNoZWQ= X2VxdQ== IFVuYWJsZQ== PVwiIg== PnsK IGNvbW1pdHRlZXM= aXN0ZW1h KyIu w61hbg== bWFudA== IHNvdXRoZWFzdA== 77yMCg== ZGlhbG9ncw== UFJPSkVDVA== Y2hhcmdlcg== LXBvcnQ= KHV1aWQ= LmV4cG9ydA== U2l4 IFJQ UHJlbQ== IGNvbnNjaWVuY2U= IG1hcmdpblJpZ2h0 X2Rpc3RyaWJ1dGlvbg== eWFtbA== cmVzaXppbmc= RG9jaw== IExvY2F0aW9ucw== R1k= U2VlZA== QlVGRkVS b3NzaXA= dWxsZW4= VGhpbmdz LXNlbGY= LnBvbGw= UExBWUVS IOWu R1JPVVA= IEF3YXk= IGdvc3BlbA== eGZk TWFyeQ== IFBvcnRhYmxl VFVSRQ== IHV0aWxpcw== IHNlaXQ= IHN0cmFuZA== IHRyYW5zYw== IChe IEFsZnJlZA== Lm1lbQ== LmNpcmNsZQ== IH4v Zm9yY2luZw== IHJpb3Q= cHJveA== VEhPTg== aXphY2nDs24= IE5J cm9zdA== IGRpc3Bybw== X2luc3RhbmNlcw== 77yM4oCc b2dyYXBoZXI= ZW5kYXM= IElzYWFj IFBpbmU= L2Rpcw== IGNvbG9yV2l0aA== aXRlcmF0ZQ== X3N0cmlkZQ== IHB1bnRv LkV2ZW50QXJncw== KGNlbnRlcg== IG5laWdoYm9yaW5n IFByaXNvbg== IE1lc3Nlbmdlcg== IGVwaWRlbWlj ZGFv X2NvbXBsZXg= IGdyYXZlbA== X0RJUA== w6ltZW50 IEFyaQ== X2JpdG1hcA== LnF1aXQ= KHZhbGlk IHBlbmQ= IHJlc3BpcmF0b3J5 IHJlYm91bmQ= RGVmYXVsdFZhbHVl 44Ot IGNvbW1pdHM= LnRlc3Rz X2Zy aXRldA== LnNm IHNwYWNlY3JhZnQ= Y3JpdGljYWw= IGRlcHJlc3NlZA== IEFueU9iamVjdA== IHVuYg== IGRpc2Nlcm4= KG15c3Fs TGF0aW4= IEJvZw== IFdpbGRsaWZl VG9GaWxl aW94aWQ= QFJlc3RDb250cm9sbGVy ICIkKA== IDw8Ig== IGRlZmVjdHM= IGRhdHVt aGlu IHJlYWxpemFy YW55YWh1 IFNpZw== QERhdGE= YWRhcHRpdmU= IENhdGhlcmluZQ== LmNy IENPT0tJRQ== IHBpY3R1cmVk IEZpZ2h0ZXI= UXVlcnlhYmxl IEFueXdheQ== IEdMRlc= X25hbWVzcGFjZQ== X2Z0 IF0p T3JnYW5pemF0aW9u IGNvbnN0aXR1dGVz IHF1YW5k KGNodW5r Ii8+DQo= IExha2Vz bWFpbndpbmRvdw== Q2FydGh5 c3Bpbg== KGNzdg== OnJlZA== LWNvbW1lcmNl 4Li5 IGRpc2NvdmVyaW5n IGVjbw== X2ZhYw== aW5jZXRvbg== IEdyZWVucw== and0 2LU= IEJyb25jb3M= IEdvb2Rz KEdUSw== IHJldHVyblZhbHVl IHNpZW1wcmU= IG5ldXRy d2VudA== IE5hdGFs IGVudGh1c2lhc3RpYw== 4buN Rk4= L2RhdGFiYXNl Q2F0YWxvZw== IGJydW4= IEthc2g= X1Bs aXNjcmlt LHdpZHRo IGlubWF0ZXM= QXNzaWdubWVudA== IEhhdmVu IHBsYXlncm91bmQ= ZXhhbQ== QENvbnRyb2xsZXI= dWxpYXI= LmdldFBhcmVudA== ICI7Cgo= OnNpemU= aXNzb3Jz IGZpcw== IGFsYw== ZW5zYXRpb24= IE5peG9u IG1pZ2h0eQ== LXN0cg== X3NwZWNpYWw= X0FEQw== IFR3aWc= dW1ibGluZw== LWFkZHJlc3M= IGhlcm9pbg== WVRF ICAgICAgICAgICAgICAgICAK RnJpZW5k IGF2ZQ== IFBORw== IEt1cmRpc2g= RGF0YVNldENoYW5nZWQ= IGJsYWRlcw== YnJhbA== U3RlYW0= IHNpZ3U= SVJUVUFM YWNvcw== VURQ KGRhdGFiYXNl aGVj IFN0cmluZ3M= X3NjYWxhcg== CWRlc2M= IFRMUw== OyIK IENvcmJ5bg== U2ltcGxlTmFtZQ== dWVsbA== IEVudHJl ZWxsaXRlcw== LXBsYWNl IGZyYW5rbHk= IEVyZg== Q0VM IHBhw61z IGhlZGdl IGxhdGVudA== IElSUQ== IEhlcmFsZA== IFByZWM= 67O0 LlRFWFQ= U2FsYXJ5 IGF1dHVtbg== IHRyYXZhaWw= LlN1bQ== IGNhcmVk TW9y IGludHVpdGl2ZQ== IGpvdXJuYWxz X0lU IFRyb3U= 5Lyg SGFzQ29sdW1uTmFtZQ== Q29tcG9zaXRl IHNwaWNl X2Rpc2s= X0NPREVT IEludHJvZHVjZWQ= aW9uYQ== IG51ZXN0cmE= b2N0 ICAgIAogICAgCiAgICAK KHBhcmFtZXRlcg== IHN0dWRpb3M= IHByb2plY3RJZA== IGJkc20= LlNxbENsaWVudA== aW1pemVy IENBUkQ= K3Q= YWFu LnNvbA== X0FkanVzdA== IHJpZ2h0ZW91cw== IExvZ2dpbmc= LmZpbHRlcnM= X1RBQg== CXN5cw== cm9waGlj b3RoZXJhcHk= IEJyb3dzZQ== a2V5Ym9hcmQ= Uk9O K1w= cm9wcGVk IGV4dGVuc2l2ZWx5 Zms= IGxpbWU= eWVhcnM= RXhj IHNwaA== IGNoZWF0aW5n YW5kcm8= w61v IHByaW5jZQ== b2lyZQ== IERlc3RpbmF0aW9u IENvbnZlcnRz IHVwc3RyZWFt b2xlZA== IHNlcnZhbnRz IHNlbWFudGlj IGNydW5jaA== IGV2ZW50dWFs cnVubmVy L2Vycm9y U3Bpbg== IHNlY3JldGx5 IGFzc2VtYmxl LlBlcnNvbg== ZW5kZXJyb3I= Xzw= IHBlbmRhbnQ= U2xlZXA= IENoZW1pc3RyeQ== IGJvc3Nlcw== bGs= KSkpLAo= QmxvY2tseQ== REVWSUNF IHJlZmxlY3Rpbmc= IGFtcGxl TWlsbGlzZWNvbmRz IFByZXNpZGVudGlhbA== IHVzdWFyaW9z IE5a IFNhbGFyeQ== IEFtYW5kYQ== X25w anVyeQ== IGvDtm4= IHRoZXJhcGlzdA== IGhvbW9zZXh1YWw= IERyYWtl LXdpbmRvdw== IExvY2F0ZWQ= LkRyaXZlcg== IFZJREVP IG1lcmNoYW50cw== IENoZXN0 LWxvY2s= L3BocA== IG1pbGFubw== X1NUWUxF YXJnZXI= aWRlYQ== R1VJRA== YWR2YW5jZWQ= bWVhbA== T3B0aW9uc0l0ZW1TZWxlY3RlZA== PScl IENoYW0= OmRhdGE= KHN0YXQ= V2lsbEFwcGVhcg== IGluZm9ybWFs YWpp IHJlcHJvZHVjdGl2ZQ== IENBUw== 44Gj RlVOQw== IFJ1dGg= KSso Q09OU1Q= IEZhbnM= IGdyb3VwSWQ= eGZmZmZmZmZm IHNhbXBsZXI= IH19Ij4= LnRoZQ== IGhvbGxvdw== V0FZ IEZhY3VsdHk= QXR0cmlidXRlZFN0cmluZw== IExvb2tz IFJleA== ams= IE1JTA== IGJhcmQ= Lkxvbmc= IGxpdmVzdA== IHNrYWw= aWNpc20= TUFJTg== IG11Y2hv Qk9EWQ== IGVzZQ== CXVzZQ== Rm9vdA== LlNRTEV4Y2VwdGlvbg== IGluaGVyaXRhbmNl cmVjZWl2ZWQ= IHB1dGFz ZWRpcw== YWxzYQ== IEVycm9yTWVzc2FnZQ== Qm9va2luZw== IHRyYWN0 YWN6 IENhbnQ= X3JlZ2V4 IGlkZW9sb2dpY2Fs IGppaGFk aG9z L3N5cw== Y29sbQ== KHBvb2w= IGVzdMOhbg== IFBlbmRpbmc= ZW3DoXM= IGt0w7NyeQ== KSk7CgoK dHJhbnNhY3Rpb25z IHdpZWxk aXRlcmU= ZXJ0dXJl X3Nz IHN0cmV0Y2hpbmc= IHByaXNvbmVy LlJlYWRBbGw= IGJlc2No LS07DQo= IGNyaXNw X1NDQU4= IGFl U3RyaWN0 IE1pbm5lYXBvbGlz IEJvZWluZw== YXJpcw== cmVr X3BpcGU= IHByaWVzdHM= KEVJRg== ZWhpY2xlcw== IEludGVyYWN0aXZl YmV0d2Vlbg== CU51bGxDaGVjaw== IEJsYWly IEx0 X2lubGluZQ== ZXRoeWw= wrw= X3BhY2thZ2Vz IGJhcnJlbHM= X2hl IHJlZ2V4cA== X3B0cw== X0hhbmRsZXI= aW5ndWxhcg== IE5pc3Nhbg== IFJhbmNo IHBlcmNo VW5zdXBwb3J0ZWQ= U21pdGg= IExlZ2VuZHM= TWk= IGdm c3RlZGVy IGFjcXVpcmluZw== IHNpbXVsYXRvcg== KCksIg== cmVjZWl2ZQ== IGlucGxhY2U= QUNUSU9O IFdlYkRyaXZlcg== ZmlsZXN5c3RlbQ== PE9yZGVy bG9wZW4= IEhFSUdIVA== LnNldEJvcmRlcg== jbA= X19bIg== IGNsYW1w U2Vnb2U= YmFuZHM= dG9MaXN0 YW1iYQ== PicrCg== IGNyZWRpYmxl YW1hdA== cGxheWluZw== LnNldEltYWdlUmVzb3VyY2U= cXVlbA== IHBvZHI= Z2VvbQ== RWs= IFFhdGFy IGdlbGQ= PycsCg== IGN5bA== KGF4 IFdJ dXJhbGx5 IEJyYXNpbA== IHNlbnph YWxleQ== b25lbg== IGJhaA== IG1vbGVjdWxl UmFk 6L+w QU5DSA== LWJhY2tncm91bmQ= LWFnZW50 IHByb2xpZmVy OmJvb2xlYW4= IHRpZGU= ZXJpYWxpemVy XzsNCg== RmVl Kiop ZXJneQ== IEhvbm9y LkxvZ2dpbmc= aXJpcw== IHVuZGVybWluZQ== IER5 IHR5cg== IGRlcXVl IGRhbWVy KFtdKQo= LmxheW91dENvbnRyb2xJdGVt cGVhdGVk Q0FO cmFnbWVudHM= TGFuZA== KV0pOwo= IFNhaA== IERFQ0w= V2l0aGlu IE5hbWVzcGFjZQ== YW5vdGhlcg== c2VtYmxpbmc= LmRlc2NyaWJl Q29uc3Vt IEZlYXI= Z2l2ZW4= T3Jhbmdl PGJvb2xlYW4= IHN0ZWFkaWx5 cGFSZXBvc2l0b3J5 IHJlc3VsdFNldA== X0VOVEVS X3JlcGVhdA== IHRvbmVz IFBST1A= bmFs cGFydGljbGU= IHNpZ25hbGluZw== IGFjY2Vzc29yeQ== CQkJCQkJICA= IHZpZWxl IE5vYWg= LWFn IG11cmRlcnM= IGFpcmVk IFBMQVk= IFN1bGxpdmFu X0NvcmU= IHVsb25n IGJsb2dnaW5n PlRoaXM= IGRhdGFJbmRleA== IHByaW50YWJsZQ== IEV5ZXM= X3RhcmdldHM= KFB5 Lm92ZXI= IGJydQ== YW1wdG9u IHBsYWludGlmZg== PEtleQ== YnVsbA== IOKfqA== SXNzdWU= LmNvcm5lclJhZGl1cw== Q3JpdGljYWw= X3BoaQ== LmFuZ2xl IGR5bmFtaWNhbGx5 ISIpOw0K Pik7Cg== aW52ZXN0 LioKCg== IHTDqWzDqQ== IHN1cGVyZg== IGNhc2NhZGU= RFRE IHZpdmlk IHN1YnNpZGllcw== IEhhc3M= IGNvbGxhcHM= IGNlcmFtaWM= e30iLg== IExlYWthZ2U= LXRyYXNo Y29sbGFwc2Vk LXNvY2lhbA== IENoYWQ= IGluY2xpbmVk IHN0bw== IHN0b3J5Ym9hcmQ= LnBheW1lbnQ= c3RhY2tvdmVyZmxvdw== IFJhaWRlcnM= ICMn b2xpY2llcw== 7Jy866Gc ZW1hcA== IGtq IHF1b3Rh IEdhcmRlbnM= 67KI IEFuZ2Vscw== IG9mdA== IGxvd2VyY2FzZQ== IGlQYXJhbQ== IGNoZWFwZXN0 dW50YQ== X3BrdA== aWNhdG9ycw== IGxldXJz IGRlY3JlYXNlcw== CWRlZmluZQ== UFJFQw== YW1tZXJz IFByZXBhcmVkU3RhdGVtZW50 KGRpcmVjdGlvbg== IGNyZXdz YXJrZWQ= IE1lbXBoaXM= IFNlbGw= R1RL IG1haWQ= OmRpc2FibGU= 6ZuG IFBm IGFsYmVpdA== b3Blbmg= Pz4iPgo= LmdldFNvdXJjZQ== KHNjYWxl RHU= IFBJTA== X3JlZnJlc2g= IGJldHM= KGNhcg== IFZvbg== fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg== IEdyYXQ= TXVjaA== KERpYWxvZw== LnN0b3BQcm9wYWdhdGlvbg== IHRlaw== IGV4aXRz J10sJA== IHBob25lTnVtYmVy dWNz ZWNpbWFs LS0tLS0tLS0tLS0tLS0= aW5w LnBvam8= IGNvcnB1cw== IHByYWN0aXRpb25lcnM= LnBpYw== InRlc3Rpbmc= IHN0cmluZ0J5 Lk5vdE51bGw= IHJhbmc= LkR5bmFtaWM= X1JlbmRlcg== 0LDRgtCw V2FpdGluZw== IFdpaw== IG92ZXJ3aGVsbWVk JSI+ IEFF fX0+Cg== dXc= X3R5cA== IGJ1Y2tldHM= IGdyZWV0aW5n IGxhdWdodGVy IGFudGFnb24= dWdnZXN0aW9u LWVtYWls CXRvcA== IGVyb3M= X3RyaQ== IGlzc3Vpbmc= IGjDoQ== IGlzb2xhdGU= T3ZlcmZsb3c= LEU= IG51dHJpdGlvbmFs IEFiYm90dA== IG5m LnRvdWNo LmZldGNoYWxs X3ppcA== Iil9Cg== IGFtYXQ= IENpc2Nv IG7DpQ== UExFWA== IHNlaQ== Zm90bw== LnRvSnNvbg== 5aSa IEtsZWlu IGxpYmM= IG1pbmVycw== 5aI= LXByaW50 IFByaWRl VG9kb3M= IG1hc2tlZA== IHNldERhdGE= IHRlbGVmb24= IHVuaGFwcHk= IFRhYmxlcw== Z2Vi KGRlYnVn X2FsbG93ZWQ= LWFjY2Vzcw== IGxvZ2lzdGljcw== IGdlbXM= IE1hdHVyZQ== IHJzcA== IEFsbGU= LmdldEJ5dGVz XHdlYg== eW5jaHJvbml6ZWQ= UGFyYWdyYXBo IHRocm90dGxl LnNxbGl0ZQ== Y29uc3VsdGE= IFNlYWg= Q2U= IHN1Ym1hcg== RVJF Vm91cw== IHJlZGRpdA== IHNxbGFsY2hlbXk= LW1pbGU= b2NpZGU= UG91cg== fX0iPgo= c3RlYWQ= IEAo IFtdKQ== IEFkcw== IG92ZXJsb2Fk cmlkZGVu IERlc2VydA== IFdyYXA= IFBvcnR1Z3Vlc2U= ZXR6 CWZpcnN0 IG1pbGVzdG9uZQ== 5peg 0YPRiQ== KHN1Y2Nlc3M= PFZlY3Rvcg== Y29vbA== IFtdKTsK ZXJ2YWxz IGludmVydA== Imlv Y3Vyc28= ZnJhZ21lbnQ= IGZlYXNpYmxl LnNldFBvc2l0aW9u IGVsbQ== IGltYWdpbg== QFNwcmluZw== IGJhdHM= cHXDqXM= Z2FsZW1lbnQ= bnNpYw== Z2llbmU= ZWxsYXRpb24= IEJhaWxleQ== U2hhcg== IFR1bA== IEhL IGZyZWV6aW5n Z2xt Y2VhbnM= LWN1dA== X2NpcmNsZQ== 5ZGY bmVnYXRpdmU= IGluZGlhbg== c2FsdA== IHRpbmc= CW1vZA== IHNpbnQ= YWtpbg== dW1s IFRleHRJbnB1dA== IHBvcHBlZA== VE1Q IHBhcmtlZA== 15nX IEZ1c2lvbg== IGhlYXRlcg== RVRG cm96ZW4= aGFsbA== IE1paw== bGV2YXJk LWhlYXJ0 CW9yZGVy TWFraW5n IHBsZWRnZWQ= IGRpcnM= JHBvc3Q= IEhlcnI= c3RhbnRpYXRl LCIK LmdldENvbG9y IFNBVA== IHRpbWVkZWx0YQ== IE1haQ== CW1ldGhvZA== IGlkaW90 IFRyYXY= aWRlbnRpZmllZA== IERpdmluZQ== LmdldFBhdGg= RGFzaA== IGluZmlsdHI= IGhhbmRsZVN1Ym1pdA== YnJvb2s= LmdlbmVyaWM= LnNob3J0Y3V0cw== Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg== IGRhdGluZ3M= IE1W 77u/Iw== fSIKCg== IGltcHJpc29ubWVudA== YXNvbmlj cm91ZA== dWNpb24= 5oql IGRpYWxlY3Q= IG9uTW91c2U= Y29uc3RleHBy LmxhYmVsQ29udHJvbA== IHdlYWtlcg== IG1hbmtpbmQ= IFJFQ0U= IGRpeg== IGFwcEJhcg== IHF1w6k= ZnJh X2RlZmF1bHRz IGFsaXF1 X2F0b20= OmluZGV4UGF0aA== IG1pc3Nlcw== IHZpc3VhbGx5 IEhhbmRz U1RSVQ== aWF0ZXM= X2Fzc2V0 RmluZGVy bWlkdA== IHNuYWNrcw== KF9fKCc= LnVyaQ== IEluc3RydW1lbnQ= dmVuaXI= KCRfXw== LkRvdE5ldEJhcg== IGNvbmZpZ3M= IGd1ZXNzZWQ= 4KS/4KQ= IGluaXRpYWxpemVy ID8iLA== IFZlcml6b24= bWFuaWZlc3Q= Z2ViZW4= LmRldGFpbHM= R2F0ZQ== cG9uc2libGU= IEVsaW0= LHN0cg== IHdyaXRpbmdz IERlcmVr IENvb3JkaW5hdG9y IHBpbGxvdw== IG5vdGljZWFibGU= UnM= IGR1cGxpY2F0ZXM= ZXJuZWxz a0o= Lnp6 b2xsYW5k IFNFQ1RJT04= X2ZuYW1l dWZmbGVk J10uJzwv X0NN IHly cGxhdA== b2JvZHk= bmRl KEVsZW1lbnQ= IEF0bGFz IO+8iA== IG5pdmVs IGluc2lzdHM= W1A= IGVudGh1c2lhc3Rz IOyeheugpQ== IGJldmVyYWdl e30iLA== OnJpZ2h0 IG5vdXZlYXU= IENvbXBsZQ== IFBhZw== b3ducw== IHJlbWVtYmVycw== IFByYWRlc2g= IGNoYWxr IExhdXJlbg== XFNlcnZpY2U= X0dFTg== PiIpCg== IERvbGxhcg== IGVtb2pp Q2Fyb3VzZWw= LXBsYXllcg== IGFkanVzdGluZw== IGp1Z2E= YWxsZW5nZXM= Z2VuZQ== KGJvZHlQYXJzZXI= bG9wZWRpYQ== IEJlaGluZA== IHNsZWV2ZXM= IGRyYWdnaW5n IENoZXZyb2xldA== IGJpeg== aXZpdGllcw== IEZyZXF1ZW5jeQ== LGNoYXI= LldISVRF X3ByZXZpZXc= KSc7Cg== X2F4 SU9OUw== LmNwdQ== LmlucHV0cw== VUJF X2ZlZWQ= IFN1cHBsZW1lbnQ= ISku ZXN1cw== IFVEUA== IG1pY3JvcGhvbmU= IGNvbmZpcm1z LmlzTm90RW1wdHk= IjoiIiwK X1NDUkVFTg== CWV4cGVjdGVk Ky0rLSstKy0= IEhhaXQ= ZmFzdGNhbGw= IGRlcGljdA== dmI= X3BpY3R1cmU= CWRlc2NyaXB0aW9u IFdpZmU= dWNp IHZpY2lvdXM= 5LuW dWViYQ== IHNldFVzZXI= 44Gh IGRpdmluZw== IG9wZXJh dXNlcmNvbnRlbnQ= YXJhaA== KX0s eXVu dmVsdA== IHVuY292ZXJlZA== IGhpcHM= IG9zY2lsbA== IGFzc2VydGluZw== IFhp LnJlc3RvcmU= a2Vh IHNwZWxsaW5n IGRlcml2ZQ== YWJ3ZQ== IERvdw== LnNldFR5cGU= X3Zz IGNvenk= LmNhdGVnb3JpZXM= T3Jn X21ncg== IGR1bmdlb24= Y29sbGVjdGlvblZpZXc= IEJsYW5r YWNpYXM= w6TDpA== X2NsZWFudXA= X0FDVElWSVRZ IHRyaWFuZ2xlcw== Lk1lbnVJdGVt IGlwaG9uZQ== IFdvbg== XV0KCg== IENvbXBhcmlzb24= LkRvYw== IGNhbm9uaWNhbA== IFN1ZGFu Jyl7 VXBJbnNpZGU= YnVpbHRpbg== RU5DWQ== eGJl IGNodWNr IGNvbnRyYWRpY3Q= IG51ZXN0cm8= IGFyY2hpdGVjdHVyYWw= IEZpYg== IGNvbXBhcmVz Kms= Q2Zn 54Sh bnRlbg== TWF0Y2hlcw== IERPV05MT0FE X0hBTkRMRVI= bWFuYWdlbWVudA== W1M= RU5H woDC ZmFuZw== IHNsaXBwZWQ= IExhbmth ZXNjYXBpbmc= IHRhY2tsZXM= IFBlZHJv LlByb3A= Licn LkdlbmVyYXRlZA== Lk5ld0d1aWQ= YXRyaWdlc2ltYWw= aWxsb24= IHN0YXRpc3RpYw== c3BlY2llcw== aG9sZGluZw== RHJ1cGFs IGZ1bmRhbWVudGFsbHk= IGJvbmRhZ2U= IHJlc29sdXRpb25z SW5saW5lRGF0YQ== XFR5cGU= ZXN0aW9u LndyYXA= IHdhcnJpb3Jz IExPQ0FM QXJjaGl2ZQ== IGVtYnJhY2Vk 4bun LlZlcg== IEFmZm9yZGFibGU= b2xlc2FsZQ== IEFwcGxpZWQ= IENvbnZlcnNpb24= bWVnYQ== X2NhbQ== IGNlcmVtb24= YXVydXM= IFZvbGs= Lm9wZW5z L2Fib3V0 IFN0ZA== am91cm5hbA== KCkpew0K LCJc KEFycmF5cw== IERlbnNl YXNlw7Fh w6RubmVy L3N0YXQ= dXNlckRhdGE= IGdlcm1hbg== IHR6 d29ydGh5 Rm9ybWF0RXhjZXB0aW9u cGhlcmQ= IHNtaWxlcw== IFdoZW5ldmVy KGFkYXB0ZXI= LmJhZGxvZ2lj IGJyaWVmaW5n LkdyaWRDb2x1bW4= LWNoYXI= ZGltZW5zaW9u IENvcHBlcg== IG5pbnRo ICd7ew== IHJhdg== X1RhYmxl IGRlcml2YXRpdmVz IFJhaXNl IEZ1dA== YXJtb3I= LXBhZGRpbmc= IHJlbWlu CXN0eWxl IE1lbWJlcnNoaXA= IHNwcmVhZHM= IGdhbGxlcmllcw== IENsYXJrZQ== IGNvbmNlcHRpb24= bWludXRl IGFidXNpdmU= X2Fkag== IHRlcnJpZmlj IG92ZXJ0 b3VyY2luZw== IGVudHJhZGE= bGV2ZWxz IGNyaXRpcXVl IHJlc3BlY3Rz IE1NQQ== aWVuZQ== IGVuY2Fwcw== IFJheW1vbmQ= RGl2aWRlcg== aXZhYmxl YmF6 IEBfOwo= IENsYWlyZQ== IHVyZ2luZw== Q0VF IHRyYW5zZm9ybWVy ZGlzY29yZA== IEpvdXJuZXk= dG9z IGNvbXBldGl0aW9ucw== IE9CSg== IEJpcw== IHJlbGF4YXRpb24= aWR5 X0lOU1RBTkNF IFByZWY= ZGFkb3M= aWNpZW5jaWVz IE1lZGlhUXVlcnk= IEN1YmU= IFN0cmFuZ2U= Z3B1 KGRheXM= X0luaXRTdHJ1Y3Q= IGZpbmdlcnByaW50 ZW1hdA== IEdlY2tv IHJhaWxz IEx1bQ== c3RyYWN0aW9u aWd1bmc= KG1vdmll X2RpY3Rpb25hcnk= X2ludGVycnVwdA== IFFD aWtlZA== YXBwZW5kQ2hpbGQ= cmVjaXBpZW50 csOp VmU= IHRvd2Vs Lmxhc3RJbmRleE9m IHBsYWNlYm8= IFdpZQ== LmVzcA== KERlYnVn b3BlcmF0aXZl IGRlY2Vhc2Vk Jmlk CW11dGV4 ZWxpYw== IGJhcHQ= CQ0KDQo= IGZhcnRoZXI= SGFsZg== LmRpc2FibGU= Lm1lbnVTdHJpcA== bGVjY2lvbg== IHJlc3VsdENvZGU= IGNhbnM= LWVsZWN0aW9u ZmVtYWxl X0ZJWA== YXVzaWJsZQ== IFBPV0VS IHJlY29uc3RydWN0aW9u IHNjYW5z Llh0cmFCYXJz 4oCYcw== UmVtb3ZlZA== IHBhcmFncmFwaHM= X21hcmdpbg== IGx5bXBo IGJvcw== bGluZ3Rvbg== IEJhcHRpc3Q= IGFkdmVydGlzZW1lbnRz IE1hbmFnZQ== L3l5eXk= SU9VUw== RU5DRVM= IEZpY3Rpb24= CW1lbnU= IEZpbGVPdXRwdXRTdHJlYW0= b3Zhbg== IEZlbmc= IHNraXBwaW5n Z2V0Q2xhc3M= YW5uaQ== IHJlYm91bmRz IHB1YmxpY2l0eQ== IGluZ3Jlcw== dXNlbWVudA== IHRob3VnaHRmdWw= LkNoYXJ0 IGhhdHRl cGFzc3BvcnQ= IGhvb2tlZA== IExlbnM= IGZsYWdzaGlw IHN0aXA= IEdFTg== IGNsdWVz aXB2 IFJpc2U= IEdldw== dGFibGVuYW1l IGZvcmVtb3N0 X3ZhbGlkYXRl X2FuYWx5c2lz b2xsYQ== IHF1YWxpZmljYXRpb25z IGRpc3RyaWJ1dGlvbnM= IEZsb3dlcg== IHRlbnNl IHRoYW5rZnVs IGNsdXRjaA== IHVuaWZpZWQ= cm9hZHM= IHNpdGk= IHN0YWxs X1BSSU9SSVRZ Y3N0ZGxpYg== X1VTRVJOQU1F LmJ5dGVz P3BhZ2U= ZXJtYWxpbms= IFZlZ2V0 L3ZuZA== LWF1dGhvcg== Lk5PTkU= IENvbmN1cnJlbnQ= IENyeQ== IHN0YXJ0ZXJz IEludGVyYWN0aW9u ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExFVkVM RWxs IGNvbWJvQm94 IFRoZXJlc2E= dGVr X0hhbmRsZQ== IGFieQ== LmdkeA== LGVuZA== KExvY2Fs T2w= a25pZmU= YXJpYWw= IEhvZmY= IHByb3N0aXR1ZXJhZGU= RG9jdG9y SW5zdGFuY2Vz LlNldFZhbHVl CWZyb20= IGx1eHVyaW91cw== SW5kZW50 QWxsb2NhdG9y X0RSQVc= KCIsIiw= IEZyYW5jZXM= IGdyb3VwQm94 KHNjaGVtYQ== UHJpbnRm T1JJRVM= LWdyYWRpZW50 IHJlcHV0 YXJpbg== X0RPTkU= aW5jcmU= aWdudHk= IGV4ZXJ0 IC0u L0FwcA== LXRocm91Z2g= IGRlY2xpbmluZw== IGRlc3NlcnQ= IGluY3VtYg== IGRlc2lnbmF0aW9u LlBPUlQ= LHN0cm9uZw== IHNhbmRib3g= IHdpbmVz IFBhdg== JHN0cg== YXNrZWxs IGjDtg== IFBZ R2V0SW5zdGFuY2U= VGV4dElucHV0 Z2FtZU9iamVjdA== L2V2ZW50cw== Y3JlYXRlZEF0 IGxvY2FsVmFy IFdISVRF cGVyZWQ= aWxlZ2U= ZWZmaWNpZW50 LGNvbG9y Y2F0ZQ== IENhZmU= IHNpbWlsYXJpdGllcw== IHB1bXBz IEh1bmdhcnk= LlVzZXJuYW1l IHNrYXRl IHRvdWNoZG93bnM= IGFjY2VsZXJhdGU= IEhlbGVu T01FTQ== IEt1bg== X3ZvbA== IGZpbmRBbGw= IE1lbnNjaGVu YWhlYWQ= KTsi a29tbWVu IHBvc3Nlc3NlZA== LmFyZ21heA== LnRyYW5zaXRpb24= QVJQ T0xVTUU= KHNjcmlwdA== INCY IEZpbmRpbmc= b25jZXM= SW8= Qm9sZA== IHJlbmV3YWw= X0RJQUxPRw== IGRpc3JlZw== SU5URVJO IHRvdXRl IGVsZWN0cg== IEdyb3Nz CXRydWU= LkZpZWxkcw== IFdJRFRI IERlbnQ= IMOB TlNOb3RpZmljYXRpb24= IGFvcw== IG1lbGVl LlZhbGlkYXRpb24= IERFQw== LWRlcGVuZGVudA== IHN1aWM= VHJhaXRz JG1lc3NhZ2U= IERlYXI= CUZJTEU= bGFuZ3VhZ2Vz LlByb3Q= LmFkZHI= LWdlbmVyYXRpb24= SUNPTg== IHRyYW5zcGxhbnQ= LWRlc2NyaXB0aW9u IGNoYXNpbmc= IGNoZWVz IH0qLwo= VHJhZA== cXVlcmllcw== L3dpZGdldHM= c3VicGFja2FnZQ== IGVzcGVj IGNyYWNrZWQ= IGNvbXBldGl0b3I= UHVyY2hhc2U= LXRlYW0= b2xlY3VsYXI= b3JUaHVuaw== JlA= IHJlbGVudA== LyN7 IHByb2R1Y3RJZA== IOi+ IExhdg== IEFsdGVy Lk1vZGU= QURJTw== Z3Jw 5re75Yqg UXVpdA== IGRlcHRocw== LWNhdGVnb3J5 IERBVEFCQVNF U1BFTEw= IEZhbGNvbg== IFFTdHJpbmdMaXN0 ICcnLg== IEluc3RpdHV0aW9u ZGFtYWdl YXpvcg== YmVsb25nc1Rv dmVyYWdlcw== IE5PTkU= aXBwZXRz LFwK IGZvb3RwcmludA== X2FyY2hpdmU= bmFr LmdldEZpZWxk IFJlZmxlY3Rpb24= ICdd IEhCTw== X2Rpc2NvdW50 IGluY2VzdA== IERvZGdl IFdhZGU= Lk5P ImVuY29kaW5n IEJsb2NrY2hhaW4= IGxhd3N1aXRz IE1haW50 Y2h0ZW4= IMOpdGFpdA== IGt0w7NyZQ== X2N0bA== KHRpbWVy QmF0dGxl aXpv YXllZA== SU9S IEdsYXNnb3c= IHN5bnRo X2xvZ3M= LnBvc2U= X0FkanVzdG9yVGh1bms= KCgm IHVuc3VyZQ== eXN0YXRl 7ZWY64qU T1VMRA== Lm5n IGRlZmF1bHRkaWN0 d29ya3NwYWNl IHNlbGVjdGl2ZQ== UGlja2VyQ29udHJvbGxlcg== WU5BTUlD Lm1ldGhvZHM= IHBhdGh3YXlz IEZldw== S0c= Q1JZUFQ= Zm9sbG93aW5n IERMQw== IFNhcmE= IHByZXNldA== ZXN0cnVjdG9y IEt1cnQ= IGFpcnBsYW5l IG9tcA== IFBhcmVudHM= IE1hcnRpbmV6 LmNvbXBsZXRl IGJyb2FkbHk= IHNjYXJl IE3DqQ== IGVsaW1pbmF0aW9u IHBvdXJlZA== L3N3 IGNvbXVu IG1hc2M= IE9yZ2FuaWM= IFN0cmluZ1V0aWxz aWxhdGVyYWw= IHJlbHVjdGFudA== LWFnZQ== IG56 LiJc IHBhc3Rvcg== YWxleg== IGVmZWN0 cHJvdg== L2luaXQ= IHBlbm4= dW5kcw== IHNzaXpl IFByb2o= YmFzZW5hbWU= IHNoZWxscw== IE5lY2s= IEVuZm9yY2VtZW50 dmlkZWQ= c3Rvd24= U3BoZXJl JHI= dXNzZW4= YWZpbA== IFRlbGVncmFt IGFuYWx5dGljYWw= 0L3Ri9C1 dXN1YWxseQ== eG4= IGhpc3Rvcmlhbg== IEdyZWdvcnk= b2xwaA== IFVuYQ== IGNvbnRyaWJ1dGVz JS0= YW50aWFnbw== 0YDQtdC0 LnJlZ2lvbg== IGFicnVwdA== IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9u IFRBU0s= X2ZpbmlzaA== IG5vdG9yaW91cw== IFZz IE1R IHN1bnNldA== IHVuYWNjZXB0YWJsZQ== YXJjZXI= IGlsbHVtaW4= IE9yYg== IGJo RXN0ZQ== X2Rpc3BhdGNo IHJpcHBlZA== IHRvdWpvdXJz IFBhcmNlbA== X2xs LnVzZXJOYW1l LmNsYXNzZXM= U09VUkNF KE51bWJlcg== 0LXQu9GP IGhlYWRwaG9uZXM= KHNpZGU= Y29uc3RpdHV0aW9u YW5uYWg= DQogICAgICAgIA0K IGNsaWZm LXJlZg== IG1vc3RyYXI= IFBvd2VsbA== K3k= IEJH X2ZyYWdtZW50 LlBvcnQ= IHJlYWxpemluZw== cGFyYW1yZWY= IGhvbWV0b3du QFRhYmxl KyI8Lw== b21pZA== IGR1Zw== CWJ0bg== IHN1YmplY3RpdmU= L2Jyb3dzZXI= IHVzaG9ydA== IE1vbnRnb21lcnk= LXJhdGU= CXB1dHM= bGV0aWNz b3Jucw== 4oCcV2hhdA== ZWVwZXI= LkludmFyaWFudA== IGNvbmNlYWxlZA== X251bXB5 PT09PT09PT09 KHBz TG9jYXRpb25z LmFzdHlwZQ== IENIQU5HRQ== Lk9yZGVyQnk= O2hlaWdodA== IGdlbnRl IGdydW50 IFBsYW5l IHNhZGx5 IExvZ2Fu X3VzZWM= LmRndg== IHNpbmNlcg== IHBu CWd0aw== IGluc3RhbGxlcg== IGRpc3BsYWNlbWVudA== IGJ1cm5z 0YPRgQ== aXZlcmVk Ol0pCg== c2VhdA== YW5pbmc= fSkKCgo= X3JvbGVz YXRpY2Fu IGdlbmVyYXRvcnM= IGh1cnRz IHNuaXBwZXQ= IGdzb24= IHNlZ3JlZw== IGRpc3RyaWJ1dG9y IGFkdmFuY2luZw== cG9zdGdyZXM= IHVzcg== IExpcw== LmFzc2VydElz X2Nk IGh5ZHJhdWxpYw== LmNvdW50ZXI= IEluZGVwZW5kZW5jZQ== IGRpZmbDqQ== VW5saWtl IHRvbWI= dmlr cG9zdGVk d2Y= IGRlc2NlbmRpbmc= ZHlu YW1lbnRhbA== IEZydWl0 IFlv LmRvdWJsZQ== IElB aWV2 aWJyYXRl IFJlbGlnaW9u TWFueVRvT25l LVRh IGJhbmFuYQ== IEF2ZW5nZXJz IEhvbG9jYXVzdA== IGdldEM= IGNvbmRv IEdvdGhpYw== IHByb3NwZXJpdHk= VFJBTlM= IGRvZXNudA== IENoYW9z SVRU IENVUlJFTlQ= XGhlbHBlcnM= X1NBVkU= YXZpdA== Y29tcHV0ZXI= X3NoZWV0 IEJyZXdpbmc= IHJvYmJlcnk= IOqyvQ== INC60L7QvA== IG7DpA== LnJlZ2V4 IGRpc3J1cHRpb24= IFNpbXVsYXRpb24= YXBpZA== IHN1cHJlbWU= zrw= IGNvbW1pc3Npb25lZA== IGFic29ycHRpb24= IE5ld2Nhc3RsZQ== CWNvbnN0cnVjdG9y VGVybXM= IHJpdg== IHJlbGlnaW9ucw== V2l0aFRhZw== Lkh0bWw= bGlua2Vk Q29tcG91bmQ= IE1hbnM= IGxha2Vz aXp6bGU= LnNldFNpemU= YWJlcg== IE5lZWRz cGFja2FnZXM= LlRhYlBhZ2U= IHJlZnM= IGlvdXRpbA== IERvaW5n ICJcKA== IHBoZW5vbWVuYQ== LkdldEludA== QUxUSA== IHBhcmxpYW1lbnRhcnk= IHJlZnVzYWw= IGluZXhwZW5zaXZl IH0KCgoKCg== IHNvbGlkYXJpdHk= CXB1c2g= aGF1bA== IEJlcmU= U2l6ZXI= SW5kaXZpZHVhbA== IGFuY2U= IGRpbGU= IFBlYWs= KGhy RWRpdGluZ0NvbnRyb2xsZXI= SE4= X1BFUklPRA== RVRT QmFubmVy ZXJyb3JNZXNzYWdl LkNBU0NBREU= LWlnbm9yZQ== IFNJR04= IE9C X2Rk KERFRkFVTFQ= IHNvbw== IFZpY3Rvcmlhbg== IGN1cnQ= IGRpc2NyZXRl cnlsaWM= aW1iYWJ3ZQ== LnRvRml4ZWQ= bMOk LnN0ZGlu IHF0eQ== Uk9MTEVS bWVkaWF0ZWx5 IHBsdW1iaW5n IFByb3BlcnR5Q2hhbmdlZA== YXJyYW50eQ== IEJyZWFrZmFzdA== LnNldEhlYWRlcg== LnB5dGhvbg== Y29tbWVyY2U= b3BlbmN2 Pi0tfX0K RnJlbmNo RW50aXR5TWFuYWdlcg== IFBsYWlu Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= wrM= KFJF Y2FwdA== IG9yZ2FuaXNtcw== IGpldHM= b2xvY2F0aW9u IEFwcFJvdXRpbmdNb2R1bGU= IGdsb3Jpb3Vz 5pyN IGRpc2NhcmRlZA== CQkJCSAgICAg IEFybm9sZA== bHVn IHBhcmw= IGhvcm1vbmVz IG1haA== IFNvbmlj IG9yZ2FuaXplcnM= X1BMQVRGT1JN Lmludg== IGNob3Jk dmVudGlvbmFs CW9m RXBpc29kZQ== LkVudW0= dW5rdA== IERo IEphcmVk IE5haw== IGludGVuZHM= RW5kaWFu IGF1c3RyYWxpYQ== X2N2 KHJlc29sdmU= IGNsaW5pY3M= bGlrZWQ= QVNISU5HVE9O aW5oYQ== Jyo= IE5Q X2JlaA== IGhm IHfDvHI= Y2F0ZWdvcmlh JGZvcm0= IHN1YndheQ== IGlzQWN0aXZl cG9wdWxhcg== Q291cg== IGNvb2xkb3du IGFpbnNp IEdMdWludA== ZXJlYWw= IGFycmF5T2Y= IGhhdGNo PT09PT09PT09PQ== cmVzc2Vz X1BQ Ll4= X2RlY2F5 IEJsZXNz bWV0cmljcw== IENPUFlJTkc= IER1bXBzdGVy IEpvc8Op IERlc2lnbnM= PFZvaWQ= 57q/ ID8+PA== ICJ9Cg== dGltZXpvbmU= IGVlcg== bWF4Y2Ru IEVTQw== aWdhcmV0 X2Nvbm5lY3RlZA== X3JldmVyc2U= IHF1ZXN0aW9uYWJsZQ== IFVTQw== IHR1dHRp IGRyb3BvdXQ= IEFjdGl2aXRpZXM= IFdpbmRz JykpKTsK IGNvbmdlc3Q= xJ/EsQ== IHByb2xvbmdlZA== 6L+Z IENyb3NzQXhpc0FsaWdubWVudA== TEVFUA== IFZBTElE IEdheg== IGRlcGVuZGVuY2U= IFByaXg= LkNvbXBpbGVyU2VydmljZXM= anVtcA== IHN0cmF0 Y2lyYw== IENVU1RPTQ== eGFh IGJtcA== IGJ1cmVhdQ== IHdhcmVu Tlg= KFdpbmRvdw== IENocmlzdGll X0ZF IHRu IE9tZWdh Y29tbXVuaWNhdGlvbnM= SG9tZVBhZ2U= Y29tcGxldGlvbg== IHN1cHBseWluZw== WVBFUw== w6F2ZWw= 5Yi2 KGNsaWNr XENvbnRyYWN0cw== L3F1ZXN0aW9ucw== IGV6 QU1T Lm1lc2g= ICc8Pw== asOg SW5p LiM= IENhcmRpbmFscw== cGNpw7Nu Q3ViZQ== IFBhdGllbnRz X3ByZWY= QWN0aW9uQnV0dG9u KGJ1aWxk IFZpc2E= b3ZlbA== KEFycmF5TGlzdA== SWdu IHJlaGFiaWxpdGF0aW9u IHBhbGFjZQ== IHNwZWVjaGVz fScK SHR0cFJlc3BvbnNl CWNvZGU= RHVtbXk= IGFjYWRlbXk= Lm1vdmll IGluY29ycmVjdGx5 IGN5Yw== KFVuaXR5RW5naW5l CWNhbGxiYWNr IFNhdGFu IEZVTkM= IGNoYW50 IEhlYWx0aHk= OicsCg== U2hpcHBpbmc= X21j IER5bGFu IFByb2R1Y2Vy IHJlc3B1ZXN0YQ== IHBvbGlzaGVk QnJvYWRjYXN0 IGJhbGFuY2luZw== IFNsaWRl IENhcHM= c3RpbGw= IGhhcHBpZXI= IEdvc3BlbA== dHJhbg== LnBhdGhuYW1l QWN0aXZlU2hlZXQ= IENoYW5n PlwK Um9ib3Q= SnNvbk9iamVjdA== IERG IFByb2Nlc3Nvcg== X3Nob3VsZA== LnByb3RvYnVm LXVzZXJz IGVtYnJ5 Rk9OVA== IHN0YXJ0dXBz IERhdGFTb3VyY2U= KSM= dXJvcw== X0NvbG9y IHN0YW5kYWxvbmU= fVs= amQ= IGZvcmdpdmU= IG5neA== IEdlbmVyYWxseQ== IGNvbmZpZ3VyYWJsZQ== L29yZGVy IHZhcw== JykiOwo= IFJS IFRyb3k= IGNvbXByb21pc2Vk IFN3YW4= aW50ZW5kZW50 Q2VudHJhbA== X2tlZXBlcg== IGFycXVpdm8= IFJlYWRPbmx5 X2N1cnZl a3Y= ZW50aW4= 6LE= IEV5 LmltcmVhZA== IFBhbQ== aWZmZQ== YXRpdml0eQ== eGJj IGdyaW0= LWZpbGxlZA== bmFtZXNl J106 IGF1cg== IEdpYnNvbg== Lk1vdXNlRXZlbnQ= IGxhZG8= YXZhZG9j IGZhbWls IE1vZGVy ZnBz 44CA44CA LWV4YW1wbGU= IEFsemhlaW1lcg== IFV0Zg== X2FyZ3VtZW50cw== Q29uY2x1c2lvbg== dGV4dENvbnRlbnQ= cmVtYWluaW5n IGludGVycnVwdHM= IEJhY2t1cA== IE1vbmc= IHJlY2VwdG9ycw== aGlzdG9y LmNvcm91dGluZXM= IHNob3V0ZWQ= QWxhcm0= IGNvbWJ1c3Q= IGdyb3Rl dWx0dXJhbA== KGlkcw== LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= aXBsaW5hcnk= T3B0cw== IFlhbGU= bG9jYWxTdG9yYWdl IGVxdWl2YWw= IEZsZWV0 XGI= KnBp IFFMYWJlbA== 5qE= IHZ4 IEFDTA== IHN1Y2Vzc28= IHBlcmM= IE5vdHJl IGFuYXJjaA== UmluZw== c3Bi IHN0cnBvcw== c3RvcmVz IE1hcGxl KE1haW5BY3Rpdml0eQ== KCIiKSk= IHZpZXdIb2xkZXI= UXVhZA== IGlndWFs b3JzY2hl Lm1hcmdpbg== IGluZGll IGZyYW5j IEZvcm1CdWlsZGVy IFBhcnRpY2lw LmZsYXNo IHN0b3Jtcw== VWx0 IGZlbg== W25ldw== RXZlcg== PSIK IGxvY2FsaXplZA== X2ZvbGxvdw== IG5hdmU= IGRvbWluYW5jZQ== KHRpbGU= Sm91cm5hbA== IFZD IHBlbmV0cmF0aW9u 77yV IGNvbXBhcnRtZW50 IGJpZHM= Rm9ybWF0dGVk KioqKioqLwoK KGNpdHk= 4oCUaXQ= W0M= IHVzZUNhbGxiYWNr YXVi KT8u IFZBUg== IFNlYmFzdGlhbg== IE1vc3M= IGFidW5kYW50 R3JlZw== 0YLQsA== X2Np IGJpYmxp Q1JN IEF0dGVtcHQ= aXNtZQ== ZGFzaA== 44CO X211 LkZvcm1hdHRpbmdFbmFibGVk SW5kZWVk LWRpcmVjdA== IHN1Y2tpbmc= IHBuZQ== b2NhYnVsYXJ5 IFBhY2tlcnM= Lk5hdmlnYXRpb24= IHBpZWQ= Y3JpYmluZw== IFN0dWFydA== LlRvRG91Ymxl IFNlY29uZGFyeQ== U2F2aW5n IER1dA== IE1hZGQ= TWFnaWM= LEg= LmRvY3VtZW50RWxlbWVudA== IEJTVA== IGRpZmZlcnM= IG1vcmVvdmVy X25k U0VBUkNI 0L/RgNCw0LI= 5rQ= dG9NYXRjaA== IGRlY3JlYXNpbmc= LW1lbWJlcg== YW1wdXM= KGJvb3N0 RGFpbHk= RGF0YUdyaWRWaWV3 IEh0dHBDb250ZXh0 IGhpcHA= X3dvcmtlcnM= LWxhbmd1YWdl 6ZM= IGNvbnNpc3RlZA== YXRoaW5n IE1lcmN1cnk= JGNvbnRlbnQ= IHByYWN0aWNlZA== IE1vZHVsZXM= X0RBWQ== IHdlYWtuZXNzZXM= IExvZGdl IG5hcg== IE1hdGU= IGpw IEh0dHBIZWFkZXJz IHNtbw== IFRPS0VO XSko IGFxdWk= c3dhZ2Vu IHNydg== CWFucw== QXJvdW5k IE1hbnVlbA== IGZpY3Rpb25hbA== IElNRw== IC4n IEJlcnJ5 IHdhbGxwYXBlcg== c2V4dWFs aWVybw== IOeahA== 7IaM QmFja2luZ0ZpZWxk IEFkcmlhbg== QkFTRVBBVEg= IHJlcGVhdHM= IGJsdWVz IHVucHJlZGljdA== X2NvbGw= c3RhY2xl IFR1bWJscg== IEVsZg== IGFzc3VyYW5jZQ== IGNlbnN1cw== IElNUE9SVA== RU5ERVI= YW5vcw== ID0o IEVsbGlz IgoKCgo= Lndpbg== IEFib3Zl YWxvbg== X3RpY2s= IHJlcHJlc2VudGF0aW9ucw== IOaV d2lk IEFybXM= TGlzdGE= X2ZhaWx1cmU= X2Nt LkZsYXRBcHBlYXJhbmNl IHRocm9uZQ== UGF0Y2g= IFZveQ== ZW5nbA== IG5lZ290aWF0aW5n PmA= IHNob290cw== IEZQUw== LlllYXI= IEtpc3M= ZW5jacOzbg== cmVldGluZw== RnJvbUZpbGU= IHJlc2lnbmF0aW9u 2Lc= IHR3aW5z xrDhu6M= IGdlYnJ1 LmdldENvbnRlbnQ= LlRyZWU= IEVtcGxveWVlcw== IEZJRkE= IGNlcnRhaW50eQ== KENs IHRvdGFscw== ZWRpdGFibGU= 4KWA LlJlcG9ydGluZw== TWFz cXVpZXQ= LnJ1bGVz IFZP Y29uZXhpb24= LEs= IGFsbG9jYXRvcg== IFBvd2Rlcg== XFJlcG9zaXRvcnk= QmVhdA== X3RpcG8= IFsnJyw= X0lOVFI= IDw8PA== PGhy Iik9PQ== dWdnYWdl IENyYXc= IMOpZ2FsZW1lbnQ= IGdpbmdlcg== IHByaW1lcmE= IHByb2R1dG8= bHRr LlVzZXJOYW1l IHN0cmVycm9y bWl0aA== X25i IGRpc2NvbWZvcnQ= J107Pz48Lw== UVQ= IGVydXB0 IERhbmlzaA== XEFjdGl2ZQ== X2FkYXB0ZXI= IGJ1YmJsZXM= cm9sbG8= b3Jnb3Q= 0L3Ri9GF VkVDVE9S b2NvZGU= IEJ1bGxz IGJvaWw= PiIpOw0K ZHJvcElmRXhpc3Rz IEJlZw== X0hBTA== IGNyb3NzQXhpc0FsaWdubWVudA== IEV2aWRlbmNl IHBlY3VsaWFy IGluc3RpdHV0ZQ== dmVpcw== IGZmdA== w4E= IHpvZWt0 YW5hbHk= IEhvbWVsYW5k IHBlbmV0cg== dWRkZW5seQ== CWVsZW1lbnQ= IEJyZW4= IFRydWRlYXU= IEN1YmFu amFt dXNsaW0= X2V2 IHN0ZW1z fSU= neWniw== IGJyYW5kaW5n IGNvcnJlc3BvbmRlbmNl LmpxdWVyeQ== ouWNlQ== IFJlYWRz KEh0dHBTdGF0dXNDb2Rl YXNzaW4= KHNsb3Q= IEdyYWR1YXRl Ly8vPA== IGluZm9ybWF0aW9ucw== RU5BQkxF IHB1aXM= IGZpbmRlcg== IEJyaXM= IG5ldHRzdGVkZXI= X21pZA== IG9ncw== IFN0ZXJsaW5n IGFycm9n c3RyZnRpbWU= fAoK IHZveA== IFJlZ2FyZGxlc3M= IGVzbw== IENvbWZvcnQ= LkJvb2xlYW5GaWVsZA== IHVo QUNZ IHNxdWVleg== IFZpYw== Y29udHJv Lmxv IGlyZQ== IENvbWVkeQ== 67Y= IG9yaWdpbmF0ZWQ= IHNoaXBtZW50 fG1heA== X2d1aWQ= bGV2YXRpb24= 0L3QsNGP KHVuZGVmaW5lZA== IEREUg== IHNob290aW5ncw== IExhdGlubw== RU5ET1I= IGF2ZXJhZ2luZw== IGdyZWV0ZWQ= IHRoZWF0ZXJz 0L7QtQ== IGRC IGdzdA== IGRlZmluaXRl LlN0b3JhZ2U= Lmhlcg== IGFmb3Jl IFJlYWxpdHk= IEdvZHM= dmVyc2Vk IGhhbmRzb21l IGV4Y2x1ZGluZw== KGFk UXVvdGVz IFNjaGVtZQ== P3E= IFRhbWls VGlja3M= IHBlc3Q= J24= IHBvcm5vZ3JhcGh5 X21vZGFs IC0tLS0tLS0tLS0= IGRpc3Bvc2FibGU= RlJFRQ== IHNoYXJr Q0hF IGRlcGljdGVk IGRlbW9uc3RyYXRpb25z IEtpbGxlZA== IFJVTEU= IG9ic2Vzc2Vk IHNpbXBsaWZpZWQ= UG9zdGFs IGNvbmNlcHR1YWw= IHBzdA== TGFz X1BST0pFQ1Q= dWNjZWVkZWQ= b2x1 xJ9p IHBlcnNvbmFsaXRpZXM= IHJlc2hhcGU= IGVuY2xvc2Vk CXB0cg== IHR1dG9yaWFscw== IGV4cGxvZGVk X0RJUkVDVE9SWQ== 5YaF5a65 IGNhbm9u IHJlY29nbmlzZQ== UEFE IEFwcHJveA== IFJlc3RvcmU= IEltcG9ydGFudA== IGhlYXZpZXI= LlNlcXVlbnRpYWw= RWFydGg= IE1pbGs= LnNldFJlcXVlc3Q= LnRlbQ== IHJlY29uc3RydWN0 IHNrZXB0aWNhbA== X1ByaXZhdGU= QlVG cXVh OmE= IHNlaw== IGR3ZWxs b3NzYQ== IHJld2FyZGVk 0LjQuQ== KHRvcGlj X3BhcnRpdGlvbg== IF9fX19fX19fX19fX19fX19fXw== S2V5d29yZHM= IEZyYW5jbw== TGl0ZQ== IG5ha2Vu INC30LA= T0JKRUNU IGNyYWZ0cw== IFN3YXA= LlhuYQ== LkNvbm5lY3Q= IGJhbGNvbnk= KHJlYWw= IEJhcm5lcw== Ymly IFR3ZW50eQ== YXlhbg== YXRhcnM= IFByb3BlbA== IElobmVu VXBncmFkZQ== IGN1cmI= LXNlY29uZA== IG5lcGg= LnByZXM= 7J6F LnNlcQ== IHBhZGRlZA== Ij8= amw= 44Os Jyk8Lw== IGNpdmlj Z29ucw== PmE= Q29vcmRpbmF0ZXM= IGVuYWN0ZWQ= RU5UUw== IGxhYw== LmZpbmFs IFBocFN0b3Jt Y2FsbGVk IGlucXVpcmllcw== Lm1pZGRsZXdhcmU= IERvd250b3du Lyc7Cg== IGtpbG9tZXQ= YWNjZWw= IHF1aWVu d3N0cmluZw== c2V0RGF0YQ== IG1hbmVyYQ== IG1vZHVsYXI= cmltcA== IHRhcmlmZnM= 4oCZaWw= X1RIUk9X L2NvbG9y IEhUTUxFbGVtZW50 IGNhcnJv IHByZXJl IHBsb3R0aW5n IFBvc2l0aXZl IE1hY2hpbmVz T1RFUw== 4bub cGxlYXNhbnQ= IGFsdGU= IGFpbmRh dGhlc2U= IGNvcnM= aXBheQ== IEFkdmlzb3J5 IFJ1Ymlv anE= IGxpbWVzdG9uZQ== IGRldGFjaGVk 6K6+572u dGVuYW50 IERlcHRo YWxvcmU= INGB0YLRgNC+0Lo= IEZPUkU= IExheQ== cHJlc2VudGF0aW9u KScpOwo= LnN1YnBsb3Rz z4M= Tk9X R2Fy aGFuZGxlcw== YWJyYQ== cHV0aWVz IEVsZWN0cmljYWw= TWlkZGxl cm9waWM= IEpE IER5bg== IEJyaXN0b2w= IE1jQ2FydGh5 IHN0cmlrZXI= IGVudW1lcmFibGU= IEV2YW4= LmRlZmF1bHRz cXVlbmNlcw== KXx8 CXRva2Vu 4peP LWRyb3Bkb3du U1RPUkU= IEdyYXBoaWM= KHBw RXhwbA== IHVwd2FyZHM= IERpc3RyaWJ1dGVk IFdFQg== SmVy aXNOYU4= 55Sf5oiQ PlI= w7xzc2Vu ZWZz IHVuY292ZXI= IGx1ZA== LmNhbGN1bGF0ZQ== IGludHB0cg== IG1pZGZpZWxkZXI= LkhlYWRlcnM= IG1m ZXJlZg== Lk1ldHJv IFNwZWFraW5n OmI= IGNyeXB0b2N1cnJlbmNpZXM= IGRlbW9ucw== CUVYUEVDVA== IHdpY2tlZA== eW91dHViZQ== OkludA== IEhpbmRp IENBVA== INi5 cmFy b21vcmU= L3Blcg== L2xpY2Vuc2U= IHJlaW0= IGF3YWl0aW5n IGxldGhhbA== IEVG cm91bmRlZA== IFBsYXRpbnVt INCy0YHQtQ== LmNvb3Jkcw== LkRldmljZQ== L2l0ZW0= IFdlbm4= Y29tcGlsZUNvbXBvbmVudHM= IEtpbmRlcg== LnJlbW92ZUl0ZW0= IGFuZGE= Ym5i IHByYQ== KHRyYW5zYWN0aW9u IGVtYmFycmFzc2luZw== CUJPT0w= LmNvbnRlbnRWaWV3 IGV2ZW50ZGF0YQ== YXRvcmU= IHByb3ZpZGVkSW4= aXJtYQ== IHpvbmE= X0hX 5pk= IHN0b3Zl IGNvdW50ZXJwYXJ0 X1Byb2R1Y3Q= X01BTkFHRVI= IGluZnJpbmc= IEVSQQ== X3BhcnR5 0ZE= IGluaWNp X1JlcXVlc3Q= IG1pcmFjbGU= IGNhbmNlbEJ1dHRvbg== U3B5 YXTDsw== IHBvbGlzaA== IE5pY29sZQ== LmRpc3BsYXlOYW1l XFJlcXVlc3Rz IHVzZUhpc3Rvcnk= Um91dGVyTW9kdWxl IHN0YXJlZA== SURFUg== 0YPQvdC60YbQuA== IG5vdGE= JGFycg== cGVjaWZpZWQ= IHRvcHA= X0RSSVZFUg== L25n 5aA= X3Rt JXRpbWVvdXQ= PHM= ICgqKQ== IEh0dHBSZXF1ZXN0 X1RSQUNL KG5vdGU= IEV4cGxvcmU= X3NlcnY= IOe7 QmluZGVy KyIs LmF0dA== IEV0aGk= IGPDs2RpZ28= PSdc LmxpbmVz KE9m 5bCG bWlzc2libGU= IHbDqQ== IGFjb3VzdGlj IGNyYWZ0aW5n bml0 LmJh IEx1Y3k= IGlQb2Q= IHB1cGlscw== LW1heA== X3dy KGNw IFJFUE9SVA== IGRucw== IFJlZmVyZW5jZXM= IHVuZGVydGFrZW4= IGvDuGJlbmhhdm4= IGNoYWk= IENyb2F0 X0xvZw== cm93bmVk X21lZA== CWRhdGU= I19f IGNvc3R1bWVz IFJlcXVpcmVz YWZmbGU= 54q25oCB LVNlbWl0 ZWxhaWRl 0LXRgtC+0LQ= IHBlc3RpYw== IGRyYQ== RE9DVU1FTlQ= IC4uLg0K fWB9Cg== IEF1Y3Rpb24= IERvY2s= eHh4eHh4eHg= KGdldFN0cmluZw== hY0= IGJvcmRlcldpZHRo IE1hY2hpbmVyeQ== IHByZWRpY3RhYmxl LlNI IGFtcGxpdHVkZQ== LmZvclJvb3Q= SU5hdmlnYXRpb24= VGFibGVNb2RlbA== YXR0cmli IG1hbmV1dmVy IGV4Y2F2 QkVSUw== IGRhcGF0 IGluc3RhbGxhdGlvbnM= LkFzeW5j IHJheXM= PeKAnQ== Ow0NCg== LmNyeXB0bw== X2RiZw== IEVudW1lcmFibGU= T2ZTaXpl X2Vwb2Nocw== bXc= TUVOVQ== b3V0bGluZQ== IFBhcGVycw== PT09PT09PT09PT09Cg== IHVuaWZvcm1z IEdpZw== LXBhY2thZ2U= IEplbmtpbnM= IEhvbWVQYWdl LmlzU2VsZWN0ZWQ= IG1lY2hhbmlj TUs= IFNvdW5kcw== Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= IHJlc2VhcmNoaW5n IGluZm9z b2dyYXBoaWNz ZXJzZXQ= KFsnLw== IFRpbWJlcg== LmFnZW50 LnRvSlNPTg== X2NvbW1hbmRz cGFyaW5n X2FkanVzdA== Lm5vbWU= KGdsbQ== U3RhdHVzQmFy ZmlsZXBhdGg= P+KAmQ== IGRldGVjdGl2ZQ== IHVuc2VyZXI= IFRpYmV0 RU5ERUQ= KHNlZWQ= IHNuZWFr IGFtb3I= PSIvLw== IFBhbnRoZXJz YWxsYXg= IExJVkU= CURXT1JE XT0t IHRvcm5hZG8= L21pbg== IGx1bmdz LWN1cnJlbnQ= IEJvb2tpbmc= 5YiX6KGo IGVuam95bWVudA== 4KSw SkE= dHlwZWQ= LkJ0bg== ZmF0 dWdhbA== IFNoYXJlcw== IGRpc2dy IEJBUg== IEZPWA== T3Bjb2Rl IFN6 a2V5ZG93bg== aWN0aW9uYXJpZXM= IGRldGFpbGluZw== fSkpCg== IHBvaw== IGRlbW9uc3RyYXRpbmc= IG5vdGF0aW9u bGF5ZXJz QGlm IE5QUg== LnN0cmljdEVxdWFs IFJlY2lwZXM= LlRlbnNvcg== IGxpcXVvcg== IGRlYnRz LmVuZHNXaXRo V2hlZWw= LlBvcw== Q1NW JGFyaXR5 IHVuc3RhYmxl KGxvc3M= RU5TT1I= IGVsZXZlbg== IExvcGV6 IEhvcGtpbnM= Y29ub20= IFNldGg= IHBvZW1z UXVhbnQ= IGdzbA== IHN5cnVw IHNpYmxpbmc= IGNhc3M= LXZvdXM= w7Z0 X1BBVFRFUk4= X1NFQ1RJT04= ZXN0aW1hdGVk dXBncmFkZQ== Lm1vbmdvZGI= IEJvYXQ= X0NUWA== IGZldGNoaW5n dXN0aW4= cGllbA== TWFyZw== UmVmbGVjdGlvbg== IGR1Y3Q= IE11bmljaXBhbA== IGJ4 LkdldEN1cnJlbnQ= bWxpbms= IEFjY291bnRpbmc= IEdlbmV2YQ== X1Bvcw== IHBhc3Nlcg== IGhlYXJpbmdz Y29tcGFu IGZyYWdpbGU= SW5pdGlhbGl6ZXI= d2Fsa2Vy Lk1hdGVyaWFs IEh1bnRpbmc= dHJ5c2lkZQ== IGthdA== IGNsZXJr 4Z8= ZG9pbmc= CWdyb3Vw IHNhbmN0aW9u Lmxi IExhenk= IENvbnN0cmFpbnQ= UGFnaW5hdGlvbg== IHBvdXZleg== IEluZGljYXRlcw== TUVS IGNvdXJz IHllYXJseQ== IGdyb3NzZQ== YWJicmV2 IERPTg== IHByb2NlZWRlZA== ZW50bGljaA== IHByb3BlcnR5TmFtZQ== IFRlYWNoaW5n c3RhZHQ= IGN1dG9mZg== b3JuZXJz IGFmcmljYQ== IHJlbmRlcnM= IFlhbmtlZXM= IFRvb2xiYXI= c3BhY2Vz LmZpbGxTdHlsZQ== IHNlZ3VuZG8= X3N0cmxlbg== LkZpcmViYXNl 5aSE IG1lbnRpb25pbmc= XCg= IFZhbHZl U2V0dGVy IHNwYW5z IEFsY29ob2w= IExldHRlcnM= XHhl IFRL X0JMRQ== LmdldFJlc3VsdA== PFBsYXllcg== IFBhdHQ= IGVhc2luZw== IHR1cmtleQ== IEZlbg== Jyki IGNvbmZpbmVk IGluY2x1cw== U3VwZXJ2aWV3 KHdpdGhJZGVudGlmaWVy ZW5jaWFs IHN0dWZmZWQ= VGhldGE= IGVjb25vbWlzdHM= fSkpOwoK Y29va2llcw== IFJvb3Nl IENoZWVzZQ== IGZpY2hpZXI= IGVuZm9yY2Vk QUJC bm/Fm2Np X0FMTE9X IHJlY3J1aXRlZA== IGV4cGVuZGl0dXJl LW5pZ2h0 IGFzc2VydE5vdE51bGw= X2V4ZWN1dGU= INiv SU5ERVg= X0ZNVA== IHJlc2N1ZWQ= IE1vbnRobHk= IENvbnNlcnZhdGlvbg== IEdlYg== T2JhbWE= RXBvY2g= aWNpZXM= IE9ydA== IHNvaXQ= KGljb24= RnJpZW5kcw== bW9s IGdyb3VuZGVk IENhdXNl YWRlbmE= V0VFTg== IEx1bg== SVRJVkU= Lmxvb3A= X3VudGls IGNvcnI= LmVkZ2Vz IGh5cG90aA== Y2hlZHVsaW5n dHJhbnNsYXRvcg== INCc Um9t 44CRCgo= IFhhbWFyaW4= IHZpb2xhdGluZw== LmFuY2hvcg== LS0tCgo= IHRyYWRlcg== QURWRVJUSVNFTUVOVA== IHVuc2VyZQ== IERBTw== IGJsb25k IFBBVA== Lmdsb2I= IOi+kw== IHNwbGl0dGluZw== IHVuc3Vic2NyaWJl IGF0bW9zcGhlcmlj IFRyaW0= IGNpdGF0aW9u IGluZmVyZW5jZQ== IEZ0 IERhcndpbg== ZmluZE9uZQ== IEdlbA== KENvbnZlcnQ= IGFjY2Vzc29y O3RleHQ= KHNvcnRlZA== IGp1ZGdlZA== KTtc OnA= IG1laW5l IFNsaW0= LkNvbW1hbmRz IHBlcmNlaXZl Y29ob2xpYw== PERhdGE= LmVudHJ5U2V0 IGFzc2VydEZhbHNl IFBhdHJvbA== ZW5zZW0= xYLEhQ== qKE= V0lEVEg= IFJlc2N1ZQ== IFVJRg== X1RIUkVTSE9MRA== IE1pY2hlbA== QVRFUklBTA== b3BlbnNvdXJjZQ== IERpYW5h IGludml0ZXM= X0JPRFk= IHJlc2Vydm9pcg== IHJvaQ== Y3VzdA== KHRj 77yBIik7Cg== IGZlc3RpdmFscw== IHBlcmZvcm1lcnM= IGNsaW1iZWQ= IGp1bmdsZQ== U3RyaW5nTGVuZ3Ro IHVubGF3ZnVs aWVycmU= dmVydGlzZW1lbnQ= IHN0YWtlcw== IGhhdHM= TW9kaWZ5 IExFVFRFUg== LkhpZGU= IHN0YXR1dG9yeQ== X3doaXRl IFBlcmw= dXRlbmJlcmc= ZW1wbGU= Lldvcmxk IG92ZXJsb29rZWQ= IGNvbmNsdWRlcw== Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 LXdpc2U= CXN0cmVhbQ== cG9wdWxhdGlvbg== IGV2ZW50bw== IGlsbHVzdHJhdGlvbnM= ZnRz IGF1dG9m IFByb2NlZHVyZQ== IGRlc2VydmVk LXRpbWVz IGdvbA== TlNFcnJvcg== Y3Jlc3Q= IFBha2lzdGFuaQ== YW55Y2g= Z2V0Q3VycmVudA== IGxhcg== bnRs IFJlYmVjY2E= IG1hdGVyaWE= IGZpbmRCeQ== L2Fk Q2FsbGJhY2tz IEFscw== IEthdGll IE9ic2VydmFibGVDb2xsZWN0aW9u IERvY3VtZW50YXRpb24= VHlwZWQ= IEN1bHR1cmVJbmZv IFRpbW90aHk= IGxhdGVyYWw= InR5cGU= IHVuYXV0aG9yaXplZA== IHRlYWNoaW5ncw== IGRlYnVnZ2Vy W3ZhbHVl IGFsb3Jz IHV6 IHNjYXR0ZXI= IGRvd253YXJk IG1pZ2xp c3RhdHVzQ29kZQ== ICgpKQ== IE1X INC80L7Qtg== Uk9TUw== LmJ1Zg== IGZhaXJ5 IEluZnJhc3RydWN0dXJl PT4i dGxlbWVudA== JCgi RnJvbVN0cmluZw== IEJpbGQ= IGNvbnZlbnRpb25z X25hdGl2ZQ== IEluc3BlY3Rvcg== IFBpc3Q= dWJhcg== IHJlZ3M= IFBpbG90 VGh1cw== Picr IGNlbGE= Lm5ld3M= KFByb2R1Y3Q= TGl2aW5n UnVzc2lh IGZhY2V0 ZXRpY2Fs IFsnJA== L1s= IERpcmU= IGdhc2Vz IElORk9STUFUSU9O IEVhdA== IEZvcnVtcw== IENoYXJhY3RlcnM= X21ldA== IOyLnA== IGtpbmdz YWNoaWU= IExhbWJkYQ== IHRpbWVycw== IExpZ2h0aW5n IENhc2V5 YWRkaXI= YW5kZXg= LmFuc3dlcg== IEhpcA== IFByaW5jaXA= U3RhcnREYXRl IOOAjA== dHJlcw== ICYj Lk1heFZhbHVl IFByb2JsZW1z IGxhdGV4 T2ZDbGFzcw== IEx5bm4= Ly8n IHZveWFnZQ== IHNodXR0bGU= IFJvbGxlcg== IFJ1bnRpbWVFcnJvcg== dXlh RGlj CWJ1aWxkZXI= IGJ1bGx5aW5n IHNpbXBsZXN0 LmNhbGxlZA== IExS IG1vcmFsaXR5 IHN0dXJkeQ== dHJhY2tpbmc= LnN3YWdnZXI= X0JJTkQ= SVRPUg== LXVybGVuY29kZWQ= INGF IFRyaW5pdHk= IHRyYXBz IHwt IHNldFRleHQ= IGJhcmdhaW4= IGJyYWtlcw== LmdldENvZGU= IG1pZ3JhdGU= IHJpYmJvbg== KXJldHVybg== IGNoYXJnZXI= YWNvbQ== QURJVVM= IEFtYmFzc2Fkb3I= LWFmdGVy IGFubmk= CXNwaW4= Q29uY2VwdA== IEhlbmRlcnNvbg== IEhPU1Q= LnJhbms= IE5vcnRoZWFzdA== IGJlcmxpbg== IHJlcXVpcw== LmZlZWQ= IHNvdXJjZU1hcHBpbmc= IFJlbmNvbnRyZQ== LmFqYXg= bmVzdGpz IHRyZWs= IE5hY2lvbmFs ICZb IHBheWFibGU= b3J0ZXg= IGRlcHQ= ZmllbGROYW1l IGNvbXBsZXRlcw== IFJWQQ== IG9uaW9ucw== YWxpZ25tZW50 Rm9ybWF0cw== ICd7JA== SGFzaFNldA== IEJvZA== LkludmFyaWFudEN1bHR1cmU= IHNldHRsZW1lbnRz IGh5ZHI= LnVwZGF0ZWQ= dmVudGg= KHNlY29uZHM= PSIvIg== IHdlYnBhZ2U= KAoK IHRpcg== IHRvZXM= IEJyaWNr IGFtYml0aW9u UG90 PW1heA== RVRJTUU= IGRlcG90 Y2FsbHM= IE5vcndlZ2lhbg== YDo= IGJ1cmdlcg== IHByb2Zlc3NvcnM= IEFsbG9jYXRl LXRoaXJkcw== LWNoYXJ0 IGZvcmQ= Kk4= LmtvdGxpbg== IHBhcGVyd29yaw== IERFVklDRQ== JUAiLA== cmVzcGVjdA== KG1w 6auY LWlm IGN1c2hpb24= b2JvdA== IHBhcmM= U1BBQ0U= IE5ldGFueWFodQ== IHNlbGZpc2g= ZmVhdA== IGNsaWVudGVz LXRvb2xz IHBvcmNo IGpx LnZlcmJvc2U= IGxpYmVyYWxz XSkKCgo= cGllcw== Tm90Qmxhbms= KHRlcm0= yJtp X1BhcmFtcw== Lm5vcm1hbGl6ZQ== QnVsbGV0 QVNJQw== KGhleA== X2NsaWVudGU= Kyw= X0RJ IGZvcnRoY29taW5n fSIpXQo= c2Vv VW0= Pk5hbWU= IGNvbWZvcnRhYmx5 aXJlY3Rpb25hbA== V0lUSA== L3By IFBvb3I= IFZpdGFtaW4= dmlj R0g= IHByaW9yaXQ= IE5O IENsb3NlZA== pO0= IGlzT3Blbg== XENvbnNvbGU= QW5kRmVlbA== LlNVQ0NFU1M= X09QRVJBVElPTg== cG9sYXRpb24= IFRhcw== cHN6 Picu Q1VSUkVOVA== VmVuZG9y aG9zdHM= IEVyZA== PnRhZ2dlcg== IHNvdXJjZU1hcHBpbmdVUkw= IG1hcmF0aG9u X2Nsb3NlZA== IGV4ZW1wdGlvbg== IHJlY29nbml6ZXM= aWRlc2hvdw== JyQ= KCcvJyk7Cg== bWl0cw== d2Fyeg== IENoZXJyeQ== taw= bm9y cG9ydGU= IHds X2JhY2t1cA== LmdldEJvb2xlYW4= LmdldFJlc291cmNl IGRlZmluaXRpdmU= LkVkaXRUZXh0 IHPDrQ== LkNPTlQ= IFBMQVlFUg== LmNhcmRz IFNob3Jl KCcvJykK Y2x1aXI= V2ViRHJpdmVy KG1vbnRo LXJlbGVhc2U= IGluc3BlY3Rvcg== 5aM= IE5G X2NsaXA= 5a2Q IGludGVyYWN0aW5n LnRtcA== ICcnJwoK IGRlZQ== IGZyb3N0 Il0pKQo= IFBsYWNlcw== VGhyb3dz Zm9yaw== L2RheQ== aVBob25l IE1JQw== IGZvbGRpbmc= IGNyb3Jl IENoaWVmcw== cGhlcmljYWw= KHByaWNl LldyaXRlU3RyaW5n IGV4aXRpbmc= XScsCg== aWdodGluZw== SW5ncmVkaWVudA== KHZlcnRleA== IHNjcm9sbFZpZXc= aGY= Om5ldw== U0VO c2VjdG9y IHNwaW5z IFNjaGVkdWxlcg== b3RlY2hu c2VtaWNvbG9u Rm9udE9mU2l6ZQ== IFNwZWNpZmljYWxseQ== ZmxhbW0= Lk9iamVjdElk IGNvbnRh X3Blcm1pc3Npb25z CUZST00= SUNPREU= L2tn IEhvdGVscw== LW1lZA== IERpbg== IG5hdnk= Z2V0UGFyYW0= IG1lbmQ= IHBvcnRyYXllZA== IE1ldHJvcG9saXRhbg== UGFpbnRlcg== IHJlZmVycmFs X2dvb2Q= IG1hcnZlbA== b3NhaWM= Pigm LnVy IGVzdG9z V2lsbGlhbQ== IHRpbWJlcg== IHF1ZWxxdWVz IERvY3VtZW50cw== LlhhbWw= IGJhdGNoZXM= 6YGT IFJlbGVhc2Vk VGFpbA== Q09PS0lF aGVpZA== X3N0YXRpb24= IFZpYQ== U2FsZQ== IFJlcGVhdA== IHByb21pbg== IFpv LWZvcndhcmQ= IElvbg== aXRhcnk= IGp1cw== LXJlcXVlc3Q= IHByb3VkbHk= IFN0cmVhbWluZw== KE1vdXNlRXZlbnQ= IFNwcmludA== X3JvdGF0aW9u UmVwb3NpdG9yaWVz IHRhcnQ= INGB0LI= IG1hcHBpbmdz 6Ko= Q3U= Q3ljbGU= IGJ1bg== CWx1YQ== 44OJ ICgoIQ== IGNvbGxlY3RpdmVseQ== IENvbmQ= IHdzenlzdA== KGxpYg== b3BlbmhhZ2Vu X3NraXA= LkNvbHVtbkhlYWRlcg== 6YI= cGVyaWVuY2Vk j+i/sA== X3Byb3Bz IGNvbnRyYWNl IG1hdGNodXA= YWJldGlj Lm1lbWJlcnM= UkVDVA== KGRhdA== IHNvZw== cmVub20= X01ldGhvZA== Q3VzdG9tZXJz ZnVsbG5hbWU= Wk4= cmV0cnk= IGthcA== IE5ldQ== 6Io= YWRkQ2hpbGQ= d2lsbFJldHVybg== X3Blcm1hbGluaw== IGVuZXJnZXRpYw== IFdldA== IE1vcnI= IGdjZA== Y291bnRz LHR5cGU= ZGln KExvZ2lu IGNyYWNrcw== IGJhY3RlcmlhbA== IE1lYXQ= IEFybXN0cm9uZw== IEJyb256ZQ== IGFwcHJveGltYXRl X2RpcnM= bGlnYQ== xYJhZA== IGtpbmRuZXNz IGNvbnRyZQ== IEVWRVJZ TUVU IGFubm91bmNlbWVudHM= Z3Bpbw== IFdhaXRGb3JTZWNvbmRz IFBob3Rvc2hvcA== IGRpc2NvbnRpbg== L2Rk IHRvcG9sb2d5 YW5pY2Fs LmludGVyZmFjZQ== YXVjb3Vw Lkhhc2hTZXQ= QVJJQU5U KHJvdXRlcw== IFRlaA== IGh5cGU= XSIpLg== IHNsYW0= IGJyb3Ro LWludGVy IFJpZA== LW1hbmFnZXI= Q2FuY2VsYXI= IFBhZ2luYXRpb24= IHNvdW5kdHJhY2s= IHBvc3Rlcmlvcg== IHNjcnVi Y3JlYXRpbmc= LSo= aXJ0ZWVu LmR5 LnN5bW1ldHJpYw== ICIiLg== PT09PT09PT09PT09PT09 IGNoYXNzaXM= IG51bWJlck9mUm93cw== RGV2ZWxvcGVy X2JpbnM= IE9VUg== cmllYg== UHJvcw== IHdpxJk= ImQ= IGFzeW5jaW8= emVpZ2Vu X3NwaQ== LkFMTA== IHNjcmV3cw== Q2hpbmVzZQ== IGFwaUtleQ== IHVuc3VjY2Vzc2Z1bA== IFNlYWhhd2tz T1JH 56ug IHByb2Zlc3Npb25hbGx5 IENvdXBvbg== 5a2X5q61 Q29udmVudGlvbg== IHBvbHlt 5omL IHNhbHZhdGlvbg== IGVuZ2luZWVyZWQ= IFdyZXN0 IEdDQw== IHdhcm1lcg== TGF5b3V0Q29uc3RyYWludA== IGFnZ3Jhdg== U2NyaXB0cw== dmVudHVyZQ== IHJlZnJpZ2VyYXRvcg== IGlubm92YXRpb25z IFJ1bm5lcg== TklD IFJvbGxpbmc= Q29udHJvbEV2ZW50cw== IGxvb3M= cGFj CXBhbmVs ZWZl IEJ1ZGRoYQ== LS0tLS0tLS0tLS0tLS0K 5bqT KGZvcktleQ== IGx1bWlu ICg/ IEFJRFM= LHVzZXI= aW1pZW50b3M= Y29udGVudFR5cGU= YW50bHI= 6aY= IFdlbHQ= UHJvZHVjdGlvbg== bWlnaHQ= IFZJSQ== Iiwo IG9ic2VydmluZw== IGRlbGliZXJhdGU= KGNvbnRyb2w= IHdpdGhk IHNlbWFuYQ== U1RBQ0s= dWNoZW4= TmljZQ== IERldXRzY2hsYW5k IFNwZWNpZmllcw== ZG1h aXppbw== IEZhY3Rz X3BvcHVw IERpcmVjdG9ycw== ezo= W1I= INGN0LvQtdC80LXQvdGC IHBsYXQ= IGRpcmVjdGluZw== 5LiJ IEdpbGJlcnQ= 4oCmLgoK LnFtbA== IHRoZXJlYWZ0ZXI= IGRpc3Bvc2l0aW9u ZHJhZnQ= IHN1cmdlb24= IEluc2lkZXI= QmxlbmQ= IFRyZXY= dHJpbnNpYw== VG9waWNz cmlldmU= X0ZJTEVOQU1F IGF1dHJlcw== Sm9zZQ== UHJvZHVjZXI= ZXJ1cw== IHBldGl0 IE5FWFQ= IEZpbHRlcnM= IHJlcGxpY2F0ZQ== Il0pLg== IGxlbmRlcnM= XSIsCg== O2NoYXJzZXQ= Q3BwT2JqZWN0 IGZsb3JhbA== IFRpcG8= IGNpcmN1aXRz ZWFzeQ== KCYk aXR0YQ== ZXJ5bA== X0NPTU1PTg== J319Pgo= LWJhY2tlZA== KHZhcmlhYmxl KEluZGV4 IHZvaXI= X2xvY2F0aW9ucw== Kyspew== IExvdWlzdmlsbGU= IGdyYXRpdHVkZQ== Lk1vY2tpdG8= IFBvd2Vycw== aWV1cnM= IGdlb2dyYXBoaWM= cmFsZQ== IGNyYQ== IFNwdXJz aXBoZXJ0ZXh0 QUNJT04= LWNvbW1vbg== IHZpY3Rvcmllcw== IEZpbmFscw== LnNodWZmbGU= LW1pbGxpb24= X1BST0M= YXNzdW1l IGlscw== REJD Qm9vdFRlc3Q= IGxhdm9y LnRlc3Rpbmc= LmFzdA== Il0v bW9pZA== IHF1YWxpZmljYXRpb24= Z2VzY2g= CXB1dA== IGFpcnBvcnRz Skk= VGVhY2hlcg== X3VuaWZvcm0= IG5hbWE= IEJhc3Q= ZXJ0eXBl Y2FwdHVyZQ== Z2V0QWxs IFJleW5vbGRz b29sZWQ= LmNvbW1lbnRz IGNoaW4= KS4q INC40LvQuA== dGds dWRvcw== IGTDrWFz Y2hhaQ== LnByb2dyYW0= IHBzeg== CWljb24= cGhpbA== ZW50cmFs X1dSQVA= b3Zp IG5vc3RhbGc= SW5maW5pdHk= CXlpZWxk IHZpdGFtaW5z UXVhdGVybmlvbg== U2luaw== X2dvb2Rz IC4uLi4uLi4u IFdpbmdz dXJpZGFk LXN0b3J5 Il0pCgo= aWRlbGl0eQ== VHlwZURlZg== R3Rr IO2M X01haW4= IGNoZXo= IFJhdmVu IHBheXJvbGw= IGZyZWVsYW5jZQ== TExV IE1lbmQ= ZWRheQ== QXBpTW9kZWxQcm9wZXJ0eQ== LkZvcm1Cb3JkZXJTdHlsZQ== IGVjb25vbWlzdA== c3RhbmJ1bA== IGZyZWlnaHQ= LUFnZW50 KG1ldGE= IHN5bW1ldHJ5 ICcuLg== LkNhbGVuZGFy LWF1dA== Z2Y= cGVudA== eWNsb3BlZGlh IHdpc2hpbmc= CgoKCgoKCgoKCgoK IGdlbnRsZW1hbg== IOqz PSM= IGxlY3R1cmVz 4oCcSW4= ICFf IGhi IFZlbmRvcg== UmVjZW50bHk= X25vdGVz 5o+Q56S6 Ik15 SGVhZGVyc0hlaWdodA== X1NP IHVud2lsbGluZw== IHN1cGVyaGVybw== Z2lv cHN5 IFBlZXI= amF2YXg= JmFwb3M= IENyaXNpcw== b3JkaW5hbA== TWVtY3B5 KysrKysrKysrKysrKysrKw== LXZhbA== IHdvcmtib29r LWFw PWs= IG1ldGFsbGlj X3BlZXI= QnlQcmltYXJ5S2V5 X1NE dWF0b3I= X1NIQURFUg== KU1hdGg= LlRyYW5zZm9ybQ== IGNvd3M= UGhp IENsZW0= KF8oIg== IEx1ZA== LWRlbGF5 IFNlY3VyaXRpZXM= IE9ydGhvZG94 U3ltZm9ueQ== KHJlcG9ydA== IGVudGVydGFpbg== RVBT aXpvcGg= ZXh1YWw= SVJE 5LuO IGxpdGg= IHNhbml0aXpl IGZlbWluaW5l SVNCTg== LmF1dGhlbnRpY2F0aW9u X3BpcGVsaW5l L2NvbnN0YW50cw== IENPTkY= IGx1Y3I= cmljaWE= LnR0Zg== LnNldENvbnRlbnQ= IHN0YW4= b3JlYW4= IExsb3lk LnJhd1ZhbHVl IGdvcg== IEJyb3ducw== UmVncmVzc2lvbg== IGxvd2VyaW5n bmFpc3NhbmNl IGJsb3dz IGFtYXplZA== IHVucmVsYXRlZA== UmV2aWV3cw== IHJ1Ynk= IE1vZGlmaWVy IGdpYW50cw== LnRocmVhZA== IGNvbnRhaW5tZW50 IFN0YXJ0Q29yb3V0aW5l dW1hdA== b3JlbGVhc2U= IFJhbmR5 QGVuZGlm RGlnZXN0 IHN1YnVyYmFu PSIpOwo= IGFubm9uY2U= LnZhcmlhYmxl XEZvdW5kYXRpb24= IGFjcmU= VmFu IHR1cGxlcw== ZG5z IFN0YW5kaW5n X2xhcmdl IGJveGluZw== U3VwcG9ydEFjdGlvbkJhcg== IEZvcnR1bmU= IFJ1bQ== X211bHRpcGxl YXJjaGljYWw= IGZ3cml0ZQ== X3F1b3Rl IGZvb2xpc2g= IGNvbXByaXNpbmc= INC+0L8= LXNlbGVjdGVk dmY= bWFpZA== TmFtYQ== KGRhdGV0aW1l IGluZGlyZWN0bHk= Z2FydA== Zml4dHVyZXM= Y2hvcw== IEhhbG8= IHJlY3VycmluZw== LW5ld3M= dmls IE51cnNpbmc= LXByb2R1 IEhR XEh0dHBGb3VuZGF0aW9u ZW5jaQ== YXVlbg== IHZ5 b2NyYWN5 IGRlbGVnYXRpb24= IGFzcGhhbHQ= IHNldFNlbGVjdGVk a29r L3Jlc3Q= bWV0aWNz IE5TRGF0ZQ== IHRyYXZlbGxlZA== IHJlY2li IG1pbWU= Q0xJRU5U IEdV IEhBTkRMRQ== L1E= W3o= IGJvdGhlcmVk IEJCUQ== w6dhcw== X2V4YW1wbGVz X0ZJTg== IHdoaXRlQ29sb3I= IGFzdHJvbm9t LWRpcg== IHNvdmVyZWlnbg== IGJyZWV6ZQ== IGlubmluZw== IEVkbW9udG9u Z2xp LmJsb2dzcG90 anN4 IHZlcnNh IE1vaGFtbWVk LkpvYg== LXRvZ2dsZXI= INC/0L7Qu9GM0LfQvtCy0LDRgg== YXJkb24= IG5ld2Jvcm4= IG5hdmFs bm90ZXE= IHR1bWJscg== IGhlbnRhaQ== IFR5cGljYWxseQ== IGxvb3Q= LlNwcml0ZQ== RmxpZ2h0 IHdhdmVsZW5ndGg= LXNr IEVsbGU= X2V4cG9ydHM= INGP IElI aXpvcGhyZW4= IO2B X3ByaW1hcnk= IG1vaXM= IEJO IHN5c3RlbWlj IGRpZmVyZW50ZXM= SU5DVA== ICcnCgo= JHE= V2lkZ2V0SXRlbQ== Y2xpZGU= JGZpbGU= TGVtbWE= L3RhYmxl YWdyaWQ= IE1vbmdvREI= aW50ZQ== IGFwcHJlbnQ= wq1pbmc= LkRi IMOC aGFtbWVy PScnOwo= IGJyb2tlcnM= aXRsZW1lbnQ= c2VtYmxpZXM= RWxl e3g= IGxhc3RuYW1l PC0= IGZsYXR0ZW4= X2JhbmQ= LlJvb3Q= LnJlYWRGaWxlU3luYw== PT09PT09 LnJ4 Pw0K IG1ldGFwaG9y VGk= Y29udGU= IGRlYml0 IGNvbnRlbXB0 Q3BwVHlwZQ== 5pSv Rm9ybUZpZWxk cmF0aW8= b3NvcGhlcg== IGltcGxhbnQ= UFVSRQ== IGFsdGE= X21hbmFnZW1lbnQ= IHJlZmluZQ== IENoZWNrQm94 IENoYXJs LXZlcnNpb24= Y29uZGl0aW9uYWw= dmVudWVz IHJpZmxlcw== IG9mZnNwcmluZw== IG1pbGxpbmc= IHNoYXJwbHk= IHVuZGVyd2F0ZXI= KG9yaWdpbg== X0NvbnRyb2w= IC4k UGx1Z2lucw== IGRyeWluZw== IGlsbHVzdHJhdGVz LXU= IHZlZ2V0YXJpYW4= bnBj SGVhcnQ= OycsCg== Y29tbWE= dGVlbnRo YXNhbg== L3NwZWM= X21vdmVz LW1hcmdpbg== IGluZ2Vu wqDCoMKg IHByb2pldA== IG90cmE= IGJyYXM= LnV0Yw== IHNsZXB0 PXN1Yg== YWJpbGl0 cG9zdGVy IHNkaw== b3VuY2lsbA== IHdk UHJlcGFyZWRTdGF0ZW1lbnQ= IERydW0= KGF0dHJpYnV0ZQ== IEV0aGVybmV0 CURC Q2FsaWZvcm5pYQ== Y3ViZQ== W0k= LkNyZWF0ZWQ= IEhN IHRyYWNpbmc= Rm9ybXNNb2R1bGU= LXlvdQ== LmN1cnJlbmN5 ZmVlZGluZw== IHRib2R5 TGk= YWNjaW9u bmFz IHRyb3V2ZXI= Tk9ORQ== In0sDQo= IGZ0cA== V2l0aElkZW50aWZpZXI= cG9sYXRl RmlsZUluZm8= IHB1cnN1ZWQ= ICAgIA0KICAgIA0K REVTQ1JJUFRJT04= fSovCg== RnJvbU5pYg== IGRlY29yYXRpdmU= X1NTTA== KGNoYXQ= VExT IHN1cnByaXNlcw== YWxjdWxhdGU= IFNwbGFzaA== KENvbmZpZ3VyYXRpb24= IFNFTQ== aW1zb24= L2xpYnJhcnk= PERvdWJsZQ== LnJvYm90 wqDCoMKgwqDCoMKgwqDCoA== IENQRg== IFVuZGVyc3RhbmRpbmc= IGNvc21ldGlj IFh0 dGlwcw== K2s= KCIn IFBEVA== V0FS LmdldE9iamVjdA== IFRyYWRpdGlvbmFs LnNsdWc= IERpcGw= PSIiLA== IEZpbG1z IEFuaW0= LmhlbHA= IGVtYmFzc3k= IEJvb3Rz IGJ1bms= LXJpc2s= IHBjaQ== IC9cLg== IElQVA== IGNyYXNoaW5n IGlwdg== X2tl IFJFU1A= LkxvZ0Vycm9y IGluYWRlcXVhdGU= SW9u IEbDvHI= cmljdWxh IHNob3VsZEJl YWxyZWFkeQ== J10uIjwv IFN0dWZm RGlnaXRl IHRyYW5zbGF0b3I= X3Nwcml0ZQ== bGV0YWw= IG1haW9y IFNleGU= dGhhbmtz IENvbXBsZXRlZA== IGdhc29saW5l LmF0dHJz YmFnYWk= IE9yaWc= Ol0s LmxvY2FsZQ== IFJvbWE= w61m IGZhdm9yZWQ= IHZhaW4= IHNwb29u IEphaHJlbg== IG5pbmc= V1dX LGZsb2F0 X0RBVEFCQVNF Qm9vdHN0cmFw IENCQw== IENodW5r X2ludG8= IEtvbA== IGRlZmVuc2Vz b3JlZFByb2NlZHVyZQ== YmFsbHM= VGV4dENoYW5nZWQ= IHNoYXBpbmc= IH19Pg== R0VE ZmFx IG9wdGlvbmFsbHk= X0Rpcw== IFN1Y2Nlc3NmdWw= IENlbnN1cw== IGluY2FyY2Vy X0NBUkQ= IGF2aWF0aW9u IEd5bQ== QXV0aG9yaXR5 LkJlYW4= c2hhZGVy Tm90RXhpc3Q= X1RleHRDaGFuZ2Vk IFNUT1A= KHRlYW0= Ikg= d2c= IGdyaW5kZXI= IHN0cmlwZQ== IHByZXNlcnZhdGlvbg== Q2xhaW0= YXZlcnNhbA== d2FyZWhvdXNl dGFyZ2V0cw== VHJ1c3Q= IGFsbGV2 LHd3dw== b3Vzc2U= X2NoYW4= X1NpemU= c3lzdGVtcw== IG9iamVjdGlvbg== IEthbmU= IGNvcnJvcw== IERTTA== IHVh IE1I IFN0cmF0ZWdpYw== X3RjcA== IOqwkg== IGJvcnJvd2Vk IEFjaA== CWNvbW1hbmQ= IGdwcw== bGVzdG9u aWNoZXZlcg== IFVB IGFzc2F1bHRlZA== IHNwZWNpYWxpemVz CXNlYXJjaA== SG90ZWw= ICAgICAgICAgICAgICAgICAgICANCg== IFBpdGNo INmB UkVBRFk= IHBhcmVudGFs IGfDqW7DqQ== IGRvbm7DqWVz IGRldGFpbg== VEFSR0VU IHByb3RhZ29uaXN0 IGNsZWFySW50ZXJ2YWw= IEljb25CdXR0b24= IEdldEFsbA== VHlwZUluZm8= RUg= 4oCcVGhleQ== IHtb IGdhZw== INqp IERyb3Bkb3du LmZyZWU= Z29uZQ== aW1lbnM= IGluc3RhbA== CWN1cmw= X0NBTg== IEJvbmU= 77yU b255bXM= LWdvdmVybm1lbnQ= LmJpbmRpbmdOYXZpZ2F0b3I= IERhbnM= IE1jTA== KGVu Pihf 0JLRiw== Lio7DQo= PWo= LWNvcg== U29u LlRvb2xTdHJpcEl0ZW0= LWFyb3VuZA== X1hNTA== ZW5kRGF0ZQ== IHNsYWNr IHJvdGF0ZWQ= IG5vcWE= IGNvdHRhZ2U= IGVuY29udHJhcg== X3NraWxs aG91ZXR0ZQ== IQ0K LndlYXRoZXI= IGVtcGhhc2l6ZWQ= 5a62 INGB0L/QuNGB IENvbXBpbGVy KGFuZHJvaWQ= IOKAug== LnR1cm4= IHN1cHByZXNzaW9u X2NhbGxz ICpA KHN0cmxlbg== LmhleA== IEJpbGxz IFJTQQ== z4I= IEVzY2FwZQ== ZW1lbnRpYQ== IGZyb250ZW5k IHBpbnQ= X2V4Yw== enpv W10sCg== ICInLCci LkVudmlyb25tZW50 IGFmb3JlbWVudGlvbmVk IGVuZHVyZQ== cHJvdG90eXBl dGhlcmFweQ== c3Np RGVn X3BsdWdpbnM= LnVzZXJJbmZv UHJpbnRlcg== IFBST0dSQU0= IHJ1aW5z IGVtcGlyaWNhbA== IGNyYXds IEJvaWxlcg== LWNvbW1lbnQ= LnN1YnBsb3Q= X2V0 ICcuJyw= bWlub3I= IEN1c3RvbXM= IHlhdw== dW5kZXJsaW5l IENvbW8= KCgn KG1lYW4= IGNoYXF1ZQ== IEJsb2Nrcw== LnJhZA== aWxpYnJpdW0= IHdlYmRyaXZlcg== IG1lbGhvcg== ZGFuYQ== IEFidXNl IFNvdXRod2VzdA== IFBhcmVu UEVSVElFUw== CUlM IHNjcmVhbQ== dnU= IGluY29tZXM= IG5pbQ== IGxhY2U= IGNvbXBlbnNhdGU= UmV2ZXJzZQ== RGF0 X2F0dGFjaw== IG5vdXI= YWNoZW4= Y2Vr PEZ1bmM= d2ll Y29tcHJlc3NlZA== LW1hdGNo KCIiKV0K aW1pemVk Lm9yaWVudGF0aW9u LmNvbXBhcmVUbw== IG1hc3NhZ2dp IOychA== IGVsYm93 IGFudGlveGlk dW5kcmVkcw== L3Rvb2xz IFJPVw== YW5tYXI= IFdvdw== X3RpY2tldA== UHJvZ3JhbW1pbmc= IHRoZW9y LXJldmlldw== KCkpKSk7Cg== IFJpY2hhcmRzb24= IFBvY2tldA== XVtd YW1wcA== X2hlYWx0aA== IFBPUA== IE5hdmFs R3Vlc3M= IGFuY2VzdG9y LkdldEFsbA== LmxvY2FsU2NhbGU= IE1hcHBlcg== IGFjY3VtdWxhdGlvbg== IHNpbXVsYXRlZA== IERyaXZlcnM= IGTDqXM= Y3VycmluZw== IGVsZXBoYW50 IGFkdmVydGlzZWQ= IG1haWxib3g= U0hJRlQ= IE1vbmljYQ== IGFuYw== IHdhcmRyb2Jl SW5ncmVkaWVudHM= IHx8DQo= aXBweQ== IGFudGliaW90aWNz YXZpbmdz KGN4 IEZlcnJhcmk= IEFuaW1hdG9y LmR0eXBl cmVtb3ZlZA== b3JkZXJieQ== IGNyZXM= b2PDqg== IHB5bQ== IENpcmN1bGFy QGluZGV4 IFdhcm0= U2F5 IEFzc2lzdGFuY2U= IGN1cnRhaW4= IE1vbnRl SUxFUg== IENWRQ== IER1Y2s= IEFsbG93cw== X2ZpcmU= IERlcmJ5 IHJlcG9z IGh0dHBDbGllbnQ= IHBzeWNoaWF0 IG5vd2FkYXlz IGNhdXRpb3Vz IENvbXB1dGluZw== IGNvbXBsZXRpb25IYW5kbGVy IFdlbHNo IEJFU1Q= IHN0cmVzc2Z1bA== X1BF 5pel5pyf IERhdGFGcmFtZQ== CUludGVnZXI= X1ByaW50 TW92ZXM= IHRyYW5zZm9ybWluZw== LkJhdGNo eWFob28= UG9zaXRpb25z emVq IG5vb2Q= aW9yZXM= Xyo= IGNsaw== IEZsb3lk IGhhcA== Zm9udHNpemU= IG5heg== Lm5vdGlmaWNhdGlvbg== IERlcHJlc3Npb24= IGFjbmU= KioqCgo= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg== LmNvbnRlbnRz eW50aA== IFN0cmFpZ2h0 Jyl9fSI+PC8= IGJ1bGI= Ulg= Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IGNvbXVuaWM= IFJO LW1lZGl1bQ== TEVBTg== PWxlbg== UGhvbmVOdW1iZXI= ZXJ2YXRpb25z QWNjdXJhY3k= IEFubm90YXRpb24= X2tleXdvcmQ= X2hpbnQ= IEF0aGVucw== IGFzc2lzdGluZw== IEhD LkluaXRpYWxpemU= JykpKQo= dXBh IHN1aXY= IElQQw== PFRFbnRpdHk= IGJyYW5kZWQ= b29tbGE= bGFyxLE= IFhNTEh0dHBSZXF1ZXN0 IGTDqWrDoA== IHRyYW5zY3JpcHRpb24= IHByZXZhbGVudA== LnBsYW4= IHN0YXJl IHdvcmtvdXRz IEVkdWNhdGlvbmFs IG1lc3N5 IE1PVA== LkNvbW1hbmRUeXBl UWVk KGdjYQ== IExpbmVhckxheW91dE1hbmFnZXI= IEJsb3c= IEFsdW1pbnVt IHN3aW5nZXJjbHVi IFRyYW5zaXQ= IGV4cG9z dmly KHNlY29uZA== IGJlbG9uZ2Vk U3RvbmU= 6ZW/ IFN1bA== IGdpZA== IGFsbG95 ZXJ2YQ== aXNlY29uZA== X1JFTkRFUg== IGFuZ2Vscw== IFBoaWxvc29waHk= b3B1cw== IG1vbw== ZW5ndWlu X1ZBUklBQkxF X0RFU1Q= KGF1eA== IGhvZQ== IGRvYg== YXR0YWNobWVudHM= IGNvcnJpZG9y IGRpdmlkZW5k nbw= IFRocm91Z2hvdXQ= Lm9wdGlt JG5ldw== IGJlcmc= IHNwcmVhZHNoZWV0 LlRyeUdldFZhbHVl IHBheW91dA== IE9uRGVzdHJveQ== YXV0aGVudGljYXRpb24= IE1pZ3VlbA== cnRj IENocmlzdGluZQ== IEFJUg== IGp1cmlz IGRlc3BhaXI= IHBhdGVudHM= LWhhcw== JV4= 5LuY X3N0cmR1cA== IFJlYXI= ZXR0ZXM= KHByb3BlcnRpZXM= IHdyaXRhYmxl LmlzTnVsbA== b2xpY3M= X2Jsb2I= IGN1YWxxdWllcg== YWZp b3d5Y2g= 6I635Y+W w4c= IENhcmRpbmFs IHRlbWE= IkFuZA== UGFnZVNpemU= 56eS LlNpbXBsZURhdGVGb3JtYXQ= IFdpbm5lcg== IGNvcnJlbw== X3dl LmFkZE9iamVjdA== KGNvdXJzZQ== IGhvZw== b3Bybw== IHByb2JhdGlvbg== dW5hYmxl KGFjdGl2ZQ== 5Zu+54mH IHBlcnRhaW5pbmc= IGVtcGhhc2l6ZQ== IFByaW50ZXI= PS4= IHVwZ3JhZGluZw== L2NvbnRhY3Q= PVtb LXNhbg== CXZhbHVlcw== IGRvc2FnZQ== U29saWQ= IFJvb3NldmVsdA== 5ZWG5ZOB IHJlY3JlYXRpb24= IFRlcm1pbg== LkJhZA== IEJvbHQ= U2t5 X0ltYWdl IHNxdWly IENvYg== T1JO IGF1Yw== LkxFRlQ= J0I= LXJlc2lzdGFudA== PiIr IHRva2VuaXplcg== IHNvdmVyZWlnbnR5 IFBlbmNl KCkiKTsK IHBlc3NvYXM= Lkdl IEluY2x1ZGVk IHBhZ2luYQ== IGV4cG9zaW5n 0LXRiA== X1NDUklQVA== LyQnLA== VGh1bWJuYWls 15Q= d2ViRWxlbWVudFg= d2ViRWxlbWVudFhwYXRocw== cHJlc3N1cmU= IEN1cnJ5 X0NQ T0xVVElPTg== SUxFUw== cHJvdGVjdA== b29sYQ== V29ya3NwYWNl e307Cg== IFVOUw== IHN5bXBhdGh5 cm9rZXI= IHJlbW9kZWw= CWNlbGw= IGF0b3A= LkZ1bGxOYW1l IGZhdXQ= IEVhc2lseQ== X2R5bmFtaWM= IGZyYW1lZA== IG1vdGl2ZQ== 6Lev c2Ft IG1hcmNh IFRleHRFZGl0aW5nQ29udHJvbGxlcg== IGRlc3RydWN0b3I= Y3JlYW0= IHJ1ZGU= IEJvbGQ= IEluZGlnZW5vdXM= IGdlbnM= IHJlbGFjaW9u KHN5c3RlbQ== IFVJRm9udA== X2NoYXJnZQ== VVNURVI= RVY= Lk5hbWVzcGFjZQ== IG1lcmdlcg== IGNhbGxvYw== Z2FuZw== QmFkUmVxdWVzdA== IHNwZXI= LWRlc2lnbg== IOKH Q2hhbg== IG9yZ2FuaXNt LCk= PWlk X3BsYW5l IENhc2Vz ZWxmYXN0 IExlZ2lzbGF0dXJl IEZha2Vy IGludm9raW5n LXV0aWxz KCkuJw== LmZhY2U= IGd1YXJkaWFu bXlNb2RhbA== IGNsaXBib2FyZA== IEFUTQ== IHBlYXM= IFN5bHY= LmNhbGM= IENvbnRhY3Rz aW50VmFsdWU= IG1vZGlmeWluZw== IEJhcmI= Lmxvc3M= X3BlcmNlbnRhZ2U= QXNrZWQ= KGxzdA== YXRlZ29yaWNhbA== LWZpbGVz IFJvbWFuaWE= LkFj IGhhaQ== IEZseWluZw== IMW8 anA= IFRyYWluZXI= LmFyYw== X2RlZw== IHRyYWNlYmFjaw== T3JGYWls RkxPVw== Lm9sZA== b3lh Z210 aXNlbXB0eQ== IHZhY2NpbmF0aW9u IG9ic29sZXRl cmVjb2duaXplZA== IHJ1aW5lZA== IFJlaW4= IFRyYWNraW5n eGZi 2KfbjA== IHbDpnJl IGJyeXN0ZXI= IElUUw== IGRlc3Rpbnk= IHN3ZWFy IHJlZGVz IGNsZg== IGZsaXBwZWQ= CWhlYWQ= Qmx1ZXRvb3Ro IE92ZXJyaWRlcw== OkJvb2xlYW4= Xz0= X2xy c3Bhd24= OmluZGV4 VkFMVUVT aXNrZXk= PyIpOwo= LnN5bnRoZXRpYw== IENoZWNraW5n c3RydWN0dXJlcw== aXBpbmc= IHZvY2Fscw== LVVw IE1hbnVmYWN0dXJlcnM= IE1hcnJpYWdl 5Luj56CB IGdhcm5lcg== X0NsaWVudA== cGFyYWxsZWw= UklFTkQ= IHZpbmVnYXI= c2VndWU= SkI= IGNvbnRhY3Rpbmc= IENhcnJvbGw= IG91dHJlYWNo dGVuc29y X3ZhcmlhbnQ= IHRoZWF0 bGljYWJsZQ== e3w= dGlueQ== X2xldHRlcg== IHBlbmNpbA== SGVhZGVyc0hlaWdodFNpemVNb2Rl aWx0cm8= LmF1dG9jb25maWd1cmU= LmRyYWc= LnVzZVN0YXRl IEJNSQ== aGludA== Q29tcGlsZQ== Klw= ZW5hcnk= IGx2bA== LkNhY2hl Kz0i X3R2 cnVpdG1lbnQ= IGZyZWFk QXJ0aWNsZXM= ZmlsYQ== IHBhY2thZ2Vk 4piG QVRIRVI= IFBsYW5uZWQ= c2NoZW1l IGRpYXJ5 IG9mZmVuc2Vz Lzw/ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== UHJvZ3Jlc3NIVUQ= IEdvcg== LmdldFRpdGxl IG1vY2tlZA== IFRvcnk= ICIpIjsK I2c= IGxpZWQ= IHN2Yw== X2d1aQ== RU5UUlk= IHNlcnZpY2lv bW91c2VvdmVy U0FDVElPTg== 44Kz IHJlaWZl bGVjdHJpYw== X2NyZWF0aW9u UmVhbGl0eQ== KCcr cHJvZHVjdElk U3VwcGxpZXI= LUxl LnJlcG8= dWNraW5n X1N0cg== IFJlbGF5 0LjQuA== IHBlcnY= Q2hpY2Fnbw== IG1haXNvbg== IHN0aWNrZXI= X3ByZXNzZWQ= U3dhcA== IElH IHN1c2NlcHRpYmxl b2NhZG8= IGdpbg== ZXhl aWdoYm9yaG9vZA== KWA= IGRpYWdyYW1z IGluZmxhbW1hdG9yeQ== IHTDqQ== IFBvcHVw IGFwcHJlaA== IFBvcnRmb2xpbw== IHdvcnM= LmVudW1z 0LXQs9C+ L0J1dHRvbg== IFBoYW50b20= ICM6 IGRpaw== cGFnZXI= ZnRhcg== IG9yZ2FuaXplcg== KGNoaWxkcmVu IE11bmljaA== IHN0cmFuZw== IFJX 44K/ TWFo cHRpZGU= IGxlYXJucw== IHJlZHVjdGlvbnM= IFJlcGxhY2VtZW50 T1RT YWxjb24= KHBhcnRz YmFzaA== IENpdGl6ZW4= jbDsnbQ= IEh0dHBTZXJ2bGV0 X1NDSEVNQQ== bWVhbnM= IGhvcnJpZmlj VkVSSUZZ IERDSEVDSw== ICgv LmJlZm9yZQ== LnRleHR1cmU= Z2V0TW9jaw== IFNlbnNl SW5zcGVjdG9y VGV4dE5vZGU= KEFM LmdldE5vZGU= IGJveWM= IEJyaXNiYW5l IGJhdHRsaW5n CXR4 IGxvYmJ5aW5n YnVpbHQ= IFNFRUs= IHJhbmRvbWl6ZWQ= Z25p X2NsdXN0ZXJz X2lkZW50aXR5 IGNhcmRpYWM= IG5ld1VzZXI= LlZpZGVv ZHVpdA== XWluaXQ= QXRs KXZhbHVl VGV4dFV0aWxz INC10YHQu9C4 Q29tcHV0ZQ== PSgn CQkgICAgICAgICAgICAgICA= IGFydGVy IFRXTw== JykpLA== IERJVg== IHByaXZpbGVnZWQ= IFBhcnRuZXJzaGlw IEhlYXRoZXI= YmF5 YXRpc2ZpZWQ= aW5zdGFncmFt X1NlbmQ= IEFTRg== JG5hbWU= IGJvbw== IGTDqWY= X0ZpZWxk IEVkdQ== Y2FuZGlkYXRl cnVieQ== IGFjY3VtdWxhdGU= KEludFB0cg== IGJ1c2luZXNzbWFu IGVjb25vbWljYWxseQ== IFJpbmdz IElucHV0cw== uYQ= YWNpZQ== IEFsYXJt IExvZ291dA== LnNlcXVlbmNl IFZpZW5uYQ== b3By IGRydW1z PWNvbmZpZw== cXVp IGRhdG8= IHBvbHltZXI= IENoYW5nZWQ= V2ViUmVxdWVzdA== IEFkdmFuY2U= IHVuZGVyZ29pbmc= LkNvbnNvbGU= IGN1cnJlbnROb2Rl IFdvb2w= IHDDoWdpbmE= UkVHSVNURVI= IHNhZ2E= IFlPUks= YW1hbmhv 5a6M IEJ1bmRlcw== IERpYWxvZ0ludGVyZmFjZQ== Z2VvaXM= dW5jaWF0aW9u PyQ= LkFzc2VydGlvbnM= IHNlYXRlZA== IFNweQ== UG9zZQ== IkM= IGFob3Jh INGE0LDQudC7 IOuzgA== IHdhcnA= UHJvamVjdGlvbg== IFNpbmdsZXM= IEFkdmVydGlzaW5n TGludXg= dXN0eQ== IHBlbmFs VVNJQw== b2RpYQ== Lm5ldGJlYW5z IFVn IEJyZW50 LWxvZw== L2NhdGVnb3J5 IEN1c3RvbWl6ZQ== aXJlbg== 77yaPC8= aW5hcnM= ICgrKw== R29pbmc= RVhFQw== KG1lc2g= IHBlcmltZXRlcg== Q2xz Y2VpdmluZw== bWVuc2FqZQ== KCkpKXsK IHByb3N0YXRl X2J1eQ== IFJvb2Y= LlJldHVybg== IG1hcnJpYWdlcw== X3RodW1i 574= 4K+N VGV4dHVyZXM= KFRFWFQ= c2hvcnRjdXQ= VHJhbnNmb3JtZXI= QVRJQw== IFNub3dkZW4= c2NyaWJlcnM= bWFya2Vk IOKGkQ== aG9yYQ== T1BFUg== IEZZ IEF1dGhlbnRpYw== IGF1ZGk= cmFtZXI= IExpdGVyYXR1cmU= IGl0ZW1JZA== LkF0dA== KGNudA== IEtT LWxpbnV4 IFBhcnRpY2lwYW50 IENydWlzZQ== aXR1bG8= dXN0cmlhbA== IGNsYXNl ID0k X2RhdGVz Y3VycmVudFBhZ2U= aXhh ZXhhY3Q= IHRzbA== LlNv L2RvY3VtZW50 aGFydA== X0lETEU= e30u eWV0 SXJvbg== IFRocm9uZXM= c25k XHhh IGJldmVyYWdlcw== X3RyYW5zcG9ydA== IGZvaWw= IHRhc3Rpbmc= IGdvZWQ= TWVtbw== IG5pdHJvZ2Vu Lk1lbWJlcg== LmZsYXQ= IGlsbHVt bWluZW50 Lnpvb20= IFB0cg== b2Npbw== IENvbnN1bHRpbmc= IENvbmU= CWl0ZW1z IExN IG9hdXRo IFByb2dyYW1tZQ== b2Nob25k KHNlbGVjdG9y IHdhdGVycHJvb2Y= IE1lcmtlbA== IHN1ZmZlcnM= IG5wbQ== 6LGh IExhbmRpbmc= IExBTg== CQkJCQkJDQo= L2lz IHPDqXJpZQ== IEdVSUxheW91dA== Z2l2ZQ== X0NZ QnJvd3Nl Lm11bHRpcGx5 PSIkKA== dXNv LXBhcmVudA== Lk1hdGg= Lm51bWJlck9m IHRpZW5lbg== IHJlc2VudA== IHBpdGNoaW5n Il0pLAo= LlV0aWxpdGllcw== IG11bHRpcGxpY2F0aW9u OnR5cGU= IHBwcmludA== aWFuaQ== 5YiZ IGxhdW5jaGVy IHJ1Z2J5 546w CgkJCQo= aGlk QW5nbGVz IGdvb2RieWU= IGlucHV0U3RyZWFt LndhdGNo R29vZHM= IFNheXM= PkY= IFN0aWNr IGNlcmM= IFNsZWU= CQkgICAgICAgIA== PEltYWdl IOiuvg== LWVkaXRvcg== cGllY2Vz IERyYW1h IC8vLy8vLy8vLy8vLy8vLy8vLw== IFRhc2tz QVJD Z2F0ZXdheQ== LmdldGN3ZA== Lk1ldGFkYXRh IGd1ZXNzaW5n 5Zyw5Z2A IHNtYXJ0ZXI= IEdldEVudW1lcmF0b3I= IGVmdGVy L29wZXJhdG9ycw== IEdMZmxvYXQ= IGbDuHI= IG9wYXF1ZQ== 5L+d5a2Y U3ByZWFk U1lTVEVN IGludmVyc2lvbg== IEJhc2tldGJhbGw= IHNpbXVsYXRpb25z IGRlbmllcw== IGF2ZXo= X2xpc3RlbmVy IGVuaGFuY2luZw== IE15dGg= IExha2Vycw== X01E TmRFeA== REFUQUJBU0U= IHThuw== YXJ0aA== W2xlZnQ= IGNvbnRlc3Rz c3RpbGU= KEtFUk4= X2Zj X3Bt IHByZXNpZGVudHM= IGhvc3BpdGFsaXR5 IGZhZGVJbg== Uk9QRVJUWQ== X21hcHM= IERlZmluaXRpb25z IGFzc2Vzc2luZw== IHVzYXI= IHF1YW50aXRhdGl2ZQ== bW96 QmVhdXRpZnVs Wygo Ym9ucw== ZnJlcXVlbmN5 Q29udGFpbg== IHB1enpsZXM= IENhc3Rybw== IHZpbGxh IGtpbmRseQ== Rm9udEF3ZXNvbWU= ZXJuYQ== ZXBvY2hz X2RhdGFz CWlw LnBhZGRpbmc= IENvbnRlc3Q= IGVkaXRpb25z IGRpc3Byb3BvcnRpb24= IElDTw== IGNvbWViYWNr PXZhbHVl cmlhZA== LXNvcnQ= U3VibWl0dGVk KG5ldHdvcms= IENlbA== IGluc3RhbGxtZW50 bGFzaGVz Lkxpc3RWaWV3 IFZhdGljYW4= KE1lZGlhVHlwZQ== SVZFRA== cmVhY2hhYmxl Oklz IENJVFk= 5Lqs IEhlbHBmdWw= IGJhxZ8= JQ0K IHBzeWNoaWF0cmlj IHJlY3ljbGVk Rk9STUFU IEdyb3c= YmluZQ== R2l0 LnNz IFdlYXBvbnM= IFN0eQ== X2Fycm93 KnNlbGY= aXJlbWVudA== IGRlZ2xp QXBwRGVsZWdhdGU= X2Jhbm5lcg== IGNvb3JkaW5hdGVk IFdlYmNhbQ== IGNlbGVicmF0aW9ucw== LmFjdA== KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KHNob3c= IHdlZWtkYXk= IGNvbmNlcnRz 0L7Qu9C9 Y2xpbg== IGNyb24= IE5pbQ== LnNldFZlcnRpY2Fs IEVsbGVu 2LPYqg== IFNBTQ== RWZm Z3o= c3RlYW0= IGFudGlxdWU= cGh5c2ljYWw= IEZvcm1EYXRh LnNldHRlcg== IFBPSU5U Qm9u IGZsYXZvdXI= ZXJ2ZW50aW9u X0VOVElUWQ== CSAgICAgICAgICAgIA== IGludHJpbnNpYw== IOaO YXBwZW5kVG8= YXJhbWVs KV0p IFJlY29tbWVuZA== KW0= T3V0T2ZSYW5nZQ== IGtuaWdodA== IHNhdGVsbGl0ZXM= IFRpdGFucw== IHdlaWdoZWQ= IERhbmE= ZWFzZQ== IHNpcA== U0lN IERldmVsb3BlcnM= bWFsaW5r L2NoZWNr X1BMTA== bnVuZw== IGRyeWVy PUE= LmR3 X1NRTA== IHN1YnBsb3Q= RFJPUA== IHByb3RvdHlwZXM= IGhvdXJseQ== ZGlzcGxheU5hbWU= IGFzaQ== IFZpb2xlbmNl IGFzdHJvbmF1dA== IGRhdGF0eXBl IGluZm9ybWF0aW9uYWw= IGludmVzdGlnYXRpdmU= ZXRlcm1pbmVk cmVuYWw= Oyc+ CWNvbA== Vkc= X2Jvb2xlYW4= cmVjZW50 ICopCgo= IFJhaW5ib3c= b21tZW4= IGx1cg== IG9wcHJlc3Npb24= KCIsIik7Cg== IEZhY2lsaXR5 REVGSU5FRA== IG5lb24= IG9mZmVuZGVy QUZQ IENsZWFuaW5n W10pOg== IHVuZG9jdW1lbnRlZA== LlJlcG9zaXRvcmllcw== IEd1aXRhcg== 0LDRgdGB0LjQsg== U2tpbGxz IHRlc3RpbW9u cnlwdG9ncmFwaHk= IEFtYmVy IFN0YWxpbg== IGxvbmU= IGFwZW5hcw== IGRpZXNlcw== IEFyZHVpbm8= 6L2s PT0t X0FjdA== IGNvZGVk 4pag YW1idXJnZXI= LWxpbmtz IGFybW91cg== LkhpZ2g= Z2V0Q29udGVudA== c3RhZw== IGhlY2s= IOyXhg== IE1jQ29ubmVsbA== IENvbmNlcnQ= IEFsbG9j w6RyZQ== LnJlcGxhY2VBbGw= IHBhcnRpdGlvbnM= cm90dA== IEZsZQ== X1RSRUU= cmVhc29uYWJsZQ== IFJlcG9ydGluZw== IGJpbGxpb25haXJl c2NvcmVz bWlucw== LWV5ZQ== TU9SRQ== YWJvcnQ= IFNXVA== IGludmVydGVk IFRlYWNoZXJz O24= IGFzdHJv 0L3QvtCy 0LDQvdC40YY= cHJvZHVjdG8= Y291bnRyaWVz IE93ZW4= IGNvbnRhbWluYXRpb24= IHZpYmU= IEVsbGk= LnNjcmlwdA== IE9saXZl RE1B dmllcg== OnNlbWljb2xvbg== LW1vZHVsZQ== Z3Jlc3NpdmU= YWd1 X3BsYXllcnM= IHJlc3VsdGFkb3M= c3RhcnRlZA== c2Nyb2xsVG9w PT09PT0= IHdlaWdoaW5n IFtbWw== emFobA== KE5T IEFzc2VydGlvbg== bGVhZ3Vl LnNldFRleHRDb2xvcg== CU1lc3NhZ2U= IG1vbXM= X0FG Lndo QUxT IGF1dHJl XQoKCgo= Lm9wYWNpdHk= IEJ1ZGRoaXN0 IGRlYWY= IE9yZ2FuaXNhdGlvbg== KEdsb2JhbA== ZW5zY2g= IGhlYWRhY2hl IEFsaWVu X2lub2Rl IFN0YXJr IOaJ LWxuZA== b3JlZg== X2ZlYXQ= IHBlZGVzdHJpYW4= IG5vbWluYWw= IGJhbGxvb24= IHNwcml0ZXM= UHJvdG90eXBlT2Y= IEFwb3N0 IEZFQVRVUkU= T0g= IHJlY2Vzcw== IERvbm5h Y29uc3VtZXI= JEdMT0JBTFM= IEdJRg== LWZyYW1l SW5pY2lv IHBhc3NhZ2Vz RGF0ZVN0cmluZw== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== LmJ5dGU= QnVn aW5pdGlhbGl6ZXI= cGt0 b2RpdW0= IERFUg== Lm9wcw== bGVyaQ== IGdpZnRlZA== IGRldGFjaA== dGVycmFpbg== ZWx0ZXJz 44GP LmxvYWRlcg== IE5HTw== c3RybmNtcA== S2g= KGZvbnRTaXpl cm9ja2V0 IHByZWNlZGVudA== IEF1cm9yYQ== IEV4cGVyaW1lbnQ= aXNwaGVyZQ== RW5jb2RlZA== IOKAkwoK IHB5cmFtaWQ= IEFubml2ZXJzYXJ5 b2ZpbA== 658= KHBsdWdpbg== Q29lZmY= IGNvb3BlcmF0ZQ== IHByZWRvbWluYW50bHk= SVNN UGhyYXNl X0RFRklORQ== RmxpcA== QU1JTFk= IE1hcmtldHM= IFN0cmVhbVJlYWRlcg== IENvbWJpbmU= IG1hbnVzY3JpcHQ= enph LHRw V2hhdGV2ZXI= SVRJQ0FM aWdoYm91cg== RGF0YVByb3ZpZGVy LlRleHR1cmU= cHJpdmFjeQ== LlNESw== IHJlY2hhcmdl IGNwcA== IENGRw== KGhvbGRlcg== KHB5 bW90 IHNhdm9pcg== IFJvc2E= IFBDcw== IO2Z Lmhlcm9rdQ== IGZyZW4= IFJpbGV5 YWdhdGU= IHNvbmQ= Lnhsc3g= IGhhY2tlZA== c3RhZA== R2k= IHNhbml0eQ== IFNxbERhdGFBZGFwdGVy Li4uIiw= IFB1c3N5 ICoqKioqKioqKioqKioqKio= IGhhc3NsZQ== X1BBUkVOVA== IFVBRQ== IGJlZ2lubmVycw== KENsaWVudA== IHN0YXRpc3RpY2FsbHk= LmhvdXI= ZWRlbHRh IHRyYWN0aW9u dWVsdmU= YXJhdA== IHNhdW5h SU5WQUxJRA== IGluZGljdG1lbnQ= QUxMRQ== IGRpc3NlbnQ= IFR5cG9ncmFwaHk= IGludGVudGlvbmFs c2l0 IEFuaW1hbHM= IGNvdW50cnlzaWRl IHVhcnQ= fVwi IHNlYW1sZXNz vuekug== IGF1dG9z ICInIjsK Rmx1c2g= QU5OT1Q= IGFsZ2VicmE= YXNzb2M= IFdhdGVycw== IHByZXBhcmF0aW9ucw== cm9ueW0= Wyxd U2Fucw== IGFybWllcw== aXBlZw== IGNyZWFteQ== LmFydA== ZXRyZQ== IEFuaW1hdGVk IHVucGxlYXNhbnQ= ZW1lYW4= Z3JlYXQ= acSF IEVhcmxpZXI= IGNoaWM= IHByZXNlcnZpbmc= KGV4ZWM= IEludmVzdGlnYXRpb24= CUdQSU8= IHJpZ29yb3Vz aWpv PW51bQ== IHRvb2xTdHJpcA== KXNldA== KyIm IEFjY2VsZXI= IGRldmVsb3BtZW50YWw= aXNwb3NhYmxl IGZsYXdlZA== cmVuZQ== VXBkYXRpbmc= IHdhdGNoZG9n IGRlbm9taW5hdG9y IHN1YnVyYnM= IC4uLik= IGNvbnZpY3Rpb25z Y2xvc3VyZQ== LklQ IHRyYW5zbGF0ZXM= LnN3dA== LlRyYWNl IG1ldHRyZQ== LmlzRW5hYmxlZA== IEVmZmVjdGl2ZQ== LnRvSW50 IGVuY2hhbnQ= IHN0dW5uZWQ= IHBvaQ== L2NvZGU= YWRt LmRhdGFiaW5kaW5n IExvcmVt X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw== IGxlZGdlcg== IGNhcmE= IEdpcg== IHdhaXRz VW5v IGN3ZA== 6L6R IFRSZXN1bHQ= IHJlam8= IGVtaXR0ZWQ= IFdlc3RtaW5zdGVy 5LiA5Liq bmVr X1Rpcw== IGVuYWN0 CXdpdGg= b3JnaWE= IGp1ZQ== UGVyZm9ybQ== U1BBVEg= LnRvcGlj IERhdGVu 4bqn IHNpdGlv X01N IlNv YmlhbA== IHNjb3BlZA== UmVxdWlyZXM= IFRPVEFM IENoYW5jZWxsb3I= KGNvbnRlbnRz IHN0ZWFsdGg= ZGV2aWNlcw== LXBhc3M= aWxpaA== IE1hbGNvbG0= IERlcG90 IGNvbmZpZ3Vy YXVzc2lhbg== X2NvbnN0cmFpbnQ= 0LLQtdGC R1JB IFJhdGVz LmRhdGFHcmlkVmlld1RleHRCb3hDb2x1bW4= IE5vYmVs aXRpY3M= IGlnbm9yYW50 IFJlcG9ydGVy IEVib2xh IFNob2Nr X3JlbGF0aW9u IE5pbmph KWM= IHRpY2tlcg== LmlzQ2hlY2tlZA== IFN1cHBsaWVycw== IFJhcGlk TGV2ZWxz 4oKs4oSi CXF1ZXVl IGNob3A= IFVuaXg= cmVqZWN0 LWNhbGVuZGFy KHNvcnQ= w6huZQ== ZXJjaWNpbw== IGhlY3Q= Q0FMTFRZUEU= cm91cG9u IHJlbnRhbHM= YXV0aG9ycw== e25hbWU= IEZJRk8= IGxhc3Nlbg== IE5vdXM= IHNuYXBwZWQ= IGZlcnRpbGl0eQ== ImxvZw== Y2xpY2tlZA== IHBsYW50aW5n IGdi L291dHB1dA== UEVBVA== IGNhdGVnb3JpYQ== IGJhY2g= UHJvZmVzc29y aW50aA== Il0NCg== UmVjb3JkZXI= c2VyZGU= IFRyYW5zbWlzc2lvbg== dHJhZA== IHR1cmJv X1ZFUlRFWA== XEV2ZW50 aWx2ZXI= IGJvZGlseQ== IFNvdXJjZXM= IGtpbGxpbmdz LnhyVGFibGVDZWxs IGZvbGRlZA== L2xlZ2Fs dW5lcg== IFJpZmxl IE1JREk= X1NlbGVjdGVkSW5kZXhDaGFuZ2Vk LlNpemVUeXBl IFdlYlNvY2tldA== IHNlbGVjY2lvbg== U2FuZA== b3Ryb3M= IGVudmlzaW9u L2V0Yw== IE1lbGlzc2E= U3BvdA== 0L3QvtC1 X0FSTQ== QXR0ZW1wdA== IEJJ 44GU IERV IGJhY2tsYXNo c3RyaWRl L2NsYXNzZXM= IHRleHRDb2xvcg== X3N0YWZm b2JsaW4= YWdlbnRh LmNvbGxlY3Rpb25z aWxsYWdl Jw0KDQo= ZmxhdHRlbg== X3NhbGVz X01BU1RFUg== VFc= X2Rh UGl0Y2g= cGhpZXM= IHpvbWJpZXM= IFZFUlk= IFBoYXJtYWN5 IHByb2dyZXNzQmFy IGhhc2h0YWc= U2lkZWJhcg== QHN0b3A= KHBj 0L7Qu9C2 TUFLRQ== IENvcm9u IGt2aW5uZXI= IE1haWQ= Ym9i LnRpdGxlTGFiZWw= IHN1Y2Nlc3Nlcw== IERlbW9jcmFjeQ== IFN1cmdlcnk= IGNvdWdhcg== IGN1cnNv IGxvcm8= aXN0ZW5jeQ== U2VuaW9y w6Zr IEFBQQ== IEJPT0s= 0LrQvg== V1NUUg== ICovLAo= b3lhbA== LnZlY3Rvcg== IFNQRUM= U1NG IGNvbXB1bHM= IEFwcGVhbHM= IFdpbnN0b24= IE1vY2tpdG8= Y29udHJpYg== LmF2YWlsYWJsZQ== ZW50aXR5TWFuYWdlcg== YXJpYXM= X3NhbGU= X3Jz IGRlY29kaW5n IGxvY2F0b3I= b2xpdGg= IGtvbA== IGFzY2lp IFJ1dA== L2ludGVyZmFjZQ== CQkJCQkJICAg IE51bWVy LmZsaXA= LWRlbA== IGJvbHN0ZXI= b25vbWlj IHpt TEc= RmluZEJ5 IGFkYXB0aXZl bG9v IHZ1ZQ== KHJldmVyc2U= X2NhbnZhcw== LnJvbGVz aWZpY2Fkbw== dmVuaWVudA== IkFz IEVudHI= YWxpZ25lZA== IGJlcmVpdHM= Ly8vCgo= Lmd3dA== LmVtcGxveWVl X2NsaQ== IGFudGljaXBhdGU= 6ZmQ IHBpaw== IG11c2hyb29tcw== KHR0 IG9tYQ== IFNhbmNoZXo= X2dvb2dsZQ== LlZhbGlk IEZpbGVOYW1l aXZhdGl2ZQ== a2Vk LXdhcg== IG1hdHVyaXR5 0LjQtA== IG1pbmVy UmVkdWNlcnM= IExhdExuZw== X1NURA== RGlnaXRz Q2FsYw== LXVwbG9hZA== IGhhbmRpYw== 4Li14LmI ZWdyYXRlZA== IFNUTQ== Q2xpZW50cw== IFR1cmJv U1lOQw== IHBob3RvZ3JhcGhlcnM= Lk91dA== LmNoYXJhY3Rlcg== QlVJTEQ= LnVubG9jaw== IGFyaXNlcw== IENvbW1hbmRz KCIiKTsNCg== X0ZPUkU= Oycs KyIn LkltYWdlcw== Iil7 IE1leWVy IG5lZ2F0aXZlbHk= IERMTA== IGV4ZQ== IGRlZmljaWVuY3k= IHdpbGRseQ== LXN3aXRjaA== Y29uc3RydWN0aW9u IGV4Y2VwdGlvbmFsbHk= IExpeg== L2phdmE= IHRoZWlycw== IENvbnRlbXBvcmFyeQ== bGlz LmZpbGxSZWN0 IE5GQw== IHJlaGU= KG51bWJlcnM= IHJhc3Rlcg== IGZpZ3VyaW5n IHNob3dj IEppbGw= IGFyY2FkZQ== IENvbnN0cnVjdHM= bWRs KCd8 IGlkZW50aWZpZXJz IHN0ZWxsYXI= KENvbm5lY3Rpb24= ICJ7ew== eW9y KG15c3FsaQ== IGRvdmU= T2ZCaXJ0aA== LmRpc2Nvbm5lY3Q= X2hp IHp3aXNjaGVu IEdydW5k aXJvcw== X0FycmF5 Lm9uY2xpY2s= YW5zb20= QW5zd2Vycw== CXJlbW92ZQ== RmE= IGh1cnJ5 LWluZg== IGdldENsYXNz IFJlZ3VsYXRpb24= IEZMQUdT bWlzYw== S2Vu X2hlYWRpbmc= R0h6 LWVudHJ5 IGJpb2dyYXBoeQ== U2ln LW1m V2F0Y2hlcg== 4oCcQQ== fXB4 IHNwaWN5 X3Nx TG9zdA== KHRyYWNr 0LDQu9C4 RGVzY2VuZGluZw== PGJpdHM= cXVpbmU= IEFkdm9j X1NO IEhhbm5haA== UE9Q IGVtaXR0ZXI= IGN5bg== IENBRA== Pyku L3NldA== IFNpc3Rlcg== IEVuZHBvaW50 IG1lbm9y IGludGVycA== cms= aWRsZQ== IG91dGZpdHM= LnZlcnRleA== IGNsaWM= QVJFTg== IHBvc3R1cmU= IE9wcG9ydHVuaXR5 dng= IEZvcmJlcw== LkRpcmVjdGlvbg== IHJlc2lkZQ== IHJlbWVtYmVyaW5n bmVzdHk= QXV0b3Jlc2l6aW5n cHJvdmlkZXJz IEFI IGh1cnRpbmc= IExpbHk= ZXZhbHVhdGU= bGlqaw== cGFwZXJz IFNtYXNo IExBU1Q= IHdlbGxz d2FzaGVy X1JPTEU= IERhbmdlcg== Kigo X3JlcG9zaXRvcnk= IFJlc29sdmU= IFJvb21z X1JH IFFU b29w IEhlYXA= IHNsb3dpbmc= IGdyYXR1aXRl X2NhdGFsb2c= IHBvbHlub21pYWw= THk= cGNz Rm94 IEN5cg== IGRpbWlu L21vbnRo U2FsdA== IGhpbmQ= LlBFUg== Rm9ydW0= Y2Vu X3BvbA== 7Zi4 IGluc2Vy KH4= QHRlc3Q= IEdvbGRtYW4= IHVwbG9hZGluZw== RmM= IGtvbW1lcg== IG1pdHQ= X2xvZ2dlZA== IGJ1Y2tz LWxheWVy KX07Cg== IE9N IHZlZw== Y29sb3Vy INC+0LHRig== U3RkU3RyaW5n X3F1ZQ== IFRpYW4= IHNwZWNpYWxpemU= 0LjQvw== INC60Ls= dHJpYWw= LWVkZ2U= IG1hcnM= T0dMRQ== IGVtcGF0aHk= IEJvbQ== IGNvbGxpc2lvbnM= IGNhcnRl IFRlaWw= IE1QTA== IHBvcm7DtA== IGFpcmxpbmVz QXdz TnM= IFNwYXdu KHVzZQ== 6buY6K6k IHlhY2M= c3Rvcg== IGNvbmZlc3M= IHBlcXVl cmFnZQ== PyIK L2RhdGF0YWJsZXM= IFNob3dlcg== X18v IGNyeXN0YWxz IGJ1c2Nhcg== IEhhdXM= aXphw6fDo28= X2VudGl0aWVz lYw= mow= eGNj dmlydA== LWNoZXZyb24= KFJlc3VsdA== Y2FrZQ== Q09NRQ== IHByb2hpYml0 IENoZXNz IGJlYXVjb3Vw INGH0YLQvg== UlVO IElL w7PFgg== X1VwZGF0ZQ== IHNsZWVr IFNwZWNpZnk= X2NyZWRlbnRpYWxz xZ90 IFVzZXJOYW1l CVZhbHVl IGFycmF5TGlzdA== IGV4Y2hhbmdlZA== aXBzaXM= LnJlbGF0ZWQ= IFNlaXRl X0JBUg== IExlbQ== IFdBVENI IENsaWVudHM= IC4q IEVhcmw= LXJlcG9ydA== IGZvcmVpZ25lcnM= IHN0cmVuZ3RoZW5pbmc= CURlc2NyaXB0aW9u KGdv LnRvb2xiYXI= IGNhbGN1bGF0ZXM= CXNvdXJjZQ== IGN6YXM= IHJlY2w= YWJv IGxvY2FsaG9zdA== IF57Cg== LlBvcA== IERlc2lnbmVk XEFic3RyYWN0 SG9sZA== IEd1aWRlbGluZXM= aXBsaW5l IGNhY2hpbmc= LlJlYWRlcg== X2V4dGVybmFs LnN0cnB0aW1l IFdlZWtlbmQ= LU1hcg== IEJlaQ== IHsqfQ== IFJ1ZA== IGV4cGxvcg== IEJvdWxldmFyZA== Q2FzaA== IHByZXBhcmVz IHNlcmlhbGl6YXRpb24= ZXdhdGVy IGFkYw== OgoKCgoKCg== UmVmZXI= IHNjYW5uZWQ= fX0KCg== IEZ1bA== IHRvdXJpbmc= 44OD44Kv Pigo c3VydmV5 IO2Y Li4uJykK IERpdmlkZXI= b3Ns X0NBTkNFTA== X3ByZXBhcmU= c3Rpbg== IEhlYXRo LlByaW1hcnlLZXk= IOKGkA== IExvY2FsRGF0ZVRpbWU= IGNvb3BlcmF0aXZl TGVhcm5pbmc= LmVucXVldWU= IGdvb2c= IFJlZ3Jlc3Npb24= aW1hdGVz IHZveWV1cg== IERyaW5r cGx1Zw== IGxlbmRlcg== bWFuYQ== IHBlcnNvbm5lcw== eXBzZQ== IHVubGluaw== IFJhdmVucw== IGh1cmQ= IHBlcmlvZGljYWxseQ== QVJHUw== IEdI Y2hhcmFjdGVycw== Li4uIgoK LWVzdGFibGlzaA== IGRu KGNvbmRpdGlvbg== IEdyYXZpdHk= IGVzdGFz X2ZvY3Vz Q3JlYXR1cmU= KHNpdGU= IGNhcnI= IFJM IFJJ IE1vdG8= QVNG IEx1Y2tpbHk= CVJvdXRl IGVudHJvcHk= KCIsIg== Q29sbGVjdA== KGNvbnRhY3Q= IEZsb3JlbmNl IHByZW1pdW1z IGxpZmVjeWNsZQ== IGJhbnM= eGVm V2ViS2l0 IEZsb2F0aW5n IGNvc2E= U3BlY2lmaWM= IExvYW5z YnJlYWQ= IGRlc2NyaXB0b3Jz IHs6Lg== VEhSRUFE IFRyZW50 IHNjb3A= UUE= IEFudGFy cGVs X2RpZmZlcmVuY2U= X2NoYW5nZXM= KC4uLik= IFJvdGF0aW9u IExHUEw= IEpVU1Q= KFRhc2s= X3N1YnNldA== IFRSQU5T 5Yqb IFNjb3V0 LXBvcHVw IHNtb2tlZA== X0NsYXNz IHR1cm5vdmVy YnJha2s= IFJvY2t5 dGFz LlJlZ3VsYXJFeHByZXNzaW9ucw== IEVsbGlvdHQ= IFNwaW5uZXI= RFVDVElPTg== IGxpYnJl IG1vbHRv ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZUUA== bXBlZw== KGZlYXR1cmVz IGJhbGQ= IFZpZA== IHNob3V0aW5n TGludA== IHNvY2tldHM= IHByb3c= IG5vdXZlbGxl aXNjYXJk IFNwb25zb3I= IGNvbnN1bHRh KSkpOw== SW5kaWFu IFJhc3BiZXJyeQ== IHRlYW1tYXRl IEpXVA== IEdoYW5h IGNha2Vz cHJpbWVy Zm9ybWE= ZXJnYXJ0ZW4= X01hbmFnZXI= IHByZXNlYXNvbg== R0FNRQ== fCI= IEJyb2Nr IG9jY3VweQ== IGRlY29yYXRpb25z w6FuZA== IGNvdA== IHBhcmFu RGlzaw== cmVtYWlu Pj8= U3Ryb25n IGZyYW5jZQ== IEVyYQ== LWNy LkJ1ZmZlcmVkUmVhZGVy IFBhcmFkaXNl IFZBVA== IEFuZGVycw== IGxpbWI= YW1wb28= IGltcGVyYXRpdmU= VVRJTElUWQ== IFJlY29nbml0aW9u IHJhZ2F6emU= IHBvcHM= eXByZXNz IGVtYmFyZ28= Ly97Cg== IHN5bGw= UFRS 5a2Y5Zyo IGRpZG50 TWFpbGVy IGFjYWRlbWljcw== IEZyYXVlbg== bmVpZGVy LXJlbA== IHJhaW5ib3c= KElu IHNsaWNlZA== PT09PT09PT09PT09PQo= KHNlbmQ= TlNNdXRhYmxlRGljdGlvbmFyeQ== dm9z KHBhY2thZ2U= IG9yZGluYW5jZQ== dmlld2Vy IFNhbnRvcw== LXNlbGxpbmc= IGdvdg== ZXR0bGU= IGZvdW5kZXJz IHdha2luZw== c2xhc2hlcw== LXBvdW5k cmVjaHQ= 2KfYqg== Lm9uQ2xpY2s= IG5vcmQ= c3TDpG5k X3doZW4= VVRFUlM= aWNj IGNhcHN1bGU= IFdpZA== TWFyYw== 4Li4 cm9yZWQ= VUdF TE9VRA== IEF1ZGl0 aXBpZW50cw== b3BpYW4= IFN1ZQ== IHd1cmRlbg== LkhlbHBlcnM= IGZhY3Rpb25z W25w LXRoYW4= IHJlY28= IGthcw== IGNtZHM= L25ldHdvcms= eGJm Z2V0Q29sb3I= IGJpYXNlZA== IExhaw== RGF0YXM= dmVudHM= IOuy X1BT LlZhbGlkYXRl SW52b2tlcg== IG5ldWVu IGp1dmVuaWxl VklTSU9O IGRldm90ZQ== IGxpbmhh IGRpc2NvdW50ZWQ= XENvbmZpZw== IHdvcnRod2hpbGU= IHNraW5ueQ== IENvdXJzZXM= bGV5cw== IE1vcnRnYWdl S2V2aW4= IGFubm91bmNlcw== XSkq cmVzZXJ2YXRpb24= IOaVsA== IHByZWp1ZGljZQ== IFN0cmluZ0NvbXBhcmlzb24= IGJlYXJk LXdpbg== IFPDo28= CW1z amFs IEVhcm4= X3BvcnRz IE5vbWJyZQ== X0NPUg== IEJVSUxE LnNvdW5k WWVsbG93 IGxpbmViYWNrZXI= IGNoYXJpdGFibGU= anVn X05PTk5VTEw= IERlbnRhbA== Ij4kew== CW1hdGNo UnVzc2lhbg== IHZlcnNjaA== IHBpbm5lZA== IGFkb3B0aW5n T3B0aW9uc01lbnU= UGFn IHBhaXJpbmc= IHRyZWFk ZXJjaXNlcw== IFNwcmVhZA== KWk= IEJBRA== X3Rm VUlJbWFnZVZpZXc= cG9wdWxhdGU= YmFi IM+D Wysr IG9waW9pZA== ICMjCg== ZHR5cGU= IFN0YXJ0cw== KCcvJyk= IHBlcnNvbmFscw== LW1hcmtldA== IHJlZHVuZGFudA== IEVzc2VudGlhbA== IHNjcmFweQ== INC40Lw= YWNs IGNyZWFy IEJlbmQ= IHJlbGlldmU= LXJvb20= d2lmZQ== IHbDoA== IFFQb2ludA== IHF1YXNp IG1ldGhvZE5hbWU= XHhj IFBlcnU= L1RoZQ== Lm9ybQ== IHZpeg== L3BkZg== TG9jYXRlZA== IGNvbmZyb250YXRpb24= IENoYW1waW9uc2hpcHM= IGh5cGVydA== IGRq IFVzZXJJbmZv IOWIm+W7ug== XHhi KHNpbQ== ID09Cg== IHN0YWdpbmc= IGRyYXN0aWNhbGx5 5a2m bG9yZHM= Lmxlc3M= 0LLQtdC00LjRgtC1 IEJ1Y2tldA== IE1hbQ== LnRlcm0= X3Bp Y3p5 LnB1Yg== cHJlY2lv IFZpcnQ= IHJvbWFu aXRhdA== TGV4 X2luZm9z xLA= Lm90aGVy VkVMTw== IHBvbmRlcg== IGhhbm5v KFBhZ2U= ZG9p IHBvbGl0ZQ== IHByb2dyYW1tZXI= RGllcw== JGQ= IHJlcGxpY2F0aW9u YWRkQ29sdW1u ZnJpY2Fu IGxlbmc= YmVlcg== b2l0 IHdhc3Rpbmc= eWxpbQ== bWVhc3VyZQ== TmVn IHBhcnRpZQ== LmNvbnNvbGU= IEd1aW5lYQ== VEVM X2ZhY3Q= LmNodW5r IGxlbnQ= IGFsbGVy IOCklQ== X2lkbGU= IGFkbWlzc2lvbnM= SlNPTkFycmF5 IHZpYnJhdGlvbg== LmhlbHBlcnM= 5aSW IGhlbg== am9obg== IOyDnQ== IGp1ZGdlbWVudA== IGdlZW4= dGVycmE= Xns= IEl6 IGPDog== aW5zdGFuY2Vz IHRocmVhdGVucw== IG3DvHNzZW4= S2luZE9mQ2xhc3M= IHN0b3J5dGVsbGluZw== X2RlbW8= cmlhcw== UHJpdmFjeQ== aGlmdA== IFlp ZXNvcg== 7ZWg ZW5zaXRpdml0eQ== LldyaXRlcg== 4LiC RGlzdHJpY3Q= LmdldEpTT05PYmplY3Q= SW1wcm8= KGdldFJlc291cmNlcw== IFNQRUxM cm9kdWNl IHNsb3dlZA== IGxpbmV3aWR0aA== IGhvbmVzdHk= IENvb3Jk IEZvcms= IERpc3BhdGNoUXVldWU= IENsaWZm IFdpcmluZw== X1RJTUVTVEFNUA== b2xsYWg= YXZvaWQ= KytdOwo= c2VtYW50aWM= LWNzcw== IHZldG8= IE1lcnI= IGxlZ2lzbGF0b3Jz Q0VFREVE IHF1ZXN0aW9ubmFpcmU= IFBpbGxz Q2FsY3VsYXRl KGNvcmU= J2U= IGRpc2xpa2U= IFByZWZlcmVuY2Vz X0VYVEVSTkFM 6LCD IGRvZGdl 5pyN5Yqh Lm5hbWVz LmRyYXdJbWFnZQ== X3Byb20= dWNrbGFuZA== IDwkPg== xLF6 L3NpdGU= 6aG5 cm9waGU= IGNvbXBlbGxlZA== IGxhcHRvcHM= IHVuaQ== Q0xPU0U= IGNhc3VhbHRpZXM= IFVuaWZvcm0= VGVybWluYWw= LiIsIg== REFU KFRyZWVOb2Rl IEdhbmRoaQ== KHN0bXQ= QVhC Kk0= IHVtYnJlbGxh YW5pbWFs IGdycGM= IHdoZXJlYnk= IGZsb2F0cw== CWFyZw== IGRiZw== IGV4Y2VlZGluZw== RXZlbnRUeXBl LlNhdmVDaGFuZ2VzQXN5bmM= IHt7ew== IG93ZWQ= YWhyZW5oZWl0 IOyn IGVxdWlwbw== dXJhaQ== IGlkb2w= XSIpCg== X21ham9y IGVudGlyZXR5 aW5nZXJwcmludA== w6dvcw== L2FjY291bnQ= CXJpZ2h0 dXJzb3M= IEVEVA== X0lOU0VSVA== IHNoaW5pbmc= IDw6 RWRnZUluc2V0cw== IGNvbG9uaWVz LklN CSAJ Uk9BRA== Q0NDQw== cGxhY2luZw== IGdldEFjdGl2aXR5 ZW1hY3M= JyUo LmNsaWNrZWQ= IFRoZW0= aXNpYQ== QnVzY2Fy LnJlbmFtZQ== IG9hdGg= IGFmdGVyd2FyZA== IFVGTw== QVBT IEphY2tzb252aWxsZQ== LnNvbWU= Q29uZmlybWVk LnNjYW4= aWdJbnRlZ2Vy RGVjb3JhdG9y c2hpZWxk cmVzc2l2ZQ== LmRpZA== 6K+36L6T5YWl IHNodXR0ZXI= RGFt IHBhcmVudGluZw== ZXllZA== JGl0ZW0= LWRldmVsb3A= IGV4dHJhY3Rz IGRlY2VudHJhbGl6ZWQ= IEVsc2E= X3NwaW4= XSkr LWluaXRpYWw= IG11bHRpdHVkZQ== IHNlbnNvcnk= IE1PREVM IHNhZmVndWFyZA== 7Lk= IGh1bnRlcnM= IFRpbnk= SU5P ZGVjb3JhdGU= IE5vU3VjaA== SG8= KFJlc3BvbnNl IHJ1bGVy CXNob3J0 IGNhc3Rlcg== IGNsaWVudElk IHBkYg== 64+E aXRpYw== IEdhbWVTdGF0ZQ== IG5ld0l0ZW0= KQoKCgoKCg== b3Vpcw== bm9j LkJMQUNL X1ZFQ1RPUg== LS0tLS0tLS0tLTwv IGV4YW1pbmVz CWJsb2Nr IGFkZG9u IHN1cnZleWVk IExpc3RlbmVy IGZyb250aWVy IGxhY2tlZA== SlVTVA== INGN0YI= IHRpbnQ= IE15c3Rlcnk= ZGF0ZVRpbWU= IFR1dG9yaWFs IGZ1bGxOYW1l IERyYWdvbnM= X0ZJTEVT IFByaW50V3JpdGVy IGJlZXQ= IExhZGllcw== X3RpcA== IEphaHJl b3JhbWE= IGluc3VsYXRpb24= KEVudmlyb25tZW50 X2FzdA== YmVyZ2Vy bGVuYQ== b2dlbmVvdXM= X01PTlRI LXByZXNlbnQ= IGZyYW1ld29ya3M= UVE= UEhQRXhjZWw= IGNvdW50ZG93bg== IEZX KGNsdXN0ZXI= OmM= IG9raHR0cA== b2JzZXJ2ZQ== W3BsYXllcg== Lmhl IFBhbmFtYQ== QXVzdHJhbGlh IG91bmNlcw== IGFnZ3Jlc3NpdmVseQ== IHdhcm5z IGN1c3RvbWl6YXRpb24= X1F1ZXJ5 d2lz IGludmFs QUZG KGNhbWVyYQ== V2ly IG5lZ290aWF0aW9u CU8= IHJlc3BlY3RmdWw= IGRpYW1vbmRz J2F2 YXBwcm94 L2Ry IGdyYWJz IGFjY29tcGFuaWVz Y29uc3RyYWludA== IHJleg== KHJlZ2lvbg== IGJhaXQ= dGVybWluYXRl IEJlbGdpYW4= YXNzaXVt IF0NCg== U3lzdGVtcw== b3VzZWRvd24= LmJ1cw== U2V0VmFsdWU= IFByZXA= IGNvbnZlbmllbnRseQ== Lm1pZA== Y2FzZWNtcA== TnVtZXJv ZGFpbHk= IENvZGluZw== KGRlc3RpbmF0aW9u IyQ= dWrEhQ== IGVtZXJnZW5jZQ== X3BhcmE= X0lOQ0xVREU= Izo= IHJlY29nbml6aW5n IGZ1Zw== In19LAo= IGJ1aWxkZXJz IFRlcnJpdG9yeQ== IGluaGVyZW50bHk= IGRlcml2aW5n LmV0aA== IERpbm5lcg== LnNldE9iamVjdE5hbWU= IGNlbGVicmF0ZXM= IHF1ZXVlcw== IE1hcmtz QUxURVI= IERhcnQ= cG9rZQ== X0NIQU5HRUQ= IHBhYXI= bGllcw== LnZvbGxleQ== IE1lYW5pbmc= IE9GRlNFVA== ZW5zaW5n IGZyw6Vu LmxvY2FsU3RvcmFnZQ== IOup KHt9KTsK ZGVjb2Rlcg== IHJvdWxldHRl IGRpc21hbnQ= SXI= IGluc3VyZw== ICcnOgo= LuKAnQo= IGJydW5ldHRl LmFzc2V0cw== X05FVFdPUks= 4LiK bnlt X1NvdXJjZQ== XFRlc3Rz RXNjYXBl Y3J5cHQ= LlhNTA== IHNvdW5kaW5n b3Bjb2Rl IGNsYXNzaWZ5 IGVtYmFycmFzc2Vk IExPR0lO IHJlc2lkdWU= IE5FRUQ= LmRlZXBFcXVhbA== cGVyYw== LWNhbA== UmVkaXM= VHJh KF8p YXNrZXRz Z3JhZGF0aW9u IGVuenltZQ== IFN0ZXBoYW5pZQ== LkludmFsaWQ= J10/Pjwv IGRpc3BsYWNlZA== IGVsZW1lbnRvcw== KGR1cmF0aW9u cm93Q291bnQ= IEZTdGFy bGV0YQ== L3BvcHBlcg== IHN0YXRv IHBlcmZvcm1lcg== IGRpc2NpcGxpbmVz IEZ1bGx5 aWN1bGFybHk= IGVyc3Rlbg== IFBvbHlnb24= IGRpc2NpcGxlcw== LmlzZGly IHRlc3RpZnk= X1NS cHJpc2luZ2x5 IEdMaW50 IHdpcGVk IGNhcnZlZA== IERpc2g= Lmhlcm9rdWFwcA== c3RpdGlhbA== IE1BVENI Y2xhaXI= IERheXRvbg== LycpCg== SURETEU= IGluZnJh IGxpdmVseQ== IGRlcHM= IFsuLi5d CQkJCQkJCQkJCQkJCQkJCQk= IExvbg== RXh0cmFz VHJhbnNpZW50 0LLQtdGA L21vZHVsZQ== IGVuZHVyYW5jZQ== X3RleA== ICJ+Lw== X3lsYWJlbA== IG9iZWQ= L2dhbWU= b3BzeQ== IGZpcnN0bmFtZQ== LmZvcmNl IG1hcnQ= XENsaWVudA== IGxlZ2l0aW0= LmZsYXR0ZW4= Iics b3NleHVhbA== IGpvdXJz TUg= ZXhwaXJlcw== IHN0eWw= LmludGVydmFs S25vd24= IGZvbGxvd2Vy IGRhbGxh cGlyeQ== X3NzbA== aXNobGlzdA== IFJleQ== IHN1cGVybWFya2V0 T2J2aW91c2x5 LWVudGVy IHByb2JhYmlsaXRpZXM= IEhW IENpbmVtYQ== IGN0eXBlcw== IEJDTQ== X1RBQw== O2E= LmJ1dHRvbnM= IHJldHJpZXZpbmc= aWxhcml0eQ== IHVuZGVydGFraW5n CXN0YWNr IGtlbA== IFhlbg== KHBoaQ== IHRvdWdoZXI= IFNlbGxlcg== Y2Fwcw== IEVtYmVy IENoaW4= IGxhdWdocw== Q29udmVyc2lvbg== Lmxpc3RlbmVy JkI= IHBhcmFkaWdt IGp1bmN0aW9u JC8sCg== W28= IENvbnNlcnZhdGl2ZXM= z4A= bGF0ZXM= X0V4Y2VwdGlvbg== IG1laWxsZXVy IHN0cmFwcw== cXVpc2l0ZXM= CXNu IG1hc3NhY3Jl b3R0ZXM= X2dyZWVu VGl0bGVz Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== IFJlZ3VsYXRpb25z YXJs X3Nob3J0Y29kZQ== IERyYXdlcg== IHBhcm9sZQ== IHdpbGRlcm5lc3M= aXNzb24= IEFGVEVS Q3JlZGVudGlhbA== QmxvY2tpbmc= IEhUQw== U2lu KGF1dGhvcg== IGNvcnRleA== Jyl7DQo= 77yJ77yM IGR1bXBlZA== IFNodXQ= IEtleUV2ZW50 CVBsYXllcg== LmdldFBsYXllcg== IGlnbm9yZXM= dG9nZ2xlQ2xhc3M= IEV4Y2x1c2l2ZQ== PigpOw== LmdldFA= YW55ZQ== IG5ldXJvbg== aWZvbGQ= IEtub3du Qml0Y29pbg== QW55d2F5 YXlldHRl ICdbJw== w6BuaA== bWdy IGNvcnJlbGF0ZWQ= IG5hdXNl IG1lbnRhbGl0eQ== aGFzTWFueQ== IEZH YW1waWU= SVRV RnM= LlNw X2JldHdlZW4= RGVwZW5kZW5jaWVz b3Vn UGxhY2Vob2xkZXI= PXRleHQ= IE1hbmFnaW5n b2NhbHlwc2U= 5YyX X21hZw== Zmxk 4pE= Q0FN IEhlbHBlcnM= IGRvc3Q= L291dA== IGFzc2Fzc2luYXRpb24= LmdldEltYWdl IEtlbm55 LicpCgo= KXsvLw== IFJhbmdlcg== IGdlaw== IHNpbmNlcmU= PFZhbHVl IERPVA== IFZpY3Rvcnk= IGxlZ2VuZHM= IHByaXNvbnM= KGV4cHJlc3Npb24= IFJhYmJpdA== X3NlbnRlbmNl IGJpdGVz IG9uRmFpbHVyZQ== IOKIiA== S2lt LmdlbmRlcg== IM67 IFsu Il0pOw== bGFuZGluZw== LWRpZ2l0 VEVNUA== CWVudHJ5 IHN0cnRvaw== IGRlc2NlbmRhbnRz dW1ubw== IGxlYW5pbmc= IHNwZWNpZmljcw== cW4= IFNwYXJ0 IHBvcnI= RURJQVRFSw== IHNlcGVy J2F1dA== IFNURVA= IEJvcmRlckxheW91dA== IHJldHJvcw== IFNhbHZhZG9y IEVOR0lORQ== eGRj VHdlZXQ= dms= IOyy XTw8 aGV0aWNz Y29kaW5n UmVhY2g= LnJlcQ== Z3VpZGU= LnNjb3Bl c2hpcnQ= cm9nYXRl U0VUVElORw== IFByb3RlaW4= IGVpbmc= LkVNUFRZ LmRm IGNsZWFyZXI= IGNyb3Nzb3Zlcg== IFRveXM= IGNvYXRlZA== Lk1vbnRo IEF0dGFjaA== L3J1bg== LnRhYnM= IG9nc8Ol QnJvd24= LkRBVEU= IGZvcw== 5a2X56ym V29vZA== LXRocmVl aGVyaXRlZA== IHJvcA== KGFj IGVtYm9kaW1lbnQ= IEtlbm5ldGg= IGNhbm5vbg== IGJpZGRpbmc= PElFbnVtZXJhYmxl CXNldFRpbWVvdXQ= X2RpZ2l0 IGVsaW1pbmFy KG5l YnVkZ2V0 Q1NJ IOyVhA== IEFTUA== R3JvdXBJZA== X0NPVU5URVI= Y29uc3VsdA== IGlmcmFtZQ== bGVnZW4= X0RFQ0xBUkU= U2hhcnBlcg== IEZyaWVuZGx5 dWxldA== LWNvbW1hbmQ= INCg Y3ljbGVz IFdhc3Rl IHRhcHBlZA== CUJ1ZmZlcg== 4oCUaW4= IAogIAo= IElkZWFs IENhbmR5 X1N5bnRheA== w6p0 7J2M YWJvdmU= IE5hemlz IGZzdA== c2Vpbg== IGt1bm5lbg== d2lr IFNhdmluZw== LmV4dGVuc2lvbnM= IERlc2VyaWFsaXpl b3VyZw== LmF0dHJpYg== 77yaCgo= IFdpbnM= LmVxbA== Unlhbg== X2Fjaw== T1VSQ0VT IG9ucw== Z3Jlc2U= YWZpYQ== TW9kZXJu IGFkaGVyZQ== IGJpb3M= KGFjYw== a2Jk VGhyb3du qeuLiOuLpA== CUh0dHA= CXhtbA== RW5kRGF0ZQ== KHBhcnNlZA== LmdldGVudg== cmVnaXN0cg== bmVsbA== aW9uYXJpbw== LmlubmVyV2lkdGg= cnRs UFY= X3BpZWNl IERlcG9zaXQ= eWVycw== IE5TTnVtYmVy IGdpbnQ= ZW5zZW1ibGU= IG5ld2NvbQ== IFZpZXRuYW1lc2U= X2hw IGFjY3VzaW5n IHF1aXM= IGludmVzdGlnYXRvcg== ZXNzZW50aWFs IENY LmZvck5hbWU= ZGVmcw== IGFuYWx5c2U= X2FuaW1hdGlvbg== IHRoYQ== dGFib29sYQ== IFRIQw== w61jdWxv IGdsb3dpbmc= IGhvbm9ycw== YnN0cmFjdA== a3A= SVRFUw== ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= I2dldA== L0Rlc2t0b3A= CWdsbQ== IHppbmM= w6F0aWNh IDw8Cg== Vk1M IFVubGltaXRlZA== dnJl LWJlZA== X25vbmNl IEdJ dHJhdmVs IGlzS2luZE9mQ2xhc3M= IGFub255bWl0eQ== RmlyZXN0b3Jl IGVtYWlsZWQ= X0ZMQVNI IGbDpXI= 4piF4piF IDpd SHVt LnJlc2VydmU= w7xt IGtvc3Rlbmxvc2U= IFNDUA== dXRhbg== IEdvcmU= IGNoYXRz Lz4NCg== LmdldFJlc291cmNlcw== IGx1bXA= X2NvbnN0cw== KGV4dA== CWRpcg== 4p0= IHBhZGRpbmdUb3A= IG9ic2Vzc2lvbg== IGJhbm5pbmc= IEFwcE1vZHVsZQ== IHBhcnRpc2Fu IGNhdGFsb2d1ZQ== IG1pbm9ycw== IHBpdGNoZXM= d2VlcA== IHVuZGVydGFrZQ== IHRoZW1lZA== YXVkaXQ= LnNjcm9sbFRvcA== IHJlcg== IHN5bXB0b20= IG9wZW5pbmdz LmJsb2Nrcw== b3Blbmlk IGFzc2g= LXNhdmU= IFBpZw== IHJlZ2Fpbg== IGluaWNpYWw= L2Zhdmljb24= CWV4cA== IHNwaWNlcw== aXNrYQ== Y2xhaW1z bWFr ZGVmaW5pdGlvbnM= IGNvcnJlc3BvbmRlbnQ= IENhbm5hYmlz X18sCg== IEx1Y2t5 IEdhdXNzaWFu IE5lYXJseQ== Q0FE J11dCg== IGFkZXF1YXRlbHk= IFRJVExF Y29uc3RpdHV0aW9uYWw= LW1t X292ZXJyaWRl IGJsYXM= LnJlYWR5U3RhdGU= IHJlbWluaXM= IHJlaW5mb3JjZWQ= IENvbGxhYm9y IGRlY29yYXRpbmc= IGJhY2hlbG9y RVJSVVBU IHVwcmlnaHQ= aXBhdGlvbg== IE5vYmxl IHZhbHVlRm9yS2V5 IHNldExvYWRpbmc= Lklnbm9yZQ== 5YE= R2xvYmFscw== IE1lbnQ= QVNTRVM= IGxpbWJz IEhVRA== aW5jaQ== Lml2 IFFNb2RlbEluZGV4 RnVzZQ== IHBlZGFs X0ZSRVE= KHZlcmJvc2U= IGxvbmdpdHVk IENoYXJ0ZXI= 6re4 IGJ1bmRsZXM= Lmlnbm9yZQ== dW1ibw== RU1B Li4uLi4uLg== c3g= LkNhcmQ= IGhldXRl IHN0ZWVy anVtbGFo IHtf X0NoZWNrZWQ= IGZheA== IEd1c3Q= aXRjaGVucw== ICkpCgo= IHJlbWFya2FibHk= L1hNTA== LXJlbW92ZQ== X2J0 IGluY3Vi LnBhY2thZ2U= LmN1cnJlbnRUaHJlYWQ= IEhpZ2hsYW5kZXI= LnNpZGU= c3BsYXNo IGljaQ== PUQ= IHB1Y2s= IGJhbGxvdHM= IGh1Z2VseQ== Y29lZmY= IHBEYXRh LkNPTFVNTg== IEhlYWxpbmc= IG9yZGlu ISks ICcnLA0K KG1k IFNhc2s= PHN0cm9uZw== IHN1cnZpdm9y LnNlcmllcw== IGNhZmZlaW5l IGAo LlRSQUlMSU5H X0lucHV0 KCJe emQ= Jik7Cg== IFBpbmc= IHZvdWNoZXI= LnJhdGluZw== LXNoaXJ0cw== IFJldHJpZXZlcw== LmFsaWJhYmE= T3JhY2xl X01PVg== T2xkRGF0YQ== IC8qDQo= IGdib29sZWFu ID0+DQo= IHLDoQ== IGJsdW50 IEltYWdlSWNvbg== aWZpaw== UlRD IGZpYmVycw== IHRvaWxl LnNlbnQ= IFB5UXQ= JGFwcA== IG1lZGlv IGdyYW50aW5n IHRzbGludA== IE3Dtg== KGZpZ3NpemU= IGh1cnJpY2FuZQ== IGxpZmVz IMOE cm9jZXNzaW5n X3N0YW5kYXJk LW9wdGlvbg== JykpKQ== IHZhY2FudA== 5bel IEhvbGxvdw== aGFuZGxlQ2hhbmdl IGRpdmlkZXI= IEVuZ2luZWVycw== IHN2ZW5z IGNvbXBsaWFudA== dGFuZ2dhbA== IENyZWRpdHM= IEVtaXJhdGVz UnVsZUNvbnRleHQ= IHJlYWxpemF0aW9u IGRpc3RyYWN0ZWQ= XSs9 IGF1Z21lbnQ= IER3 b3Rw b3JyZW50 RWRpdGFy LnN0b2Nr U3R1ZHk= cGVjdGlvbnM= IEdhbWVNYW5hZ2Vy PWN1dA== IGZsb2Nr IFJvbWFucw== dGhlbQ== LWhvcA== IHNjcmVlbnNob3Rz IC8qIQo= IGNvbnZlcnNpb25z IG5vcm1hbGl6YXRpb24= KGNvbmZpZ3VyYXRpb24= IGFlcm9z X3NlY3VyaXR5 IScK Qm9udXM= IERSSVZFUg== CURhdGU= dGll IFd5b21pbmc= U3RhbmQ= aXRyZQ== IHNob3BwZXJz IGRpc2FkdmFudGFnZQ== IGxpa2luZw== 56yR IHVuZGVyc3RhbmRhYmxl U0VF IGhveQ== IG5pbmV0ZQ== IGNvbmZlcg== IG5vd3JhcA== IFZlcm4= LA0KDQo= aW1lc3RlcA== TGF5b3V0TWFuYWdlcg== 4Lc= CXdhaXQ= UExFVEVE SmFwYW4= IGluZHVjZQ== IOWv 0L7Qt9Cy X0VORFBPSU5U Lmhvcml6b250YWw= IGFjY2VsZXJhdGVk cmltb24= SVZFUw== VHJhbnNhY3Rpb25z TGVhbg== IFNPVVI= d2hldGhlcg== eWc= IG9pZA== IEVudGl0eU1hbmFnZXI= T1VOVFJZ IGZpbGE= T0xVTU5T SU5VRQ== IEFuY2hvcg== VFJBTg== d29v YmxvY2txdW90ZQ== IE51cnNl IENhcnA= IHJlZGVlbQ== LnRyeQ== IEpQ IHRpbWVzdGFtcHM= ID8+Ij48 IFJFTU9WRQ== IFN0YXJidWNrcw== UmVhbGx5 IGZsb29kZWQ= LkNhbGxiYWNr RHJvcERvd24= aXBybw== IHRlbmRlZA== bHRl IHByb3BvcnRpb25z LXRl IFJlbmE= bGljYXRl Zm9yY2Vz LmV4dHJh LmF1dGhlbnRpY2F0ZQ== 0LLQvtC0 obA= IGZvckNvbnRyb2xFdmVudHM= IHNlbmhh IGtlaW4= IG1pbmlzdA== IFByZWZlcmVuY2U= IFRlbGVncmFwaA== 0YPQvw== c3RycG9z IGlsbG5lc3Nlcw== IHBpZ3M= IGdldEludGVudA== U29s IMKh KGNwdQ== W3Byb3A= c2NyZWVucw== Jyk7Pz4= IEFjdHM= IHN0cmR1cA== IGF2ZXJhZ2Vz YW5hbA== IENhc3VhbA== R3JvdXBCb3g= IEhhbmRib29r L2NvbW1lbnRz IG51bWJlcmVk IGJyb2FkY2FzdGluZw== 55uR Lm5hdGl2ZUVsZW1lbnQ= Lm11 IHVwZGF0ZWRBdA== IERvZXNu LkFD LmNvbGw= IHJlY29yZGVy X3NoYQ== Qmc= Ymls IGJvbHRz IOes IGltcG9zaW5n IEluZm9ybWF0aW9uZW4= X2ZsYXNoZGF0YQ== ZWNvbm9taWM= UmVtYXJr dWNhcw== IE9mZmljZXJz IFRFUg== V2Fsaw== IG1lcmNhZG8= X2dlbmVyYXRl SFk= Q2FsbGluZw== c25hcA== c2NyaXB0SWQ= Lm9wZXJhdGlvbg== IEZsYW1l bGluZXNz IHJlbnRlZA== X3RvZ2dsZQ== LWNoYW5naW5n IFRZ J3V0aWw= RUVQ IGdyYXBocWw= IFVuaQ== IGltcHVsc2U= LkJhc2lj IGVuZXJnaWVz TUFSWQ== IE1hcmNlbA== IG1vcnRhbA== IGZyZXM= bWVucw== bW90aW9u IHNhbXBsZWQ= 4oCcVGhhdA== aWRheQ== cXVpcG1lbnQ= Z2V0SW50 IEFic29sdXRl LCci dW5lZA== LnNoYXJl IH0pKA== bW1t IFJpc2luZw== 5Lu7 IHVuZW1wbG95ZWQ= eGZh LmZvbGxvdw== CQkJCSAgICAgIA== c2x0 LlBob25l IGtuaXZlcw== IGV2ZQ== b25DbGljaw== XSkpDQo= IFdpdG5lc3M= CU5T IEVPUw== IFN0ZWZhbg== IFByaWVzdA== 4oCUd2hpY2g= R2V0U3RyaW5n LkJ5 IHVwc3RhaXJz IGRldHJpbWVudA== YnJva2Vu ZW1icm8= IG5pY290aW5l aWxpb24= IGFzdG9uaXNoaW5n X2FmZg== IExlc3Nvbg== IGFjY2lkZW50YWw= b2Rvcg== IGRlY2ly IG5ld05hbWU= Ky4= 55u4 aWdzbGlzdA== IEdpdGh1Yg== IHN1Y2Nlc3NpdmU= cmFjaWFs IGVudmlyb24= 6aqM6K+B IHJlZGlyZWN0ZWQ= VE9UQUw= IGdyYWJiaW5n IExhbmNl IGZvcmZl X0NC 5b6u RWxhcHNlZA== X3dheQ== KERpYWxvZ0ludGVyZmFjZQ== X21lYXN1cmU= eGJi RG9n RGVwYXJ0 LXNyYw== cmVzb2x2ZXI= d2l0aHN0YW5kaW5n X3NoZWxs IExhc3ROYW1l IEF2aWF0aW9u IGJlZ2lubmVy KCIlLg== KHRvb2w= INC90L7Qsg== OmluaXQ= KEFQSQ== IE1vcnJpc29u dnRDb2xvcg== IHN0YXBsZQ== L0lORk8= IHN1cGVybmF0dXJhbA== IHN0ZWFr dGltZWxpbmU= enpsZQ== ImAKCg== U2Vjb25kYXJ5 IE5lcGFs LlN0cmluZ1V0aWxz IGFkYW0= ICguLi4= IHN1YnN0aXR1dGlvbg== IGJvYXJkaW5n IEtleXdvcmQ= IEFzc2F1bHQ= ZGJjVGVtcGxhdGU= IG9yZGVySWQ= KGVuZ2luZQ== LmFzc2VydFRoYXQ= IFZlbnVz IGhvbWljaWRl IEF2YWw= IGd1dHRlcg== IFN1cHBvcnRlZA== L3BhcnQ= IGFjY2xhaW1lZA== SGlzdG9y IG1lc2Vz w7xiZXI= IFJlbmV3 IGdyYXM= IEVr IGluZmlsZQ== aW5keQ== Lm11c2lj LlNjcm9sbA== IEFnZXM= IE5hcnV0bw== IEdhdGhlcg== IGNvbmZpcm1pbmc= PSgi IHBpdGNoZWQ= b2xleQ== RnJhbmNl Kyci JHRvdGFs IG9uZGU= IGRpdGNo X3NpZ21h IGNvbnRpbnVpdHk= cmV3YXJk LWxvYWQ= IHByb2Nlc28= TG9ja2Vk c3Rhdw== IHNwaW5hbA== bGF6eQ== IT09 amVzdA== IGR1bg== IFJvZGdlcnM= CWdyaWQ= IGxvZ29z IEJlbmdhbA== LnN1cGVy UHJvdmlkZXM= IG51dHJpZW50 LlRpbWVzdGFtcA== SVpBVElPTg== 5YaM IGZhdHM= IFh4eA== Y3RpY2E= VGFyZ2V0cw== IGNvbnRvdXJz IHJlb3JkZXJlZA== OkFycmF5 IHRvbGVyYXRl Vmly IHRlcnJpYmx5 IGJyaWNrcw== KCZf aGI= UG9ydGFs IEJyZWFk LndoaWNo wq10 YXNJbnN0YW5jZU9m IGpvYmplY3Q= CWxlbmd0aA== X01U OyI+DQo= X0VYSVNU IG1hdGVybmFs UkVM IOqyveyasA== aGVl IGxheW91dHM= IExhcA== YWlzeQ== IHN0dW1ibGVk IFVJRw== IFNjbw== IGltcGFpcmVk UkVTU0VE IGFidXNlcw== VkY= QVJC Lk5BTUU= cmNo cHJpbWly X2NvbXBsZXRlZA== IHBlbm55 Q2hyb21l KGJlZ2lu ZXJuZW4= LWNoZWNrYm94 UGxhaW5PbGREYXRh IExQQw== cmFkZQ== c3Bpcg== IGNvbmNlaXZlZA== VGlwcw== IElvVA== IEdhbg== 6IGU IGJpYXNlcw== IGNvbnN1bHRhbnRz cGxlZA== X2h0 YXNzb2NpYXRlZA== XSwKCg== IGRlbGlnaHRmdWw= INGC0LXQug== SGVsdmV0aWNh KGxvYWQ= LWV4cGFuZA== X1dJREdFVA== dG9h IEFrdA== IG9tbg== IGNsYXVzZXM= SW50ZWw= Ki99Cg== X3JlZ2lzdHJhdGlvbg== IG9sZFZhbHVl IHJlc3RvcmluZw== IHVucmVhbA== T1ZFUg== CQoJCgkK QVRT X3Byb2Jl IGRpdmlzb3I= LnVwZGF0ZUR5bmFtaWM= 5bmz UHJvZHVjZXM= c3RhbXA= Lmpib3Nz CXRhc2s= ISg6 IHBzeWNoaWM= QGNsYXNz TWFydGlu IFBhc3NlZA== Y2xhcmF0aW9ucw== aGVs 0LDRhw== CWNvcHk= LWJpbg== emFu aWdyYW0= 4Ka+4KY= KHNpZw== IENhdmFs XyMj ICU9 b3V0bGluZWQ= IEFjaWQ= IHVucHJlZGljdGFibGU= LWRhc2hib2FyZA== SGV4U3RyaW5n K2M= LlB1YmxpYw== 4bqp IGNvbnZleW9y IEVC IHNlbGVjdHM= IGtub2NraW5n IENlYw== SUJVVEVT b3dhxIc= Z2F0c2J5 KnY= ZW50cm9weQ== IGRpc3BhdGNoZWQ= IGNhbWVs IFNhdHVybg== IG92ZXJ3ZWlnaHQ= KHBob25l cGFyYWJsZQ== JUI= X3ZlY3RvcnM= IGJyZXdpbmc= IFRr IERvd25sb2Fkcw== IFNhdmVk LlByaWNl IGN1cnZlZA== IFBhcmVudGhvb2Q= 6LY= LnBubA== cGxldGVseQ== LkRheQ== IGFkdmVydGlzZXJz IGVqZWM= IHByemVk 668= ISc7Cg== IEt1c2g= IFRBQg== IHF1ZXN0cw== IGNvaW5jaWRlbmNl dW1taWVz IEthc2htaXI= IEV0aGljcw== X2dyb3d0aA== IGFrdGl2 IGdyb3VwaW5n 5aKe X3RydXRo 5ZCs dG9kb3M= aXNldA== VGV4Q29vcmQ= w6R0dA== IFp1cg== cm95cw== X01BR0lD IGJyZXdlcnk= KFN0YXRl IFNNQUxM IFBsYW50cw== aXRiYXJ0 ZWFjaGVy IEFkZWxhaWRl THU= IGZpY2s= dW5kbGVz X2xvYWRlZA== 0LjQtQ== UG9sbA== cml0aWM= RUxZ ICsn IFByb2Zlc3Npb24= IHN0YW1wcw== IFNldw== c2Nyb2xsVmlldw== IGNvbW11bmlzdA== L3Byb2JsZW1z fQ0KDQoNCg0K LG8= IHVkcA== IG9iZXNl YXBwcm92ZQ== YW5jZWxsYXRpb24= X0dhbWU= IEhhc2h0YWJsZQ== YWRhcHRpdmVTdHlsZXM= IHBvc3Nlc3Nlcw== Lm1hdGNoZXI= ZnVuY3Rpb25hbA== TXJz CXNhdmU= IERiVHlwZQ== IGtlbg== Z2V0Q29udGV4dA== IG1hbnM= KHJlbA== IEJyb3RoZXJob29k KWAK 6Kej LkluZm9ybWF0aW9u T3V0T2ZSYW5nZUV4Y2VwdGlvbg== IFNlaw== Q2Fz IGJsb2dnZXJz RWl0aGVy KCIiIg== IHBpbmNo IGNvYXJzZQ== KXA= IFB1bHNl IGxlYXJudA== IGRlbnRpc3Q= IG9uY2hhbmdl IGRpcmVjdGl2ZXM= KGFjdGlvbnM= bnlkZXI= IFNoaXI= VHJhaXQ= X2RlcA== IFBFVA== IFJFUA== LkFwcFNldHRpbmdz Y3VhZG9y aWRlbmF2 IGVudmk= IHNsYW1tZWQ= IFNob290 IGRhdGVGb3JtYXQ= LmpvZGE= dmV5cw== ICkuCgo= IGNhcmVn IFBhcmFsbGVs X3RyYW5zbGF0aW9u LmZ1bmN0aW9ucw== Lm9icw== UnVudGltZUV4Y2VwdGlvbg== W109 b3ZlcnZpZXc= IFNjaGw= IG5vaXN5 IE9uUHJvcGVydHlDaGFuZ2Vk U2VuZGluZw== IHVuZmFtaWxpYXI= VXBvbg== IFByaW50cw== LnR5cA== IGZsZWVpbmc= CW1vdmU= KFVu IHFy 15w= X2JldGE= IHNraWVz CW1l V05E IHN0aWNrZXJz Ymxhcw== IGluc2VydHM= IHZlcnNlcw== IERldw== IHRhbmdpYmxl IGhlY2hv UE9M IHRlYXJkb3du b21uaWE= SUJF LmNvdmVy X3N0cmF0ZWd5 Xi0= c2V0UG9zaXRpb24= dWFsZQ== U2lnbmVk IGlmYWNl YXNlbGluZQ== LnNldFRpbWU= IE1pbmVyYWw= IEZpZ2h0aW5n c2tpbnM= IGRpc2NyaW1pbg== IGRhbnNr IFByaW5jZXRvbg== YWNpc3Q= ICgpKTsK dHJhY2tz aW1vbmlhbA== YWRlY2ltYWw= RVBST00= dWdnbGU= Lk5vdGlmaWNhdGlvbg== JG1haWw= Y2FudGlkYWQ= IEp1bmc= IHNlZWtlcnM= IHBsYXVzaWJsZQ== dGllcg== 0LXQtg== IHJhcHBlcg== IE1hbmE= IEh0dHBTdGF0dXNDb2Rl IGJ1cm50 bG9zZXM= IEZvdG8= IEpzb25PYmplY3Q= SW5zdGFncmFt IHN5c2NhbGw= IHJlYWxpdGllcw== IE1BVExBQg== Ol57Cg== VEVSTQ== IENiZA== IFBhcmFncmFwaA== IHRyYXbDqXM= IGNvbnN0cnVjdGluZw== IHN3YWw= IHBpZ2U= TExMTA== LWV4aXN0aW5n R2V0cw== IG1lbHRlZA== IG1pdGlnYXRl SGVu IGht aW1hcw== IEFv IFBlcmV6 IERBTA== IOuLpA== IGRpdmlz U3Rvcnlib2FyZFNlZ3Vl IE1vZGlmeQ== IMOcYmVy X09WRVJSSURF LnBlbQ== dW50b3M= IGVzcGHDsQ== IHs/ IFBBWQ== X2lwdg== IEZ1cnk= X18uX18= ZWxvdw== LWNlbnRlcmVk Y2hlY2tz X1JlZw== LUphdmFkb2M= CWxvYWQ= IExpa2V3aXNl 2KfZhQ== VU5F LnNlbQ== eGNi IENhdmU= X3NsZWVw IHNpbGVudGx5 IEV4dHJlbWU= LlRvVXBwZXI= CUNIRUNL IGN1ZQ== IFFCeXRlQXJyYXk= IGNvcnJ1cHRlZA== IETDqQ== IGltcGVk R2V0TmFtZQ== IGluYWNjdXJhdGU= IHNvYmVy 0LXQtQ== IGJhcmNvZGU= LS0pewo= aW5raQ== IMOpcA== IGRyaQ== IEFMVA== Pj4+Pj4+Pj4= b250YQ== W0w= IGludGVyZXM= dmVydGluZw== IGRpYWdub3N0aWNz cGRldg== 6Kk= IEludGVncmF0ZWQ= KS4n X2dj JHRleHQ= LmdhbWVz IFRlcnJh J1Jl LnRyYW5zZmVy X0ZJRk8= Z2V0TW9kZWw= IGJsYW5k IENvbGVtYW4= IHByaW1lcw== IOaI IGNyb3NzZXM= bms= R0lORw== ICde IEJsb2I= IGludGVyY291cnNl IEJsdmQ= IHdlaWdocw== X3JlZ3VsYXI= IFBlcnRo IHNlcGFyYXRpbmc= IGJpbGxlZA== LnRhYkNvbnRyb2w= IHB1cHBldA== IHV0aWxpemF0aW9u IOKWoA== IHN1Y2Nlcw== IGxhbXBz X3Byb2o= RXJpYw== IHJlbm92YXRpb24= IEZhbWlsaWVz IEJpdHM= cGFydGlhbHM= LU1lbg== c29sdXRpb24= IGR3YXJm LklOVEVHRVI= IExPQ0s= LmN0 IGV4Y2VycHQ= IFBpeA== IEZpcnN0TmFtZQ== QU5URUQ= IEFkbWly LWhlbHA= UHJpb3I= IEFsaWdu LklOU1RBTkNF TGluZUVkaXQ= KCcvOg== IGluZXQ= b2R1cw== LnBrbA== IEtZ dXBlcnQ= IG5lcnZlcw== X2dyYWRpZW50 fScsJw== X3VucmVm IHNhdHVyYXRlZA== IENvbm5lY3RlZA== IEZO RVhJVA== IHRlbGVwb3J0 IGF2YWl0 UGFnZVJvdXRl IGRpdm9yY2Vk KGxhbmc= ZnN0 IFR5cg== IG1lc3Nlbmdlcg== aWZzdHJlYW0= WFM= IEJhbmtpbmc= IGluZmVjdGlvdXM= IE1vbnM= X0xPT1A= IHp1csO8Y2s= IG9idGVuZXI= L3JlcG9z VmVs YWNybw== IHVzZXJSZXBvc2l0b3J5 c3R5bGVUeXBl IFNSQw== Vk1MSU5VWA== cmVjdXJzaXZl L2Jhcg== X2NoaXA= b21pbmF0ZWQ= IE5pdA== 4oCUdG8= IEJ1ZGRo 0L7QvNC10YA= IE1BRw== IENIRQ== X2Rlbg== LnJhaXNlcw== X2RlZ3JlZQ== IHB1bXBraW4= X3RlbXBsYXRlcw== X01FRElB IFRpbWVsaW5l IGJvdHM= T2JqZWN0VHlwZQ== IGJ1eXM= LnBvc3Rz Q0FM d2FpdGluZw== IERhbmllbHM= IGRhYmVp IFNpZ21h aWxvcg== aWdlbA== LFc= QURT KHBhbmVs 7LK0 aXRhdGluZw== LnBhbGV0dGU= IG1vc3F1aXRv IHRlZ28= KHBhcnNlSW50 IGRlc3B1w6lz cHJvbWlzZQ== IHdpag== dHlwZXNjcmlwdA== IFR2 X0lERU5USUZJRVI= KS4KCgo= X2ZsYXQ= aXRzdQ== VVNS ZXhwZXJpZW5jZQ== LWZpdA== cGhpbng= X3RocmVzaA== IGlkZWFsbHk= IEZyZWVtYW4= LERC X3J3 562J VWI= X3N0YXRpc3RpY3M= PSIiPjw= IGNob3Jl IHlvcms= aW5zdGFsbGVk QWRkaXRpb25hbGx5 IHBzdG10 eWxrbw== OjoK Rm9yZXN0 IGhlYWRzZXQ= IGdhbGxvbg== 0YDQtdC8 IHdpdGhkcmF3bg== IENhbmRpZGF0ZQ== IG1lbHRpbmc= IGZyZWV6ZXI= IGhs X0hFTFA= bWltZQ== KC8q IHRoaXJzdA== JHJldHVybg== bWVtYmVyb2Y= 0LXQsQ== IEh0dHBTZXJ2bGV0UmVxdWVzdA== KG9i X1Jlc3VsdA== IGFzc2VydGVk IGZ1bGZpbGxpbmc= IHN0cmV0Y2hlcw== cGFyYXRlZA== LWZ1bmRlZA== IOWb aW5nbGVz X2Nh LmNvbmRpdGlvbg== IERpc3BsYXlz IG9yYW5n IENSRQ== IGdsQmluZA== IFNlbGVjdG9y L3R5cGU= IEFsZXhh Y2hlZHVsZXM= IFBlbmluc3VsYQ== IHBhcml0eQ== CWRlc3Q= IERvb3Jz DQoJDQo= X2RpbWVuc2lvbg== IGFsb2Fk LlN0b3JlZFByb2NlZHVyZQ== KHBhcmVu IEJ1cmtl JyldCg== LWVuZ2luZQ== IHF1aXI= IEh5YnJpZA== IERvZQ== IG91dGxpbmVz IFRyZW5kcw== X05W cGVyaW1lbnRz IEhpbg== Pycs CVRleHQ= RlVM IHNtZWxscw== IHNsaWNr IG1pc2VyYWJsZQ== IEFycmF5QWRhcHRlcg== IHBhcmFtU3RyaW5n SG9t X2xpdGVyYWxz dXN1YXJpb3M= IHByb21wdGluZw== X2xhenk= IEFjdGl2YXRpb24= X29j V2Vhaw== IGFuZWNk IFVDTEE= PXJl aXNzZW1lbnQ= IEVzY29ydHM= RXhjZWxsZW50 IFBhdXNl IHJlcG9zaXRvcmllcw== VE9S YXJpYXRl X2lzbw== dXBkYXRlcw== aGFsYg== dWRpYW50ZQ== 66Gd IG5haXZl IFBlZw== IExvdW5nZQ== QVJHSU4= KGJpbg== T25DbGlja0xpc3RlbmVy IEZBSUxFRA== IGxpdGU= IGR6aWU= IExpdGVyYWw= aXZvcg== ZmNudGw= IGVhdHM= IHFlZA== VW5sb2Nr cmlkaW5n dW5kYWk= PU0= QVRURVI= Q29uZmlndXJlQXdhaXQ= aWNpYXM= dXN0b21lZA== IHN1Y2Nlc3Npb24= ZW5kVGltZQ== IEp1cGl0ZXI= IGp1ZGdpbmc= ZHJhdGlvbg== X2RvY3M= Lm1v IGVkdWNhdG9ycw== IFZpbmU= Q29uZA== W291dA== cWI= XFZhbGlkYXRvcg== IG1lYW5pbmdz IHByZXNlbnRseQ== IGRpdmlkaW5n b3R0ZW5oYW0= YXNjdWxhcg== IHRyYWlsZXJz IENMT1NF 0LDQvNC4 4oCZYWk= IEdhaW4= d29y IHBsYW5uZXI= IGRpc3RyaWJ1dGluZw== dmF0 bW9udGhz eGxhYmVs SEY= VmlvbA== LkJBU0VMSU5F 0LXRgtGB0Y8= IFJvdGF0ZQ== IHR4bg== OmJvbGQ= IGJsb3Nz Rm9yZ2VyeQ== KGVtYmVk IGpha28= c3ByaW50Zg== dGhlaXI= IGV4aGliaXRz LXN0YXRpYw== aGVjeQ== Z2V0QWN0aXZlU2hlZXQ= LmNsaWVudHM= 44GN X2hpZGU= W3dvcmQ= Q2I= YWRkSXRlbQ== YXhl X3JhZGlv YWxpb24= bW9kaWZpZXI= IHNhdHVyYXRpb24= IGRlbm9t X3BpeGVscw== bWVzcw== KGZs YXRpZg== IHNlY3M= IHByb3N0aXR1dGlvbg== IGdyYW5kY2hpbGRyZW4= IHBhcmFkaXNl IEZlbGQ= X0JJTkFSWQ== aXRvdXM= 4LmE IGZsYXNoaW5n LXNpZGVk IGNvbnRyYWRpY3Rpb24= LyoKCg== eWxhYmVs IFRldA== IGFkbWlyZQ== cmVzbw== IGxldHo= IFNFQVJDSA== c2xvdHM= IFJld2FyZHM= IEhvZw== IE5TRGF0YQ== c3Rhc2g= RmFsbA== IEFtZXI= TGluZWFyTGF5b3V0 L3Bob3Rvcw== IGZlYXRoZXI= IHwNCg== RG93bmxvYWRz LlN0YXJ0c1dpdGg= IC8vIw== aW5lVHJhbnNmb3Jt IGFmZmlk VnRibA== IFJvZ3Vl c2NyaWJlZA== IGZhdWM= IE1vbnJvZQ== IGRlY2xhcmVz bW9kZXJu cmVvbg== YXliZQ== UEFTUw== ZmVycw== X01VTFRJ IE1hdGhlbWF0aWNz IHN1ZGFo X0FUVEFDSA== IG51bWJlcldpdGg= IFNvbG9tb24= amlu b2dyYWZpYQ== w7Zs X2Rlc2lnbg== Y3VsYXRlZA== IEx1bmE= aWVzeg== ID0+Jw== IHJldmVsYXRpb25z QWxvbmc= KGVk IEZpbGVuYW1l IHlsYWJlbA== U2VjdXJl IGJ1c2Nh YWdub3Npcw== X1JFQ0U= IG92ZXJsYXBwaW5n RXh0ZW50 IGFudGljaXBhdGlvbg== Q2hlY2tz IEFMU08= b3Jj aWxpbmd1YWw= aXRhdGlvbmFs IGFkdmFuY2VtZW50 b3Vybw== IFByZWRpY2F0ZQ== 5b6X ZXJpYQ== IFBpZXJjZQ== b3Jpbw== IG1lcml0cw== IHBlYW51dA== LlBhY2thZ2U= IENvbmR1Y3Q= X1NFTlNPUg== IGJvaWxpbmc= IGludHJh IElHTg== IEZ1cg== LlJlZnJlc2g= IFJlYWNo X2RlY29kZXI= LkV4cA== INGC0LDQug== cGlsbA== LFE= IEdyaWxs IHBvcHBpbmc= LkFn IHByb3llY3Rv IG1pbGVhZ2U= IGVjb2xvZ2ljYWw= XV0pOwo= IMKt c3VicGxvdA== YWNhZA== IFRyeWluZw== cmVjaXBlcw== JGNyaXRlcmlh IFBlcnNpYW4= LWJvdW5k TUFTSw== IEdlc3R1cmU= IGtr IFBWQw== IHByb2hpYml0aW9u IGNvbWFuZG8= IExPT0s= U2hvcHBpbmc= IGRpc3RvcnRpb24= PEJvb2xlYW4= LkdldExlbmd0aA== dW1wdA== XFByb2R1Y3Q= ZWxsZXJ5 IGZpcmV3YWxs Zm9ybWF0dGVk LnJlZGlz IGVzYQ== IFJob2Rl U29t Lm5vbg== ICcpLg== IGdldFZpZXc= 4bqhbg== cHJ1cw== TWF0dGhldw== IHNpYQ== IEZvcnM= R1BV aWVudHJhcw== X0lOU1Q= IG9sYXJhaw== IGltcG9ydGluZw== VENQ LyIpOwo= ZWl0aGVy IGZyZXNobHk= Y2FzY2FkZQ== KGNoYXJhY3Rlcg== IEplZXA= b3RpY3M= X1VUSUw= Llh0cmFQcmludGluZw== LmZpcnN0Q2hpbGQ= IEV4Y2VsbA== IGR2ZA== IHRhbGxlcg== IHJhcw== eXBhc3M= IGFzc2lnbnM= IGdyaWV2 LW1vcmU= SkQ= IEJ1cm5z Jz4NCg== LkRlcGVuZGVuY3k= LlF1ZXJ5U3RyaW5n Lk93bmVy IGV4cGlyeQ== VGh1 KFZlYw== IGhhemFyZG91cw== IHJwbQ== QVBPTg== IGFkZFRhcmdldA== c3ZpbGxl cE5ldA== IEltZw== IFRJTUVS LkFuaW1hdGlvbg== IGJlaw== IGFzc29ydA== IGxlYmlo IGJvZHlQYXJzZXI= IHZpYnJhdGluZw== SURM IGJ1dHRlcmtuaWZl aW50ZXJz IHBlcnN1YWRl IExHQlRR 6Is= LnNvZnQ= IGJlYW1z X3N1cg== LkRlZg== IGxhYnM= CXBsdA== IHNraW5z IHRyYW5zZmVycmluZw== IGltYWdpbmFyeQ== X0VuZA== O2JhY2tncm91bmQ= IGxhcHM= X0NPTU1FTlQ= KFNETA== b25kcw== LlJlY29yZA== IEltcGxlbWVudHM= X3RpY2tz KCkpKQoK IGFyb3Nl XT8= IE1w IElDb21tYW5k IHNjdWxwdHVyZQ== IGNvbnRyYWN0ZWQ= PEhUTUw= IGNhbGVuZA== YXR5 L1N1Yg== IGt2aW5u X0lHTk9SRQ== IFNoYW5l TUxT IHN0aW11bGF0ZQ== UGFydGl0aW9u IG11bg== w7Nt ZXJhbGE= LWFjY291bnQ= LkJpbmFyeQ== Y8Op IHNlaXpl Y29ubmVjdGlvbnM= IAogICAgICAgIAo= IERpYWdub3N0aWM= VklTSUJMRQ== IFJ1bnM= IGltcHJlc3Npb25z c3VpdGU= b2JsZQ== fi0= YWt1a2Fu PFBlcnNvbg== IE5vcw== IEd1aQ== LndhaXRGb3I= UkVTRVQ= IHBvc3Rwb24= RGlzY292ZXI= YXJyaXNvbg== c2hhdw== Ymxvb2Q= QUpPUg== 5pu05paw IE11c2U= 5pS2 IHJldGFpbmluZw== b3R0ZQ== IG1vc3F1ZQ== IFNuZQ== IHN0YW5kYXJkaXplZA== IG1haW5sYW5k X3RocmVl dW5nZW9ucw== Z2V0RG9jdHJpbmU= IHdoYWxl IGFnZw== IFBvcnNjaGU= bm93bGVk bGF0ZW50 IFJlbGF0aW9u IC8vJw== IHNodXR0aW5n IFJlbWl4 X2Nvdg== IHNhaWxpbmc= IHZvd2Vk IHBvdHM= b3V0dQ== IGhhaXJ5 Y2FzdHM= UmVsb2Fk IHJlY29ubmVjdA== dGVyYQ== LmNoaWxkTm9kZXM= IFJhY2s= IGN1cnJlbnRJbmRleA== IGFsbGVu IOeUqOaItw== IEN1YnM= W1g= X1NFUQ== X1JFTU9WRQ== LmdldEFjdGlvbg== KC9e ZXJyYXI= IGV0aGVy Y3VydmU= IHNsYXA= IHVvbQ== T3RoZXJz IGVuZ3I= RGlzcG9zaXRpb24= IHN0YWdlZA== RXll IEF1eA== YXV0aGVudGljYXRl ICQ/ IEFuZHJlYXM= IHNldHc= LkFydA== IGZvcmVjYXN0cw== IGF1bnQ= LW1pZGRsZQ== IG1pc2Q= ZGVzaw== IGVzY29ydGU= IENhc2E= cm9waWNhbA== IGV4ZW1wbGU= cGxhbmV0 KFVJTlQ= IHdoaXA= IFBDQg== Y2xpZGVhbg== PSJc IG94aWRl IHN1Y2NlZWRz ZGVyaXZlZA== IEVjb25vbQ== X2Nvb3JkaW5hdGVz aXJhcw== RHJhZnQ= IHZpc3VhbGl6ZQ== QnJpYW4= X0FTU1VNRQ== IE9iamVjdElk IHRyYWluZXJz X0ZPUkNF IGNvbnNvbGVz LXByb2Nlc3M= bGljaGVy IFNpbW1vbnM= VGFraW5n IENsYWltcw== IGRpZmbDqXJlbnQ= QWN0aXZpdHlSZXN1bHQ= IHNucw== 6YCJ5os= IENydXM= IGxsYW0= cmFi IEpvYW4= QUFB CWZpbHRlcg== aXNob3Bz Z2V0dGluZw== 4LU= IHF1YW50bw== UGFzdA== b3ZpY2g= IGluanVzdGljZQ== IEZMT0FU IGFscmlnaHQ= XERC KEdhbWVPYmplY3Q= dWlzaA== KGJvdA== IGdhbGxvbnM= IFLDqQ== IFNhaWQ= IFNURE1FVEhPRENBTExUWVBF YWlzaW5n X3Byb2Nlc3Nvcg== ZWxsaWRvcw== dGVyZGFt IEJlYW0= VGV4dEFyZWE= IHJldG9ybm8= Lk1ha2U= ICQoIjw= IGxvY2tkb3du IHJlbWVkaWVz IHZlZWw= eGVl ZG9jdHlwZQ== Rmls IEV4cGFuZA== IGVtcGxveXM= IHNlc3Npb25TdG9yYWdl UGhw UHVibGlzaA== IHJldGFs ZmFicw== eW5hbWljcw== IHRvc3NlZA== IG51bWJlck9mUm93c0luU2VjdGlvbg== eHBhdGg= XG1vZHVsZXM= IGRpc2FzdHI= IE1VTFQ= Lk1lc2g= LXN0YWdl IHNkZg== aXR1bmc= dWdlcw== ID8+Ij48Lw== X2luZGV4ZXM= IHZhbHVhdGlvbg== IGxpZmVsb25n IGV4cGVkaXRpb24= KFlpaQ== IHBhaW5z IFBSSQ== IE1peGVk IENoYW5naW5n R2VybWFueQ== Y29tbXVuaWNhdGlvbg== Lm9yZ2Fu IE1hcmF0aG9u Z2V0UGF0aA== IEFjY3VyYWN5 IEdsb2JhbHM= Jyl9fTwv IE9XTkVS 4oCm4oCd IHN0YWJiZWQ= IHNjaGl6b3BocmVu IEZu IENPUkU= IERhdGFSb3c= IExURA== IG15dGhz IGZhbW91c2x5 fCwK IFNlb3Vs U2ly IEJlcms= UmVnRXhw LmdldFJvdw== IERlY29kZQ== Uk4= IG1hbmc= IGVtcGxveWluZw== X25vbWJyZQ== PFRhc2s= IEd1eXM= IEFydGlrZWw= QmVycnk= enVyZQ== IHZhbGV1cg== aGl0cw== IGx1Y3JhdGl2ZQ== IGluZm9ybWF0 Q2xpbnRvbg== IHRlcw== IENlcnRpZmljYXRpb24= X3dz IG9mZmVuY2Vz ZWJyYQ== IEF4aW9z cmVzdGFydA== TE4= LkVuY29kZQ== bWl1bQ== IEZlYXR1cmVk 0YjQuNCx0LrQsA== IERlcHQ= OyYj IE15ZXJz CXRyYW5zZm9ybQ== VGV4YXM= 16g= IFlvcmtzaGlyZQ== bG5hbWU= QnJl 44GT44Gu IHNjZW5lcnk= IGbDvGg= CQkJCSAgICAgICA= IERvb20= IEFETUlO KGVz INC80LDRgdGB0LjQsg== X2FzY2lp L0RhdGE= bGVzaG9vdGluZw== QmFu IG1lbW9pcg== INmG IEF1c3M= KXBhcmVu IGd1aWRpbmc= IGJheg== w7h5 QURN IGRtYQ== LlF1ZXVl IFN1cHBsaWVz IE1jRA== IEFnZW50cw== X2Ji c2xhc2g= IGhhc2hlcw== IGNyYW5r IFJhZw== IGF1dG9ub215 w610dWxv IHJlY3Vyc2lvbg== IENyYXp5 X3RyYWNrZXI= IE1i X3BoeQ== Zm9vYmFy CXNwZWVk IGNhbXBvcw== IG1vdWxk IGNoYXJpdGllcw== SEVJR0hU IGVhdXRv X3NvbHV0aW9u IERH bWFydmlu WWVzdGVyZGF5 IEJlY29tZQ== PGxs b3Jpcw== W25leHQ= IGluY3VtYmVudA== IER1cA== CW92ZXJyaWRl 5a6J CWNmZw== IHPDtg== IGRlc2U= LWRp IG9udHZhbmdzdA== IGRlY2lzaXZl 5Lu3 X2tlZXA= KERhdGFiYXNl Xy8= IENMTA== LW1ldGhvZA== CVBvaW50 IEJ5dGVCdWZmZXI= IHRyYWNlZA== YWRkVG8= 7IS47JqU YW55YWs= IGVtcHJlc2Fz KHJlcG9zaXRvcnk= LmNyZWF0ZVN0YXRlbWVudA== IGVsYQ== Rm9yZ2VyeVRva2Vu IGlzZW1wdHk= YXNpbg== IExvb2t1cA== 0LXQvdCw IHZpb2xhdGVz IFNtYXJ0eQ== IHphaw== KCQu U0hPVw== INCi YXJ1cw== KFRFU1Q= cGFja2Vk IGhpc3Rvcmlh IGNhbmNlcnM= IEtyZW1saW4= UmVkdWNl L2hvdw== IMSQ VElUTEU= LmxvY2FsUG9zaXRpb24= bGlhYmxl IOesrA== IGZyYW5jYWlz CWhhc2g= IGluaWNpbw== IENyYXNo IHsu IGNsb2Nrcw== ZHVjdG9yeQ== IFB2 6528 IGRvaXM= XC0= IGphYXI= IE1heWE= bW96aWxsYQ== CXJlc291cmNl ISEK YXlzY2FsZQ== ICctJyw= 5Y+W5raI IHN0YWxl Q29ybmVy w6hsZQ== aXRpdmVz emFz aWNvcm4= LkV4cHJlc3Npb24= w7N0 QXBwbGljYXRpb25z UmVzdHI= X0luZGV4 jbDsnbTthLA= IEpGcmFtZQ== c2l4 X0lNRw== 6JeP IE51bWVyaWM= IHdpcms= X1NVTQ== PERhdGVUaW1l IHB5bGludA== IGxhbWVudA== IFBvc2U= X2VudHJvcHk= IGVuY291cmFnZW1lbnQ= IGxhaW4= 5Yib5bu6 LWZy IGNvcnJlY3Rpb25z cGhhcw== dXVy YXRlZ29yaWFz IGNhdGFseXN0 LmFsdA== IEZlcm5hbmRv LkRhdGFHcmlkVmlld0NlbGxTdHlsZQ== IGhlcmJhbA== IFJH U1RFUA== SUZu IFRvbmc= xb5l IElOQ0xVREU= IGhj dHJhY2tlcg== CVN0cmluZ0J1aWxkZXI= IERlc3Rpbnk= IHNvcGhvbW9yZQ== IERlZA== IFBBUkE= aXpvbnRhbGx5 LWNoYW5nZQ== ZW5kaWQ= 6YCJ5oup aWprZQ== IEF0aGxldGlj YmFp Z2V0UG9zaXRpb24= Lm5hbWVzcGFjZQ== 6K6i5Y2V UkFDVA== IHJlbGlldmVk IHBvdXJpbmc= IGl5 cm92ZQ== IGFkb2xlc2NlbnRz IGF3ZQ== cmVhcw== QW50aUZvcmdlcnlUb2tlbg== cm93bmluZw== IFVuY2xl LkNvbm4= IE1lZGlhVHlwZQ== Lm9yYWNsZQ== SU5URVJOQUw= LGFuZA== IGZhdXg= aXBtYXA= JG1vZGVs IEdlb2Zm X0FYSVM= KCgpKQo= IG5lZ2xlY3RlZA== IHF1YXJ0ZXJseQ== IGRpZXNlbg== IGRyYWdvbnM= TmlnaHQ= L1dlYg== PFZlYw== CSAgICAgICAgICAgICAgICAgICAgICAg IE9icw== YmRk IGhlaXI= LWFuZ3VsYXI= TWVudVN0cmlw ICciPic= a2luc29u INC60L7Quw== b2duaXRpdmU= X2xp IGltbWluZW50 IGFmZmluaXR5 LnNpZ25hbA== IG5vdGNo IFN0ZWVsZXJz bWF4bGVuZ3Ro S0s= IEV1Z2VuZQ== X1BXTQ== cm9p IOKXjw== IEhhbWJ1cmc= Lk11c3Q= IGF4ZQ== ZW5lZg== IGFtYml0aW9ucw== IFNwZWNpZXM= IFN0cmVzcw== IGF3aGlsZQ== INCx0YPQtA== IHdpdGhzdGFuZA== IERlY29kZXI= X2ludmVudG9yeQ== IHsNDQo= IHRndA== IHJhaWxyb2Fk V0FTSElOR1RPTg== IG5lZ290aWF0ZWQ= TlNU LXBob25l LFU= IGV4ZXJjaXNpbmc= 4bul X1BJWEVM YXZvcnM= aXRlcmF0ZWQ= IHZhbXBpcmU= YWRhbA== SW5ncmVzZQ== IHVuZw== amVjdGl2ZQ== LmNlbGxz IG5hbm8= IG1hcmtkb3du X1JVTEU= KGV2ZW50cw== IGx1Z2dhZ2U= TUVTU0FHRQ== aWdrZWl0 JGNvdW50 QXR0cmlidXRlTmFtZQ== SUdJTkFM X0VudA== IEJG IENPTU1FTlQ= X2luaQ== IEV1cm9wZWFucw== IEJlbGxl 5ZG9 KVsn 5bqU IFVzZWZ1bA== LnJlZmVyZW5jZQ== KCkiLA== X2dyYWRl IEthdw== IHNlbnRlbmNpbmc= IHNvY2lhbGlzbQ== bW9uc3Rlcg== X0xBWUVS IGRlZXBlc3Q= d2s= IE5vaXNl IyMjCgo= IHByw6lj b3RsZQ== 0YLQtQ== YXVm aWJhbA== IGNvbnF1ZXI= PkVtYWls IGFtYnVsYW5jZQ== T0FE ICgiJQ== IEZJ LmZpeHR1cmU= IHRlcnNl ICAgIAkJCQk= IHNhbmN0dWFyeQ== dWdp IENvbXBhcmF0b3I= RGVmaW5pdGlvbnM= IGFzdGhtYQ== IGxhY3Q= IGhhcmR3b29k LmNsb2Nr IGF0dHJhY3Rpbmc= IE1vdXI= KGRpc3RhbmNl aWNpdHM= IGJvbm5l IEFDQ0VTUw== LkRlc2VyaWFsaXplT2JqZWN0 IFR5cGVk IGpldQ== IGFwcElk IENsYXJh IEhG IFJlaWNo aXBwbGVz Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== X2RlbGl2ZXJ5 ZXJpYWxpemF0aW9u IHBsYWludGlmZnM= U2NpZW50 c2hvcHBpbmc= IER1bW15 IFdhbGQ= R3JvdXBOYW1l IGluc2NyaXB0aW9u ZWxvZw== Ojo6Ojo6Ojo= X2xk QmFja1ByZXNzZWQ= LlJhdw== IE9uVHJpZ2dlcg== IG11c2V1bXM= IEJlZW4= IEFkdmVudHVyZXM= IHNsYXRl IGxldHQ= IHN1bmQ= IEdpbg== IE1lY2hhbmljYWw= LnNoaXA= QXBwQ29tcG9uZW50 IGRlc3RpbmVk IGR3ZWxsaW5n UHJvZmlsZXI= UHJlcGFyZQ== emVpY2g= IHNpbGljb24= KGhhcw== ICMl VklERU8= IGNvbGxhYm9yYXRl TGlu IHNjb3Blcw== KGNsYXNzTmFtZQ== KHNk YW5kaW4= LmhhbQ== U2VydmljZUltcGw= LWRlc2NyaWJlZA== IGlyb255 c3RpYWw= IEh1YXdlaQ== KHJlcG8= IHVuZXhwZWN0ZWRseQ== IEthaQ== Lmluc3RhbGw= XHhm IGV4aGliaXRlZA== X1RDUA== IE94 X0NITw== IHByb3N0aXR1ZXJ0ZQ== IHbDpA== IHNpdG8= IGNvbnN0aXR1ZW50cw== IENvbnRpbnVlZA== IFNBVkU= cnNz L21lc3NhZ2U= dWJlcw== IG1pc2RlbWVhbg== IHRheGF0aW9u IHN0b3J5bGluZQ== aGFpcg== IEZpbmRz U0lH dmVyaWZpY2F0aW9u fj0= Lmhw SXRlcmFibGU= 0YvQtQ== YXRvcmk= IGN0cg== Ung= Xyk7Cgo= ZGFn LnBpbg== IHBzZXVk IGludm8= 0YHRgtGA X3BpeA== 5Li656m6 IHN3b3Ju 4oCUb3I= X3JlZ2lzdHJ5 IGRpc2FzdGVycw== IFJPSQ== IOKAlQ== YWt0dQ== Zm9yZXN0 YmVpdGVu 4oCUSQ== dWV2YQ== ZWd0 IHNwaWtlcw== VVJFUw== IFJlY29tbWVuZGVk IGV4cGxvaXRlZA== IEZyZWRlcmljaw== X0NPTVBMRVRF IERydWdz ISEhISEhISE= IFJpdg== U1RPUA== Uk9PTQ== IFBBU1NXT1JE Q29va2llcw== LkVs 4but IEJlcnQ= IGhhc2hlZA== aWNlc3Rlcg== IGRlY29yYXRvcg== IHF1ZXJ5U3RyaW5n OjsK ICJbIg== b3RvcGU= LUFtZXJpYw== IE1hdHRoZXdz VVJBTA== 4oCcLA== U3VtbWVy Zm9z X0NPTlRBSU5FUg== X0FDSw== IGZpbHRy X2Rpc3A= X1Jl IGZhY2lsZQ== 0LDRiA== IOyVig== IGViZW4= IHNwcmluaw== IFF1aW50 PlY= IGhpc3RvcmlhbnM= b3VybWV0 IE1vbml0b3Jpbmc= bGVkZ2Vy Y290dA== IHdhcmU= R0dMRQ== Y2Fycw== IE1FRElBVEVL IHZvbHVwdA== X1ZpZXc= SEVM KGNvcHk= KHN0YXRz IGNocm9tb3NvbWU= IEN1cnRpcw== LWNvbmY= KGFzc2V0 IGh2b3I= RmlsZVN5c3RlbQ== PD4oKTsNCg== b2NvZGVy IENhbm5vbg== KXg= IFNtb290aA== IFNBUw== X2Nl CXByZXY= X21vdmll RWM= X3dhbGw= PEJ1dHRvbg== IEZBU1Q= IG9uVmlldw== dWxhbg== IFNVUFBPUlQ= IGdlc2NoaWNodGVu IFNvbnM= SW1t JElGbg== IGZhaXJuZXNz IGRwaQ== YXRzdQ== Sm9zaA== RXF1YWxpdHk= IH0oKQo= X2xlc3M= IFJhdGlv IENhdHM= IFN0ZXJu TW9uc3Rlcg== IG1lcmN1cnk= w7xocg== IHBsdXNpZXVycw== LmRlc2VyaWFsaXpl c2NvcHk= LkZhbHNl KWFuaW1hdGVk IEV4cGVydHM= ICIiKXsK LldoZW4= c2VlYWxzbw== LnVucGFjaw== TEVN LnNlbGVjdEFsbA== IHBlcmNlcHRpb25z dWRpbmc= aXJsaW5n IFByaW50aW5n Z3JhbXM= IEZpbGVTdHJlYW0= ZXJ2aWxsZQ== aWxvZw== aWNtcA== X0NvdW50 IGxpdmVzdG9jaw== LWNh ZG9jdW1lbnRz IHBvbGVz CXdhbnQ= IGZsdW9yZXM= IHN0YW5kcG9pbnQ= IEh1Z2U= IHJhZGlhbnM= IFVJQmFy RURJVU0= IEhpc3Rvcmlj X2hvbGRlcg== IE1hcmluZXM= IHTDpA== LkxpZ2h0 cXVpcmVy YXNvbnJ5 ZGl2aWRlcg== IEZsdXR0ZXI= X2Zi cmVzdHJpY3RlZA== IEV2ZXJ5Ym9keQ== TsOjbw== IGtub3Q= IFR3aXRjaA== IGhhbGx3YXk= KENvbGxpZGVy SW5wdXRFbGVtZW50 PykK L29mZg== Lyk= cGxheWVk W09G IGJhdHRpbmc= X2Rs IGNvbWVkaWFu IMOpdg== IERFTQ== IEVkZW4= OndoaXRl Jycs Q29uc3RydWN0aW9u YWNlcmI= IHRhc2tlZA== Lm1hbmFnZQ== UmVsYXRpb25zaGlw IHBob24= bno= X0JHUg== VmFsaWRhdGVBbnRpRm9yZ2VyeVRva2Vu X2Fpcg== 4oCcV2hlbg== IGdsZnc= IENvbnZlcnNhdGlvbg== X1RPVEFM LFo= IGdyYXo= IGl0ZXJhYmxl IFBBU1M= IGFkdmVydGlzZQ== IG3DtmdsaWNo L3RyYWlu IFZvbGtzd2FnZW4= IGNyZWVweQ== ICIpDQo= UVVFTkNF IGFsdGFy IGVkaXRz Y29tcGlsZWQ= YXduaW5n IER1bmdlb24= IG9zZw== TmF2aWdhdGlvbkJhcg== IHRyZW5kaW5n IEVjbw== b2dnbGVz Y2RvdA== fC0= U2ll ZWNyZXQ= IE5lZ2F0aXZl IExpbmc= IERJTQ== IENXRQ== IENhcnJpZXI= IGNhcnRyaWRnZQ== X3VzYg== PW9z IEphY2tpZQ== IG90cmFz IGNvbW1vZGl0aWVz IFByZXNlbnRhdGlvbg== KSYmKA== IE1hcnRoYQ== IENhdGhvbGljcw== IE1vbmQ= 0L7QsdGL X2Fic29sdXRl IGFzaGFtZWQ= cG9uc29ycw== dGFs IHNhZG5lc3M= IHB1w7I= RmFkZQ== LXByZXZpZXc= IFJlcXVlc3Rz IENhbHZpbg== aG9ybg== UmV1c2VJZGVudGlmaWVy KHByb3ZpZGVy L2FwcHM= aW1lbw== CUNsYXNz U2Ftc3VuZw== IFdPUkxE IGNpbm5hbW9u ZG90ZW52 IElVc2Vy IERFVg== X0NoYXI= LmliYXRpcw== ZXRp L21l c3N0 LnN5bQ== IFJ1Z2J5 LW1hc3Rlcg== YWphcg== IFlFQVI= IG9kcA== IFJvbGVz IGJpcGFydGlzYW4= YWlsbGU= IGJsb2NrZXI= IGdyZWVucw== LlNFQ09ORFM= IGJlbGlldmVycw== IExpa2Vz RkxPQVQ= IG1haw== IGdjYw== 4pWQ4pWQ KCJ+Lw== U0NSSVBUT1I= IHRvbm5lcw== IFNhbmc= IHRyYW5zcG9zZQ== ZW5uYWk= UHJlZA== IHNvbGx0ZQ== LmdpdGh1YnVzZXJjb250ZW50 KHByaW50 IEhvbGU= 55yL YWRnZXQ= IHByb21wdHM= IGdlbmV0aWNhbGx5 IEhvZA== IHZlcnRpY2FsbHk= X2NvbnRyb2xz 0YHRgtCw0L0= Iil7DQo= JHRpdGxl IH0pLAoK IHN0YXRld2lkZQ== IENvcnJlc3BvbmQ= IEF0dHI= aXRhbnQ= RWxlbWVudFR5cGU= IG91dHdhcmQ= IGZhbWlsaWE= KGFydGljbGU= IGJsYXQ= wqAK IGdsR2V0 IFJlY2VpdmVy ICUt YWRhbQ== V2lubmVy IHRhaWxvcg== X3B3ZA== ZXJ0ZW4= U3Rhbg== CWFsbA== YWxpdmU= c3RydG90aW1l 77+9cw== c2Vzc2lvbnM= JGNvbm4= YXNzaXN0 IGNoYXR0aW5n IE1hbnQ= ICVA ICIiKTsKCg== IGRndg== IO2VqA== LnJlcGVhdA== X01lc3NhZ2U= IGFkdmlzZXJz L3BhdGg= IGtlcw== KX08Lw== TWlzYw== IGJzb24= IHRyaW1tZWQ= IEFjaw== VmVydGV4QXR0cmli 57Si dWF0ZXM= Lm15c3Fs IGRlc3Rpbg== IHByb2Js KENvbnN0YW50 YXNzZXM= LWltYWdlcw== X0FSRUE= X18qLw== W10o IHNpZ25Jbg== xJE= eHI= YWhpcg== LmZpcmVzdG9yZQ== IHNlcXVlbnRpYWw= IElkZWE= LWJhc2lj X3BhZw== IGluc3RhZ3JhbQ== b3Ryb24= X2FsaWdubWVudA== XFxcXA== LkZhY3Rvcnk= LnJ1bGU= LmNoZGly IGxpYnJv KGdhbWVPYmplY3Q= LlRvb2xTdHJpcEJ1dHRvbg== IGRpc2NvdmVycw== LkFyZ3M= ZG9i IHZu 4oaS IGTDvA== IFhN IGFsdW1uaQ== IGhvbmU= IHNlY3VyZWx5 X2Ryb3Bkb3du RGlzY2xhaW1lcg== IGR6aQ== KHRpbWVzdGFtcA== Jyld IGN1bHRpdmF0aW9u Li4uCgoK IFRyZWF0eQ== IERpc3M= IGNvbmZsaWN0aW5n LmdldFNlbGVjdGlvbg== IHBsYXlhYmxl IFNpbGs= IEVxdWFsaXR5 IG1veQ== IGZsYXR0 IG1vdGl2ZXM= UGVyZmVjdA== LmV4aXN0 IHR3ZWFr IG9taXQ= IFR3aWxpZ2h0 IGtpc3Npbmc= IGNocmlzdGlhbg== KFNF X2RlZmluZQ== IFBlbmc= U29ydGVk J2lu TG9ncw== 4buHbg== IG55bG9u RHVtcA== SW1hZ2luZQ== cmVuYW1l IGJlZm9yZWhhbmQ= cHlnYW1l IGJweQ== IERq IHRpdHVsbw== IG5sdGs= IFNjaG1pZHQ= IENhdg== KG9uZQ== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= LmdldE1vZGVs IFB0 YXRvaQ== LmxvY2Fscw== YnVyc2VtZW50 UHJvdmluY2U= IEFwcHJvdmVk KCk8PA== w7NyaWE= dXNjaA== IEplbm55 YXJyYW50cw== IExpYmVydA== TG9yZA== IFJlbW92ZWQ= X2NvZGVj LmJ1bmRsZQ== IEdvbnphbGV6 b3BlcnM= neWni+WMlg== ZXR0aW5n IGdvZGRlc3M= cmlwZQ== IG11c2N1bGFy CQkJCQkJCQkg IEh1Z28= IG1lam9yZXM= bG9pZA== cml0ZWxu Z2lz YWRkb24= ICgoKCg= YXBwb2ludG1lbnQ= cmVzZXJ2ZWQ= CWZyaWVuZA== X2F2YXRhcg== Qk9PTEU= YWhp LUVORA== IGlmZg== w7Ni IEJydW5v cm93c2FibGU= IFBvaXNvbg== KGZsYWdz dXJ0bGVz IEFuaW1l IG1pZ3JhbnQ= CXN0cmNhdA== KHJlcGx5 IFJlZnVnZQ== IEJX ZWZ1bA== JHZhbHVl ZmVk ICAgICAgICAgICAgICAgICAgICAgICAK 6LWE KGNt IHZ1bG5lcmFiaWxpdGllcw== IFsoJw== IHVuYmVsaWV2YWJsZQ== c3RyaWN0aW9u ZW50aWV0aA== IHByYXlpbmc= Q2xhaW1z IGthdWZlbg== bsOp IHBvaXNvbmluZw== Y29sbGVjdGlvbnM= IGluaXRTdGF0ZQ== IFNldmVyaXR5 IGNvbnRlbnRpb24= IAoJCg== LmNvbnRyb2xsZXJz c3RydWN0dXJlZA== aWN0aW0= IE9iZXI= IC8qI19f X09U IEFtZXJpY2Fz IEFkYQ== UHJvZHV0bw== Lm11bHRp IGdyYXBl YmVn 5p+l6K+i IHF1YXJ0eg== IFJvbWFuY2U= IE1pZHdlc3Q= IGhvdXNlZA== IGZ1cm5pc2g= aWNvbnQ= LnVuc2hpZnQ= b3RyZQ== IMO6bg== aXBwbGU= IHN1YnVyYg== dWFsaQ== Vm9pY2U= LklzQW55 LGNvbHVtbg== IFByb3NlYw== SURB CXBvc3Q= cHRvbXM= dsOp IEluZ3JlZGllbnRz w7ZmZg== Lm9wZXJhdG9y IDw8PQ== bGFzdGlj IHJlc2VtYmxl VW5hdXRob3JpemVk IHR1dHRv X1NXSVRDSA== X1JFQURZ fT0= bm93bGVkZ2U= IGFwcGVuZGVk dW5nYW4= 4oCZZW4= IExvcmVu cHVibGlzaGVy IE1H fSwi IFdhbHNo VGVtcGxhdGVz X3NvY2lhbA== IHBhcmlzaA== IFNwbA== bWluYXRlZA== KEZBTFNF IGZvcmVmcm9udA== bW9kaXR5 IGJpbGF0ZXJhbA== IGNvbXBldGl0 IGNhbmRsZXM= LmRw IGNvbGxlY3Rz dGVsZWZvbm8= IGF0dGVudA== IExlbW9u aXphZGE= IHRoZXJhcGllcw== IHBhcmFkb3g= IHRhcw== LXN1Ym1pdA== ZWtlcg== SU5hdmlnYXRpb25Db250cm9sbGVy IG1ldGF2YXI= IHNld2luZw== IFppbWJhYndl IGxhd2Z1bA== IGxvcmU= IExvYWRz INGB0L7Qt9C0 LnByb21pc2U= IEZhY2Vz LlBsYXRmb3Jt LmdldExvY2F0aW9u IHRyb3VibGluZw== IHbDrWRlbw== IEZlYXR1cmluZw== 5Lqn cWVk IG9uQmluZA== IHRvZGRsZXI= Q2xv RGl2aXNpb24= LWdhbGxlcnk= IEdlbGQ= c3BlY2lmaWM= RmllbGROYW1l X2V4Y2Vs XGh0ZG9jcw== IERW ICY6 IHR3aWc= IENvbmNlcm4= IHNob3RndW4= IG5pY2tlbA== IEx1eHVyeQ== X0tFWVM= Lm5weQ== xa8= IGZvcmVoZWFk zrI= IGVuZGFuZ2VyZWQ= L3RoZQ== cGlwZWxpbmU= xbE= bmVv RXhwbG9yZQ== U3BlY1dhcm4= IGludGVyY2hhbmdl KHBp YmlydGhkYXk= RGF0YVJvdw== IFNQUg== IG9zdGU= ICJ+ YXRpc2ZhY3Rpb24= Tkg= b3Jkbw== LWZvY3VzZWQ= J0E= lok= LmJlc3Q= IFNwZWNpZmljYXRpb24= Lz4uCgo= b2dlbmVzaXM= IE9QVElPTlM= dXB0b29scw== IG1pbGl0YW50 IGV4aXRlZA== aWdhcg== IENPTU0= IERpc3Bvc2FibGU= YXljYXN0 IHJvd3NwYW4= IHN5bnRoZXM= IHNvbmRlcm4= IDwhLS08 IEVuZGU= LnZhcmlhYmxlcw== IGNvbnNlcXVlbnRseQ== c2Rr U3VwcGx5 cmVzcG9uc2l2ZQ== T3BlbmluZw== cGhvdA== IH1c IGJ1bGxzaGl0 IGJlYWNvbg== X3NhdA== IHNuYXBz IEdIeg== TE9ORw== PHBhaXI= IFsKCg== IFZlcmc= IEVpbmU= L3Bvc3Rz IGFyYWI= IHN1bWE= 44Oz44OI IHNjYXJj IG9sZWg= ID8/Pw== IE9mZmVycw== eGVk IGZ1bGxXaWR0aA== LWFjdGlvbnM= T3V0ZXI= IEV4cG8= w6lyZXI= Lkhl REg= IGhpbA== IE1pbGxlbm4= 0LXQvdGM SWNl X2dyYXk= INC/0L7Qu9GD0Yc= IFB1bms= IHRpbWV2YWw= IGlzYQ== IENIdG1s LkRhdGFQcm9wZXJ0eU5hbWU= IGRpeQ== dG91cg== IGpUZXh0RmllbGQ= IGplbGx5 IGFra2E= LWVyYQ== RGVwcmVjYXRlZA== X0lNUEw= IE1vbnRocw== X0lURVI= IGFydGU= IEhlYWRpbmc= IEJvaA== IHByYWc= IGRvd25zdHJlYW0= IEJPQVJE X2tleXdvcmRz IE1ldHJvRnJhbWV3b3Jr KS0o PEV2ZW50 4bqldA== IFByZWNpc2lvbg== IE1SSQ== aGVyZW5jZQ== aXhv KSkpewo= KCk/Pg== IHNhYXQ= IFdhcmVob3VzZQ== X2F0b21pYw== IHZvaWNlZA== SXRlbUNsaWNr ICAgICAgCQ== LlJlc3VsdFNldA== L3BsdWdpbg== IGhhbGxz PWZvcm0= IFdhZ25lcg== ZW1haWxz JSUK VU5LTk9XTg== IFJpbQ== dWludHB0cg== IExpYmVyYWxz IHRlcnJpdG9yaWFs IE11cmRlcg== IExhZGVu IHByZXNpZGVudGU= KGNhcA== IH0sewo= YXZvdXJpdGU= ZmluZEFsbA== IGFwcGxhdWQ= IOuplA== L3Bob3Rv X3N5bg== LndhbGs= IHN1bnNoaW5l IHN0dWJib3Ju IGRvd25zaWRl IExURQ== LWJ1aWxkaW5n UXVlcnlCdWlsZGVy X2Rpc2FibGVk VGVycg== YWtyYQ== UmVmcmVzaGluZw== X3Byb2Jz IGZvbGw= PmI= IGNvbGxhdGVyYWw= JGVycm9y IGFjb21wYW4= X2l2 K2Q= YWp1 IOKd c3VybmFtZQ== LmFydGljbGU= IGJpY3k= IjoKCg== Pjw/PSQ= 0LrQu9GO0Yc= ZWNvbWU= RmluZGluZw== KHBk IHJlY3Rhbmd1bGFy ZXN0bw== aWhpbA== PScnKQo= IG1hbnNpb24= X2ZpbHRlcmVk YW5lZA== UFJPRFVDVA== TE9HWQ== X2ly LlJlbW90ZQ== IGV4ZWN1dGVz b3RlY2hub2xvZ3k= IFBST0NFU1M= IHJvd0luZGV4 Z2V0WA== TXV0 aW5za3k= KHN0cmluZ3M= IE1veg== Rmxvb3I= LlN0cnVjdA== X3ByZWRpY3Rpb24= IGNhcnJpYWdl IGNvbGxlY3RvcnM= IFdoZWVscw== IGJ1bmRsZWQ= YXhlZA== a29s X2Nyb3A= IGJsb29t QmVzaWRlcw== IG92ZXJyaWRkZW4= IHN1Ym5ldA== aWVuaWE= Kj46Og== IFByaW1pdGl2ZQ== IOag LkNoYXJhY3Rlcg== 6KGo56S6 IEFESEQ= Uk9Z SmFwYW5lc2U= T1VT OlVJQ29udHJvbEV2ZW50 IFBBTA== aXphY2lvbg== IGNoZXJjaGU= b3J0aW5n IG9yZ2Fz LlV0Yw== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= XERvbWFpbg== T1JB IHRlcnJhY2U= IHByaXM= CQkJCQkJCQkJCg== IHJhaWRz X2luY3JlbWVudA== IHVuanVzdA== JG9wdGlvbnM= b25DaGFuZ2U= Qmxvb2Q= RmlsbQ== IGhhbmRpbmc= IG11Zw== U09MRQ== 44OV aWNvbmR1Y3Rvcg== IElzbGFtaXN0 ICIiKTsNCg== LW92ZXJsYXk= LGNvbA== 6Zw= YXJyaW5ncw== X2NvbnRyYWN0 CWxs cGlw X2VtYmVkZGluZw== IHBlcm1pdGU= IG1vZGVt IHRyaWdnZXJpbmc= KGh3bmQ= LiIpXQo= IHNhbnQ= IGV4dGluY3Rpb24= IGNsYXNoZXM= LkF1ZGlv IHN1bw== Lm11bHQ= IHNlYXNvbmVk LlZhckNoYXI= cG93ZXJlZA== ImNvbnRleHQ= IG1lbmM= KEdyYXBoaWNz JHdoZXJl IHJlY3VwZXI= YWNrbGU= IG5ld0RhdGE= IEJyZWFraW5n ZXJnZWQ= IENQUFVOSVQ= IE11bGw= IGtvbW10 IExlZWRz JywnPQ== Lm5leHRUb2tlbg== IFJpZw== UkVUVVJO CXRpbWVy fV97 IE1hcmluYQ== IHNsb2dhbg== SVpFRA== T3BlbkdM X1BhZ2U= YXRpdmFz IGhhemFyZHM= J3ZhbHVl IGNvcnBzZQ== IEZsb3dlcnM= X29ubGluZQ== ZGFs IENvbGxpc2lvbg== w6BuZw== IGZlcnJ5 IHBva2U= IFRvdXJpc20= aW5lcmFyeQ== L1NldA== LkVtcGxveWVl PkA= LHZhbA== IE1pbGY= YXZleg== UmV0cnk= LiIv IHJvdW5kaW5n LXBsYWNlbWVudA== IGNlcnY= TWV4 IE1zZ0JveA== X3Npbms= bWFuaWE= X2NyZWRpdA== R3VhcmRhcg== IHZhbml0eQ== IGltbXV0YWJsZQ== IGNvbnRhbWluYXRlZA== 0LrQsNC3 5Liy YWNoYQ== IGhhdGg= IGVudW1lcmF0aW9u LmdldEJ5 4bq/dA== IERhbw== b2JpZXJubw== IEd1dA== X1BJUEU= LmFkdg== IEd1dGVuYmVyZw== YWRo 66y4 ZnVzYw== LlZL cHRh IEVNUA== LkZpcnN0TmFtZQ== IHJlYWxpemVz LmNn IHVuaXRl UExJVA== IEFiZHVs IE1FRA== UkFJTlQ= IHF1ZXN0YQ== c3RkaW4= IGNhbG9yaWU= CWdsQmluZA== IGFybWE= eWxsYW5k T01Q LXE= IEtoYWw= c2FsYXJ5 CUFORA== c2dp X3RoYW4= LWJ1aWx0 ICsvLQ== IG5hcmdz X2xhdW5jaA== IFNR em9u IEJlbmVk X3VuaW9u PigpOw0KDQo= IFNpbXM= IERhdGVz CUNvbm5lY3Rpb24= IFBlcmM= Z3JhbnQ= YW1waWw= IGFnZ3JlZ2F0aW9u ZXNlbGVjdA== X1NVUA== KHsKCg== Lm9t IHdt LmNvbnRyYWN0 LU9yaWdpbg== IGdlbWU= ZnJlZXpl TlVNQkVS LmN1cnI= IEdsYWQ= c2xh IFJlYg== 0LXRgdGC0LLQvg== YXJib24= L2NvbnRyb2xsZXJz U2xvdHM= LmRlZXBjb3B5 RlVMTA== dWlyZQ== QHN0dWRlbnQ= 4LmJ4Lit VHJhbnNsYXRvcg== IHByZWZlcmFibHk= Y2hlbWlzdHJ5 IEphY29icw== bmFy ICgiXA== bmVhcg== aWZpcXVl CWNvbHVtbg== IG1pbnV0b3M= aWdlcw== IGVzdGFibGU= LWRpc2M= KENoYXI= a292 ZXhhbXBsZXM= X18oIg== INC60LDQug== IEJvcmlz KGR4 c3By IG92ZXJoYXVs YXRvb24= IEhhcmxleQ== aWNhbWVudGU= 4paI4paI4paI4paI ZXZpdHk= dXNoZXI= LlZpc3VhbFN0dWRpbw== V2F2ZQ== IE5vcm1hbGx5 c3Rvb2Q= b3JuaW5ncw== IGhhbmRtYWRl KGxvZ2dpbmc= IGNhcmNpbg== YWNqYQ== IHN1cGVycw== IHNpZWdl CUlm IElMb2dnZXI= VUFSVA== QW5pbWF0aW9uRnJhbWU= IHRhcGVz IGFpZHM= IENvbG9uZWw= dmVlZG9y IG1kbA== cGhvbg== RGlzbWlzcw== QXZhaWxhYmlsaXR5 VW5pZm9ybUxvY2F0aW9u IGlkZWFscw== cXVldHRl a2VpdGVu IEVNQUlM IE5lYg== IHN1bW1vbmVk IGdvdmVybm1lbnRhbA== IEhvcnJvcg== Y2hhbmdpbmc= IEFjdGl2YXRl SWxs PHRib2R5 Y3JlYXRpdmU= IEJMRQ== IG1hZG5lc3M= T3JOaWw= IGhpbg== xZM= LkdldEtleQ== X2NvbnNvbGU= Ik91cg== IGd1aW50 IGFtaQ== IHJlZmxlY3RpdmU= IGNyYWNraW5n IFJp UkFM dXJzZWQ= cHVyZQ== IHJlcGFpcmVk IHRpZ2Vy IE5pY29sYXM= VnM= bnRo LmV4cHJlc3Npb24= IHNlYXM= X0FDQ0VQVA== IGZvcmM= IEZyYXU= IHRocmVzaA== IM+A KEJBU0U= X09wZW4= V3VudXNlZA== IERvbWVzdGlj KHByaXY= Z3Vlc3M= Ly8hCg== Z2V0SXRlbQ== KCkpCgoK bXV0YXRpb25z IHN0cw== IGRlbWVudGlh c3Bva2Vu JHBhcmFtcw== IHBhdHJvbnM= IHJ1bndheQ== IEJVWQ== Lldhcm5pbmc= IG5ldXRyYWxpdHk= emhvdQ== 0YDQsNGJ YWt0ZXI= IENvbnN0cnVjdG9ycw== w5NO IFByb2dyZXNzaXZl IEJ1cmdlcg== IGluY3VycmVk IGltcGxpY2l0bHk= X2Vudmlyb25tZW50 IGV4YWNlcmI= IGVuZHVyaW5n c2lj IFBhcnRpY2lwYW50cw== X0Jsb2Nr IGVucm9sbA== X2VtcGxveWVl IFBlcHBlcg== bGF1Z2h0ZXI= 44OW J107Pz4= PScu KHJlbmFtZQ== IHNoZWx0ZXJz IEFNQQ== X2dhcA== IFJFVVRFUlM= eGFtcHA= T01JQw== IHBlZGlkbw== IGTDqXZlbG9w X18oLyoh X29k d2VyZQ== X051bWJlcg== X211bHRpcGxpZXI= S0VFUA== IHNob3dlcnM= IG1hZ2U= IHNpbm8= Y3Jvdw== LmlkeA== X25vdGljZQ== dWVpbA== IG15cmlhZA== IEF2YWlsYWJpbGl0eQ== Y2VudHJhbA== IEFCT1VU IGluY29ycG9yYXRpbmc= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg== X3dpZGdldHM= IHN5c3RlbUZvbnRPZlNpemU= w7ZydA== L2pwZWc= IFNNVFA= KGJyb3dzZXI= Z3Vucw== c2V0dw== X0FWQUlMQUJMRQ== IGluY29ycG9yYXRlcw== L2FuZHJvaWQ= eXg= 5biD X2xhYg== IGxlYWtpbmc= IEhpbnQ= w7xuY2hlbg== LlNjYWxl IGZpcmV3b3Jrcw== IGxQYXJhbQ== YnNk YXhvbg== KHByZWRpY3Q= Q29uZ3JhdHVsYXRpb25z IFNwZWN0cnVt SVJD IEFkbWluaXN0cmF0aXZl IGltcHJpc29uZWQ= UlNwZWM= IHJldGFpbnM= IHNldHRsaW5n IGNpdGF0aW9ucw== IFdvcmxkcw== c3RyY29udg== b3VzYW5k IEJlZ2lubmluZw== IEFuZHJld3M= IFNoYXJvbg== RXhlY3V0aW5n Z3JvdXBJZA== YWRkRmllbGQ= IGV4cGFuZHM= IGtpbG9tZXRyZXM= bGlua3k= IGdycA== SU5BVElPTg== QnJpdGlzaA== IGNvbXBvcnQ= LkRhdGFHcmlkVmlld0NvbHVtbg== IFByb2R1Y3Rpb25z aWxkZW4= IHVuaXg= X2dhbGxlcnk= X1BST1ZJRA== b3JkZXJpbmc= X2Fubg== Ymg= LkRlc2lnbg== IHRyZWZmZW4= IHVuZGVybGluZQ== X251bXM= 7ZWc64uk KXY= dXNpemU= IGRpc2FwcGVhcmFuY2U= VG9Cb3VuZHM= IHBjbA== IFdpbm5pcGVn IFNoZXJtYW4= X2xhbWJkYQ== bmFudA== IHJvb3RWaWV3 LkZsYWdz IGNlbnNvcnNoaXA= c2VudGVuY2U= LnJlYWRJbnQ= X2Fzc2lnbm1lbnQ= IHZlcnNjaGllZA== IEZyYWN0aW9u IG5hdGlvbmFsaXN0 IGp1ZWdv IERlYWxlcg== IHByZWRpY3Rpbmc= YXVwdA== aGVsbQ== X1BSSUNF X0RT KCIjew== bGlmdGluZw== IHBvc2luZw== IE5TTXV0YWJsZURpY3Rpb25hcnk= IHNtYXNo IGFraW4= IGNhbXB1c2Vz IE91dGxpbmU= IEVsYXN0aWM= X0NoZWNrZWRDaGFuZ2Vk KElFbnVtZXJhYmxl c3F1ZWV6ZQ== cHR1bmU= X0ZST05U bWg= IOyDneyEsQ== UnVuV2l0aA== IHR1cm5vdXQ= c2libGluZ3M= KWU= X0FSR1VNRU5U IEdyaWRCYWdDb25zdHJhaW50cw== X1BPT0w= LlJJR0hU aWdnaW5z dGVsZXBob25l XEV4dGVuc2lvbg== IEFyaXN0 aXR1cg== IGZyaWVz X2R1cA== RXhwYW5kZWQ= LXJv IFdvcmxkd2lkZQ== IENvcms= w7Ns TGlt IGRlbm4= UHJldHR5 IGZ5 VHJpYW5nbGU= RmVhdHVyZWQ= KENvbW1vbg== X2VmZg== ICIiDQo= 4bubaQ== X0xJTkVBUg== IFJpY2E= IGNhZsOp IGFwcGVsbA== IG5pdmVhdQ== ICYs IGZhYnJpY3M= X1BsYXllcg== IGh5Z2llbmU= IGRpc2FzdHJvdXM= IHNoYXJlZEluc3RhbmNl X3BpdGNo cno= ZW5tZW50 TmVhcg== X1NUQVRT IHN0YWlu IEROQw== IGlzc3U= Xks= CXRyZWU= X2Jsaw== c2V6 bGFpbg== YW11 X293bmVk VVNBUlQ= Lmhhc0NsYXNz SVNPTg== IGZvZQ== dXNoZWQ= X1VOU0lHTkVE IGluZGV4aW5n IEZpcmViYXNlQXV0aA== IGxpdGVyYWN5 IFNVUg== IENvbHRz YmVjdWU= IEludHJv IGNoYW90aWM= IGFuaQ== IEFubmll xrDhu50= LmR4 ZGlzY29ubmVjdA== IGFyY2hpdmVk W0xpc3Q= PU4= LnByZXNlbnRhdGlvbg== UmVzdGF1cmFudA== IHJvY2tldHM= PWh0dHBz L29w IHB1cnNl IEtyaXM= IGNvcmFs c2V0UGFyYW1ldGVy IGlycmln UXVlZW4= TlNEYXRh IHZhc3RseQ== LkZpbGVz IGZlbWluaXNt KFN0cmVhbQ== IGF0cmli IGxpcXVpZGl0eQ== PEZpbGU= dHJhZw== W2NvbnRhaW5z IGhpbmRp CWNw aG9tZXBhZ2U= IHN1cnBhc3M= IGRheWxpZ2h0 YXV0aG9yaXpl IENvbnNlcXVlbnRseQ== QXN5bmNSZXN1bHQ= IERpYXJ5 LlBhdHRlcm4= LiovCg== ZW5zY2hhZnQ= IEp1ZGljaWFyeQ== QWR1bHQ= KCY6 IGplb3BhcmQ= IEJsaXp6YXJk IGdn IjsvLw== WEhS IHBhc3N3ZA== Pn0= JyksJw== IGNvbXBhcmF0b3I= LmNoYWlu IGluc3VyZWQ= X0VER0U= IHR5bGtv X01BSk9S d2F2 XEZpbGU= RW50cg== J2FwcA== IGZvcmdpdmVuZXNz CWRzdA== Ijot Lm1vbg== ICgKCg== IGNhcGl0YQ== IGluaXRDb21wb25lbnRz IHN3b3Jkcw== IE91dHB1dFN0cmVhbQ== IGhlYXJz IFNQQUNF LWluc3BpcmVk X2Jvb3Q= Lm5vbmU= LmdldElucHV0U3RyZWFt IGRldmlzZQ== IHBlZGlhdHJpYw== YW5zaQ== X3BhcnRpYWw= IHNoYXJk IGZ1cmlvdXM= IGRyYXdhYmxl JSku KGVt IEJha2U= CXBlcnJvcg== IFJlbGlnaW91cw== LSIr CQkJICAgICAgICAgICA= IFNlY3JldHM= KG5vcm1hbA== QUNFUw== IFN0b2NraG9sbQ== LW5vcm1hbA== IGFjY3VzdG9tZWQ= IGJvdXRpcXVl IFN3aW5n IGZpbQ== IFBV LlNvY2tldA== ICciJw== YW5q TWFudWFs IG11amVy IHBoeXNpb2xvZ2ljYWw= Y29udGFpbg== TWVyZ2U= IHN1YXM= ICd7Ig== bmVnbw== IHN1YnNjcmliZWQ= dG9hc3Q= X1ZFUkJPU0U= IGtuaXQ= IEFydGlzdHM= IGhlYXJ0YmVhdA== IGZpcmVmaWdodGVycw== c3Nh W3s= IHVuZGVyc2NvcmU= IGhpc3Rvcmllcw== aWdtb2lk RmllbGRWYWx1ZQ== VG9BZGQ= LkNv IEhhcm9sZA== QXZvaWQ= aWdoYm91cnM= b3JkZQ== IHRydXRocw== L2Fs IHdpcmVk IEl0YWxpYQ== IHNlcnZpY2lvcw== IEFVRElP ICciKw== IHB1bXBpbmc= IENsZW1lbnQ= w4NP 5Y6f Pm4= IHN0clNxbA== amRiYw== 4oE= CVNFVA== IEJVRkZFUg== Oi8vIg== IGNpcmN1bXN0YW5jZQ== VUlUYWJsZVZpZXdDZWxs LnZlcnRpY2Fs IEpvaG5z dG9saXN0 IGRyaXZld2F5 IGxlYXJuZXJz dG9iZXI= d2lubmVy LXlvdXI= LnN0YXRlcw== SE0= IGdyYWRpZW50cw== IHNlaXp1cmU= IG1hdGVy IGRldGFs IFJlZHVjZQ== KG1vdXNl IFJlU2hhcnBlcg== LXJvdXRpbmc= INi0 IGpvaW50bHk= IEZhbWls PE1lc3NhZ2U= ZXhwaXJl X3RyYWRl 4oCmLi4= IEZVTkNUSU9OUw== IHhlbg== IHt9Ow== RmFi IGZlYXN0 KERi Rmlyc3RSZXNwb25kZXI= xLFsxLE= IG1heFZhbHVl IC06 YXB0aWM= Lkdzb24= IFJvdmVy X2Nu bG91ZA== IGNoYW1iZXJz INC30LDQtA== LmZvcmVhY2g= LmdldEVtYWls 55+l Lk5vZGVz IFZX IFdhaXRpbmc= KFF0Q29yZQ== IHPDs2xv cnE= YW5ndWFyZA== IHJlc2VtYmxlcw== Oltb IGdlZA== X0VQ KEFjdGl2aXR5 IElzbg== IENydXNoZXJz X1JVTlRJTUU= CW9wZW4= IEhpZ2hsaWdodHM= w6lyYXRpb24= IHllbGxpbmc= IExJR0hU UGhvdA== dmVuZ2U= IFN1c3A= IENocg== LkRpc3RhbmNl YXJzaW1w bGljYXM= Lk1vbg== IHN1Y2tlZA== cHJpbnRlZA== bXV0ZQ== IHNldEVycm9y Lk9wdGlvbg== IGltcGFpcm1lbnQ= bm9pc2U= IHBhcnRuZXJlZA== w40= ZGVucw== aWN6 IHdhaXRGb3I= IG92ZXJsb29raW5n IEZPUk1BVA== IFRTdHJpbmc= IHJlbnRpbmc= CWNvbXBvbmVudA== LkZyZWU= IExhdW5jaGVy PWRhdGU= IFBvZHM= QUdNRU5U Q29kaWdv Qml0RmllbGRz IHViaXF1 LWNhcm91c2Vs IFNpbXVsYXRvcg== aW5vZGU= J10pewo= IEJhZ2hk IG5vcnRod2VzdA== aHRha2luZw== PCY= IHRyYW0= IGZvcndhcmRlZA== IGVycm9yTXNn X0FTU0lHTg== IEVudGl0aWVz LlBhcnQ= cmVhdHVyZQ== KFVyaQ== IERyaXZpbmc= IGludmFzaXZl aWdyYXRpb25CdWlsZGVy b3NhdXJz CXBvcnQ= IGJyYW4= aXR0aW5ncw== RG9vcg== IHsl KGxpbWl0 IHNxdWFyZWQ= IERJU1BMQVk= LkFjY2VwdA== LmJhc2VVcmw= LkVudGVy IC4uLikK IG93bA== IHNsYXRlZA== LmZlY2hh X1NFRw== PXsk IE9OTElORQ== T05Z INC00LDQvdC90YvRhQ== b250ZQ== X0NMSUNL U2E= SW1wb3J0YW50 IGNhcm91c2Vs IGFwcGVhbGVk IE5pZQ== L2Jvb2s= W10+KA== IHhtYXg= IGxhbmdl LlN1cHByZXNz IFRoaW5raW5n QWRkcmVzc2Vz IFNhbGx5 LVRW IENoYXJsZXN0b24= KSIKCg== IHRhbGx5 IHVsbA== IGxvY2FsZXM= ZXdhbg== IGluY3JlbWVudGFs 65Cc IGNhcmV0 anVyZQ== IGRvcg== IGxvY2FsaXphdGlvbg== IHNlYWZvb2Q= IFJ1YmJlcg== LlRoZXJl IEZpc2hpbmc= WVlZ bWFnZQ== IEZsZXhpYmxl IEdFTkVSQUw= ZWth IHRocml2aW5n IHNpcw== IGJvdXJnZW9pcw== RmFrZQ== LFwi INC+0LQ= Q09S LWVmZmVjdGl2ZQ== IHNrdQ== ZWRseQ== IyMKCg== IEhvbGx5 IEZMQVNI L1RS Lm5z cHJvYmU= Z2lmdA== b3dpdHo= LW5hdmJhcg== IHNhY2s= 57qn IFRocmVhdA== WkE= WE0= JyksCgo= IExMVk0= YXN6 RWRpdGVk V2l0aFN0cmluZw== U2lsdmVy eW5h X3JlbmRlcmVy CURFQlVH KG9wZXJhdGlvbg== IFNsb3Rz IEF1YnVybg== eGVj IGhvbW9zZXh1YWxpdHk= LlJlc3RDb250cm9sbGVy ZXJzaXZl IHByb2ZpbA== IE15YW5tYXI= cm9zc2U= X0lSUW4= IHNlbmRNZXNzYWdl IHRlY2huaWNpYW5z IG1hbmU= Y29tbW9ucw== IHNocmVkZA== Qm9vc3Q= IHN5bXBhdGhldGlj LWVmZg== IENlcnRhaW5seQ== IHfDpGg= IFJvY2hlc3Rlcg== dWNjaQ== dXJt ZW1wb3I= ICIiOgo= LXNwYWNpbmc= IHNpeHR5 IOKckw== X3JlcG9ydGluZw== V2ls b3lv IGRpZFNlbGVjdA== LmdldExvbmc= LnNldEVycm9y X25j IERvbmc= CWFzeW5j IEhpZ2hseQ== XToNCg== TGVha3M= LC4uLgo= dmFsdWF0b3I= ZGljdGlvbnM= b3hlbA== IGdlc3R1cmVz PSI/ YmFncw== IFJlbGllZg== c3Vic2V0ZXE= KG5hbWVzcGFjZQ== fXw= IG1pY3JvYmk= IHB1cml0eQ== Y2hpbw== fT8= X01VVA== X2FjdGl2YXRpb24= IFBpcmF0ZXM= ICUj aWZpY2FjacOzbg== 5Ys= IE5SQQ== w6dvbg== fSkoKTsK IENoZXN0ZXI= 4oCT4oCT Z2V0Q29ubmVjdGlvbg== LmFyZ3VtZW50cw== RmV0Y2hpbmc= IEZyeQ== IERpdA== IHppY2g= cGFzdA== LWxpYnJhcnk= IEhheWVz IGJvdW50eQ== IFNwcmluZ2ZpZWxk UE9S IEFQUg== IEVtYmFzc3k= UVVFU1RJT04= IFNvbGRpZXI= ZXJ0YXM= IE5PUk1BTA== IGR1cw== Ym9sdA== IGRvcnQ= IExpZnQ= IGdldFJhbmRvbQ== LlJ1bldpdGg= LCksCg== IHZhcmFyZ2lu IGhhbmRsZUNsaWNr XEh0bWw= IGhvbW1lcw== Y2lkYWRl KGVw SmE= L2RpYWxvZw== LnJhdGU= IFdlaQ== ZnVsbHNjcmVlbg== IE5Vbml0 Lm1lYXN1cmU= VmFscw== IFNpZ25lZA== IHJ1cw== IHJhZnQ= IEJsb25kZQ== IG5ldHM= IE1ldHJpYw== aWNoVGV4dEJveA== IHVyZQ== IGludGVycmFjaWFs ICd9Cg== KHN0b3JhZ2U= SW50ZWdyYXRpb24= IGJhbmNv QVNZ IGppbnQ= IGRlZ3JhZGF0aW9u IEhBTkQ= dWVyZG8= PScn IHN0cm9rZXM= cmV3cml0ZQ== KFNldA== IE1hdERpYWxvZw== IGRvc3NpZXI= CWFuZA== QURESU5H IG11dHVhbGx5 IHByZWNlZGVk fX07Cg== IHN1YnR5cGU= IHJlc29sdmluZw== IGdlb21ldHJpYw== W2NvbHVtbg== IENUUkw= IEhM IGRhaA== ICg7Ow== UmFpbHM= w5w= IEdlbmVyYXRlcw== LUxlbmd0aA== cGVkbw== b2dlbm91cw== IFJvYmVydHNvbg== LkJvb2w= b2RlcnM= X0FHRU5U cGFzc3dk IE5vZGVz LmJp IFdC IHByb3BoZXQ= c2xhdmU= IOW8 IHdlaWw= JTwv IGNhcmJz 5rC0 IGV4cHJlc3NseQ== XHhk LWV5ZWQ= IENyZWF0dXJl Y29udGFpbmVk KFNJRw== IEVuaGFuY2VtZW50 IENvcnM= R2Fs X1NJR05BTA== cmVpbnRlcnByZXQ= IFFQdXNoQnV0dG9u X05vbmU= IGdlbm9jaWRl IFNlYWw= 5LiK5Lyg KHBlcg== 0LvRjNGC IMOgcw== LlRlbXBsYXRl ICkNCg0K LnNpbmdsZXRvbg== CXNsZWVw IHNwYXduZWQ= IHBvc3Nlc3Npb25z Z2V0Q29uZmln IHRhaQ== bHVkZQ== IE1ldGVy IGJpYmxpY2Fs bWFyc2hhbGxlcg== LlRvb2xraXQ= IExlc2JpYW4= LnNtYXJ0 IGJveWNvdHQ= IGZyeQ== LWRlc2M= X1NlcnZpY2U= IG1hY2h0 IENhaXJv w6Bp X3ByZXZpb3Vz LnRyYW5zcG9ydA== TWVkaWNhbA== Q0dQb2ludA== UVVBUkU= IGJyaWdodGVy IGNoZWNrQm94 IEZPVU5E LmJyYW5jaA== IGJsYWg= IFByZWx1ZGU= T2ZmbGluZQ== TGlzdGluZw== LyoqLyou IEpS cGhhbnRz Z2V0WQ== LkZpbmRDb250cm9s Ii4uLg== 0LrQtQ== SFJFU1VMVA== IGNoZWNrbGlzdA== KGFzdA== IGJvcnJvd2luZw== 4oCmYW5k INCX IHByb2N1cmVtZW50 LXRhc2s= X2hhbA== UGxheWxpc3Q= LnN0YXI= X1NVUFBPUlRFRA== QVNN JUE= cmVzdHJpYWw= INC40YHQvw== IHBhZ2Vy IERpYWJldGVz IE1haGFy dGFu QWN0dWFsbHk= Pi8v IFhW 4KeN IHNlamE= LnZpc3VhbA== a2tlcg== XTsKCgo= IHR5cGVOYW1l LkJ1dA== Q2xpZW50UmVjdA== aWNhbHM= IERqYW5nbw== IFJhcGU= IHBheWRheQ== KHJlc291cmNlcw== LmJpeg== dG9p KFJ1bnRpbWU= IER5bmFtaWNz IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24= KHR5cGVz IFRhYnM= Lk1pZGRsZUxlZnQ= eGFi IF8o IERyZWFtcw== X0dyb3Vw KGNvcg== TGVhZGVy IGdyYWR1YWw= KEJpZ0RlY2ltYWw= IHRleHRhcmVh bGV0aW9u IEZpbmlzaGVk IFBvbGU= IHRhcHBpbmc= Jig= IGZsaXJ0 IHRlcnJpZmllZA== IHBhZHk= ZXJlZw== ZWxkb20= IHN0YXRpb25hcnk= IHBvbnk= IFJFR0lTVEVS X2FjY2Vs IEhlcno= IG1hdHJpeg== IENhZg== eGFj YXNjdXM= IGVubGFyZ2U= QUNIRUQ= eXl2YWw= IHNpYw== IENhbmFs OnY= PT8s IEltcHJvdmVtZW50 P30iLA== TlNPYmplY3Q= IGVzY2FwaW5n IE51bGxhYmxl IGjDpA== d2FudA== RWxpbWluYXI= IENMTG9jYXRpb24= IHJldXNlSWRlbnRpZmllcg== QnVmZmVyU2l6ZQ== w59lcg== IEFza2Vk J11dLAo= IHNoaWVsZHM= Z3JhbmQ= IFRvd25zaGlw IFB1Yk1lZA== ZWN0bA== Zml2ZQ== IFJlYWN0aXZlRm9ybXNNb2R1bGU= IEdMZW51bQ== RGFy aWZhY2U= LWluZGVudA== Rm9ybXVsYQ== LnNuYXBzaG90 Q09NUEFSRQ== IGJlbHRz CWNhY2hl bGRhdGE= IGVkYWQ= IEJPWA== KGNhcnQ= X0xBWU9VVA== IGZmbHVzaA== IExPUw== IFNvcnRlZA== LnNsaWRl IHRpamQ= IFRleGFucw== IFB1cmNo IExldmVscw== IHNlbWFudGljcw== IFRlaHJhbg== Ym1w LnVybGVuY29kZWQ= X3hsYWJlbA== KGd1bHA= IEJ1dHRvbnM= IEJyb2tlcg== 55uR5ZCs JGVtYWls 2ZA= IGNsYXNzaWNz Y29tcG9zZQ== KGJz IHVuaGVhbHRoeQ== RXhlcmNpc2U= Y3JldHM= IFBhcnM= IERldGVybWluZXM= YWZvcnQ= KG9icw== IG5hc3Q= IGlocmVu IHJveWFsdHk= c2VyaWFsaXplcg== aWV1eA== ICAgICAgICAgICAgICAgICAgICAgIAo= ZXhlY3V0aW9u IHZpZXdDb250cm9sbGVy IHJlcHJv LnBl IGNhcGl0YWxpemU= 5Ye7 IHR1bm5lbHM= LkRBVEE= cGlyaXQ= Q29sbGVjdGlvbnM= KX19 IE9E IGZ1enp5 SW1tZWRpYXRl bGo= Oz8+Ig== W3Zhcg== IHZvbGF0aWxpdHk= cmVnbG8= IHByb2xpZmVyYXRpb24= IG9yYWNsZQ== IEN2 IG51bmNh UFJJTlRG IGJyZWFrcG9pbnQ= LkVO IGJlc3Rlbg== IHJlYmVsbGlvbg== UGF1c2Vk IGZsb3du IHZpY2luaXR5 d3JpZ2h0 LGNw aXNjaW5n b3VjaGVycw== QXNo eWFy IEVq cmVwcmVzZW50ZWQ= b2RpYw== LmNyb3Nz IGNyZWF0aW9ucw== IFBhYmxv ZmVzdA== IEhpbHRvbg== UmVwb3J0ZXI= IERpbA== aWxlbmFtZXM= IGV4cGVuZGl0dXJlcw== X0VESVRPUg== IEFyaWFs IHBsdW5n IHVubmFtZWQ= T3JFbHNl IHJlY3JlYXRl IEhlYXJ0cw== PmFsZXJ0 LmdldFBhc3N3b3Jk IE11c3Rhbmc= Vks= IGFjY29tcGxpc2htZW50cw== QXBwZW5kaW5n IENheQ== IFVzZXJNb2RlbA== IHN1YnN5c3RlbQ== TGVnYWw= eW5jaHJvbml6ZQ== X1BFUk1JU1NJT04= IEFwYXJ0bWVudA== bGlnZQ== IGFmZmlsaWF0aW9u KERFQlVH VHM= IENvbG9yaW5n IFdvaG4= bmljZQ== KGxpc3Rh 4LE= cGxveW1lbnQ= 44G+44Gf 5aW9 c3Vic3Q= J11dWyc= YWJvbA== PSdf 4KeN4KY= b3JwaGlzbQ== LmxpdGVyYWw= IFBsdWc= IG13 b21hbA== ICInIiw= dXNp IHNpZ2hlZA== aWN1bHR1cmFs Lios IFByb3N0aXQ= KGNvbnNvbGU= SVBMRQ== IFRyYXA= WFI= IEVkaXRvckdVSUxheW91dA== X3ZvY2Fi IGluY29tcGF0aWJsZQ== IHVuY29uc3RpdHV0aW9uYWw= LWxh IGVyb3RpcXVl IGRlcHV0aWVz cXVpc2l0aW9ucw== bmV3VmFsdWU= YWRpYQ== IGh3bmQ= Z2luZ3M= IFZhcw== IEluY3JlbWVudA== IEZsaW50 YW1iaWE= X1BvaW50 LWRpc3BsYXk= IEZ1bm55 LnRvYXN0 LmRhcms= QmluZGluZ3M= IGRlc2NyaXB0aXZl YXJlbmQ= LlJldA== IHJlY3Vyc2l2ZWx5 IE1r IFRJTEU= LmNyZWF0ZVRleHROb2Rl IFJBVw== IGluZmx1eA== 54mp VG9r LWJvYXJk UmVjb3JkaW5n U3RyZW5ndGg= IHJhaW5mYWxs KGRk LmZ4bWw= bmV0cw== LkltYWdpbmc= IEJJT1M= XSsi T0U= IHJlc2lkZW5jeQ== WkU= V0I= LnNwYW4= X2RlZmluZWQ= Qk9U Pm51bGw= Zm9ybURhdGE= Q3BwTWV0aG9kSW5pdGlhbGl6ZWQ= X1VTRVJT IE5vdmVs aW5za2k= PntA ZXR0bw== bmF0dXJhbA== IFN0cmljdA== Onc= LnNhZmU= IHRvd2Vscw== 4bqtdA== LmdzdWI= 66M= aW5xdQ== IGFpZGVz IGluY29t Z2V0dGVy IHdhc2hlcg== YWN0b3JpZXM= IGdldHRlcnM= bWl0ZQ== X3NvdXJjZXM= IGhhcm1sZXNz IHVub3M= cHJlaGVuc2l2ZQ== IG5vZG8= IGdlb2dyYXBoaWNhbA== IFNlbGVjdExpc3Q= LlNjcmlwdA== LkVudW1z IEVOVEVS d2FsZA== IEJhcm9u IHBhcnRpY3Vs LmN1cnJlbnRQYWdl QFRyYW5zYWN0aW9uYWw= W2xpbmU= CWRlcw== SmFzb24= LmdldENvdW50 IFBlbm55 IFBheWxvYWQ= c2hhcnA= W3JpZ2h0 dmVudGE= IGFwbA== IHByb2R1aXRz IG90dA== VHJhY2tz LkFuZHJvaWQ= IHNpbGljb25l IEVMU0U= YW5pbWF0aW9ucw== dWx0dXJlSW5mbw== IGJsdWVwcmludA== b2ZzdHJlYW0= IFtdW10= IFNlcnZl IHRyaWc= CXNlcnZpY2U= IFN0cmF0 IFNhdmFnZQ== IG9ianM= IE5vdGlmaWNhdGlvbnM= LHBvcw== VGhpbmc= IFJCSQ== b3BhdGh5 IG5hdWdodHk= bGJz ZXByb20= PiIu IHBpb25lZXI= IGphcGFuZXNl QXVk IGFsbGV5 IFBldHNj J10/Pg== IEtpbGxlcg== LmdldEFic29sdXRlUGF0aA== X2NhcHM= xas= IHN1YnN0cmF0ZQ== LmFzc2VydElu 7JWE IHRoeXJvaWQ= IERlbHV4ZQ== IGZhY3RvcmlhbA== IHByZXNzZXM= IEFjY29t PW9wZW4= LmdldFM= IGV4cGxvcmVy IHJlc2lkZXM= QXNzb2NpYXRlZA== IHRyYW5zZm9ybWF0aW9ucw== VHU= IFJpY2hhcmRz X2JpcnRo PSN7 LXNwZQ== KG5k IHZpc3VhbHM= X3N0YW1w IHRlcm1pbmFscw== cm91dGluZQ== KioqLwo= IEphYg== S0w= Q29udHJpYg== IHNvdXRod2VzdA== IFBlcA== CWVudGl0eQ== IGxpbmVy LlN0YXR1c09L IFNjaHVs KENM IG1pam4= YXN0b3M= X2RpZ2VzdA== IHBlcnNpc3RlZA== LWNvbnRhY3Q= IG9kb3I= IGRpc2NvdmVyaWVz X0ZJRUxEUw== Rmx5 IHJ6 IExpc3Rh UmVzZXJ2ZWQ= dGF4b25vbXk= KXNlY3Rpb24= LyIpCg== L3JlcXVlc3Q= IHNvbWVkYXk= Y2l0aWVz L2ZpcmU= IG9iamVjdGlvbnM= CURFQ0xBUkU= Lm5hdmlnYXRpb25JdGVt LnNldGRlZmF1bHQ= cmV0dXJuVmFsdWU= VUNDRUVERUQ= IG9ibGlnZWQ= IFFhZWRh IGh5c3Rlcg== ZXN0aGVz ZGlzdGluY3Q= w6B5 IENvbWJv CXNm IOKK IGRpc2NyZXBhbg== IGluc2lnbg== IFJFU1VMVFM= IFZhbGlkYXRpb25FcnJvcg== IEh0dHBSZXNwb25zZVJlZGlyZWN0 CVFTdHJpbmc= IGF1dG9mb2N1cw== RHVy IFJFTEVBU0U= LWRvbGxhcg== LkNvbW1pdA== IGtow7RuZw== IGxhdW5kZXI= Lj0i IOaWhw== IGJ5ZQ== LkdldEtleURvd24= IGdpbw== X3NpZA== IGdxbA== LmNt X1NMT1Q= LkdldEluc3RhbmNl cmV1c2U= LnNodXRkb3du IGplcnNleXM= X01Q cGF0aWJpbGl0eQ== IOiuvue9rg== IHJlcGxhY2VtZW50cw== IHByZWNlZGVuY2U= IGJ1ZmZlcmVk LmJz X0dSRUVO YnJhaW4= w6FjaA== YXZhaWxhYmlsaXR5 IEVURg== IGZyZXQ= aXN0aW5l IGxpZnRz RXhpc3Rpbmc= IHN0ZXJlb3R5cGVz IGVtcHQ= bW9uZ28= LnRyYWluaW5n YWxpc3Q= LklzRW5hYmxlZA== ICIh PD8K dWlkbw== IGludFZhbHVl LmVsYXN0aWNzZWFyY2g= TE9HSU4= IHJlbGlhbmNl IHZpZXdUeXBl IGRpbWluaXNoZWQ= U2FyYWg= IEFwcHJvYWNo X1dFQg== IGRybQ== IGNvbHVtbmlzdA== TWFya3Vw IGFxdcOt IERpYW5l IGN3 IFRpY2s= Lm9ic2VydmU= SVJPTg== SW5CYWNrZ3JvdW5k IGVib255 IENvdXJ0ZXN5 Om51bGw= KioqKioqKi8KCg== L3Jlc291cmNl SXRlcmF0aW9u ZGVmYXVsdFZhbHVl YXR0ZW50aW9u INGA0LDQsdC+0YI= IHdhaXZlcg== IHByb2R1aXQ= IEdyYWRpZW50 IHBlcmNlbnRhZ2Vz IFNBTA== IE1k KHNuYXBzaG90 CWlv aWtlcnM= V2VicGFjaw== IHNldFBhc3N3b3Jk IGRlZmVhdGluZw== IEplZw== ZWxhcHNlZA== aG9sZHM= X3NoYWRvdw== IG9mZmVuZGVk IFBhbnQ= IENhbGxhYmxl X0lORk9STUFUSU9O ZmZlZQ== KGVtcGxveWVl IFlBTUw= cG9zc2libHk= IG1heGltYWw= ZWxsdWxhcg== IFNueWRlcg== ZGVzY3JpcHRvcg== IFBMRUFTRQ== RGxnSXRlbQ== IGFydGlsbGVyeQ== YH0K cG9zaXVt IGxlZXI= JWM= IGRpc3Bvcw== Lm11bA== IGdlb2dyYXBoeQ== IGdyYXBoaWNhbA== IGRyYW5r IG1vdGlvbnM= IHJ1dGg= KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= IHByb2R1Y3Rpb25z IGNyZWF0ZVRpbWU= IFNjcmlwdHVyZQ== YmJi dWNocw== 5LiN6IO9 LkJpZ0RlY2ltYWw= c2l6ZXM= X3NvbHZlcg== X0Zyb20= X2pvaW50 IHBhdGhsaWI= IGdlYXJz INGE0L7RgNC8 IGNvbmNlYWw= IGRpZmZlcmVudGlhdGU= PEdhbWVPYmplY3Q= IGplZGVu IGFsbw== Z2xvYmFscw== ZXJ2YXRpdmU= IHBhZGQ= IFBseQ== X3R5 IHByZXNlbnRl IHByb3ByaWV0 X2xz IFB1bmNo IENyYXdmb3Jk YmVsb3c= Q3BwR2VuZXJpYw== IENPTlRST0w= IG9jZWFucw== IFJPVVQ= IHJhbmRpbnQ= CWFkZHI= IEhvbmVzdA== IGVudmVsb3A= IHRyYXVtYXRpYw== IExBVA== IHRn 7Iqk7Yq4 RXh0ZW5kZWQ= IHVuY2hlY2tlZA== IG9ic3RydWN0 X3RpbWV6b25l UGVyc2lzdGVudA== IGxsZXY= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo= IEZsYQ== LnBoeXNpY3M= IGZvcmdlZA== IExhdXI= IG1vbm9wb2x5 IGNocmlzdG1hcw== Z292 IFNtb2tl W2Rm IGJpc2hvcA== bG9jYWxPYmplY3Q= b3JyaA== b250dmFuZ3N0 ZHJ5 IGVyZm9s LWNl IE9yZGVyZWREaWN0 IGh4 IFJFU0VU U3Vj IHJlY2tsZXNz YWxhbWF0 QmlnSW50ZWdlcg== IGJ1bGJz IG11dGU= 5pS+ LlVsdHJh TG9u IGNsZWFyVGltZW91dA== PFJpZ2lkYm9keQ== c3dpcGVy IENvbWVz XGRi CW1w IHJlc3Rz TW92ZWQ= IExvcmU= LkRpbWVuc2lvbg== IE1hbml0 Lmh4eA== PT09PT09PQ== cGl0Y2g= ZmZpZWxk c2tpbGxz X2FsYnVt dHJhbnNsYXRlZA== IFhJ IHZlaW4= IERhdmlkc29u IEF1Y2tsYW5k eXNzZXk= IGF1dGhlbnRpY2l0eQ== IEFzc2lzdA== IGNvbXByaXNl Q3JlYXRlVGltZQ== IHRyZW5jaA== LndlZWs= LS07 IFVJQWxlcnRDb250cm9sbGVy X3JlbGF0ZWQ= Q01T cmVtZWx5 IGxleGVy aXJtd2FyZQ== RWxlbWVudHNCeQ== LXVwcGVy IHN0YWdu LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== X3NuYXBzaG90 L1hNTFNjaGVtYQ== X09yZGVy IGFubmV4 X0VOQ09E IEFsdG8= YXJpb3Vz REo= IGFib3J0aW9ucw== Q29tYmF0 IExpY2VuY2U= dWdnZXN0ZWQ= W0s= LCkpCg== KCcvLw== LkNhbg== c2Vjcw== cXVvdGVz X3RyeQ== IFNhZ2U= IE1vdg== J29u cmVnaXN0 IFdyaXRlcw== IERpZ2VzdA== CWNvbnRhaW5lcg== LXByb2dyZXNz IGdvYXQ= X3NjaGVtZQ== LkdldENoaWxk IGFzeW0= Lm15YmF0aXNwbHVz YXRpY2E= cGdzcWw= X2Fzc2V0cw== Pks= IGFmaW4= TlNT IE5BVg== KCcuJyw= IGAi IGF1ZGl0b3I= X01PVVNF IHdhbGxldHM= IG1vdQ== cnVucw== ZXRlcmFuZ2Fu IFJlc2VydmF0aW9u IGV4cGVyaWVuY2lh CXByb2Nlc3M= LWltcG9ydA== X1JldHVybg== IE1hY3Jv IFBlbmlz cGl4ZWxz IHNldEVtYWls KE1pZ3JhdGlvbkJ1aWxkZXI= KHhz IEVzdG9u IEJ1YmJsZQ== QUxMT1c= CWhhbmRsZXI= JHJldA== IGNvbXBsaW1lbnRhcnk= LWNpdHk= IGVsbG9z IFNPVVJDRQ== IEFkdmlzb3I= b2xvZ8OtYQ== IGZhZGVk LnBj X1JHQkE= QUZY IHJlcGF5 IEZhbGNvbnM= X2lzc3Vl b21pZG91 LmJhb21pZG91 IGluZnJpbmdlbWVudA== dXJuaW5n L3N0b3JhZ2U= X3F1YW50 IFF0Q29yZQ== IG1lbGw= X2RlbnNpdHk= IEtub3g= IFN1cnZpdmFs LmdldFVzZXJuYW1l IGNvbW1lcmNpYWxseQ== Z3Jhc3M= IG1laXM= 5Lq/ IFBlcm1pc3Npb25z X1FVT1RFUw== aXBob25l IExPVA== IHRocmlsbGVy IENoYXBlbA== IFJpcw== Pmk= LUlE IHJpZ2h0bHk= Q3J5cHQ= IElzdGFuYnVs cmVkcw== X3Jlc2l6ZQ== UG9wdWxhdGlvbg== KGZldGNo IEhPVA== OmZpcnN0 IGdhZGdldHM= UHlPYmplY3Q= IG1lcmdpbmc= ZHVjZWQ= bGVnYXRlcw== dWJlY3Rs JS8= YWxsZWU= IHp1c2FtbWVu LlByb3BUeXBlcw== YXN0bw== Oio= cmVjZQ== UmVzcG9uc2VUeXBl L2dyb3Vw IGJhcmJhcg== IENhcm9saW5l b3VyY2Vk 57uP IGx1YnJpYw== aW5zcGVjdGlvbg== YW1tYWQ= CUltYWdl IGllcnI= IGN1cnRhaW5z X0FSQg== IE9yYWw= IGFsbGllZA== IFN0YXR1c0NvZGU= IENsZWFybHk= UHJlZmVycmVkU2l6ZQ== cXVpbmE= IHNwb3M= IG9wdGltaXNt IGNvbXByYXI= IGx1Zw== IEJvb20= Y29uZmlybWF0aW9u X0RVUkFUSU9O X2Jyb3dzZXI= IHJlcGV0aXRpb24= IGtlZXBlcg== IGFkZFRv KGpz LlN0YXQ= LkNvbmQ= IEhlcm5hbmRleg== cGFxdWU= IHZvbHVudGFyaWx5 IGplcms= IExleQ== IGRvY3VtZW50bw== X2RlYWQ= IFRFQ0g= IGluY2VwdGlvbg== KCJ7fQ== IG9uTG9hZA== eGRk IElTUA== c3BlY2lmaWVk IOusuA== UFJPQ0VTUw== KGFsZXJ0 Lk1N IGNyZWF0ZVN0b3Jl KHVuaXF1ZQ== LmdldEJsb2Nr 656Y dW5vcw== IHRyb3BoaWVz X2hvdmVy IERhZGR5 Lk1l IENPVVI= T0JK YXRlbWFsYQ== IFBzaQ== IG5vcm1hbHM= YWNpZXI= IE1CQQ== IHBhd24= z4U= IHNwb250YW5lb3Vz IGF1eGlsaWFyeQ== IGluYXVndXJhbA== IGZhc3Rpbmc= IEZpbGVTeXN0ZW0= IHplbg== X0JMVUU= IHN1YnRyZWU= IHByZXByb2Nlc3M= LXRyYWNr Q2hhcmxlcw== IGRlcG9zaXRlZA== IHF1ZXJ5UGFyYW1z 0L7Qu9GM0LrQvg== aWVtYnJl IHByYXc= eEZD IHBhbmM= X25vbQ== aGVyb2Vz Lmphdg== OjokXw== INin2YTZhQ== U0dsb2JhbA== 5o+P6L+w PXRlbXA= ZXN0aQ== IGNvbnN0cnVjdGl2ZQ== IFNoaW0= IERpcmVjdGlvbnM= IEJpbmc= ZGlydHk= LXJ1bm5pbmc= X2ZpbGVwYXRo b3JkZXJJZA== Z2FyZA== X29yaWVudA== IHNjb3V0 IHBzeWNob2xvZ2lzdA== 7LY= IOWt ZGVxdWU= IEhlcm1pb25l IFBvd2VyUG9pbnQ= IGVsbGE= IFVJQmFyQnV0dG9uSXRlbQ== U3Vidmlld3M= QFJlcG9zaXRvcnk= IiIiCgoK IHJldG91cg== IGNpcmNh R3JhcGhpYw== IEdyYXR1aXQ= ZGR5 IHRlY2huaWNpYW4= IENsZWFudXA= IHBlcnNvbm5l IHJlc2lu Lk11bHQ= JG0= IE9yY2hlc3RyYQ== IHdoZWVsY2hhaXI= LlND CUdhbWVPYmplY3Q= IG1vxbxl T3BlbmVk IGNoaWNrZW5z b3Rhcw== X3RlbXBlcmF0dXJl IGRldGVjdGluZw== IGFjcXVhaW50 IDw/PSQ= Pl0= IG1lbnN0cg== IGR5ZQ== Um9ib3Rv LnVuaXRz IFZpbnls Y3VyYQ== cnlwdG9u ZWRk PXRlc3Q= IHRyb3Y= Q29uZmlybWF0aW9u IHRoZW9sb2d5 IEhvbGRpbmdz dWF0aW5n UHJlZGljdA== W3VzZXI= IDon IFNlc3Nv cGFyZW50SWQ= Q29kZUF0 YWJibw== IFRyZXZvcg== IFF1aXQ= X3NoaXBwaW5n X1JB IGtsZWluZQ== 56Y= X0xhYmVs IE9tYXI= IEdSRUVO LykK cm9r IHJvYXN0ZWQ= X1JU IOKAjg== QFJ1bldpdGg= Pk5O IHRhbmQ= Kycu Y3J1ZA== LmtleWJvYXJk YXN0ZXJ5 QkFE IENvbHVtbnM= LkNvbXBhbnk= IHNlbWluYXI= IGdldENvbnRlbnRQYW5l IGNhdGFzdHJvcGhpYw== IGVtYnJvaWQ= aWF0aXZl IGNydWVsdHk= Ymlz IGluc2U= IEJyb2tlbg== CWZz IG1WaWV3 0LDRhtC40Lg= LWZhY2Vib29r IGNhY2hlcw== 44CC44CCCgo= IE9STQ== IERpc3RyaWI= IFNjZW5lTWFuYWdlcg== X3RyYW5zaXRpb24= b21leg== IFNIRQ== IHdvcmtsb2Fk U3VwcG9ydGVkRXhjZXB0aW9u IHJpZXM= IOWc KGNhdA== SGFzTWF4TGVuZ3Ro QXBwcw== LlRBQkxF IEtleVZhbHVlUGFpcg== ZWRpZG8= LlJlbmRlcmluZw== IGVsZWN0cm9t IGFyYml0cmF0aW9u IHZhcmlhYmlsaXR5 YXBvbGxv IHV0bW9zdA== b3BlbnNzbA== IGjDpQ== KCcm LlN0YW5kYXJk IGRpc3RyYWN0aW9u aWZheA== IOuVjA== dGhvc2U= aXNwZW5z dmFr IFNVUA== IElzUGxhaW5PbGREYXRh LGtleQ== ZnJhZ2lzdGljcw== IEpveWNl IEZpYmVy LlNlcnZsZXRFeGNlcHRpb24= X0FsbA== IGJhY2tlcnM= IEF0dHJpYnV0ZUVycm9y ewoKCg== QHlhaG9v LWRpcmVjdG9yeQ== IHVuaW5zdGFsbA== IGZsdW9y bGlxdWlk IGzDoQ== IGZyaWdodGVuaW5n YWRhbg== IEFVVA== IHRhdHRvb3M= IHByb3BhZ2F0aW9u LnRyYW5zbGF0aW9u 0J/RgA== X3NjaGVkdWxlcg== 44CC4oCc IGNhaXJv IEh0dHBDbGllbnRNb2R1bGU= IE5EUA== IEhpdHM= IFRyYW5zZm9ybWF0aW9u IENhZXNhcg== c3RpbQ== IEJ1cnRvbg== d3lu IGNvbW1hbmRlZA== IENsb3RoaW5n IFJ1bnRpbWVPYmplY3Q= cmVhbGx5 Y2xh LnNh IFNoYW5ub24= IGNvbW1pc3Npb25z IEphbmV0 IGRpc2d1c3Rpbmc= IG9wdGltdW0= X3NvbA== dXJvbnM= IFNIQVJF QXR0cnM= IFNjaGU= IEJpZ051bWJlcg== IGNpZ2Fy KGRlcHRo IGZyYWM= IEN1cnZl TEFTVA== IFNDUklQVA== 6rO8 TWFsbG9j Lmdyb3VwYnk= IExlc2xpZQ== IHdoaWNoZXZlcg== U21hcnR5 L3dl IEFtcA== LGlu bG9wcw== ZGVwZW5kZW5jeQ== Y2VkdXJlcw== IGB7 eGljbw== Q29sbGVjdG9y IGhhYw== IERhcmtuZXNz ZmZmZmZmZmY= Jz0+Ig== IHBsZWFzaW5n Y29ubmVjdG9y em9z UENJ dmFj IEluY29ycG9y IG5lZA== X0ZBQ1RPUg== LmZi IG91bmNl X3NhdmVk INix IGRlZWRz IERvbHBoaW5z IGJ1ZW4= RVND LHRpbWU= X0FVVA== ZWNz IFNlbmF0b3Jz Lm91dGVy IFNlbGxpbmc= IHJpbg== PmAK Lm9ic2VydmFibGU= IGNvc3Rpbmc= REc= IHdpbmRpbmc= IHNrYQ== IGNpcmN1bGF0aW5n IGZvcm1pZGFibGU= YW1wbw== IFJhaXNlZA== IHZlZ2V0YXRpb24= VUZGSVg= S2lsbA== cHRpdmU= KHJ2 IENvdW50cmllcw== IE5ha2Vk IEpB KSkiCg== dWRhcw== IGJhcms= CWxldmVs IGZvZXM= PkFkZA== WW91VHViZQ== O3Q= TkNZ Q2x1Yg== RWlu LS0NCg== IGNvbnN0cmFpbmVk RVR3aXR0ZXI= WUc= RGVzY3JpcGNpb24= VU5DSA== IGVucXVldWU= IGRpc2tz IFdlbnQ= IG11aXQ= CWxvY2F0aW9u IHJldmlzaW9ucw== IEFDSw== LWZpeGVk dHJhc291bmQ= XFRlc3Q= U3RhcnRQb3NpdGlvbg== LWh0bWw= IHByb2JsZW1hcw== X0lOVEVSUlVQVA== IFNUT1JF 5qih aWxpYXRlZA== IFJQTQ== W3RlbXA= YWNodGVu IGNpYw== IEF1dG9tYXRpb24= IGhpZ2hz Lyg/ OicpCg== c3Bhcms= cmVscw== CW1vdg== VVRFUw== LkF1dGhvcml6YXRpb24= IFNjaG5laWRlcg== IGNoZWVrcw== YWRkcmVzc2Vz YXJkaW4= IHJlbW92YWJsZQ== LkJhZFJlcXVlc3Q= aWNpb25hcg== IERpZXNlbA== dGhhbg== L34= IGRhenU= UmVnaXN0cm8= ZmZp X0RMTA== IG5pZXU= IG1vaXN0dXI= LWV2ZW50cw== IHRocmlsbA== LmdldEVudGl0eQ== IHRvZ2c= IHdhdg== KWRpZA== YXRr KHN1YnN0cg== IEluamVjdGlvbg== X21i LkRpdg== IGVuZGVhdm9y ICjCow== IGNsdXR0ZXI= IHVyZ2VuY3k= IGluc3RydWN0b3Jz LScs LXN0YW5kYXJk Y2Vt CWhhbmRsZQ== LmZ0 U3RlcGhlbg== Um9u 44GZ44KL c2Np IEF0bW9z IGNhdGVyaW5n IGZpYXQ= LlBlcmNlbnQ= IENvbmdv eGRm Lm1vemlsbGE= IHNlaGVu LnNob3dUb2FzdA== T09U LXJlc3VsdA== zIE= IGdob3N0cw== IEJ1ZW4= IFJpZGVy IERvY3RvcnM= IHVyYW5pdW0= IGxvdWRseQ== IHBvaXNlZA== IGZhdm9ycw== KEFQ TEVZ IHNpY2tuZXNz IGNoYXR0ZQ== IGludGVncmF0aW5n IFl1cA== Q2xvc3VyZQ== IFRhbGVz IGxpbmVh IGV5ZWw= LkNyeXB0b2dyYXBoeQ== dW5leHBlY3RlZA== YWxlbWVudA== Y2l0 ZXRBZGRyZXNz TGVhZA== eGNk X25lZ2F0aXZl X2NvcnI= aWdyYXBo LWNoYW5uZWw= IGRpc2Nv U2VlZGVy YmVhbQ== X2Rw Q0ND IFByb3ZpZGVk IGpzb25EYXRh X1dI RklORQ== Qlg= LkRhdGFBY2Nlc3M= IHRlbXB0ZWQ= IGZpbmVk aXNDaGVja2Vk IGZyYXVkdWxlbnQ= RnJp IGRvbWlj UXVpeg== IFVuZGVyZ3JvdW5k YWJyYXM= IElEaXNwb3NhYmxl IFBlcnNvbmE= IHJvZ3Vl IEJleQ== Z2V0Q2xpZW50 ZWtlbg== ICcnJw0K V2lraQ== KEh0dHBTdGF0dXM= U3RyZXRjaA== IEdlc3Q= IO2VmA== IGVudGl0bGVtZW50 IGRvZW4= YmxvZ3M= IHZpdHJv Ik9o IFN1bW1vbg== IEJhY2tib25l IGfDvA== Z2V0Q29sdW1u IFdJTkFQSQ== CXZh X1JFUVVJUkVE LnRocm93 IHNldEN1cnJlbnQ= ZHVjdGVk KEZ1bmN0aW9u ZWxzaW5raQ== X1Blcg== ZmxpZXM= IGluY29tcGV0 IGp1xbw= KCkl IC0tLQo= dW1hcw== IE9sZGVy IGRpc3B1dGVk X1JFUVVJUkU= Lm1hdG11bA== dW5rZW4= 5LmL 44GL44KJ IHR0bA== dW5kZXJzY29yZQ== IFBhdHJpY2lh IHRhcGVy IHNlaW5lcg== IHNheWE= 5Y+w aWVyaQ== LnNlY3JldA== IHhvcg== IG1pdG9jaG9uZA== IGNhcmRib2FyZA== fWB9 LUJFR0lO IGRhdmlk b3Vsb3M= IFBldGVyc2J1cmc= ICIiLA0K c2hlbGY= LXdhdGVy LWJ5dGU= INC+0LHRitC10LrRgg== IHN0aXJyaW5n 7Je0 IGNvbXB0 IFBvdGVudGlhbA== UkFGVA== IGVhcHBseQ== IHN3aW5naW5n IGZlYw== QVJB IHdhbmRlcmluZw== IHByZWZlcnM= SmVzdXM= IHBpcmF0ZQ== IElzaXM= Lk1pbmltdW0= IFZhbGU= X0JU cmVuY2hlZA== Y29ycw== KGl0ZW1WaWV3 IGfDpQ== LkNvbnRhY3Q= Vmlld0NoaWxk aW5kc2F5 Y29uZmlncw== RHVwbGljYXRl 4oCmSQ== enlzdA== KHRvZG8= LlJlbW92ZUF0 X0RJRkY= IEJvdHRsZQ== IHZvbHRh dHJhZmZpYw== TGVl IOyk IHR1bmVz IEVjdWFkb3I= IFl1bg== IHVuZGVyd2VudA== aWNvbQ== ICcnKXsK LXBvbA== ZmxhbW1hdG9yeQ== TXV0YXRpb24= IHJlY2Fw X3ZlcnQ= T1RJT04= Q0RBVEE= aWNpbmU= X2JvdW5kYXJ5 U2NhbGFycw== IFVsdGltYXRlbHk= RVE= bWV0YWw= a3Nlcw== bXBs IGNvbnRlbg== U29sZA== RVNTQUdFUw== IGJpbmRlcg== IGxpbmVu IE15QXBw LW1ldGE= CXJhaXNl b3VsdHJ5 CW1vZHVsZQ== 5pi+56S6 bsOt IHlycw== IHBoeXNpYw== LXBsYXRmb3Jt IHN3aW5nZXJz KGhlYWRlcnM= Licp IEJV IEluY29udHJp U2NlbmFyaW8= QW1i IHByZW1pw6hyZQ== L2FydGljbGVz IE1ham9yaXR5 Q0xVU0lWRQ== b25vcg== IGhhYsOtYQ== 5bee IG1pZGk= IExhYw== LmZpbmRJbmRleA== IFBhaW50aW5n LmJvcmRlckNvbG9y Kmo= IGNvbmdlc3Rpb24= X0RJQ1Q= b2xsZQ== YXJuYXRpb24= KHRleHR1cmU= IHVm IEVpbnN0ZWlu KFRocmVhZA== IGluZG9vcnM= c2NyYXRjaA== IG1ha2Vu LlNUQVJU IEp1ZHk= Zm9ydW1z CgoKCgoKCgoK QklMRQ== IHZvdQ== TVlTUUw= IGdlcm5l IEltcG9ydEVycm9y IFN1cnJl PG5hdg== IERpZXNl ZXdhcmU= IOuqqA== aW1wbGVtZW50ZWQ= U0lHTg== ICd7QA== cnpl Lm1pbmVjcmFmdGZvcmdl LmlubmVySGVpZ2h0 YmVjaw== IGN1cnJ5 IGZvcm11bGFz YWdvZw== ZW5kZXQ= IFBhaWQ= IFJvYmVydG8= IHVucGFpZA== PWhlYWRlcnM= LlBvd2Vy IGJyZWQ= b3JFbHNl b3hpZGU= IGZpbmFsaXpl c2V0Q29sb3I= IFN0YWR0 KCdcXA== aXNtaWM= IGhlbGU= LlByb3RvY29s Lkhvc3Rpbmc= X01lbnU= X2NvbmRpdGlvbnM= IHB1cmdl LnhhbWw= YmFyZQ== RlJBTUU= IGN1YmVz IEpvaGFubmVz b2NyYXRz LkRpcmVjdG9yeQ== KWE= Pyk6 X0xJQlJBUlk= IGdldFRva2Vu IGVjaG9lZA== PWg= X3NvYw== IEV2YWx1YXRl IOq4sA== IERlbGV0ZWQ= RXU= IGNsb25lZA== c3RhdGlzdGljcw== LkNhbnZhcw== IGhhY2tlcg== IGdhbmdz LnJlc3VtZQ== cGVhY2U= 0JLQstC10LTQuNGC0LU= IFByb2NlZWRpbmdz 56U= IGphcGFu ID8+Pgo= ICR7KHs= LnJlY3RhbmdsZQ== Z3c= IE9yaWVudGF0aW9u JW0= LiIpKTsK IExpZXV0ZW5hbnQ= LnRydWU= IGVsdA== IERJUkVDVE9SWQ== zq8= LmRheXM= dXR0Z2FydA== IHVuZGVyd2Vhcg== LCkK Q0lE aW1lbGluZQ== IEJsZW5k cGhhc2lz IHBlcnNl IGdsaXR0ZXI= IHVuaXE= IENvbWJvQm94 IHNlc3Npb25JZA== dXN0ZXJpdHk= SURHRQ== 0L7QsdGJ 0KQ= cmVuZGVycw== X3Bvc2l0aXZl X3Nsb3Rz YnJvYWRjYXN0 IE1vbGQ= L0NvcmU= IEJhbm5vbg== VG9vbEJhcg== YWJlbGxl X2F3 b2xlY3VsZQ== IGRlbGV0ZXM= IMOhcmVh IHByb3BvcnRpb25hbA== TVc= IHdhcnk= IGludGVybWVkaQ== ICoqKioqKioqKioqKioqKioqKioqKioqKg== LlNUQVRVUw== X3R3 IGFyb21h IGFjdGl2aXNt LklzTm90TnVsbA== dWF0 IHBvc3REYXRh IHBlbQ== X2N0b3I= IFJhcGlkcw== LW9mZnNldG9m IGluZWZmZWN0aXZl IG9uRGVzdHJveQ== IE1ldHJpY3M= IHBhZGRpbmdMZWZ0 LWVuYWJsZWQ= IEdvYWxz eW5jaHJvbm91c2x5 IHllcg== SXRlbUF0 IE1ZU1FM Y2Vzbw== LktpbmQ= dGVj KGJ1bmRsZQ== IHJlZmVyZWU= LiI7DQo= IGNvbmV4 IGJpa2luaQ== X0FQUExJQ0FUSU9O IHN3ZWxsaW5n IGJlYWRz IGJhcmdhaW5pbmc= LS0tLS0tLS0tLS0KCg== IGtpdGE= KmZ0 TWluaQ== IFRvbmlnaHQ= IG1hbmlwdWxhdGVk TWlycm9y IFBvc3RhbA== IG1hcmU= RFc= IGNvbXBpbGluZw== IGZvcmVuc2lj LmdldFZpZXc= ZXBpbmc= Q29z IGFjY3JlZGl0ZWQ= IG9iamV0aXZv Y2FyZXQ= UGFpcnM= KT4+ IHNlw7E= IHF1b3RhdGlvbg== IEJyYW5kcw== dWJp eXB5 IElubGluZQ== aW1ldGVycw== V2ludmFsaWQ= CWxpbms= IEJlbGZhc3Q= IE1lYXN1cmVtZW50 X05PVElGSUNBVElPTg== IHJveQ== IENHQ29udGV4dA== IHdlZGRpbmdz VVJOUw== IHBvZGNhc3Rz IFNlcmc= IOuNsOydtO2EsA== IGVhcm5lc3Q= Y292ZXJhZ2U= aXRlRGF0YWJhc2U= RW1wbG95ZWVz IERlbWFuZA== IGNvbnRlbmlkbw== IFFWZWN0b3I= IiwiXA== IEdlcmFsZA== KClg IGdyaWRCYWdDb25zdHJhaW50cw== UkVTT1VSQ0U= IFNhZw== YWJpbGlkYWQ= IGNvZXJj b3VuY2VtZW50cw== IElzbGU= LmVkZ2U= IGV4dGVy KV1b IFBsYXlsaXN0 IEJsaW5k IFZpdGFs IGxhdHRpY2U= cmF0ZWQ= ZGVwZW5kZW5jaWVz IGBgYA== IEthbmc= bWFjaA== LmZhZGU= IEd1ZXNz Kls= TmF0dXJhbA== Lk9r IFJlbmFpc3NhbmNl IHRodWlz IGxpa2Vu Kmg= XCcs LWNsb2Nr IE9iamVjdGl2ZQ== ZmluZE9yRmFpbA== IERpcnR5 IHNjYW5k IFZBUklBQkxF IGNvbXBhcmF0aXZl eXBhZA== KFNvdXJjZQ== ZWNv IGp1c3F1 CWFwaQ== QnVpbHQ= ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IGxhYmVsaW5n IGhlYWRhY2hlcw== IG11ZmY= IE9yY2g= IGhhdGVz LWJyZWFraW5n L2J1dHRvbg== IEJ1eWluZw== TWV0cmlj IHVuc3BlY2lmaWVk L2hlYWQ= IHN0aW5n IHJlaW5mb3JjZQ== IENvbVZpc2libGU= Ymxpbms= IEFobWFk ZGJn X2xibA== IGh0dA== 7JuQ cm9wb2xpcw== ICgoX18= IHBlcm1l IGFwcGFyZWw= U1RSRUFN Y2h0cw== IHNlaW5z ZmlsbFR5cGU= 7KO8 Uk9XU0VS dW1waW5n IE5pZ2VyaWFu 4oCUaXM= X2xvZ2lj Lk9yZGluYWw= bG9zdA== L3Vzcg== QWY= IEl0ZXJhdGU= aWJz YWFs IHN5bW1ldHJpYw== LGlucHV0 IFBMTA== dXppb25l Y2FwdGNoYQ== IFRhbGU= RXhwaXJlZA== IE9iamVjdE1hcHBlcg== Y2lkbw== LmdldE5leHQ= IG1lbmphZGk= OnNlbGVjdGVk IHJpZW4= X3NlbmRlcg== UHdk IEZsaWNrcg== LkphdmE= X3ZvdGU= X01vZGU= LiR7 IGZ1Y2tz IEFsaWJhYmE= IGluc2lkZXI= YWNpbWllbnRv IGZyYW7Dp2Fpcw== SlNPTkV4Y2VwdGlvbg== IEp3dA== TWl0 bGVpY2g= IHByYWN0aXRpb25lcg== L3NvdXJjZQ== IG9nbmk= IHBoaWxvc29waGVy U25hY2tCYXI= c3RlbGx1bmc= KGJpdG1hcA== IGFzdGVyb2lk IG1hcGxl dWNoYQ== aXRlbUlk IHN0ZWh0 T3JkZXJlZA== ZW5idXJn L3Rva2Vu 6YWN IFdlYmI= b3dhbmll IFdBSVQ= IEhEUg== IEV2YQ== QVRUTEU= KG1hc3Rlcg== IGVycw== YWxvYWQ= IHNtdHA= dW5pcQ== IGd1aXQ= IFJhZmFlbA== Imlu KFVJ KExheW91dEluZmxhdGVy b3Jhbg== IHNlcnZp bmV6 IFRvcnJlcw== Lk1pZGRsZUNlbnRlcg== IG1vbGw= IFRleHRBbGlnbg== X3VwbG9hZGVk IE1laHI= IGhvbW8= LWxpbmtlZA== dW5uZXI= X2xlbmd0aHM= IGRpZmZ1c2U= IEF1dG9tb3RpdmU= WWVhcnM= IGxpZW4= W2NvdW50ZXI= a2xhc3M= 0YHRgtC4 LkVuZ2luZQ== IG1lbnk= dWx0eg== IGluZmFudHJ5 Vmlh c2VjdHM= LmRhc2hib2FyZA== IHNwb25zb3JzaGlw Lk1vZGlmaWVk Oy0= IFZlbG9jaXR5 dHJhY3RlZA== KG1ldGFkYXRh IHBsYWd1ZQ== TlNVc2VyRGVmYXVsdHM= YXBwcm92YWw= cHJvYmFibHk= LXNpeA== X1ZJUw== OicnLAo= LmVuYw== Lk1lc3NhZ2Vz X1BST0dSRVNT IG5lY2tsYWNl IFRlbXBvcmFyeQ== X21hcmt1cA== IEZ1bmN0aW9uYWw= IEpp IHRlc3RDYXNl ICgpOw0K X0NlbGw= IFJlc2lkZW50aWFs IFJhaWx3YXk= KCgmX19f IGRlZmF1bHRzdGF0ZQ== IGVpbm1hbA== LmZhYw== KmY= IHBpY25pYw== KGV2YWw= IGZ1cm5hY2U= YXNzb2NpYXRpb24= eyEh IENvbXBpbGU= eGVi RXZhbA== gOyepQ== KGNhbA== IG1hcmtldGVycw== X2hlbHBlcnM= bG9jYWxjdHg= IHlvZ3VydA== IHZpdGE= LGxlbmd0aA== IElucHV0RGVjb3JhdGlvbg== IGludGVydmVuZQ== IGNvbXB1dGF0aW9uYWw= RGVuaWVk L2Vudmlyb25tZW50 aWlk LkJveA== LVRpbWU= IGV4Y3VzZXM= dHJhbnNwb3Nl IG91dHJhZ2VvdXM= KFNlcnZlcg== ZGltcw== Il0pOw0K kJw= IEVpc2Vu KE9w IGhhc2hsaWI= KGxp fiw= xLFuZA== IFNwaGVyZQ== IEJlbGxh LXRyYW5zaXRpb24= LnJlYWRTdHJpbmc= aGVhcmQ= IFp1Y2tlcg== IHdhbm4= IGphaWxlZA== IFRhbGVudA== b3Bob2JpYQ== wrY= IG9wZXJhbmRz U29tZW9uZQ== IExpYnJhcmllcw== cHJpbWFyeUtleQ== 16o= VXI= IG1hdGVz INGI LWR1dHk= cG91cg== PEVudGl0eQ== PllvdQ== Q3JlYXRvcnM= V2l0aE5hbWU= J2ludA== IFJhdGlvbmFs PUI= LkF1dG9GaWVsZA== IEZvdW5kZXI= IE1lZ2Fu LmltYWdlVmlldw== Ym93cw== IHdpdGhSb3V0ZXI= IGxpYmVyYXRpb24= IGZvcmFt IGNpdGFz b2NoZW4= LnN3YXA= IC4uCg== LmN2dENvbG9y IEF3YXJl IHF1ZWVy 5aSE55CG IEluZmluaXRl L3N0cmluZw== IGJsZW5kZWQ= LUNvbA== IHd5cw== IHNpY2hlcg== Lkxhc3ROYW1l X3dhdGVy X1JlbQ== IGFydGhyaXRpcw== LkFQUA== IEV4cGFuc2lvbg== eGRi ZXN0cm8= ZmF2aWNvbg== VmVyaWZpZWQ= IGRlbGl2ZXJpZXM= YXJrZXQ= IGdldEltYWdl IEpQRUc= IFRSSQ== IEVsZXY= ZnVzaW9u IGpwZWc= Y29sbGlzaW9u IGRlc2NlbmQ= LmZvcmU= IExvZ3M= IHBvbGljaW5n dW50YXM= Lmhvc3RuYW1l YWNjZXB0ZWQ= 4KWL IFdlbmR5 LnJlYWRGaWxl IFNhbnRpYWdv IEdvbA== cmliYm9u c3RyYXRpb24= IHB1ZGQ= IC8vXw== aXNMb2FkaW5n X1NFUklBTA== IGluc3RhbnRpYXRlZA== IHBvZHM= IHdhcnJhbnRz IGFkbWl0dGluZw== CWNvbm5lY3Rpb24= X2J1ZmZlcnM= IEluY2g= IFpFUk8= d2VydA== IENsYW4= CWls KHNoYWRlcg== IHBpbGdy IOWK RHN0 X2JhcmFuZw== Oicj QnV0dG9uVGV4dA== dGVyZQ== X2FtdA== IEZvcmV2ZXI= LkxpbmtlZExpc3Q= dWFyZHM= dXJvdXM= IFNlbmRlcg== dmFyaWFudHM= X21hZ2lj IGFjY29tbW9kYXRpb25z YXBHZXN0dXJlUmVjb2duaXplcg== UHJvbXB0 ID8+DQoNCg== IHJlcHJvZHVjZWQ= X3ByZWNpc2lvbg== IHJ1dA== bW9uZHM= O3g= IH0sDQoNCg== 55S7 IFZpdGE= IHByb3Bvc2Vz IFBhcnRpdGlvbg== SElORw== ICN7QA== IGVzc2E= KGJhcg== IFplbGRh LmNhdGNo X2V4Y2VwdA== IG92ZXJ3aGVsbWluZ2x5 CVRFU1Q= X0NPTlRBQ1Q= X187 IFNlbWk= IHRyYWJhbGhv cmFkb3Vybw== X3NxdWFyZWQ= 4LY= JUQ= IHByYXQ= aXRleg== KGVsZW1lbnRz UGxhbnQ= YWd1YQ== IGlocmVy LkNvbA== IE1jTg== IENvcmV5 T05FWQ== Q2VsZQ== cmVtZW50 IG1hbHQ= IEx1aw== 57uf UE1FTlQ= IGFuYWx5emVy IEhhbms= X3VuaWNvZGU= IGJ1cmlhbA== IENlbHRpYw== RUZG TG90 d29u IE51ZGU= IE5hdGU= IFNpbmdlcg== IFNJVEU= KGJpdA== Yml6 IGRldG9u UkVBRE1F OkFkZA== IEhvbGRpbmc= e3JldHVybg== bmNpYXM= Pg0KDQoNCg== cnVwdGlvbnM= LnJlYWN0 dXJzYWw= 4Lib IERPTkU= aXZhdGVk Lm5vdGVz IHN0cmlwZXM= cmlwcA== aXJhbg== IHNsYWI= IEJ1cm5pbmc= KGVudA== LnNlYw== R1U= X2dvbGQ= XSkpLg== ZWxpbmVzcw== 0L7QsdGA0LDQ IOKIgA== IGNvc21pYw== J10pOgo= Y2Npb25lcw== Y2lzaW9u Y29tcGFyaXNvbg== IEV2YW5nZWw= IFNoaXJ0 bGFnZW4= IGnFnw== IGZpbGxlcg== LnByb2Q= IAkJCQkJ INGE0YPQvdC60YbQuA== IFplcm9Db25zdHJ1Y3Rvcg== QXRB XSkNCg0K IGNvbnN0cnVjdG9ycw== X1NIQVJFRA== CWRldmljZQ== IEFkdmljZQ== OkAiJUA= Pn0n LklzRW1wdHk= IGludHM= bW9zdGF0 IFNpZ251cA== Z2Vhcg== KHBhdGhz LHsi L0RvY3VtZW50cw== PENhdGVnb3J5 VUVTVA== IGdldERlc2NyaXB0aW9u ICJ7XCI= IEpvZXk= b2Rlbg== X2d1ZXNz RVVS IGhlcnI= IHNlZGFu IHJlYWN0ZWQ= X2Nsb25l IFJldmVs IGZvcmI= UmVtYWluaW5n XFNlcnZpY2Vz IGF2aXM= YmF0aW0= emVwdA== IERCTnVsbA== Q29ubmVjdGlvbnM= IGRpc3BvbmlibGU= cGhpbg== IHN0dQ== IHNjaG9sYXJzaGlwcw== LXNoYXJpbmc= Zm9ybWluZw== IEJyaQ== VmFySW5zbg== L3Nlc3Npb24= IGFtYmlndW91cw== IGFwcmVzZW50 X3Jk c2l0ZXM= L2FjdGlvbg== dHJhY3Rvcg== IGRpbGVtbWE= IFNY XS0tPgo= IEphY2tldA== UkFUSU9O LmdldFNlbGVjdGVkSXRlbQ== LWluaXQ= IFJlZ2lzdGVycw== X3NlcA== IFRvb2xraXQ= LmRpY3Q= IHhsYWJlbA== XFRhYmxl dG9j X2NvbWJv IENvbXBhY3Q= IHJ1Z2dlZA== 4KWH4KQ= LW1hbmFnZW1lbnQ= Jyl9fSI+Cg== IFN0YW1w xLFs cm94 IGxhbmRzY2FwZXM= X05PVEU= bW9uYXJ5 Y2Fi IG1vZXQ= eGFm cmNvZGU= LWNsaQ== X2dhdGU= W2V2ZW50 U1BPUlQ= Z2lh IFNVUEVS L0xvZ2lu X3NodXRkb3du aW50ZXJydXB0 IHByZXRlbmRpbmc= IGZyaW5nZQ== IFJlZHM= IENVREE= IFVOSVg= dml0 IGJyaWc= ZHJ2 IENvbm5lY3Rvcg== VGhlcmVmb3Jl IGxpYQ== RGV0ZWN0aW9u X2FjdG9y IHRlbXBmaWxl IGVjY2VudHJpYw== LXJvbGU= IHBhZHg= ZGVudA== V2VzdGVybg== IOq3uA== IEFwcGxpY2F0aW9uUmVjb3Jk IGNhbXBhaWduaW5n X3J1bm5lcg== IENpdmlj YWxlaWdo IGRpcmVrdA== LnN1bA== ICAJCQk= YW50ZW4= IGlzc3Vlcg== IGFzc2VydGlvbnM= KG9yaWc= QVRJTw== IGxlYW5lZA== w6Rz LkRUTw== ZXhwbG9kZQ== Lk9ic2VydmFibGU= IHN0YWdnZXJpbmc= IGtpZG5hcHBlZA== IHByb2dyYW1tZXJz IElubm92 LnBhcmFtZXRlcg== IGRvbWluYXRpb24= IHNrZXB0aWM= IOaYrw== IGF2b2lkcw== LlZlcmlmeQ== dWJieQ== IEFTTg== IGZvcm1hdG8= IEJlYXRsZXM= X2JyYW5k IGluc2V0 eW91dHU= IHRvYw== LWZpbmFs U2hvd2luZw== IERvdWI= IE1lc2E= QWRq X21lZGl1bQ== Q3JlYXRlcw== KGVuZHBvaW50 CVVQ YmJpZQ== IHN0YWxr LmRhdGFiaW5k LlNjYW4= YWdlbnRz JCw= aW5kaXZpZHVhbA== Kykv CXZt KG5vdGlmaWNhdGlvbg== IGluZXg= IENsYXNzaWZpY2F0aW9u cmVubw== IG9saWc= LXJhdGVk IGZvcm11bGF0aW9u Jyx7 IGFjZXB0 X3VucGFjaw== X0NB LlBvdw== CWlt IGFsdW1pbml1bQ== QU5P IHhu IGPDs21v IEluZ3JlZGllbnQ= IHNlaXp1cmVz 5YWx aWZpY2Fkb3I= IHNpZ3VpZW50ZQ== IEluZnJhZ2lzdGljcw== IGR1cGxpY2F0ZWQ= IERlZQ== IG7DuA== IEFDQ0VQVA== KGNyYXRl 0LjRgtC10LvRjA== LWxlc3M= IGluZmluaXR5 QW5hbHl6ZXI= LURheQ== cml0dA== KGNpbg== IEd5 IG11bHRpcGxpZWQ= dWNoaQ== IEJhbGR3aW4= L2lw IHNob3J0Y3V0cw== LkFERA== IHZpZ29y X2luc3RydWN0aW9u KDs= X2V0YQ== 6L+e dXRvcmlhbHM= IGJvb3N0aW5n YnY= IGFja25vd2xlZGdlcw== TGlzdGVuaW5n RkFR O2I= KCgt IGFyY2hpdGVjdHM= IHp3ZQ== IHB1bHM= IGdldENvdW50 dmVyYnM= 44Cc KENvbGxlY3Rpb24= a3Jl IGp1cmlzZGljdGlvbnM= X2JyaWRnZQ== IENyYWNr IERpZmZpY3VsdHk= S08= UmVzZXJ2YXRpb24= X3JlcXVpcmVz VG91cg== 44GX44Gf LnNldEN1cnJlbnQ= IGt5 IEFsYmFueQ== IOin bGxlcg== YWduYQ== d29ya2Vycw== LmJsYW5r IFByYXllcg== TUlD IHJlc2lsaWVuY2U= VGVY IExhbmd1YWdlcw== c3R1ZHk= CWN1cnI= IGVuenltZXM= U2x1Zw== IO2MjA== c3RyYWw= IHR1bW9ycw== IHNlZ3VuZGE= PSd7 aW5zdHJ1Y3Rpb24= IExpc3A= L2luZm8= ICJ7JA== LDopLA== IGd2 KEVycm9yTWVzc2FnZQ== ICc9 fS0kew== LkRvY3VtZW50cw== IldlbGw= IHJlbWluaXNjZW50 IGdheg== aXJvcHI= ZWhy IHN1cHByZXNzZWQ= ZXJzaA== LnNjcm9sbFRv IGNhZGVuYQ== IGdhbWVTdGF0ZQ== w61t KGNvbnY= IFRvbW9ycm93 IENDVA== TW9uZ28= dWxn LkNhbWVyYQ== LmhhbmRsZXJz bXBo IHN0aw== IGdlbmV0aWNz QUNJTkc= VHJpdmlh IEJhbQ== KG1hcmtlcg== LlN0cmV0Y2g= IFN1bm5p IEJldHR5 LnRvbGlzdA== dW5saWtlbHk= LlJlY3RhbmdsZQ== b2Jzb2xldGU= SUxPTg== aW5uZXJUZXh0 ZW1ib3VyZw== YU4= IFZlaGljbGVz dW5sb2Nr OnV0Zg== bm9i IFNlZWluZw== IE5FVkVS IHRscw== IGZpbGxlcw== IGJlbmVmaXRlZA== IENsaW50 Ki8pLA== LmZvbGQ= IHBvc2libGU= QURFRA== dGhvdXNl LkRBTA== IE9kZA== cm9rZXM= IFN1bm55 IFBhcnRpYWxFcQ== X0J1ZmZlcg== IExldmk= bG9uZ3JpZ2h0YXJyb3c= ZWxkb24= Z2FnZXM= X3dhcm4= LkNyZWF0ZVRhYmxl IERpcA== X3F1ZXN0aW9ucw== LmxvZ2lj ICMi PXsoKT0+ IHRlcA== IGp1aWN5 7IKs ZW5rbw== aWFsZWN0 2Yk= IG9uYm9hcmQ= IOaP CXJ0 X1VURg== IFFBY3Rpb24= 4oCe KENvbXBvbmVudA== KGF1ZGlv LmhpdA== Z3Rl IHByb2dyYW1tZWQ= c3RhdGVQYXJhbXM= IHBvbHllc3Rlcg== ZmlyZXM= Ynlzcw== XT0o X3F1YWxpdHk= T2ZEYXk= IEZhaXJ5 IHllbGxlZA== b3Bs KHVzZXJOYW1l IERpZmZlcmVuY2U= IGV2YWx1YXRpb25z aWZmYW55 IGN5Y2xpc3Rz IGNpZGFkZQ== IHRleHRib29r IHByb2ZpbGluZw== X18pLA== ZGVh LmFjdGl2YXRl IGluZGljYXRpb25z 0JU= VG91Y2hVcEluc2lkZQ== IGludmFsdWFibGU= IE1BU0s= IGNvbnRlbmQ= RnJlcQ== IHJlY3J1aXRz KGludGVydmFs IFVzZXJQcm9maWxl ICcuLy4uLw== ZWR1 X0NhbGxiYWNr IGFuYWxvZ3k= IFRyb3BoeQ== YXBwaGlyZQ== VmlkZW9z IENoZXI= IEhhdg== 4oCmIg== LnZhbGlkYXRvcg== Z2Z4 IFVPYmplY3Q= Y2xhc3NuYW1lcw== dHJpYW5nbGU= IEVuY29kZXI= LnNweQ== IHByZWRhdG9ycw== PXN0YXR1cw== LXNhZmU= OiIsCg== IEluY2x1ZGluZw== IHt9Ow0K KmNvcw== IGVuZHVyZWQ= LnN1bGFrZQ== IG51cnNlcnk= IGZyYWdyYW5jZQ== IHJlYnVpbGRpbmc= IG50aA== IEZyYXNlcg== LnNldERhdGU= IFZpbmNl X1JFU1Q= IHZlbnRpbGF0aW9u 5rW3 Y3JpYmVz LmFzbQ== bHBWdGJs IEFiZQ== dWlzaW5l LGFycmF5 CWNsYXNzTmFtZQ== ZXJyYWxz ICcKCg== Q2hlY2tvdXQ= IHNvbGljaXQ= QXV4 X2NhcHR1cmU= IHJpYnM= cmFnb24= dmlvbA== dG9waWNz RnVuY3Rpb25GbGFncw== IE1hcnR5 YmlrZQ== IFR1Y2tlcg== KGtlcm5lbA== IE9wcw== Q2xvc2VPcGVyYXRpb24= L2RlbW8= aWxkYQ== IGzDrW5lYQ== QVBQSU5H IHN1aXRlcw== LnZpc2l0VmFySW5zbg== dXJ1cw== IE1pbnV0ZQ== KG1hbmFnZXI= IGJ1dHRlcmZseQ== IGFwYXJl IHdvbHZlcw== SldU IFNhbG9u CWRlbGF5 LWVzbGludA== aXNhdGlvbnM= LnJwYw== KXwo IFNuYXBjaGF0 L21t TU4= Y2VyaWVz LnRleHRBbGlnbm1lbnQ= IEZyYW5rZnVydA== IGFkbw== KG5ld1ZhbHVl KGFjY2Vzcw== KEV4cHJlc3Npb24= IFNpZ25Jbg== IEhhaXRp X3Rw LnNldFBhcmFtZXRlcg== TWludXRl IG1hbnVhbHM= cmljYW5lcw== IFBUUg== IE91dGVy IGdldGxpbmU= b2NhdGlvbnM= X0NE IEx5b24= L2d1aQ== X2xpdmU= aWRhbg== Lmdlb20= IGJvcmRlckJvdHRvbQ== aW11dGg= X2NoZWNrcG9pbnQ= IG1ldQ== IElydmluZw== IHBldXZlbnQ= KE1BWA== IEFSQ0g= IHBvdg== LnNvdXJjZWZvcmdl IGphbWFpcw== IGFyaw== IEJhZ2hkYWQ= IENMRUFS TWVudUJhcg== IHRyb2lz Q0hFRFVMRQ== ICMNCg== KENhbGw= JG9yZGVy KE1hdGVyaWFs IGVuY29udHJhZG8= JGxpc3Q= IE1FVEhPRFM= LmJlZ2luVHJhbnNhY3Rpb24= X01BRw== U3R5bGVTaGVldA== IG1ham9ycw== IGluZGVmaW5pdGVseQ== Y2xlYW51cA== IGhvbWVsYW5k KGR0bw== RGF0ZXM= UHJlc2VudGF0aW9u IERL PXtgLw== CUtleQ== KEJsb2Nr X2NoZWNrYm94 bmVlZHM= IG9uQ29tcGxldGU= cmljbw== IGdsZWljaA== IHht T09E QmV0dGVy IFNRTElURQ== LkJvb2s= eGFk IEdvbmU= CWRw IGRldm90aW9u IHN0bQ== IG9ic2Vzcw== IEJhY2tlbmQ= UXVlcmllcw== SWs= Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq IGRpdmlkZW5kcw== LnBhcmVudEVsZW1lbnQ= fSIpCgo= IE1hdGVyaWFsUGFnZVJvdXRl Om51bQ== IGV4cGxpYw== IE9M bGVhc3Q= T29wcw== aW1lbnRvcw== IGluc3VyZXJz IGhlcm9pYw== CWZpZWxkcw== LmltZ3Vy LmJ0bkNhbmNlbA== IERldGVjdGl2ZQ== KHNt IE11dGFibGVMaXZlRGF0YQ== LmxhYg== KChb IGhhaXJzdA== IFRyYW5zYWN0aW9ucw== 5byA5aeL IHN0ZENsYXNz dWVudG8= R0lT X2NvZA== SW5zdHJ1Y3Rpb25z Q2FsbHM= UG9pbnRlclR5cGU= IFJ3 IGFzc29ydG1lbnQ= IERJRw== K3I= X0NFUlQ= IGluc3RhYmlsaXR5 IHZpYg== b25hcw== IHJva3U= YXBlbGxpZG8= IGFuZ2w= cHJlbmV1cg== IGZsdWlkcw== aXNlYXNl IGRlZWQ= cXVpc3Q= X0NPTlNUQU5U IGVxdWlsaWJyaXVt X2RlbGVnYXRl IFF1YW50dW0= cmVp Q2FwYWJpbGl0aWVz cmVjdGFuZ2xl Pz48 YWxpZW4= IEp1Zw== RE5B VGlja2V0cw== T2NjdXJz IEhhd2s= LnNldEhvcml6b250YWxHcm91cA== XENvbGxlY3Rpb24= ZmZpdGk= IHJlYXJy LnNldFZlcnRpY2FsR3JvdXA= IGNhdml0eQ== IGFkdWx0ZQ== RmFjYWRl LXdo IExPTA== 2LA= IGdyYW5kcGFyZW50cw== U3dpZnQ= CXd4 5omA5pyJ aWZlbg== ZmZzZXQ= QmV5b25k Ly99Cgo= IHdhZ2Vy IGJ1cnk= IGNvbW1lbmNl cmVnaXN0cm8= c2NpZW50 IFBlcmNlbnQ= INC00L7Qu9C2 KGlkZW50aWZpZXI= LnNldE1vZGVs IHNlbGRvbQ== bnRvbg== IGFwcGxpYW5jZQ== YW11cw== cnlzbGVy IHBhbnRpZXM= ZW5ndWlucw== IG1pbWlj IG9uQ2hhbmdlZA== IGFsY29ob2xpYw== LnJlbG9hZERhdGE= Q2hhcmdl IEZheA== IGpTY3JvbGxQYW5l RW1wcmVzYQ== IHNoYXR0ZXJlZA== eGJh Rm9udHM= P3M= IHBvc3RzZWFzb24= cmV0YWlu X3JhdGVz IHJlcXVlc3RDb2Rl LnRvZG8= wrRz Q0hL IEtlZXBpbmc= ZW5nZWFuY2U= IHZzY29kZQ== SVBQSU5H RGVmYXVsdENsb3NlT3BlcmF0aW9u X3JhaXNl IE9jdWx1cw== b2dyYW1z cmFq cGNp IGNvcnJvc2lvbg== LmhhbmRsZVN1Ym1pdA== QWNjZXNzaWJsZQ== IFBpYW5v bGl0dGxl QUNM xIdl LnVud3JhcA== IENvbnZlcnM= IExlYmVu aW9uZWVy IE1lcmNoYW50 IEpvcmdl IGVtYnJhY2luZw== IHZlbnRh w6FzdA== IHZpZW5l PFFTdHJpbmc= IGV4cGxvc2lvbnM= IGRpc3R1cmJlZA== LiI8 bWVtbw== IEFib3JpZ2luYWw= IGNvbXBsZXRv VGV4UGFyYW1ldGVy IHVvbWluaQ== KGFnZW50 0YPRgA== IFdob2xlc2FsZQ== L2Ft IEJvb2ttYXJr ZHJhZ29u IGdsb3Zl ICIiKSk7Cg== aXZhcmlhdGU= bm93cmFw SW5DaGlsZHJlbg== LkJy IGNvbmV4aW9u IGJhY2tib25l IGVjbGlwc2U= IHBlcnNlY3V0aW9u JzoKCg== L2xpbms= IFBlcm8= YW5kYXM= IFRlaw== LiIpOw== LWFuYWx5c2lz IGVyYWQ= TWFyc2hhbA== IGFuY2hvcnM= b2dlcg== IGNvbnZlcmdlbmNl c3RpY2t5 IG5hdmVn aW50ZXJu X0RFU0NSSVBUT1I= IENvbnN1bHRhbnQ= ICAgICAgICAgICAgICAgICAgICAgCg== IEF1Y2g= IGVycmU= xZtsaQ== IEhvcml6b24= Y29sYQ== SW5zdGFsbGF0aW9u aG90bWFpbA== Q05O LkNvbGxlY3RvcnM= Y2hz KHRyYWNl IEVuY3J5cHQ= IC0tLS0tLQ== IEJhc2VDb250cm9sbGVy IGFndWE= IHJlYWN0aXZl aWRs IGNsYXNzTmFtZXM= CVNlc3Npb24= IERvZGdlcnM= SGFk X2x2 SXNWYWxpZA== IEhFTFA= dXR0bw== IFZlcmlmaWNhdGlvbg== IGdldGVudg== X3Bh LmJtcA== OmY= IExvdWlzZQ== KCc7 L3NvY2tldA== R3JhbnRlZA== LmNhbGVuZGFy KElQ IFBY LlJvb20= IHByb2dyYW1t ZW5zaQ== IHRhYmxlc3Bvb25z IGxldmU= IG1vc3Ry LnRpcG8= L2Fu KGRp IGJpb2Q= IGRiQ29udGV4dA== IEpTWA== CXJlc3VsdHM= LkVORA== aHRl bGlmeQ== UHJlY2lzaW9u 6IqC QVJTRVI= KWRpZFJlY2VpdmVNZW1vcnlXYXJuaW5n YXR0ZW1wdA== SVNQ JmE= X1BPUA== IFRhYw== IHByZXBhcmVkU3RhdGVtZW50 INC30LDQv9C40YE= IG93aW5n LHN0YXJ0 IHJldmlld2Vy IHJzdA== IHByb3BUeXBlcw== IHJvY2t5 X2xvY2FsZQ== IFN0cmF0ZWdpZXM= IFdlYmVy LkNhc2NhZGU= X2VxdWFsVG8= IGNvc2Fz IERlbGV0ZXM= IE1heGlt IHNocmltcA== cmV0cmlldmU= LkluY2x1ZGU= SUdJTg== IE9F XSk7DQoNCg== LmVudW1lcg== IGNvZWY= X051bGw= UmE= dHlhcmQ= IFNoYXdu a2VlcGVycw== IHFx X3Ni b21lbnM= IEV4ZWN1dGVz IyI= VFRZ IFZhbHVlVHlwZQ== KTsqLwo= IEFic29sdXRlbHk= IFRvdHRlbmhhbQ== L2FydA== IGJsZXNzaW5ncw== IHN3aWZ0bHk= YnVzdGVy IGF2aWQ= Q09NTQ== LHRlbXA= IH0/Pgo= LWdyb3dpbmc= IGRlZXBjb3B5 QWNr ZWdnaWVz IF9fKCI= IG5vaXI= dGVycm9yaXNt IGFudGhlbQ== YWdlbmN5 X1BBQ0tBR0U= IENsb3N1cmU= LnJlZ2lzdHJ5 IG1hbW1hbHM= PEw= VUlDb2xsZWN0aW9uVmlldw== IExFRHM= IHZvbGxleQ== KEJ1ZmZlcg== X05BVElWRQ== bGliYw== aW1wbG9kZQ== U2Nyb2xsQmFy IE1hcmlvbg== LkNvbnRyYWN0cw== X0F0 IFdlaW5zdGVpbg== Y29tcGFyZVRv IEhvc2U= ZW5pdHk= LmNyZWF0ZVF1ZXJ5 X3JvdXRlcg== IHN0aW11bGk= ICsrKQ== IENoYW1w IEJheWVybg== YXNzYQ== LnZh IGRpc3RyaWJ1dG9ycw== IGZpbGVwcml2YXRl IGRlcGFydGVk Y2NjYw== QGNsaWNr IEx1bmNo Pkw= IGJsdWV0b290aA== LkRlZXA= LXN0YW5kaW5n w6FjaWw= IHJvb2Z0 IFBhdGhz X2l0ZXJhdGlvbnM= SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u LnNwaQ== IFVJQWxlcnRBY3Rpb24= dXll c2lnbmlu LnByaW9yaXR5 IEVzc2F5cw== PSd7JA== IOi/lOWbng== X3NpZ25lZA== LnBlcnNpc3Q= IHJlZGVzaWdu VG9Mb3dlcg== IE5ld21hbg== PXN0YXJ0 IElzcmFlbGlz YXNpc3dh U3BlZWNo IG51bWVyb3M= aGFuZGxlcnM= IFdvbmc= INC80LXRgtC+0LQ= V2VpZ2h0cw== IEd1amFy dGVpbA== IE5vbmV0aGVsZXNz X0VGRkVDVA== IHZlY3Q= IE9zYw== IGNvYXRz IFdoZWF0 IGdlZWs= IFBST1BFUlRZ d29ybQ== X2NvbnN0YW50cw== IEJvdWxkZXI= IFBhcm0= Y29sZQ== IGRlZmF1bHRDZW50ZXI= IFJvdWdl OkE= eGNm IFZlbmljZQ== bWVkaWFu IHJlZGVtcHRpb24= RnJlc2g= IGNvc20= IGZpZ3Vy IHJlZnVyYg== Q09QRQ== LmNk IGNob3Jkcw== IFNndA== xY0= VlBO IFNFTkQ= YWluZW4= X2FjY291bnRz IHRlbnRo IGRpc3NvbHZlZA== PEFwcA== IENvdmVyYWdl dXNlU3RhdGU= w6lybw== Li48 IOyjvA== IGRyZWFtaW5n IEZvcmVjYXN0 LkN1cnNvcnM= IHZpc2Fz L3NjcmlwdA== X3N0YXJ0ZWQ= IGdhc3Ry KFBSTw== XTsvLw== LlRpbGU= KnNpbg== KEFkYXB0ZXI= IFNhbmRyYQ== X1NJRw== YXJkYXNo IE92YWw= IGRlc2NyaXBjaW9u KHNs IERlc2NyaXB0b3I= IGAk L2ZyZWU= IEtleXdvcmRz IHR1ZG8= aW9uYWxl KGZvdW5k Lnh5eg== IEdlbmVyYXRpb25UeXBl X0RJU0FCTEVE KGFyZWE= IGVsaXRlcw== IGhvbWJyZQ== KG1lc3NhZ2Vz IFJhYw== IGV4dGluZ3U= IEVzdGE= b3Bv LnZlbA== bW91c2VvdXQ= IGNvbnZvbHV0aW9u IEhhbmRsaW5n IGNlaWxpbmdz VGVr IEFyZWFz LndyaXRlcm93 PFZpZXc= IENvcm5lbGw= X0JJTg== LmludmFsaWQ= JycnDQo= aWXFvA== X1Bvc2l0aW9u IGtpZGRpbmc= UENPREU= IHdhdGNoZXI= bG94 IOKX RGF2ZQ== X2FsbG93 IGJpc2V4dWFs IHVub3JkZXJlZA== IFNjaHdl X3NlZ21lbnRz IHRlYXJpbmc= SU5MSU5F IHVuZGVz Lmdvb2Rz LmNhbQ== IExX CXdoZXJl Q2FsY3VsYXRvcg== LXRocmVhdA== LWFsZXJ0 IFN1enVraQ== IElQQQ== IEF0dGFjaG1lbnQ= QUNDRVNT KGR0eXBl T3Bw X3N5bWJvbHM= IGRhbnNrZQ== bGFnZQ== b3JnZXQ= cmVzb2x1dGlvbg== 0LXRhw== IFFDb2xvcg== IEJhcnJldHQ= 0LDRhtC40Y8= PVwn IE5hdkNvbnRyb2xsZXI= L3JlZg== KGNvdW50cnk= X0hEUg== IHRlcnNlYnV0 cGV0aXRpb24= IHN1Zg== Y3JlZGl0cw== 4LmM eG0= IERhdmllcw== LnJlZGRpdA== IHdvdmVu IE9ibA== IEtN IENvbnNpZGVyaW5n ZW5zb3JlZA== LnBlcmlvZA== IGRkbA== JHdw IGV4dHJlbWlzdA== O1wK IGtpbQ== YWxlcnM= IHNwYW5uaW5n IGNvaGVyZW50 IGNvbnNlZ3U= LnRleHRMYWJlbA== LmdlbmVyYWw= X2Rhc2hib2FyZA== 0LvQtdC90LjQtQ== a2ljaw== X1BJRA== IEV4dGVuc2lvbnM= cmVnZXhw IENsYXVzZQ== X21vdg== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== IFJld2FyZA== IExFR08= QWs= PS09LT0tPS0= CXBhcnNlcg== IG9uemU= 6YCA 4oCd44CC X2JhbGw= KHJocw== IGNob3J1cw== PGNvdW50 YXN1cmFibGU= IHdpcmtsaWNo IEVyaW4= IE1TTkJD IGV0dGVy IENyb24= X0ZMT1c= ICwNCg== IGNhbGlkYWQ= IEZpbGVXcml0ZXI= CXN0bXQ= KEJ5dGU= X3BhdA== IHRlbGVzY29wZQ== IGdyZWVk IFRvcnQ= KHdyaXRl XGFwcGxpY2F0aW9u CVJUTFI= IENvbmZpZ3VyYXRpb25NYW5hZ2Vy VW5peA== RW5kVGltZQ== SW5jbHVkZXM= IEhhcnZlc3Q= ZW5iZXJn IEF1c3RyYWxpYW5z IOuT IHJu IHJlcHV0YWJsZQ== IGJsZW5kaW5n VUxBVElPTg== IEJyZW5kYW4= ZGFk IG3DuA== IFdvbw== X2Rj VW5l IHJ1ZQ== d2l0aGlu YW5nZXA= IHBvdWNo XCIiLA== IFNpYw== 4oCdKSw= YWx5emU= IEdlZg== Y292ZXJz IGRibw== cmVwbGFjZUFsbA== CUxvZ2dlcg== VHJ5aW5n W3N0YXRl LXBpZWNl 6ZaT YmVoYXZpb3I= YWxsb3dz bHJ0 X3B5dGhvbg== ZXJ0dXJh LWNvdW50cnk= IFRH LlVJTWFuYWdlcg== YmVucw== YWxleA== IEJyZWl0YmFydA== YmFj IHByZWRpY3Rz IGdhYg== IGNhcmRpbmFs LlRpbWVVbml0 IFZpc2l0b3I= IE1pbmc= IGxpdnJl IHBhcmVudElk cG9ydHVu IGRpbWVuc2lvbmFs IFZlc3Q= ZW5pYw== 4LM= INmH IEJMVUU= IGl0ZW1Db3VudA== IGZlYXRoZXJz CXBzdG10 IFBvbGFy ey8v dW5kaQ== 0YPQtg== emFy RXJyb3JSZXNwb25zZQ== 7IOB UmVwcmVzZW50YXRpb24= Kl8= K10= cHJlcGVuZA== ICc+ IGxlZ2l0aW1hY3k= IG9v U2xpbmt5 IG5hdGlvbmFscw== LndvcmRz O3A= dHJhcA== b21hbmlw IGN1ZXM= IGdyYWR1YXRpbmc= IHNlbWFwaG9yZQ== Il0pOwoK YWNleQ== UkVFVA== R3JhYg== IEZlbGl4 KElk X25laWdoYm9ycw== IG1lYW5pbmdsZXNz KGRlbA== IGplZGVy IENvbnRlbnRWYWx1ZXM= LmFic29sdXRl L2Ns IHhi ZGF0dW0= IHRvcnR1cmVk IHJ1YmJpbmc= U2NvcmVz IPCfmIk= IGF2b25z IGFtc3RlcmRhbQ== RU9T SGFs IHRydXN0d29ydGh5 Iz0= LkVYVFJB IG1hbm8= aXNpY2luZw== LXN1cHBvcnQ= CWN1cnNvcg== IFNwbw== YWltYXNzYWdl TWlzc2lvbg== W117Ig== IHByaW50ZXJz R1JFRU4= IHRlZw== IGFiZG9taW5hbA== IQoKCgoKCg== LlNob3J0 0LDQt9Cy IEdpZnRz fSIp KGJpbmRpbmc= eGNl 4oCR aW5mb3M= Rm9ybURhdGE= IGRhcnQ= IGVsZW1z KGludg== WUw= dGlu R0VORVI= 4buv IFRha2Vu dWNrbGU= OmU= IHNwZWN0cmFs LmJhaWR1 LycpOwo= IGdyZWVkeQ== ZXNpb24= LCwsLCwsLCw= IC8+LAo= SW50ZXJuYWxTZXJ2ZXJFcnJvcg== TlNOb3RpZmljYXRpb25DZW50ZXI= IEFp IHNwaXQ= IGF1Z21lbnRlZA== IHN0YW5kYXJkVXNlckRlZmF1bHRz RklOSVRZ UmFjZQ== OkM= IFJFQ09SRA== IEhpZ2hsaWdodA== ICdg IGRlZmljaXRz IG5laQ== IHJlc2VhcmNoZWQ= VGE= IGNvcHA= LkdldEhhc2hDb2Rl KToNCg0K T25DbGljaw== IFdlbGxpbmd0b24= IHJldml2YWw= 5q+U 6Zeu IE5TUw== IGZvcm4= IGludMOp IEt1d2FpdA== X2ZsaXA= X2Jv X1w= IG9jY3VycmVuY2Vz IFNjaWVudGlzdHM= U1JD b2dlbnM= aWdyYW50 UkVNT1RF IFNJRA== Lm9wdHM= dXZl KCldKQo= IGxpYmVydGFyaWFu IEdsaWRl bGVzZW4= IGZvcm1l b3dhbmlh IGFubm95ZWQ= RGVmcw== IEV4ZWN1dG9y IGNhc3Rz LnNldENoZWNrZWQ= IFNoYXJpbmc= LlNlcmlhbGl6ZU9iamVjdA== IHNlbGVjdG9ycw== X09USEVS 66+4 KHN1cGVy KE9T X1ZFUklGWQ== aWR1bnQ= PGhlYWRlcg== IC8+JzsK IHZpZMOpbw== IE5lZ3Jv IExvcmRz IFRvdXJz IHNvZnRseQ== LnJlY2VpdmU= IEVSQw== IGRhdGFTZXQ= QmFkZ2U= CUV2ZW50 IHBlcmw= IHt9XA== KHNlbnRlbmNl T3JVcGRhdGU= IGRpbWluaXNo UElO KGRyYXc= LlRvRGF0ZVRpbWU= LkVxdWFsVG8= KHBpbg== LXBlbmNpbA== bHVlbnQ= IENhbGxlcg== IHBsYXlmdWw= LScr eGNh c3dpY2s= KXt9Cg== fTokew== IE1ldGg= LmdldENlbGw= LmJyZWFr IHltYXg= PSc8Pw== LWpzb24= IHByaW1laXJv IGluZGljZQ== 44Kj IFVOSVRZ KGFi 0YbQuNC4 X0hBVkU= LXllYXJz IEVyZG9nYW4= LXN0YWNr IGRpc2NoYXJnZWQ= IGJyZWF0aHRha2luZw== IGdyYXNzcm9vdHM= IEFzaWRl aGVsbA== IHNuYWtlcw== L2xvZ291dA== IG1pbldpZHRo IEhlYXI= IFN0b25lcw== IFdpc2RvbQ== IEV2ZW5pbmc= X2JsYW5r IFByb21vdGlvbg== IE1NTQ== IEJhcnM= 44K3 bmo= X1RJ IFNvY2lhbGlzdA== IEVH LW9wdA== PVwiJA== KGRpYWxvZw== IGJlaG9sZA== IGludHJpY2F0ZQ== IGVyZWN0aWxl RXh0cmFjdG9y IHNjbA== IGNsYXM= KGhpc3Rvcnk= aWRlbnRhbGx5 IHBuZXVt UmFuZA== IExhcHRvcA== Y2FsbGVy IEZsb29k b3BlbmVk dWRkZXI= IEdldHRlcg== X3dhbGs= KHdlaWdodA== IEFsZXhhbmRyaWE= IHRhYmxlYXU= VmFyaQ== IC0tLS0tLS0t 6Iez ZXdvcnRoeQ== U3BlY2lmaWNhdGlvbg== IHRocmVzaG9sZHM= KCIiKTsKCg== X2ZvdXI= IFNhZGx5 IChfKQ== aXNtYXRpYw== IEphaWw= dG9IYXZlQmVlbkNhbGxlZFdpdGg= Lm1hcg== IHByZXZpZXdz IHNjYWZm aW5kaWNhdG9y IGNvZGVjcw== IGF1dG9j KHJ0 LmdldEhvdXJz IFJI IFN1cmdl aXZhbWVudGU= IGNvbnRlbmRlcg== Q3BwR2VuZXJpY0NsYXNz IDs7Xg== OjoqOwo= LXJlY29yZA== IG1hbWE= IGltZ3M= LmlzTG9hZGluZw== IG5lZWRsZXM= IGVuY3VlbnRyYQ== b2RhdGE= IEJ1ZmZlcmVkSW1hZ2U= CWphdmE= IFRvbWI= VU5JVFk= IGxpbmdlcmll IEphbWFpY2E= YnVncw== KioKCg== IE1hbw== LmJlZ2luUGF0aA== IHByb3N0aXR1dA== IFBoaWxpcHBpbmU= X3Nm X3Bvdw== IFNjaG8= eGRl J8OpdA== 4oCZYXV0 YWlzb24= IEZpbGVJbmZv dHVybnN0aWxl ZHJlYW0= IGlWYXI= c3ludGF4 aWxsaXNlY29uZHM= cHJvZmlsZXM= X1JFR0VY INC00L4= IENvbW11bg== QmV0 aXB6aWc= IE1lbW8= Lmlkcw== IHBob3RvZ3JhcGhlZA== IGFwcHJveGltYXRpb24= OnZhcmlhYmxlcw== IG1vZGlmaWNhcg== X1NNQUxM IEhlbXA= IGRpc3Jlc3BlY3Q= IGNvbnRlc3RlZA== IGlubm9jZW5jZQ== aWxsaXM= U3ltYm9scw== IGluc3BpcmF0aW9uYWw= IGRpc2NpcGxpbmFyeQ== IFBlcm1hbmVudA== IGRlc2Ny IFVOREVS 0YHRiw== cHJlc3Nvcg== SU1FUg== IG1vdW50cw== IG1vcmFsbHk= X1NFQ09ORA== LmZpbGVOYW1l 44OX IGNvbnN0cnVjdHM= IFNVTg== RVNQ RmluYW5jaWFs IE51cg== w7RsZQ== cmljdWxhcg== IFVzZXJNYW5hZ2Vy aWJpbGlkYWQ= IG9uUmVzcG9uc2U= IGZpbG1tYWtlcg== IGFsb3Q= X1RIUkVBRFM= IGVudmlyb25tZW50YWxseQ== Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u IHJhc2g= IEx5cmljcw== IGlwYWlycw== QmFja3Vw U2lnbnVw IEB7Cg== SlVuaXQ= d29ya2Zsb3c= IENvbXBsZXRpb24= IGludHVpdGlvbg== 8J0= IG1pYQ== IFNuYWNrYmFy IFRpbg== CWluc3RhbmNl IE11c2ljYWw= IHdlbGNvbWVz IHJlZHJhdw== X2NvbG91cg== X1JFQUxUWVBF X3NpbmNl IEJ5dGVBcnJheU91dHB1dFN0cmVhbQ== LWRlbWFuZA== YXJldGg= LnBhZA== c2Vr JywuLi4K LWZpcmU= Lnw= IG51bWI= IERPVUJMRQ== QU1BR0U= Y2htb2Q= LWls IGFsYXJtaW5n Q29w 5aSH aW52aXRl X0lURU1T IGxldWs= IHJlZWw= IGZ1bGZpbGxtZW50 UmVzdG9yZQ== X3Jy KGNsYXNzZXM= IHBhZ2luZw== eW1heA== cmFwcGVk 7ZmU fWB9Pgo= IEhpcm8= KFRSVUU= YXN1cmVy IGN1ZXI= VWJlcg== Lk9wZXJhdGlvbg== IG9sYW4= IHRocmlsbGluZw== PFJlc3BvbnNl IEZlbWlu IHRyYXZlcnNhbA== IHBvYw== IHNldFN0YXR1cw== ZGVjbGFy c3RkYWZ4 IGFkZGljdGl2ZQ== IEJ0bg== IGV4cGxvc2l2ZXM= IENvb2tpbmc= IFBsYWludA== IGFjY3VtdWxhdG9y IEFwcG9pbnRtZW50 LHBhc3N3b3Jk IEZBUg== bHVldA== RnVydGhlcm1vcmU= ZGVjbHNwZWM= X1N0YXRpY3M= LkRpY3Rpb25hcnk= Ij4nLg== CXZhbGlk IiIs SW5zdHJ1bWVudA== Pko= IG5vc3Ry IFJpZnQ= X1BvcnQ= IHZlY2Vz W1sn IHJhbGxpZXM= LXNlcmllcw== IHZ2 LnVj IHJ0bg== U3RhdGVDaGFuZ2Vk KGlucw== IENsYQ== LS0tLS0tLS0tLS0tCg== Y3Vz IFJlbG9hZA== Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= LnNlY29uZHM= X2Rlc3RpbmF0aW9u IHNjcmV3ZWQ= PmM= VGhpY2tuZXNz RGVzaWduZXI= IGdyaWRz bsSF KGNvb2tpZQ== VHJpcA== LU1vYmlsZQ== IHZvbGw= IGdlbml0YWw= IGNvbmZpc2M= IENvbmZlZGVyYXRl IHdlYlZpZXc= IG1pc2U= IGNsZXI= KHNlbGVjdGlvbg== JGRhdGU= IHNoYXJwZW4= cmFnZW4= QW5kVXBkYXRl IHJlbWl4 IGh0b25z Ulc= TVBJ IHJldHJpZXZhbA== IHJpY2hlc3Q= LkRlY29kZQ== OmluaXRDb21wb25lbnRz IFRWYWx1ZQ== U2FpbnQ= QGluY2x1ZGU= IFBFUlNPTg== LnNlcA== IExEQVA= Z2Jh IGdyb8OfZQ== IHJlbGlhYmx5 IERGUw== LmdldEl0ZW1JZA== IHByw6lzZW50 LmdldFRva2Vu IGNoaW5lc2U= IE1lYWw= WU9V Ij48Pz0k KGNob2ljZQ== IHBoZW5vbWVuYWw= IFN0ZWVsZQ== wqI= IFBhY2thZ2VNYW5hZ2Vy IFN5bmRyb21l RGlyZWN0b3JpZXM= aXZhcg== LnVuc3Vic2NyaWJl bGllw58= bW9ubw== X2Nvbm5lY3Rpb25z X3ByZXNlbmNl eW55 S25pZmU= IGdyb292ZQ== IHNjb29w VEVNUEw= YXNha2k= LmhhbWNyZXN0 IGhhcmJvcg== Y292 Kno= IFh1 IHByb3Bvc2luZw== IEZSQU1F Q2hpcA== IEVlbg== IOyghA== IHNtYXNoZWQ= VW5zaWduZWQ= KC4u X2ZpbmlzaGVk IGdldFN0YXR1cw== IGZpYnJl QXhlcw== ICcvJyw= eWFyZHM= TURC LWJz aW50ZW50 IGJvb3N0ZXI= LmRzdA== LkRpYWxvZ1Jlc3VsdA== IE1ldHM= IGJlYXN0cw== aW5jcmVtZW50cw== LmthZmth VUlBbGVydEFjdGlvbg== LWV2ZXI= X2JhbA== IGhlbHQ= IGZyZW9wZW4= IFJlY3J1aXRtZW50 bGljdHM= Zm9yZ2V0dGFibGU= RGlzcGxheWVk X1ZFTkRPUg== Q29sbGVnZQ== QVNDSUk= IFNpbms= IE1hY2Vk IGN0b3I= IGVzdMOjbw== IFdpbmRzb3I= X2NoZWNrZWQ= X2RldGVjdA== YXR0ZW5k IHhtaW4= IGluZGlzcGVucw== L3BlcnNvbg== X0RFVEFJTFM= UkVESVQ= SGF5 YWJvbGlj IGZ1bmN0b29scw== aWFpcw== RlRQ X1JlY3Q= IEluZHk= LXB1YmxpYw== b2hhbg== X21hbmFnZQ== Q29tcHV0ZWQ= 7JeQ7ISc IFNsaWNl IGdheXM= IGFsZXg= YWl0cw== IHJlY2VpcHRz U1BFQw== IEJFRk9SRQ== IFByZWZpeA== X3Zpc2l0 IHNwdW4= TEVURUQ= IGRvdw== IGxlZ2FsaXphdGlvbg== YWJiYWdl IGNsYXc= IFRjbA== eGltYQ== IGNvdmVydA== Tmk= IHRoYW5rZWQ= IGFsbGVyZ2lj bG92ZXI= IEJyZWFzdA== LmlzQWN0aXZl IGdlYmVu VkVSU0U= Wk9ORQ== CVJlc3VsdA== JykuJw== IGdlZQ== IFNlcmlvdXNseQ== cHVycGxl IEVzcGHDsWE= aWZpZQ== LXBhY2s= UGFydGljbGVz ICcvLi4v IG11bHRpbWVkaWE= YXV0b2NvbXBsZXRl IFRIUkVBRA== IHJlZmVyZW5jaW5n cmVldGluZ3M= IHF1b3Rpbmc= IGFzc2lzdGFudHM= amVuaXM= aGFwcHk= IGxheXM= bGliZnQ= eGRh IGZvdQ== cGlhcg== UmVjb21tZW5kZWQ= IEJpcmRz IFdhcnJhbnR5 w7xybGljaA== LklOVklTSUJMRQ== X2FuY2hvcg== 4oCdOg== RmFudA== X2RlZnM= IGRyZWFtZWQ= IF9fX19fX18s cGxh w6RmdA== b2RrYQ== xLFz IGRhZGR5 c2NoZW1hcw== PXplcm9z IHJhdHQ= CQkgICAgCQ== aWVq IGRyaWxscw== LTw/ QUJB Lmxpbmtz IERlcGVuZGVuY3lQcm9wZXJ0eQ== Lmxvdw== aGVlZA== X0JMQUNL L0FkbWlu IGFtaWdvcw== aW5nZWQ= IE1pY2tleQ== LkdldEF4aXM= IE5lZWRlZA== IEVuY29kZQ== w6lyaWV1cg== IE1hbmlsYQ== IENvbGxlZw== YWRhc3Rybw== IGNoaWNhcw== 5L2g IG9uZXNlbGY= eGVh ZHVr IGd3 dXJnaWNhbA== IENlbnRybw== IGFlcw== ZmVlbA== IHRyb3Q= IGVsZWN0cm9ucw== IHJpdHVhbHM= IEJpbGRlcg== IGRlY29yYXRl IFRva2VuVHlwZQ== IGx1cmU= QXBpQ2xpZW50 Z3JwYw== IE9yYw== Q29udGV4dE1lbnU= UFJFRklY LXRoZW1lZA== X2ZpZm8= LklucHV0U3RyZWFtUmVhZGVy X3NwZWNpZmlj IERTUA== PXN1YnByb2Nlc3M= L3NoZQ== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo= IGRhdW50aW5n IGNsZWFycw== IE1vdmVz IG15c3Rlcmllcw== LWJlc3Q= IFZ1 b2xpYg== IElzaA== IGNhcmFjdA== KExhYmVs IERlYmlhbg== IEV4cGVyaW1lbnRhbA== IGNhdg== LlRvRGVjaW1hbA== IFJob2Rlcw== IEhhd2tz IGZvdW50YWlu X1BFTkRJTkc= X1NV IHd4U3RyaW5n IFBldw== LmNsaQ== 0YTQvtGA0Lw= LndlYmtpdA== X0NO IDs7PQ== CW5hbWVzcGFjZQ== IHdQYXJhbQ== IHB1cHBpZXM= IHRlcm1pbm9sb2d5 IGFkZGljdGVk IGZvcmdl IEdhcmRuZXI= IHBlc3NvYQ== CVJlc3VsdFNldA== IGF0dGVudQ== YW5nZW1lbnQ= X2luZHM= Q2hp YXJpdGg= RW5jb2RpbmdFeGNlcHRpb24= bW91c2Vkb3du IEJFVFdFRU4= d2VpZ2g= IkZvcg== LmRk aXRlbA== WU8= IERpY2U= dW5peA== IE9idA== IENlZGFy IHNwZWNpbWVucw== cG9ybg== IHVub2ZmaWNpYWw= 6buR c29tZXRpbWVz IEJ1bGxk dHJ1c3Q= Z2V0UmVzdWx0 IHNtb2tlcnM= IHNhbmR3aWNoZXM= IGV4aA== IEZhZGU= X0RD IG1hc3R1cmJhdGlvbg== Zm9ydGF3ZXNvbWU= VEhJTkc= X2FuZHJvaWQ= IGRlZGlj LXNlbnNpdGl2ZQ== IG5hY2t0 TElCSU5U IGFnb24= IERJU0FCTEU= b25lc2lh Ymllcw== IFpJUA== IGhhdW50ZWQ= IGN1aWQ= L2NhcnQ= a29z CVJUTFU= IGhpbmRlcg== IGFkaXBpc2ljaW5n SUVOQ0U= LmJhbms= IEN5cHJ1cw== bWl4ZWQ= LmN5 LXNpbmdsZQ== PGxlbg== Q29taW5n IGZhdWx0cw== IGZvcmVzZWU= Z2V0bGluZQ== ImE= IGJyYWc= IGRpc2Nz IHJpcGU= IG7DpnI= IEdH U0hPVA== ZGVyYWJhZA== KGVkaXQ= VG9MZWZ0 W10pOwo= IGRvR2V0 dmF0dXJl TmVlZGVk IENoZW5n Y2Np RUZJ IGZldWQ= IGx1bmFy LlNoYXBl Tm9ib2R5 X1RSSUdHRVI= Q3k= Z3JvdW5kQ29sb3I= IFJlbW92YWw= KGJvdHRvbQ== JG1zZw== U0NJSQ== cml0eg== IGZyZW50ZQ== IGNvbXBvc3Q= YW5zd2VyZWQ= IFJvZHI= X0hUTUw= IHNpbGhvdWV0dGU= IFFVRVNU IENhdGhlZHJhbA== LkNvbW1lbnQ= IE1u LW5ldHdvcms= LmdldEZpbGU= LmdlbmVyYXRvcg== IENoZWNrb3V0 X3pvb20= IGVuY29kZVVSSUNvbXBvbmVudA== X1RD c29t IFNlcmll IGJhc2VVUkw= CXJ1bg== IGh1aA== LnNlbGVjdGVkSW5kZXg= IFNUQVI= fi1+LQ== YWJjZGVmZ2g= Lm1hcHBpbmc= PWRhdGV0aW1l Q29vbA== bmlt IERpcmVjdGl2ZQ== RmVkZXJhbA== IG1lbnVJdGVt INCQ QW5uYQ== IFJlY3JlYXRpb24= cnlhbg== LWFnZWQ= emVyYmFp 4oCm4oCdCgo= Y2FtcG8= IG1pbmlhdHVyZQ== ZGV0YWNo bWVhbmluZw== X2VtcA== UGVhaw== IGJjbQ== IEh1bmdhcmlhbg== IENhc2NhZGU= IHNhY2tz IHRydW5jYXRl IOKWiOKWiA== IHdoYWxlcw== IHNvcnRhYmxl IGFzc2VydHM= IHNlYWxz b2N5dGVz XSkpKQo= YWxhcm0= cmVzc2luZw== KHNpZ25hbA== IGVtcGVyb3I= CU9O Y29tbWl0dGVl IHRyaWxvZ3k= LlRyYW5zYWN0aW9uYWw= R3Jvdw== X3VhcnQ= IHN3aW5ncw== IHNwZWN0YWNsZQ== 4oCZYXY= IFNlbnRpbmVs INmE IFRvdQ== IHdpZG93 Z2VyYWxk LHVpbnQ= IHVudXN1YWxseQ== PENhcmQ= IFJlc3RhcnQ= bW9y 44GC44KK aXhlZFJlYWxpdHk= IGhhbmRndW4= 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA IGxpdGhpdW0= UmVzb2x2ZQ== Z2V0Qnl0ZXM= L2Z1bmN0aW9ucw== IHRhY2tsaW5n T3V0bGluZWQ= IH08Lw== IFNleG8= IEFuaw== IHJhdGlvbmFsZQ== cmVtb3ZlQXR0cg== IG11bmljaXBhbGl0eQ== IGFzc2F1bHRz Q0hPT0w= IFJlZQ== IGJhdWQ= pqw= IGVuaGFuY2Vz INC/0YDQtdC0 IGNvbmNlc3M= Lmluc3RhZ3JhbQ== LmdldFJlc3BvbnNl c2VnbWVudHM= IHdlbGxiZWluZw== fTsKCgoK aHVuZw== 44OG IHJlbm92YXRlZA== LmV4cGVjdGVk IHJhZGlhbA== IGNvbW11bmFs dXNlck1hbmFnZXI= K2E= IGZ1bmRhbWVudGFscw== LlRI 6II= IHJhbnQ= IFN0cmF3 IE9sZURi YXppbw== IGhhbWJ1cmc= IHBhaW50cw== IHRodW1icw== IE51bGxQb2ludGVyRXhjZXB0aW9u IGdyb3VwZQ== IEhvbWVDb21wb25lbnQ= IGJhbGxv IElOSVRJQUw= X2FyZQ== IFBlcw== dXJzZXM= IGJhcmR6bw== LmdldExlbmd0aA== YW1vdG8= Lm5vdGlmeURhdGFTZXRDaGFuZ2Vk aWVuZXM= ZW56aWU= X2VtYg== dW1uaQ== c21vb3Ro IERybw== cGFzdGU= IE5hcnI= LS0tLQoK z4k= IEF1dG9y IG91dHJvcw== IExBQkVM LnBh LlN0dWRlbnQ= KFhtbA== IGV0aG5pY2l0eQ== IEl2eQ== 44KI X2Zha2U= Pyg6 dXBsb2FkZWQ= Z2V0TWFuYWdlcg== LVFhZWRh b2RpYWM= Q29ubm9y aWhhbg== TUFU KG1pZA== IEFsYmFu IHNvaXI= Q29tYm8= IFB1YmxpY2F0aW9u b3BvdWxvcw== cGlz IHRlbXBsZXM= b25neWFuZw== X2NsaWVudHM= IHJvZHM= IHhj aWprZW4= IHJlYXA= IOS4i+WNiA== CWNvbm5lY3Q= Rm9jdXNlZA== LGNvdW50 aWV0ZXQ= IGhhY2lh X2FsbG9jYXRvcg== IHRveGljaXR5 KHNlcXVlbmNl IG51ZXN0cm9z IFByaW5jaXBsZXM= IGxsZQ== YWxhcmlh LndyaXRlU3RyaW5n IEFGTA== aWZuZGVm IERvcw== xZtjaWU= IEFnZ3JlZ2F0ZQ== IHNhY3JpZmljZXM= X29mZnNldHM= bGRi IGxhdGNo IGZ1bGxzY3JlZW4= bWlzc2l2ZQ== T1BUSU9OUw== IFRlbGVwaG9uZQ== IGFyc2VuYWw= amVqZXI= IEhvc3A= IGZhdm91cml0ZXM= cml2ZQ== LmluY3JlbWVudA== IGJ2 IEZhbnRhc3RpYw== LnNheQ== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= IG1lZGljaW5hbA== IERST1A= IHBpdHk= bWV0aXM= IHdvbGxlbg== IGJlZg== X0Js ID4+Cgo= Ym93ZXI= IHN3YXBwZWQ= L2luc3RhbGw= IHNpbmtz ZXRyaXpl IGRlY2xpbmVz CW15c3Fs IENTdHJpbmc= IE1vdGlvbkV2ZW50 Lkxhbmd1YWdl Um9hZA== 0YLQtdGA YXNjaW1lbnRv JykpLT4= LmFib3V0 KGVkaXRvcg== IFJhdGluZ3M= aW5jb21l xaFl LmRlcXVldWVSZXVzYWJsZUNlbGw= IEF1c3RyaWFu IHN1bGxh IFRyaWJ1bmFs IERpZG4= 0L7QstCw0YA= IGluc3BlY3Rpb25z Qm9zcw== IGNvY2t0YWlscw== IGFwb2xvZ2l6ZWQ= X3N1YnBsb3Q= b3BhbA== Kz0o IHJlc29uYW5jZQ== aWJ1 IOumrA== cm9tYQ== cmVzZXJ2ZQ== cGxz IFRhaA== YXhpZXM= T1BMRQ== IERhcnJlbg== IFpvbWJpZQ== X01hcA== IF0pCgo= IFFp IFNhaWw= IHJlc3RyaWN0aXZl IGVyb3Npb24= LXBhcg== V0hJVEU= IG9sZHU= IGFwZXJ0dXJl IGJpdGNvaW5z dGV4dG8= IENvbWNhc3Q= IHRpbWVsZXNz ZW5raW5z IGZlZWRlcg== L3RtcA== cmVzZGVu Kydf LkRlc3Ryb3k= IMOnb2s= IERPQ1VNRU5U LmxuZw== LnRhZ05hbWU= IGt1bGxhbg== ZWdyYXRl ICgqLg== 57yW6L6R IGhhbmRzaGFrZQ== c29j X2dlb21ldHJ5 IERhbWFzY3Vz TWlub3I= IEthZmth 7Jes RmxvcmlkYQ== X2NvbXB1dGU= LmV4cHI= IHBhcmFsbGU= IERpYXo= Y2ly W3RhcmdldA== IGpva2luZw== IGdsb3I= KHNldHE= X2hhbmRsZXJz SGFuZw== IGZlcnI= cmltaW5hbA== CSAgICAJCQ== ZW50aWVz ZGVmaW5lcw== LXRheA== anNvbnA= IFVQUw== bWV0cm8= X187Cg== IFVnYW5kYQ== XSkpOgo= X3Rk eGFl bHc= Lk9T IExvZ2dlZA== YWNpZA== IE1heW8= YXNwZWN0 IHZhZ2luYWw= IGluaXRpYWxpemluZw== IHN0ZXJvaWRz ZmljdGlvbg== R1JF Z2VuZA== IGxpYWJpbGl0aWVz IExldHM= TWVjaA== KG5j KGNoYW5nZQ== IGNvbm5lY3RvcnM= Oms= IHRhc3Q= ISIpOwoK dGhpbmdz cm9waHk= bHVldG9vdGg= IFNpZ25VcA== LmN0cmw= IHRoZXJlaW4= b3JkYQ== LmVzY2FwZQ== aWdhdG9y IHBldHJvbA== IHNwZWNpbWVu IGRlYnV0ZWQ= LVBybw== IGNyaXNlcw== LmFkZFZpZXc= 64+Z LWRvb3I= IG1vbmV0 IG1pbGxpcw== IHZpZXI= SW50ZXJuYWxFbnVtZXJhdG9y IGFkbWlucw== IExhaXI= emlu Z2V0UXVlcnk= dW1ibGVz TElNSVQ= IFZpZw== X3Nvbmc= PENoYXJhY3Rlcg== Ojou X2hvbQ== X2Jw IFN1cGVydmlzb3I= c3VibWlzc2lvbg== YWJpbGU= IG5vaQ== T3JDcmVhdGU= IHBlZWw= IG9uU3RhcnQ= IHNlbnRpbWVudHM= dmVoaWNsZXM= IGNsYXNzcm9vbXM= IHN6ZXI= IGJlbmRpbmc= IGxvbmdldml0eQ== IGFjbA== IEFsZXBwbw== IFVN IFJpY2h0 IG11bHRpcHJvY2Vzc2luZw== RE9NQUlO IiwiKw== X1lFQVI= IHNjcmFwZQ== IHNvbGl0YXJ5 ICJdIjsK L2Vycm9ycw== 7J6s nOugpQ== YmV0dGVy CW51bWJlcg== IExG IEFjcm9zcw== UHViTWVk XCIi IEV4Y2VsbGVuY2U= IHVzYW5kbw== IFVJUA== QWN0aXZpdHlJbmRpY2F0b3I= X1ZPSUQ= IGJyZWVkcw== 772l dWVzdGFz IFRyZWFzdXJl dXN0cmFsaWFu KGZhY2U= IFRlbm5pcw== CUludA== IEhhbnNlbg== 57U= Okk= IOKclA== R1JBWQ== T1VTRQ== IGhlcGF0 oO0= QUlS w7PFvA== IHF1ZXVlZA== dmluY2lh IENocm9taXVt IGNvbXBldGVuY2U= dW5nYWw= aWxsaQ== IGdldEJ5 IEZpbmRlcg== IGluY2FwYWJsZQ== IHNhZGQ= IGNpdGVz IENodXJjaGlsbA== U2Rr TW9yZW92ZXI= QXNwTmV0 KEZsb2F0 JHBhc3N3b3Jk IENvbm5vcg== LXNlc3Npb24= X2Rt Kikp IGRldXRzY2g= IE5Y IHBlcmtz X1NPUlQ= X1RPT0w= X1ZJU0lCTEU= LmFzcA== 5oiW IEJyZWF0aA== RGV0ZWN0 IER1ZWw= LmNtYg== W2l0 LlNldEJvb2w= IG5hcmNpc3M= IGFiaWRl IGVqZW1wbG8= IOKElQ== IG1vcm5pbmdz IGNvbXB1dGVz LnNzbA== anQ= IG11Y2hvcw== X1NT W2VuZA== IGJhc2lu IGFsZ3Vub3M= IENyb2F0aWE= bGluZXdpZHRo KHRhZ3M= KGhpZGRlbg== w61jaW8= IGFwYXI= INC2 5LiO LmZvb2Q= IFJ1cmFs IGJyZWFkdGg= 5b2x KHNlc3M= KyIp IFBhc3Rl IHNlcnZpZG9y IEJpdFNldA== IFRyYW4= bGF1cw== dmV0dGU= ZXllcw== IENMSUNL IFZJSUk= IFR1cm5z IExlQnJvbg== IE11ag== IERlZw== IEFkdWx0cw== X3N1aXRl cHJvY2Vzc2FibGU= IFBIWQ== Z2hlc3Q= LkZhaWw= IFNsYWNr Y2Vq XENhcmJvbg== IHN1cGVyc3Rhcg== IGhvbGRpbmdz KGZvcm1z ICcjJw== TXVsdGlw KCJbJQ== LXNvbGlk L3VybA== LXRpZXI= W2xlbmd0aA== IFN0cmVhbVdyaXRlcg== IE1hcmtldHBsYWNl Z2V0dGV4dA== X1RJQ0s= IEZvcmdl IGJsYWNramFjaw== IERPRVM= IE1hdHRlcnM= d2F2ZXM= IHdoaXNwZXJlZA== IGx1c2g= 7Jik ZGlnaXRhbA== IHdyaW5r IEhvZ2Fu IHJ1c3RpYw== LkFwcGx5UmVzb3VyY2Vz IEhhcmR5 b3NvbWVz QVVU LlNUQVRF IG5hcnJhdGl2ZXM= CXN0b3Jl Ymli CVNjYW5uZXI= IENvZHk= XFJlcG9zaXRvcmllcw== IHJldW5pb24= YW5kdW0= 4oCZaA== IHNuaWZm TlNCdW5kbGU= IGNvbXByZWhlbmQ= X1VTQUdF X29jYw== VVJSRU5DWQ== Sk5J IHNwZWNpYWxpemluZw== IHZpc2lvbnM= IGRvbG9yZQ== IHbDoQ== IENoZXZ5 IFN0eWxlZA== aW1wYWN0 YWxsZW4= IGthcnQ= IFRhYmxldA== c3R1ZmY= cmVlc29tZQ== 0LDRgtC+0YA= Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K X0FkbWlu IGNlbGxwaG9uZQ== IGF1dG9wbGF5 IGNhbWJpbw== IG1hcml0aW1l X0JPT1Q= LXF1YXJ0ZXI= IGxhdGluYQ== IEFKQVg= ZXF1aXY= IEZyb250aWVy IFhZ fV0K IFJvdWdo LnByb3Rv IGNvcnJlY3RuZXNz IGZhY2ls IFJlYWNoZWQ= 44Gd44Gu VklT LnBz IHN0cm5jcHk= IGRpZmZ1c2lvbg== LnN0YXJ0QWN0aXZpdHk= 77+977+977+9 IGFjY29tcA== QU1FU1BBQ0U= aW1vbmlhbHM= IEJsYXN0 YWJ5cmlu IGRvbWU= IGV4dHJhdg== IHllbg== IGN1bGluYXJ5 UFJJ IENvbW11bml0aWVz bmlk X29wZXJhdGlvbnM= Lmhz IE1pbHRvbg== IG5vaXNlcw== QXV0b3Jlc2l6aW5nTWFzaw== KGNpZA== fQoKCgoKCg== XX0sCg== IERldGVjdGlvbg== dGFibGE= IGxpYmVydGllcw== X0RZTkFNSUM= d2dldA== IFTDvHI= IFBhc2NhbA== VHJhbnNwYXJlbnQ= RGVsYXllZA== XSgp IEhlcmJlcnQ= PEFjdGlvblJlc3VsdA== Y2hhbGxlbmdl IG11c2hyb29t Lmluc2VydEJlZm9yZQ== IFJpbg== IGh1bW91cg== IGbDuA== YXBpS2V5 YWxsb2NhdGVk IGNvbmZlc3Npb24= LiIsDQo= CWFzc2VydFRoYXQ= IFNPUlQ= IExPUkQ= IGV4cG9ydGVy LnNldExldmVs cG9rZW1vbg== YXNodHJh IGbDqQ== dXJhdG9y KE1TRw== IHR1cA== IEh1bGw= IHlpZWxkZWQ= LlN1YmplY3Q= XFJvdXRl IT8= INGD0LTQsNC7 XFNlY3VyaXR5 LWFy IGFsbGVnYXRpb24= KFNldHRpbmdz w6RuZGVy IGVsbGlwc2U= IFJldHJvZml0 IHJlZ3VsYXRpbmc= IE1vbGx5 IExvaw== X0N1c3RvbQ== IFByb21v aXNpbg== IHJlc3VtZWQ= IG1ldHJvcG9saXRhbg== LmVycm9yTWVzc2FnZQ== Oi0tLS0tLS0tLS0tLS08Lw== Lm1s c2NvcGlj LnJlZnM= YXB0b3Jz IEluc3RydW1lbnRz IHByb3BhZ2F0ZQ== fS0+ IHBhc2Fkbw== dGhhbms= X0RlbGV0ZQ== IEJyaWdodG9u LHVuc2lnbmVk 5L2c6ICF IGFzcGlyYXRpb25z LWhvdw== Um9zZQ== PSgo X25lZWRlZA== X3BsdXJhbA== PEFwcGxpY2F0aW9u IFdFRUs= IFVubG9jaw== IFRFTVA= U291 IHNjaGl6b3BocmVuaWE= IHRyb2xs IGNvbXBsZW1lbnRhcnk= IE5FVFdPUks= IGJsaXI= IHByb2dyZXNzRGlhbG9n IiUo IEF0dHJpYnV0ZVNldA== CXRz Lml0ZXJpdGVtcw== 6K+d IGVzY3JpdA== dm91cw== X3BsYWNlcw== SEs= IHNlZ3Vpcg== X2Z3 IFJvdW5kZWQ= IGRpc3Bvc2l0 6KeG cGFybQ== d293 U1RSVUNUSU9O LmFsbG93 IENoYXJTZXF1ZW5jZQ== CWV4dGVybg== IHByb3NlY3V0ZWQ= IG1vcnRhcg== IEp1ZGE= LW1zZw== IGVzdHVk LmdldERlc2NyaXB0aW9u IHNvdw== YW1icmU= IHJvbWE= RW5o Ym9udXM= IHNxdWF0 IGRpc3RyYQ== ZWRJbWFnZQ== IHBlcHBlcnM= LXBlcmZvcm1hbmNl LAoKCg== LGZpbGU= IE1JTUU= X2NvbmNhdA== QUJT LWZhc2hpb24= IHVuZGVyY292ZXI= T25lVG9NYW55 IHJlY2xhaW0= Q09QWQ== IGJpbmRz IFRhcGU= IGdvc3NpcA== IEVxdWl0eQ== L0NhcmQ= LmFjdGl2 J2Ft IGRyYWluYWdl PFNjYWxhcnM= IG9uQmluZFZpZXdIb2xkZXI= KCk/Lg== IHNvcnJvdw== IEli dXB5 X1VVSUQ= IENoYXJt IEVsZWN0aW9ucw== Lm9uRGVzdHJveQ== IEludGVyZXN0aW5nbHk= b3VuZGluZ0JveA== X2RldGVjdGlvbg== LWhlbGQ= X3Vua25vd24= IHJlZnJhaW4= IG3DqXRvZG8= IGVCb29r RU5PTUVN IGRhbmc= UHJvZmVzc2lvbmFs IGRpY3Rpb25hcmllcw== L215c3Fs IFNUVUQ= IG1hc3Nl c2NhcGU= IGRyZWk= Om5hbWU= LmxvZ28= U2lnblVw IHRhaHVu KHRoZW1l IEZlbW1l IGJvbWJlcg== IEphZGU= IFRheQ== IHN1Ym1hcmluZQ== X2NsYXVzZQ== enljaA== IHNpbXVsdGFuZW91cw== IGNhc29z LmJvb2xlYW4= KGxocw== IGNvbnRpbmVudGFs LXNhbGU= CWVudg== IEN1dGU= IEZhY3RvcnlHaXJs YWJ1cw== L3ZhbHVl IGphZHg= IHN0ZXJu Pj4KCg== IHN1cmZhY2Vk IOyggOyepQ== cGxhdHo= CWVtYWls Y2VwdG9ycw== Ij4o IGVwaWxl 6K+7 IERlYnQ= 5ZGK Tk9Q Imh0dHBz Omo= Rm9ybUl0ZW0= X0xJQ0VOU0U= LmdldERvdWJsZQ== IEFnZW5kYQ== CWZpbmFsbHk= KGZpbHRlcnM= KGF2 576O QVBFUg== IGxhdmE= 0LXRgNC2 KSkpKQoK IGZhdWx0eQ== X25t IHRyYXZh KEJpdG1hcA== IHNwZWVkaW5n PicpLg== IHNjcmVlbmVk X3JvbGw= IE1hY0Jvb2s= IEFVRA== IGRpYWdub3Nl LkdlbmVyYXRl IF5e IHN0cnM= W1Rlc3Q= IHJhbnNvbQ== IERIQ1A= ZWxkZW4= IGludGVycHJldGF0aW9ucw== KCldLg== ZmxhdE1hcA== IGxpbmVIZWlnaHQ= X21vdW50 IFdpemFyZHM= IHNsdXRz ZWhsZXI= b2RhbA== IG1pbGl0aWE= 5bI= ZWFybmVk IG1pc2VyeQ== aW50dmFs ZnVuZA== IGhpZGVz IGRpYXJy IFdlc2xleQ== IHhtbQ== IHF1ZW0= IEFyYWJz aWZ0aA== YXRlZ29yaXplZA== RGlzcG9zYWJsZQ== UHVyZQ== X05PVElGWQ== c25pcHBldA== IEdhcnJldHQ= LnJ1bm5pbmc= LndlaWdodHM= ICgtLQ== IGludmFyaWFudA== 5LqL5Lu2 IEFsbG93ZWQ= ZGlycw== IHBhc3Npb25z IGxhZA== IEZsdXNo bWVudXM= OmJsb2Nr IGNvbXByYQ== LmNob21w YWxsb2NhdG9y IGN1cmF0ZWQ= IEtub3dpbmc= IFBhdHRlcnNvbg== IHRlbGFo J2V4 IGRvb21lZA== IHBoaWxhbnRo b3R0eQ== LnN0eWxlcw== T3duZWQ= IGFsbGVyZ2llcw== PXBhcmFtcw== b2Nlc2U= aXRlbGlzdA== IFNlbmRpbmc= YmVm b3JyYXI= IE7Do28= IEZhcmdv IEx1Yg== IENvbWJpbmVk X2dpdmVu CQkJCQkgICAg IHJlY29uY2lsaWF0aW9u UGF0dGVybnM= YXphcmQ= IGJpb21hc3M= IEhvdXNlcw== cmVzcHVlc3Rh Y2Nv L3RvcGljcw== IFl1aw== IHdlYWtlbmVk X2NhbGVuZGFy IG11bGhlcmVz IE1hcmw= IHNpbmU= IFRpbA== IFNvdWxz IERldXRzY2hl IEZPTExPVw== IHBpcGVsaW5lcw== IEJldmVybHk= X0RJUFNFVFRJTkc= IiM= IFByb3Rv LmJpZw== IFNhdmluZ3M= IFRhbno= anVu IEdhbW1h IFNhZGQ= IGFkdmlzb3Jz IHJvYXN0 IHVudGVycw== dWRpZXM= X2xvbg== LXBvaW50ZXI= IEVsZW1lbnRSZWY= XEJ1aWxkZXI= ZXhhbXBsZUlucHV0 LndlYmRyaXZlcg== ZGF0YVR5cGU= IFF1aXRl IENlbHRpY3M= dWls LWRlZmVuc2U= YmlzaA== IFVJV2luZG93 IFN1ZGRlbmx5 LmhvdA== LnJlYXNvbg== IGfDtnI= QU1E Lk11bHRp YXV0aGVudGljYXRlZA== cmVnaW9ucw== Oyg= 0LDRgNCw0Lw= IEtpcmJ5 JHJvdXRl UFJFQ0FURUQ= IER1cmhhbQ== b3dv IFBlcmZvcm1z IGRpc3JlZ2FyZA== bnN0 IFBvbHM= IGdldFA= Il06 LWNvbG9yZWQ= KEtleXM= IEFsbGVn X21vZGlmeQ== X2xvYWRpbmc= c3RyYWluZWQ= IGF0cm9j X3Bocg== PFNwcml0ZQ== IHNhdGlzZmFjdG9yeQ== bWFuc2hpcA== LnBpcGVsaW5l VG9ueQ== IHRoaWVm cG9sYXRvcg== KGxvY2s= YnVyc3Q= IE9wdGltaXphdGlvbg== IHN1cmZpbmc= Illlcw== IGRlc2NlbmRlZA== 5pI= X0NsZWFy IGNyaWVz IEZyb3plbg== RElSRUNU LUNvbg== IExlaWNlc3Rlcg== 5aWz T09N PWRi IGdldE1lc3NhZ2U= PFN0dWRlbnQ= X2JhdGNoZXM= Lk1hc2s= X2V0aA== XCk= IHNvbWE= Q2F0Y2g= W2No T3duZXJz aW5kbGU= OmF1dG8= LnZlcnQ= aXZy LnNldExvY2F0aW9u IGZsdWVudA== X0VORElBTg== IENhcmxv Y2VwdHM= YWRkQWN0aW9u Lm9hdXRo PFVuaXR5RW5naW5l cmVlbWVudHM= LlNraXA= PykKCg== LmRlZmF1bHRQcm9wcw== IGNhYmU= IFNoZW4= ZXJvc2lz IFByb2ZpdA== IHBvaXM= X0NSRUFURUQ= IHJlbW92ZUZyb20= KHdz P2FjdGlvbg== KEZpZWxk IGVycm9uZQ== Lm1pbmltdW0= IFJldHJpZXZlZA== IGRhZG8= IFBSSVZBVEU= LXNwZWM= IGd6aXA= cGRhdGE= IHBvc1k= KGxvdw== IHF1YWxxdWVy L2Nsb3Vk 6rKM KGNvbW1vbg== IEFyYmVpdA== b3JnYW5pc2F0aW9u IHRpZHk= IFJvbGFuZA== KHBo LnpvbmU= IGdlbnRsZW1lbg== xrDhu6Nj 5bGx IGVuY2xvc3VyZQ== IE1hbmFmb3J0 CUNvbG9y U3RlbmNpbA== Tmlj IHRoZW9yZW0= IFZH IGNvbG91cmVk VkJveExheW91dA== dWxzaXZl RHJhZ29u Y2Zm ZXRlc3Q= ZW5zYQ== b2ZkYXk= LkF6dXJl OlVJQ29udHJvbEV2ZW50VG91Y2hVcEluc2lkZQ== X3VwZGF0ZXM= IHRyZW5keQ== dWdhcw== d2Vha1NlbGY= IHJpZGdl aWJyaQ== IOy2lA== KENH IE1vbmtleQ== LndyaXRlSW50 LnRpbWVkZWx0YQ== Vmlld0NvbnRyb2xsZXJBbmltYXRlZA== IFByb3ZpZGVuY2U= 44GI IGJsZW5kcw== L1N1YnRocmVzaG9sZA== IEFwcGw= IGF0YW4= IHJlbG9hZERhdGE= dW1ib3Ryb24= c3TDvHQ= T0F1dGg= IEdpdmluZw== IOyEpA== IEZpbm5pc2g= Y2hlY2tpbmc= LkVtYmVk c2VxdWVsaXpl IGluaXRpYWxpemVz IE9zbG8= 2LY= Z2V0RXh0ZW5zaW9u X0FMVA== KGJsYW5r IGZhdGFsRXJyb3I= IGRlbWlzZQ== KioqKioK IFhT KEFG IEVucw== YW50aGE= IFBPUg== IG5pY2g= Lk5hbWVk IGdpZ2FudGlj IE9ic2VydmF0b3J5 LlJlc29sdmU= IFBheW1lbnRz Z3VpbGQ= IGN1cnJlbnRTdGF0ZQ== PT09PT09PT09PT09PT09Cg== IFNleQ== cERhdGE= IGRlYWRsaW5lcw== IGNlbnRyYWxpemVk IFNjaG9sYXJzaGlw X3N1cHBvcnRlZA== LmNocm9tZQ== KCldKTsK IGN5YW4= IENhZ2U= QXV0aG9ycw== Xw0K L29z a2lt ZGVl LnRleA== IHlvdXJzZWx2ZXM= IG1ncg== IGFsaw== LWluc3RhbGw= IGRyYWZ0aW5n IHJ1bW9y IHN0YXR1ZXM= UG9vbGluZw== b2xpbmE= QUFBQUFBQUE= LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IGV4dHJlbWlzdHM= Q2FsY3Vs aWdodGhvdXNl SW5zZXQ= KElOUFVU IHN5bmNocm9uaXphdGlvbg== aXZpcnVz LmF4ZXM= IEdhcA== LUFu X1RlbXBsYXRl IGdhbWVy IENyaWNrZXQ= IGxpbnQ= IGF1dGhvcml0YXJpYW4= TlNVSW50ZWdlcg== IHJlZG8= IGFkaXBpc2Npbmc= X0ZFVENI Y2hlaWQ= IEZhbmc= LmluZGljZXM= dG9uZQ== 0LTQtdC7 IHt7LS08 YnJhaGlt IHNhbGE= Z2V0Q29kZQ== IGNvbW11bmljYXRlZA== c3RhcnRzV2l0aA== ZXJ0eg== UmVhZGFibGU= SXRlbUlk b3JlZmVycmVy Y3JlZGlibGU= w6FyaWE= IGNvbWJpbmVSZWR1Y2Vycw== KiovCgo= IGJsaXNz IGFkb3Ju ZGVwZW5kcw== IFJPT00= IGZyYW1pbmc= ID8nLA== YXV0eQ== X3BvdA== X3RhYnM= RXhhY3Q= LCIs ICd9JzsK IGFyYml0cg== YWhyYWlu LmdldFN0cmluZ0V4dHJh ICRc IG91dHB1dFN0cmVhbQ== IGNvbW1lbmM= YW51cw== Y2h5 PEVtcGxveWVl IGhleGF0cmlnZXNpbWFs IG5hY2lvbmFs KHNlcmlhbGl6ZXJz X3B1dGNoYXI= X1NBRkU= ZW50aWFsQWN0aW9u SXRlbVNlbGVjdGVkTGlzdGVuZXI= LkRpc3BhdGNo Q29uZmxpY3Q= X2Fib3V0 b3NhdXI= Qm91bmRhcnk= IGNsZWFyQ29sb3I= KExvY2F0aW9u IE1PTlRI IFRhc3Rl LUdlbmVyYWw= IFdBUg== IGVyaGFsdGVu LXNhdmluZw== IGNvdXBsaW5n LXRyaWdnZXI= bW90b3I= IHl5eXk= IFBhdGVudA== cHRv IG1pc2RlbWVhbm9y dmFzaW9u IEFkbWlyYWw= 4LmJ4Liy X1BXUg== IGRldmFzdGF0ZWQ= Zm9saW9z SVRVREU= dXJyZWN0 IHJvYm90aWM= IFNhbmN0 IEhhd2FpaWFu LlJvdXRl LWNvbmRpdGlvbg== IHJr LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Y3JlYXRlRWxlbWVudA== IEtvcA== aWduYW50 LnJvbGxiYWNr IHNhbHVk Xycs IEFOU0k= RXhjZXB0 IERyYXdhYmxl LlV0Y05vdw== Ijpbewo= IGtvbGU= THVh IEJlbGlldmU= Q29tcHV0 IGhhbGx1Yw== IFNpZ25z cnN0 Lmh1 IEtOT1c= V2k= IEJyYXNz IFJhcw== QGhvdG1haWw= IHNlZGltZW50 IGFwaw== IOyDgQ== X3JlZ2lvbnM= IHBvZGl1bQ== PEJvb2s= 0LbQtQ== IHNpeHRlZW4= IEFsaWFz IGluZnJhcmVk IFZhbmRlcg== IExlYWRpbmc= dWNpbmc= LDosOg== X2hvcg== d2F0 IGTDqWNvdQ== X1dpZGdldA== U291bmRz X25hdmlnYXRpb24= IHNjaG5lbGw= KGdlbmVyYXRvcg== dWNlbmU= IHJlbWFrZQ== SVB2 IHLDqWFs X0lOQ1JFTUVOVA== IGh5cG90aGV0aWNhbA== X2FuZw== IG9mcw== ICEK LmNvbXBsZXRlZA== R2V0VHlwZQ== IGtvbW1lbg== w6FsaWRv YWRkT24= IHrFgg== VUxB X2luZGljYXRvcg== J10KCgo= YXBhY2hl X1NlbGVjdA== IEdyZWVuZQ== V2hhdHM= X2FuaW0= IHJlcGV0aXRpdmU= bXVjaA== IFRocmVzaG9sZA== IGxm KENhdGVnb3J5 Y29uZQ== TWl4 X01FVEFEQVRB YXlzaWE= TmVpZ2hib3Jz CQoJCQo= SVBIRVI= IEZyYWc= IENlbGxz IG5hbWVzcGFjZXM= KGJhY2s= IFJlc3RhdXJhbnRz c3Zj INC70Lg= b3RlY2g= LXNs pb8= IFdU IFJlZHVjdGlvbg== IGRvdHRlZA== CWZvdW5k IFRFQU0= Qm9ybg== IE11c2g= IENvbXBhcmFibGU= IGhpdGNo QVRP IG1heEhlaWdodA== YmVnaW5UcmFuc2FjdGlvbg== w612 X2Ju IGhlcmQ= IHJldmVyc2Fs IEhvbmQ= ZGVsaW1pdGVy IGNvbmZ1c2U= IGhvcHM= IGNlbnRyb2lk IGNvdXJ0cm9vbQ== LmRlY29yYXRvcnM= IG1waQ== IEltcHJvdmVk SU5ORVI= IEJhbmdhbG9yZQ== IFRhbWI= IGJvYXN0 KCkpKQ0K IGlsbGljaXQ= IE1vcm9jY28= Z3JlZ2F0b3I= X3Jlc3VtZQ== IGNyYWNrZG93bg== IHBvcnRyYWl0cw== L2hpZ2g= KFwn IGF5dWQ= X2ZlZWRiYWNr IGNhdGU= L2F2YXRhcg== IGhlYg== UG9pbnRDbG91ZA== IOWSjA== IDwhWw== IGdldFJlc291cmNlcw== fTp7 T3BlcmF0aW5n IEZvZw== CXRhYg== IFJlc2VhcmNoZXJz IGZhYnJpY2F0aW9u LmRhdGFzZXRz IENhbXBv IEthdWY= IGRsbA== bGlndA== XSkpOwoK c3RlbGxlbg== QUNLRVQ= bHZs IEdsb3J5 LmRhdGVUaW1l IGNvbW11dGU= IG9uQ3JlYXRlVmlld0hvbGRlcg== IFhFbGVtZW50 IFRva2Vucw== PHRoZWFk X3BpY2s= 7KQ= dm9u ZGVwYXJ0dXJl KHJlbmRlcmVy cGhvbmVOdW1iZXI= KFBlcnNvbg== Z2VuZXM= IExhcnM= ICl7Cgo= IEpzb25SZXN1bHQ= IG1ldG9kbw== Vk9LRQ== LmdldFVzZXJJZA== QWNjZWxlcg== CXJlcXVpcmVk IGNoYW1waW9uc2hpcHM= QnVpbGRDb250ZXh0 L3Rhc2s= L3JlbGVhc2Vz Q2F0ZWdvcmlh X292ZXJsYXk= IHNjYXJjZQ== X2xpbQ== bmdy YWhsZW4= IEFydGlmaWNpYWw= c3ByZWFk IGJvd2xpbmc= LmFuYWx5c2lz U01UUA== CXBhc3N3b3Jk IGJhdGhz XSkpewo= Y3VycmVudGx5 YWNpZW50ZQ== X3NlcGFyYXRvcg== IGRlYmVy IERpc2FibGVk acOocmVz IOKV X3Byb2Nlc3Npbmc= IHByb3Rlc3Rpbmc= IFJPVA== Z3JhYg== INC30LDQug== IHByb2FjdGl2ZQ== d29yZHByZXNz IFNldmVy aW5kZW4= IHdpa2lwZWRpYQ== KXsNCg0K X3dpbmRvd3M= aXNsYXRpb24= IHVucmVzdA== IGRpc21pc3NhbA== Lk5VTQ== X0ZBU1Q= aXNzdWVk IEZBQ0U= X3VuZGVy IHBsdWdnZWQ= IOWw IGLEmWR6aWU= IElDQw== IGNvbWJ1c3Rpb24= IGtpc3NlZA== IHN0YXJyZWQ= IFdhdHRz IHNwaWVsZW4= LXB1cnBvc2U= IEV2YWw= YXJnZXM= LHJlc3VsdA== dGVjaG5vbG9neQ== IG5hdGlvbmFsaXR5 aWN1cw== IE51Zw== INGC0L4= CQkJCQkJCSAg Y29sbw== IGdhc3Rybw== YW50ZWVk T0xJRA== LmJpYXM= X3RlbGU= Lmluc3BlY3Q= IHZlaWw= LmZvb3Rlcg== IG5lZ2xpZ2VuY2U= IGp1ZGdtZW50cw== Um9vbXM= eW5u CWNvdW50ZXI= b2NjdXBhdGlvbg== IOeUnw== dW5hcw== ICheKSg= TGFtYmRh ZmVs LlBhcmFtcw== INC00L7QsdCw0LI= c2V0TGF5b3V0 IGRlcG9ydGF0aW9u IGxvY2FsT2JqZWN0 IFBoYXJtYWNldXRpY2Fs Y2VwdGl2ZQ== IE5vbWU= RXF1aXBtZW50 RmFu VW5pdmVyc2Fs CXNvY2tldA== IGdyaW4= IGV4cG9zZXM= IGhhYmVy IHNpbmNlcmVseQ== IGNhbXM= IG3DvA== ZW5pYQ== RW1lcg== Q3J5cHRv U2xvdw== KHhocg== IT0o LXNlcnZpY2Vz IFBX IHByZW5kcmU= IG3DpGRjaGVu ZW1vbnM= 0L7Qt9Cy0YDQsNGJ Lk1hbmFnZXI= 7Jk= IGdyYWY= LXJh bWV0cmljYWw= L2Zs IGNlbWV0ZXJ5 Z2Vucw== IHDFmQ== IE15U3FsQ29tbWFuZA== LVRv IHbDpQ== IGFpcnN0 b21lbnR1bQ== IHNlcnZv bWlsbGlvbg== IE1pcmFuZGE= IlNoZQ== IGFkdm9jYXRpbmc= LWNhcHRpb24= IEF0dHJpYnV0aW9u IHdlbGNoZQ== X3ZlbmRvcg== CVN0YXR1cw== YXJyaXM= IHByaW50aw== IiwiIw== IHJlbGF0aXY= aWZmZXJlbmNlcw== aXp6ZXM= IGRlY2ltYWxz IFByb3Y= Lm1heGltdW0= QXJu IGhlbGljb3B0ZXJz X0JPVFRPTQ== Y2h1cmU= b2Rpbmdz Jyg= IikpKTsNCg== KGJlYW4= LmZk RnVuZA== IGhhbmdz YXBwaWQ= L2tlcm5lbA== LnBvaQ== Lk1pblZhbHVl LXZhbGlkYXRpb24= THVrZQ== Y2Rm IEZ1bmVyYWw= IFNhbXBsZXM= CWRl IHRvYXN0cg== IHRheGFibGU= IGNsdXN0ZXJpbmc= ICdcJw== IHJlc3RyYWludA== ZWNlZA== Y2hhaW5z 44CC77yI X0dSQVBI IGZ1ZWxlZA== 6ZyA SHA= 5aSN VGlsZXM= IGF1bnF1ZQ== SkM= IGhvc3RhZ2U= IEVzaw== IG1hdg== IGdlc3Rpb24= IGJhbm5lcnM= fXsk LmludFZhbHVl LiciCgo= X01BVFJJWA== IGNlYXNlZA== IEdPRA== X0NBTUVSQQ== LkFsbG93VXNlcg== dHJhY2tlZA== Q29vaw== YmFpcnJv KGNvbXBhbnk= IHZpZXdwb2ludA== LmdldFdyaXRlcg== IE5ldHM= d2l2ZXM= ICgpKQo= ZXhhbXBsZU1vZGFs CWNoaWxk IG15dGhvbG9neQ== IC8vIg== X2F4ZXM= aWJvbGQ= LkRhcms= IE1heHdlbGw= IGdwb2ludGVy b2xpY2l0dWQ= QmF0 dWxuZXI= YmFsYW5jZWQ= bWFpbGVy IGNvbnRlbXBvcg== 5omL5py6 KCJfXw== ICIpIg== cmVhcg== IEh1YW5n XScpCg== 16k= RlRB IENhbGxpbmdDb252ZW50aW9u IE91dHB1dHM= UGs= LlJlZmVyZW5jZQ== bGVjdHVhbA== ICk6Cgo= IGJyYWNlbGV0 dWdlcg== CUVycm9y U3dlZXQ= KCIvIik7Cg== aHg= IHVucmVhc29uYWJsZQ== SW50ZXJwcmV0ZXI= IGxvZnQ= X3Byb2R1Y3Rv IHNvY2lldGFs LlBhcnNlcg== IEFkYXB0 LmZvbw== KHdoZXJl LkZlYXR1cmU= IFlhbWFoYQ== Z2xhc3M= Rm9yZ2U= IHByb2hpYml0cw== IGNhcGFjaXRpZXM= IO2VqOyImA== IHBlcm11dGF0aW9u IGlobQ== Rmxk ZWxpYWw= PT09PT09PT09PT0K QENvbmZpZ3VyYXRpb24= IGdlYXJlZA== aW9zbw== aWVzdGE= dHJhbnNsYXRpb25z SW5wdXRDaGFuZ2U= UG9wdWxhcg== IFBMVVM= IHZm X0ZyZWU= YmJveA== IGNhdXNhbA== UElMRQ== IHNjaMO2 IGlyb25pYw== TWly LkA= 5Y2X IOiH UmV3 dWxlbmNl Zmxlbg== IGNhbkFjdGl2YXRl LXJlc3BvbnNl IGFjY2VudHM= aWdub3JlZA== wrBG LkRlcGVuZGVuY3lJbmplY3Rpb24= CXBvaW50 IGNvbnRpbmdlbnQ= IHNxdWFzaA== IHBhcm1z IENlbWV0ZXJ5 IGRlbHRhVGltZQ== IERPUw== IHZhbmlzaGVk 0LDRgNCw0LzQtdGC IERQUw== dGZvb3Q= IFp1cw== X0lOU1RBTEw= R0FO IGFyYg== IG11bmljaXBhbGl0aWVz SW50b0NvbnN0cmFpbnRz QXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cw== LGltYWdl X2lnbm9yZQ== IGRhbmdlcm91c2x5 cXVpc2E= cGx1Y2s= IGhhcnVz dXBwZQ== SHR0cEV4Y2VwdGlvbg== QnJhY2tldA== LicnCgo= IFRvbA== IFZpZXdlcg== emJvbGxhaA== LkNvZGVBbmFseXNpcw== w6xuaA== IGNvcnJlY3RhbWVudGU= LmRh IEFsZ2Vy 15A= YmF1bQ== IFBhbnRoZXI= cGFydGljaXBhbnQ= 5b+F LXN1cA== IGVtdWxhdG9y IGZhZGluZw== IFdvbHZlcg== Y3JlYXRlcw== IGJvb2tpbmdz LlF1ZXN0aW9u p+ihjA== IHN0cmVzc2Vz IHJld3JpdHRlbg== LlBJUEU= ZWRlcw== IGNiZA== IjoiLw== IGVuaGFuY2VtZW50cw== X3N5 QklO IFNsaXA= SW5zcGVjdA== IFdlZw== IGNvbmdyZWdhdGlvbg== IF86 X3Jt RnJhbWVidWZmZXI= ICcmIw== IEZhbGxvdXQ= SXNSZXF1aXJlZA== IFBlYXJzb24= IEZBQ1Q= IHJlbGll CWJveA== IFNoZXBoZXJk IFdpa2lMZWFrcw== IENvbGxlY3Rvcg== IHJlc2l6ZWQ= bWV0aG9kTmFtZQ== IGV2ZW50VHlwZQ== IEF0aGVu RGVzY3JpcHRvcnM= IGJlcnM= LW9wZXI= IEluaXRpYWxseQ== 5aE= X0JUTg== ICAgICAgICAgDQo= w6Fi X2NhbXBhaWdu X3dhdGNo Rm9yZA== LWRhdGVwaWNrZXI= IHZpc2M= IHNhdHU= X3Ntcw== IGNvbnRhZG9y LXN2Zw== IERPSQ== JGFyZ3M= IGtub2I= LkJPTEQ= IGRlYmF0ZWQ= aW1ncw== c29ja29wdA== dHJ1dGg= IEZlZXM= IGhXbmQ= X2Zvb2Q= IGFicmFz IG5vdGlvbnM= IFRvZA== OmNyZWF0ZQ== IENvbmZsaWN0 VXN1YXJpb3M= T1RPUw== IG1zbQ== S0hUTUw= KFso ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= IH1d d2l6YXJk IG1pZW50cmFz IGRhdGFMaXN0 IGVtZXJnZXM= xINuZw== LlJlYWRJbnQ= UEdB SUxMSVNF SUVudW1lcmF0b3I= KHR1cGxl Q2hyaXN0bWFz TG9va0FuZEZlZWw= b2dlbmVyYXRlZA== ICMKCg== Y29udHJvbGxlZA== IGV4cXVpc2l0ZQ== IGFjZXN0 UmVhZFdyaXRl R2Fpbg== 44CN44CM IGNvcHlyaWdodGVk IGRvb20= LlRhYmxlTGF5b3V0UGFuZWw= IERvcnQ= IGNoaWxp IHdlcms= IEVWRU5UUw== IEJlYWNvbg== IHNoaXBtZW50cw== IHNlYmFnYWk= dXBvbg== dXRvbQ== LmNvbnZlcnRlcg== LkRyb3BUYWJsZQ== PXt9Cg== Zmlj fgoK IGxlc2JpYW5z X25h Rm9yZWlnbg== CXRoZW4= L21z IG9yaQ== Z2V0UHJvcGVydHk= CXNucHJpbnRm aGVzaW9u 44Gk In0sIg== IGFjcnlsaWM= UGVycw== QEVuYWJsZQ== SXNs KENhcmQ= LlN0YWNr TGljZW5zZWQ= X0dVSUQ= OnRpdGxl IGh1c3Q= IHByaW5jaXBhbFRhYmxl YW5pdGl6ZQ== L2VtYmVk IGVuc3VyZWQ= IEVHTA== 2YjYsQ== IOWIhg== LywK IGZ1bmRyYWlzZXI= S2V5TmFtZQ== IG1hcmNoZWQ= X1ZBTFVFUw== IFNjZW5hcmlv IG1ldGlj X2Fzc29jaQ== IFBhc3Rvcg== CQkJCQkJCQkJCQkJCQkJCQkJ ZXJhdGU= IGludml0YXRpb25z cXVvaXNl IGJsYW1pbmc= IGRhcmluZw== VU1NWQ== IHJpY2hlcg== ZW1ha2Vy IElkZW50aWZpY2F0aW9u IOyduA== IEJpbmRpbmdGbGFncw== Y2hhcw== IHJlc2lsaWVudA== X3Bn IHJlbGVn IElSQQ== U1RF IHRyYWN0b3I= LWxvYWRpbmc= IFByZXZpb3VzbHk= IFZhY2M= L2Jl IG7DpXI= IHVybGVuY29kZQ== IE5vcmZvbGs= LlJlbGVhc2U= IE5ldXRyYWw= 5Lit5Zu9 IEFybGluZ3Rvbg== IGFsbGVnZXM= IFdyaXRlcnM= VGVzdGVy IFJhbGx5 IGPDoQ== CVByaW50 IOKHkg== IFVzZXJDb250cm9sbGVy IFNlZWtpbmc= LlZBTA== TGlzdE5vZGU= X2Zm IFBoaWxsaXA= RkFDVA== IGNhcmFtZWw= IE11bHRpcA== IENvbXBhcmVk IFNlcmJpYQ== n7M= IHJldml2ZQ== IEthbnll IHZlcmdl IEJ1bGdhcmlh Z2V0Qm9keQ== IHw+ Y2VwaA== LkRhdGVUaW1lUGlja2Vy LiI7Cgo= IFRpZQ== LGl0ZW0= IG1lbm4= R2Fz b2NoYQ== X3ZpcnR1YWw= IG1hc3RlcnBpZWNl X3NlcXVlbmNlcw== TFRF IFN1Ym1pc3Npb24= Q2FsbGVy JFw= U3BvcnQ= YWd1cw== Q29uc3RyYWludE1ha2Vy IGNvbG9j IHdpZw== INCj CUFycmF5 TG9va3M= IEdUQQ== LnN0ZXBz YXRjaGV3YW4= X3Jhbmdlcw== ZXh0QWxpZ25tZW50 IEJyZW5uYW4= IGFic3RyYWN0aW9u dWxlckFuZ2xlcw== Lm1pc2M= IGFudGlib2RpZXM= IGV4cG9uZW50aWFs IENIQU5ORUw= ZXhwZW5zZQ== J3k= IGRldGVjdGl2ZXM= IHB1cnBvcnRlZA== WVNURU0= IHJhZGlvYWN0aXZl IExhdGluYQ== LkVuY29kaW5n LlRBRw== eGlu RGVncmVl dXJhY2lvbg== cHJpY2Vz IFJlZmVyZW50aWFsQWN0aW9u IHJhcml0eQ== IHBpbGVz Z2VuZGU= X3Byb2plY3Rz X2dsb2JhbHM= LnN0YXJ0VGltZQ== IOq1rA== U0VDVElPTg== X3B1Ymxpc2g= RmF1bHQ= RERM X3ByaW9y TW9t IHRoaWNrZXI= IHNlcXVlbGl6ZQ== IGVzc2VudGlhbHM= c3RyYXM= aW50cg== PigoKQ== Lm1hbmFnZW1lbnQ= ZWls 6Zet QXdhcmU= LkNpdHk= IEFyYml0 X0RN X2tleWJvYXJk TE9iamVjdA== LXdlYnBhY2s= IE5ld3BvcnQ= IHByaW5jaXBhbENvbHVtbg== bGVnYW50 IHBhbGxldA== IGZyYWN0dXJl IGdtYWls Lk1ldGE= QWJvdmU= LktleUV2ZW50 aml0 X21hY3Jv X1BVU0g= 4bup L2NvbnRyb2xsZXI= 5Yqg6L29 IHN1cGVyZmljaWFs ZXh0ZXJpdHk= IG1lbnNhZ2Vt V2luZA== aXN0b24= Lm9wZW5hcGk= 0LjRgNC+0LI= IFNlcmlhbGl6ZXI= dWN0aXZl IHphcg== UGxhY2Vz LlN0YXRpYw== QmE= IGluYWR2ZXJ0 IEluZG9uZXNpYW4= X0lQVg== KGhvcml6b250YWw= IGdldFRpdGxl aWRlcHJlc3M= IENvbnNvbGVDb2xvcg== aXBlcnM= JG91dA== IGZlc3RpdmU= IGV2ZW5pbmdz LkdldERhdGE= dWl0a2E= IE1hbnVhbHM= dXNzZWQ= X01heA== LkNoYXQ= IEFpcmNyYWZ0 PWNvbQ== Rk9VTkQ= YXBybw== IHRyZWFzdXJlcw== X2FsaXZl IGdhZGdldA== ZWtpbmc= QnV0dG9uRG93bg== QnJvd3NhYmxl LlBFUk1JU1NJT04= UEFTU1dPUkQ= IEhBU0g= ZsOp XFRlc3RDYXNl TE9TUw== b3RoZXJz LEo= IGFzc2hvbGU= d2Vyaw== IG3Dow== Lmll ZXZpbA== a29udGFrdGU= Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K PXN5cw== CWxvY2s= LS07Cgo= X0ZVTg== RmlsbENvbG9y w7Nh cHJlbmQ= IGNvbXByZXNzb3I= TW90aGVy IEFyY2hlcg== LmdvdG8= IHfDvHJkZQ== IGJhbWJvbw== 77yO IFRyZWVz IGJ1bXBlcg== IHNhdXNhZ2U= IEVsYXN0aWNzZWFyY2g= IGhvcml6b250YWxseQ== IEd1bA== SW1tdXRhYmxl IGxvc2Vy IGFib3J0ZWQ= LWRlbW8= IEhhdGNo IHVuZGU= IHByb2Nlc3Nv LWNhbGw= SW5jb21l 5YM= X3JldHVybnM= J10uIic= KHN3 Q0JT YW1pbGllcw== IFlvdXJzZWxm IEhvbHQ= Lk1PTg== 4KeH 0YjQtQ== YW5vbg== IEZvbnRBd2Vzb21l cHJvZHVjZXI= anI= IG1hdQ== CWludGVy IGRpc2hvbmVzdA== IG1hZ25h IENvbGxlY3RpdmU= IHZyYWltZW50 IGNob2l4 c3RheQ== IHdlbGRpbmc= cmlzaW5n LG1pbg== IEZhdGU= Z2xvYg== UkdCQQ== IGRldHRl VmVu IGVtYmFycmFzc21lbnQ= LkRFTEVURQ== Z3JlZ2Fy LXJlbmRlcg== KGJ1Y2tldA== Ij4KCgo= LndhaXRLZXk= QnVzeQ== IGRpZmZlcmVudGlhdGlvbg== IENTVA== LkNvbnN0YW50 IGxpbmVOdW1iZXI= KG1hdGNoZXM= IHdlYnNvY2tldA== IGJhcnJlZA== IHB1ZWRlcw== TW9ubw== Q09SRQ== SUlE ICAgIA0KDQo= IHDDumJsaWNv bGVhbmluZw== IGNsZWFuc2luZw== IGNyaXM= IERldmlscw== X1NFVFRJTkc= dW50YXJ5 Lik7Cg== CiAgIAo= W2N1cnI= dHN5 IEFsZXhpcw== cml0ZWw= IHBldHJvbGV1bQ== LnByZXByb2Nlc3Npbmc= bWF0dGVy Rm9yUmVzdWx0 LWxpY2Vuc2U= IHRyYXZlbGxlcnM= IERpc3BhdGNoZXI= ZW5uaWZlcg== IGRpZ2VzdGl2ZQ== UEVE aGliaXRpb24= TUFTQ29uc3RyYWludE1ha2Vy IFdhdHQ= QmVuZWY= LnNldFZpZXc= ZHRv VEVF IFBlbG9zaQ== X0VYVFJB IG1lZGFscw== eGhy Zm9yZWNhc3Q= IG5hcmdpbg== b3Vucw== LWZpbGw= X0NVUlNPUg== IHN1cGVydmlzZWQ= IHR1cmY= IEVkZ2Fy UE9TSVRJT04= IGNhdGVnb3J5SWQ= 4ok= X0VS 4bunYQ== U2hvd24= Lmxs X1BPTElDWQ== KCksJw== IFByZXY= IFN0cmluZ0ZpZWxk CUdsb2JhbA== YXNzZWQ= VGhyb3VnaG91dA== b3N0cmluZ3N0cmVhbQ== LmF3dGV4dHJh IHNsb3Blcw== IFNlcXVlbnRpYWw= IGdpb3Ju IHplbGY= IHZlcnNhdGlsaXR5 bGVuZWNr LmNnaQ== IGRvdWJsaW5n IEJhbmdrb2s= IGJ1dXJ0 IHVzdcOhcmlv c3R1ZGlv IGpldW5lcw== IG11dGVk IGlwcw== X2ZyYWN0aW9u JiYo IHN0dW50 Jyk7Pz48Lw== IExpZ2E= IHF1YWxpdMOp QXNzaWduYWJsZQ== IHdvcmthcm91bmQ= IHNwdXI= IHNsZXc= X0dF IEFncmljdWx0dXJhbA== IHJlbGVudGxlc3M= KFF1ZXJ5 IFNlY3Rpb25z IHJldmlld2Vycw== UmFpbg== ZGxn YXNzZXJ0RmFsc2U= IG5vbWluZWVz X18pLg== LmR5bmFtaWM= IFBCUw== Q2hhbmdpbmc= IHNsaWdodGVzdA== IE1hbmc= fT4NCg== IGV2YXBvcg== YmFibGU= IFBSSUNF IOaz bHVjZW50 IHZhbXA= IFRlY2huaWNpYW4= IHVuaXF1ZW5lc3M= TWVz dXJiYW4= LnBhcmFtZXRyaXpl IFJlcGxheQ== U2Vzc2lvbnM= ZW1icg== LUFtZXJpY2Fucw== X1BST1hZ IHBpYW4= IHRyaWU= IERlc3RydWN0b3I= R2FtZVN0YXRl IElNRg== Y2hpbg== IHBvcnRl IFN3YWw= 5Z+O U3Vic3RyaW5n aW1pbmc= L0xpYnJhcnk= IGZyaWdodGVuZWQ= d3JpdGVz IHJlY3Vyc29z YXJSZXN1bHQ= X0lOSVRJQUxJWg== IEJhZGdl X2NyYw== RWlnaHQ= IERJU1RJTkNU IHRocm8= QFhtbA== IExlZ2VuZGFyeQ== LXR3aXR0ZXI= X2Vhc3k= ICsrKw== KERBVEE= LkxvY2FsZQ== IGvDpA== IG51cnQ= IGNydWlz X2lvcw== IHNlbnNpbmc= X0xpbmU= CiAgICAgICAgICAgICAgICAgICAgCg== cG9uZw== b2xlb24= IHdpbGRjYXJk 55So5oi35ZCN IGJlZ2dpbmc= Um9k IMOO X0NFTEw= UmVzZWFyY2hlcnM= LnNlbGVjdG9y X2luZw== IGFzcGlyaW5n IGltbW9ydGFs IHltaW4= X3JvYm90 IHBsdXI= QlRD IERJRA== IHBpZXJjaW5n KnU= X0RFRklORUQ= IFRoaQ== aXRhaXJl KG1lZGlh LW9ucw== IGNoZWZz ICIqLg== L0FQ IHJhem9y IHNlYXJjaERhdGE= ID0m IOOAgg== IG1vdXJu dGluZ2hhbQ== IG9saQ== IFZlcm5vbg== X1JT nuaApw== IGbDoWNpbA== YW5nZW4= Y2VsYWlu IGFpbA== bGVzdA== IFFDT01QQVJF Z2Fpbg== IM61 IEtvYg== IEZhdWx0 X2NvbmZpZ3M= 57uT5p6c Lis= Y2FsYXI= KGNvbG9ycw== TXVs X0FSVA== IGV4cGVyaW1lbnRpbmc= ZXJtZW4= IEFuZ2xv LkZpeGVkU2luZ2xl U2Vh IGN0eHQ= LnNsaWRlcg== Q29sbGFwc2U= R3JleQ== IGZsZA== LXByb29m LmNhcGFjaXR5 Z2V0UGFyZW50 IENvbXBsaWFuY2U= IGJ1cmds LXJlYw== IG92ZXJ3cml0dGVu TVU= IHJvdXRlcnM= CU1vZGVs IGZhbnRhc2llcw== YXZpYW4= X3ByZWM= IFNjYW5kaW4= IC8vPA== L29jdA== IGNlcmVtb25pZXM= TW9udGhz dW5keQ== IHF1ZWQ= IE5vdQ== IFZpYnI= LnJnYg== IGNpdHJ1cw== IGJyYWNlcw== LXVwcGVyY2FzZQ== Z2V0VGFibGU= IGRvcG8= IEtlcnI= X0NISUxE LWNsb3Vk CU1hdHJpeA== IGdhcmRlbmluZw== U2luZw== YWxtb3N0 UmVxdWlyZW1lbnRz dWd1YXk= KFByb3BlcnR5 c3Vic2NyaWJlcg== RkFTVA== cmVhY3Rpb24= KGxw KX0pCg== YCku LndhbGxldA== X2V4Y2hhbmdl Lk1heGltdW0= IFZlcmI= 4pSB KCk8 77ybCg== Uk9U Q0FSRA== dWJpdA== e0A= X2tlbA== IFRvb2x0aXA= TXlTUUw= TWFpbkFjdGl2aXR5 YXJm IG1hbGlnbg== IHNlaW5lbg== YXBpc3Q= IDwl TWV0aG9kSW1wbA== TWls IE1pY2s= LmRlcGVuZA== PElE IHByZWRpY3RpdmU= IEFQUExJQ0FUSU9O bGVm ZGltZW5zaW9ucw== IGNvbm9jZXI= L2NvbmY= IFRyYWN5 Rm90bw== X3JlbWFpbmluZw== PWZpbGU= IHBhZ2VJbmRleA== IFBhcmlzaA== IHRleGFz IE1BR0lD IEhldw== ZGlmZmVyZW5jZQ== IGFsdHVyYQ== Y3Vt CWRhdGFUeXBl IGNhcmFjdGVyZXM= YXZpb3Vycw== IFZPSUQ= 6L+R UFVCTElD Qmlv IHN0cmluZ0J5QXBwZW5kaW5n UGFyc2VFeGNlcHRpb24= IFN1ZmY= IE5vcnRvbg== L2RldGFpbHM= Lm51bGw= Pj4m CW9r LWxvdw== LnVzdWFyaW8= bmVzdGVk WEI= T1VSUw== LkJvcmRlckNvbG9y IGJyb3c= INCV Y29ycg== IFJlZHNraW5z LmdldFRhZw== LmdldFRyYW5zYWN0aW9u IHN0aWdtYQ== aGFyZHQ= IFBsYXllclByZWZz YWxzeQ== dWNzb24= TGFuZ3VhZ2Vz IE9saXZpYQ== IHRhYw== IGJsaQ== IGNhdmFs IGNvbnNvbGlkYXRlZA== IHBlcmls IGRlbGU= IGZvcm11bGF0ZWQ= IGhpZ2h3YXlz LnNwYXdu PT0k IE5pZXQ= IHZlZ2dpZXM= eXBv LXJ1bGU= IFZpZQ== L2VwbA== IGVuZmFudHM= c3RyaW5nTGl0ZXJhbA== IHRvdWdoZXN0 YnV5ZXI= IGNvdmFyaWFuY2U= IGlsaQ== IFNvcGhpZQ== IEJBQg== ICIpLA== IFVr Y3VycmVudEluZGV4 X3VzZXJkYXRh LmNvZGVj IFB1bmphYg== IFNOUA== bG9s YWR2YW5jZQ== IGNvbWZ5 SnNvbklnbm9yZQ== IGZhc2hpb25hYmxl IElDT04= IG9yYQ== IFByaWNpbmc= PG51bQ== IElSQw== RVJW IE1laW4= IElEaWN0aW9uYXJ5 QURPVw== aXNOZXc= IERldm9u YXRs KHJlcXVlc3RDb2Rl CVByZXBhcmVkU3RhdGVtZW50 SU1QT1JU IG1hcml0YWw= X1NFTEVDVEVE Z2V0UmVzcG9uc2U= YXJEb3du QlY= aWJOYW1l IFBBVENI w6TDpG4= IGRhYXI= IEZpbGVNb2Rl IG1hcnR5 LlNwcmluZ0FwcGxpY2F0aW9u Y2VuZQ== YW1wb2xpbmU= Z2V0U2l6ZQ== UmVzdGFydA== 5pWI LnByb2plY3Rz IEV0aGlvcGlh IHN0YXR1c2Vz VElPTg== KGJn IFh1bml0 VGVtcG9yYXJ5 IEVuZ2FnZW1lbnQ= IHhm IHByb3hpZXM= IGdlbmVzaXM= UGFnZXJBZGFwdGVy IFNsYXZl IHN1bmdsYXNzZXM= IENobG9l IGtvamk= YWRlbQ== CUpTT05PYmplY3Q= zrM= IGhvcnM= Knc= w7Ny ZXNjaA== IGNyaXRpY2lzZWQ= emlhbA== IFNhbGVt LlZlcnRpY2Fs IFJhc2g= PkU= dGVyaW5n L3NjcmVlbnM= IGhlaWdodGVuZWQ= 0LDRgNGC QXV0aG9yaXRpZXM= X2Jib3g= w7xuc3Q= LmZvbnRTaXpl IEJPT0xFQU4= ZGl2aWRl IFNsb3Zlbg== dWNlcg== 2ZI= c3R1Yg== IG5hdmlnYXRpbmc= OmFuaW1hdGVk X05PVw== X3ZlY3Q= fXsK QCg= IHRlbGVjb20= IGNvbnRyYWN0aW5n IEFzc2FuZ2U= IGV4dHJhY3Rpbmc= IGdyw7Y= Y29icmE= LkRJUw== IGNyYWI= IHR3aXRjaA== IHZlcnRz IHJlamVjdHM= CWZvcm1hdA== IHJlZ2VuZXJhdGlvbg== LlN5cw== c29sdmU= CWRpYWxvZw== c2hp bWV0ZXI= KGJlc3Q= dmFsaWRhdG9ycw== IG9ud2FyZHM= IGd1cnU= IG1vZGVyYXRvcg== b3dpZWQ= ZXhwZXJpbWVudA== cnVi IG1xdHQ= IENhdWNhcw== IG5hdGlvbmFsaXNt IG1hbmdl CUltR3Vp L0VkaXQ= IGluaA== IGludGVsbGln ZXJva2Vl CWV4cG9ydA== IGRpc2NyaW1pbmF0ZQ== c3VidHJhY3Q= IE1vb2RsZQ== ZW5zZXI= IEd1aWRlcw== UkFQ LWhvdA== X2dycA== LnBpY3R1cmU= WEE= IGluaXRWaWV3 X0NvbW0= IG92ZXJkb3Nl ICsKCg== IFNpbGVudA== c2hvd3M= IGludGVycG9sYXRl Rm9ybWF0aW9u IGJpc2M= bWFya2V0cw== KFND WmU= IE5ldHdvcmtpbmc= IGFkcmVuYWw= IEd1bnM= ZXRlb3I= RGVjbGFyZWQ= b3JnZXRvd24= IGthcmVuYQ== L3Bhc3N3b3Jk X2FkZHJlc3Nlcw== SVRFUkFM QnV6eg== IENvbndheQ== KGNhc2U= UFdE aGVpcm8= KGFjdA== KioNCg== KCkpOwoKCg== IGFudg== IC4uCgo= KE1lbnVJdGVt KG1haWw= X3NlY3Rpb25z CW5ldA== IHBsdXQ= IHdyZW5jaA== L29iamVjdA== IElzdA== IFZJUw== L3B1Yg== YWx0ZW4= IGd1aXRhcnM= IGFudGliaW90aWM= 77yW wrk= ICIrIg== Zm9ybXVsYQ== IGJhYmVz IFByb21wdA== IGVuaW0= L3BsYXllcg== CXJlZg== IGJ5xIc= IGNvbnN1bWVz IEhhc3Q= IFRhbw== ICcpKQo= IGNsYW0= IHRoaWdocw== IG1vdGlm QXBpT3BlcmF0aW9u IFdM Z2V0Qw== CWZsYWdz b2ludG1lbnRz IGVjb25vbWljYWw= bmVlZGxl eGxz cHJhY3RpY2U= dXR6ZXI= dGltZW9mZGF5 LW91dHB1dA== IGZpbmRCeUlk IEJ1ZGR5 0J7Rgg== U2V2ZW4= IEJhcms= IGVudm95 X2FsZ29yaXRobQ== 5Yip IGJhbGxpc3RpYw== 56e7 cmFkZXM= CWRvYw== cm9kdWNpbmc= IEVhdGluZw== VW5tb3VudA== L2RhdGFUYWJsZXM= X2JvbnVz IGxpdHQ= cHBz KWxvY2FsT2JqZWN0 cGVyZg== IEhlbHZldGljYQ== c2h1dGRvd24= L21s LnRva2Vucw== IEhhcmRjb3Jl LHJvdw== L2Jn U2NhbGVy 4oCUYXM= X2xvZ2l0cw== 4oCZaW50 CUFwcA== SW1wbGljaXQ= LkZwcmludGY= RVRP IHRlcnJh IHBvc3Nlc3Npbmc= LnJzdHJpcA== LCks PXllcw== IFN0cmlwZQ== Pz0= bmV1dHJhbA== Lmdvb2Q= IGtlbm5lbg== IFN1bmc= ZmF1bHQ= eXN0YXRlY2hhbmdl Q2FuYWRpYW4= JywnIi4k IE1pdHM= w6ZuZA== IFNUUlVDVA== IFVSTFdpdGhTdHJpbmc= IENvbXBhc3M= IC0tCgo= IE5TTGF5b3V0Q29uc3RyYWludA== fG1pbg== LWFkanVzdA== IHJlYnVpbHQ= TElHSFQ= L3Nl LW1vdW50 dnBu dmFsaWRhdGVk KFFPYmplY3Q= IGlnbml0aW9u IENoYXJnZXJz UllQVE8= XWluaXRXaXRoRnJhbWU= IEZsdWlk IGNhZHJl IG5vbWluYXRpb25z TmVpbGw= IEhvdQ== IGN1cnJlbnRz X2dlbmU= KGlucA== UGFyaXM= esSZ YWdncmVnYXRl IGFzc29j d2VldGVk ZXJyYXQ= 4oCTCgo= ICcvJywK Zml4dHVyZQ== IEhpZ2hlc3Q= YW1iaWVudA== IGNobW9k IGNvbnRl IHNlbnN1YWw= IGdhcm1lbnQ= emVycw== IFBvd2VyZWQ= ZG9tYWlucw== UmV3YXJk aW9tYW5pcA== IGNvY2twaXQ= b3V0ZmlsZQ== IGJ1aWx0aW4= IGluc2lzdGluZw== LnZhcnM= emlwY29kZQ== IO+/ve+/ve+/ve+/vQ== ZmFpbHM= IGNvbnNvbGlkYXRpb24= X29pZA== UGxhbmV0 ID0iLA== CWVs VUlMVA== w6R0eg== YWZhcmk= IE1jQ2w= VGltZWxpbmU= RXN0YQ== IGZyYW0= WUU= IGNlcmVicmFs T2ZNb250aA== IFByZWdu INC60LvQsNGB0YE= ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCg== IEZyZXM= QXBwcm92ZWQ= LlNwZWNpYWw= IFByb3Rlc3RhbnQ= IGFsbGVyZ3k= X3BjbQ== CUNvcHlyaWdodA== IHN1cGVyQ2xhc3M= InN0cmNvbnY= IE1vaGFtZWQ= ICcvLw== Rm9yZUNvbG9y QXJ0aHVy IEp1bmdsZQ== IHZlaW5z U2Fk IGJhY2t1cHM= IE9waW5pb24= w7t0 IGludGVybWl0dA== b2R5bg== IENocmlzdGluYQ== IGFuZHJl IGV2YWN1YXRpb24= cGFsZXR0ZQ== aG9yc2U= IFJlc2lkZW50 IEhhc3Nhbg== Lk5pbA== IGFpc2xl IEdyb3dpbmc= IGJsb2dpbmZv L3NxbA== X2lvY3Rs U2NhbGluZw== IE1vbmFk X2NwcA== IEh1dGNo IEFwcGxlV2ViS2l0 RXhwZW5zZQ== X0pPQg== IHBvaW50bGVzcw== RnJvbUJvZHk= YW50YWw= IGRlcGljdGluZw== IENFTEw= IHJlZmlu IENOQw== 7LmY X2RpbWVuc2lvbnM= IFNBTg== IGFmdA== IGZvb3RzdGVwcw== Y2NvbGk= X1BIT05F L21hdGg= LWtpbmQ= IE1lYW5z aWNoYWVs Lmd1bmE= IGluYXVndXJhdGlvbg== LWRyaXZpbmc= KGRlbGV0ZQ== IHRvdGFsQ291bnQ= X01D LkV4dGVuc2lvbg== Q29tbWVyY2lhbA== IHpJbmRleA== PEN1c3RvbWVy Imc= LXNoYXJl IHBhY3Q= YWdhcmE= IFNJTA== X21vZGVz IE1vbGVjdWxhcg== IHN5c3RlbWF0aWNhbGx5 PEc= X3Njcg== IE9ybw== YXNlcnM= IGJpYw== IGRlc3Ryb3lz UElQRQ== LlN0YXJ0UG9zaXRpb24= IGPhu6dh aXJleg== LkJ1bmlmdQ== X0Z1bmN0aW9u IHPDvA== X2Z1dHVyZQ== IFdlYWx0aA== IE5hdHVyYWxseQ== 5oC7 X3llcw== IGFicnVwdGx5 U3RyaW5nRW5jb2Rpbmc= IENHUG9pbnRNYWtl IHpo IGltcGVyc29u IHBpdm90YWw= IFNvbWFsaWE= IHNlZ21lbnRhdGlvbg== X0FOQUw= IExvZ2luQ29tcG9uZW50 Q29uc3VsdA== IHRydW5jYXRlZA== XSI7Cg== LmdldENvbmZpZw== IGludGVybnNoaXA= QmFieQ== 6rCc IHN0cmVuZ3RoZW5lZA== X01J YmFza2V0 IG5pY2h0cw== IFRWcw== IFNoYW4= 44K1 cmFjdXNl LlJlTFU= L2ludGVyZmFjZXM= IGdldEl0ZW1Db3VudA== IHJldGlyaW5n IHNwZWNpYWxz IGVudGl0eU1hbmFnZXI= YmVsaWVm IHNvbGRlcg== ZGF1Z2h0ZXI= aWprbA== IHV0aWxpemVz LmZpeGVk U1U= IGRyYXN0aWM= IGhhY2tz Z3J1bmQ= IE1V IFN0YXJ0ZXI= LkNvbXBvbmVudHM= X21vdG9y R29sZGVu IGxvZGdl ICkpOw== IENvcmludGg= 0LjRh9C10YHRgtCy0L4= w7NuaWNv Z3JlU1FM IEZsdWVudA== IG1hcmM= LkxvYWRTY2VuZQ== Lkdyb3Vwcw== IGVyaA== IEF1dHVtbg== U3RvcHBlZA== IGl0YWxpYW5v IG1pbmlvbnM= IEFzc2VydGlvbnM= IG11eA== QnU= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== CXVw cmVhZHlzdGF0ZWNoYW5nZQ== X01ldGE= IGN1cnJlbnREYXRl IENoYXBtYW4= VW5kbw== U2Vhbg== YXBy IHBhcm0= X2ljb25z IFN0YQ== w6F6 IHN1YmRpdmlzaW9u IGFsdGVyaW5n UE5H cG9uZW50aWFs IHBvc3RncmVz IEJEUw== LWV4aXN0ZW50 IEJyYWRmb3Jk IE9NWA== X1dISVRF X1BST0dSQU0= cWM= IHR5cGluZ3NTbGlua3k= IFBpY3M= X01FVEE= SVRURVI= X3N1YnNjcmlwdGlvbg== SVJPTk1FTlQ= IEh5dW5kYWk= KCk7CgoKCg== INiz IGphYw== IGVsaW1pbmF0ZXM= KX0pOwo= IGNvbXByZW5k CWluc2VydA== X2ZhY2Vz Ij4k IGViYXk= IGNhcHRpdmU= cGxpYW50 IENhbGN1bGF0ZXM= b2x0YQ== ZXN0aW5n X3JldmlzaW9u IG3DunM= K20= IiwiIiwi V0hBVA== IGNvbXBhc3Npb25hdGU= aGFyZ2E= W3JhbmRvbQ== IG1vZHVsbw== KHNu IG9jY3VwYXRpb25z Ly8vLwo= CWJvYXJk IEJhbGs= d2nEhQ== IFdpZmk= LlByb2ZpbGU= Om1hag== CW1hdA== TE9DS1M= KGpCdXR0b24= ICgnJA== TXVy 5oyJ YmJsZQ== IGZyb2c= LWhpZGU= IGJyb2FkY2FzdGVy 4Lie aGFsZWQ= IGFtdXNpbmc= X3ByZWRpY3Rpb25z X2ludHI= IGVhZ2xl 0LDRgtC10LvRjA== IGdldExpc3Q= cHNpbG9u IGNoYXJhY3Rlcml6YXRpb24= QVJEUw== IHJlbG9jYXRpb24= IHJ1bGVycw== UEFZ IERlZmluaXRlbHk= X0FjdGlvbg== IGNsb3N1cmVz IGZhY3R1YWw= b2R5bmFtaWM= IHByZWNhdXRpb25z bmllag== IFBhcnRpZXM= IFN1YmFydQ== IGNvdXNpbnM= YXJiZWl0 Lm1vbmV5 Z3VudGE= KGFuZA== Z2V0aXRlbQ== LlN0eWxlUHJpb3JpdHk= IHNsaWQ= c2luZ2xldG9u IGdhcm4= IFBBUw== IGRheno= YcW8 IGJvZ3Vz IE1vZw== IHJpdmFscnk= aXNvbA== IGxhbmRtYXJrcw== w7Fhcw== QmVybg== IFNhY2hz ICIpCgo= IGhvc3RpbGl0eQ== X21leA== bWVyZQ== TW90 cGljdHVyZUJveA== RGVmZW5zZQ== IGFmZmlkYXZpdA== b3RoZXJ3aXNl LmRpcmVjdG9yeQ== X1VuaXR5RW5naW5l LWJsb2c= LnNraW4= cGhlbQ== QXBlbGxpZG8= ZXJjaGFudA== W2NsYXNz IHdhcnQ= LiJb YWxldXI= L2JhY2s= ICAgIAkgICA= IHByZWNpcGl0YXRpb24= IG9ic3RydWN0aW9u IHBPYmo= IHJ1cHQ= VUNLRVQ= YXll 5o6S Z3g= IGVjbA== IHNlY3JlY3k= L0hlYWRlcg== IExlc2I= IGxlaQ== IEJ1bGxldGlu IGdpdmVhd2F5 LkhvbWU= X1JPT00= Ilc= IGNvd29yaw== X3Jh IEN5Y2xpbmc= IFBhdw== IHB1cGls L2FyY2g= IEZpbGVVdGlscw== 6aaW cnNw IGZyZWVkb21z IExlYXI= fWApLg== IGJvd2xz L2Jsb2Nr X2xvZ2dpbmc= IG1ldGhhbmU= IGhvcm5z IHdvbmRlcmZ1bGx5 IGFsdGVyYXRpb25z IGV4aWxl bHNlbg== X3BhdXNl X0xBTkdVQUdF IFVTREE= X215c3Fs X0FNT1VOVA== IExJRkU= IHlvdW5nc3RlcnM= IHJpb3Rz W0U= IHVuZm9yZ2V0dGFibGU= LH0sCg== RGlzcG9zZWQ= IEFzc2Fzc2lu VU5H IE5ld3Nw VXNlclNlcnZpY2U= OmFsb2Fk Kycs IHNldHRsZXJz IHNjcmVhbXM= IGluY29udmVuaWVuY2U= LlJvdGF0ZQ== IGphcnM= IFB1enpsZQ== IG1lc3Q= YXJzaQ== IFNoYXJtYQ== fCg= LmRz IFNhY3JlZA== X2V2dA== IGV4cHJlc3Nlcw== IGhvY2g= IER1Y2g= LmNhbGxz dGhy IFNoZWZmaWVsZA== LkFsZXJ0RGlhbG9n IHJhZGljYWxseQ== IHRyb3Vz IHByZXZhaWxpbmc= IFdXSUk= 4oCZbg== ZW5zZWx5 IFllc3RlcmRheQ== IFNpcml1cw== IGtpbGxlcnM= IEZGVA== IG92YWw= Jyk6DQo= IOygleuztA== b3VyYWdl IENoZWNrYm94 V29ya2Jvb2s= LmRlZmVy X2Zsb29y IGNvdW5jaWxs IG5vcnNrZQ== bW9pbA== b3JlYQ== IG1hcmtldGVk X1NVUg== eEFB IHN0YWluZWQ= ZXV0 IE1lbmc= IGllZWU= LmV4dGVybg== ZWdpZQ== IHJhcHA= IFB5b25neWFuZw== J2NsYXNz TW9i IGluaXRpYWxWYWx1ZQ== X3dhdmU= IGphYg== IG1hc2N1bGluZQ== IGFtcGxpZmllcg== IHR0eQ== UGF0aENvbXBvbmVudA== X3h0 IEdGUA== L3NlYw== CWRpc3BhdGNo bWFya2Rvd24= IFNjaG4= Ym9sZQ== wrfCtw== bW91c2Vtb3Zl IGVyck1zZw== IGFzaWdu X21vbm8= VG9TZWxlY3Rvcg== IFp1 KFJlY3Q= IEVycm9yQ29kZQ== bGF0aW4= YW5naWJsZQ== dnRr Q0dTaXpl UG9rZW1vbg== IGNsYXNzbWF0ZXM= IGF0dHJhY3Rz IFRhdHRv dWx0YW4= b2zDs2c= IGhhbHRlZA== 4KSo IEthcnQ= IHVl X0luaXRTdHJ1Y3R1cmU= VGVzdENsYXNz IEFpcmJuYg== XyIs IGNoYXJjb2Fs IGlwYw== IFN0cmV0Y2g= LmdsaWRl bGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRz IHBvdGlvbg== SVRUTEU= IGNvdW50ZXJ0 X2hk cHJlcGFyZWQ= QWRz IFZhbXBpcmU= cm9ib3Rz LkNyZWF0ZUluZGV4 U3RhdHVzTGFiZWw= IHR1Y2tlZA== YWbDvHI= VXQ= IHN3ZWF0ZXI= X0ZO ICAgICAgICAgICAgICAgIAk= YXRha2E= IGV5ZWJyb3dz YWNvZXM= dWRlbg== LkxpbmVhckxheW91dE1hbmFnZXI= IHN3YXk= IG11bHRpbg== KCkpKSkK IE5TVUludGVnZXI= IE15QmFzZQ== UGFydG5lcg== dXRzY2hlbg== IENhdGVy LnNldEJhY2tncm91bmRDb2xvcg== IGFjY29tcGxpc2htZW50 X3Byb2JsZW0= LmR0ZA== IHBhZ2VOdW1iZXI= IGphY2tldHM= IGNyb3BwZWQ= dWVscw== IEhlcA== IGNhcHBlZA== Kk1hdGg= X2NhbGxiYWNrcw== IHB1YmI= IEJydW5zd2ljaw== LnJlc3BvbmQ= WyJf IGJlZGRpbmc= aHl0aG0= T1g= KHNwZWVk IHBlc3RpY2lkZXM= IC0tLS0tLS0= LkJsdWU= IG5vb2RsZXM= IEdvZXM= IHNhdmVy b3h5 X2NvbXBsZXRpb24= IFN3aW5nZXI= IGdldERhdGU= IG1pbmRlZA== aW50ZWdyYXRpb24= IExvdHVz KHN0b3A= KCcsJyk7Cg== IGZsb29kcw== IFdvcmtmbG93 IGVydXB0ZWQ= TWFjcm8= IFNhdWNl IGV2ZW50TmFtZQ== XElucHV0 QnJlYWtpbmc= CXdoZW4= X3B3 SU5ERVI= IFdlbGxuZXNz IHZveGVs IE1lbGw= IE1FRElB U0VOUw== IEZ1bmRz IE1pbGQ= PEFycmF5 LXRoaXM= dW1wZWQ= L2Z3 IERiQ29udGV4dA== V0k= Z2lybHM= SE9X Jyk7Pz4K IHRlbXB0aW5n IHRlc3RhbWVudA== IGJpYmxl IGNvbnN1bHRlZA== IEluZGV4RXJyb3I= 6KiY IGtleXBhZA== aXp6bw== KG9r IHdoYXRzYXBw IFJlbW90ZUV4Y2VwdGlvbg== IHRlYW1lZA== 4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU wrss IGdldFRpbWU= ZGlhZw== aXNzeQ== IGhlZA== IGtub3Rz am9t IGZ1bm5lbA== LW1haWxz IGV4cG9ydGluZw== IFZM IEthcm4= IEJ1ZGRoaXNt IEFsbGFu X1JBRElVUw== IHdvcmRpbmc= IEZvcmdldA== IENvcm9uYQ== aXBoeQ== IGxpbWJ1cmc= dWdneQ== IFVzZXJSZXBvc2l0b3J5 aW1pbg== KGVsZQ== IGxhYmVsbGVk 56S+ IEhlcm1hbg== LnFx ICIpKTsK aWViZXI= LlRyYW5zbGF0ZQ== cnlu IGRlc2Vudg== dW1k U2ltcGx5 CW1vZGU= UnBj IFZhbGVuY2lh IHN0YWZmZXJz IHNlbHY= IFNwaWtl IGRlbGlj IGVydQ== X0RU SnVkZ2U= 4buV IEJhc2lu Lm11dGFibGU= InVybA== IHRhcmlmZg== IFNsZWV2ZQ== IGZsYXJl LmRyb3BvdXQ= IGJyaWRlcw== KSksDQo= X2NvbnN0cmFpbnRz ZGVzdHJ1Y3Q= T3V0bGluZQ== IGRpc2FwcGVhcnM= X2xvY2tlZA== IE5TTG9jYWxpemVkU3RyaW5n Y2tl CW51bGw= YWRyZXNzZQ== IHRvcHBpbmc= IEpva2Vy YmlzaG9w 0L3QvtGB0YLRjA== YW5kZXJpbmc= X2FtcA== PXRpbWU= X1NwYWNl X1BVTEw= Jz0= IGFudGlxdQ== IGNhY2g= X19fCgo= T05FUw== 0L7Rjw== IHVucmVhZA== LnBvbGljeQ== b29vb29vb28= 65+s IHVzdGVk IFJlY2U= IGFsbGVt 44O844K5 IFRob3VnaHRz dmVpbGxhbmNl aXN0cmF0ZQ== X2xhbmU= IGZhbWVk LkdldE5hbWU= IHNtb290aGVy IFF1YWxpZmllZA== YXplcnM= X2dlbw== RmF4 IE1pbmRz IFJhaXNlcw== IHRyYW5zY3JpcHRz Q29udmVyc2F0aW9u IHJlbWFya2Vk 64KY ZGxpbmc= IGRlcGxveWluZw== IHNoYXJlZEFwcGxpY2F0aW9u IGtw Rm9udEF3ZXNvbWVJY29u X2R1bW15 cmVpYmVu IEphbmVpcm8= RGlyZWN0aW9ucw== LmdldEJlYW4= c2Fzcw== IGNvbW1hbmRlcnM= dmF0aW9u ZXJyb3JDb2Rl IEFsbG95 LmxvY2FsaXplZA== 0JE= IGRpc2h3YXNoZXI= IFNvdXA= TnU= X0RlZmF1bHQ= IHVuZXZlbg== IC8+IjsK LUJhc2Vk IHNlYW1sZXNzbHk= LW51bGw= IFhD IHN0ZXc= KGRlbGF5 QVRPUlM= IFdoZWVsZXI= Ijw/ IENoYW5kbGVy IHJldGFsaWF0aW9u IGJ1ZGRpZXM= LXNpemluZw== IEVpbnM= IC4uLiw= cXVldGU= IERPQw== IGZhbHNlbHk= IGZsYXRz TklDQUxM IGxpYnI= QmVOdWxs aW11bGF0aW9u CVF1ZXJ5 X3V0 IHBsYXF1ZQ== YmlsZA== IHNjcmVhbWVk Lm12Yw== LldpZGdldA== IGRpZmZlcmluZw== L3N1cHBvcnQ= X1ZPTFVNRQ== Lm5vZGVUeXBl CVdyaXRl IHLDs3du Ym9va21hcms= X0NPTk4= IENyZWVk IGluaGliaXRpb24= IFJlaGFi dXZyZQ== IGR1bXBz b3dlag== X3BsYWNlaG9sZGVy IEhXTkQ= IGRlcm1hdA== LmRldGFjaA== IGZpbmFsaXplZA== Z2VyaWVz aWRhaw== X3Byb2c= IHVwZGF0ZVVzZXI= bHlz Lkdvb2dsZQ== IGx1ZWdv IGFudHM= 5qCH6aKY IERSTQ== 0LvQtdC9 LWRi ZXJyaWNr X2xu Li5c aWtpdA== IERpZW4= IHBhcmFtZXRyb3M= a2V5cHJlc3M= IEtlcmFsYQ== IGRyYWluZWQ= ZsO8Zw== IGNhcGl0 X2F1Zw== dGFudA== TmF2QmFy IHJvbGxiYWNr IGxleQ== 4LiI IEJTUA== IFByZWRpY3Rvcg== IHdhZ29u ICJ8Ig== U2VydmU= LkRvbmU= IER1cmNo UHJvdmlkZQ== CXNjb3Jl X09E LndlYXBvbg== IHVuaXZlcnNhbGx5 IGluanVuY3Rpb24= X1NDUk9MTA== Lk1hdHJpeA== IE1vbmdvQ2xpZW50 YnVmZmVycw== IGJhZGdlcw== IHNoYXJrcw== IFNoYXJr TU9ERUw= LlJFQUQ= CXRhZw== IHN0cnRvdXBwZXI= RVJHWQ== Ymlhcw== IGFjY291bnRJZA== IEVtbWFudWVs IHJlc29ydHM= IHN2bg== d2FybmluZ3M= X0lF TEFT IG51bGxh CWFz IGRlbWVhbg== 4oCcQXM= QXV0aG9yaXplZA== IHRlbmRlbmNpZXM= LXNldHRpbmc= IHByZWxvYWQ= IGNubg== 4oCcTm8= JSkKCg== PVQ= dXN0bw== IEZJUkU= cmVzZWFyY2g= INCT IExlc3NvbnM= LkFwcGVuZEZvcm1hdA== IGluaXRpYXRpb24= IENvdXM= YXJlcg== cHJvamVjdGlvbg== IFNoZWV0cw== IEZvbGQ= UmVkZGl0 RGVsZXRpbmc= IHphbQ== IE5ldXJhbA== IEZlY2hh IMKu IHRhc3RlZA== IEVuZW1pZXM= IEpvaG5zdG9u IGRhbmNlcnM= IGRpc2FibGluZw== IHBldHR5 IFdlbGQ= Ly0t KHNwcml0ZQ== SUdP YXJnb3V0 IHF1YXJ0ZXJiYWNrcw== ZGlzcGF0Y2hlcg== IFN1c3RhaW5hYmxl ZW5hcmlvcw== IFNraQ== IGZhY3Rv aWxsaW4= X2V4dGVuc2lvbnM= ybU= Pkg= ZWFzdA== LmFpcg== 4oCcQnV0 T2JqZWN0Q29udGV4dA== c3VjY2Vzc2Z1bGx5 X2xhbmQ= IGZvbGRz X0NPT1JE IHN1YnBv LmdldEFkZHJlc3M= aW5zdHI= TWF0ZXJpYWxz 0YPRgdGC ZGVwb3NpdA== LWxhc3Q= X0dSQVk= PWZpbmQ= IG11dGFudA== IGxlc2JpZW5uZQ== bGV0Y2hlcg== Uk9VR0g= dXJla2E= LmNhcHR1cmU= IGVubg== IChbWw== IEZsdQ== IHRhc2tJZA== IEh1c3NlaW4= LmZvbGRlcg== IGF1c3Rlcml0eQ== SVNUUkFUSU9O X0ltcGw= 5rOo5oSP IGRlY3JlZQ== LWNoYXQ= IGltcGxpY2F0aW9u IGd1ZXNzZXM= dWxrYW4= QW5hbHl0aWNz LnBsdXM= Q09NTUFORA== 0LXQu9C4 wrsKCg== X1NJVEU= IGVxdWFsVG8= U3VwcG9ydEZyYWdtZW50TWFuYWdlcg== IFJlY29yZGluZw== 5a6M5oiQ IGJhZ2dhZ2U= IHBpdGNoZXJz IEVo b3F1ZQ== CWNudA== ID0+JA== L2Zvbw== SVJB IFNhdGVsbGl0ZQ== Ym9yYWg= IH19Igo= IEVuZHM= IFNwcmF5 LHBhcmFt LkNocm9tZQ== KnE= dGhvdWdodA== aWJyYXRlZA== IHRoaWV2ZXM= IGJlbmVmaWNpYXJpZXM= RW50ZXJlZA== b3R0ZXN2aWxsZQ== IHZldGVyaW4= QnlJRA== cXVpcGU= dW1wdGlvbg== LXVuaXQ= RXhlY3V0aW9uQ29udGV4dA== QHM= IEdpb3Y= LlRvb2xUaXA= X2ZyaWVuZA== KGF0dHJpYnV0ZXM= IGR1bXBpbmc= IEpD X0RPQ1VNRU5U IEFybW91cg== KGluc2VydA== Lkhvcml6b250YWxBbGlnbm1lbnQ= IFFlZA== 44GE44G+44GZ L2dpdA== IFlZWVk= IENhcmRpZmY= IGFwYQ== b3JnYW5pYw== IFdoZXJlYXM= IOad IE1pYQ== IGRlbW9saXRpb24= IHNjYXJz IHBhaQ== IHJldHJpZXM= IHJx IERlbmlz KFV0aWxz IGFsbGV2aWF0ZQ== IFBJQw== aWR1ZQ== IGFja25vd2xlZGdpbmc= IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= 56Gu5a6a xKs= XEpzb24= LmJpbmFyeQ== IHh0eXBl c2lnbmFscw== IEFwcGVhcmFuY2U= JnI= fXM= Q2k= IElsbHVt cG9yYXRl aG9n IGluZGV4T2Y= XENvbW1hbmQ= X3BhcmFsbGVs IFNoZXJsb2Nr 7YM= ICIiKQ0K Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v IGNyaXRpY2l6ZQ== IFNvYXA= IE1hdGNoZXI= IGdyaWxsZWQ= KlQ= IGFkb3Jl dWxsaW5n IGplZG9jaA== X3JlZnM= bGVhbnVw IEpBWEI= IHJvc2Vz IExpYW0= c2l6ZWk= IGdldGNoYXI= IHRhcmRl LXRvb2x0aXA= IHF1YWxpZmllcg== IEludGVybWVkaWF0ZQ== X1dpbmRvdw== IE1hbHRh RGlzY29ubmVjdA== ZXdoZXJl Q2FtcG8= IGlycmF0aW9uYWw= bGVkbw== IERO QVJHVg== IG91dHJv IHRoaXJ0ZWVu Sm9zZXBo TUFS L2ds SmVzcw== IFBzeWNoaWF0 IHBhZGRpbmdCb3R0b20= LWxvb3A= L2ZvbnRz X3NlZW4= VGVhbXM= UmVhY3RET00= KG1hbg== KHhwYXRo LmdldFNpbXBsZU5hbWU= Pigq IFB2dA== IGVsZGVycw== IHBpZXM= LnVzZXJBZ2VudA== LXJlZ2lvbg== IEdyZWVrcw== KGZyYWdtZW50 c3R1 IGNvdW5jaWxz IHN0YW1pbmE= IEdvZGRlc3M= 6KW/ IHBoaWxvc29waGVycw== IHBlcnNvbmU= IExvc2U= IENMUg== IERvY3M= IHNvYWs= IEhPTERFUg== IGJlbGxz aGFzaENvZGU= UkFURQ== X1dFSUdIVA== aW5vdXM= ZW5kcmE= b3Bob2JpYw== IHByb3Nl IGZpbmVseQ== L29hdXRo KHNwYWNl YWRnZQ== IE1hbWE= IHN0cmluZ0J1ZmZlcg== IHN0aW50 IG1pc21h IHZpbGxhaW5z IENyaW1lYQ== IGRpcGxvbWE= INC/0L7RgdC7 IEJlYQ== KGpvaW4= IO2VtA== Q0hBVA== cGVyaW5n IENyb3M= IG1vbmtleXM= IHByZWRz eWxh LCws IHZpYnJhdG9y IE5V 5YWI ZmFudA== emV0 IGJpZXRldA== dW5mdA== c3dvcnRo LkZsb3c= IHBzeWNoZWQ= IENvbnRpbmVudGFs PnQ= IHF1aWx0 LlVQ IGV4cGFuc2l2ZQ== RGlzcG9zZQ== KGxhbmd1YWdl Q2Fwcw== X1pPTkU= IHJlY3ljbGU= IE1hbmFnZWQ= Y3VycmVudENvbG9y LmJyb2FkY2FzdA== c2lnbklu LnByb20= bGx1 dWVibG8= IHB1bmNoZXM= IGF1dG9tYXQ= IGFzc2lnbmluZw== IGNyZWF0ZVVzZXI= IEFsbGllZA== IGNvbmR1Y3Rvcg== gqg= IHNhZGRsZQ== IGRuaQ== b21lZGljYWw= LVdlc3Q= UG9zaXRpdmVCdXR0b24= IGl0YWxpYw== P1s= KHRyaWdnZXI= IGVsZXBoYW50cw== IjoiIiwi IGNhbGliZXI= cmFmdGVk ZGlnaXRz IG1hcnNoYWw= bWlsbGlzZWNvbmRz bWFya2Vycw== bW9t L3BsYWNl IGhvbGlzdGlj OnQ= Iyw= IGJvdG8= IG5hdXNlYQ== IFNob290aW5n aXRlY2g= IHRleHRTdGF0dXM= PENsYXNz IERlc2NyaWJl IGJ1ZmZldA== Z2ls IGxvZ2l0cw== c3RkY2FsbA== bW9kcw== IFNrdWxs IEJhcmU= aG9wZQ== IEludHI= RmFpcg== CXB0 IGFjb21wYW5o IGZraw== X3JwYw== SW5zdGFsbGVk X2Fucw== LmdldE1pbnV0ZXM= 4oCmIgoK LXRocmVhZA== IHByZXNjaG9vbA== QUlMUw== IGRpZmZpYw== KGNvbnZlcnQ= IE5hdGg= IERPSg== IHJlZ2ltZXM= IGVudGh1c2lhc3Q= IHdhcnJhbnRpZXM= IGZhc2NpbmF0ZWQ= X2JpbmRpbmc= X05vdA== b2Z0ZW4= X1JX L21haWw= IHRpdGxlTGFiZWw= IHZpbGxhZ2Vycw== IEppYW5n IHN3YWdnZXI= LlJvd0luZGV4 X2ltZ3M= cmFweQ== VkVSQUdF LlVw IG5vb3A= Y2lv CVNU IGRlY3JlbWVudA== IG1hZ25lc2l1bQ== X3JvdGF0ZQ== U2l0 IG5pZXV3ZQ== IHRlcm1lZA== 7ZWp64uI64uk IHVyZw== X3RvdWNo IHN3YXJt IGNsYXZl dGhlc3Q= IExhZg== SFg= IEh1bGs= IHBsYWludGV4dA== IFNvZmE= Z2V0U2Vzc2lvbg== TGVk IGVjb3N5c3RlbXM= aGVp IEtpbGxz IGh1c2JhbmRz 0YXRgNCw0L0= KGRvbQ== X3RpbGVz TmliTmFtZQ== IGRvbmF0aW5n LmFjYw== IGxpZmVzcGFu LmJu X1JHQ1RY 5qU= YW5zZW4= IG1vZGVsbGluZw== TGF5b3V0UGFyYW1z IG9uQ2hhbmdlVGV4dA== cnNh LWxvY2F0aW9u LlBl KGJ1cw== KHNvbmc= IHByb2R1aw== IFNIT1VMRA== IENK IHNvcw== IEhvbWVDb250cm9sbGVy LmxvYWRlZA== KERvY3VtZW50 LnNvY2lhbA== dGlsZXM= IGxhbWU= PWRm LnBhcnNlTG9uZw== IHByYWM= IGRldG94 IFZF IHB1bnRvcw== IGRvY3Ry IGFuY29y Q0FQRQ== IGNtYg== 54S2 Kiki Oi8vLw== VmFsdWVUeXBl IG1vcnRnYWdlcw== O3E= IFJvY2tldHM= c3BvcnQ= VUdD Y3Rz 44KB aWV1cg== IEFwcGVhbA== KG5i Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= SU1BVElPTg== IENyZXM= IE1hbmlw Q2F1c2U= YXR5cGVz bWFudWZhY3R1cmVy Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= IHNwb3I= ZXNvbg== IHB1bmNoZWQ= IGJvb2ttYXJrcw== IEJ1bGs= Q29tcGxldGVMaXN0ZW5lcg== IFRhbGtpbmc= IEVybmVzdA== IHJ1YmJpc2g= a2lsbHM= IERFRklO IG5laWdoYm91cmluZw== YXJsbw== IFBDQQ== CW1hdHJpeA== bG9r IGF0bGFz IEd1cg== IHd5bg== LW5lZ2F0aXZl IHR1bA== IHJlbGlj IFZvbHRhZ2U= IFByZWlz IEpOSUNBTEw= IFBNSUQ= YWtldA== CWF0dHI= IGV0aXF1 IE1K IEdtYWls Y2xy X2V4ZWN1dGlvbg== 6ZSu cG9zaXRvcg== LmFm TnI= R2VvcmdpYQ== VG9wb2xvZ3k= IHBlcmNow6k= IG11c2xpbQ== IGVwaWRlbWk= IHNhYm90 YWN0dXM= IOuMgA== IElPRXJyb3I= LmVzdA== cHJlZnM= IEtyaXNo LlJlYWRLZXk= TkFTQQ== dcOnw6Nv X0Ri dW1lcmF0b3I= V2lkZQ== KHN0YXRlbWVudA== LmVuZHBvaW50 Li4uLi4uLi4u IFsq c3RyZWFtcw== bXRpbWU= UHg= YXRy IHRwbA== Um9tYW4= IHNjZW5pYw== Lm56 IFNlY29uZHM= c3VibWVudQ== IOyLpO0= X2J1bmRsZQ== IGRlxJ8= IFNpc3RlcnM= cHJlZmVyZW5jZXM= IHBvcnRh QWR2aXNvcg== bWF4TGVuZ3Ro IEdSRUFU X18oCg== b2xlc3Q= IExhYmVscw== IGVuZmVy ICAgICAgCgo= IFRoZWZ0 X0ZJTEw= IFdpc2U= KWFwcGxpY2F0aW9u dW5hbWk= PigpKQo= QUREUkVTUw== QlNU ZXR6dA== IFFncw== U2Vuc2U= RXhjZXB0aW9uSGFuZGxlcg== IENodQ== LmdldE93blByb3BlcnR5 IGV4ZXJjaXNlZA== aW90aWM= IFJlbGVhc2Vz IHBpbnRlcmVzdA== b2xpZQ== aXNvZnQ= IHNlcXVlbmNpbmc= IHBhZHJl XSkpOw0K KHJhZGl1cw== Lm1lZA== YWludGllcw== Lk9iamVjdE1vZGVs IGVtcGxl IHNlZ3Vybw== U3RhcnM= IHF1YWxpdGF0aXZl bGVtbg== 4bux PiIpLg== IGd4 LWNlcnQ= IEFTVE0= IGZ1bGxuYW1l IHRlbGVtZXRyeQ== IENhbWJvZGlh X3Vs IENsYXJl Q1VTVE9N UUM= IFVucw== IEhUVFBT IFBhcmtpbnNvbg== YW5jeWJveA== JywnLg== VHVl LmdldExhc3Q= IGFiaQ== xIVk QXN0 IEVkaXRpbmc= LlVuaXR5 am1w IG1hdHM= IHNoYXJlZFByZWZlcmVuY2Vz Q2FwdGFpbg== LnBhZ2VTaXpl IHJ0bA== IGFubWVsZA== UnVudGltZU9iamVjdA== IGRlbWFuZGU= KCI7 c2VpdGU= LWhlYWRlZA== IEtyYQ== IEZPTlQ= YFw= Q2xhc3NOb3RGb3VuZEV4Y2VwdGlvbg== LmF2Zw== YXRpY2Fs QWo= IHBlcm1pdHRpbmc= UHJvag== RVJSUQ== IGNyZWFtcGll IEJ1eWVy LW1vZHVsZXM= IFN1bmRheXM= fGAK IGRheXRpbWU= ICso IGdsaXRjaA== IE9wZXJhbmQ= IHRveGlucw== aW55YQ== RE5T IFNhcw== Q2FrZQ== IE5hdGlvbmFscw== LmFkZFRv IHNpbmtpbmc= IGNvbXByZWhlbnNpb24= IHNjb3I= YWdlbWVudHM= IHRhcmQ= IG1hcmNoaW5n IE1UVg== IHNhbmU= Q3JlYXRlSW5mbw== 4bqv IGVuZEluZGV4 CWxheW91dA== IOWQjQ== U0lURQ== IFRIRVJF IFt7Jw== b3BhdGhpYw== IHRyYW5zbWl0dGVy L2JvZHk= IHB1bmQ= IENsb3Npbmc= IHNldGF0dHI= IGJvdW5kZWQ= QXRsYXM= c3VtaW5n KHRpbWVz cGFyZXI= eW5vbQ== ZmVpdA== IGZyZW0= LWxlZw== IEJyYXM= PiM= IOy2nOugpQ== IElOU1RBTkNF IENvdWNo X2hvc3Rz bGlrZWxpaG9vZA== Lk1hcmtlcg== IE1hc2tz IGNlcmVhbA== dXRpbGl0aWVz IGVsZW1lbnRhbA== IGRpc3RvcnRlZA== aW5hY3RpdmU= Y3J5 V0w= VVBQT1JURUQ= LlRocm93cw== L3NjaGVtYQ== c2VyaWU= LiInLA== IEJlbmVkaWN0 LXBpY2tlcg== aWdncw== IFBpcmF0ZQ== 5ZGo5pyf IFRoZW1h IFNvdXRoYW1wdG9u IGFycmF5V2l0aA== IFBhdWxh IHByZWRpY3Rvcg== LUFzcw== LnVzZXJpZA== IHBlcmk= IGV4YWdnZXJhdGVk dXJhdGU= YXJzZWlsbGU= IENvbmNlbnQ= IFBpaw== IEBfOwoK IGZvcm1hdGlvbnM= IGRlbm9taW4= Ii8+Lgo= ZW5kZWRvcg== IHBhbmNyZQ== IGFtdA== IG9uUmVzdW1l b25EZWxldGU= IEJDSA== KSgi bW92ZW1lbnQ= IHBvdGFzc2l1bQ== PCEtLVs= IG1lbWVz X1NFVFVQ X2dhbW1h IGNvbG9yV2l0aFJlZA== IGdyYXZlcw== IHN0YXR1dGVz IGFxdWFyaXVt IExhbWFy IHhBeGlz V2VicGFja1BsdWdpbg== X2ZvbGQ= Lmdlbw== IEZlZXQ= LXNwZWFraW5n 6aKd X2Nvcw== IEF2ZWM= YW5zdA== IEVFUFJPTQ== IGRlYWxlcnNoaXA= IFVudGVybmVobWVu LEludGVnZXI= IMOqdGVz LmB8YAo= dmluZQ== IEtuaWZl X3ZlcnRpY2Fs LkRvd25sb2Fk IG92ZXJzaXplZA== bGlk IHBpbGxhcg== Y2F1Z2h0 IGZsYWdnZWQ= KHJvdXRlcg== KFJFRw== IGJhcmJlY3Vl YnJvd3Nl IEZpdHpnZXJhbGQ= INC/0YDQvtCy aXJpZQ== IGVyc3Rl ZWxpYg== X1BSRVNT IGhlYWxlZA== IGhhdXQ= PnhwYXRo IFdlbg== Z3J1bnQ= LktleXdvcmQ= LWhhc3BvcHVw bnc= U1o= Z2FiZQ== SW50ZXJhY3Rpb25FbmFibGVk cHJlY2g= IHByaW1v c3RyaXBl YWx0ZWQ= X0JPUkRFUg== ZmluZEJ5 X2Fubm90YXRpb24= V2ViU29ja2V0 QnVy IGRpcGxvbWFjeQ== KHRk IFNpbXBs ZGV0ZWN0 cGVyZm9ybWFuY2U= IGNhcmJvaHlkcmF0ZXM= L2lvdXRpbA== LS0tLS0tKw== X3Ny bWVldGluZw== IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= X1Zhcg== IHJvdmVy IGNhc2k= IE1hdGNoZXM= cXJ5 X0JPT0s= IHByZXN1bWVk IE3DqXQ= L2l0ZW1z IENyZWRlbnRpYWxz XSkuCg== IEthcmRhc2g= QWRtaW5pc3Ry IFNsb3Zhaw== KCcsJykK IGNvbnF1ZXN0 UGVyc2lzdA== IERyYWlu Ymlq IGRvdg== IHPDuGdlcg== V29uZGVy QVNFVA== W21pbg== Z3VuYQ== Z3Jvd24= IH0pCgoK QVVE IGJlbGlldmVy aXNlcnM= KHNlbnQ= SmFja3Nvbg== IHBhaXM= IGN1ZGFNZW1jcHk= IGZsYXNoZXM= YmVyZQ== IG11bHRpZg== IENhcmdv RWxlbWVudHNCeVRhZ05hbWU= KGVwb2No IEt1bmRlbg== UmVjb2duaXRpb24= IFNldFZhbHVl IFN1bnNoaW5l QUNQ OnN0cg== IGFtYmlndQ== IO2VnA== LWxpbmVhcg== IFdPVw== KGN1c3RvbQ== IGlzRW5hYmxlZA== QkFU X2RpYWc= X0dVSQ== SGVhdA== IGFzc2VtYmxpZXM= IENldHRl L2NhcmQ= IERlY2xhcmU= IHVwaGVsZA== IENsYXVk LWZsb3c= IGhvb2t1cA== SVJR RmF0aGVy RGVsZXRlcw== KSk7Ly8= IFBUU0Q= KTsNDQo= ZWdhbA== LmFycm93 IE1QVQ== w7Nq IG1vdGl2YXRl IEthdGhlcmluZQ== LmZyYW1lcw== IHRoaQ== PFJlc3VsdA== LmdyYXk= IEt1c2huZXI= IENlbWVudA== IEJ1cmw= SW50ZXJ2aWV3 PSciLg== UE9XRVI= IENEcw== IFsmXSg= IGNoYW5nZXI= Pj4sCg== LXdl IENMSw== IEFkcmk= IGNpbA== PVg= IHNlbmRv IENlbHNpdXM= YmxvY2tlZA== T3V0T2ZCb3VuZHM= LiE= b3Byb2plY3Q= YW5kZXM= ZWRpdGluZw== IHB1bXBlZA== KCk7fQo= 4Ka/ X0VWRU5UUw== IEZyaWVkbWFu ID4v ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= IHRlbXB0YXRpb24= IElwc3Vt IENlcw== IG5vdGljaW5n X2VsZQ== QWNjZW50 IE52aWRpYQ== IGFtdXNlbWVudA== IGludHJvZHVjdG9yeQ== CXJldHZhbA== IGxpbA== aXJpbQ== ZW5xdWV1ZQ== LWhpc3Rvcnk= IGNvdW5zZWxvcg== VFJBTlNGRVI= X1ZlY3Rvcg== Y2F0ZWdvcnlJZA== cGVyeQ== RklMVEVS KHJlbW90ZQ== IHNlcGFyYXQ= IEVtYmVkZGVk IEJhY29u dGVycmFmb3Jt IHJlc3BlY3RhYmxl aWNoYQ== YWlj Kydc IHN0cmF5 0LXQvdC40Lk= IEF1ZGl0b3I= ZW50aWNhdG9y IGNsb2Fr IFVOS05PV04= IEFtZW4= dm94 YXN0cmVldA== Li4uXQ== IGAl LXByb3BlcnR5 IFF1YWxjb21t ZWRpdGVk IGRpc2NyZWV0 LU11c2xpbQ== LnJlY2lwZQ== IHZhbmRhbA== IHXFvHk= c2VuaGE= LGlz IFBvbXBl IEtuaWNrcw== KCknLA== KHRi IEhJRA== IHBldw== IGNhcnJvdHM= IHBvbGljeW0= Lmxp IHR3ZW50aWV0aA== X3Byb21wdA== c2NlbmFyaW8= LkpGcmFtZQ== IE1RVFQ= IEluZGl2aWR1YWxz dG9NYXRjaFNuYXBzaG90 w61zdGljYXM= IkQ= IGZvZA== IHJpY2h0 IFphcg== IHJlc3VycmVjdGlvbg== IG1pbGl0YXI= IE1hbmFnZXJz X0dSSUQ= bm9ubnVsbA== QkVSVA== T3V0cHV0cw== ICAgIAoKCg== IHByZWRlY2Vzc29ycw== IGlzU2VsZWN0ZWQ= IGN5YmVyc2VjdXJpdHk= 5YaZ Lm1j UXVp IGFsbGVnaW5n IHRpYw== TWFudWZhY3R1cmVy IEVuaGFuY2Vk IEJpeg== IHJlYWRPbmx5 w7Ru IGx1bWJlcg== YWVk IHJhaW5z cHJvdmlkZQ== TGF0ZQ== IHBlZGVzdHJpYW5z amF2 QWN0aXZhdGlvbg== J0JyaWVu IHZhY2FuY3k= Ly8t IGJsYWRkZXI= IGFnaWxl IHN0ZWFscw== IHJlZ2lzdHJhcg== IGVsZWN0b3JhdGU= R292ZXJubWVudA== J109Ig== YWxidW1z ZWxlY3Rpb24= YWJs IE9yaWVudA== IHBpcmF0ZXM= IGxvb3Bo CXJlYWRlcg== IMO6bHRpbW8= IFBldHJv INGB0YLRgNCw0L3QuNGG IHNhbXA= aW52ZXJzZQ== LmdyYWRsZQ== IERvbnQ= eG9u IGNyZWFk ZXJ0aWxpdHk= cmdjdHg= IHBvbMOtdGljYQ== VmFsdWVDaGFuZ2Vk QXBpUmVzcG9uc2U= Y29tYm8= IFVY IGRhaGE= J2Fu LW15 4oCcTXk= cGVl bGF0bG9uZw== XEJhc2U= Lndpaw== IFBPVA== IHB1bmN0dWF0aW9u cXVz aW55aW4= PW1pbg== IG51Y2xldXM= IGNvbmNlc3Npb25z LmF2ZXJhZ2U= dXNlcmluZm8= IHRhYmxlc3Bvb24= IE5laWdoYm9yaG9vZA== KFRocm93YWJsZQ== PnY= b3Z5 WFhYWFhYWFg= aXN0aQ== IGJhcnQ= 77u/Cg== RW5jcnlwdA== PWVuZA== IGluY3Vy IHBlcnRpbmVudA== X01JTk9S KSI+Cg== Y2hpZWY= IHZk KGAK dXJneQ== YWJ5cmludGg= IFNoYXBlcw== IHZhZ3k= LmRkcw== bWVtY21w CUl0 c2VtZXN0ZXI= IEVtaXQ= IGluc2Fu IGJydXNoZWQ= X0ZBVEFM ImVycm9ycw== IGRpc3J1cHRpdmU= JW4= IGNvbXBvc2l0aW9ucw== IGJhY2hlY2E= IGRpc2FncmVlbWVudA== UHJvdGVjdA== TElLRQ== LkZpbGVOb3RGb3VuZEV4Y2VwdGlvbg== IHdlaXRlcmU= IE1vbmFjbw== Xzw/ IG1vZGVsZWQ= c3RlZWw= ZWVudGg= IFtdKS4= KHJlZ2V4 ZW5pZQ== LkZsdXNo LnBvcHVw IE92ZXJz LkRlYnVnZ2Vy PmA7Cg== bml0ZQ== LnF1b3Rl IGNvZw== IHdha2Vz IFdyZXN0bGluZw== SW50cm8= IHNlcmRl IHJldXNhYmxl IENvbXBvdW5k SW1wbE9wdGlvbnM= CUl0ZW0= IG51bU9m IENIUg== IEJvbHRvbg== UExVUw== Ym91bmRpbmc= KCsr ICIsIjsK IEd1ZXN0cw== IGRlcHJpdmVk IG1lbG9keQ== WklQ Pj4oKQ== IGNvbmNlZGVk X2RpZQ== IGpveXN0aWNr IGFuYXRvbXk= IFRvb2xTdHJpcA== IEVub3VnaA== Iio= aW50b3No aGFiaQ== IFN5cmFjdXNl IEluY3JlYXNlZA== TXVz LnBhdGllbnQ= IGluY3JlbWVudHM= IFBJWA== IGJvb3R5 LnByaXZhdGU= ZXJ0b2lyZQ== IGN1dHRlcg== IGJla2Fu IGRyYXdlcnM= X0FMSUFT QW5pbWF0aW5n X2Fuc3dlcnM= LmF0dGFjaw== d3JpdGVycw== IGdhYW4= aWtvbg== CWNvbnRyb2xsZXI= IGZhY2FkZQ== k+WQjQ== LHN0YXR1cw== LmZl IHBvc3Rwb25lZA== IEZvbnRz IEJlbmNobWFyaw== aWRlbnRhbA== IGNoaWxsaW5n IEtpZXY= IGJydXNoZXM= LXdoZWVs IEhpcmU= KHByb2M= IGNoZW1vdGhlcmFweQ== INCx0YvRgtGM IE5vbGFu KGllcnI= IEp1ZGU= LUF1Zw== dW1ub3M= Y29udmVyc2F0aW9u IEJlaGF2aW9yU3ViamVjdA== YmF1Z2g= IGd1aXRhcmlzdA== Lm9mZmVy IGFjY3VzZQ== cGFyZA== cmVmZg== LlJlYWN0 IHVjaGFy IG9mZnNldG9m JHN0YXR1cw== L2VtYWls LmNvbm5lY3RlZA== Lys= QHFx YXJhdmVs IGZ2 LlBlcnNpc3RlbnQ= ZW5zdGVpbg== Li4uXQoK LmdyaWRWaWV3 IEpPQg== LScuJA== LmxheW91dENvbnRyb2w= IGNhcmc= IEtvdA== X2VxdWFscw== IHdpdGhkcmV3 QVRFU1Q= LWJ1dHRvbnM= CVVQUk9QRVJUWQ== IFVJR3JhcGhpY3M= IFB1YmxpY2F0aW9ucw== IElOVEVSTg== IGV0aGFub2w= w6RuZ2Vy U0VORA== CXNsb3Q= 0LvQtdC90LjRjw== IHBhc28= X2V4dGVuZGVk b3J0aGFuZA== KHNoZWV0 IHByb2NlZHVyYWw= IGtpZG5hcHBpbmc= Ly8tLS0tLS0tLS0tLS0tLS0t W21zZw== T2NjdXJyZWQ= QWxpY2U= IENBU1Q= IGthdGE= 5rOo5YaM Y2hlYXA= aWNpdHk= IHJlYWRpbmVzcw== KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= IFNZTg== IE1hZ2dpZQ== cmljYQ== IHlp IFR3ZQ== aWdub24= YW5kZW4= IGpxdWVyeQ== IHN0YXJ0WQ== IGF2ZW51ZQ== QW50aA== X2NhcHRpb24= IFJvd3M= wq/Cr8Kvwq8= c2VxdWVuY2Vz 0LjRhA== KCIvIikK Y3JhdGU= IFNhZ2E= SnVk IGZhY2V0cw== X3NjYWxlZA== UnVieQ== IFBR IGNydXM= SXJhbg== LnNxdWVlemU= CWZk IHBlcmNl IGRhdGFw Xl5eXg== X1NDT1BF IFNhbG1vbg== IHRhaWxsZQ== IFZhbG9y QUdFTUVOVA== UnA= IEd1YXJkaWFucw== IHJlYWRGaWxl IG5lZ3Jv IG9icmE= LlBhcmNlbA== Q0FDSEU= cmV0Y2hlZA== Y3Jt cXJzdA== b3VmbA== 7ZqM Lm5vbQ== c3NpZA== IHNhZmVzdA== LkVycm9ycw== X3BuZw== Q29udmVydGVyRmFjdG9yeQ== PFNlbGY= IHNlcGFyYXRlcw== X2pCdXR0b24= IG1pc3VzZQ== ZXhjZXB0aW9ucw== IFt7Ig== IFBBRA== 562+ a0h6 PWVu IGjDoG5n SFo= IFhhdmllcg== e2lk IHN0YWlyY2FzZQ== dGV4dGZpZWxk L2RvY2tlcg== KHRhYmxlTmFtZQ== IHRlbGVjb21tdW5pY2F0aW9ucw== b25zbw== b2Ns UGFyZW50cw== L3BhcnNlcg== LWRyb3A= KHN0eWxlcw== X21vZGlmaWVy UmVxdWVzdElk LmJyYW5k IENvaW5z IGt1bnQ= Lkdy IEhJU1RPUlk= KGRyb3A= QnJhZA== IHNla3Np X3Nkaw== IGluc3BlY3RlZA== cHJlZGljYXRl LmZp R09S IGNvY29h IElRdWVyeWFibGU= LS0tPC8= IGRlcm5pZXI= IFVzZXJEZWZhdWx0cw== X1RT IGVvcw== IGJsZW5kZXI= IGxvdWRlcg== U3BhbmlzaA== bGluZXI= XHdpZGdldHM= IHNjaGVtYXM= X0NBUFRVUkU= Lm1pY3Jv 44Kt IPCfkQ== IGFuZGVy YWx0dW5n ID09Jw== IGVuZm9yY2luZw== IEV4aXN0 dXZ3 aXJ0c2NoYWZ0 IEdyZWF0ZXN0 IE1vc3Vs X3Bv IHNpbW1lcg== IHByb2dyZXNzZWQ= IHJvdGFyeQ== IG50bw== Tm9pc2U= IGNoYXNlZA== IGluc3RpbmN0cw== UHVibGljS2V5 IHNuYXBzaG90cw== IFN1cGVydg== Lm1hYw== IEJpYmxp Li4uKQoK CW9sZA== S0VO IENsaW0= IFByb2dyZXNzRGlhbG9n bGljYW50cw== X3NsaWRl K2g= IGVtcG93ZXJlZA== SW5qZWN0b3I= IGluZmx1ZW56YQ== IHBsYW5ldGFyeQ== V2lsbGlhbXM= IG1vbmQ= ZW5hbg== LnJhbmRvbVVVSUQ= KFBvc2l0aW9u IGhvbWJyZXM= IGluc2VjdXJl IHZlcmJz X3JlY3RhbmdsZQ== SU5TVEFMTA== IFBhcnNlRXhjZXB0aW9u X1RB JGZpZWxk LkltYWdlSWNvbg== IEd1amFyYXQ= LWxpdmVk X3NvbWU= IGNsaXBwaW5n LmdldENvbXBvbmVudA== LmNsb3Nlc3Q= LmxpdmU= IGluY2lk DQoJCQ0K IHByb2R1dG9z X211c2lj U3FsQ29ubmVjdGlvbg== IFByZWRpY3Rpb24= IFhU LW5vdGVz IEpld2Vscnk= cmVtZW4= KHJlYXNvbg== U25hcA== QWZmaW5lVHJhbnNmb3Jt YW5nZWxvZw== IGRpY3RhdGU= IHpvc3Rh QmFyQ29udHJvbGxlcg== L3Nob3A= ZWlk LXN3 Q291cnNlcw== Zm9udFdlaWdodA== IEhvZmZtYW4= X051bQ== S1I= IFdpbGxpZQ== YXJrYW4= LXNjYWw= IGF1ZGl0aW9u LmRpc2M= IHR3aXN0cw== IGRlcGljdHM= IGJhbnlhaw== IEtpdHM= IEhlemJvbGxhaA== bm9ydGg= IEdSRQ== w7Zn cXVvaQ== LXRocmVhdGVuaW5n IHdvcm1z IFBO IHNleGRhdGU= IG1vbnVtZW50cw== TU1D Ym90cw== IFNETEs= ZGVhdGg= IHBpdHM= X2Nob2ljZXM= KHNvbHV0aW9u IHByb2NsYWltZWQ= IFFpbmc= IHNzY2FuZg== c3RyYXRlZ3k= ZGVhdXg= IEZpc2NoZXI= X0lW IGlud2FyZA== RGF0ZVBpY2tlcg== IHNld2Vy IGV1cm9w IGhvbWVsZXNzbmVzcw== LlNwcmluZ0Jvb3RBcHBsaWNhdGlvbg== IFNwYWNlWA== IGluZm9ybWluZw== ICch IHBsYXN0ZXI= SW5pdGlhbGl6YXRpb24= LmJldGE= IFBlcnNvbnM= dWdnbGluZw== IHNoYW1wb28= IEplaA== IHNlcnI= IG1heFNpemU= IHN0aXRjaGVz W3BhdGg= LnJldA== IFByZXQ= TmVpbA== Q29udmVydGVk IE1hemRh UE9TSVQ= VG9vbGtpdA== IFJFQURNRQ== Q3VzdG9tQXR0cmlidXRlcw== YXJjaGl2bw== LlBhaW50 Z2V0T2JqZWN0 SVE= LldlYkRyaXZlcg== IGFudGlib2R5 IExpbWE= aW5jb3JyZWN0 RnJhY3Rpb24= IERlYWRsaW5l c2VuZE1lc3NhZ2U= Lk9mZnNldA== ZWRpbw== INeQ IHNtb290aGluZw== LmJv IENFTlQ= ZWxhc3RpYw== LmNoYXJDb2RlQXQ= UmVmcmVzaExheW91dA== QUdFRA== KTtcCg== IFtdKQoK IHRhcHM= RFY= 4oCV IENveQ== IG91dHdlaWdo J2dj XEV4Y2VwdGlvbnM= IEdyYW1tYXI= IEd1YXRlbWFsYQ== IEd1cnU= IHRlag== IGZyaWVuZHNoaXBz IGNvcGluZw== KHVwZGF0ZWQ= X2R4 QW5hbA== LU1heQ== IG1hdGNobWFraW5n IGp1bnRv UEFDS0FHRQ== IHJlbnRz IOiHqg== Y2FrZXM= 44CCJywK cmVuZGluZw== X0ZyYW1ld29yaw== LSk= KHVwbG9hZA== IG9wb3J0dW4= IGNhdXNh IHByb2xpZmlj Um93Q291bnQ= IG5hY2t0ZQ== IFNveQ== U2h1dGRvd24= 6Ig= X0VYUEk= IEhhcmJvdXI= IHRvcmU= XE1lc3NhZ2U= L1U= T01CUkU= LnNlZ21lbnQ= IGNvbWVk cm9tYW4= IHNlZ8O6bg== U2lnbWE= IHNraWluZw== IFRlcnJhaW4= IGJlbmNobWFya3M= IEF0dGVudGlvbg== IH0qLwoK IGdlaWw= IGNhcnRvb25z IGF0dHJpYnV0aW9u IHJvdG9y ZW5oYQ== IM6z IHRyYWo= IGPDtG5n IHNoYWtlcw== IENsZW1zb24= IGJydXRhbGl0eQ== IDsNCg0K IGVpZ2h0ZWVu IEF3YXJlbmVzcw== KHJlc3Q= IHZpb2xpbg== X1JPVVRF LkZpZWxkTmFtZQ== IEFkZQ== aXppYQ== IEhlbG0= IHR5aW5n IFByb2dyZXNzQmFy YXV0b3I= IGxvbmRvbg== Jnc= Z29v SVNUUlk= L0NyZWF0ZQ== IFVTSU5H IEdY IEVGRkVDVA== RmNu IEVuY3J5cHRpb24= Q0VE ZmluZQ== LWFycmF5 IHB1c2hWaWV3Q29udHJvbGxlcg== QCQ= VXBsb2FkZWQ= LXdyaXRl LmdldFBhZ2U= X2VzdGFkbw== QU5UTFI= IFZpZXdEYXRh ICR7KA== IGFsbW9uZA== IExvZ2ljYWw= IHNob290ZXJz IOygnA== IHB1ZmY= IHVuY29tbWVudA== IGN1c3RvbWl6YWJsZQ== xINy RGlyZWN0aXZl CWlkeA== Q2hhbGxlbmdl IHN1bW1hcml6ZQ== IEF2Zw== LlVzZXJJRA== LmRpc3BhdGNoRXZlbnQ= IGNvb2tlcg== IGNvbm5lY3Rpb25TdHJpbmc= IHNocmlua2luZw== amFk IFRoZW1lcw== YW5kYXRvcnk= IGR1YmlvdXM= IGNlcA== c3Bpbm5lcg== IHN1YnJlZGRpdA== IGlpaQ== L2NhY2hl ZGVmZXI= IHN1YnN0aXR1dGVk IGd1bm1hbg== Y2xpbmc= IOyw KGN0cmw= T3JkZXJJZA== X2VuZw== IGZpbG1tYWtlcnM= IGZvcndhcmRpbmc= IHN0cmFuZGVk IExlYW4= IOunjA== KFVuaXQ= IGRpZFNldA== bGFrZQ== Z3JvdW5kcw== 5Zug IHVucmVnaXN0ZXI= IG1pbmhh IFZlZ2Fu CWlWYXI= LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= b3R0bGU= SVBD IHByYWdtYQ== IElJRA== X01pbg== JTsiPgo= X3JhbQ== ZHJpdmVycw== IENoaWNr IGNscg== X0JVRkY= INCy0YvQsQ== TWVyYw== anV2ZW4= IHNoaW0= 0YvRhQ== IHRoZW9yZXRpY2FsbHk= L2ZvcnVt IHNwaWRlcnM= IGdvb3Nl IFBob3Rvbg== IHByb2ZpY2llbmN5 IENsZXJr X2ZpZw== Q29uY2Vybg== KGNvc3Q= IHJlZGQ= LmVudmlyb25tZW50 Q3JvcA== IOKJpQ== eWVjdG9z LkJhdGNoTm9ybQ== LWNvbXA= JGltYWdl IE5pa29u IGRtZw== Wzo6LQ== UExM dW5jaW9z Zm9jdXNlZA== IHR1bw== IGh2b3JkYW4= IGF0dGFpbmVk IHByb3RlY3Rvcg== IEthbnQ= IHNob3Jlcw== IEV0aGFu X3NjaG9vbA== IG5lYXRseQ== LlNoYXBlcw== IE5lbQ== aGNw LicvJy4k IE3DqXhpY28= c3RydWN0dXJpbmc= IGxha2g= IGFkcmVzc2U= JywnIw== IEhhc2tlbGw= X0VOR0lORQ== IHJlcGVudA== IGN1Y2s= LkZJRUxE IFNrZQ== QEBAQA== SGl0cw== IGltcGxhbnRz IENvbnN0aXR1dGlvbmFs IFBIUFVuaXQ= IHRvaWxldHM= LmFsYnVt 5LiL6L29 CXNldFN0YXRl KCItLS0tLS0tLS0tLS0tLS0t LkFtb3VudA== ZWN0dXJl IFRob3VzYW5kcw== TmVpdGhlcg== IHByZXNldHM= IEFzc3VtZQ== KGZhY3Rvcnk= IGxpY2s= IGdvYWxrZWVwZXI= PFN0YXRl LXNlY3VyaXR5 X2ll ZXNrdG9w IEx2 IFN5bXBob255 LnNhbXBsZXM= IGh5cGVydGVuc2lvbg== xYJ1 Lmp1c3Q= TWVuc2FqZQ== IT0t PFRLZXk= IHNweWluZw== LGRhdGU= b3JnYW5pemVk ICAgICAgICAgIA0K KGN1ZGE= X01ldGFkYXRh dWJpc2hp LUJlbno= X0Fzcw== IEVsc2VJZg== IGxlc2lvbnM= IFByZXN0b24= VGVjaG5pY2Fs IHBsYXRpbnVt L3Bp SW5kZXhlcw== IHBhcmFwaA== IG92ZXJ0aHJvdw== aXBhdGVk b250b2xvZ3k= IGRlbW9ncmFwaGljcw== IGNhbmU= IHByb2ZpdGFiaWxpdHk= IGVzdGFibGlzaG1lbnRz XSY= OmFic29sdXRl ZW50cmFkYQ== VHA= IHNoYXJlaG9sZGVy Lidf 5aaC5p6c bnBq dnJpcg== IEVYRUM= IFBvbGljaWVz IGZlbGxvd3NoaXA= IENHUmVjdEdldA== X3JlY2lwZQ== X1JFQw== dW51 IHJvYmJlZA== IHR1cm1vaWw= KTo6 LnN0YXJ0RGF0ZQ== IGV2YWN1YXRlZA== LWVxdQ== IGZvdXJ0ZWVu QFNwcmluZ0Jvb3RBcHBsaWNhdGlvbg== IOaVsOaNrg== bmFudHM= dGhyZW4= U29ueQ== REZT LWNpZ2FyZXQ= IGFnZ3JhdmF0ZWQ= IG5lZGVybGFuZA== IEZ1ag== dWNlcw== L3VzZQ== dW1tZXI= KFNURA== 6rCE Kj4m LnBlcmNlbnQ= aWFudHM= IEN0 VkFT X1RIRU1F IHNuaXBlcg== X0VM LXdvcmtlcnM= U25vdw== IEF1cmE= aWVnbw== IEdsb2I= TmFtZWRRdWVyeQ== X0JH IExpdmVEYXRh IFNlbmRNZXNzYWdl IHJlc3BvbmRzVG9TZWxlY3Rvcg== ZW5jZXJz aW5zdHJ1Y3Rpb25z KEl0 5ZG95ZGo5pyf IEdvbWV6 Y2hhcmdlcw== LkdlbmVyYXRlZFZhbHVl IE1hY3Jvbg== KFBPUlQ= IFByb2Nlc3Nlcw== Lm9uUmVzdW1l IGZpZQ== QnVpbGRlcnM= KWdldA== X3dhbGxldA== IGNhbmM= IE1vYmlsaXR5 IGFsYXJtcw== cm9zaXM= YW1hw7Fv IHBpcw== IOODuw== U2hh IGNvbmZlc3NlZA== KElORk8= KCcsJw== X1NlcnZlcg== IGJsYXN0ZWQ= IEZhcm1lcnM= cnV6 Y2tlZGl0b3I= X0lNUExFTUVOVA== IG1vdHRv IENBUkU= IHlkaw== Qm9uZQ== IGFkZW3DoXM= KyIvIis= UHJvcFR5cGVz X1Na LnBhaW50 LnBpeGVs IE1lc3NhZ2VUeXBl IHR3ZWFrcw== YC4KCg== VmVyaWZpY2F0aW9u bmVjaw== YmVycmE= IG1pbmRmdWw= U3Vydg== IDotCg== IGFueXdheXM= IEFkbWlzc2lvbg== YWNjZXNzaWJsZQ== RmxhdEJ1dHRvbg== ICInIik7Cg== IGhhaGE= VG9Qb2ludA== IGJ1cmdlcnM= Z2V0U3RhdGU= XEhlbHBlcg== IEZVTkNU IEVMRU1FTlQ= IENFUlQ= IEFDQ09VTlQ= Y2hhcmdpbmc= X2NhbmRpZGF0ZQ== X3JlY2VudA== IEluc3RydWN0b3I= IGRydW5rZW4= WVNRTA== b3JhdGl2ZQ== IjoiIg== IHRhZ05hbWU= X05FRw== IHFw IFVuZGVmaW5lZA== IGdyZWFzZQ== CSAgCQ== IGVhZ2VybHk= VGV4UGFyYW1ldGVyaQ== ZGlzdHJpYnV0ZWQ= QWRtaW5pc3RyYXRvcg== RGlzdHJpYnV0aW9u IERlY29tcA== IFRyYW5zZm9ybWVy LmJ0blNhdmU= IEdvcw== KEVudW0= Y2Fpcm8= LWNp L3JlcG9ydA== IFBvc3Rlcg== X2RlcGVuZGVuY3k= IGV4cGxvaXRz c2V0Rmxhc2g= IHh0 IGpld2VsbGVyeQ== IGRhaQ== X1JBTQ== IGJlcnJpZXM= IGdyYW5ueQ== RmF0YWw= w6lhbA== LW1vc3Q= LlZpc3VhbEJhc2lj IFBlbmQ= YmVp amFr OyovCg== Qm95 PlNlbGVjdA== aW5kcmljYWw= VGVjaG5vbG9neQ== IEFsbGlzb24= ZGF0YXR5cGU= J2Nsb2Nr IGtvc3Q= IGJham8= LkNvdW50cnk= WmVuZA== LndyYXBwZXI= 4L0= IEZpbGlwaW5v b2NyZQ== U1NI IFNBTVBMRQ== X2luaXRpYWxpemVk KTs/Pgo= IHBvcm5vc3Q= ZXNhbg== IEN1dHRpbmc= IG1peGVz X2FnYWlu IGZvcm11bGFyaW8= W1Y= IHRlbGVmb25v L3Vz IGxvYWREYXRh LnJlZmVyZW5jZXM= IG1hcFZpZXc= KyJf IFNRTGl0ZURhdGFiYXNl aXRvbg== Q29sdW1uVHlwZQ== IEV2ZXJ0b24= LlJlc3VsdHM= L25vdA== IGdldEZpbGU= aGVyaXRhbmNl IGdldEhlaWdodA== JHVzZXJuYW1l d2l0aGRyYXc= Xyk7DQo= LnV0 IFFBcHBsaWNhdGlvbg== dXJuYWw= LWRvd25sb2Fk YnVyZ2Vy cHJlY2k= IFRoYW5rZnVsbHk= LkVWRU5U IGdyZWF0bmVzcw== IGxvb3NlbHk= IG1hc2g= IGdlaGVu X2FudA== IGltcGVuZGluZw== LmlzUHJlc2VudA== IHN0YWlucw== SU1T LmJhY2tlbmRz IGlycmlnYXRpb24= IFRhdA== L3Rlc3Rz IEtpbmdzdG9u LnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRz IHZvbWl0aW5n LXJlcXVpcmVk IGJsYXpl IFN0YWZmb3Jk UklE L2Z3bGluaw== IGthbGU= c29sZA== KHByb2dyZXNz KGNoYXJ0 IGN5c3Q= IGRpbGlnZW5jZQ== L21w IGNsZXJneQ== IEJyb3dzZXJSb3V0ZXI= IEFQSw== IENPTlRBQ1Q= QmFySXRlbQ== LURpc3Bvc2l0aW9u IE1vdG9yb2xh X3NhbA== IFdvb2Rlbg== IFRIRVk= IGNvbW1lbnRhdG9ycw== IGNvbW1lcmNpYWxz PW1vZGVs LiIpLAo= IFBsdWdpbnM= ZGFpbg== aGVhZGVk IENvb3JkaW5hdGVz SmFuZQ== IFByZWZlcnJlZA== IHBvZGVtb3M= LmlzQmxhbms= IFN0YXA= IHdzcA== IENPTEw= X2JpZA== IHByb2Jlcw== dWFuaWE= KHN5bQ== IGN1ZXJwbw== IG1hbmlwdWxhdGluZw== IGFtYXppbmdseQ== LkRBWQ== dW1wdGVjaA== YWNvYmlhbg== VGVybWluYXRl IHN0YXRpb25lZA== U2V0QnJhbmNo U2NyZWVuc2hvdA== ZXN0aGVzaWE= IHdhbGtlcg== I2Zyb20= Y29vcmRpbmF0ZQ== X2ludGVyZXN0 IGhlbHBsZXNz CXB1Yg== bmdh X0V4 IG53 IHRleHR1YWw= IHBsdWdz IG1pbmlvbg== bWFyZXM= PD4K QUNB Q29tcGFueU5hbWU= KGVj IExhbmRzY2FwZQ== X1BST1ZJREVS Y3c= lIQ= QWNjb3VudElk JDo= IFBlcnNvbmFsbHk= cHJvcGVydHlOYW1l IEt1Yg== J2k= IEdpdWw= IHByaW9yaXRpemU= Rk9STUFOQ0U= IFBhcmFkZQ== KVwK c3RkYm9vbA== IGFsZXJ0RGlhbG9n IExlaA== LmNhdGFsb2c= IHdlYmluYXI= IGltcG9ydGVy cHJvamVjdElk VFlQTw== X18NCg== R1c= c3VtbWVy IHNpbmlzdGVy LmZhaWxlZA== IGJlc29pbg== aXNtYW4= REVTVA== IG5o4bqtcA== IG1vxbxuYQ== X2luc3Ry IHBhdmVk IHByZWZpeGVz IHJhbXBhbnQ= IHlBeGlz IOazqA== X21pZGRsZQ== IHNjaG9sYXJseQ== IHByb3N0aXR1dGVz IG1vcmFsZQ== LnBlcm1pc3Npb25z LmdldExpc3Q= IHJlamVjdGluZw== IGxvb3Bpbmc= IFNwZWNpZmljYXRpb25z IGltbWVuc2VseQ== IE1lZGlhbg== KGNoYWlu IGNsaWNo L2ZsdXR0ZXI= YWNm LnVybG9wZW4= dXR0ZXJzdG9jaw== IHNwZWN0cmE= IGFkbWly L21heA== LkVtaXQ= KHdlaWdodHM= acSZ SW5zdGFsbGluZw== SnU= IEZlbGw= IEZSRQ== LmRlbg== IEJpZ0ludA== Ij5A ICopOwoK IEJpb2xvZ2ljYWw= IHBhdGVudGVk LnBhZ2luYXRpb24= LnJvbGw= IER1bA== IGRlc2Fycm9sbG8= UmVnYXJkbGVzcw== mOydtA== IHJvYmU= 0J3QtQ== IEJveWQ= LyoqKioqKioqKioqKioqKioqKioqKioqKg== cmVjZWlwdA== IEFzc2lnbmVk YXR0ZW5kYW5jZQ== LWNob2ljZQ== ZXRzeQ== X2Vsc2U= LG5leHQ= X2V4aXN0aW5n ICcnKSwK IGxpYmVydGlu dHJhaXRz YXR0ZQ== Q29tcGFyYWJsZQ== IENvdg== IEFkb2xlcw== LHRoZQ== IExvYWRlZA== fHI= PWluZGV4 IEdhc3Q= IGluamVjdG9y CXN0b3A= LWdvb2dsZQ== IGZldGFs IGFsbG8= eWxlZnQ= Z2V0UGFyYW1ldGVy 4oCd4oCU X3NlY3Rvcg== LlV0aWxpdHk= b3Njb3Bl LmVhc2U= IE1hZ25ldGlj QXJyYXlPZg== IGZlYXJmdWw= IEluZmVy IEZ1aw== Sm9obnNvbg== JGFycmF5 IHNhaXM= X2NvbnRy RGVzY3Jp IERldGFpbGVk X2xlYXZl X1JPVA== IG7DpGNo IGthbWk= RENBTEw= OmVx IG1vbms= X29ianM= KFNlcnZpY2U= ZmluYW5jZQ== IHBvZGVt X3Jlc3RvcmU= IGRlY29yYXRvcnM= IGFkdmlzaW5n INC/0LDRgA== LnBlcm0= IEhhaQ== IGZr dW50ZWVycw== IFJUV0Y= X2l4 QUNT IGJyZWFrb3V0 ZGlyZWNjaW9u IFN1bnNldA== X2Z4 b2xrYXRh LXJhZGlv SGV0 LnV0aWxpdGllcw== X2Jhc2lz KGtpbmQ= IENvbmM= VGh1bWI= IE1pY2hl ZGVsaXZy IGd1dGU= IEZpbGVQYXRo IFRyaWJl XCIp X2N1ZGE= RGlmZmVyZW5jZQ== IE1vbnN0ZXJz IHNldFR5cGU= LkNvbnRlbnRUeXBl IGR1bQ== RW52ZWxvcGU= YWd0 IHVubG9hZA== X2NoZWNrZXI= IHJlc3Rv X3Blb3BsZQ== UHJpY2Vz UHJvZmlsZXM= KClc RlVO ICIjIg== IFBhdHRlcm5z IFNQRA== X1JPV1M= T3JpZw== YmxhZGU= IGzDqQ== JWk= Kysr TGlmZWN5Y2xl LS0tLS0tLS0tLS0tLS0tCg== VGFy VGhhbk9y JnE= IGNyaXRpY2lzbXM= LXBo RWxlbWVudEV4Y2VwdGlvbg== X2d1ZXN0 IOu2 X0Fz IENhcnJ5 X0JJRw== YWtldXA= X3JldHJ5 IG7DqWNlc3M= IE1JU1M= aXN1 IFNwaXJpdHVhbA== XyRf IHJlZmxlY3Rpb25z PHQ= IGZ1bsOnw6Nv IG1vbmFyY2g= IFBhdGVs X3ZvbHRhZ2U= IHJhaW55 Y291cnQ= IHVsdHJhc291bmQ= aU9T X0FMV0FZUw== V28= X0JMRU5E b2tzZW4= IHRyYXZlbGVy IGRhdGFUYWJsZQ== c2V0Q3VycmVudA== V29ya2Zsb3c= LnllbGxvdw== XSkt QUJTUEFUSA== X2l0ZXJhdGlvbg== 0LTRgA== IHViaWM= IG1lYXRz L2Vt IERpc29yZGVy IGVudmlhcg== U0VP IGhlYXZlbnM= X3N0dWI= IGFkcmVzcw== IFRyaWU= IExpbmRzYXk= bGVp IHBsYXRh LnNldHRpbmc= IGVsZWs= ICgkew== QXV0b21hdGlj IGRvd25zdGFpcnM= UElY aWNpb25hbA== YWJhbA== LXN0b3JhZ2U= aWNoaWVy IEFscGhhYmV0 LGxhYmVs QAo= IGludGVzdGluYWw= IHZhcmE= Lm1h IHByb2du IG5lcGhldw== VGltaW5n Y2xhc3NuYW1l IGxvY29t IFNhbWFudGhh IEFjY29yZGluZ2x5 IFhDVGVzdENhc2U= IFBsYWlucw== IExlbmlu bm9w IFR5c29u IHJlbmFs b2luZQ== KFRlc3RDYXNl IExvbWI= QmFuZw== IHZvbHVt X2dlbmRlcg== IGx1dA== IO+8 Q29uZmlndXJlcg== IHN0cm9rZVdpZHRo Lkh0dHBTZXJ2bGV0 fHg= LkpTY3JvbGxQYW5l IGNvbnNvcnQ= LmJ1bXB0ZWNo dHJpZGdlcw== IGJlbmVmaWNpYXJ5 PXJlcXVpcmU= cmVuYw== IE9V ZW50YXJpbw== IHVyZ2Vz 4oCUbm90 Q2FtcGFpZ24= ZHJl IFJpdmVyc2lkZQ== CXRi IG91dHB1dEZpbGU= IGFic3Q= IHN0cnVjdHM= IHJ2YWw= XCI+Ig== IGFjcXVpc2l0aW9ucw== QkxBQ0s= IHRydW5j IGFubm90YXRlZA== c2V0VXA= VE9LRU4= IENvY2E= RGlzYXBwZWFy OnZhbHVl IGFpZGVk dHRs bHV4 IGFjdWVyZG8= IEZpbmdlcg== Lkdlb21ldHJ5 XScpOwo= Lmdm VFhU IFNjb3RpYQ== YXZyYQ== IHZpcA== IHdob3BwaW5n LWdpcmw= IGN1cnNlZA== XVst IGNpcmN1bGF0ZWQ= dW5jdHVyZQ== b3JtYW4= IG1BZGFwdGVy IOKAlAoK RmlsZU1hbmFnZXI= KGlQYXJhbQ== SW1hZ2VCdXR0b24= REFR QXJtb3I= IHNwYXQ= LmpzZGVsaXZy IG1pc29n LmVjb3Jl J119Cg== aW1wb3J0cw== IGRpbm9zYXVy LUZyZWU= IGFubm9u IHRyaWJ1bmFs WWE= Lmd1aWQ= bW9zdGx5 PT09PQo= IGltYWdlbQ== U3VpdA== a2Fz IENoYW5uZWxz QnVkZ2V0 IERpdmlkZQ== amVt IEdyaQ== IGluZGljYXRpdmU= XEZhY3Rvcnk= LnJlcG9zaXRvcmllcw== IEFNUA== LnNucA== IGHDpw== Ims= IMK1 ZGVjb2RlZA== X2FyYw== LUNsYXVzZQ== IEFkag== IG5ld0FycmF5 KEdFVA== IGxhdGlu IHd6 OnVpbnQ= 5Yir Ii4u Q29ubmVjdGluZw== ZW5ub24= 5bm2 IFNlcw== IGJlbG9uZ2luZ3M= Kycm CXNldHRpbmdz SU5W IHDDqQ== IGFkdWx0aG9vZA== YW1ibGU= X21hc2tz LXJlc29sdXRpb24= cmF0cw== IO2BtA== IHZvZw== IFNobw== IENvdmVuYW50 IHJlbWluZGluZw== b3JuYWRv aWFk 5byC Q3JlYXRpdmU= IFNUWUxF IGFub21hbHk= XEFwcGxpY2F0aW9u IG1hbmlmZXN0YXRpb24= IE5hbm8= TWFwVmlldw== aWRlYWw= YWNoaW5lcnk= IFZhdWdo cHJpbnRlcg== VmVyZGFuYQ== L2NvbXBvbmVudA== IGFkZENoaWxk IGxlYXJuZXI= IGRlY3J5cHRlZA== IHRpZ2h0ZXI= 5p2f IGplag== IC4KCgoK IExvYmJ5 bGVw w6Rubg== bGVpZ2g= L3JvdXRlcw== IGNhbm9weQ== IEZpc2NhbA== Ojsi IGJ1cmRlbnM= L2Z1bGw= IENTUg== LlNoYXJlZFByZWZlcmVuY2Vz L3RyZWU= IGRyb2l0 SW1wbGVtZW50 R2V0Q3VycmVudA== KHB1c2g= JHg= 0Y/Qtw== QUNJVFk= PT09PT09PT09PQo= amM= X2hyZWY= LmdldFJvb3Q= IEtE KGxz W2NudA== IGRhbGw= KGJw IEVX S2V5RXZlbnQ= bG9iZQ== IGh0bWxlbnRpdGllcw== IGZhbHRh IHZhbHZlcw== IHNpemluZw== UG9ybg== IHNob3dFcnJvcg== IEZyaWQ= IMOH LnJhbmRu IHRhbnRy IHNheA== dXJvdmlzaW9u dGhlb24= X1JDQw== eEZE SW5pdFN0cnVjdA== IGNhbm5lZA== IHF1YW50aWRhZGU= LldBUk5JTkc= IEJyaXR0 LXJlZ2lzdGVy YWN0aXZlbHk= IE5hdGFsaWU= 44G/ IENPTk5FQ1Q= emVr IG1pbGxvbmVz XWludA== ICcsJyw= IHByaW4= IjpbLQ== IC8vLg== IGludGltaWRhdGluZw== cmF6aW9uZQ== LmlibQ== IEpha2FydGE= 0LzQtdGA IGxvYWRDaGlsZHJlbg== X1VQTE9BRA== IFdlZWtz IGdldFRleHQ= IPCfkg== IF1dCg== IENvc3Rz xJlw cGF5bWVudHM= Lk1vdmll bGg= tIg= X2NlcnRpZmljYXRl PXE= bGlicmFyaWVz IEFlcg== YXVzcw== CWZhaWw= T1VORFM= c2VuZEtleXM= IHNjYW1z d2FydHM= SGlzdA== IEVzc2V4 IGZ1cnk= IHRpdHJl IENvcGVuaGFnZW4= IHByZWRlZmluZWQ= c2Nw c2VycmF0 LmVuc3VyZQ== aWxlZQ== TWVyaXQ= X1VOTE9DSw== IENvcnJlY3Rpb24= Tm9ybWFsaXphdGlvbg== IOS/ruaUuQ== IHN0b29s IOWIoOmZpA== U2hvcnRjdXQ= Y2hvc2Vu IGJ1bGx5 IGZ1bmNpw7Nu 44O844Or IOeUn+WRveWRqOacnw== LmFsaWFz PlRvdGFs IFNURU0= cGVuZw== Y2FsZXI= cGVyZmVjdA== IGJvbmRpbmc= UGhvbmVz IHB1bHA= 67aA SUVXUw== IERlZXI= X0xDRA== IENvbmNvcmQ= V2l6YXJk IG9mcmVj IEVtZXJhbGQ= dGVuZXNz bmF2aWdhdG9y VGhlb3J5 IGd1YXJkYXI= IGZ1bGZpbA== IFVuYXV0aG9yaXplZA== IEJvdXQ= CWhvc3Q= IFJpYg== KGZ0 RG9jcw== LmdldEJvZHk= 5b+D IFJpdmVyYQ== IHdhdmluZw== IHBlcmZpbA== Qm91bmRpbmdDbGllbnRSZWN0 LmZh cGFnZWQ= IEFmZmlsaWF0ZQ== IHByb2xldA== fS0+ew== KHNjb3Jlcw== IHZpdGFl e05hbWU= c2NoZWR1bGVy X1NBTg== IE5lYw== IEJlZWY= X3Rj TElO IEV2ZW50VHlwZQ== IEJ1ZmZlcmVkV3JpdGVy IHNvZnRlcg== IFZvdGluZw== IEdlc3R1cmVEZXRlY3Rvcg== IHVuc2Vlbg== IFNDTw== IGVsbw== Y29tYmluZQ== X21ha2VDb25zdHJhaW50cw== IHVuZGVyZ29uZQ== IE9mZmljaWFscw== LG9wdA== IGxheWVyZWQ= ScOTTg== IGJhbmtlcnM= IHNlZ3JlZ2F0aW9u IHJ1c3NpYW4= IHZlbnRhbmE= Z2V0S2V5 U2FudGE= LlRvb2xTdHJpcFNlcGFyYXRvcg== IEFlcm9z LnB1dEludA== IGluZm9ybXM= X2JpbGw= 66aE LnNldE1heA== IH0+Cg== IElQUw== IEFsaWM= In0KCg== IHVzaGVy IE5ndXllbg== IGFic29sdXQ= IGd1YXJkZWQ= IFJlYmVs IFp3 IEFubnVuY2k= IHByw6E= YWJjZGVmZ2hpamts IFZlcmlmaWVk W2l4 IHRpZXJz w6J0 LiIpDQo= aWp1 bGl2aW5n R1BT LlRlc3RUb29scw== U2l6ZVBvbGljeQ== IG1hc3NhZ2Vz YXNzZXJ0SW5zdGFuY2VPZg== IHBvc3PDrXZlbA== IGJ1c2M= IEp1ZGFpc20= IGluZGlzcGVuc2FibGU= IE1vc3RseQ== SVRB IGdldENvbnRlbnQ= QnJvd3NlclJvdXRlcg== LWNvdW50ZXI= IG9idGVu IC8+KTsK 0LjQuw== aGVhZGxpbmU= KGhvbWU= YWxpY2U= bGRyZQ== X01vZHVsZQ== Q29tcGFuaWVz TlBD IHRvcnNv LmNvbnM= CWFkZHJlc3M= X3B1cmNoYXNl IEJhcmQ= Z3N0 LWFuaW1hdGlvbg== X3BhaWQ= LnNwZWNpYWw= IGRlbGlt IHRha2VvdmVy KGhhbmQ= ZW51aW5l LWdyZXk= IEFCSQ== U2Vzc2lvbkZhY3Rvcnk= aW5zdGFsbGVy X0RJU1RBTkNF IEZhdm9yaXRlcw== oIA= Jz57 IExhdXJlbnQ= 0YfQtdGC IHN0cmlwc2xhc2hlcw== IGVzdGFiYQ== JnQ= LnBhbg== IFBBUlRZ IEJhbGk= Y3Np KG1lbW9yeQ== IFRvZG9z IFNPQVA= YWduZXQ= CWJlZm9yZQ== T3B0aW9uc1Jlc29sdmVy aWJlbg== INmF2YY= IGFkZGl0aXZl IE1lbGVl IE1hbml0b2Jh IFBlcmNlbnRhZ2U= PSgt LmtpbGw= IGx4 YW5jYQ== IGZvdG9ncmFm IGJsYW5j IFJlc2lkZW50cw== cGluaw== SEJveExheW91dA== LnVuaW9u IEhZ IGNvbnRlbnRWaWV3 LWZhdA== CWhhcw== 66OM IHdoaXBwZWQ= dmVuZG9ycw== dWJyZQ== SVRIRVI= LmZ1bmN0aW9uYWw= INCy0LXRgA== Q2FuY2VsZWQ= LWNu SW5PdXQ= LlJvd1N0eWxlcw== IHRyYXRh IEluZG9vcg== LWZhc2hpb25lZA== IEJvb3Ro LkxhYmVsQ29udHJvbA== IHBvcGU= IENhcm5lZ2ll bmVyZ2ll IEJY 44CCIiwK IFdlYnN0ZXI= CWRpdg== TmFycg== IGNvbmp1Zw== a2lk IG1vZGVyYXRpb24= IGFteQ== IFNvbHZl VklD IEVa aWxsYWM= IENpcGhlcg== IEFjY2VwdGVk TEFCRUw= IHdyYXRo IG1pblZhbHVl IGthxbw= IERhdWdodGVy KS5e KGRj IHJlc29sdmVz c2Nzcw== YWJvdXRz dWx0aXBhcnRGaWxl IGZlYXRz IGxhdW5kZXJpbmc= IGNvbXBhw7E= IHNlZ3VyaWRhZA== IGhvYmJpZXM= LWZhY2luZw== InZhbHVl Z2V0SW1hZ2U= U3FsU2VydmVy IHdpdGhTdHlsZXM= PkRhdGU= IEV4cGVk JGpzb24= 6ZO+ IEFDVElPTlM= U2Vuc2l0aXZl Ymxhc3Q= IMO2ZmY= ZnRl Q1RTVFI= IExvZ0xldmVs Y29udHJhY3Rz LmRqYW5n Ij4NDQo= RVRZUEU= IG9iamM= X1NPVU5E X3NwYWNpbmc= X2NsYXNzaWZpZXI= IHJvYw== Q2xhc3NpYw== IOuztA== X2ludmVyc2U= LWFjcmU= IEZJTA== IERWRHM= IHN3YWxsb3dlZA== dmlsbGE= IFJlcGxpZXM= RmlyZWJhc2U= IHBoeXNpcXVl CXRoYXQ= IFJlc2l6ZQ== Pj4+Pj4+Pg== TmVhcmx5 LmFydGlzdA== LXs= Pz4NCg0K Lmxy Lmly KFsk aWFubmU= CW9i LCcl IGtuZXg= IGNvcnJv IE93ZW5z PW5pbA== bGF5cw== YXBn w5Y= RU5P SGVucnk= SnVzdGlu ZWxlY3RyaWM= IE5vcmRpYw== 5oyH IGV4Y2x1ZGVz RXVyb3BlYW4= IHRlbnRz KFN0cmluZ1V0aWxz KHBlZXI= eXN0b3Jl UG9ja2V0 ZnVlbA== ZXR1cw== IE1hcmlu 0YDRg9C6 6K+E IFBlbnM= IGluZWZmaWNpZW50 IGV0ZXJuaXR5 Licm IFBhY2thZ2Vz IEFwcENvbmZpZw== IG11bHRpZA== Y3Vsbw== IGJvcnJvd2Vycw== IERlYmJpZQ== IGZyb250cw== Sko= ICIuLi8uLi8uLi8uLi8= ICIrCg== PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= IEdhdmlu IG1pc2g= 4pWR X0FUVEFDSw== SW5kZXBlbmQ= 4K+N4K4= w6Fm Z2Fycw== IFBhcnRpY2lwYXRpb24= VmVyYm9zZQ== U3By U3Zn KFZhbHVlRXJyb3I= IHJlY29uY2lsZQ== CURCRw== bWVldA== IExvZ2luUGFnZQ== LXVudXNlZA== IGpvbmc= IGFuY29yYQ== INij Plo= PXc= IFJlbm8= dmll b3Rpb25FdmVudA== IExpc3RUaWxl X1J1bnRpbWU= IHVwaG9sZA== IE9idGFpbg== cHJvdmlkZWQ= IERhdGVQaWNrZXI= IENHSQ== IEJsYWNrQmVycnk= YWNobw== IElzYWlhaA== 5pW0 IEFiZHVsbGFo IHVwcA== IHVybHBhdHRlcm5z CXNpemVvZg== IHBpc3NlZA== IHByZWZlcnJlZFN0eWxl QVBQRVI= IFZC IFRlcmVzYQ== b2duaXRv RU1Z IGVsZWdhbmNl IENsYXl0b24= YXRpdm9z IEFuYWxvZw== IGdhdXNzaWFu IEhpYmVybmF0ZQ== W11b IHN3ZWV0bmVzcw== IE5pZWxzZW4= IER1dGVydGU= KHNlbA== LCs= IGV4dHJhb3JkaW4= Zmxha2U= W0RvdWJsZQ== Ly8vDQo= IG11Y2hhcw== IEJyb2FkY2FzdGluZw== QXNzb2NpYXRpb24= ZXhlcmNpc2U= LlJlbGF0aXZl IHViaXF1aXRvdXM= U0JBVENI xLFuYQ== LWZvb2Q= IGNyeXN0YWxs 0YPQsQ== ICd+ INCR IGR1bms= IHpp IE11Zw== IGRlY2VwdGlvbg== IEVtYWNz CiAgICAKICAgIAo= IMSRxrDhu6Nj IFdvbHZlcw== YW1lbnRp ICcpWw== Zm9ybWF0cw== UmVjdg== RGV0YWlsZWQ= KEhXTkQ= X3RyaWFs YWdyYW50 T20= Y29uc2Npb3Vz IG9zcA== cXXDqQ== IGdvbg== IG1lcmVrYQ== YXJlbmRyYQ== TWluZQ== LmxpbmtlZGlu IGZpZm8= Lm1vbml0b3I= IHJ1bmU= bW5vcA== IHNwZWN1bGF0ZQ== ZWds IHZhc2N1bGFy LnRlY2g= IG1hZ21h IGxlc3Q= dW1hbm4= IERyaXZlck1hbmFnZXI= IG9ydA== IGxpbmdlcmluZw== IG9zdHJlYW0= IHNwYXJrbGluZw== LmNvbm5lY3Rvcg== IHRhaWxz IGtlcm5lbHM= VVNFUk5BTUU= CWNj IG9uU2VsZWN0 L01QTA== dGFwZQ== LmRqYW5nb3Byb2plY3Q= R2VuZQ== 4oCZaW4= L2ZpbHRlcg== LWVudmVsb3Bl IGFwcGxhdXNl IHJlZ2lzdHJvcw== IENvcnk= b2ZmbGluZQ== LXNob3Q= bGVzYw== b3RlbnQ= IG51bWVyYXRvcg== LmVmZmVjdA== cGxhY2VtZW50cw== IEFGQw== LlNlcXVlbmNl IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K eW50aGlh IEdyaWZmaXRo ZWxtYW4= c2V0RGVzY3JpcHRpb24= IE5pZ2h0cw== Lm9yZGVycw== IGAsCg== IFNhbGFk amlhbmc= IHJlY3Vy IFNUQVRJQw== LXNwb25zb3JlZA== eWxlbmU= LGVtYWls X18pKQ== KSIpLg== Q0VMTA== YW1tZW50 TEFZ LHN0ZA== LnByZWY= LkNvcg== cmVkbw== IEZ1Y2tlZA== IHJ1c3M= IGVzdGFibGlzaGVz bnZhcmNoYXI= LkdldEZpbGVOYW1l IHBlbWI= IFNhdWQ= X3BhY2tldHM= Lmludm9pY2U= LmdldFRvdGFs SG9tZUNvbnRyb2xsZXI= IHTDtg== YWdoZXI= LmVudA== LkFic29sdXRlQ29uc3RyYWludHM= IGdlbnVz IEJhYnlsb24= IC4uLy4uLw== IE1pZG5pZ2h0 IHdn IGRhbmNlcg== LWltbQ== ZGlyZQ== aGF6aQ== Y2VydGlmaWNhdGU= IG1EYXRh IGN1cmVk c3Zu IkI= aWJyZQ== IGRyYWZ0cw== Q2FwaXRhbA== IGNvbmNpc2U= IFBlYWNo IHxc IHBwbQ== X2NvbnRhaW5z QXV0b3I= QXV0b1NpemU= X2xi IHNvbGVtbg== IGZpbmdlcnQ= IEluZGljYXRvcg== IFN2 UGFyaw== JHR5cGU= X01JU1M= YW5udWFs UGFpZA== bWFzdGVycw== IFdE IHZ1ZWw= IGVqYWM= CWdsdXQ= IHVuZmluaXNoZWQ= ZXN0ZWVt Z3JvdXBCb3g= UmVtb3Zpbmc= IGVpbmlnZQ== IFNjcmlwdHM= Z2V0dG8= LkhhbmRsZUZ1bmM= Il0pLA== IGRpc2FkdmFudGFnZXM= LWZyb250 PnA= c2V0T25DbGlja0xpc3RlbmVy IGxhbmRsb3Jkcw== IE3DvA== IHByZXByb2Nlc3Npbmc= KX0+ LWNvbnRleHQ= LGJvb2w= UVVJVA== ICIpIik7Cg== IFdlYnNpdGVz IENoYXJsb3R0ZXN2aWxsZQ== TGF0Y2g= LmRpcmVjdGl2ZQ== IEh1ZmZpbmd0b24= X2RpcnR5 ZXhwaXJhdGlvbg== IFRQTQ== IGVkeA== IFdlYkRyaXZlcldhaXQ= IGFkbWlyZWQ= IGxpc3RlbnM= IFZpbA== ZGlmZmVyZW50 IGxpdmVsaWhvb2Q= IFdhcmNyYWZ0 IHBvc2ljaW9u IGltcGVhY2htZW50 SmF5 IHBvc2l0aXZlcw== IGp1bmdl IFNNQg== L2luY2x1ZGVz KCcuLi8uLi8uLi8= QXJndW1lbnROdWxsRXhjZXB0aW9u ZGVzY3JpY2Fv QUJDREU= LUFB IGludmFkZWQ= IGFtZXJpY2E= dWVkZQ== IFBoYXNlcg== IHNjb3Jlcg== IGRpc2NvdXJhZ2Vk dGhpbg== IGFiZG9tZW4= IElQUA== IEhhbXB0b24= L0RlbGV0ZQ== W3NyYw== Q1N0cmluZw== IE51bg== IGVwaXRo 4oC7 LnRhYmxlcw== IEhlaW4= IHdoaXJs IGNsYXJpZmljYXRpb24= IHdlZGdl IGjDpHI= IFRpbmE= IHRod2FydA== IENvc3R1bWU= aW9uYWdl Q29k X2FjbA== IHJlc2g= IE1lcmN5 IERpeG9u IGRlc2Fycm9sbA== VmlyZ2lu KiopJg== IExlbm92bw== IGVyYXNlZA== ZW50aW9ucw== IHNsaXBwaW5n 5Zub IGNyYXZpbmc= cGxhbnRz IGdldHRleHQ= IG1hc3NpdmVseQ== IFJlbmFtZQ== Lmhlcm8= 44K7 IHRvbWFy IENPU1Q= IFByYWN0aWNlcw== Lk1lZGlhVHlwZQ== IEZ1bmRpbmc= RmluZQ== aWdlcmlh VW5j IHN3YXBwaW5n PicuCg== aW50ZXJw YXJ0aWZhY3Q= IEJhZ3M= LnZpZXdNb2RlbA== cXVvdGVk CUxvbmc= X1NDT1JF IHNhdnZ5 bmVsbGU= a2zDpA== Q291bnRz 2q8= RmllbGRUeXBl b2thYmxl IFJUTA== I2luZGV4 ICV7 IGFyaXN0 LkdldE1hcHBpbmc= KEFkYXB0ZXJWaWV3 PSIiKQo= IGRpc2lu IFRvdWNoYWJsZU9wYWNpdHk= IE1PWg== IER1bm4= Q2FwYWJpbGl0eQ== YWtoc3Rhbg== VUlWaWV3Q29udHJvbGxlcg== KHNvY2tmZA== IEphY3F1ZXM= PXRr YXJQYXJhbXM= Y29uZGE= IGFkdm9jYXRlZA== IHBlbmV0cmF0ZQ== SkVDVElPTg== IOuwmA== IEZJTkQ= IGVhcm5z YXBwZW4= 6rE= IHRocm91Z2hwdXQ= IHBlbnNpb25z IGZ1c3M= SFRUUFJlcXVlc3Q= bnV0cw== b2NodA== LWVzdGFibGlzaGVk IEFMSUdO IGpzcGI= RGlzcA== X2VtYmVkZGluZ3M= IHJlcHQ= IFlvcmtlcg== w7JuZw== IGpvdXJuZXlz IEFwcHJvdmFs CVNFTEVDVA== KEdyYXBo 0LzQuA== IGRvbGxz IHNleGlzdA== IHBhbnM= IG1wbA== IG9wZXJhdGl2ZQ== IFRvcnJlbnQ= WU0= IFBhc3Npb24= 5pat LmNvbXBpbGVy CUNTdHJpbmc= PWNvbG9y b3JpYW5DYWxlbmRhcg== IEtub2Nr IGhhaWxlZA== L3N0YXRl IHNldHVwdG9vbHM= IE1hcmU= IHN5bmNocm9uaXpl IFN3aXBl IGdhbWJsZQ== LCcnXV1dLAo= IGRlZmVjdGl2ZQ== X09CSkM= IGRlbmlt IHRhZA== IEtpbWJlcg== IG5ldXJvbG9naWNhbA== w6puY2lhcw== CWNi LnNldFBhc3N3b3Jk IFBsZWFzYW50 IFBoaQ== LXRhZ3M= IGNvbnRhZw== IENvcmFs IGRpc3RyYWN0 aXRpemVy IHN1bnJpc2U= c2V0SWQ= IENoZW5uYWk= IE9ncmU= X0hJU1RPUlk= UFJFU1NJT04= X1NVRkZJWA== ZHVwbGljYXRl LmF1dGhTZXJ2aWNl IHNwYWNlZA== IEJlbmdhbHM= U29sdmVy IGJ1cmVhdWNyYWN5 X2hpdHM= INGC0LjQvw== IGPDqQ== IGRpc2dyYWNl 6KeS aXNPcGVu Q2hlbQ== X2xpY2Vuc2U= X2hvc3RuYW1l X0JSRUFL IGZpZXJ5 OkQ= L2xpbnV4 VGl0dWxv UmFkaWFucw== aXpvbnM= UmFt b2RpYW4= aWFuZ2xl IG5pbmph RXZlcnlib2R5 KCI+ IHRha8W8ZQ== IGdyb3VuZGJyZWFraW5n IGRpcmln SFRNTEVsZW1lbnQ= IFVuY29tbWVudA== Y2hlaW4= IOeUn+WRveWRqOacn+WHveaVsA== JSIK IHRpcG9z Q2hhckNvZGU= IFByb2R1Y3Rv ZmFpdA== J2w= LXRodW1ibmFpbA== dXN1 X2Zvcm11bGE= LlRPUA== LmJ1eQ== IG1pZXV4 Q2VudHVyeQ== cGVp IHRic3A= LVBhY2lmaWM= b2dp IGZhdHRv IGZhbnRhc3Q= IFNBTEU= LmFkcw== IHBpbGxhcnM= X3RyaXA= IHR1YQ== IGFwZWxsaWRv LnNldENlbGxWYWx1ZQ== ICgoXw== IE5pbmE= PGM= aW5pdW0= ZGZ1bmRpbmc= LXdvcmtpbmc= IEVzdGFkb3M= IE1hbGk= PGY= dXJhbmNlcw== cGFnaW5h X1BL IHVuYXJtZWQ= b2dnbGVk Q2FuZGlkYXRl UmF0aGVy IGZyYW5jaGlzZXM= IGNvdmVuYW50 wqo= aXBwaW5lcw== R3Vu LWZlaXJh IGxpbmVhZ2U= X0dSQU5URUQ= Z2VucmVz LkVsYXBzZWQ= IGxhcmdv 0Js= LXJlYWR5 X3Byb2Nlc3NlZA== bGFuZ3M= w7ptZXJvcw== ZnE= L25wbQ== X3Nydg== IGF0dGVuZGFudA== aXZpZA== ZXZpY2U= QUJJ KGJpbmFyeQ== X1ZBTElEQVRF IGFkZEl0ZW0= X2NvZWY= YWxlYg== b2dyYXBoaWNhbGx5 Qm9yZGVyQ29sb3I= IGFzc2F5 IGNhdGNoRXJyb3I= IENocnlzbGVy b2do IGtleVZhbHVl ZGVjaXNpb24= LW9mZnM= IGxpZWd0 KERhdGFUeXBl IGlyaXM= IGV1cA== cmlnZXI= b25pY2E= IHJvcGVz IG5hcnJvd2x5 IFF1YWRy IGVwdWI= ZXN0aW5hbA== LXR1cm4= IGxhbmdz 55uR5ZCs6aG16Z2i IHF1ZWxsbw== LGFyZ3M= aWdhdGU= IFNlZW1z IGZvcnRl Q0xJ X0xPQURJTkc= LlJ1bGU= IHlvdXRocw== KHh4 IEFzc3VtaW5n YWdoZXR0aQ== KQoKCgoK IG9uT3B0aW9uc0l0ZW1TZWxlY3RlZA== T2NjdXA= IGRldHJpbWVudGFs IGlubmF0ZQ== IEJhcnJlbA== dWVuY2lh IG9uQmx1cg== IGxpYnM= W2xhc3Q= IGNwZg== LlRpbWVvdXQ= ZXN0YXRpb24= IHdpZWw= IHV0aWxpemFy IGRpc2d1aXNl IER1bQ== T0NJ T05HTw== ICg/LA== IFBhdGlv VmVydGV4QXJyYXk= LmF1dGhvcml6YXRpb24= cm96 IEhvcw== LlNwYWNl IFZpcnVz KGtleXdvcmQ= VE9DT0w= X0NPTlRST0xMRVI= IEJsb2NrZWQ= IENob3A= d2nEmQ== XFJvdXRpbmc= L3BhY2thZ2U= IHBlcnN1YWRlZA== YmVpdHM= TENE IG11Yw== X0ZPUldBUkQ= IG91dGxhdw== IHphdw== X3ZlaGljbGU= IEplbnNlbg== LkdyZWVu IC8vLy8v SVJDTEU= LWJ1c2luZXNz LkhpZGRlbg== IGtvbm50ZQ== cHE= IHBhcmVjZQ== IGxhbmRzY2FwaW5n IERlY29yYXRpb24= IEdSQQ== X3Byb2ZpbGVz IEZsZW0= Q0xJQ0s= IEZBSUxVUkU= IGlvbnM= X1RpbWVy LkRvZXM= IGJvdW5jaW5n dXBweQ== dWxpcw== L2Fn IEdhcm4= IGh1ZA== IHJlc3BvbmRlcg== IHN0cmNocg== IGNob2tl IHN0YXNo X2NoZWNrc3Vt IHN0YW1wZWQ= QEdldE1hcHBpbmc= LkJ5dGVBcnJheQ== IER5cw== YXRlcm5pdHk= KHJi IGVkaXRUZXh0 IGVyZWN0aW9u IGNlc3M= X2V2ZXJ5 X2dhdGV3YXk= ICciLg== IHN0YWZmaW5n IGludm9pY2Vz aW5pY2lv fV0sCg== LHZhcg== eWNpbg== IERpb24= ICUlCg== Jywo LXNwYW4= IHRow6BuaA== IGJvcm5l IEthdGhsZWVu 6L+e5o6l X2N1YmU= IGluZm9ybWHDp8O1ZXM= bmdlcg== L0ZpbGU= IGRhcmE= IG1M KioqKioqCg== IG1hcmtpbmdz YmJl IHJlY3VycmVudA== IFJhbmtpbmc= X2ludGVncmFs XT4K IHVuYW5pbW91c2x5 IGRpcGxvbWF0cw== IElPUw== OyI+PD8= IE1hdHRl IFJhbGVpZ2g= IEltcHJvdmU= ZXhpc3RlbnQ= IGZha2Vy IEhpZ2hsYW5k c3RlbQ== LW1z TGlzdE9m Lkxpc3RlbmVy KHdhaXQ= X1JTVA== VW5h IG9jY3VwYXRpb25hbA== LW1lbW9yeQ== IFN1cmY= IGJydXRl X0VsZW1lbnQ= ZGRkZA== IERlY3Jl LnBzaQ== LWRldmVs IE9uVHJpZ2dlckVudGVy VG9EZWxldGU= IGhlcmFsZA== IHNvY2lhbGVz IGJvb3N0ZWQ= Lkl0b2E= KiI= IGFudGlkZXByZXNz IE1hdmVy X18pKQo= KER1cmF0aW9u ZXN0YXRl YnJhdGU= Q2xh IOS4ig== 65CY cmnDqHJl YnJlYWtlcg== X2xlZw== fWVsc2VpZg== X2Z1bmNz dcOt LnBhZ2VZ Y3JlYXR1cmU= IGNhbm5hYmlu IEFzdHJv bG9jYWxz IExBUw== X2NvbnZlcnNpb24= IENSVUQ= LnNraWxs IHN0cmF0ZWdpc3Q= LnBvbA== KHNlZ21lbnQ= IHBlZQ== fSIpOwoK LnByZXZpZXc= SmFt IGhlZnR5 aXZhdGluZw== R3JpZENvbHVtbg== IGN1ZGQ= IGluamVjdGlvbnM= IE5JTA== LW9sZHM= ZmxhdGlvbg== IExlYWZz IHNwaGVyaWNhbA== IGZhbGxvdXQ= YW1pbmVy IDo6PQ== LnBvaW50ZXI= LU1hcnQ= IG1hdHRl IGNvcXVpbmU= IGRpc2NvbnRpbnVlZA== IFJFR0lPTg== LlJpZ2h0VG9MZWZ0 IHNxdWVlemVk X1BPSU5UUw== YmVzdG9z LWxhc3Rpbmc= KHV0aWxz PEJhc2U= IHBhcmRvbg== U3RyaWRl Y2Ry IG5hcnJhdG9y dm9sdXRpb24= IHVzZXJJbnB1dA== X2NvbnRhY3Rz KGVuZW15 IENoYW1iZXJz emllbA== IGJsb2NrU2l6ZQ== QW5pbWF0aW9uc01vZHVsZQ== IGltbWVyc2l2ZQ== IG91dGluZw== dWVzdG9z VHdlZW4= IGtlcA== IHLDqXN1bHQ= IEJvbGx5d29vZA== RExM IFN1cmVseQ== LlJvd1N0eWxl KHRt X2dlbmVyYXRpb24= IFN0aXI= IGRhdGFTbmFwc2hvdA== Y2h1cmNo IGNvbmZpZGVudGlhbGl0eQ== X3N1c3BlbmQ= dmlw IEthdGh5 44Km IHZpb2xlbnRseQ== cGV0cw== IG1lc3NlZA== IHRleHRib29rcw== ICAgICAgICAJCQk= 5raI5oGv IExhcmF2ZWw= IEFyY2FkZQ== IGVudGg= IGJlbmlnbg== X0RST1A= LWVuYWJsZQ== 4oCdKS4= dXZ3eHl6 X2xpc3Rpbmc= IE5JQw== 44GV44GE KCIuIiw= LXJvdW5kZWQ= LXBhY2Vk cGF0cmljaw== U2VsZQ== LmdldEZpcnN0 LkVYSVQ= ZXRlcm1pbmF0ZQ== R3JhbQ== Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LmV4dGVybmFs IHdyb25nZG9pbmc= IEVsbQ== IHNhbms= VGVlbg== IFRob21zb24= cHJpb3I= amV0YQ== IEFEUw== IFBlcnNpc3RlbmNl IEZvbGs= e1wi Ym9uZA== X1NQRUNJQUw= X0xBVA== b25la3Np IG1vdGhlcmJvYXJk IHNoZWFy RnVsbFNjcmVlbg== Kks= KEJsdWVwcmludA== TWV0aG9kSW5mbw== QmVjb21l IGhhaWw= IERvYg== IGdlbmVyb3NpdHk= ID8iOwo= IHdoaXNrZXk= IHRoaW5uZXI= IENw IGludGVyc2VjdGlvbnM= Q3JpdA== cmFpc2Fs cmVmZmVu V2hlbmV2ZXI= IGNvbW1lbmNlZA== VHJhbnNmb3JtYXRpb24= L3dyaXRl PSIiIg== KGxk IG5vcnNr QU1FTlQ= LnNoYXJlZEluc3RhbmNl X2hvdXNl IGdsRW5hYmxl 6L2v IG5hbw== IGRlcG9zaXRpb24= IGRpbm9zYXVycw== IHRpbWVTdGFtcA== X18pOwoK LlJpYmJvbg== IExpbmRzZXk= OnVzZXI= IMOA X2Zvcm1z bWluYXRpbmc= IE9saXY= IGTDqWJ1dA== YmFyY29kZQ== c2ltaWxhcg== IHBsYXRlYXU= IGluZGVt UmVhbG0= IGZlcnRpbGl6ZXI= IGNhcGU= IGNoYW1wYWduZQ== IHNlbGZpZQ== IHBsYWlubHk= IGNhdGFzdHJvcGhl IGJldHJheWVk dmVyc2libGU= VXBkYXRlVGltZQ== Lk91dHB1dFN0cmVhbQ== Ymlhc2Vk Ym91bmNl IFNwb3J0aW5n Q29vcmRpbmF0b3I= ZGV2ZWxvcGVycw== IHRyYWNlcg== IG11c3RhcmQ= U1E= X3Rlcm1pbmFs IGNvb2xlZA== IGF2b2lkYW5jZQ== TG9naWNhbA== IHllbGw= X3JvdXRlcw== IGFydGVyeQ== IEJlYXJpbmdz Lm12cA== LkdVSQ== VUlTY3JlZW4= eW1t aXTDpA== KClbIg== IEF6ZXJiYWk= IGNvbmRpdGlvbmVy IHdhZw== IHNjYWxw dmluY2lhbA== b3dsZXI= LicpOwoK QkxVRQ== IMKnwqc= Qm9zdG9u IExpbmtlZEhhc2hNYXA= RG9jdW1lbnRhdGlvbg== LkxlcnA= IGRlbm5l IGhlc2l0YXRpb24= IENlbGVicml0eQ== IEh5ZGU= IGNvbW1hbmRpbmc= YWNlbGx1bGFy IHBhdmVtZW50 IEhhbW1vbmQ= YXNzaWM= UExVR0lO IHJldm9rZWQ= RG9jdW1lbnRv LnBob3Rvcw== IFdpbGxvdw== IFZpa2luZw== IHVwZnJvbnQ= IExpZmV0aW1l ICVb RHJlYW0= 5aS0 IGFjY2VsZXJhdG9y UGVyc29uYQ== X3RvcGljcw== 77yJ44CB IChfLg== IHPDqWN1cg== IEt3 X2Nhc2g= IHNvb3RoaW5n IExvdmVseQ== IEhlcnM= ZWxvbg== TElDRU5TRQ== X2NhY2hlZA== LnNoYQ== UkZD LkZpbGVJbnB1dFN0cmVhbQ== LUFs IHVzZXJMaXN0 IG7DpHI= SGlsbGFyeQ== IHBhZ28= LlBsdWdpbg== IENvdmU= X3lhbWw= X3JzcA== J3Bvc3Q= LWR1cmF0aW9u IHNlbnRpZG8= IG1pbkhlaWdodA== IHR1cnJldA== LWVuZXJneQ== IOeJ 0YDRg9Cz b3RlY2E= X3F1YWw= U2VsZWN0aXZl IEJFTE9X CWFkbWlu IH19LAo= J3VzZXI= U1ZH IGN1bG8= KFdvcmxk LWJpbmRpbmc= bmJy IFNlbmRz IHN1cHJlbWFjeQ== IHNrYXRpbmc= IGNyZWVr IGFjY3VzYXRpb24= YXBnb2xseQ== LklERU5USVRZ IG1hbmRhdGVk IGdvd24= IHdpZHRocw== IExTVQ== L3ZlcnNpb24= IFJlYWRlcnM= IFJvbmFsZG8= IGJhZmY= IGA7Cg== R0xJU0g= KGRvdA== IE9wZXJhdG9ycw== LlNjZW5lTWFuYWdlbWVudA== bWVyYw== X3JlcG9ydHM= LWNlbnRyaWM= IENlaWxpbmc= PXsh bW9ueQ== IEFERFJFU1M= 5a+56LGh TWF0Y2hpbmc= IHVuaw== IGtleUNvZGU= ICcvJyk= KWRhdGE= IFZvbHVudGVlcg== IGxheg== IEd1YW5n IENhbmRpZGF0ZXM= RW5zdXJl aWFnZQ== c3VjYw== Q2VydGFpbg== IGxlZnRvdmVy aW5pbg== LWVsZW1lbnRz cGlrZQ== IHNsaWRlc2hvdw== LnRvb2xTdHJpcFNlcGFyYXRvcg== LnBoYXNl IGVudGVydGFpbmVk IENhcnJpZQ== IE1vaGFtbWFk LmxvZ2dlZA== IHNjcm9sbFRvcA== IEFiYmV5 aW1vbnk= KHJlc3VsdFNldA== IGFkaGVzaXZl X0RBTUFHRQ== IGlvY3Rs YnJvd24= SU5TVA== LkNsb25l IGxvb21pbmc= RGVzZXJpYWxpemU= IGx1eg== cXJzdHV2d3h5eg== LmlkZW50 SGVhdnk= IGRpbw== 5piv5ZCm IEZ1cm4= 6YKu emltbWVy 44O844OJ c3BlYWtlcg== IEdlZA== IHVuaWRlbnRpZmllZA== SW50ZXJmYWNlT3JpZW50YXRpb24= IFN1cnZpdm9y ZGVlbg== IEJvcmc= dG9Eb3VibGU= X2J3 IHB1Ymxpc2hlcw== X0FMRVJU YW5ncw== aWVyZXM= IGhlaQ== IElDb25maWd1cmF0aW9u IGNvbnN0aXR1dGVk V0FUQ0g= cHJpdmF0aW9u IEdyYW5pdGU= LlRleHRBbGlnbm1lbnQ= X2t3 OyIsCg== Y290 IE5ld2Fyaw== cm9hY2g= KW9iag== Q29tcGlsYXRpb24= Q2F0ZWdvcnlJZA== LnNldFVzZXI= aXZ5 IEltYWdpbmc= aWdodGVk IHdnZXQ= IG1vdXRocw== Lmxpbg== IFJhZGlvQnV0dG9u LkNtZA== c3Nl IG1lc2hlcw== IFNvbGU= LnJlY29yZHM= IGFudGlz KG1vbg== INGH0LjRgdC70L4= gq0= IOyeiOuKlA== QWxsQXJnc0NvbnN0cnVjdG9y IHN1cnJlYWw= IE1hcnJpZWQ= IHhwYXRo XGY= QnJpbmc= IHlhaG9v IEV0c3k= X2RhaWx5 IHRocm93YWJsZQ== IFBsYXNtYQ== L1B1YmxpYw== aW1pemVCb3g= IHZlcw== IHRyb20= X3Jocw== LWFscGhh IEFyYm9y KSkt RmlzaA== ZmVlZHM= IGNhbGY= IFNlcmdlYW50 KGVudW0= IFJhbXNleQ== IElkZW50aWZ5 LmluaXRTdGF0ZQ== IGZsdWN0dWF0aW9ucw== X0FUVFJJQlVURVM= IHB3bQ== RVNB Y3Bm U2ltdWxhdGlvbg== IHlvdXRoZnVs IEluZmFudHJ5 IGdsYW5jZWQ= IFByb3Blcg== 5LmJ IEtyYWZ0 Q2l0 b29wcw== PXVybA== cG9zdGluZw== ZGVjbGFyaW5n IHBOb2Rl SmF2YXNjcmlwdA== CQkJCQoJCQkJCg== LmNvb3JkaW5hdGVz cmlldA== IFNx X0NBVA== IFBhcGE= YW5kaQ== Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v TWVldGluZw== IOyekA== SW1hZ2Vu w6lyaWVuY2U= QWdncmVnYXRl LnBvbHk= IHdhdmVk IGludmVycw== c2VhcmNoTW9kZWw= IHRyb2xscw== W2xldmVs IExvd2U= dWxsbw== KHBsYWNl IE5BU0NBUg== IG9yYml0YWw= LnN0b3J5 IGF1dGhvcml0YXRpdmU= LnRleHRWaWV3 IGFscGg= X3JlZHVjZQ== IEZyYW1lcw== IEJyb20= cmVkaQ== KE1ldGhvZEltcGxPcHRpb25z bWFjZW4= VG90 IG1pZGQ= 2Y8= IEJhc2VNb2RlbA== IFZlZ2E= ID8+Igo= IFJpZ2lkYm9keQ== LnNldENvbnRlbnRUeXBl YWFT QmFzZWxpbmU= IGJsYW5rZXRz c2Fw IGNhc3VhbGx5 VW5pdmVycw== IFRyYXk= IEFpcmVz IG1heFk= X1BST1BFUlRJRVM= IGhlbG1ldHM= wqY= X2Rlc2Ny c2hpbnQ= X0NQUA== dW1v YWRheQ== KHBsb3Q= ZW56eW1l IEV4Y2VwdGlvbnM= X3Zpc3VhbA== Ol0KCg== KHRhcmdldEVudGl0eQ== cGhlcmVz dW5hbg== IHNlbG9u d2ls IFJlbmRlcmluZw== S0M= IGNvbnN0aXR1ZW5jeQ== U0NSSUJF ZXN5 IEZlbGxvd3NoaXA= 5Y+4 IGZ1dHVybw== IGFybW9yZWQ= bGlzdGU= b3Jhcw== bXVsdGlwbHk= Z2VtZQ== Y29lZg== 0L7QsdGA0LDQtg== IERlbGl2ZXI= ZW5nbw== LnVzZXJTZXJ2aWNl T05VUw== Lm9ucmVhZHlzdGF0ZWNoYW5nZQ== ICIvIiw= YW1iaW8= X1Byb2plY3Q= Jyk/Pg== IGZsaXBwaW5n d29tZW4= LkNyb3Nz IGhvbGxhbmQ= IGNpbmVtYXRpYw== IHdoaXN0bGVibA== IGxpbmd1aXN0aWM= LkdldHRlcg== IG3DpG5uZXI= IExlZ28= IFNjaHVtZXI= YXNzZXNzbWVudA== X2Noaw== IHJlY29tbWVuZGluZw== LnNjYWxh IEd1YXJhbnRlZQ== IEBf LkFVVEg= IHlQb3M= bGF0ZXg= IEFsYmVydG8= 5q2l dGhvcmE= 4Li34LmI VVJMRXhjZXB0aW9u R2hvc3Q= LlRvb2xiYXI= IGVuZGlhbg== 6Zeo c3RyYWN0aW9ucw== RmlsZU5vdEZvdW5kRXhjZXB0aW9u IHN0aW11bGF0aW5n YnNlcnZpY2U= YXTDs3Jpbw== aXRpb3Vz IGF1dGhTZXJ2aWNl X1RSQU5TRkVS IHJlZGlyZWN0VG8= IG1lbnNlbg== IFNQTA== IMK7LA== IGFjZXQ= X0JhY2s= 4KSV YWFj IFJpb3Q= X0ZC IFph UGxhdGU= IGxhYmVsVGV4dA== INCy0YDQtdC8 aHRvbg== IE1jQQ== IEFwcGVuZGl4 IEtvaw== IGludGVydmlld2luZw== X3NwZWxs IFN1YmplY3Rz IGJ1cm5lcg== 5a+8 aWxsaWFu IGJ1bXBz UGFzc2Vk IENvbnRyaWJ1dG9y WW8= Ymxh IHNvdXQ= LmV4Yw== Tm90aWZpZXI= c2hpdg== LlVuaXRUZXN0aW5n dWVsbGVz X1NMRUVQ CW9wdHM= IHByZXNjcmlwdGlvbnM= IHJldmlzZQ== RURJVE9S IGFubsOpZXM= X3BrZw== IFRyYWNrcw== 4LmI4Liy PWZvcm1z LlJVTg== IGFzZWc= IHDDoQ== IGplcw== R3Jl YWNy T2ZmaWNpYWxz dWtlcw== Y29tcGFuaWVz XFF1ZXJ5 IFByaW50YWJsZQ== 5a6i X1ZP IGRlaXg= IGRldmljZUlk IGRpc3R1cmJhbmNl bmlzdA== Lmlzbw== cGFyYWxsZQ== LWRlc2NyaWJlZGJ5 IExpZg== IGJyZWFzdGZlZWRpbmc= IGZlbWluaXN0cw== bGVncm91bmQ= IGRhbWU= IGNvbXB1bHNvcnk= TUVSQ0hBTlRBQklMSVRZ LXJlc3VsdHM= Zm9ybWVkVVJMRXhjZXB0aW9u OlsK LWludGVyZXN0 IHPDpA== IG5vc3RhbGdpYQ== IGNsYXJpZmllZA== IFBIT1RP IHJldmlzaXQ= IGNhcHN1bGVz IHNoaW5lcw== IGNyYWZ0c20= c3ViamVjdHM= ICAgICAgICAgICANCg== 5LiN6IO95Li656m6 IFNjaHdhcnR6 cmV1 IG1hZHJpZA== LnBlbmRpbmc= IExJTg== IHVuc3Q= CW12 IHZpdmFzdHJlZXQ= IHNwb2ls w7hq 64u5 IGJ1ZW5h IGRpZ2l0YWxXcml0ZQ== c3Vicw== IFVOSVZFUlM= IFN1aWNpZGU= PEd1aWQ= LmVsZW0= X2NvbnN0cnVjdA== IGFtaWRzdA== IOuP LWVzdGVlbQ== IEludGVncml0eQ== LmZtbA== T3V0T2ZCb3VuZHNFeGNlcHRpb24= LVNlbWl0aXNt QmV0YQ== LWdvaW5n U2VnbWVudHM= IE1hZQ== IFBlcnNvbmFsaXR5 dXJiYXRpb24= 5Y+z IHNlcnZpY2luZw== IGJpcG9sYXI= X1NUQUdF LkpQRw== Jyl9fSI+ aXNobHk= SVZFUlk= IEluc3BpcmVk LnNlcnY= KGRhdGFz IGRpdmlkZXM= PFJlYWw= dmVydHVyZQ== IG1vdGl2YXRpb25z dmVydGU= RU5DSA== ZmRz IHJldm9sdA== d2VidG9rZW4= aW5zdGVhZA== CW9wdA== IE1hcmlqdWFuYQ== X2FkYw== YmFv W1NlcmlhbGl6ZUZpZWxk IGdyYWZmaXRp LWFvcw== ZW1pYWg= IGbDrXM= IGV0aGlj J2FsbA== OmtleQ== 65Ok IHJlc3RyaWN0aW5n IFhIVE1M ZXJlbw== dW5kb3M= CWVuZGlm WzosOiw= IHN0ZWhlbg== YWtoaXI= IGp1aWNlcw== ZGF0YVNvdXJjZQ== X21r LmRlbGV0ZWQ= Q29uZ3Jlc3M= aW1tZWw= RWxlY3RyaWM= YW9z IE92ZXJsYXk= IEFDTFU= cm5k ZXNzZXM= IEx1eGVtYm91cmc= cGFyc2VGbG9hdA== IGd1dHM= Y2xhc3NpZmllZA== IGRlZlN0eWxl IFRjcA== cGVhdGluZw== Q2hhcnRz X3Vy X2xhdGVzdA== KSEK Y2F0aW9u LkdldGVudg== KGxvb3A= IHVubA== X2R0eXBl emXFhA== KEpOSUVudg== LmZldGNob25l IHNpZ21vaWQ= IE9MRA== IE1pbmlzdA== 7YE= IEvDtg== IGZyYWN0aW9ucw== IHNpeg== PT09PT0K LlByaW50V3JpdGVy X0FkZHJlc3M= IEF1ZGllbmNl Q29tbw== IEJydWlucw== LmFjdGl2aXRpZXM= IGFuY2VzdHJ5 0YPQu9GM0YI= CVJldHVybg== cHVu IGdyYXBlcw== SUxvZw== IGRpam8= IFBlcmtpbnM= IFZNd2FyZQ== X2F1dGhlbnRpY2F0ZWQ= w650cmU= b3ZlcndyaXRl IEhk IGdhbGF4aWVz YWNodQ== SHJlZg== W0Q= IHBhcmNl TGF0TG5n X3BhdHRlcm5z IFNIT1JU IHJ1bW91cnM= Y291bnR5 IEdSSUQ= IFsv IFNreXJpbQ== RGF0YUdyaWRWaWV3VGV4dEJveENvbHVtbg== IGNlbg== IGN1Y3VtYmVy LklOVA== X0NPTkZJUk0= IGN0bA== cGVybA== aWxsb3M= IEFDQQ== IEdlb3JnZXRvd24= X2NhbGxhYmxl IENyYWZ0cw== L2Nv IGluYm91bmQ= IFRlY2huaXF1ZXM= c2V0Q2hlY2tlZA== IHBuYW1l Y29tcHV0 U3RlZWw= IGhhbmRoZWxk IEFsYW0= YWJzdHJhY3RtZXRob2Q= 6aKR SU5Z YmF0dGxl X0VWVA== IGNldXg= IGF0b2Y= IEFieXNz X3ZhbGlkYXRvcg== IGhhaXJz VmVydGV4QXR0cmliQXJyYXk= IGNvbW1vbnM= LWJpbmQ= TXVp IGNvc21ldGljcw== IG1pcmFj Lm1hcmtlcg== U0NBTEU= LldvcmQ= LXVs IERpdmVyc2l0eQ== IEREUw== LmN3ZA== X3h5eg== IENvbXB1dGVz KGNsaWNrZWQ= VEVNUExBVEU= IHpvbmluZw== IGZpbnM= IFBK ZXh0Vmlldw== Q2hhcmFjdGVyaXN0aWM= aWdhdG9ycw== IHByb2NsYWlt IHByaXN0aW5l IGRhdGFzdG9yZQ== IGRpc2NvdXJhZ2U= X25zZWM= IG5pbmV0ZWVudGg= IGNlbHVp Sm9uYXRoYW4= IGFtcGg= IENyb3NzaW5n IEh1bWFucw== IEJvb2tlcg== w6JjZQ== Z2V0UG9zdA== IE1vbnRlcg== IEZsYXZvcg== TWVkaWFUeXBl IuKAlA== IEFyY2hhZQ== QHJldHVybg== LWF3YXJl b3J1 LVRoZQ== YW1wbGVk S0Y= LlRlbXA= IERyZQ== KHtf cG9seWdvbg== IMOm IERlZmVuZGVy 77yY Xyks LlVuc3VwcG9ydGVk X14o KElEQw== JHY= IHdvcnRobGVzcw== IFNFRw== aWxpa2k= Tm9BcmdzQ29uc3RydWN0b3I= IE1lcmNo IG5vcA== IGZvcmdldHRpbmc= IGRvcGFtaW5l anVhbA== ZW9u IFJlYXNvbnM= c29ydEJ5 KCctJyw= LXN5bmM= ZWNlZG9y S1A= KGNvb3Jk KENoYXQ= XCQ= ZXN0cmluZw== Y2Vm LmhhbmRsZUVycm9y 24zYrw== 0YHQug== IGhhbmRj ZWxpamtl IFNwaXI= IEJ1Y2tz IFFSZWN0 U2V0Rm9udA== LmV4ZWNTUUw= OjoKCg== IHN1aWNpZGFs c2VlaW5n IGNpZGVy UHJvZ3Jlc3NEaWFsb2c= IG1vbGRpbmc= CXRyYWNl IGVtcGhhc2l6ZXM= IG11bHRpcGxlcw== X1BU X091dHB1dA== Y2FwaXRhbA== TmVlZHM= X0RJUkVDVElPTg== LmlzVmlzaWJsZQ== IHJlc3Rl IG92YXI= KHNoYXJlZA== LWNvbXBvc2U= LmJhY2t3YXJk CXJlY3Q= QW1hemluZw== LmRpZFJlY2VpdmVNZW1vcnlXYXJuaW5n U0VSVklDRQ== IEluanVyeQ== QnJhaW4= IGF1c2dl KHBl Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= b3JwdGlvbg== X01BSUw= b2hh IHNubw== IGJvaWxlZA== aWxkZW5hZmls IFdlbGZhcmU= IFF1YXJ0eg== IGNhcHRjaGE= IFdFU1Q= IE1hemU= IGdyYXBoZW5l IHBlcms= IG1pc3RyZXNz LkZvcm1TdGFydFBvc2l0aW9u IGV4cGVyaW1lbnRhdGlvbg== KikoKA== IGJyb2FkY2FzdHM= IHJlbW92ZUFsbA== CUdVSQ== 5YOP YWJjZGVmZ2hpamtsbW5vcA== IHVuaW5z QVNQ K3c= bXVy IGRpbmU= IGFyb3U= IGVzY2FwZXM= IFRvYmFjY28= Lm5hbWVk IFBhdHJlb24= X0ZBQ0U= X3NwaW5uZXI= bW92aW5n X3ZvdGVz T2hpbw== LmVuY29kaW5n RGVncmVlcw== IlRv IHByZXN0aWdl b3NwaGVyZQ== IExhbmNhc3Rlcg== 77yX IG9uQ2FuY2Vs IEhJUw== 0J7RiNC40LHQutCw IG9yY2hlc3Ry IHJlZnJlc2hlZA== RGF0aW5n KG11 IEplZA== IEVkaXRvcmlhbA== U2V0QnJhbmNoQWRkcmVzcw== Q3BwVHlwZURlZmluaXRpb24= IEJyb254 IGdhdGhlcmluZ3M= ICcnDQo= cG9zdERhdGE= IEZyYW0= Q2xpcGJvYXJk IFhQYXRo cmF5cw== IGJha2VyeQ== IHJvd0NvdW50 IGxvd3M= YW5kV2hlcmU= X3ZlcnNpb25z IEd1bm4= IHdlZXI= IGNvbnRleHR1YWw= IEtleUNvZGU= IFNhc2thdGNoZXdhbg== IFBoaWxseQ== IE1vdXRo IGRvUG9zdA== IHBlcmNlbnRpbGU= IGJ1ZmZlclNpemU= KGZyZXE= JHNtYXJ0eQ== aWVydGU= aXNzYW50 X2Zwcw== IGludGltYWN5 X2Jvb2tpbmc= IGRlY29tcG9zaXRpb24= dW5pY2lwaW8= IE5TSW5kZXhQYXRo IEtS IHR1cmJpbmU= LXByb20= X0NBUlQ= KGNvb3Jkcw== ZWNvbQ== IGNvd2FyZA== IHdheXBvaW50 LUNvbGE= IHByb2ZvdW5kbHk= IEVSUA== Ym91bmRhcnk= IHBvb3Jlcg== L2V4YW1wbGU= IHJlbmNvbnRy IG5pY2Vy 54E= LWNoYWlu IEVudGl0eVN0YXRl IGdyYWRpbmc= QUxJR04= IFBpY2tz LmFr LXZlY3Rvcg== IEVudHJpZXM= IFNlcmdpbw== ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq T0RC IOW9 IGNvcm9uYXJ5 IHNoYXZlZA== IGFxdWU= ZW1wbG95ZXI= IHBhcmNo IG1lYXN1cmFibGU= IGJvaXM= am9pbmluZw== IHZvbGNhbm8= Ok0= LnRocmVzaG9sZA== IERveWxl dmVyYm9zaXR5 IOKWug== IHNwb3VzZXM= IHJlc3VtZXM= TmF0 ek0= X0VuYWJsZQ== IFVTRUQ= IENhcmV5 CWZw UGF0cmljaw== IE9zdw== UG9zc2libGU= LmxlYWRpbmc= YWhydW5n 4pmqCgo= CQkJCQkJCQkJIA== 44CC44CM LmFkZEVkZ2U= IGVjeA== J0xCTA== IFRDTA== IGJpcnRocw== IHRoZWF0cmljYWw= IHBpag== Z3JlYXRlcg== IEZTdHJpbmc= QkVE 7ZmY LkNhc3Q= Q1g= L01haW4= cGVhdGVy IHBlcnN1YXNpdmU= Y29udG8= eGxzeA== X0FCUw== IEJ1bg== bWFuYWdlZFR5cGU= 0LPQvg== IFNjYWxh cmFkb3I= IHJlY29nbml6YWJsZQ== dHJ1 IHRq XE1hcHBpbmc= X0JPQVJE IHRvSnNvbg== IGJvd2Vs KWQ= J30p KGhXbmQ= aHJz Y2FudA== X18oKQoK IGludGVycm9nYXRpb24= bGljYXRpdmU= CQkJCgo= IFR3aW5z IEFP QmlyZA== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGVyaGFwcw== b2ZpbGU= IHBlbmM= IHRyZWVOb2Rl IHRvcGljYWw= LXByaXZhdGU= 54m5 IERpc2N1c3M= IGRlc24= UnVh LlZFUlRJQ0FM 44CN44Go SUZPUk0= IGNvdXJ0eWFyZA== INGB0LXRgA== ICMjIwo= IGVtcG93ZXJpbmc= IEZhY2lsaXRpZXM= XCIsXA== vZQ= Ok9iamVjdA== IFZvdGVz aXNlbA== IGV1Y2g= b3JzdA== KENsb25l LmNvb2tpZXM= JHRtcA== KGluZGljZXM= ZXJnZW5jeQ== IHBsYWd1ZWQ= IERpYQ== eWNsaWM= fSkp 6rK9 IGR1ZWw= IGhldGVyb3NleHVhbA== LmFkZENvbXBvbmVudA== U0VDUkVU bGVybw== Y29uc3RyYWludHM= IGdldENvbm5lY3Rpb24= IExlYmVucw== IFBvbg== IENocm9uaWNsZXM= ICAgICAgICAgICAgICAgICAgICAgICAgDQo= IE1vdXJpbmhv IG9jY3VwYW5jeQ== X3NsYXZl T1JJWkVE CVk= LmhpZ2hsaWdodA== X3NlbnNpdGl2ZQ== IHNwZWN0cm8= LmVuY3J5cHQ= IHNwb2lsZXJz LlNpemVNb2Rl IHByb2Zlc3Npb25hbGlzbQ== Pklu RXhwaXJlcw== QXU= IEhWQUM= cmVsYXRpb25z IEFUSw== X0dFTkVSQUw= IFNpZ2h0 IGtpdGNoZW5z OlJlZ2lzdGVy IGVkbQ== IHRvbGVyYXRlZA== IFNFU1NJT04= aWVyeg== IElOU1Q= LnBhdGhz IHBlcnBldHJhdG9ycw== ZWJw cGVjdGluZw== ZWR1Y2F0ZWQ= IFBpb25lZXI= X1JFVg== IGJ1c3R5 c3RhdHVzZXM= UmVzcG9uZA== c2h1ZmZsZQ== IFRpbmRlcg== RXhhY3RseQ== aWxsaXNlY29uZA== INC30L3QsNGH0LXQvdC40LU= KEFjY291bnQ= LiY= aXpy YXNzdW1pbmc= CU9wdGlvbmFs U2VuaGE= IGVucm9s dHVy IGFycm9nYW50 IEpPYmplY3Q= b2xpdGhpYw== bWFwcGVk IHRpcHBlZA== LlVQREFURQ== w6htZXM= R05VQw== V1g= IG1vbmtz LmJvcmRlcldpZHRo IFNodXRkb3du IEhhcm1vbnk= Y2xhc3NpZmljYXRpb24= IGRlcXVldWVSZXVzYWJsZUNlbGw= IF07DQo= Lkdlbg== IGxhdm9ybw== IExlb25hcmRv ICYp IGRlcG9pcw== IFZvbHQ= RXRo IExlb25l IE5lZGVybGFuZA== IEVYVFJB UmVzb2x2ZWQ= IHBlbmluc3VsYQ== X1ZN R2Vy 2KfYrw== LnByb21wdA== LmFsaWdu aW5nZ2E= ZmlsbXM= SEFORExF IGNhcnRz KFNvbWU= PEF1ZGlv IGVubGFyZ2VtZW50 IGdyb2Nlcmllcw== LWhvbGRlcg== IGlycml0YXRpb24= Q29tbXVuaWNhdGlvbg== IHByaW1hcmllcw== aHR1Yg== X2luaWNpbw== IGNvb3JkaW5hdGluZw== KHF1 IGZhaXM= IHZpc3Rv Z3VpZGVk IHZsYW4= IGVzcHJlc3Nv w6h0ZQ== c2VoZW4= X3Blbmc= IHJvb2Zpbmc= IEFsaXZl QXhpc1NpemU= IHN0dW4= IHJlc3RlZA== dWxsZXRz IE1hbGF5c2lhbg== LFVuaXR5RW5naW5l IGVudnk= J107DQoNCg== IE9zdA== X2p1bXA= IGNvbnRyYXNlw7Fh Ing= CVBhZ2U= KVsi IFNJUA== IEdlb2dyYXBoaWM= IGNhdWN1cw== X1RFUg== 4oCdOw== UG9zdEV4ZWN1dGU= aW1zaG93 IENPTVBBTlk= IE5lYWw= IEhlYXJpbmc= KGFjdG9y Qmlk LlBS LlByb2R1Y3Rz IEVtbQ== IOab IHB1bHNlcw== X0VW L2V4cA== X21vdGlvbg== IGdiYw== IG5hdmlnYXRpb25Db250cm9sbGVy IENvdXJ0cw== IEljb25EYXRh d3U= X3Jm IFJhZ2U= LWZsYXQ= IEhpbXNlbGY= X2NodW5rcw== IG92ZXJzaA== IGNpZg== KElz cGVha2Vy IENQVXM= aXJlY3Rvcg== LHRpdGxl LnNldERlc2NyaXB0aW9u IGVhcnRocXVha2Vz IHdu Z2x5cGg= dWx1bWk= IHNwZWVkeQ== IGVzcGFjaW8= IGVtdWxhdGU= IFwiJA== X0lORg== Y2FsbG9j LXF1ZXJ5 KHZhbHM= IHNlYWI= IGhhdm9j IEludGVyc3RhdGU= IHRyaWFuZ3VsYXI= YmluZGluZ3M= CQkJCQkgICAgIA== IAkg YmNyeXB0 IGNyZWRpdG9ycw== IHNlbWlm bGxl aWVuemE= IEtlbGxlcg== IG1vbnN0cg== IE1hcmNvcw== KHJlaW50ZXJwcmV0 IGhpdmU= U2Ny X2hyZXN1bHQ= IOyhsA== IFNxbERhdGFSZWFkZXI= YW5ub3VuY2U= X3ByZWZlcmVuY2Vz IHRydXN0cw== RXJvdA== LXdvcmtlcg== IHR3ZWVu IFN0cmVldHM= gq3soJw= IEZyYW56 IOKApi4= VUlUZXh0RmllbGQ= LmdldEl0ZW1z IHRvbHVh 4oCcT3Vy IHPhu5E= IHZpcnR1ZXM= IHBvdWx0cnk= PXJvdw== Y29kZWQ= Tm9TdWNo IGtvZA== bHNp IGtldG8= IGdyb3VwTmFtZQ== YXNu IHVuY29tcA== IHRleHRpbGU= dG9vbFN0cmlw LlBvcGVu IHByb3N0aXR1dGU= IHByb21vdGVy Ijt9Cg== IGNvbGxpZGVy QnJva2Vy ZGF0YXNldHM= CU5TU3RyaW5n YW5nbGVy UklFUw== YXRvbXM= IHJlbmRleg== YXBv IOuE Lmdj IFNPTUU= IGZnZXRz R0xF IHphbA== IE9wcG9zaXRpb24= aGFuZGxlU3VibWl0 X21hdGg= IHNwcmU= IHNob3J0ZW5lZA== IGNhdmVz U01T LWNvbnNjaW91cw== IFNhdmVz LkJhY2tncm91bmRJbWFnZUxheW91dA== IGVsZWN0cm9tYWduZXRpYw== KGl0ZXJhdG9y IHVuYmU= amVjdG9yaWVz IG1lZGlhbnRl IMOubnQ= Iiwt IEFTTQ== 6K6w5b2V IGNvbmZpbmVtZW50 4oCmCgoK RXhjZXB0aW9ucw== LW1ham9y IFZhbmlsbGE= IExPQ0FUSU9O IGVsdXNpdmU= VUFSSU8= IElOTElORQ== IHByb2R1Y3ROYW1l X3F1ZXJpZXM= Li4uIjsK IFhpYW8= V2luZG93VGl0bGU= bGV0dGVz IHBlcnBldHVhbA== U2V2ZXJpdHk= IEFjaGlldmVtZW50 w6JuY2lh IHJlbWluZGVycw== c29ydGFibGU= IGFmZm9yZGVk IGluZmx1ZW5jaW5n IFR1bm5lbA== LmxlYXJuaW5n IFF1w6k= cGhldGFtaW5l LkJBRA== Lm1ldGFtb2RlbA== LWRldmljZQ== IEtvbnRha3Q= 4pSB4pSB LXN1bW1hcnk= KCc8Pw== KTw9 IHdpc2VseQ== X290 Om1vZGVs IFVX IE9wZW5TU0w= IEpwYVJlcG9zaXRvcnk= Q29uZXhpb24= VE9U LmNyZWF0ZWRBdA== KHRyYWluaW5n IGJpc2hvcHM= IHZlbnR1cmVz LkVucXVldWU= IFRoZXJtYWw= IEJyZXdlcnk= b3Rlbg== IEZhdGFs X3N1cHBseQ== IGNvbmRpdGlvbmVk IHN1cGVyaW9yaXR5 IElicmFoaW0= IGNvcnBv dW91c2x5 IFByYWN0aWNhbA== Ly9b IEFmcmljYW5z IEJhaHJhaW4= IHN0ZXJpbA== IENsYXNzTm90Rm91bmRFeGNlcHRpb24= LlJlZ2lvbg== IHRyYW5zaXRpb25hbA== IGludGVycHJldGluZw== LlNvdW5k IGZyb250YWw= IGhhcnZlc3Rpbmc= fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4= YXRhaXJl Lkh0dHBTdGF0dXM= S00= IEVyb3Rpc2NoZQ== IGVyb3Rpc2tl RmlnaHQ= UGFja2FnZU5hbWU= IENBQ0hF d2luZ0NvbnN0YW50cw== IFppbW1lcm1hbg== L2Nhcg== IFF1cmFu TWV0YWw= IHVzZXJNYW5hZ2Vy IG1hc3Rlcnk= KFVVSUQ= IHZpZXdXaWxsQXBwZWFy IHN1bW1lZA== KC0o ICAgICAgIAoK VGFrZW4= IGNsb2Nrd2lzZQ== IENhZsOp KGxldHRlcg== IENyb3NzUmVm IEFzdG9u IEFzc2VtYmx5VmVyc2lvbg== 6Z2e bnRz ICQoJ1s= X1JBVElP aWNpZW50ZQ== IHJpY2h0aWc= IHBlZGln KGl4 0YHRi9C7 QXNzaWduYWJsZUZyb20= Ym91bmRlZA== IGFsa2Fs X3ByaWNlcw== IGfFgg== YW5jaGlzZQ== X3JlY2VpdmVy SUdBVElPTg== X3B1bGw= IFN0YXRpc3RpY2Fs X3Rvb2xiYXI= YW1pZGU= IEFzeW5jVGFzaw== cmV0YQ== IOyi IFJFQUxMWQ== IGJ1cnN0cw== IElucXVpcnk= IGJpZ290 c2FuaXRpemU= IEhvbWVy UXXDqQ== IFJvdXRpbmc= LmNvbGxlY3Rpb25WaWV3 IEJpbGxpb24= U1RSVUNUT1I= LmVqYg== IGVuY2g= LnNldFRpbWVvdXQ= UnVi LXJvYWQ= Lm91dHB1dHM= Y29udGVzdA== IHNwaGVyZXM= IHJlc3VycmVjdA== Ii4i IElyaXM= IOya IFhL IFJhcml0eQ== IElTZXJ2aWNl YXRoYQ== IOWH IHByZXZhaWw= CXBw Lkxv Z2V0V2lkdGg= IHd3 IHdpY2h0aWc= QEdldHRlcg== IEpheXM= IHNwZWN1bGF0aXZl KGF0dA== IHRlZGlvdXM= IHNjcmF0Y2hlcw== IHBlbMOtY3Vs IGJvcm91Z2g= IG3Dsw== UmVwcmVzZW50 YXRvcml1bQ== KENhbWVyYQ== IGNvbHVtbk5hbWU= IHJlaXRlcmF0ZWQ= IENhc3Rpbmc= LmdldEhlYWRlcg== IOKAnFs= IEp1aWNl Y2h1 LkhUTUw= IEFudHdvcnQ= R0x1aW50 CUl0ZXJhdG9y IEFOQUw= IHVucG9wdWxhcg== KExvY2FsZQ== IG1pdGlnYXRpb24= IGFkcmVz 4bq3 fSx7Cg== IFNjaHdhcg== X1BBSVI= PigpLAo= b3V2 IEFsZg== eEVG 55yB IGVzY3Jp TE9VUg== U0VMRg== IFRtYXg= VHJl bG90cw== ICguLi4p XSsk IGFtZXJpYw== L3JlZmVyZW5jZQ== IE9keXNzZXk= IE1pbmVz IGFnb3Jh IHByb3BoZWN5 IE9wcG9ydHVuaXRpZXM= cHJvZmVzc2lvbmFs KHByb3h5 cGhhbnVtZXJpYw== IEVkaXRlZA== b2xvZ25h LmlzT3Blbg== KHZlcnRpY2Vz IFJpY2t5 X292ZXJsYXA= Pjs= LkRPTQ== e31f IENPTVBVVA== cmVkaXJlY3RUbw== IHNoYWtlbg== IHJhdGlvbg== IG5lbGw= X2Jj IE5lcg== YW5kUmV0dXJu IGVyZWN0ZWQ= Q2hpZWY= IGRpbmVybw== IGphc21pbmU= LS0tLS0tLS0tLS0tLQo= ZmFybQ== IEhhdGU= VEFTSw== QU5ORVI= J11dXQo= IE5pZ2Vs aGliaXQ= IFFUZXh0 Lkxlbg== IHRlxbw= c2xpZGVz ZmVsdA== IFJFVg== X2hvbGQ= IENvdXBsZQ== ZXNjYXBlZA== LWV4cG9ydA== Pkk= ZXdpc2g= KEFwaQ== ICghWw== Tm91cw== T1RPUg== IHNlYWxpbmc= V2ll IGthbm5zdA== K3htbA== IG14QXJyYXk= IGFkbWlyYXRpb24= Lm5i IGpld2Vs LlRlYW0= IHByb3NlY3V0ZQ== LnhtbGJlYW5z Y2h3 KGJhY2tncm91bmQ= IEF2aXY= CWZpbGw= IGRpc3Bhcml0eQ== 4Lo= X0FQUEVORA== IFB2UA== 44OQ IFZpdmU= IGdyYW5kc29u LmFkZEVsZW1lbnQ= QXRvbWlj IHByaW1hcnlLZXk= IGNvbnRpbmVudHM= IEZ1Y2tpbmc= JScK QG1haWw= IGN1bHR1cmFsbHk= YW5nYW5lc2U= 7KCE Zm9sbG93ZXJz IHVybg== IHJhY2tz IFNBRkU= Ly8NCg0K KCIvew== X0lOSVRJQUw= X1Jlc3BvbnNl RXZlbnREYXRh Jz4k c3RhcnRz 4Kk= IHRoYWltYXNzYWdl IHNwZWNpYWxpemF0aW9u IOyEpOyglQ== ZWRv IGNvbXBlbnNhdGVk X2NoYXJzZXQ= fS57 L2VudGl0aWVz X2Zr LS0tLS0tCgo= YXNjYXI= IGNlbGxGb3JSb3dBdEluZGV4UGF0aA== IFByb3Bvc2Fs IE90dG8= IF9fX19f ICIqIg== IHRvb2xraXQ= IGV4cGVjdGFuY3k= RG93bkxpc3Q= LWRh IHByb3ZvY2F0aXZl IG1laW8= ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== KCgpPT57Cg== JGxpbms= aW5jYXJl IGljeQ== IEhpc3Q= QWNjZXB0ZWQ= IGNsb25lcw== IFFB IGNvbmZvcnQ= IHByb3ByaW8= IFZvZw== KG1hcms= X1NlYXJjaA== IGVuZHdoaWxl ICQj 44GX44GL X0xU SW5zdGFuY2VJZA== YmFyZA== cm5l cmVnb3I= IG5vcmdl XDo= 0YDRg9C3 LmJ0bkFkZA== IHBpbGxvd3M= IFBhcmFtZXRlckRpcmVjdGlvbg== SGFuZGxlcw== IGRlYWxpbmdz IGNvbnZleA== IENoYXJpdHk= Lk51bWVyaWNVcERvd24= IFNrZWxldG9u IFp1Y2tlcmJlcmc= ZXNlbg== IEZBQQ== X3N0ZQ== IGh1bWlk am0= Y2hn LmdldExvY2Fs IHRhbmRlbQ== aXN0bGVz X210 LmFjY291bnRz IEluc3BlY3Rpb24= IEZyYXVk IGvDvA== IHN5bmNocm9ub3Vz IFJpY2FyZG8= IEh1ZQ== IENvbm5lY3Rpb25z SU1FTlQ= b2NoYXN0aWM= XGRhdGE= IEVudGVycHJpc2Vz LXNpbXBsZQ== IGltYWdlRGF0YQ== IFVtYg== LXNjcmlwdA== L2dlbmVyYWw= QVBU IFR1dA== aW1pemF0aW9u IGlkYWRl IEtlbQ== ZWxzaWY= LkFMSUdO IFRvcmllcw== IEJhc2ls b2dvbmFs aGFjaw== TnVsbE9yRW1wdHk= IiksCgo= 44OD44OI ICclJw== X1JG ZWdvdA== LmFzcGVjdA== KFByb2plY3Q= TEVOR1RI cGxlbWVudGFyeQ== X3ByZWRz IEhvbGRz Y2Fycmllcg== CWxheWVy QXR0YWNoZWQ= LXByZXNpZGVudA== aW5kaA== J10uJyI= LkFDQ0VTUw== IENFTlRFUg== UXVhbGlmaWVk IG9zdHI= LlN5bWJvbA== dGFodW4= IExBTkc= X2J1c2luZXNz CVN0YXJ0 ZXJyZQ== IGFzaGVz IEFkdmVydGlzZW1lbnQ= Lkhvdw== IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IG9ibGl2 IGJsZWVk IHN2bw== Lm5vZGVOYW1l IGl0ZW1OYW1l IEJBTks= w61jdWxvcw== IEVtbXk= IERvbWluaWNhbg== JylbJw== IHJlYWxsb2M= dWxzZXM= 6L6T5Ye6 IE9mZmVyaW5n 64ql LXByb2dyYW0= INGB0L7QvtCx0Yk= TU9W IG5vZGVJZA== 0LXQvw== Zmx1aWQ= IHRlYXNl w7hyZQ== IGNvbXJhZGVz IHVucmVsaWFibGU= IHBvc3RJZA== Z2V0SUQ= b2dyYXBocw== VGFuaw== IFFWRVJJRlk= IGZsb2F0ZWQ= X1RISVM= Y2ltaWVudG8= IE5pY2Fy c2hy Qm91bmRpbmdCb3g= IGlub3JkZXI= IEdsb3Nz V2l0aFRpdGxl dW5jaW8= IHBlcnNpc3Rz IGRpcmVjdHM= YWNjacOzbg== U2FtcGxlcg== IGJsYWNrbGlzdA== IGFEZWNvZGVy IGludm9rZXM= X3NraW4= Pklm dHJ1bmNhdGU= LlNpbg== c29vbg== IGRpc2Zy CVZlYw== IyNf LnNjaG9vbA== IGJsaW5kcw== IGFjYWI= IHBhdGhldGlj IHZvbGNhbmlj IHJkZg== IGN1bHRpdmF0ZWQ= IFVJTmF2aWdhdGlvbkNvbnRyb2xsZXI= IGlwdA== IGdsYW5k IGV2aWRlbnRseQ== UGh5cw== IHN3YW1w IGltYWdlTmFtZQ== LkxheWVy dWZl LFsn IENyaW1zb24= 6YCg PGZvb3Rlcg== IGJpa2luZw== INC00LDQvdC90YvQtQ== bW92ZXM= Y3Jj aWxsYXRpb24= IGxhdXJl 0YDQsNCx0L7Rgg== 0YPQug== IENhaW4= IHB5cw== IGNvbGxpZGU= IHxffA== KHNwYW4= IGdpbmc= IG9iZWRpZW5jZQ== b3V0ZXJz U29vbg== IFdoaXRuZXk= IEltcG9ydHM= OlVJVGFibGVWaWV3 KiY= IGJr V2l0aEVycm9y LWV4dA== X1JET05MWQ== X3RyYWNraW5n bm9vcGVuZXI= w7xucw== IEd0a1dpZGdldA== c2ti U0FWRQ== T2Jz KCcuJylb IGF1dGhvcmVk LS8= TG91aXM= LmdldE91dHB1dFN0cmVhbQ== IGdlbmVyYWxpemVk 7Yw= IGFydGlzYW4= KGNwcw== IERtaXQ= 0LvQuNGG LkltYWdlTGF5b3V0 IHN1Y2hlbg== XX0s LmNvbGxpZGVy VGFiUGFnZQ== XT1b aHlkcm8= X3N0cmlw IGxpY2tpbmc= IGJvb3N0cw== IHNrZXB0aWNpc20= IGpvZ28= IGNvbXBldGVk IOuCtA== Tm9kZVR5cGU= WEY= IHBvc3NpYmlsaXQ= LWNvcHk= IHRyaXR1cg== IEF0dGFja3M= IG7Dqw== SURBRA== b2dyYXBoaWVz VGltZVN0YW1w b3R5cGluZw== LUFwcg== INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjw== ICI7Ig== IEhhbGU= L2FwaXM= IDpdCg== X2hkbA== IERpYWw= CUNvbmZpZw== X0ZSQUdNRU5U X0VkaXQ= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq IGNhbmRpZGFjeQ== IENvbXByZXNzaW9u X2xvc3Nlcw== Kj4oJg== SW50ZWdyYWw= IHBhcm9keQ== IGluaXRpYWxpc2U= ZmlsbHM= IGFsdHJp X0VMRU1FTlRT YWRhc3RyYXI= Y29ycmVv IHdhdHQ= X0RSVg== IEZvcmdvdA== IGdldENvbnRleHQ= IHNob3J0YWdlcw== IE9DVA== d2VldGFsZXJ0 IE9wZW5z Kmw= IEtpdHR5 4oCZw6l0 IFBpY2Fzc28= LnRvQnl0ZUFycmF5 0L7Qu9GD0Yc= IERFTg== 5aeT5ZCN V2ludGVy YW50YW4= X19b UHJpbQ== IHJvb2Z0b3A= IEJpbGxib2FyZA== dGVzdENhc2U= cHJvZHV0bw== LXRodW1i IHJlc2V0cw== Z2Vibg== PkVycm9y LmRlcGFydG1lbnQ= IGVhcnJpbmdz IENhcm91c2Vs KGV4YW1wbGU= CWVt XENvbnRhaW5lcg== IEVsdmlz IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= RW5nbGFuZA== Y3JlZGl0ZWQ= X2NvbnN0cnVjdG9y IGxvcg== IERhd3Nvbg== QnVybg== IEJyaWdhZGU= IE11dGV4 IFRyYW5zaXRpb25hbA== IE1vdXNlRXZlbnQ= Z3Jvdw== Lm1pbnV0ZQ== IEdNTw== PVtdLA== IHN1c2hp IGFlc3RoZXRpY3M= T0NVUw== IFNFTEY= IEFzc2VydGlvbkVycm9y IE1DVQ== IGhpbnRUZXh0 IHNlYXc= bmdsZQ== IGV4cGVsbGVk UFJPUEVSVFk= KS48Lw== LW9wZXJhdGlvbg== IEltbXVu IGxpY2Vucw== aWJpYQ== IGJpZXRlbg== IGdyaXBz Q0hBTk5FTA== X0VSUk9SUw== X3JlY3Vyc2l2ZQ== VWx0aW1hdGVseQ== IE1hamVzdHk= IGRlYWN0aXZhdGU= IEVYQU1QTEU= dWNpb25lcw== IGN1cnJlbnRWYWx1ZQ== IGV2YWx1YXRlcw== L0dyYXBoaWNz InRleHQ= X3BhbGV0dGU= IFRNUA== IEJlZHM= LkNvcw== 4Lix4LiZ PXRvcmNo IFBBQ0tBR0U= aWxsYXJk LmNw leyduA== LWFwcHJvdmVk IE5vcnRod2VzdGVybg== PHRleHRhcmVh IENvbXBhdGlibGU= X1JEV1I= LlF1YW50aXR5 QElk X29yaWVudGF0aW9u Z2V0VXJs IHRyYW5zbGF0aW5n IFdlYXZlcg== IGpzb25BcnJheQ== IGVtYmxlbQ== LklzTnVsbA== IENoYXJ0cw== W119 Z2Fl X25lc3RlZA== dGVtcHM= cGF0aG5hbWU= Q1c= LXdyaXR0ZW4= IFBBUks= KGNvbmQ= X2FsYXJt IGdlcmU= IEdpeg== IE5nYg== IC5f YXBwaW5lc3M= IERlcGxveW1lbnQ= aVBhZA== Il1d IHN0cnN0cg== IHRvbnVtYmVy KGRs CXdvcmQ= W3Rv X0ZJWEVE RXhwaXJhdGlvbg== OnJldHVybg== T250 PlBsZWFzZQ== Z2V0VGl0bGU= LnNwbGl0ZXh0 Y29tYmluZWQ= T2Q= IG5vdmVsdHk= IlM= IHN2bQ== Q292ZXJhZ2U= IEh1dA== IHJlc2lzdGVk IGVsbG8= IG3DtmNodGU= S2F5 Lmxpa2U= Y2Npb25l IHJlc2VtYmw= RGVhdGhz IGVwaXQ= KHJnYg== LkNsYXNzZXM= INC00L7RgdGC Y2FwdHVyZXM= XStc YW1pZW50 IFBhc28= LlNlbmRNZXNzYWdl IFJlbmF1bHQ= IE5hcmVuZHJh dG91dA== IGhhZGRl IFR3ZWVu w6VkZQ== IG91dGZpZWxk Lz48Lw== QFw= IER1cmFudA== IGFicmU= X3N0b3J5 IHBlcmZ1bWU= Q3BwVHlwZURlZmluaXRpb25TaXplcw== INC/0LDRgNCw0LzQtdGC Y2hlbWVz IFNhZGRhbQ== cHJlbm9t dXNwZW5kZWQ= IEJlbmVmaXQ= IHNjZXB0 X01vdmU= IE5hag== LU9u cnVk SW1hZ2VQYXRo wq4s IGFuYWx5c2Vk IE9H ZWxsZWljaHQ= YmlyZHM= ZWt0ZQ== IEFsaXNvbg== IGF0aGVpc3Q= eyU= YWJo LXBob3Rv aW5zdHJ1bWVudA== IGhpbnRlZA== IE9mZmxpbmU= KSIpOwoK X1BSRUY= IHN0eWxpc3Q= IEt1YmVybmV0ZXM= IGZlcnY= CgoKCgoKCgoKCgoKCgo= KCI9Ig== LmdldE0= IG5vdGV3b3J0aHk= IHNjb3V0aW5n X3RyYW5zbGF0ZQ== IGJlZ2lubmluZ3M= IEx1bw== IHFs X2FsaWduZWQ= IGVydw== dWFycw== X1BhdGg= LicuJA== IGhvYw== IGRlcnA= bG9p IE1jS2lu 6K+05piO Lz0= TGlua0lk c3RkZGVm cmVkdWNlcnM= aXNhbnM= Lmhpc3Q= Jy8+Cg== IFRveGlj IGRpc2FwcGVhcmluZw== IGNpcw== KGRv IG1haW5TY3JlZW4= X0JBTks= IGRlbW9uc3RyYXRvcnM= IFBhbGV0dGU= dWVseQ== UmFyZQ== IHJlc2lkaW5n IGFtYmllbnRl IG1pc20= LXF1ZXN0aW9u IG9wcHJlc3NlZA== IGxldHJh PGR5bmFtaWM= IEZvdG9z LXBvbGljeQ== aXN0ZW0= LmV4Y2hhbmdl c3RyZQ== JC8s 7ZWY6riw JAoK IFJlbmU= IHRvdXRlZA== LUNvcmU= IENyYW4= IFRyYWRlcg== IGRldw== IGZsYXA= CWZpbGVuYW1l IGlubWF0ZQ== KE1vY2s= IFNvYg== aXNibg== IG5vZQ== IEZvcmJpZGRlbg== IGVsZXM= IGRpbmc= X3Nh KSovCg== YXJpZQ== IFN1cHBvcnRz IG1vZHVsYXRpb24= IGVuc2w= IFNoYWRvd3M= cHJpbmNpcGFs YW5nZW50 LUphbg== IFBhbnRz LHRy IGZpdHRl IGdhcm1lbnRz TWFyZ2lucw== TFRS IE1peQ== dmVudHVz IE3DtmdsaWNo W2F0dHI= L3Jlc3BvbmQ= IHR0aw== IG9sZHXEnw== IENvbnNl UHJlbWl1bQ== IGZyYW5jYWlzZQ== X2hvcml6b250YWw= X2li IEZhcmU= IGhhcnZlc3RlZA== ZW5kaXI= KGhpdA== PiovCg== IElSZXBvc2l0b3J5 eWxpZQ== IGRldGVjdHM= Om5v 4pi0 IGRpc2XDsQ== IHVuc2VyZW4= IG1vY2tpbmc= c291dGg= cmF0ZXM= IGh5cG9j IFNob3J0bHk= IEJsYWNrcw== 0YLQuNGA0L7Qsg== IEFTQVA= cmViYmU= aWVj LkFkZERheXM= IGVwaXM= LWluZmxhbW1hdG9yeQ== LW5ldA== IHBhbGw= 65Q= IGlzc3VhbmNl IGNvbnRlbnRpb3Vz LkFyZWFz 0LjQu9GM IGNvbnRpZ3VvdXM= W2FjdGlvbg== IGV4cHJlcw== ISIpCgo= VUxP IHdyZQ== IHN1YmRpdg== IHR1cm5hcm91bmQ= IGFjY2Vs IFVuaXY= IFVuaXZlcnNpZGFk c2V0dA== ZGVzY3I= LkdlbmVyYXRpb24= IHBhdHJpb3Q= IGZhcw== KioqKgo= UVA= IOWN b3BwZWw= IGp1ZWdvcw== LmRyYXdTdHJpbmc= LWNvbmZpcm0= CSAgICAgICAgICAgICA= PFByb3Bz IGZhbWlsbGU= IEhlbG1ldA== ZXJ0aWFyeQ== YXRoaQ== IGN1bHRpdmF0ZQ== IGR1cGxpY2F0aW9u IHNweU9u Ki8pCg== IEh1bmdlcg== T3J0aA== IHBpbnBvaW50 IEhhZw== IHRpbWV0YWJsZQ== bWFyZ2luVG9w IHJlY2lwcm8= ZmVsbA== IFBlcnNpc3RlbnQ= 44Gp cGx1cmFs cXVldWVk IGdyYWNpYXM= w6F0aWNv IGhhcmRzaGlw IEFwYXJ0bWVudHM= IEp1bms= IFJldmU= X01zaw== IHN1cHJh IEFUUA== IHNldFNob3c= 5a2X56ym5Liy IE5vdHRpbmdoYW0= U3RldmVu IE11bmQ= cmFuZ2Vz IHVwbG9hZHM= IGJmcw== cHo= dWx0aW1hdGU= IEVmZmljaWVuY3k= QU1J 5b6E X1JFUEVBVA== IGFjYWRlbWlh LnRvb2xTdHJpcEJ1dHRvbg== VG9FbmQ= cnZpbmU= IFRoeQ== IEVsZWN0b3JhbA== IFJFUVVJUkVE IHBsdW5nZQ== IFJldm9sdXRpb25hcnk= IFRlbnQ= IGdyZW5hZGU= IjpbeyI= IG1vdXI= UG93 IGV2YW5nZWxpY2Fs VEVDVEVE IG92ZXJ0dXJu CUlucHV0 cmVjb21tZW5k JUM= IHNsYWc= IEJoYXI= X2VuY3J5cHQ= IFdhcmZhcmU= KGFnZQ== QVRFR09SSUVT bWlsZQ== IGhlYXZlbmx5 YW1tZXI= KCkpWw== YWRlcmE= aGc= IExBVw== IHBhY2thZ2VOYW1l X3R5cGVEZWZpbml0aW9u KGJl REJOdWxs X3Rhcg== IGhldXJpc3RpYw== IFdhbnRlZA== IFN0dWI= IGtpdHQ= UkVD IHBhc2Fy Lm5ld0J1aWxkZXI= CWdyYXBo aW9zYQ== LmNvbHVtbkhlYWRlcg== IHNldE9wZW4= IFRoaXJ0eQ== ICIlLg== QWxiZXJ0 IHNhbWE= IHJvY2tpbmc= Q29tcGxl TVY= fCgpCg== X3JlYWRz KHZhcmFyZ2lu b3Vsb3VzZQ== IFNJTUQ= IGNhcmJvaHlkcmF0ZQ== d2hvbGU= LE5vbmU= i+ivlQ== IENoYW5k Y3phcw== X3F1ZXJ5c2V0 IGV4aXN0ZW50aWFs IGVkaWJsZQ== IGFnaWxpdHk= IFdpbGxpcw== IGh5bQ== IEJyaWxs 0LjRhQ== IE5vdEZvdW5kRXhjZXB0aW9u ICgoKQ== QVBTSE9U IHN1YnN0YW50aXZl X3R5cGVEZWZpbml0aW9uU2l6ZQ== IHZhY2FuY2llcw== RU5HSU5F IGFuZGVycw== IHN5bWI= IGV0cmVl KS5f IHRyYW5zcG9ydGluZw== aW1wcw== L2NvcA== YWN0YWJsZQ== X2ZsdXg= IG5ld0luc3RhbmNl YXRvaXJl IGNvbHVtbkluZGV4 IEdpbw== IHN1YnRpdGxlcw== LldpbkZvcm1z 0LvRj9C10Lw= IGFsZXJ0ZWQ= IHN0cmlwcGluZw== d2VuZHVuZw== IE1ldGhvZEludm9jYXRpb24= RXJyb3JIYW5kbGVy U2Nyb2xsYmFy UG9ydGZvbGlv Y29uc3Vt IENPTU1PTg== TGY= X2Jhc2Vk b2NhbHk= IGVmZmV0 dnZt cmlwc2k= IGZsb3VyaXNo Y2h0ZXI= PT09PT09PT09Cg== IHJlcXVlcg== LnF1ZXN0aW9ucw== KCI/ IHBvc1g= IFBDUg== IE9yZ2FuaXphdGlvbnM= cHLDvA== RXhhbQ== IEluY29ycG9yYXRlZA== X3BocmFzZQ== IHByYXllZA== IGhvbWVvd25lcg== IFRhag== eng= IElkZWFsbHk= X01BQ0hJTkU= IFJlbW92aW5n Q29lZmZpY2llbnQ= IGVkdWNhdGluZw== ID8+Jg== IHBvdXJz aXJhbQ== X3BlYWs= IG5lc3Rpbmc= YWJ5dGU= bmF0dXJl IGFmcw== IFJvbw== Y2FyZ28= b2JqZXQ= IGZyZWVpbmc= cXVha2U= RGVuc2l0eQ== IGRlc2NyaWNhbw== LyoqKioqKioq IGRhc2hlZA== IGdyb8Of b29reQ== IFBFT1BMRQ== X1Bvc3Q= IGNlcnZpY2Fs IEFkanVzdGFibGU= ZW5zdWFs IFJldmlzZWQ= KHJlZmVyZW5jZQ== CUJhc2U= ZXNzaW0= TWFpbnQ= IGdldFNpemU= IFNhbmR3aWNo cmFkaWVudA== c2luaw== Oi8vJw== X3R0 RlBT IEFybWVuaWFu cHJldlN0YXRl X0xJTkVT IHRpZ2h0ZW4= PFs= XTw8Ig== IFRyYWZm IGxpcXVpZHM= IGFyY3M= X0NvbW1hbmQ= QHByb3RvY29s LWlzaA== IHJ1YmJlZA== QkJD L2ZpcmViYXNl QXBwQmFy PFg= IFNJTkdMRQ== LlN0YXR1c0ludGVybmFsU2VydmVyRXJyb3I= IHZlcnRl L3F1ZXJ5 IGdldENvbmZpZw== IERpcmVjdFg= cGh5c2ljcw== eWNvcA== IGJyZWFrZXI= LXZvbHVtZQ== ZGF0YVRhYmxl 4oCZZQ== cmlvdHQ= IEV0ZXJuYWw= Z2V0SGVpZ2h0 IG9uSXRlbUNsaWNr IHF1YXRlcm5pb24= IGtpbmt5 ZGVzZXJpYWxpemU= KFNwcmluZw== IHBlYWNlZnVsbHk= X0RldmljZQ== KE1hdHJpeA== acOocmVtZW50 KHR5cA== LnZhYWRpbg== LmdldE1ldGhvZA== IOKAnQoK IHRocmVhZGVk IEZhbW91cw== IEdhbWI= IOyngA== INCk IGZha3Q= IGVjaHQ= X3Vi LkpwYVJlcG9zaXRvcnk= IHVuZ2U= LWVuZGluZw== IENBTUVSQQ== Y3JlZGVudGlhbA== IFBhc3Nwb3J0 CVJUREJH IGV4dHJhZA== LW9yaWdpbg== IHNhY3JpZmljZWQ= IFNjaHVsdHo= IFR1cnRsZQ== LmNlbnRlclg= IHNob3djYXNpbmc= IGJ6dw== eXJv aXNOdWxs LmlzRGlyZWN0b3J5 bWFpbnQ= X2Jp IFNwcmluZ2Vy fSgpCgo= aXNzdWVy LWFybQ== ZXNr bGluaGE= IGtvcnQ= YWphcw== YWxpbms= KEJ1dHRvbg== IFJlc3RvcmF0aW9u IGluY3I= IFpob3U= CSAgICAgICAgCQ== IERpc2NsYWltZXI= IGt2aW5ub3I= IERhcmU= IDwtPg== 6K+m CQkJCQkJCQkJCQo= LkNsYW1w CXNjb3Bl IE11bQ== PDw8PDw8PA== L3t7 X2FydGlzdA== IFJlYWN0aW9u IE5pY2tlbA== X1JlbW92ZQ== KCgoKA== 64yA IGR5bmFzdHk= IFRocm93cw== IENvdWw= X3JuZw== IERvaw== Lmxpc3RWaWV3 IFR1Y3Nvbg== KHRvaw== IFBoaWxpcHBl VG9TaG93 IGRpZXRh IFVsdHI= LlRpY2s= IEdldFR5cGU= aWV0ZQ== IExlYWg= SGFyZHdhcmU= IENvbXByZWhlbnNpdmU= Q09NTU9O IGluZHVzdHJp aXJpY2Fs LWJlZHJvb20= IGd5cm8= INC60L7RgA== IC0vCg== Y291cg== IEJydXNoZXM= TXVsdGlwbGllcg== IHVzZXJkYXRh IFJlY29nbg== IG9ibGlnYXRlZA== IExldmlu YW5jZXN0b3I= IG1lbmluZw== IFVk LGpzb24= KGFzc2lnbg== IG5kYXJyYXk= X2Nvcm5lcg== QEFsbEFyZ3NDb25zdHJ1Y3Rvcg== 6aqM6K+B56CB YWRvcnM= IHJlc3BvbmRlbnQ= R09SSVRI IHRlbmdv IHNldE1lc3NhZ2U= IElQTw== YXJyYXlz IEFHQUlO J1s= ICItLy8= w6Rt 44CCXA== Lm9uY2U= Y3VycmVudFRpbWU= R292 IGdldG9wdA== bWx4 IFRvbmU= J11dOwo= IHByZWRhdG9y V3k= L2VudGl0eQ== IG1hbnRyYQ== KT49 b2dyYWQ= IG1lbGFu IHNvcnRCeQ== IERFRklORQ== UHJvdGVjdGVk Y2RlY2w= Jz4iLiQ= PGN2 Y3JpcmU= LVRydW1w IHVjZmlyc3Q= Y2Fzc2VydA== IGFja25vd2xlZGdlbWVudA== IElOVg== IFVOVQ== LnNxdWFyZXVw IFNheA== cmV0dGU= KCkKCgoK IERhdGFCYXNl IFBhdHJpb3Q= X1Jvdw== IEV4aGliaXRpb24= IGRldGFpbmVlcw== IFN0cmluZ0lP X0RFTg== TW9kaWZpZXJz YXNhcg== aXJ0aW5n IHRyYW5xdWls KGVuYw== IOOCsw== bmNvZGVy X3VudXNlZA== IEJpYW4= VmVyYg== X2V4Y2VycHQ= L2V4cG9ydA== IFNleHQ= RHM= QU1QTA== T2ZTdHJpbmc= X3RyYWNrcw== d2o= b3Rvbmlu IElURQ== SVZFTg== LW9yaWdpbmFs IEZJTkFM X18pCgoK IGVuc2U= IFV0dA== Oioq IFN1cnJleQ== IEthaXNlcg== YWRtaW5pc3RyYXRvcg== LWxhcmdlc3Q= IGxldHp0ZW4= IGNoYWluZWQ= J0g= IGRvY3VtZW50aW5n IExlY3R1cmU= Ukg= b2xsYXBzZWQ= c2tpcnRz ZWxkZXI= IFNpeHRo IGFsbGVnaWFuY2U= SVNPU3RyaW5n VXNhZ2VJZA== LmhhcmR3YXJl IHBhcmk= IHfDpGhyZW5k IHJkcg== IGhqZW0= TE9PUg== IExQQVJBTQ== INC80L7QttC10YI= IGhvbWFnZQ== b3V0c2lkZQ== IENoYXJTZXQ= PEdhbWU= 77yZ X01VVEVY KSkvKA== X3Jlb3JkZXJlZA== dGV4dElucHV0 QU5DRUQ= IFRlZQ== IGNvcm5lcmJhY2s= UXVlcnlTdHJpbmc= IGxvbmdpdHVkaW5hbA== IEhvbGlkYXlz QUJDREVGRw== LktleVByZXNz LnVs eWRybw== IFRhdGU= CXJvdXRlcg== c3BvdHM= IHBhdWw= LXByZXY= IGtub3dpbmdseQ== IEt1cmRz IEV1cm9w LmNlcnQ= QklH KGNvZWZm IENsYXVz L2V4YW1wbGVz IEZhcm1z IC8vKA== U1BBTg== IGNpcmN1cw== IE1JUw== IFRyYWl0cw== LWNsZWFy IHJlZ2ltZW4= IGJhY2tncm91bmRJbWFnZQ== dXNhaGE= X01ldGFkYXRhVXNhZ2VJZA== IHJoZQ== Q2xpbg== IERvbWluaWM= Lm5leHREb3VibGU= KGRldGFpbA== VGhyZWFkUG9vbA== IENhcnBlbnRlcg== c29ydGluZw== IGdvdmVybm9ycw== IHNpbmdlcnM= dW5saW5r IHJpbmdpbmc= IHNjaGVtYXRpYw== IGVycm1zZw== IGJlYg== LiIr IEluY3JlYXNlcw== IkFsbA== IGFjb250ZQ== emlh LlRleHRDaGFuZ2Vk IFRvRG8= LDopOwo= bmFnZQ== Y2hs b3dlbA== IGdlcmFkZQ== X2ZmdA== IGVzdGFtb3M= U1RBUg== IGRpc2d1c3Q= Z3Jhbg== cG9ydHVuaXR5 IGF1dG9iaQ== e317Cg== IENvdXBvbnM= X0dBSU4= IFRDSEFS L3Bhc3M= 55Sx IGZvb3R3ZWFy KGJvdW5kcw== YXB1cw== Y2l0ZQ== Qk9PVA== IENvZGVj bG9ndWU= LXByb3BlcnRpZXM= YXV0b21hdGlvbg== IFNob2U= c3BlY3Q= KG1t IEtldA== W3BhcmFt IGJhc2ls IEFuZ3VsYXJGaXJl IGFkdmVudHVyb3Vz X1VDbGFzcw== IGluZHVsZ2U= CWN1ZGE= IGluc3VsdGluZw== LkV4cHJlc3Npb25z IG9uQ3JlYXRlT3B0aW9uc01lbnU= VUVM IGJpdGluZw== KCFf IEVuY3ljbG9wZWRpYQ== IGJlcnQ= IFZlcmE= IEJpYmxpY2Fs aW5zaWNz X1NJTVBMRQ== IHNhbGlkYQ== cmVxdWVzdGVk IENvbXBvc2l0aW9u LkF0b2k= KEtleUV2ZW50 ZXJlYQ== IGRlcG9ydGVk IFF1cg== IG5pcHBsZXM= aXNBcnJheQ== INGD0LrQsNC3 IGJyaW5r bWV0cm9z RW51bWVyYXRpb24= IEJ1aWxkcw== ZXJ0b3M= IHNhaW50cw== LmRlcGxveQ== ZXRoZXJldW0= IGtpbmRlcmdhcnRlbg== dmFuaXplZA== IGNvbWJpbg== IHBvdXZvaXI= S2lu YXLEsQ== IC4uLi4u 77y+ Lkdv IHF1aXJreQ== xLFuZGFu IGFjdGlvblR5cGVz IFFVRVJZ VGF5bG9y IFJL dGF0 LnBhY2tldA== IElNUE9SVEFOVA== IGN1c2hpb25z YnVsaw== ZHVjdGl2ZQ== YmVuZWY= b2NyaXN5 IGZ1ZXJvbg== IGN1cnNlcw== IGZpbGluZ3M= ZWxpZXI= KD86 X2RyaXZl IGNvbnRhY3Rv IFBhcmt3YXk= dmlkZXM= Z25l YXZhZ2U= XFwu ZnVsbE5hbWU= ZGxs IHNob2Nrcw== ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== X3B4 QFdlYg== LlBlcnNpc3RlbmNl IHN1bms= LnRvb2x0aXA= YXV0aWNhbA== TmV3c2xldHRlcg== IHdhaXRlcg== IGlucXVpcmU= 0LDQtdGC0YHRjw== KCdfXw== dG9n SUVOVEFUSU9O IGNvbXBhbnlJZA== IEJhc2ljcw== CUpMYWJlbA== IG1hY09T IE1hdHM= X3RlbA== LXByZWZpeA== IG11dGF0ZQ== fScp Y2hlbmc= IE1pbGl0 IiY= ZmluZGluZw== IERhdGFMb2FkZXI= LkdQSU8= IExldnk= IHNuZWFrZXJz IGNyw6lk YXduZXI= eGlh L3NpbXBsZQ== Q0hS IGZsb3RhdGlvbg== LnNlbnNvcg== QnJhemls IFNlYXNvbnM= IFNwZWFr LWJhbGw= IE11dGF0aW9u dWtrYW4= IE9tYWhh 4oCZb24= IEN1b21v IEp1ZGljaWFs IGNoZWNrcG9pbnRz IEZyZW0= CUlk ZWdyaXR5 X2Fm QE5vQXJnc0NvbnN0cnVjdG9y IHRhYmVsYQ== WyM= bm90YQ== IEZhY3RvcnM= KGdyb3Vwcw== aXN3YQ== SVZP IHNjcmk= YWNldA== IE1laA== KGNsYXp6 IFs8 cGVyaWFs IHN1cnBhc3NlZA== IGpva2Vk IHJ1ZA== IGltYmFsYW5jZQ== IEZyYWdl c3Nw IGluZGljdGVk Lm1hcmtldA== O20= IHJlcGFpcmluZw== LW5vdGU= RGVidWdnZXI= KFdlYg== IHNpbmdz IExveQ== IERFU0lHTg== LkNvbXA= LWNvbnRyb2xsZXI= IGF2b2NhZG8= IEJvd2ll Y29udGFkb3I= dWxpbmdz dWNob3M= c3BlY2lmaWVy IFZvbHZv IGRlbW9z IFByb2R1dG8= Lk5vdEZvdW5k IG5pw7Fvcw== IEJvbHM= X291dGVy U2hlcg== QVVUTw== IGpvdg== IEZyZWRkaWU= b3JpYXM= IGFmZWN0 IGZhY2lsaXRhdGluZw== IGRvbWluYXRpbmc= UGFyY2VsYWJsZQ== JywnLQ== bW9vbg== IG1ldGFzdA== IHNjYXJm IFRoZXJt Q2FsbEJhY2s= 0YHRgtCw0LI= LkltcG9ydA== IGJldHJheWFs aWN1bG9z IHdlacOf 5YyF X14= d2lmaQ== IFNFTlNPUg== X0JVU1k= JGI= X0ZJTkQ= IHBsYXN0aWNz IENPTlZFUlQ= CWNhbGw= IFByYWd1ZQ== IGdhcm5lcmVk X2xlYXJuaW5n c2hvb3Q= J10pKQ0K IEdpbmdlcg== PXBk LHRlc3Q= UHJvZml0 IGVzdGltYXRvcg== IGJyZWU= IC8vPC8= X2hhdmU= IEtvZA== X0lNTQ== aXp6YXM= bWlnaHR5 154= IE9uQ2xpY2tMaXN0ZW5lcg== 44OH IFNjaWVudGlzdA== RmlsdGVyZWQ= YXZs aGF5 X2dlbmVyYXRlZA== XScK IEF1dGhvcml0aWVz OnBhcmFt IHN0YXR0 LW1hdGVyaWFs IGxpZGVy IENyb3A= IEJ1bmlmdQ== IG5leHRQcm9wcw== b3J6 X29yZA== PHg= X0lPQ1RM IE11c2NsZQ== CWV4ZWM= RU5BTUU= X2xldHRlcnM= IyMjIyM= IENz J109PSI= ICInKQ== Q2xlYW51cA== LnN0cnVjdHVyZQ== zro= 6YCa6L+H J107Pz4i IExhdGl0dWRl YmJpbmc= IGJhbmFuYXM= cmVjdGlvbnM= IFJhbmRhbGw= TllTRQ== IGFwcmVuZA== LlJlc3BvbnNlRW50aXR5 IHRlc3REYXRh XGU= IFdL LkFkZENvbXBvbmVudA== X3J1bnM= w6dvaXM= LW1pbmk= Zm9sZGVycw== IGxvc2Vycw== IFRvd2Vycw== LUVuY29kaW5n OnI= Y2hvb3Nlcg== IGZsYXR0ZW5lZA== 0YHRgtCw0L3QvtCy CVB5 5Lic IGRhbW5lZA== RGVwdA== d2Vk IHBpc2M= Z2llcw== X2dhbWVz Lm1hc3M= KEVxdWFs IG5hdGl2ZXM= LnRodW1ibmFpbA== bHRy IGVxbA== X2luY29tZQ== CWhlYWRlcnM= LWhhaXJlZA== IG1lZGlvY3Jl IFdpdGhkcmF3 IGJpdHRl 2b4= PWlu b2NrZWQ= RnVsbHk= IFRFTVBMQVRF w7pkZQ== T2Rk aWxsZXo= VGVsZXBob25l IAoJCQo= KCInIg== X3NjaGVk ZXJuZQ== wr4= LnBpY2s= IE1TSQ== CWZm RGlzY292ZXJ5 IENPRA== IExhY2s= IHNlbnNhdGlvbmFs bW90aA== IExlZ2lzbGF0aXZl 0Y0= IHZpYWJpbGl0eQ== IGdldEVtYWls IHVuYW5pbW91cw== IHBlbGxldA== ICIoKQ== Y29hdA== YWdvb24= IEFMV0FZUw== XHVD X3N0ZG91dA== QW5keQ== IG5ld0xpc3Q= IE1haGFyYXNodHJh LF9f PXVzZXJuYW1l IHNjcmlwdGluZw== IFRtaW4= PEFjdGlvbg== PXt9LA== c3ltYm9scw== IGZlbmNpbmc= IHbDrWRlb3M= IE1hdXJpY2U= Y29ybGli IGtlbQ== In0pLAo= IENsYXNzaWNhbA== Y29sbGVnZQ== IEhvbWVwYWdl IH19Cgo= X01zcA== IENvbXBsYWludA== IHNhbmR5 QXNpYW4= X3NlcmlhbGl6ZXI= IExhaA== IGJ1ZHM= b2xvZ25l IHJlc3BvbnNlRGF0YQ== b3BoaWxl a2F0ZWdvcmk= RW5kZWQ= bGVjdGlj IGNsYXdz Li4uJyk7Cg== IHBsYW5uZXJz IFphaw== IEdsb3Zlcw== Iil9 IGZhc2hpb25lZA== YnJvbg== IG5ld2NvbWVycw== dmFuYQ== IHBpZXJ3cw== UmVjZWlwdA== LWVudg== IHJ1dGE= IEZhcm1lcg== b2RvcmU= bXVp IHJvbWFudA== IGluZmxpY3Q= IHNlbWluYXJz PWN2 KHN0b2Nr IGV4dHJhY3Rvcg== IFRpZmZhbnk= X3V2 LmNvbnRhY3Rz JyksKCc= IHNvbHZlcw== LkNvbm5lY3Rpb25TdHJpbmc= L2RlYnVn IEF2ZXJ5 44Oj IG1heFg= U3Bhcms= PHRoaXM= IGhpa2Vz S2V5VmFsdWVQYWly IFF1aWV0 c3RhYg== IEtvbW1lbnQ= bHljZXI= IE1TTQ== IExhbnRlcm4= IGNvbmp1bnRv aHNp TVVMVA== V2l0aER1cmF0aW9u YXR0YWNoZWQ= IEFzdGVy CXBvaW50cw== IFNpYmVy IE1ldGhvZGlzdA== L3NpdGVz IGZvcnR1bmVz UGFydGljaXBhbnQ= IGN1c3RvbWVySWQ= KWluaXQ= X3NlcnZlcnM= IHdlYXZl IFRSQUlO IGhhcmFzc2Vk 7J6R YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo= X2Zhcg== QWxjaGVteQ== LmxpbmVXaWR0aA== IHRoZXJhcGlzdHM= IExvYg== ZXF1aXBtZW50 IHJlY2h0 Lm1pcG1hcA== Lm5pY2tuYW1l IHVudG91Y2hlZA== QUdPTg== IFNhdWw= IHdvcmtzaGVldHM= IFZldGVyYW4= b3VkZW4= YWNsYXNz X2FzbQ== IHRlbXBs IEV4cGVuc2U= ZWlnaHQ= I1NCQVRDSA== em9uZXM= LnBhcnRz YXRyaWNl bGF3cw== dG9CZURlZmluZWQ= RWZmZWN0aXZl IFBpZWNlcw== YXJ0aQ== IGluaGliaXRvcnM= CXBhcmFtZXRlcnM= IHRlbGVncmFt Ym91cmc= X25vdGlmaWNhdGlvbnM= IHBvc2l0aW9uYWw= LWRlYWxz IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== IHNoYWRlcnM= XT0k IGRlY28= ZXR5cGVz Y2xhcmU= IEdTTQ== LnV0aWxpdHk= VG9TdHI= YWZlbg== IFht X3BhcnRpY2xlcw== IGZsdWZmeQ== TWFya2V0aW5n IHN0YW5kaW5ncw== PwoKCgoKCg== VU1BTg== X1BBWU1FTlQ= CVRpbWU= cmF3bg== b3Jybw== IGVlcnN0ZQ== IHBhZ2VOdW0= IENPUA== IHBsYWdpYXI= VXBsb2FkZXI= JHNlbGY= bGF0ZXI= ZXJpYWxpemVk IGFsaWduU2VsZg== IOKZpQ== LmFycmF5Y29weQ== IG5vc290cm9z CWdwaW8= IHBsb3R0ZWQ= aXRlcmF0aW9ucw== IFJlbGF4 Y2lwaGVy R2lmdA== IEJldHQ= IFhS IHN0cmlwZWQ= KGVudmlyb25tZW50 ZWdlcnM= X1JFU0VSVkVE IGvDtm5udGU= IGluZmVycmVk UGRm c29ycnk= cGFyYXRl LkNvbmNhdA== IGxpcGlk LkJP IG9ybQ== IENvbnNvcnQ= IG92ZXJzZWVpbmc= IGFtYmVy IHBsZXRob3Jh CUFjdGlvbg== cXVlcnF1ZQ== IGh1aXM= ID1b IHByb2dyZXNzZXM= anVkdWw= IGNvbnZlcnRpYmxl LmVtYmVkZGluZw== IHs/Pgo= IHJlZHV4 W2xhYmVs OiIpOw0K Lm9ubGluZQ== cXVhcnRlcmVk IHNjaG9vbGluZw== ICJcIiI= W2xpc3Q= QWxhbg== J30KCg== eXBzdW0= IHN0cml2aW5n IFJlc3BvbnNpYmxl IO2MjOydvA== LkludFB0cg== cmlrZXM= ZW52aWxsZQ== LnNldExheW91dE1hbmFnZXI= IFBhc3Nlbmdlcg== IGRpc29i IGZlcm1lbnQ= LlBpeGVs Pign IGNvbnRlbmRlcnM= LWJldGE= IGFmZmlybWF0aXZl 0L3QvtGB0YLQuA== aWHDp8Ojbw== UmVjb21tZW5k aW1pdGVycw== X3lsaW0= IHN1YnNpZHk= IGVyYg== RmlsZVNpemU= KHNy IHBvb3Jlc3Q= IHZvaQ== U2lk IHNsaXBz X21pbnV0ZXM= IHVn xqFu IG5hdMO8cmxpY2g= 44Oe YmVhcg== fV8kew== IGZpc3Nl IGRpc2NyaW1pbmF0b3J5 CQkgIAo= IENvaWw= X2lmYWNl LnZlcg== IG1pbmVk IGFzc2Fzc2lu IHVuc2V0dA== LnJlcXVlc3Rz LlVT aW1hZ2VVcmw= IHN0cmF0ZWdpY2FsbHk= LWJhbmQ= IHRyb3VzZXJz WEQ= ey8= bGVjdGlvbnM= YCgp IlA= IHNrZXRjaGVz Y2xpZW50SWQ= IFNyYw== b3BlbmluZw== UHV0aW4= IFBvZXRyeQ== IFBST00= SUxMSVNFQ09ORFM= IGJvb21pbmc= U2ltaWxhcmx5 Omxhc3Q= Lndvcmtlcg== LmdldElE LlNQ c2VydmVycw== b2N1bGFy IHNwaW5hY2g= SVNL w7A= J10pWw== IGNoaWVmcw== IGdyb8OfZW4= cmlldmluZw== LmFzaw== LXN1cg== VlY= Lz4iOwo= KHJlbW92ZQ== IEtM IEhhbGV5 QFJlc3BvbnNlQm9keQ== LSY= U3dhZ2dlcg== IHpuYWo= Lm9uRXJyb3I= cmVnbw== ZWxpeA== IEFWQUlMQUJMRQ== IHNlcGVydGk= aWFw X21pc3M= IHN1cmdlcmllcw== IGltcGFydGlhbA== IENvdA== YWt0aW9u IHdoaXRlbGlzdA== INCw0LI= X21peA== IEJlZHJvb21z IHByaW1laXJh IHNpZ25pZmljYQ== L2J5 IHN0YXJ0bGluZw== IFNQRQ== dWNjacOzbg== TnVtZXI= SUJN LmZyYWdtZW50cw== UmVudA== IHLDs3duaWXFvA== LkFVVE8= LkZvckVhY2g= IFpodQ== IEN1bm5pbmc= IFdhcm4= IEJI X0RPV05MT0FE QnlLZXk= KeKAlA== IGNvbW1hbmRl X0FOUw== Q2hyb24= RklU X2F0b21z X1NLSVA= IHZhcA== KEJveA== IGxkYXA= dW5wcm9jZXNzYWJsZQ== SVRJT05T w6lyw6k= LG1zZw== IG91dHNldA== IGRyaWxsZWQ= IGTDqXZlbG9wcA== IENvYXQ= IEJlbmdoYXpp SG9va3M= IE1pc3NpbGU= X1Jlc2V0 Pi88 ICItIgo= KCk9PnsK IEhvY2g= LmF3YWl0 QWRyZXNzZQ== IGRpZ2l0YWxseQ== IlRoZXNl b3BsZXZlbA== IGFzeW5jaHJvbm91c2x5 IER1Y2tz UkVTUA== SVJP LmZpeA== IFJhZGFy dmVydGlzZQ== w61zZXM= SXRlcmF0aW9ucw== bW91c2V1cA== bWludA== RklSU1Q= IHBheXBhbA== X3VwZ3JhZGU= V3JhcHBlZA== Ow0NDQo= K3M= IGNhdGNoZXI= Lk9w X05PVElDRQ== cGFyYWxsZWxlZA== Q1ZF Zm9yZ290 IHBhbm9y IG9mZnJl IGVub3JtZQ== KCkNCg0KDQo= YWRpYXRvcg== YWRkQWxs W3RleHQ= KHV0aWw= LlByb21pc2U= YW5pc20= X29mZmVy RU5ESUY= ZG90cw== IEtybw== IHNwZWxsZWQ= IGFwcE5hbWU= QWN0aXZpdGllcw== IFNwaWNl ZWF0ZWQ= IHNrYg== IGvDtno= IHRvcmNodmlzaW9u Q2l2aWw= IGhvcw== X0hlbHBlcg== acSH X3Vuc2lnbmVk 6K66 4oCcQW5k CWtmcmVl LnJhaXNl IGNhbGxl IExhbnM= IGFudGln XCI+IjsK YnJhbmNoZXM= bG9ncmFkb3Vybw== IHN0YWxsZWQ= YWx5emVk RGVyaXZlZA== Om5vdA== IGdpYmk= IFR1cm5idWxs LnVzZXJEYXRh KFRhYmxl IERlcml2ZWQ= CWNvbmY= IGFsZ2Fl IGthZmth IG5ha25l IEhlYXRpbmc= IFRpcmU= YWR1bHQ= IERhdGVGb3JtYXQ= b3Bj ZW5zYWdlbQ== LlRvb2xz Lk1peGVkUmVhbGl0eQ== cmFp IFdvbmRlcmZ1bA== KV0pCgo= aWFyZA== VGhlbWVQcm92aWRlcg== IGV2ZW50RGF0YQ== I2Fk LmdldFVybA== IHRvb2xib3g= IG92ZXJyaWRpbmc= Q09OVEVOVA== LXByb2R1Y3Rz d2lsZA== X2V4cGFuZA== aW5haXJl QnJ1 b2xscw== INGN0YLQvg== Y3Rlc3Q= IHB1bmNoaW5n RFJW X3NwYWNlcw== IFN1cGVyaW50ZW5kZW50 IGxheXVp KGZlZWQ= dG9k IHZo IGluc3VsdHM= IFN1Yw== aWtz VG9ycmVudA== Lmty X2FjdGl2YXRl k5g= amVl aW1lcnM= cnVpdHM= IHByZWNpbmN0 LlJlcXVpcmVk IHNhdGlzZmllcw== IGNoZWVyaW5n IGFycml2 CXJlYw== IENvYmI= IGNvbmN1c3Npb24= dWpldA== Tm90Rm91bmRFcnJvcg== SmVhbg== IHBob3Rvbg== Pl8= IEJhcmNs YW1k ICV9Cg== PVwiIw== SW50ZXJu IENvbW1pdHRlZXM= LmJlbA== bnVtbWVy IGxldml0cmE= X3ZlcmJvc2U= KGNvZGVj IFN0aXRjaA== PSIiOw0K IHJlZ3JldHM= IG11bHRpbmF0aW9uYWw= IHJlc3RydWN0dXJpbmc= IE1FTg== eW5jaHJvbml6YXRpb24= IG1lZGlhdG9y a2ly UHJpbmNl IGluaGliaXQ= IGdvc3Q= IE1NQw== IHNpZGVk X2Rhcms= KGJsb2I= PkxvcmVt PiIpOwoK c2Nhbm5lcg== OmlubGluZQ== LmNhcm91c2Vs b3RpZGU= IFdXVw== IGRydW1tZXI= LmZhbWlseQ== IG9yZGluYWw= 5b2T5YmN IGRpcGxvbWF0 IHN1cHBsZW1lbnRhbA== IGRhZsO8cg== IEZBVA== IFlvbmc= aGFwdXM= IEp1bmN0aW9u emw= LlVzZUZvbnQ= IGhhc2hNYXA= LVJl ICIqKg== LnNldEJhY2tncm91bmRSZXNvdXJjZQ== IGltcGVyZmVjdA== LkZpbmRFbGVtZW50 IExMUA== IG11cmRlcmVy IHRleHRl aXPDqQ== YWN0aWNz VG95 R3JhbnQ= X2Rpc2Nvbm5lY3Q= IGJyYXNpbGU= IGVtZXJnZW5jaWVz X2x2bA== IEAiXA== fSovCgo= X1NPQw== Tk9STUFM L2dhbGxlcnk= YXNpY3M= RXZlbnR1YWxseQ== IGdyYXA= IGNyaXN0 IHByb2plY3Rvcg== IGdlb21ldA== IGRldGVjdG9ycw== IGNyaXRpY2l6aW5n IGNoaWNrcw== IEhpag== L2ZyYW1l LW1vbmV5 ImRlc2NyaXB0aW9u IHRleHRpbmc= IHNleGlzbQ== IE1WQw== LWdlbmVyYWw= IG92ZXJ0dXJuZWQ= IG1vdmVy IFBocmFzZQ== IFVOVVNFRA== IEVudHJlcHJlbmV1cg== VEVHUg== ZWxsaXBzZQ== TWFya2Rvd24= X18oKg== IEthcmRhc2hpYW4= cHBlbGlu IEdvdHQ= IGR5c3Q= IFJlZHV4 SG9sYQ== PyEKCg== IFJlYWx0eQ== U3VydmV5 IE1jR3JlZ29y X2hhbmRsZXM= IGludHJpZ3VlZA== IGdldFVybA== IGRldmlzZWQ= IFBheXBhbA== IHRoaW5rZXJz IFN0YXR1c0Jhcg== IEVsaWc= IGNvbXBsZXhlcw== INC60L7QtA== c3RvY2tz LWluaXRpYWxpemVk IHNjYW5kYWxz IGNvbWZvcnRpbmc= IFJvY2tz IGxpb25z bG9jYXRvcg== IV0= IFBvbnk= RGF0dW0= IEZldA== IG9mZnNldFk= IFJFVFVSTlM= IGJyZWFjaGVz VGltZUludGVydmFs IHZpZWxlbg== VmVyc2U= IGthZA== IGdhYXQ= KCItIiw= IG1vdXNlWQ== KFBvc3Q= IFVo ZWxpZ2libGU= YWx0YQ== IHV0aWxpc2U= ZmFjdHM= SElQ IG9yY2hlc3RyYQ== IFNwYWNlcw== aXNwaWVs IG11bHRpcGFydA== LW9wYWNpdHk= U2VhcmNoaW5n IFBsYXRv VmlzaW9u IGx1bA== IEFwcHJlbnQ= 57uc W3JhbmQ= LWRpc2FibGVk IEZsZXRjaGVy IHRyYW5zcG9ydHM= JmU= dHBhcmFt cG9sZQ== IEJ1ZW5vcw== w7pibGljYQ== aW50ZXJhY3Rpb24= IGhvYg== IGluZmxpY3RlZA== bGl0ZQ== IFBBUkFNRVRFUlM= IFN0YW0= KG14 IEF1dG9NYXBwZXI= aWxpYW4= IHF1aXR0aW5n PXt9 IEpvbmFz IGxvY2FsaXR5 IFNpbGVuY2U= X2ZsdXR0ZXI= IG5icg== bGl0ZXI= IE5vcm1hbGl6ZQ== IGFjdW0= QnJhaW5z ZXF1aXA= XT09Ig== IGRlc3Rpbm8= IERpb3M= Lk11bHRpbGluZQ== YWdyZWU= KQoKCgoKCgoK IHN0ZWxsZW4= IGN1cmx5 Lk9mZmljZQ== LWFib3V0 ICcuLy4uLy4uLw== IFVUSUw= IFJw 4oC6 IG1hcGE= LkRP YWdhbA== LndpbmRvd3M= IGFkdmVyc2VseQ== Llh0cmFMYXlvdXQ= bWVkaWNhbA== IHVuc3Vy dGhlcm1hbA== Lk1vZGVsQWRtaW4= LmFjdHVhbA== c2V0Q29udGVudA== IHBvc3RmaXg= UFc= IENoYWlycw== IGdyYW1t IGNvbXBsaWM= RElTUExBWQ== IE1vb3Nl aGFhcg== QUxFUw== IGxkYQ== LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCg== ICcvJwo= QVNO IEJhcmJlcg== IG1haW5z IG1haW5XaW5kb3c= 0LDQt9Cy0LDQvdC40LU= IGVtYW4= X2NvbGxlY3Q= IHJlbXBs LnRheA== YmFo IFBzeWNoaWF0cnk= RGVzY3JpcHRpb25z IGV4ZWN1dGlvbnM= CUxPR0dFUg== JkU= OmJn IGtk LmRhbWFnZQ== IG5pc2k= 5qy+ IENhbWVs aW5pZGFk IExpZmVzdHlsZQ== IFRISVJE IOCkuA== IHBvbHlnb25z IGF0dGlyZQ== YWxlbnQ= X1VTQVJU IG1hbGFyaWE= bG9icw== IF19Cg== KHJlZ2lzdGVy LXBz X29wdGltaXplcg== KEFMT0FE IHZhcGU= LnNvY2s= kOiXjw== JHByb2R1Y3Q= KEVSUg== Y2twdA== YnVxdWVycXVl IH19Ij57ew== IEhpdmU= IE1hc2g= IEVwaWQ= IEx1bmQ= X3RyYW5zYWN0aW9ucw== IHN1YmNsYXNzZXM= RWFzZQ== X0Nsb3Nl X2NoZWNrb3V0 IicsCg== U2VjdG9y b2lzZQ== LXRlbXA= KSIp aHlwZXI= ZXJjdWw= c3RhY2twYXRo X05S SUxMRQ== IHJlbGFjacOzbg== IE1hdHRo X0NPREVD IGhhbmRsZUVycm9y X09uZQ== YWxib3Jn CQkgICAgICAgICA= IFVwbG9hZGVk Tm0= Ly89 KlM= X0VYUEVDVA== IGZyYWN0aW9uYWw= Q291 IHNjYWxhYmxl IENJRA== PFBvc3Q= CXRocmVhZA== aGFyZHdhcmU= LmNoYW5nZWQ= LkVsZW1lbnRBdA== IGFydGljdWxhdGU= ZWRvcmVz RXN0YWJsaXNo PXtbCg== ISo= IFNK TWV0ZXI= LnJlcA== IFZPTA== IE91 bMOp IHBuZXVtb25pYQ== X3BpY2tlcg== ZXhwbG8= IOyekQ== IFN3aW0= ZHJlc3M= c3Rvcmllcw== L25hdg== VmE= INit L3NlbGY= IHZldGVyaW5hcnk= KERlbnNl CWJvb3N0 IElzTm90 IHRydXN0aW5n IExlYmFuZXNl JHJlcXVlc3Q= eGZmZmZmZg== X3JlbW92ZWQ= IHVwZGF0ZXI= 2KfY RE9XTkxPQUQ= IEltbWVkaWF0ZWx5 IHJvYW1pbmc= IEhvcm55 LmNvZGlnbw== IEZpZ3VyZXM= IHBhbnRyeQ== KHNhbXBsZXM= IEJFTA== IHNldENvbnRlbnQ= dW1vcg== 5pSv5LuY X01JTlVT IHVubGVhc2hlZA== IHByb2ZpY2llbnQ= CVVJ LkV4Y2VwdGlvbnM= IHNyYW5k UHJlc3N1cmU= LmFzc2VydE5vdA== KHNlcmlhbGl6ZXI= CXR4dA== UG9ydHM= IG5lY2VzYXJpbw== IHJldml2ZWQ= IG1pbGVzdG9uZXM= Y2Fubw== RXNjb3J0 IGVudGVuZA== QVBF aXBj LmF0b21pYw== IFBlbWI= IHJlYWNoYWJsZQ== IGthbnM= d2hhdGV2ZXI= TGlzdEJveA== IENseQ== cGljdHVyZWQ= IEVsZWN0cm8= YWJpYw== IGZ1bms= IGRpYXJyaGVh IOeZ IFNvbHZlcg== IEJhYw== IHNrZWxldGFs IO+C IEZpbGVOb3RGb3VuZEV4Y2VwdGlvbg== ICIpWw== IFRyYWl0 dWRva3U= LS0tLS0tLS0tLQoK QW5nZWw= YWdy IHNpbXBsZXM= IGJhbmM= IEFsZXJ0cw== IENvbmZpcm1hdGlvbg== IEFseQ== Y2FsbGJhY2tz IGZ1bmt0aW9u IGdyYWZ0 WVBE L0FGUA== V0s= a3Vy Q0tFVA== IFNsYXRl IFN0ZWY= CVJ1bnRpbWU= IEVTTA== IHByZWFjaGluZw== QnJvYWQ= IHNldERlc2NyaXB0aW9u YXplbA== PQoK IGphY2twb3Q= IC8vIQo= dmlhcg== IGVpZA== IGF0aXY= IHJlZmxleGl2aXR5 Lkxpc3Rlbg== IGx5cmlj IHZlcms= IGNvbGx1c2lvbg== YXphYXI= IHdpbms= IE11ZA== L29wZXJhdG9y IGV4dGVybmFsbHk= IGJhcnU= IGJhc2tldHM= dGlja2Vy KHBob3Rv X2V2ZW4= IHNwb25nZQ== IGhlaWdodEZvcg== Z2V0Q2hpbGQ= X2Zvcm1hdHM= LkV4ZWN1dGlvbg== X1Byb3BlcnR5 cmVwb3M= dGhlaWQ= X1BIWVM= IGV2aWRlbmNlZA== LmhlYWRpbmc= QW5ndWxhcg== IFZlbnVl IEhPVVNF IEVzdG9uaWE= 0LzQsA== cmdhbml6YXRpb24= L2RldmljZQ== SVJS X3RoZW4= YXJlbQ== IGFnZ2k= RU1PTg== INGB0Lo= IEVwaA== IE1TUA== IGxvZ2ZpbGU= LWxlYWRpbmc= YXRoYW0= IHVubWF0Y2hlZA== IFNpdHVhdGlvbg== KCl7fQo= CWNoYW5nZQ== IENoYXB0ZXJz LlJFU1VMVA== IG9l RVRZ X3ZpZA== Li4uJyw= IGFsdGVybmF0aXZlbHk= X1dT IFBsZW50eQ== IENyYXRl YXNpb25hbGx5 IExhd24= IElNTQ== IFZhbml0eQ== IFZvb3I= 5ZCv IG1pag== c3RlcnJlaWNo IFJERg== IENyaXRlcmlvbg== Lkludg== LlN0ZXA= X0ZyYW1l IEVOVU0= 774= SG9wZWZ1bGx5 TmF2Q29udHJvbGxlcg== IOy2lOqwgA== IFZhZGVy IHJ1dGhsZXNz JGtleQ== Y2t0 aW5lbQ== aWxlbnQ= IHJlc3BlY3Rpbmc= bGNk KGJ0 IEVsbGlvdA== IFVuaWRvcw== KENoYW5uZWw= IGVpdXM= IGFzdHJvbmF1dHM= IEhvc3Rpbmc= IGNhc3Rl IGhhcm1lZA== b3VwbGVz PFJvbGU= LkRlc2M= LWNvdXJzZQ== IENhcnRvb24= aWxlZ2Vk IG15c3RpY2Fs IOex KGZpZWxkTmFtZQ== V0lUSE9VVA== LHN1bQ== J2FjYw== CXJvd3M= IGdldFBhc3N3b3Jk IGNvY2tz cGl2b3Q= bmFtZW9m IGZlYXNpYmlsaXR5 IGNvbW1lbmNlbWVudA== IERvbWU= LkpTT05FeGNlcHRpb24= IEh5ZGVyYWJhZA== IExpc3RlZA== IENvbXB1dGVycw== W3ZhbA== IGlzb3Q= CXdpbg== IG5laA== KElOVA== UmVwdWJsaWNhbg== INC/0YDQvtCy0LXRgA== RmF0 IGVxdWl2 IERhdHVt YXN0aQ== IHNvaWxz dXB1bmN0dXJl cHJlc3NpdmU= XykpOwo= Lldhcm4= IGhhcmI= Lm9uT3B0aW9uc0l0ZW1TZWxlY3RlZA== IGNsb3du IE9XTg== IGV4YW1pbmF0aW9ucw== IEV4aXN0aW5n am91cmQ= IGNvbmNlc3Npb24= IEZpcmViYXNlRGF0YWJhc2U= IHVwdGFrZQ== IGVubGlzdGVk IENhcmI= IGZ1cw== IGFidXNpbmc= LnByb2R1Y3Rpb24= eW5jaA== aWx5bg== cmVmdW5k LWhhdmU= KGFyZ3VtZW50 IGZzY2FuZg== Y29uY2VwdA== X0xBTkU= IGVuZ2FnZXM= IEV4YWN0bHk= YWx0dXJh KEFkZHJlc3M= IHN5bm9ueW1vdXM= VG93bg== IFBheW5l cm9pdA== cGVyaWVuY2Vz cGFydGljbGVz X2Jk IEdyaW5kZXI= TWFuYWdlZE9iamVjdENvbnRleHQ= KGJi W3RtcA== LWNvbnM= YW9rZQ== IHN0ZXdhcmQ= IFZpZXdDaGlsZA== LmRyYXdMaW5l IFdBUk4= IHB1ZXM= bW9kYXRpb24= IHpz QWdyZWdhcg== ICIuIiw= LmNlbnRlclk= IGZsYXdsZXNz IGRldXRzY2hl IExpcXU= aXRlaXQ= X2ludHJv LXVzZWQ= LHRhcmdldA== IEhERA== ICUr b3JlbnQ= L09iamVjdA== IGRpc3J1cHRlZA== w6J0ZQ== IGFjY2Vzbw== IExvd2VzdA== IFdpbGxpYW1zb24= X2NyZWF0b3I= U2VsbA== IEJVRw== X3JlcHI= 6ICM IGFyY2hhZW9sb2dpY2Fs b21lcnM= IEVsb24= IFNjcm9sbFZpZXc= IGxpbmVzdHlsZQ== aXNSZXF1aXJlZA== aXNrbw== X3Ji ZsO8aA== ICAgCQk= KGRlZmluZQ== IFNDTQ== IERJRkY= X2Jz cGVuZGljdWxhcg== cGFjZWQ= IEpvdXJuYWxpc20= LkpTT05BcnJheQ== IERhdGFBY2Nlc3M= TWFyaWE= IELDvA== SEVMTA== IE1BVFJJWA== T0xUSVA= YXBzaWJsZQ== XToKCg== bmFpcmVz X2hpc3RvZ3JhbQ== IGZsYWly aGF2aW5n IFVzZXJJRA== IFJlbGF0aW9uc2hpcHM= UmVwbGFjZW1lbnQ= IHJzYQ== IGVucmljaGVk IHJlaGVhcnM= IHfDpHJl IGxvYWRlcnM= IEVsZW5h IFdhdGNoaW5n CWpvYg== TkVXUw== L3NldHRpbmdzZGlhbG9n aXZlYw== X0VRVUFMUw== VGVtcGxhdGVOYW1l IEJPRFk= LmFkYXB0ZXJz d29mZg== Y29tYm9Cb3g= Lk5ld1JlYWRlcg== fHJlcXVpcmVk X3Byb2JhYmlsaXR5 ICg6Og== IGNyYXo= IFVG VGVzdElk IGVzcGVjaWZpYw== aWJlbA== cGF3bg== 640= IE1hcnI= IHN0YXJ0WA== X3NpdGVz Lz4KCg== IGltcGxpY2F0ZWQ= KGlubmVy IGVmZm9ydGxlc3NseQ== wq10aW9u YXdhcmQ= IGhvdmVyaW5n cHJp JHRlbXBsYXRl dWFuZw== IGF1dG9tYXRl ICoqLwoK aWJsaQ== IG51dHJpdA== KS4o ZWVlZQ== QXBpQ29udHJvbGxlcg== L293bA== IFdvbWVucw== LWRvdWJsZQ== IE9yZGVyaW5n c3Bt TW9kZXI= Lk5hdGl2ZQ== IEJlcmdlcg== ZXNkYQ== ZXJkaW5ncw== X2VjaG8= IHN1bW1hcml6ZWQ= IGVsZXZhdGU= X3F1YWQ= IHdvbw== dWxhbnQ= UHJvcGVydHlWYWx1ZQ== IHBsaXN0 IEdSQVBI IFNUREVSUg== KScpLg== QXNzZXJ0aW9u bGlua3BsYWlu IGFjY2VsZXJhdGluZw== IHNuaXBwZXRz IFNhbG1hbg== YWJjZA== LmVjaG8= X2lkeHM= IHBjbQ== b2NhbHlwdGlj X2Nvb3JkaW5hdGU= KHByZXZpb3Vz LXNob3J0 LnN1YnRyYWN0 KEJpdA== P3Q= IE5vdGVib29r IEthdHJpbmE= aWZmZXJlbnRpYWw= c2lsZW50 dGVybWluYXRlZA== IHRhbmdlbnQ= OlQ= IGNvc8Os IHBhcmFub2lk IGRlcHJpdmF0aW9u L3t7JA== IGhlbWlzcGhlcmU= IHJlaW5zdA== ZWN6 dGVycg== IFBMQVRGT1JN IHRyb3VibGVzaG9vdGluZw== IHZhbGlkYXRpbmc= IE9yaW9u YXN1cmluZw== 0LjQvdCw IGh1YnM= YXJlbmNl IENoYWxsZW5nZXM= IHplYWw= U3Bv IFNjcmVlbnM= IG11bmRhbmU= IER1bms= ICMjIyMj IFJFRkVS b25ldA== LmNhc2U= LXBvc2l0aXZl SU5URUdFUg== Lm1ldHJvTGFiZWw= U0FO IHByb2Zlc3Npb25z IHR5cmVz UGFsaW5kcm9tZQ== IFNFQ09ORA== LkdSRUVO IFNuYXBzaG90 VUxL X2NpZA== JEk= IGN1bnQ= ZXN0cnVjdGlvbg== UHN5Y2g= IEh0dHBSZXNwb25zZU1lc3NhZ2U= ZW1iYWxp X3Jldmlld3M= U2VsZWN0YWJsZQ== X1BSRVNFTlQ= IEpzb25SZXF1ZXN0 IFRoZXRh X2ludGVycA== UmFzdGVy I2Vycm9y LG9iag== IHR3ZWV0aW5n X0dQVQ== X3RvZGF5 X3NlY3M= bmVlcw== LmdldFN5c3RlbVNlcnZpY2U= IHZub2Rl IFJlZ3VsYXRvcnk= IEZhaHJlbmhlaXQ= IHNjYWxlcg== X21hcmtldA== LmFsbG9jYXRl dGlja2V0cw== YXRhaw== IFBpa2U= IExvcg== ZGl0b3I= IGxvY2F0aW9uTWFuYWdlcg== IGluaXREYXRh IFdhcmU= IEluY2lkZW50 IGNvbW1lbnRhdG9y dWVudGVz IEluZmxhdGU= IOWG IGFjdGl2aWRhZA== IEJq RU5VTQ== IHJldXNlZA== INC80LXQvQ== IHNlc2nDs24= LicpKTsK 44GT44KT L2dl YWdhaW5zdA== LGxpbmU= KFVubWFuYWdlZFR5cGU= KT0i IHl0 dWRpYW50ZXM= cm9sbGFibGU= 5aGr X0NPTExFQ1RJT04= b2xpcw== dW1iZXJsYW5k KCIiIgo= IHppcHBlcg== DAo= L3NpZ251cA== IHN0cmFuZHM= cmF4 LmNvbnN1bWVy IHVuY2VydGFpbnRpZXM= RGVidWdFbmFibGVk IGRlZmVhdHM= IGRydg== IHJlYWxpc20= YWdyYW1z WEU= IEhhemFyZA== LW5lZWRlZA== KHRhYmxlVmlldw== LkVsZW1lbnRz IFNBUg== CWVsZW0= KHBrZw== U2ltb24= VGludENvbG9y IFBoZW4= X0VNUA== 2Iw= Pz4KCgo= X2F0dHJpYg== IGJveFNoYWRvdw== IENHQWZmaW5lVHJhbnNmb3Jt IENhbmJlcnJh IHN0YXJ0UG9z IFJhaw== CWNlcnI= IFRhbnphbmlh dW9uZw== Y2Fm LmJhc2ljQ29uZmln b2lucw== Q29udGFpbmVk PXNldA== X2dpdA== CXBhY2tldA== IGNvZg== KFRS 5qC85byP KHt9KQo= IGRpcmVjY2lvbg== IHBsYXlsaXN0cw== IGFmZmluZQ== LnNldFNlbGVjdGlvbg== IGFtbW9u IGNvbnF1ZXJlZA== IFJhbW9z IFBTUA== PXN1bQ== IGNvcnJlbGF0aW9ucw== IHJvYWRtYXA= IGV4dGluY3Q= IGFkdmlzYWJsZQ== IGJvbWJlcnM= IFVJUmVzcG9uZGVy X0JQ INCx0YPQtNC10YI= IFByZW1pZXJl IFJV dHJhc2g= KGNsanM= Z251 LlBhZ2Vz IGluc3BlY3RvcnM= TWV4aWNv IFZlcmU= UHJlYw== IFNjYWw= aXNwZXJz UnVubmFibGU= Lm9yaWc= IHNhaWxvcnM= UGFyc2luZw== IFZpc2l0b3Jz JnR5cGU= cG9wb3Zlcg== PCgpLA== IG93ZXM= IHJlYWN0cw== IERlZmluZWQ= IHJlYWxtZW50ZQ== IGRpY3RhdG9yc2hpcA== YWRtaW5pc3Ry aWRlbmQ= PUw= c3RyY2FzZWNtcA== XSU= 0L7Qs9GA0LDQvA== ZWR1bGE= LWRlc2lnbmVk Q09WRVI= X0NoYW5uZWw= IHByb2pldG8= eW1vb24= Q0hLRVJSUQ== 6YeK IHZlcmlmeWluZw== L2tleQ== LmZyb21DaGFyQ29kZQ== LkJpdA== X2J1ZGdldA== ICUi dmV5b3I= IHl1bQ== IGV4dHJlbWVz X0NSRQ== Z2V0U3RhdHVz c3Vic2VjdGlvbg== IHNvYWtlZA== IGdlbmF1 X0NIQVJBQ1RFUg== 5oyB LW9ubGluZQ== LnRvQ2hhckFycmF5 Y2VyZXI= Il0sIg== IHN0cm9sbA== IFl1YW4= IFdhbmRlcg== IHNpc3RlbQ== X3Vj KG5vbWJyZQ== Y2hhbnRtZW50 KGNsb3Nl bWV0aA== LXNlY3JldA== cHNldWRv Q291bnR5 Q09OVFJPTA== IHNvbHZlbnQ= IHNvYXJpbmc= IHNwaWVz TmF2SXRlbQ== IHJlc2VtYmxhbmNl KGJpdHM= IGNlbGx1bA== IGFzc29jaWF0aXZl Lmltd3JpdGU= LmNvb3JkaW5hdGU= XSwk KHNr Ki8p IG1vY2tz IGp1bmc= X0RPQw== LXJ1bnRpbWU= IEdpdmVz dW5q KHNlZw== KFtc IG5haA== X2V4cGVjdA== Um93SW5kZXg= KGZvcmNl IEdldFZhbHVl IHN1bW1hcmllcw== X1NIQVJF LXRyYWluZWQ= IEJsYW5j IGZpdHRpbmdz IHdhdGVyZnJvbnQ= Lk5vdGU= IFdhbmQ= b3ZlcmU= cHJlZGljdGlvbg== IGNzcg== LnRvcEFuY2hvcg== IFN0cm9rZQ== X0ZpbHRlcg== YXRoZQ== ICJcXCI= IEFGRg== PSIvIj4= LlJlcXVlc3RNZXRob2Q= kJzntKI= IHdpdG5lc3Npbmc= QXBwYXJlbnRseQ== IG1kaQ== c3RpY2tz IEFsdg== w6TDnw== X2NvbnRpbg== IGJvaWxlcnM= IE1hcnhpc3Q= SU9D bmVybw== aW5uYWNsZQ== TGl0 Y2Vj S2V5UHJlc3M= R2V0RGF0YQ== IGlzbnQ= 0YDQvtCy0LXRgA== IHFyeQ== Um9vdEVsZW1lbnQ= IE5TQ29kZXI= LmdldE51bQ== IHRocmVlc29tZQ== VXNlcw== LiJf IENvbnRpbnVvdXM= IHBvcHVsaXN0 IFBzeWNob2xvZ2ljYWw= X2N5Y2xlcw== IGlmZGVm aXBoZXJhbHM= CSAgICAgICAgICA= IGFkdmlzZXM= IENvbXBhbmlvbg== dHJpZ2h0 IGdyb3dlcnM= IFNPQ0tFVA== eW1jZQ== UlNT bWVtYmVyT2Y= VG91Y2hhYmxl X2FycmF5cw== IGp1bXBlcg== IGhlcnBlcw== IFRpdHM= IFRlbGVmb24= X1BBTkVM dWdlbg== 5YyX5Lqs LlNpdGU= X3VucmVnaXN0ZXI= X2Nocg== LnRm LWh1bWFu IGFzb2Np IHF1ZWVucw== QW50aG9ueQ== IHN0cmluZ2VudA== IG1vbGVzdA== c2V0SWNvbg== SEVFTA== SEVMUA== RERT LmNtcw== SVNUUklCVVQ= Y2llcw== LmZvckNoaWxk LmNoaw== IE90dG9tYW4= IFRQUA== IG1pbw== IEJ1Zg== Ym9h VmVyc2lvbnM= KGxvY2FsZQ== IFJhaWxyb2Fk YmNj LyoqPA== LXBhaWQ= IGNlbGVyeQ== YXRpc2NoZQ== Z2V0T3B0aW9u b3Jpb3VzbHk= IGFkYXB0ZXJz U3RvcmVz L3NhdmU= IEJhc2lz 0Y7Rgg== IExhZA== X3JlbGF0aW9uc2hpcA== IENsdWJz IOCo OiI8PA== X01JU0M= VmlzdWFsaXphdGlvbg== IG1pcnJvcmVk ZXNwZXI= U3RyTG4= IHJlc3BvbnNlT2JqZWN0 5ZCR LmVuY29kZXI= LS0tLS0tLS0tCgo= IGdyaWRWaWV3 X2luZGVudA== YW50d29ydA== IGFycml2YWxz IFNldHRsZW1lbnQ= Vmlld0luaXQ= LXZhbHVlcw== IHdhdGVyZmFsbA== IGluY2FyY2VyYXRpb24= IFRlZW5z CXNpZ24= aW1tdW5l LnNlY29uZGFyeQ== IHZpZGVvZXI= IOi+k+WFpQ== IGludGltaWRhdGlvbg== ZW5kYWxl IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IGluc2lnaHRmdWw= IHNhbmRz IHBob3RvZ3JhcGhpYw== UGFnaW5hdG9y IGRpc2NpcGxpbmVk X1RMUw== XSkpLA== cmxlbg== PGNlbnRlcg== X1BDTQ== S2VsbHk= LWJpbGxpb24= LmN4 IGpldXg= IGZpbGVMaXN0 IFFEaWFsb2c= dHJhY3RpdmU= RHQ= IGVzdHJvZ2Vu IHN0YXJjaA== X2VtaXQ= INC30LDQv9GA0L7RgQ== IFF1YXJ0 IGluYWR2ZXJ0ZW50bHk= IHRyb25n c2hpcG1lbnQ= IE5PUg== IFNjcmVlbmluZw== IERpc2Nvbm5lY3Q= bWVubw== IFdvcnN0 IE5y e2s= c3Bs X2N0cg== LnNvcnRlZA== LXBsYWNlaG9sZGVy KCk7Ig== aHVyc3Q= LWhpdA== LnNvbHZl 566X IHVuZGVhZA== IHdoaW1z IGdldERlZmF1bHQ= IE5pa2tp YXNzZW1ibGU= IHJlbG9jYXRlZA== LXJldA== SXRhbGlhbg== OlN5c3RlbQ== LnNjaGVkdWxlcg== 4oCcU28= Rm9yYmlkZGVu QVZPUg== emlhxYI= LkFkYW0= CWNhbnZhcw== IHBhcnRuZXJpbmc= IGd5bW4= IG1hbmlj RGlmZmVyZW50 IMOlcmh1cw== IGZlcnRpbGU= Y2xm LQ0K LnJldmlldw== b2RhYmxl IEJvdW5kcw== b2Jhbw== IFBhcGVyYmFjaw== IG1vZGlmaWM= Y2hlY2twb2ludA== IEFwcEJ1bmRsZQ== IHN0YWJpbGl6ZQ== IEF1ZGlvQ2xpcA== bW9udGhseQ== LmJlaA== IGZsb3I= IGJvbmRlZA== IFdvcmtvdXQ= Y29taW5ncw== IHJhYmJpdHM= IEJBTA== Q0NS X3Z1ZQ== IExldml0cmE= IGxpYmVydGluZQ== IGNoYWxsZW5nZXI= IFZhY2F0aW9u VG9G fSQv X0RyYXc= IGZlbmNlcw== IGRhdGFzb3VyY2U= IHBhcGVs c2xpY2s= X21lcw== IFVJU3Rvcnlib2FyZFNlZ3Vl KFRhZw== IOWvuQ== ICctJyk= X0NMQVNTRVM= KFJlbmRlcg== CWZ3cml0ZQ== VUVE QUVT KGpzb25QYXRo IHNsb3dz PkRlc2NyaXB0aW9u IGVucmljaG1lbnQ= IGl0ZW1wcm9w IFBvdmVydHk= IGFic29yYmluZw== IFBzeWNobw== 5rGf LC4KCg== SW52ZXJzZQ== IGFkanVk aWdpZEJvZHk= emlvbmk= ICInLiQ= 5LiN5a2Y5Zyo VGhhaQ== IHNsYWlu IGJydXRhbGx5 IFBlcnNwZWN0aXZl IFJldGlyZW1lbnQ= JHJz IHNlcnZpY2VOYW1l IOyI LXByb2Nlc3Npbmc= YnJhbmRz OmVycm9y KHByb3BlcnR5TmFtZQ== IEJvZWg= L2Nt L3JlYWQ= QU1C IHJvdGF0aW9ucw== LndvcmtzcGFjZQ== Onk= IHVwaG9s dW5reQ== IEJyYWNl L21ldGE= IEJyYXZl YWNqZQ== KFVJbnQ= IHZpZWlsbGU= cmFkaQ== X2R5bg== Tlc= bG9zZXI= ZXJ1c2Zvcm0= IEJhcnRvbg== IGZhcmVz IE11aw== 4buHdQ== IEF1ZGlvU291cmNl KChf LkJpZw== Lm9yZ2FuaXphdGlvbg== IFRyaWNr IGJsdXNo KFRZUEU= IFJlbGF0aXZlTGF5b3V0 bGVjdHJvbg== XX0i IFphcA== IFR3ZWx2ZQ== Okw= IHN0aWZmbmVzcw== X0hFTA== IHNwZXA= KGNvZGVy IHRhbWFuaG8= IGFudGlveGlkYW50 IGhvc3BpdGFsaXplZA== R1BD IHNjcnV0aW4= 4buBbg== IFNa IEp1bGl1cw== IFNhYmI= ZWxvcg== KG1j 6YeM IFBpbnM= IG1vZGVyYXRlbHk= IEvDvA== b3JnYW5pemF0aW9ucw== IFNDT1JF IHNjb3Vy IGNob3I= IFVJRWRnZUluc2V0cw== IHNrdWxsZQ== X29wZXJhbmQ= LmdzdGF0aWM= L25naW54 IGdldFdpZHRo QmF0dGVyeQ== IFNldHRlcg== bUE= KFJlc291cmNlcw== X3BsYXlsaXN0 IG1hbmdv IE9SRA== YW5raW5k ZXdheXM= Pyks IEdMVVQ= IGp1c3Rl IHBheWVy KGNhbQ== IFRlYWNo IEZsdXg= IG91dHNwb2tlbg== IFN0cmluZ1V0aWw= IFpoYW8= LkhlbHBlcg== IGVzdGlsbw== IEFudGhyb3A= IEd1YXJkcw== Vm9jw6o= Olsn CXByb2R1Y3Q= dXBkYXRlZEF0 IGluc3BpcmVz cXc= QkxFTQ== YWtpc3Rhbg== IGN6xJk= LWhlYXJ0ZWQ= IENvbXBlbnNhdGlvbg== 0LjQsw== IGNvbWE= IEZpYXQ= IHhtbGh0dHA= IHJlZmVycmFscw== IHNwZWN0YXRvcnM= IFRvcw== aXNvcw== SU1QTEVNRU5U IGVudHJlcHJlbmV1cmlhbA== IFNjb3V0cw== IEFsb25l YnJva2Vy UHJvZHVjdElk IEtvYmU= IGNoYXVk L2ZlYXR1cmVz IHJvb21tYXRl IFByb2plY3Rpb24= YXZvdXJpdGVz X0pPSU4= IEFWQw== X3BoeXM= S2V5UHJlc3NlZA== LDw= IHVucmVhY2hhYmxl IENpdGF0aW9u W2NoYW5uZWw= c3RhcnRzd2l0aA== IEphZ3VhcnM= LklzRmFsc2U= bWVtYmVyc2hpcA== QXR0ZW50aW9u IHJlbW9kZWxpbmc= IENpbmR5 IGNsaW5pY2FsbHk= IG1pbGxlbm5pYWxz IM60 IHJmbA== ZW5ldA== IG9icmln IHZvbHVudGVlcmluZw== Q3JlZGl0cw== CWFy IHJlc2lzdGluZw== IFByb2R1a3Q= PT09Ig== IGNvbmVjdA== IHJpag== INeU IHB1YmxpY0tleQ== IG95 IEJ1dHQ= X21pc2M= IEJlc3Rl IFBMQw== IOafpQ== IEJveEZpdA== IiIu VGVzdEZpeHR1cmU= IGNoYXR0ZXI= IGRvb3J3YXk= eXNpemU= INGH0YI= SUNUVVJF PScuLi8= c2hvd24= X3dlYXRoZXI= IExvZ01hbmFnZXI= XX0iCg== IGNvbG91cmZ1bA== IHJ1bW9yZWQ= IGzDpQ== IHByb2Jz CWJ1aWxk IOWmgg== LnJldg== IGludGVyY2VwdGVk R2F5 TGlzdENvbXBvbmVudA== IHBpw6g= IkF0 IGFnYXI= IEd1bmQ= X0FFUw== 7IM= jpjsnbQ= IGF1dGhvcmlzZWQ= IENoYWxs X2xvZ291dA== Y3Jvbg== YXRlZ2llcw== cGVyc2lzdGVudA== IEFuZEFsc28= dXN6 X3Jlc3RhcnQ= IGRlY2lk emY= IHBhZ2luYXRvcg== b2xsZXI= IEhH T3BhcXVl c2VhdQ== IE9NSVQ= IFRoaWNrbmVzcw== IEFpcndheXM= X2RlbQ== eXRpYw== IHByb3Rlc3RlZA== IHVwcmlzaW5n IHN1aW5n IFNoZWxieQ== LmVuZXJneQ== IGFsbGVsZQ== LWJpZw== U3RyaW5nQnVpbGRlcg== IHNpZGVsaW5lcw== IFRV X2Fp LkhPUklaT05UQUw= IHJhZ2luZw== LnRvTG9jYWxl Lm11c3Q= eEZGRg== Lm5paA== ICd7fSc= 2YjYrw== IHB1bG1vbmFyeQ== IOWPkQ== IG7Dum1lcm9z IE5hcG9sZW9u X01ldGhvZEluZm8= bGFzdGluZw== IGV4cG9zdXJlcw== IGVtYmFyaw== X3VkcA== S2lkcw== X0NPTk5FQ1RFRA== IHdlZWRz UE9PTA== IGtyaWo= IG51aXM= Sk5JRVhQT1JU YWFhYWFhYWE= IO2P 5Lu9 IHJlcGxlbg== IFRyaWFscw== d2FzaA== cnV0 LWJlZm9yZQ== X0FUVEFDSE1FTlQ= VU5U XFZhbGlkYXRpb24= VG9u IGhlYWRpbmdz UHJvYmFibHk= IGZhYnJpY2F0ZWQ= U29ja2V0QWRkcmVzcw== IGxldHRyZQ== KSI+ IHZhY2NpbmF0ZWQ= Omh0dHA= IGNvbmRvbA== c2hlZA== IFNwaWVsZQ== 44OU RGVwbG95 LkNvbnRyYWN0 LWJv Iy8= IGludGVyY2VwdGlvbg== IGlzYm4= IG1hbm5lcnM= L2Fj CUNoZWNr X2Zn IGVuZFBvaW50 X3dlYXBvbg== IHVuaW50ZW50aW9u IHF1aXRz X01JQw== YXBpcm8= IGJhbGxvb25z IGdyYWRz bWFycmllZA== IDwqPg== IGRpc3RvcnQ= X01FU1NBR0VT IFBTQQ== X1BE YWxzZXg= IERpYWxvZ3Vl IHJlZ2lzdHJhdGlvbnM= IE9yaWdpbnM= IGZsYW5r PzsKCg== OwoKCgoK XS0k IERlc3M= LlN0YXR1c0JhZFJlcXVlc3Q= IGluaGFiaXRlZA== IGdpbHQ= IFNURENBTEw= LnRoZXRh JCQkJA== aWNsYXNz QXBhcnQ= Lmxpc3RCb3g= IEJlbGFydXM= IGRlbmVu IFN1c3NleA== CWRlbA== X0VD bmVhcmVzdA== XE9yZGVy UGFja2FnZXM= Zm9ybWVybHk= Ke+8jA== 6LSj U2V4eQ== IGhvcnJvcnM= Uk9BRENBU1Q= QXBwcm94 RGVzaw== QU1FRA== Lk5vcm1hbGl6ZQ== X3B1Ymxpc2hlZA== IERlYm9yYWg= 56eR IHBvdW5kaW5n IEVzcGVy IERhbmNpbmc= IExPT1A= IFJveWFscw== IGluc3VyZQ== IEludmVzdG9ycw== IHRoZW9sb2dpY2Fs QXBwb2ludG1lbnQ= IGNhdGVnb3JpY2Fs IGNyYW4= VmFsaWRpdHk= IHJlc3BvbmRlcnM= ICgpDQo= ZXBhZA== QklUUw== IExhbWJlcnQ= c3VtbQ== YWNpZGFk IGxvZ2dlZElu PVc= LkxvY2FsaXphdGlvbg== cmlkbw== JyIpCg== IFdlYlZpZXc= bG90aA== IHRlYXNlcg== IENhbmQ= IGVwaWxlcHN5 SW5jcmVhc2U= aXZpdHlNYW5hZ2Vy ZW50cmFudA== VGVsZWZvbm8= LmN1cnJlbnRTdGF0ZQ== IE5vZWw= ICAgICAgICAgICAgCQk= IGV4aGF1c3Rpb24= ZWxpYW4= IGNvdmV0ZWQ= LXByb2R1Y3Rpb24= KHN0ZGlu IHByZWZlcmFibGU= IG9mZmVuZGluZw== KGNvbW1pdA== CWFs IHJlbG9jYXRl IGFub21hbA== IERpc2Vhc2Vz IEZvcmc= IFdJRkk= IEtpbGxpbmc= cXY= IGZtYXA= IGxsZXZhcg== dGl0cmU= LmVtcA== LCRf YXZy Q2FuQmU= X21h IEhhd2tpbnM= X1JPVVQ= IGxvYWRJbWFnZQ== IFdhaA== IERlbXM= IGluZGVudGF0aW9u cHJlY2F0aW9u IOaWh+S7tg== IEJ1ZGFwZXN0 IHV0Yw== KGhvdXJz IHRyYW5ueQ== QW5z ennEhw== LnZlaGljbGU= Q29pbnM= IEJyYXVu CVJlc3BvbnNl IHZyaWo= IHN0cmFuZ2VseQ== IEZhc2M= XFNlc3Npb24= TW91c2VMaXN0ZW5lcg== IFJvbGxz 4bqnbg== LmdycGM= SW50ZWdlckZpZWxk CWFmeA== RG9ja0NvbnRyb2w= JVw= JTsi IGdpZ2c= IGJvcnJvd2Vy IGRpc3BvbmlibGVz X1JFQ1Q= IFRoaW4= IHBlYXJs eEZC IHJpcHBsZQ== IGtIeg== LmFjcXVpcmU= Ymlvcw== dGFibGVGdXR1cmU= L2FudGxy b3JhY2xl IEFSRUE= IGludGVuc2VseQ== IHByb3RvYnVm IExFTkc= IEhlYWRxdWFydGVycw== YXRoZWQ= TWluZA== aW5peg== CVBhdGg= WE1MTG9hZGVy IGFsbG9jYXRpb25z LnNsb3Q= UHJvY0FkZHJlc3M= IHJvbGVJZA== Oyc7Cg== IEJSRUFL IFBlcmZvcm1pbmc= Lk9yZGluYWxJZ25vcmVDYXNl LWds Omg= IGRvd25sb2FkYWJsZQ== IFN1YnNjcmliZXI= YW5zZQ== IGNoYXJhY3Rlcml6ZQ== IHNocnVnZ2Vk IHNjcA== IGd1c3Rh IG1ldGFsbA== IGxhYm9yYXRvcmllcw== IFhpbg== IE1vdG9yY3ljbGU= IGVnZXQ= IGZpbmFuY2Vk IE1PRElGWQ== KlI= QWk= IGV4dHJlbWlzbQ== IEhhbGlmYXg= IHZhbW9z JG51bQ== IGltcGFydA== YnJpY2s= IOexuw== IGZ1ZXJh IFJPTEU= LkNvbmN1cnJlbnQ= X09QRVJBVE9S IGN5bmljYWw= IFJlZ2luYQ== Z2V0RXJyb3I= 2KM= YnN1Yg== SmFwZ29sbHk= IGluaGliaXRvcg== SnVzdGljZQ== 44U= TmV2ZXJ0aGVsZXNz LXNlbQ== Lm9nZw== cmVxdWVudA== IG5vc3Nv SGFpcg== LkxpYnJhcnk= bWRpcg== IGhhcmk= IFRhcmE= IFBvcnRv bmV0aW5ldA== IGFsbGlhbmNlcw== ZWxsc2NoYWZ0 X1N1cmZhY2U= CVZpZXc= YXR1cmRheXM= IHBvcGNvcm4= X1BBUlNF IFJpcHBsZQ== IHBoYW50b20= IG1vbmRv LmNyZWF0ZUNsYXNz IEtvcmVhbnM= IGZhc2U= IFdvY2hlbg== IEVxdWlw LWVpZ2h0 IFN0YXRlbWVudHM= IGFkYXB0aW5n UHJlY2lv IEN1cmU= IGNhbWJpYXI= 5rCR IGhleGFkZWNpbWFs c3BpcmFjeQ== YmlsdA== IFl1Zw== IC0tLT4= IFBQQw== aXN6 YWtlRnJvbU5pYg== IERpc3A= IEF0aGxldGljcw== IG5pZ2h0Y2x1Yg== R09PRA== LnNldEdlb21ldHJ5 K1s= L3NlbmQ= IGJpbmFyaWVz IHLDoXA= OnJlcQ== LWNvbnN1bWluZw== ZXJ0aW1l VVBEQVRFRA== X251bGxhYmxl VklO dWxpYQ== Y3lhbg== IG1pc3VuZGVyc3RhbmRpbmc= b3JpY2Fs ZGVncmVlcw== TGVhZGluZw== LkFS aWNrZXN0 TnVldm8= dWZvcmlh IGdvb2RpZXM= IGZvcmVz KCk8PCI= YWRlbWlj QWN0aW9uQ3JlYXRvcnM= c2VydmVybmFtZQ== KG50 ZGJDb250ZXh0 IGFpcmJvcm5l IGV4aGliaXRpb25z Y2VsZQ== IHRlbGE= PE1vdmll KCd7fQ== RXhwbGFuYXRpb24= IGhPYmplY3Q= IGJlYXJlcg== ZW5zaWJseQ== bmlw IEplcm9tZQ== IENa IGRhdGVGb3JtYXR0ZXI= w6ljaWFs U2V0TmFtZQ== b3VjZQ== IHJlZ3Jlc3M= JkM= KCkiPg== LnNldFByZWZlcnJlZFNpemU= IE1JRA== IEFsZXNz IGhvcnNlcG93ZXI= IGF0bQ== IFBhY2thZ2luZw== IGNpcGhlcnRleHQ= UmVxdWVzdE1ldGhvZA== IGJlaWRlbg== 6KM= IFBPVw== LldyaXRlSGVhZGVy ZGlyZWN0b3I= LWJ1dA== 44Gg44GV44GE aW5jZXI= X2Ru ISEhISE= IG1hbnVmYWN0dXJlcw== LlRleHRVdGlscw== IGNvbnNjaW91c2x5 IGJvdW5jZWQ= Y3VsdHVyZQ== IFNwYXI= IFBpcGVy LnByZXNz LW93bmVy IGV2YWx1YXRvcg== IFNUUkVBTQ== LlBpY3R1cmVCb3hTaXplTW9kZQ== IHN1Z2Fycw== U2NyZWVuV2lkdGg= IG5leHRTdGF0ZQ== IGl2b3J5 IGJydW5jaA== ZGVuc2l0eQ== X09X IENvcm9uYXZpcnVz IENGUg== YmFr XENhdGVnb3J5 5pWw57uE IGludm9rZXZpcnR1YWw= fSgpCg== IHN1amV0 LW1hcmtlcg== aXNkaWdpdA== IE1vYmls IEpzb25SZXF1ZXN0QmVoYXZpb3I= X1JFTU9URQ== LmV4aXN0c1N5bmM= IHJpY2hlcw== LnByZXNlbnRlcg== IGdsQ29sb3I= IGhhbnlh IGZvcnRyZXNz IGZsYXNoZWQ= dml6 cmVxdWVudGx5 YnVhdA== JGNvbg== Pnw= LkZ1bmM= IGh1bW9yb3Vz dWVt LlpFUk8= IFNUTA== IEJ1aw== L3NhbXBsZQ== IEdyb3M= UmVjaXBlcw== IGluZmxhdGVk IHN3dW5n OkY= RmFjaW5n LlRoZW1l 0L3QuNC6 IHNwbGVuZGlk IHJlcXVlc3RJZA== LkNlbnRlclNjcmVlbg== L2F1dG9sb2Fk ZW1iZWRkZWQ= X2RlcGFydA== IFBvcnRz 4LmD 0LDQudC0 ZGlzY3Vzc2lvbg== X2NvbnN1bQ== IHNjb3V0cw== IGNvbGFib3I= LlN0YWdl Lm5hbm8= ZWxkb3Jm IGdlbWFjaHQ= ICAgICAgICAgICAgICAgICAgICAgICAgICAK IHBvbGljeW1ha2Vycw== X1BLVA== LFRo b2t5 X1VJRA== UGluZw== IG9yY2hlc3Q= IG9wdGljcw== dWhhbg== IFhPUg== IGVzcGHDsW9s IEFkaWRhcw== cm5n bWFucw== LnZzdGFjaw== IGdldGF3YXk= IGhpZXJhcmNoaWNhbA== YW5vaWE= IEJpdG1hcEZhY3Rvcnk= cmVhbG0= CWFw X2FwcHM= LWRpdmlkZXI= LmRyYXdlcg== IEhBUkQ= J107Pz4K LXBhY2tlZA== 5rK7 X1NUUlVDVFVSRQ== W1k= aVBhcmFt KGVx IGVuY29tcGFzc2Vz IFwKCg== LT5b JnV0bQ== Z3JvdXBvbg== c3RyYXRl RFk= b21vcnBoaWM= Jzpb IGdyYXZpdGF0aW9uYWw= IE1pY2hh IFRlbmNlbnQ= IGNvYWNoZWQ= 7Lac 0YPQvNC10L3Rgg== L21vYmlsZQ== TW91c2VEb3du YnVk IFlhcw== IFByb3ZpZGVycw== Tlo= CXJlcG9ydA== ZXJybXNn IGltYWdlUGF0aA== YWN0ZXJpYWw= IE1hbmdh d2lja2x1bmc= KHVzdWFyaW8= IikpOw0KDQo= LyoqKg== IG9yZ2FuaXNl SW5kZXhlZA== X1FVQUw= KFB5T2JqZWN0 IHN1cnJlbmRlcmVk UE9DSA== IE5PVEVT XFwi LWpvYg== IHNldmVudHk= IyMjIwo= IE1hbm9y IGRvd25yaWdodA== IHRpbWVmcmFtZQ== aW5zdXJhbmNl Y2hlY2tlcg== IFNFQ1JFVA== IGVjaG9lcw== IENhcm1lbg== LnNldEhvcml6b250YWxBbGlnbm1lbnQ= IGlzQ2hlY2tlZA== IFRPUg== X25u KCco RmV0Y2hSZXF1ZXN0 IFByaW50ZWQ= Rmx1aWQ= IFNUQUNL R0VT YWlnbmVk aWdvcg== LlVua25vd24= Q0JD IENhcmxzb24= LlVSSQ== IHBsaWdodA== L3N0YXJ0 IFBlcnNvbm5lbA== IFBSRUZJWA== LCoq IGxpbWl0ZQ== X2hlYXQ= Je+8jA== IERvbm5l Z2V0Tm9kZQ== IFNjaWVudG9sb2d5 IGNvbWV0 IHdlbmln QXNpZGU= IE1QRUc= Jz8= dmFyaWFibHk= LmVuZERhdGU= IHVuY29udA== IFNjb3Jlcw== IExvZ2luRm9ybQ== LmdlbmVyYXRlZA== LGNo LW1hcg== IE5lZA== IGV2ZW50SWQ= K3A= IFNJTg== L3Jlc2V0 LlJFQUNU IE1lc3Np X1JBTks= LndyaXRlRmlsZQ== IGNyaXBw ZXN0aGV0aWM= RVJTSVNU IHJlaW1idXJzZW1lbnQ= Q3VycmVudFZhbHVl IHVuaW4= RG93bkxhdGNo IHBhZGRpbmdSaWdodA== IHN0b2NrZWQ= Lycu IHJlcGF5bWVudA== dHJhaw== L2JhY2tlbmQ= INC40LfQvNC10L0= Q1NS IHByZXZlbnRpdmU= IHBhbnRhbGxh X3RyaW0= UGVkaWRv aG9zcGl0YWw= IG1hbmFnZWFibGU= cm91dGVQYXJhbXM= dGV4dHVyZXM= Li4uLi4uCgo= IHPDqWxlY3Rpb24= TmFtZVZhbHVlUGFpcg== IHBvbGx1dA== TW9kZXM= IExhdWQ= amF5 IFVycw== IHNpZ25lcg== IEpK IENoZXJva2Vl X0VYSVNUUw== IGR3YXI= ICgkKCcj IHJlZWY= Pnsk IEJheWxvcg== IE1vZGVsU3RhdGU= LV8= IFN0cnVjdHVyZXM= IHNvdXZlbnQ= U3BlY2lmeQ== KHBpcGU= IGZyYWNraW5n IEdQQQ== IGJlbGU= CQkJCQkJCSAgIA== IE1pbm9yaXR5 IHR1ZA== IG9wZW5uZXNz IElsbHVzdHJhdGVk IG94aWRhdGlvbg== IE5L CVVwZGF0ZQ== IEVNUw== IFRlZGR5 IGdlbmVyYWxz CU1hdA== IHJhZGlvcw== IEFudGlxdWU= Y29ub215 IFNxdWFkcm9u KScsJw== 5aOw IHlvdXJl IE1haW5QYWdl IGJlaGF2aW91cnM= ZW5naHQ= KEAiJUAiLA== IHRlc3RjYXNl IENvbXBpbGF0aW9u IGZsYXZvdXJz IEV4dGVuZA== aWxsYXRvcg== IGNvaA== IHNwbGluZQ== IEtH LXBheQ== IGNvbW11bmlzbQ== IEJ1c2luZXNzZXM= b2NraW5n Lk1heExlbmd0aA== YXNzYW5kcmE= cXVpcmluZw== YWRkZW4= IEplYg== X2ZhdWx0 W2ZpbGU= IHByb21pbmVuY2U= ZGlzY2lwbGluYXJ5 4oCUdGhleQ== X2V4dGVudA== IFZJQw== IGVudGFpbHM= LnBhcnRuZXI= IGhpcHBvYw== TGVhZ3Vl 55S3 d2lwZQ== LXNwaW5uZXI= IHNhbHV0ZQ== IFN1cmdpY2Fs KG91dHB1dHM= d29ya2Vk W3N0cmxlbg== YXBwb2ludGVk IEhlZw== IEFDUEk= KFte dWFsYQ== X3RvbA== IFJpdA== LlBheW1lbnQ= a293c2tp IHdhbG1hcnQ= cmVxdWlyZW1lbnRz IEZJTlNFUQ== X0JBQ0tHUk9VTkQ= IE9zYm9ybmU= KGVycm9yTWVzc2FnZQ== UmVwb3J0aW5n IGF1Y3Rpb25z IGNvbWJvcw== IE5vdGljZWQ= X29jdA== IHByaW1lcm8= dGFpcmU= X2hy INC80L7QtA== IGNvbnRyYWRpY3Rvcnk= PSJA YWNoaW5lcw== KG9wdGFyZw== IFBlbmd1aW4= IEFiYmFz IHN1YmxpbWU= IHBhZ2VhYmxl IERlZmVuc2l2ZQ== IGRpc3RpbmN0bHk= IEF1dG9tYXRpY2FsbHk= VW5kZXJzdGFuZGluZw== RXF1YWxpdHlDb21wYXJlcg== Z290YQ== ICI6Og== IHB1bHZlcg== IEJhdHRsZXM= IHVucGFyYWxsZWxlZA== VENIQQ== IGNvbnN0cnVlZA== LWFmZg== IHByZWN1cnNvcg== LWxmcw== IG1hZHVyYXM= IERhaXN5 IEFyYmVpdHM= Lk1hbmFnZW1lbnQ= CUlu IHJvYmVz IHNww6lj 4oCcKA== IG1hdGVybml0eQ== ZXh0ZW50 IFNwYWNlcg== RGlkQXBwZWFy CXVz LmdldFJlcXVlc3REaXNwYXRjaGVy KGNvbHM= IHBsdW1tZXQ= 7IU= IHsKCgoK w6lyaWNh IFNpemVz LmVudW0= LkhpZ2hsaWdodA== ICEhfTwv QVRURVJZ IFNvcm9z R0xmbG9hdA== 44KE IEplbm5pbmdz Pz8KCg== IFJvbWVv ID8+CgoK V2Vubg== IGNsaW1heA== IGNyZW0= X3RoYXQ= W+KApg== X2RvbWFpbnM= X1JFUExZ IGNvbXBsZXRh VkVTVA== X3BhcnRpY2xl IHNvcA== IGZhdGFsaXRpZXM= aW1wbGlmeQ== IFNLRg== IGluZnVzaW9u IEphdmllcg== IGJhbGxldA== IGFtaWdv LndhbnQ= IGNvbGxhZ2Vu IExhd3llcg== LlN0YXRlbWVudA== LnJ0 YmFhcg== RW5kUG9pbnQ= IEJlaw== U0hJUA== IHBhdHJpYXJjaA== IEF1bnQ= X1RN IG3DrW4= IG1hc3RlcmVk V1hZWg== IGVzcG9z PWxvZ2dpbmc= IHJpZ2h0ZW91c25lc3M= dG9ycmVudA== IGJzdA== X0NIQUlO IG91dHNraXJ0cw== KHJvdGF0aW9u ICcuJyk= aWdyYW50cw== K2xzaQ== IENDVFY= X1BIQVNF LmF6dXJl X1Byb2Nlc3M= dmFl IFRyb3BpY2Fs IEFua2FyYQ== aW1hZ2VWaWV3 X1JVTk5JTkc= ICopX18= 4bq/bg== KGNsaQ== c2NhdHRlcg== IHNjaGU= UmVnaXN0cmFy IGFpcmluZw== IHB5cGxvdA== aXNpw7Nu L2N1c3RvbWVy IHNpbXBsZW1lbnQ= IGNsYXNzeQ== IERXQw== IEJhc2hhcg== IERFVkVMTw== IFZpY2s= YXZhaWw= IEjDtg== X2V4dGVuZA== ZHJGYw== LmlzTm90Qmxhbms= IHBsYWlz fH0K IHBvcm5vZmls bGFicw== IGhhdXM= IG9yaWdpbmF0aW5n IHN1cnJvdW5kcw== IFFVQUw= bWVn L2xvZ2dlcg== W29iag== IGlycmVzcG9uc2libGU= IFB1YmxpY0tleQ== SE9ORQ== Oicv aWJveA== IEZWZWN0b3I= fHsK YXRhbG9hZGVy aGF3a3M= SERS IGVzY2FsYXRpb24= IFBvZHNEdW1teQ== ZWxpdGU= IHByZXN1cA== Q2FjaGVk Pkc= Lm9wdGltaXplcg== IFZpc2libGU= tIA= IG5lbg== IHBjcw== IElkbGU= W0FueQ== IGtleWJvYXJkcw== IENPTVBPTkVOVA== IHRpdGFuaXVt KG11dA== IExlZGdlcg== IHByb3NwZXJvdXM= ZXRyb2ZpdA== X0xM X3BhdGllbnQ= IHBkYXRh IGtvbnRha3Rl U3dpcGU= IGNoZWVyZnVs IEhvbmR1cmFz Il1bJA== IGhlbW9ycmg= IjoiKw== IGxlYXNpbmc= IGluc3RhbGxz IFBheA== IExvZ2lzdGljcw== IGtpbmV0aWM= IFBob24= X21vdmVtZW50 CWJ5dGVz IGNpbmNv IE1hZG5lc3M= Iikr IEpF X2lq U2NlbmVNYW5hZ2Vy IEJ1c3Q= cHRlc3Q= YWVh IGJlc3Nlcg== w61n 0LTQuNC9 KHRhc2tz KCIoIg== c2V0VHlwZQ== KG91dGZpbGU= CXJlc2V0 IEFSQw== IG3DunNpY2E= IFNoZWxm IG1pblk= cGNo IHdlaWJlcg== aXNzb3I= IHRyb3V2ZQ== CUJ1dHRvbg== IHJlZ2VuZXJhdGVk xaNp aW1hY2hpbmVyeQ== YmxvY2tpbmc= LmRhdGFUYWJsZXM= X2ZyYWM= IEFkdmFudGFnZQ== LnZpc2l0TWV0aG9k 6YeN5paw IGV4dHJhcG9s IHRlYXNpbmc= IEhpdGNo IEdlZWs= RVNDTw== IHdpY2g= CWF4 X2RlY29y IHNjcmVlbldpZHRo IFNvcGhpYQ== Rm9yZ290 LnVuaQ== IFZlbnR1cmU= X2NvbGxpc2lvbg== IGxhd21ha2Vy KEVkaXQ= YmxlcnM= IGdldE5leHQ= 4oCUeW91 TWVkaWFQbGF5ZXI= IEhvcmRl IENvbmdyZXNzbWFu b2JzZXJ2YXRpb25z CXByb3BlcnR5 IDwtLQ== Q3JlYXRlZEF0 dWJ5dGU= IHF1YXJhbnRpbmU= IGRpc3RyZXNzZWQ= X0FQQg== IEdvb2RtYW4= 44Kr IHJlY29tZW5k X1BSSU5URg== RE9ORQ== QmluZGFibGU= cnN0cmlw Y2VudGFqZQ== IFVuZXhwZWN0ZWQ= IFNDSE9PTA== IFByb2Zlc3Npb25hbHM= IEdQVXM= TGVzc29u RXhjbHVzaXZl IGF0cmF2 IERhbms= IExhd3llcnM= IFdhbHRvbg== Pltd IGFsb3Vk PSIuLi8uLi8uLi8= IGRlYmF0aW5n IEFWRw== X1ZPTA== L2NnaQ== LmRlZw== Omc= LkluZm9m TWVhc3VyZVNwZWM= LnNvbmc= bXRyZWU= dWxscw== Sm9yZGFu IENvdmVycw== IGF0dHJpYnV0YWJsZQ== IGplZGlz aWF0cmljcw== IHJvdHRlcmRhbQ== IG1lbGQ= IENvbnRlbnRUeXBl IG1hbnRsZQ== IGFsaWNl X2R1cGxpY2F0ZQ== L0ludGVybmFs IGZpbGVzaXpl CWZpcmU= cmVzZQ== b25kZXJl IGZhbWlsaWFyaXR5 IENyZXN0 IGthcm1h IHRvcmlubw== IG1lc2E= L3RlbXA= IGNoaXI= IE92ZXJmbG93 IHRlbmVtb3M= dW5paw== TkVYVA== QWxsZQ== IG54dA== TWFydA== IGF0bA== IHBlcmlvZG8= X3lvdQ== IH0pKS4= aW50ZXN0aW5hbA== LkFkYXB0ZXJWaWV3 IGhlc2l0YW50 IGNvbXBhcmF0aXZlbHk= LlVJbnQ= KHZpZXdNb2RlbA== IHNhbmdhdA== IFJlc3BvbnNpdmU= IFphY2s= 4oU= SkFWQQ== IEZ1bGxlcg== IOKdpA== LkNvbnN1bWVy IGFuaw== IHJlYWN0b3Jz ZnVjaw== X3JhdA== IHNlc3Npb25GYWN0b3J5 X2JhY2t3YXJk IHNjcmFtYmxlZA== CXRo IGluc2Vuc2l0aXZl IGNoYW1wcw== IG5naW54 IGNvbmhlYw== IEphc3Blcg== LmZt U3RyaWN0RXF1YWw= YWNoc2Vu LU5vdg== bGFzc2Vu LmludGVncmF0aW9u KGxibA== Q29tcG9zZQ== IEZvbg== w5o= R3JhdGlz IExpbWU= IEFkYXB0ZXJWaWV3 IHBvaXNvbmVk YW5jaG9ycw== 6K6+6K6h J10/PiI= IHByb2N1cg== SXRhbHk= Lk1PTlRI IExVQQ== IExpdGh1YW5pYQ== IEhlYWRz X0NIVU5L IFBVU0g= QXNwZWN0UmF0aW8= IHdlZw== IHZpZHM= IFdlaW4= CUlOVA== c2Vzc2lvbklk SW5kdXN0cnk= IGRlbm91bmNlZA== SktMTQ== IFZhbmVzc2E= LklkZW50aWZpZXI= cHJvcHJp INC40LM= IHTDqWNu IG1vc2FpYw== U3RyZWFtUmVhZGVy LVRo Zm9ydGg= IGFkaGVyZW5jZQ== YmF0ZQ== IGtuaWdodHM= c291bmRz IHNhbGxl T01FVA== 44K544OI LXRt IFJoZQ== LkZpbGVPdXRwdXRTdHJlYW0= 5YiG57G7 IEVORw== aG9saWRheQ== IENvbmdyYXR1bGF0aW9ucw== KSgK IGFnZ3JlZ2F0ZXM= SE9PSw== ZXdpcmU= U2VuYXRvcg== IGVtYmVkZGluZ3M= ZXB5 KENPTQ== IHJvYmJlcg== w6R0ZXI= d2FuZw== X3RlYWNoZXI= IHJlc2VudG1lbnQ= IGxldHR1Y2U= ZXJyZXVy KGlj IFRhY3RpY2Fs IENvbnRyYWN0cw== IG3Dpm5k IHNpdGlvcw== IGJhc3RhbnRl IG51ZXZvcw== CU5kckZj IHByaXZhdGVLZXk= dWNjaA== TU1kZA== IOi+k+WHug== dW1iYQ== QGZvcmVhY2g= OiIpOwoK IHNsaXBwZXJ5 IEtleXN0b25l IHBpb25lZXJpbmc= X3RyaWFuZ2xl KCIK CQkJCQkJCQkgIA== IEludGVydmVudGlvbg== U0NJ IGNKU09O IHRlcm1pbmF0aW5n 67mE IGJhYnlz U3Vic2V0 IOuh IHNldWxlbWVudA== IG11ZXN0cmE= RW50cmU= 5Lul5LiK bmdv ImJ5dGVz UVJTVA== IHlwb3M= cGVyc29uYQ== IERlcGxveQ== Y2Vl IOCu LmdvYWw= IGhhYml0YXRz IGlzQWRtaW4= IGV4cGxvaXRpbmc= IHZlbnRpbA== IEJhbGxz 2KfYqA== IG1pbmRmdWxuZXNz KGt3YXJncw== IHJlc2VtYmxpbmc= IGNob2ly IG9uQmFja1ByZXNzZWQ= IFNFQ1VSSVRZ L2d0ZXN0 IGp1c3RpY2Vz IGludGVnZXJWYWx1ZQ== YmxhaA== IEFpbQ== X2ZpbmFsaXpl a2Vo IENvbXBsZXhpdHk= IGF1Z3VzdA== Z2V0RWxlbWVudHNCeVRhZ05hbWU= IHByZWFjaA== IHByb251bmNpYXRpb24= IFRyYXNo LXBlcmNlbnQ= X1BSSVY= IEh1bnRz IEN1cnNl dWVsbGVu IGhlYXZ5d2VpZ2h0 WGk= CXNlbGVjdGVk IE1jQ295 5byC5bi4 fD0K IEJhdHRsZWZpZWxk SXRlbUltYWdl IGRlZHVjdGlvbnM= IEVsZW1lbnRhbA== KCkpOy8v IEJ1cms= fSkNCg0K c3dpZnQ= L2Z1bmN0aW9u VXN1YWxseQ== X1N0 X2ZlYXRz IElzVmFsaWQ= IHphZA== SW1hZ2VDb250ZXh0 IGNsYXNzbmFtZQ== IGRvbm5lcg== IC0tPgoKCg== IG1vdG9yY3ljbGVz KycvJys= IHNldEJhY2tncm91bmQ= XENNUw== LkFsbEFyZ3NDb25zdHJ1Y3Rvcg== IExleGluZ3Rvbg== LmV4YW1wbGVz IFB1cnM= UHVzaE1hdHJpeA== ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 LmFkZFRhcmdldA== cG9yYQ== RnVsbHNjcmVlbg== IGdvb2Y= aGxlbg== w6RnZQ== IENVUkw= IEludGVyZXN0aW5n IHJldHJpZXZlcw== X09iag== aW5uZXNz LS0tLS0KCg== LnRzdg== KElN IEJyYXZlcw== X0lTUg== b3N0aQ== 4buT IEV4dGVyaW9y IENvdXJ0bmV5 IHJlc2lkdWVz VGllcg== Lio7DQoNCg== OmJsYWNr d2ViVmlldw== InBhdGg= IG1hc2E= XSE9Jw== IE1hdGNoaW5n ZHVy SnZt PWNvbnRleHQ= X1JJTkc= IHByb3BvbmVudHM= IFFTdHJpbmdMaXRlcmFs IGluZmxhdGU= PEZsb2F0 IERvbm92YW4= KElP SE9SVA== IGRpc2FncmVlZA== aXNreQ== YXNraW5n X1ZFQw== SEFTSA== IG1hdGhz IExhc3RseQ== IGRlcHJlc3Npbmc= LmVzdGFkbw== IGhhbG8= X2JsZQ== IEdhYnJp PFRSZXN1bHQ= IHRyb29w IGVudW1z IFNFUklBTA== bnVtZXJ1c2Zvcm0= IENoaWM= LWV4ZWM= IGJhY2tsb2c= IEJyYXZv UG9wTWF0cml4 IEJydXQ= IGJsb3F1ZQ== IGp1bml0 IFdoaWxzdA== 0YbQuNGP ZmV3 rIE= IFZhcmlldHk= IFBvbGl0aWNv ZXhlbXBsZQ== VXNlckNvbnRyb2xsZXI= IGhhcmRlbmVk YWtlbnM= IFNlZWRlcg== b3dhcmRz Y2hlY2tzdW0= IFNhaQ== VkVSVEVY UmVzcG9uc2Vz cGxvZGU= LWhhcmQ= U3BlY2llcw== UmVuZGVyVGFyZ2V0 X0NIQVQ= IHNob3djYXNlcw== aXRpbWF0ZQ== X0ZPUkVBQ0g= X0NPTkZJR1VSQVRJT04= ZWJh IEVzc2VudGlhbGx5 KHBvbHk= LWxlYXJuaW5n IGfDpXI= X3N1Y2M= KE1hdA== IGNvaWxz YnJhcw== IGFtYQ== X21hdGNoaW5n aW5kdXN0cnk= IE5vcnJpcw== IEV4cG9zdXJl IHBlcnZhc2l2ZQ== IGRleg== 5peP IGVsZWN0cm9uaWNhbGx5 RERS IFN0aW0= INGE0LDQudC70LA= IG1hZHJl bmVtb25pYw== a2ljaA== IEZyYWdlbg== IFJ1bmU= IG9uVG91Y2g= CXNjYWxl IFBoYXJtYWM= IE1hbmRhdG9yeQ== IFN0bw== IEJyYW0= X0xlZnQ= X1NUQVI= KX19Ig== c2Npb3VzbHk= 0LXQt9GD0LvRjNGC 56uZ Z3Jhdml0eQ== K0M= fTw= QU5HRVM= IGNvbnRyYWN0aW9u IFdhbGxwYXBlcg== LkZhY2U= IHByw7N4aW1v LmZpZw== bGFuZ2xl INC/0LXRgNC10Lw= X0NSRUFU QmFzaWNhbGx5 IGF3YWl0cw== IENIQVJBQ1RFUg== IHZwbg== SG9u IGV2aXRhcg== IFVuZG8= UVM= IEVkbXVuZA== IG1pcmFjbGVz IFRpbWluZw== IFZlbmV6dWVs LlNxcnQ= b2lkYWw= IGVycnM= LS0tLS0tLS0KCg== IERFQ0xBUkU= IHZpZ29yb3Vz YXJnb24= IGFnZ3JlZ2F0ZWQ= IFNoYXJrcw== IEN5cnVz IHJlcHLDqXM= bWF0Y2hlcg== IGd1aUFjdGl2ZQ== PyIpCg== IEpOSQ== LmNoYXJzZXQ= J3w= IGdvYXRz aW5kcmU= LmdldERheQ== IHBhcnNlcw== IElocmVu X18uJy8= aWxlZ2Vz bmF2aWdhdGU= IEJ1ZmZ5 UEhQVW5pdA== IG1hc3Nh YWx0YXI= JyldLAo= IG92ZXJzZWVz IHt9DQoNCg== IFdMQU4= Y2xpcGJvYXJk X0luc3RhbmNl IGdsYWRseQ== KHNlcmllcw== IHZhZA== IGdldFBhZ2U= W29m LkludGVydmFs aW51cw== Y2hhckF0 b2xlbQ== YWludGluZw== LkFG X21pbm9y X0lM O3k= IFRlbGVjb20= IFBvbmQ= IG1tYXA= L14= IFlhaw== IFJhYmJp ZW5vcw== CUNvbnRleHQ= LnZlYw== KEF0dHJpYnV0ZQ== IGNhdGVnb3JpemVk IGRpYWJldGlj KHJhbms= IHBhw61zZXM= IEAiIjsK IGppa2E= YXJzaXR5 IC8o LkhlbHA= LWJhbm5lcg== IEJ5cm9u IHVucmVhbGlzdGlj IHxf IFN0b3B3YXRjaA== IGV4ZW1wdGlvbnM= L2NhcmRz IHRvc3RyaW5n bmdpbmU= IHNwcmF3bGluZw== IGx0ZA== IFVuZGVyc3RhbmQ= INGC0LXQutGB0YI= ZXdpdG5lc3M= IGNhbGxCYWNr LVllYXI= RnVlbA== PSo= IGludmVudG9y IGJlc3RzZWxsaW5n IGhhcmRuZXNz IFR1cw== IGtleW5vdGU= IGJlYXU= X2Fib3J0 IHByb3Bvcg== IGNvbWVyYw== X1JFRkVS UGFz aGF2ZW4= LWZpeA== Q2Fub25pY2Fs IGxvb2tvdXQ= RXhwbG9yZXI= IGNlcmNv KHNlbnNvcg== IEpzb25TZXJpYWxpemVy IHZva3Nlbg== IGJyaWdodGVzdA== IHN0YWJiaW5n LkJl LmFkZFByb3BlcnR5 IEh1bXBo IGlzQXV0aGVudGljYXRlZA== 5rKh IHBvcmVz IGplZ28= IFNob3dpbmc= ID8+Ij4NCg== X0NPU1Q= aWxpbmVhcg== IFdvcmtzcGFjZQ== IHNwZWw= YWdvZ3Vl IE1pbGxlbm5pdW0= IFBvcHVsYXRl IG5pZA== LnBhcnNlQ29sb3I= U29sYXI= IEdhZA== IOykkQ== IEthbXA= CXJt IGJlbno= IEhvbmVzdGx5 IGVsZWN0cm9kZQ== IFByYWlyaWU= IFBST0ZJTEU= IE9yaWVudGFs IE9MRUQ= L2NvcHlsZWZ0 YXdhaWk= KHByb2R1Y3Rz KVw8 LWNyZWF0ZWQ= Lk1hbnlUb01hbnk= Ikhvdw== INCy0YvQvw== IG1pdG9jaG9uZHJpYWw= X3Rlc3Rpbmc= KGNyZWF0ZWQ= IGdldEZpZWxk X0VWQUw= XS4i IEZTTQ== IFJpdGE= IOWPguaVsA== IGPDtHQ= IEluc2lnaHQ= CW15c3FsaQ== X3RpbWluZw== SURP KSkpKSkK Q09WRVJZ LmltYWc= Q0RG bHVzdA== aWNrdA== X0ZQ LicsJw== Z2Nj IGt1cno= X3B3bQ== IG9kcG93aWVk IEJhcnJpZXI= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo= cGFr LUlzcmFlbA== IFJ1dGdlcnM= IHNlbGVjdGVkSXRlbQ== IFJhbWlyZXo= RmFybQ== IGNhbGVuZGFycw== Z3ppcA== IGJsb2NrYnVzdGVy IFBseW1vdXRo 55yM cmVzcG9uc2Vz LkRpYWxvZ0ludGVyZmFjZQ== LWdyYW5k IGdldFNvdXJjZQ== IGRlanRpbmdz IHRpZXRlbg== IGNvbmRlbW5hdGlvbg== IGNvbnRpbnVhcg== Lk1vY2tNdmM= L2VuZ2xpc2g= IE1lZGlhUGxheWVy Y29tcHV0ZWQ= IENsaXBwZXJz KGRlbGVnYXRl LlNsZg== IOuhnA== IFRpZGU= IGlocmVt IFdhbg== 0YPRjtGJ fT48 RGlzY3Vzc2lvbg== IHdhdHRz LW1pbnVz IEp1bGlldA== 6ZuF IGNvbmNsdWRpbmc= YW5kc2NhcGU= IMO6bHRpbWE= IERFUlA= IHNpZ25VcA== IFNlY29uZGx5 V0FJVA== bGRz LmNhbGxiYWNrcw== KGhvdXI= aW1hdG9ycw== dm9sZW50 QUFG ZWRyaXZlcg== IE1hdGhlbWF0aWM= PFR1cGxl IC8+Jw== e2o= X0FCT1JU RXRoZXI= IGVkdWNhdG9y IHByZWNhdXRpb24= IGZpbmdlcnRpcHM= Z2V0VmFy Y2FtYXRhbg== LWRlYnVn IFJBRg== W2FyZw== IHJhY2Vk IHRzdW5hbWk= LmZsaW5r IGdseWM= dWtv IE11bHRpcGx5 IHJlZGlzdHJpYnV0aW9u QUdP IFJvdXRpbmU= IG9wcg== KGxvd2Vy IEZ1bmt0aW9u LmRr IGVndA== X0JBU0lD c3lzY2FsbA== IExTRA== IER1cGxpY2F0ZQ== X3NlbGw= IGVycm9ySGFuZGxlcg== X2lwcw== IGVydg== YW5uaWU= KHJlc291cmNlTmFtZQ== IGJvdHRsZWQ= IGNyYXdsaW5n ZWdtZW50 LnNldFRhZw== IHJzcw== IFF1YXJyeQ== X2V4YWN0 Lmp3dA== IEJvYXJkcw== b3Bp IG5hc2Fs IFhZWg== LnVk Tm9ydGhlcm4= IGFjdGl2YXRpbmc= ZWR4 b3ZhaA== IGluZHg= QWxlcnREaWFsb2c= IHRpZW5lcw== YW5ueWE= X3Bhbg== KGRlY2ltYWw= LkRpY3Q= IHN1YnNpZGlhcmllcw== UHJvZHVjdE5hbWU= RmV3 ZGF0bw== b2RpZWQ= LXVuZGVy IOqygw== 54mI5pys YXRpc20= W01hdGg= Lic8 KGluZmlsZQ== IGRlbm90ZXM= JGNsYXNz X1NFQ1VSSVRZ IHNld2FnZQ== bWVsb24= KENoYXJhY3Rlcg== L2dpdGh1Yg== IGdsYXJpbmc= Lkd1aWQ= X3NwYXJzZQ== IE1hcmdpbg== X2Rucw== IG1laW5lcg== IGxlZnRpc3Q= CWxvYw== YWJ5dGVz IGVxdWlwbWVudHM= ZXhwbw== IFNvbWVyc2V0 RUs= 5o2i IGxlY3R1cmVy IG1lbWlsaWtp 5qC4 57Sg cHJvbg== OnBvaW50ZXI= Ym9ycm93 IFByb3RlY3RpdmU= X2Nm INCV0YHQu9C4 YnBw JzsKCgoK YXR1cmFsbHk= X05BVg== IHBlcHRpZGU= PmQ= IGlmc3RyZWFt X0ZBQ1RPUlk= Jyk7Ly8= am9pbmVk bW9uZw== IHRpbWVzcGVj IGRlc3RhYmls IGF1dG9w LWxpbWl0 cHVibGljYXRpb24= IERlbm4= Lk1lbW9yeQ== KHNrYg== IEFuYWhlaW0= X1JFVFVSTlRSQU5TRkVS b3VldXI= KF8oJw== bGVndA== aXN0aW5ndQ== CXByaXY= IHJlZGlyZWN0cw== TXQ= IGFsbGVlbg== IFBvaW50Rg== IG9taW4= IGNpdHQ= IFRhZ2U= IFdhbGxz 4buJ IG9jY3VweWluZw== eEJG cmFuZ2xl IHJlbGF0aW9uYWw= LW9yZw== IGpwZw== LWRlcml2ZWQ= IG1hbGZ1bmN0aW9u IEJlbnNvbg== KHNjcm9sbA== IFhE SG9seQ== KGNvbW1hbmRz IHRpcHBpbmc= IHByaW1pdGl2ZXM= IHNleGxl Q2FsbENoZWNr IE1BU1RFUg== X1RFQU0= LnNldFJlcXVlc3RIZWFkZXI= X3NwZWNz IHNlcmdl Lk1hc3Rlcg== IGltcw== LlNwcmluZ0Jvb3RUZXN0 cGF5cGFs IFdBTlQ= Lkluc3Q= IENhcnBldA== IHdyb25nbHk= KCQoJy4= IGJpbGQ= LlJvbGw= IFVyYg== LWNhbg== 44GP44Gg44GV44GE b2xpYmVyYWw= PCEtLTw= 4oCUZm9y IG5lZ2F0ZQ== KG5vcm0= YWVj X3NhbGFyeQ== cGxhaW50ZXh0 b2Rlc2s= IEJvc2No U2NpZW50aXN0cw== aW5kZXhlcw== IG1weg== IGdyb3VuZHdhdGVy fX0pOwo= 0LDQu9C40Lc= IGVybw== IHByZXNjcmliZQ== IEV4dHI= PEFycmF5TGlzdA== IGF0cm9jaXRpZXM= QXJlYXM= IFRJbnQ= KHBsYXllcnM= IGRhdGFi IHd5bQ== 44Gb IGR1YXM= X3Bvc3NpYmxl IGluc3RydWN0aW9uYWw= aXRpb25lcg== L2F1ZGlv ICAgICAgICAgICAgICAgIAoK c3RvcmVk T01QSQ== IGFwcHJlbnRpY2Vz VGVuYW50 IENvdXQ= IGNvbnRyYWNlcHRpb24= TG9hbg== X3Zpc2liaWxpdHk= J3x8 LlBhcnNlRXhjZXB0aW9u IGNvaW5jaWRl LmdldFdpbmRvdw== IE1hcnRpYWw= X3Rscw== L2Jvb2tz IG91dHJhZ2Vk ICh+KA== c3Ryc3Ry IEJveGVz 6YO9 44Ol Uk9J RnVuY3Rpb25hbA== IFByb2Q= PFRlc3Q= IHZpZGVvdA== IGFtb3Jl YWJicg== IE1vbnVtZW50 IHJlaW5mb3JjZW1lbnQ= IENvY29udXQ= LnNlbmRTdGF0dXM= Lmtl IExlYXA= X2FydGljbGVz UGll IElydmluZQ== QUJDREVGR0hJ IEV4cGxhbmF0aW9u Z3JvdXBCeQ== IG92ZXJoZQ== IGFuw6Fs IGNsYXNzaWZpZXJz IE1peGVy L2NvbG9ycw== IFVzZXJEYXRh X0FSUk9X X3ZsYW4= LkNyZWF0ZURpcmVjdG9yeQ== IEhhaw== IEJvbmVz IEFwaVJlc3BvbnNl IE1vb2R5 REFD Z2V0Yw== 6LaF LkZpcmU= 6aM= IGhpdHRlcg== ZnJlc2g= 4LmB IENoaWxkaG9vZA== eG9y LWh0dHA= IE1PUg== LnNlbmRLZXlz X3NoYXBlcw== IFVwcw== IEFycmVzdA== YXp6aQ== X29wY29kZQ== Lk5vbWJyZQ== IHByw7Nw IHp4 IHRyZW1lbmRvdXNseQ== U3BhY2Vz ZWNj IHZlbHZldA== IG1lbW9yaWE= IExBUA== LkRyYXdMaW5l IHRhcmdldFR5cGU= cmVzdHJpY3Rpb24= IERSVg== W3RvcA== IeKAmQ== L2NoYXQ= IHNvbmlj VG9yb250bw== b3dp LmRvY3M= IEluaXRpYWxpc2U= IDwh LnRibA== LlByZXBhcmVkU3RhdGVtZW50 L2RvbQ== LnJvdA== X1BST00= S2VlcGluZw== IGhhcmdh IGpvcm4= IGlkZW50aWZpYWJsZQ== W2lw UGluaw== X0hlYWRlcg== w5E= YWRsZQ== 572R57uc c2VxdWVudA== QWN0aXZhdGVk dG1wbA== IFBhbGw= IGZhdGFsbHk= fX0pCg== UG9wb3Zlcg== IE1jTGFyZW4= Q2hhbmdlZEV2ZW50QXJncw== IEZvcm1hdGlvbg== TmFt bmV3c2xldHRlcg== LmZyb21TdHJpbmc= X2ltbQ== QVBQRUQ= LG5vZGU= KGRldA== IHBhcmFsbGVscw== IGxhc2Vycw== IGNob2NvbA== L3BvcnQ= YWZmZW4= KGRldGFpbHM= IHJlcGxpY2F0ZWQ= QXNTdHJlYW0= YXJtYWM= XV09 YWxhY2g= X3Nlc3Npb25z QWxnb3JpdGhtRXhjZXB0aW9u IHZlcmJvc2l0eQ== LkNvbHVtblN0eWxlcw== KFVTRVI= IHNsZWVwcw== IGFxdWF0aWM= X2J1bGs= PScuLw== b3VybsOpZQ== IE1TRA== IEJsb2M= IEdsZQ== IHJlcHJlc3Npb24= IGVudG9uY2Vz CQkgICAgICAgICAgICAgICAgICAg WU5D LkFsbG93R2V0 IHR1cnRsZXM= ICd+Lw== ZXNzb24= IERJRQ== IEFxdWE= IFNFUQ== Ozs7Ozs7Ozs7Ozs7Ozs7Ow== LnB1dHM= IE1BSw== KEN1c3RvbWVy IGRlc3NlcnRz IGVtYmVsbA== IHRheGVk 5bqX IHNjaGw= cmVzY28= IEZyb2c= IFBlbmRpbmdJbnRlbnQ= X0xvY2Fs L3NlY3VyaXR5 IFJveA== IHNwb2lsZWQ= X1dJTkRPV1M= SmVubmlmZXI= IGRhdGk= VW5sb2Fk LmdyaWR4 KHN0YWdl 4buX U3FsQ29tbWFuZA== Lm14 IGJsaXR6 IEZvcnRyZXNz IEJyb3dzZXJBbmltYXRpb25zTW9kdWxl d2luZQ== TlNF LXJhbmtpbmc= eXJl IGxpbmthZ2U= w6Fr kZw= YXRzYXBw IEN5Y2w= IGVjb2xvZ3k= IGJsYXRhbnQ= IFBlcmY= IFhpYW9taQ== IERvcnRtdW5k cmVzdWx0U2V0 IGdpw6A= IGZhdWNldA== IERhbHRvbg== IGZyZWVz QlVGRg== LnBhcmFsbGVs IEFzdHJvcw== IFZFQ1RPUg== IHN0YW5kb3V0 w7Ntbw== IGZyYW1lYm9yZGVy X1BBUkFNRVRFUlM= IEZhbGs= IERpZ2l0 IGVsZWN0csOzbmljbw== IHZlcnI= VUlBbGVydFZpZXc= KFNxbA== LUlORg== IikpKTs= JycK KEVGRkVDVA== IFp1bQ== X0RQ KV07DQo= IGFudGVubg== IGFiYnJldmlhdGlvbg== IHNlaXNtaWM= X1RSQU5TTA== tZw= Lk1pbGxpc2Vjb25k LGxhdA== IEFuY2g= X01vZA== QWxyaWdodA== ZGRh IMKl VU5ETEU= INC30LDQsw== IHN1bGZ1cg== IFNpdGg= IE5pbWJ1cw== IEV4YW1pbmF0aW9u X3dpZmk= fWApOwoK IHNlbnNhdGlvbnM= YWZz X0NMUg== IGluZmluaXRlbHk= IHN5c3TDqG1l X2ZvbnRz SW1wYWN0 UG93ZXJlZA== IDw9Pg== X25lZWQ= REVDUkVG IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v IFJlcG8= Z2V0U2VydmljZQ== JG4= X3BjdA== RXJyZXVy IE5HT3M= ICoKCgo= LmF0YW4= X1RNUA== IGNvbGxhcHNpbmc= IHNobw== X1BDSQ== Lm9wZXI= KGFkag== IGdpb3Y= Piku IGluY29udHJv YXJkYQ== IGFwZXg= IG1lZGlkYQ== IFNoZWlraA== IEFybWVuaWE= YXNzb2NpYXRl LXdvdw== IFR1cm5pbmc= IEZyZXVk IEZvb2w= IExEUw== LS0tLS0tLQoK b2xzb24= LkZJTEU= X2RldGVjdG9y RG9taW4= IGRlcGxveW1lbnRz IGZhcmV3ZWxs KGJpbmQ= IG5vdmljZQ== dGRvd24= IGdldEVsZW1lbnQ= IHZlbGl0 YXN0aGFu CWNoYW5uZWw= X0ZSQU1FQlVGRkVS LnRyYWlsaW5n LnNldEVkaXRhYmxl Oyw= IElERg== X1BC Z2V0TGFzdA== IENvYXN0YWw= IEhhbmR5 bGluZ2Vy 44Gn44KC UGVyc2lzdGVuY2U= LmdldFNlcnZpY2U= INC+0Lo= IG5vdHdpdGhzdGFuZGluZw== KFBS VU1C J10pKXsNCg== ZW1icmFuY2U= ZXhjZXJwdA== YXF1 X2Jsb2M= IFByb3Zpc2lvbg== IE1jRG9u IEdvbGRiZXJn IGNvbXBvbmVudFdpbGxVbm1vdW50 IGJhc2VQYXRo LWZpcmVk IGZvbGxhbmRv IFRpbGVz QGVuZGZvcmVhY2g= RU5DSUw= IEJveGluZw== aXF1ZXI= QWNoaWU= RW51bXM= QmFzZVVybA== KHNjYW4= IFBhc3NpdmU= YWJlbGxh L3Nu Lm51bWVyaWNVcERvd24= IHZlcm4= bG9jYWxpemVk IE1peg== IHJlc3VsdExpc3Q= L3Z1ZQ== RVJWSUNF Lm9k IGxpZ24= IFN0cmluZ1Rva2VuaXplcg== IHRyYWc= QWNjb3JkaW9u IG5vcmVmZXJyZXI= bXNjb3JsaWI= w6F0aXM= Ynl0ZXI= IHNob3dkb3du IHNlbWFpbmU= IC0tPg0KDQo= IE1haG0= fSI7Cgo= IGRx IFB1Ymxpc2hlcnM= IEFtcGw= IERhbmllbGxl IHRlcm4= 6LW3 bm/Fm8SH ZWlu IEFzeW5jU3RvcmFnZQ== dW5nZXI= cm91dw== IHNjaXNzb3Jz L2Fzc2VydA== LmJ1Y2tldA== L2FyY2hpdmU= X01hbg== IGludG9sZXI= ICgpPT4= INCS0Ys= IHNhaQ== Lnh5 LiINCg== IHVyaW5hcnk= ZXN1Yg== SVNUSUNT IM66 IGNvbXBsaW1lbnRz IHR5cGluZ3NKYXBnb2xseQ== aWhhcg== RXhwYW5zaW9u IFNlcnZpbmc= X3N0dWRlbnRz IFhCT09MRQ== KGls IOyymA== IGrDsw== KHRvbA== KEpT CUNH IERSQVc= dHdpZw== IG9hdA== X3Ntb290aA== IENTTA== IG9zb2I= IGVuc3Vpbmc= IGJhbmtlcg== IEJhY2twYWNr X3Bpbmc= IHdpc2hsaXN0 PWF4 CSAgIAo= RGlzbmV5 c3RlYWR5 Ij4l IHByb3BoZXRz IFpY IG1pbmltYWxpc3Q= LlBMQUlO U2VhdHRsZQ== Lm9yZGluYWw= IFBJUEU= IHJldG9ybmE= IGp1Z2Fkb3I= IEJyZXQ= IOKUnA== IHBsdXNo VUxBVE9S U29ydGluZw== LmdyaWR5 ZWN0b215 X2FjdGl2 cmFjaw== SW50ZXJhY3RpdmU= IEFudGFyY3RpY2E= IHZlbmdlYW5jZQ== ZW5zbw== X2tub3du dXBwbGllcg== Lk1vZHVsZXM= IENvbm5lY3Rpb25TdGF0ZQ== 6ZqQ6JeP QEZpbmRCeQ== IHBsYWNlcg== XG1vZGVs PCgpPg== LmlzU3VjY2Vzc2Z1bA== LWdvb2Q= Yno= IERyYWNv QXNzaXN0YW50 LWV4dHJh 0LDQsdC70LjRhg== IGh5cG9jcmlzeQ== IHRzdA== IEFncg== JHR4dA== IGxvZ2lzdGlj bGljZW5zZWQ= IEhvZg== IHRhdA== KGl2 IGludG94aWM= cG9zdElk X3N0cmlrZQ== IGh1bWlsaWF0aW9u cGNvZGVz InN5bmM= KHJlY2lwZQ== K04= cmVudGU= CUNsaWVudA== eWNvcGc= IFp1cmljaA== IFByb2ZpbGVz Q291bnRyaWVz IHBpY3Q= IHJvbGxvdXQ= cmVxdWVuY2llcw== IHBhdGNoZWQ= IGNhcnRyaWRnZXM= IHNoYWRpbmc= SmFy IHNhbHZhZ2U= IFRheGVz IHN0YW5kYnk= YXBvcmFu RWlnZW4= LmFuZ3VsYXI= IE5lc3RlZA== 5Lqr IGlzVmlzaWJsZQ== IER3aWdodA== X0JSQU5DSA== LkRlbGF5 IGtlbmQ= IGZhY2lsaXRhdGVk LmZsYXRNYXA= IHNhbnRh CVNlbmQ= L21lc3NhZ2Vz IG9mVHlwZQ== CXN3YXA= I3BsdA== IFR1cmtz TkVT IHByb2dyZXNzaXZlbHk= IFJlc2lkZW5jZQ== IFRSRUU= IG5vZW4= ZGlv IG5lbGxl IHNvZ2Fy aXR0aQ== d2Vla2x5 IGFtYmlndWl0eQ== X1NldHRpbmdz V2FyZQ== Lm5lbw== X0RTVA== IOaWuQ== cHJlcA== bG9iYnk= QGVtYWls L21vdmll IGZ1bmtj ICAgICAgICAgICAgICAgICAgICAgICAgICAgCg== wq1z IGd1YXJkaWFucw== LXBvcw== IGNvbmZpZ3VyaW5n IENQUw== IERldXM= IHZpZMOpb3M= X2VtcHJlc2E= IHNsYXBwZWQ= PE1vZGVs IHVuZGVyc2NvcmVz VWg= LmFjY2Vzc1Rva2Vu U0VUUw== IFNwYXJzZQ== IENhbGQ= OnBhdGg= IFNlcnZlcnM= PWJhdGNo IGtuaXR0aW5n IHhh IHNlYXJjaEJhcg== IHNuYWc= IGluZnVzZWQ= LmJhbQ== bGV2ZXI= IHRheG9ub215 w44= IGF0dGFjaGluZw== IGhlcm4= X05PUA== Q2xpY2thYmxl KFBhcnNl IER5bmFtbw== LWJ1aWxkZXI= IGRlcmVn IHNjYXR0ZXJpbmc= 6L+b6KGM YW56aQ== IFNoZXBhcmQ= Ij4nLAo= X1hERUNSRUY= IEJ1enpGZWVk X01BUkdJTg== UExPWQ== LnNtYWxs IG1pbWVUeXBl IGhvbG9n CWNhbWVyYQ== bGlhcw== IHN1c3BlbnNl b2R5bmFt YmF1 IGdyYXZleWFyZA== X25hbWVk IjoiJw== ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== IGdhbWVPdmVy IExFTkdUSA== CXNjcmVlbg== IGRvSW5CYWNrZ3JvdW5k X2RlcGVuZGVuY2llcw== IHJ0Yw== L3Vw X1JPTQ== SGFsbA== IGRlZmljaWVuY2llcw== KHRl JyM= X2VxdWl2 IHByZW9yZGVy IEF4ZQ== 0L7QvNGD LnNlbmRGaWxl IGZpbHQ= IExpbWl0cw== IENhdmFsaWVycw== LmRpc2NvdW50 4oaQ IFdpdA== UVJTVFVW IGlq IHRlZ2Vu IDoiLA== ZGlmZmljdWx0eQ== cHVua3Q= IEVtYWlscw== Y2hsb3I= KGZ1bg== LlVpbnQ= IFN0YWxs X3ZlcmlmaWVk dUQ= RmlsZVR5cGU= IHBsZWFzdXJlcw== IGp1ZGljaWFyeQ== IHNoYW0= aXB1cg== X1BMVVM= b2ZmZXJz KGZvbw== X0dU CWNvcmU= RU5USU9O IExpYmVyYXRpb24= Q29tbWFuZExpbmU= X2RlcGFydG1lbnQ= LkFy X25laWdoYm9y IFN1Ym1pdHRlZA== IDwhLS1b IGxvY2F0aW5n Lk1hcHBlcg== X3N0cmVuZ3Ro Wy4uLiw= IEphbA== L2xvYWQ= IGJ1ZmZz IG1vdG9yaXN0cw== CWNz YXNjZW5kaW5n IFdoYXRzYXBw IE5hc3M= X0NPTFVNTlM= TGVvbg== cHBl ZWx0YXM= IHRqZWplcg== X0tFWVdPUkQ= cXVhbGlmaWNhdGlvbg== aHJh IHJpZGljdWxvdXNseQ== JGluZm8= RkVBVFVSRQ== ZG9lc24= IEtX IEVudW1lcmFibGVTdHJlYW0= X01BVA== IFN0cmVhbUxhenk= IHNjcmF0Y2hpbmc= LnRpY2tldA== IHNob3J0Y29taW5ncw== ZWxsaXBzaXM= PWN1cnJlbnQ= IGNyZXN0 IHdob3Jl IFBldHJvbGV1bQ== Y29udGV4dHM= IOat LXB5dGhvbg== KGpzb25PYmplY3Q= IFByaXNt IHlhY2h0 t6g= Zmxhc2hkYXRh IGxlaWNodA== IE1vcnRvbg== IHN0ZXJsaW5n X2l0cg== X3Vk RmFjZXM= IGhpcmVz ZmZh Jyx7Cg== LWNhbWVyYQ== X1JFQVNPTg== IEhlbGVuYQ== cnVn aWdodGx5 IHBlcm11dGF0aW9ucw== IFRvcmFo IOaYr+WQpg== CXJlY29yZA== w4A= LmdtYWls Rm9ydHVuYXRlbHk= KE1vZA== T2NjdXJyZW5jZXM= IGRlcHJlY2k= IHZhZ3VlbHk= L1o= Vk4= LnRw X2dlbmVy IHs6P30iLA== d2FobA== SUtF IExlZ2lzbGF0aW9u IGhpbnRlcg== IGFkZWw= KGhpZ2g= 5o+Q5Lqk L2RvbWFpbg== LnRpbGVz IFRpYmV0YW4= IFN0ZXJlbw== IGZpbGVTaXpl Z3J1cG8= aWFl U0NQ IHZvdWNoZXJz IFBhbmRvcmE= IGRpc21heQ== IGzDqWc= IEJlaGF2aW9yYWw= Y3Jhbg== TmVzdGVk YWNjb20= IE5haA== IEJhbHRpYw== IERFU1Q= IGtpc3Nlcw== Vmlu IHByb3Zva2U= X0NvbnRleHQ= IHdlZWtkYXlz dXJnZW5jZQ== TGlr IHBsYXph IGJsZXY= IHJlYWZm X1RpdGxl KEd0aw== IGNlbGxl Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= IEpvb21sYQ== Ij4vLw== TW9udGhseQ== LnRvRG91Ymxl KGVudHJpZXM= IE5SRg== KGdjZg== IE1pZGRsZXdhcmU= fS17 X0hJREU= IGxvd2Vycw== KFNlbGY= 5Y+R6YCB IGlzTG9nZ2VkSW4= IGJpb2RpdmVyc2l0eQ== IG11c2NoaQ== KGNhbmRpZGF0ZQ== IEFuc2k= CXNt L2lt Kycp Y2Rj IGFsZ3VuYQ== IHNhY3JpZmljaW5n L3ZlbmRvcnM= L0FQSQ== QWR2ZXJ0aXNpbmc= IEdFTkVSQVRFRA== IERpc29yZGVycw== IFNlcmlhbGl6YXRpb24= IHNhdmFnZQ== IOm7 IEluc2lnaHRz IHJldm9rZQ== IGp1cm9ycw== c3VpdA== IENhbXBpbmc= X3Byb2ZpdA== YnVjaA== LkFjdGlvbnM= IElERUE= b2x1bHU= TGlrZXM= 67KI7Zi4 LkJMTA== dsOk IGNhcmRp IGRpc3Byb3BvcnRpb25hdGVseQ== IGluc2FuaXR5 LmVvZg== IFBsYXR6 LmZpcnN0bmFtZQ== IFNsYXNo X0NG amFuZHJv IEdhdWdl IFN1bmRlcg== IEJ1bm55 X3Vt 6IGU57O7 IGlQaG9uZXM= IEJJTw== IGtobw== eEZB IEZyaWVuZHNoaXA= IGNhbG1seQ== X3Rocg== X0FuaW0= IHJhaXNvbg== L3Jvb3Q= LmdldEJ5SWQ= IFNhdmFubmFo IEludGVycHJldA== a2lsbGVy CXdn XSld 0YPQtdGC S2V5VmFsdWU= W0c= c3RyZXRjaA== LXBsYXlpbmc= JTsNCg== IHBsYW5r IHBlYWNo IERlcnJpY2s= 0LTRgNC10YE= IFNoYW0= QVBQTElDQVRJT04= LnByb2dyZXNzQmFy IHRyYW5zaXRpb25pbmc= X2RyYWc= LlJlcXVlc3RCb2R5 Lk1vYmlsZQ== Sm9uZXM= LlBob3Rv IGF4bGU= enVn L29wdGlvbnM= XV0pCgo= CW5v W2hyZWY= IGFncmVnYXI= IFNlcnZpY2VFeGNlcHRpb24= bmluZ2Vu RGlmZmljdWx0eQ== Qk9PTEVBTg== QWRkcw== LWhhbmRsZXI= IEdhdA== IEVib255 4bqtbg== YnJpZ2h0 IGNvcnBzZXM= LkNoZWNrZWRDaGFuZ2Vk IG1hdGluZw== IEhhcnRmb3Jk IHpvdQ== IGR1ZGVz X2FsZw== IEp1bGk= b2N1cA== INC/0YDQsNCy IEthdHk= X0ludGVybmFsQXJyYXk= LkNvbHVtbkhlYWRlcnNIZWlnaHRTaXplTW9kZQ== TWV0aG9kTWFuYWdlcg== IFJlZGU= IGxpc3RJdGVt LkJvdW5kcw== IGF2ZW51ZXM= IENvZ25pdGl2ZQ== RXh0ZW5k dGVjaG5pY2Fs 4oCa c25ha2U= RnJvbUNsYXNz aWxlc3M= ID17 dXJldHRl L3RocmVhZA== RklFTERT SVZJTkc= IFBPU0lY X2Fr IC4uLy4uLy4uLw== TXA= IGFub255bW91c2x5 VGFyZ2V0RXhjZXB0aW9u YWZmZXI= YW55dGhpbmc= Imlz Z3Jlc28= IExhcmE= aXphZG9z IG1pbmc= LnRh X3Rocm93 Umg= IHNvbGlkaXR5 bmFobWU= aWNoYWdl IG1vdW5k b2xpbw== YXJ5YQ== QVNVUkU= IHdvaGw= IGZ1cm5pc2hpbmdz LnNlY3Rpb25z IGFwb2xvZ2llcw== YXBpa2V5 IFNjcmV3 IFdhcnNhdw== L2dyYXBo IFNBVEE= eXNlcw== L2J1dHRvbnM= 0LXQvdC+ VUdIVA== IHBvcm5zdGFy UGljdHVyZUJveA== X1RleHR1cmU= IGHDsQ== IG5lcmQ= LWNvbm5lY3RlZA== IG91dHNpZGVycw== IG9wZXJhdGl2ZXM= YWJibGU= L21hbg== IHBsZWFk XERi IENvdmVyZWQ= PVM= IEZsYW1lcw== 77+l X3RpdGxlcw== IHJldHJhY3Q= IGNvbGxhYm9yYXRpbmc= IGJlaGFuZA== LkRhdGFHcmlkVmlld0NvbHVtbkhlYWRlcnNIZWlnaHRTaXplTW9kZQ== IGxhYm9yZQ== IHRvdGFsUHJpY2U= IHNwb2lsZXI= IGRpcHBlZA== Iikpew0K X1NC IExlaQ== IGluY2x1c28= dmVsbA== CXBs SW5hY3RpdmU= IFVTU1I= b25kZW4= IHJvdXRlZA== LnN0cnVjdA== 4Ks= IE1hbGlr IEhFWA== IEN1c3Q= X1BFUkNFTlQ= X2VwaXNvZGU= 5ouJ VkVSUw== IGNydWlzaW5n Qm9va21hcms= 4oCmCgoKCg== Y2hlY2tCb3g= b3VmbGFnZQ== IG5vbnplcm8= IGFwcm94 IFB1cmR1ZQ== Y29vbg== bGVncw== IExvdHRlcnk= U2xm SEFW Pms= PkFu IHNsZW5kZXI= c2NoZWQ= VGVsZWdyYW0= Umljaw== X1N0cnVjdA== X0JD IGN1c3RvbWFyeQ== IERhbW9u dXJjaGFzZWQ= IGtvYg== IHRpb24= KHByb21wdA== IGltYg== eEND CVdlYkVsZW1lbnQ= IGhlbW9z 4Kaw IENOQkM= IEFMTE9X 57Gz IEVOQw== LnNjYWxhdGVzdA== IFRCRA== Z2V0UmVmZXJlbmNl IEltcG9ydGVk 4Liw IGl3 b2xvbg== bWls Oi8vJHs= Lk1hbmlmZXN0 IGxo IGl0ZW1MaXN0 X2Fkcw== SW5zcGVjdGFibGU= IFRvbGVkbw== IERpc2FzdGVy VXBkYXRlZEF0 KScpLA== IFBBTg== RmlsZUNob29zZXI= IHl1YW4= aXRt INC10LPQvg== IElibg== SGF0 X3Vsb25n YXBs IFVydWd1YXk= w6lueQ== IENyYWlnc2xpc3Q= ZG9jaA== IGJpbGU= IHByb2R1a3Q= IGVsZWN0cm9seQ== LkNvdXJzZQ== IG1x dW5jdHVhdGlvbg== LyoqKioqKioqKioqKioqKio= dWp1 TU1NTQ== X0xFRw== IG5ldXRyb24= IHBsdXJhbGl0eQ== ICsrJA== Zm91bmRhdGlvbg== LkNvbHVtblN0eWxl IEhvb3Zlcg== LkFDVA== IEJyYXo= bGVzc29ucw== ZsO8aHI= 4KSC IENsYXNzaWNz cmFpZw== IG1o IGtldHRsZQ== U3RyaWtl ZXJkYWxl RU5UQQ== IFRhYmxlQ29sdW1u IFNoYWtl IFdG IExpY2Vuc2luZw== dWHDp8Ojbw== IHNlY2FyYQ== IG5ld1ZhbA== U2VsZWNjaW9u UHJlZmFi ZmlnaHRlcg== TGF1bmNoaW5n JyI7DQo= Lmxvbg== LnV0Y25vdw== IEh1bmRyZWRz ZXN0ZWFk IE92ZXJ3YXRjaA== X0FGVEVS IHJlbW5hbnRz KS5c IGxvYmJ5aXN0cw== IHVuaW50ZW5kZWQ= IOuQ eXN6 IGxpYnJvcw== LXBhZ2Vz SU5URVJGQUNF IGRldGVybWluaXN0aWM= IFVOSVFVRQ== IGV0dMOk U2luZ2xlTm9kZQ== CQkJCQkJCQ0K LXN0YXQ= IGhhc2hpbmc= L2FjY2Vzcw== dGVsbA== CXVzZXJuYW1l IERhdG9z Qml0Q29udmVydGVy Omhvc3Q= IGFsdGVybmF0aW5n IOKAi+KAiw== IHdhdmVmb3Jt PEVsZW1lbnQ= IENhbnRvbg== IGRlc3RhYw== dGVudA== LmdldE1heA== IHN0ZW5jaWw= IEFjcXVpc2l0aW9u LkdlbmVyYXRpb25UeXBl IE1FUg== X2NvbWJpbmU= IFtdLg== X0JJVE1BUA== bGRy IGNhbnY= IEpWTQ== cGFycw== IGRvd25oaWxs RGV0YWlsc1NlcnZpY2U= KE5BTUU= IHJlanV2ZW4= X3dpdGhpbg== QWNjZXNzb3J5 IFPDqQ== L2luYw== IildCgo= UHVibGljYXRpb24= X3JvaQ== IG1vYnM= Lk5vQXJnc0NvbnN0cnVjdG9y IGV2ZW50b3M= LnZlbmRvcg== X1NFTEVDVE9S w6lmb25v PSJb IGxhYXQ= IGJsdXJyZWQ= IEJvcmRlclNpZGU= eEZGRkZGRg== X3dyaXR0ZW4= IGplbnRl L3Rpbnk= Lndw LnN0eWxlYWJsZQ== IENoYXJnZXI= IGJhdGhpbmc= IFBhbmRh w6lsaQ== IHBhY2llbnRl IGdpb2NoaQ== IFZpZXdTdGF0ZQ== Y2dp LmxvZ2ljYWw= RG9uYWxkVHJ1bXA= LGNvcHk= ZW1t X0xpbms= IGluc2lnbmlmaWNhbnQ= ZmZtcGVn L3BheQ== X3F1aXQ= SU9EZXZpY2U= IEV4aXN0cw== IGNvb2tz anVuY3Rpb24= IFRYVA== KGVndA== YW5pdQ== X3BhcnRuZXI= IGZhY3VsdA== IFVuaWZpZWQ= L3NiaW4= IE5laA== IEthemFraHN0YW4= cG9zdGNvZGU= IHZlZ2Fz IHNlaW5lbQ== fV0s dGV0 LXBheW1lbnQ= IENvbW1lbnRhcnk= IGd1aWRlbGluZQ== KTsk IENvbnNvcnRpdW0= 57O757uf dmlzbw== IEJpbGxpbmc= aWNpYXI= IFR5cGVJbmZv CXRyYW5z PFRleHR1cmU= YXRob20= bGF1Z2hz IGludGVyY2VwdGlvbnM= KEVWRU5U Rm9yZWNhc3Q= VHJhcA== dHJ4 IFdoaXRlcw== c3VibWl0dGVk YWxnbw== IHRyYW5zcG9ydGVy b3VuZGFyeQ== IEluaGVyaXRz IENvbmV4aW9u LmNsaWVudFg= CXByb2plY3Q= aGVhcnRiZWF0 LW90aGVy ICc7DQo= w6ty b3JwaW9u KGNvcnM= IEVMRUNU IFBlcmU= IHVzZU1lbW8= ZXdyaXRlcg== IHNxdWlydA== L2V4dGVuc2lvbnM= L2Fz LkNMSUVOVA== IGdvdXJtZXQ= IGF1dG9Db21wbGV0ZQ== UkVW IGJyYWtpbmc= X1NFTEVDVElPTg== 44Oh44Oz44OI X2xpZmU= X2dyb3VuZA== X3Rlcg== c25z IFNQT1JU kuGe 5rs= VW5pcXVlSWQ= IGRyaXA= X0JST1dTRVI= LW1ldGVy ZW5kZXo= IGV4aGF1c3RpdmU= KFNL IEJ1cmxpbmd0b24= d29vcmQ= KHBvdw== IHNlYXJjaFRleHQ= hYw= aGVlbHM= c3RlbGxlcg== LnNpZw== WU9VUg== LmFsaQ== IERhdGFDb2x1bW4= IHByb2plY3ROYW1l X2ZlY2hh IHJlZnVuZHM= IHRvcG8= IENISUxE IE1hcmJsZQ== IGZvckNlbGw= IHBlc3NpbQ== IGNyaXNweQ== aWZlc3R5bGVz IG92ZXJkdWU= b2xhcml0eQ== IGFtYXTDuHI= TWQ= UFJFU1M= IGluc3VyZXI= b2NyYXQ= IGZhY2lsaXRhdGVz Lw0KDQo= IGh1cmRsZXM= X0hJ TGV0dGVycw== bWluZWNyYWZ0 YXh0ZXI= eWs= IGVjb27Ds20= INC90LDRhw== IFNXSVRDSA== Q29uc3VsdGE= IE5vcmE= Q0tFUg== X0NU LmFwcHNwb3Q= IC8vLS0= CUJPT1NU X2NvdXJzZXM= IHdpbGxpbmdseQ== 66eM ZmZk ZmlsZXI= IE1lYXN1cmVz IGxlYXNlcw== IERvcm90aHk= Ol0u c3Vic2NyaXB0aW9ucw== IGNob2lz IGFsYW4= IGFicmly LlBvcHVw RXN0aW1hdGVk IFBMQU4= 4LWN IEVMRg== IGRpc3RhbmNpbmc= CWFuc3dlcg== IHJ1Z3M= S2k= 4Z+S4Z4= R3VpbGQ= ZXh0cmFz Y3Bz TW9ja3M= IHRla3N0 Kmc= LnJlcXVlc3RGb2N1cw== IGFsdGVyYXRpb24= IENhdGVnb3JpYQ== aW1tZXJz IERyb3Bib3g= IEFkZHI= 5byV ZGVwcw== Lk1lc3NhZ2VCb3g= ISwK LmdldEI= IG1pZ3JhdGVk IEhvYmJ5 IE1n LlZlcnRleA== IGZvcmdpdmVu IERlVg== IHdlcmQ= IEFyYWJpYW4= IFNtb2tpbmc= IHN0cmF3YmVycnk= IENNUA== ZGJs IERIUw== LWVycm9ycw== LnBhZw== IFJORw== IHNoYXZl IHR3ZWU= IGFzc2VydE51bGw= IERlbnNpdHk= ZG9qbw== YWlubWVudA== IHBq LllFQVI= ICopKTsK aWJyYXJpZXM= SmV0cw== RXhlY3V0aXZl X2RlbnNl LmdldENvbnRlbnRQYW5l Y2hhbmRsZQ== YWluYQ== LXJlZmVyZW5jZQ== IGxpYXI= IEhFQUxUSA== W3Rlc3Q= LmlzbmFu Q2hhcmxpZQ== IHB1cHBlcg== IGtpcg== OmhpZGRlbg== aXNWaXNpYmxl IGtvbXQ= IGFjcXVhaW50ZWQ= IERydWlk KENz Lmxhc3RuYW1l RFNB IGRpc3NvbHZl 57yW5Y+3 VmFyaW91cw== IERleA== X2FuZ2xlcw== L2FwaW1hY2hpbmVyeQ== IGV4cGxvZGluZw== KENoYXJTZXF1ZW5jZQ== IEhpc3Bhbg== KyspewoK Lk1vZGVsU2VyaWFsaXplcg== UVJTVFVWV1hZWg== 54K55Ye7 PXNldHRpbmdz 4KWB UENT IElOVEVSTkFM IEhVR0U= IG1pY3Jvc2NvcGU= aXNBZG1pbg== XHY= LnJlcXVpcmVOb25OdWxs 0L7Qu9C+0LI= aWNlcmNh X1NFTlQ= IGRlcGljdGlvbg== IFVzZXJDb250cm9s IE1lbW9y IEFsbG9jYXRpb24= IEJlZGZvcmQ= IOabtA== IHRvcm1lbnQ= YXplZXJh LlRvZGF5 IFJlZ2FyZGluZw== X0VOQw== X1JBTkRPTQ== TG9nTGV2ZWw= PVI= IEdyZWVubGFuZA== IHN0cmFpbmVk IG1hZ25ldHM= IGFsZXJ0Q29udHJvbGxlcg== IENocm9uaWM= X3JlZ2lzdGVyZWQ= IGxpag== IEVudHJ5UG9pbnQ= IFJlZ2ltZW50 dWNpZA== IENvdWxkbg== IEFjdGluZw== X3JheQ== IG5hYg== LXNlcGFyYXRlZA== IHBubA== Q29hY2g= QVRZUEU= IHN1cHBsZW1lbnRhdGlvbg== YWNlcnM= ZmxlZXQ= SW5wdXRCb3JkZXI= IFN0cnVjdHVyYWw= IGRlaW5l IGJyZXdlcmllcw== YW5vaQ== IHRyYW5zbGF0b3Jz IGVpZ2VuZW4= IGRhbmNlcw== dGFt IENvb3BlcmF0aW9u X3JlcXVlc3RlZA== IE1hZ2ljYWw= CUxFRlQ= ICIiKSwK Ky0rLSstKy0rLSstKy0rLQ== IE5vaXI= IEVzdGltYXRl IFRocmVhZFBvb2w= IEhlY2s= ICcqLg== VHVya2V5 IHN1Y2NlZWRpbmc= ZHJ1Zw== dmlv IHBvbmVy IEphZA== aXp6bHk= ZXZlcnl0aGluZw== IHt9KS4= IEluc3RpdHV0ZXM= IG51b3Zv IGluaXRXaXRoVGl0bGU= IGx1YUw= b3duaWs= IHRob3I= IGtsYXI= IG5vdG9yaW91c2x5 IGRvbmc= ZW1lbnM= X3Byb2plY3Rpb24= X0dSRQ== LmV5ZQ== IHdhdGVyaW5n IFRpaw== b1M= IFN0cmFuZ2Vy ICANCg0K cGFnaW5n X2ludGVyc2VjdA== IENvbG9uaWFs TGlzYQ== LnVubGluaw== IG1pcA== YW51dHM= YW1hem9u IElERU5U c3Rhc3k= Snd0 LS0tLS0tKy0tLS0tLSs= IEVWUA== Q29udGVudExvYWRlZA== CUJJVA== LnBhcmVudHM= IGFsbG9jYXRpbmc= IEdPTEQ= fWA7Cgo= QUxBUg== IHByZWNpc2E= RGlzdGluY3Q= c2Vp IHN1YnBvZW5h IHBvbXA= IFBvbG8= Y29l dmo= LndvcmtmbG93 ZXN0cmU= IGNvbm5leGlvbg== aW1ldHlwZQ== LlJvd0NvdW50 IERoYWJp IGVtaXRz LkJvcmRlclNpemU= KHBvbGljeQ== LG1lc3NhZ2U= T25Jbml0 KShf IGZpbmVy W251bWJlcg== IHNjcmlwdHVyZQ== UmVmbGVjdA== LXRvb2xiYXI= KFBBVEg= IEVOVFJZ KC4uLikK LWRvbWFpbg== KHN0cmlw KSgq IGNvbnZleWVk IGF0dGVudGl2ZQ== w6hnZQ== X0xE IEdyYW50cw== LWhpZ2hsaWdodA== IGJyZXRocmVu 2YjZhA== IGRlcXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcg== YXB1bHQ= LmJvdHRvbUFuY2hvcg== IG9wY2lvbg== IG91dEZpbGU= cmVhdGluZw== ZGlu X3NhbXBsZXI= CWdsRW5hYmxl cHR5cGU= X0NPTkRJVElPTg== LWVmZmljaWVudA== Jm8= IGpj 0Kc= L0Zvcm0= KWZyYW1l IGJpbmdl X2Nsb3N1cmU= SU1B KG5leHRQcm9wcw== CWNk IGdldE1lbnU= IGdldFN1cHBvcnRBY3Rpb25CYXI= IG1hbmlmb2xk WlI= Y2hhbmdlcg== YXNzaW5n ZGlzaA== IE1vdQ== Lm5ldGZsaXg= IHBvc3Rjb2Rl IHdvbWI= IEFycw== 4oCmKQ== IGxpbmVXaWR0aA== RGVhbA== YXJhcw== IEdyYW50ZWQ= IGhvYXg= IGRpcmVjdGlvbmFs LktleUNoYXI= ID09Ig== IFZlcmRl X0tQ IHN1cnJvZ2F0ZQ== IERVSQ== dXB5dGVy IHBlbnNl IFJBTkQ= KGV4Yw== IG1pc3VuZGVyc3Rvb2Q= IENVVA== IOS4rQ== CXRp X2luc2lkZQ== IGJpY3ljbGVz IGRlYW4= ZGlyZWN0aXZl LnBlZXI= aWNpbmE= X2l0ZXJz IGltcGx5aW5n Lm9idGFpbg== IHBzeWNoaWF0cmlzdA== dXNlclNlcnZpY2U= ZWxpdmVyeQ== CXBhcnQ= IGh1cnJpZWQ= IGJ1bQ== IGhlcGF0aXRpcw== amlk J10+Owo= IHVuY29udmVudGlvbmFs IGZhc2Npc3Q= IFBleQ== 6K+t Jyl9PC8= LkNsdXN0ZXI= IEJpdENvbnZlcnRlcg== ZWRhdGE= zr/PhQ== 4pSC QXBwQnVuZGxl Lmh0dHBDbGllbnQ= IGFwbw== QUlOUw== IFZG X2dpZA== IG9kZQ== RVJSWQ== IFJlY2VpcHQ= IENhbmRsZQ== IG1pc3Npb25hcnk= IENyYW5l IFNUQVRFUw== Ym91dA== YXlhcmFu Li4uIiwK IGl0aW5lcmFyeQ== KGxhdGl0dWRl IENPTlM= L3NpZGViYXI= U3BpZGVy R1JJRA== LmRlYnVnTGluZQ== IGAn LXllbGxvdw== IHJlZmluZW1lbnQ= IE1ha2V1cA== IERhbm4= KCk7DQoNCg0K IG92ZXJjb21pbmc= IEJhdHRlcg== L3BhY2thZ2Vz INCy0LjQtA== IGFyeQ== 4oCdPw== cmVsbGFz IGdydXBvcw== IFR5cGljYWw= IE1vbnNhbnRv SW50ZXJzZWN0aW9u IHR5cmU= PT09PT09Cg== zq4= OzsKCg== IHRyaXZpYQ== X3Rha2Vu IHNtdWdnbGluZw== IG5hcnJvd2Vk 4bqpbQ== IHBhbGFicmE= Y2Vh cGFydGljdWxhcmx5 QWNjZXNzVHlwZQ== IGNvbGU= VG9GaXQ= IHZlcmU= IENPUw== L3ZpZGVvcw== ICgkKCIj IGNyYW5l Lmhhc01vcmU= JHBhdGg= aXZpc20= IHN1cGVydmlzb3Jz IEZsb3Jlcw== cHJvZ3JhbXM= LlppcA== IGltcGFjdGluZw== IG1vdG8= IFRK cGVnYXdhaQ== X0tJTkQ= X2ludGVyZmFjZXM= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= IExlYXZpbmc= VGV4dFN0eWxl YmVpdGVy IFdpbm5pbmc= LXBhcmFt R2FyeQ== IFN1bnM= YWzEscWf ZHVjaw== IHRocmVhZElkeA== IHBvZXRz IHBsZWFkaW5n IENvcmludGhpYW5z ZmNj YXdhaXRlcg== Ki0= IHBlcnNldmVy IGFjdGl2aWRhZGVz X291dGxpbmU= LXBsYW4= LnNjcm9sbFZpZXc= cXVhdA== IHNhbXN1bmc= IGxldmVsaW5n IHNwbGl0dGVy X2dlb20= IHByb21pbmVudGx5 IFNlZWRz 5Zyf dWFpcw== ZWZ1bGx5 SUVudW1lcmFibGU= YWRkcw== dmVyc2F0aW9ucw== IGRpc2FibGVz QU5EUk9JRA== IFdlaXRlcg== X0Zvcm1hdA== X3NwbGl0cw== IEFjdGl2ZVN1cHBvcnQ= KGNzcw== X21pY3Jv c3RyaWtl IENhdXNlcw== IHZpc2libHk= Q2FuY2VsYWJsZQ== IFlvc2g= IGRyYWluaW5n IGNvbGk= YXNsZXk= IFJlc3BvbnNpYmlsaXRpZXM= IFN1dHRvbg== KnRoaXM= U2hhcmVz LWdyYXBo IGVubGFyZ2Vk Um91dGluZQ== IGZyYW1lYnVmZmVy IGFpcmZsb3c= IHRyeA== IExlaWdo IEtlbnM= KGhlYXA= IHNwaWxsZWQ= U0NBTEw= IFZlbHZldA== YWN0dWFsbHk= X0VOQ09ESU5H IFdvcm0= KSl9Cg== IERhbmdlcm91cw== IHN1cGVyaW50ZW5kZW50 Lmxvb2s= IHNoZWw= L2Zz U2FmZXR5 5a6L LkRFRklORQ== X2ZhY3RvcnM= IHBhcnRpZG8= IG9wdGltaXppbmc= RG91YmxlQ2xpY2s= LWNvbW1lcmNpYWw= IGxvZ2ljYWxseQ== Y3ljaA== dXJ2ZQ== wrU= QUlMWQ== IHJlYWN0aW5n X0VYUFI= a8O2 LmxvY2FsaXplZERlc2NyaXB0aW9u IGFzdG91bmRpbmc= IHBhc3RyeQ== IGdsb3NzeQ== IGJlaGF2ZXM= L2Vj IGNsaXBwZWQ= IHByb3dlc3M= IFVC LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= CWFscGhh IGV4dHJhdmFn IGZpbm5z KFNvY2tldA== IFVuc2FmZQ== IHF1aWVyZQ== X2VuY29kZWQ= b2x1bWJpYQ== IHphYg== c3RyaWN0ZWQ= IG1uaWU= IE1PUw== IGF0aGxldGljcw== IEtlbmRhbGw= IOyYpA== QVZBSUxBQkxF aW5veA== X09QQ09ERQ== IEl0ZW1UeXBl IGNlbnRyaWY= IGludGVyc3RhdGU= X2Jvb2tz LmRlbGl2ZXJ5 IExpc3Rl b3JzaQ== X3NlY3VyZQ== Z3Jvd3Ro IHZlbnRl IHBzeWNob2xvZ2lzdHM= IENDUw== dWRlbmNl IGNyYXdsZXI= L21hbnVhbA== IHRleHRTdHlsZQ== IHBhbGluZHJvbWU= IGNvbmR1Y3Rz dGFibA== V2l0aFVSTA== L3JpZ2h0 IERyYQ== Lk1haWw= KHNlYw== b2Z0d2FyZQ== IHNldWw= IHdyaW5rbGVz X0ZX QXk= IEVybnN0 dW5iaW5k IGNvbW1lbmQ= X2hvb2tz IE1vbmV0YXJ5 IFFR dW5pdE9mV29yaw== IEVudGl0eVR5cGU= IGhvcm1vbmFs LkZBSUw= QFNsZg== L2NoYW5uZWw= c29ubw== RGFucw== X1JlZ2lzdGVy SGFu T1JC SktMTU5PUA== dmVudGVk IGxvbmdzdGFuZGluZw== IGJnQ29sb3I= IDsp IFJvYmJpZQ== KCIuIg== IGFqdXN0 LmhhbmRsZUNsaWNr cmF0aW5ncw== cHRlcg== IGVyb3RpY28= IEplbGx5 KioqKioqDQo= LkRvZXNOb3RFeGlzdA== CWJl JHRlbXA= Ij4mIw== 55u0 CVB1YmxpYw== neyytA== IEJ1aWxkaW5ncw== LWFsb25l LCdc IHN3YXBz IHBlcnBsZXg= X3Byb2Nlc3NvcnM= INC00LI= IE5ZUEQ= UENS 5q+P IGhvamU= RWRpdE1vZGU= IHZ1bGdhcg== IHZlcmRl ICgpPT57Cg== L2Zyb250ZW5k IHRlbGVmb25l IGxhbnRlcm4= LnBhZ2VY IER1ZA== bGltaXRhdGlvbnM= IG5vdGlmaWVy IE1lc3NhZ2luZw== IWltcG9ydGFudA== IHN1cmdlb25z KT0o Rml4ZWRTaXpl Llpvb20= aW5hbg== IGNyZWRz IEJVRg== LlN0YWNrVHJhY2U= IHdhcnJhbnRlZA== IHNvdXJjaW5n IGNvbm5h X0ZSRQ== IHdvbGw= IHJlZmluaW5n X0FMTE9XRUQ= X212 IFdvcmNl IFNpbmNsYWly Q2hlY2tzdW0= IHVubG9ja3M= IE1hcmtkb3du IGZpc2hlcm1lbg== RHVi IEJvbm5pZQ== ICAgICAgICAJCg== IHZlcno= Piw8Lw== PjwhWw== Wyc8ew== amVj IEVyZw== cmF0aGVy IHBhbGFicmFz IFBBQ0tFVA== bWlzZQ== ZGFx IE9rdG9iZXI= KEdMRlc= IEhlbnJp IEZvdA== IER1bw== IE5FUw== IHNhbHNh IHVuYmlhc2Vk QFNwcmluZ0Jvb3RUZXN0 IG9mZnM= 5YWs5Y+4 IGFtb3VudGVk RnVsbFBhdGg= IHF1YXQ= IG1haWRlbg== IFN1YnNldA== IEFwcGxpY2F0aW9uRGJDb250ZXh0 bWlycm9y bmV4 LnN0cmVldA== c2V0UXVlcnk= JHJlc3VsdHM= YWRlcm8= Z3Jlc3Nvcg== X2J1Zw== aXNzZXI= IFNlYXJz IGZpbGxDb2xvcg== Lm1hc2tz IERpYWJsbw== X0FORFJPSUQ= 0J7QsQ== IGZyZWFraW5n IHJpbnNl KHBrdA== IGJvb2tsZXQ= IHNhbmN0aW9uZWQ= IHN0cmVhbWVk dGFicGFuZWw= IFJldHVybmluZw== UGxhaW5UZXh0 TE9ZRUU= YWxlc2Nl 0L7QutCw IEZpeHR1cmU= YXNzYWRvcnM= IGRpc2JlbGllZg== IEx1c3Q= IHJhZGljYWxz LkZlYXR1cmVz X2luY2hlcw== KHByaW1hcnk= IEpNZW51SXRlbQ== X3Rha2U= IENva2U= VW5pdE9mV29yaw== IFdDSEFS IGNvbnNjaWVudA== b25lbnVtYmVy UElORw== YWJham8= XSgi LnNhbGVz X2hlcmU= IG9mZnNldFg= dGFnTmFtZQ== INmK X1JpZ2h0 aWxpZw== dGhlVmFsdWU= b2NhcmQ= IGNvbnN1bHRhbmN5 IGJsaWo= Z29ybQ== TmF2aWdhdGU= xLFj SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9u X3Zl LkNPTlRFTlQ= dXJvcGVhbg== LnJhZGlv IGVudmlzaW9uZWQ= IFNPTQ== LnNk QU5USVRZ IENBTExCQUNL IGhn ZGVjcnlwdA== 566x XFF1ZXVl IE1JTEY= IHJlY3Vyc2U= IERhbnRl LmdhbW1h b3Jrcw== KCIiKSkK IEdyaW0= Lm9wZW5n IE1pY2hlbGU= QW5hbHk= IFBydQ== X3JlZGlyZWN0ZWQ= X3BhbA== ZmFsbGJhY2s= IOWtlw== IGRpbm5lcnM= R2VuZXJhdGluZw== JCIs aGlzdG9yaWM= Z2V0U2ltcGxlTmFtZQ== IE1pbGxpb25z LWdsb2JhbA== cm91dGluZw== IGNvbnNvbGlkYXRl IHJlY29pbA== T2JqZWN0T2ZUeXBl IGRlc3BlcmF0aW9u QW55d2hlcmU= IGdldE1vZGVs X2tpbGw= b2Jvb2s= L2Rpc3BsYXk= Ii8+Cgo= IG1heW8= INGB0L/QuNGB0L7Qug== IGdvYWxpZQ== eERG IFByZXBhcmF0aW9u IGRlcGVuZGFibGU= LklOVkFMSUQ= Li4uJw== bmF0YWw= bW9kdWxlTmFtZQ== Y2FyYm9u UEFM IG1lZQ== IGNhc2luZw== 6aG555uu bmljYXM= IEhhbW0= IEJhYmU= b3dhbmU= IHN5bm9ueW0= IFFpbg== aW9j ZW1vdGlvbg== IGZlcm1lbnRhdGlvbg== IGN1bXBs IEVsZWN0cmljaXR5 KFJPT1Q= dGVzdGVy IEh1c2JhbmQ= IEJhdQ== X01BQ1JP YWtlbmluZw== ICAgICAgICAKICAgICAgICAKICAgICAgICAK LmZpbg== IENvbmZpZGVudGlhbA== aWV6 TUJFUg== IHNwZXJtYQ== IEhQVg== dHhu Q09OVEFDVA== LlRocm93 IG11cmFs IFR3aXN0 KCZfX18= IGpk IGVtcG93ZXJtZW50 IGRpc3RpbnQ= IGJvbWJpbmdz T3V0Y29tZQ== IHNob3J0ZW4= 5b6M QUNDT1VOVA== X2NvdmVyYWdl ZW5jbw== X3JlZmVy c2V0TWVzc2FnZQ== IHJlcGVyYw== cHRpZGVz IGRlaXR5 dWNoc2lh KGh0 LnN1YnNjcmlwdGlvbg== IHJlZGlzdHJpYnV0ZWQ= IER5bmFzdHk= X3Zj LWZyYW1ld29yaw== cnlmYWxs IGdhdGluZw== IExvcmVuem8= b29kb28= IGRpZ2VzdGlvbg== IGZvb3Rpbmc= CUhhc2hNYXA= cmVhbERvbmFsZFRydW1w IGFwYWNoZQ== KHZhbG9y IHBvaXNvbm91cw== LlBlcm1pc3Npb24= IHBhcmFtb3VudA== d2VpdA== bGxhbmQ= IGh5cG90aGVzZXM= IFByeQ== IGhvbWVt KERldmljZQ== aW5kaWNl ZXZh cHJlc2VuY2U= IEJlbnRsZXk= IEVuZGluZw== IGRvbWVzdA== CXRw CWVycm9ycw== Y29ybmVy bGRh CgkJCQkK X1BFUlNPTg== IFNlcmdleQ== IFBhcnNlcw== LWZpY3Rpb24= LkJhY2tncm91bmRDb2xvcg== IHNvbW1lcw== IGNvb2xlc3Q= IHJ1YmJsZQ== LmpvYnM= IGRyb3duaW5n YWRvcmFz IHdpbmdlcg== IEluY3JlYXNpbmc= 2YrYqQ== QkJCQg== KFJvbGU= IG9kZGx5 RGV2RXhwcmVzcw== LXV0aWw= IFNoZW1hbGU= cHJpbWl0aXZl IGFmZmlybWVk LnJldHVyblZhbHVl LWxpdmU= IEFjdGlvbkNvbnRyb2xsZXI= w6ts ZXJjdWxvc2lz IHByYWt0 IGdlb3BvbA== cGljcw== Q0RD LkZs LnNpZA== cmllYmVu KHZhcnM= K3NlbGY= IGludGVyaW9ycw== IEF1Z3VzdGluZQ== IjpAIg== IFN0ZWFsdGg= IGdldENvbG9y IEdlbnRsZQ== fiI6Ig== IHdoaW0= KCc8Lw== IFNTRQ== IFZpb2xldA== X2NyZWQ= IGF0YQ== IEF6ZXJiYWlqYW4= ID8/Pz8/ LmV2ZXJ5 KGNvbm5lY3Q= IERyb25l IHRvbGVyYW50 c3VidG90YWw= X3NodWZmbGU= dXN0YWluYWJpbGl0eQ== cHJlZmVycmVk IFNFWA== IGNvbmdyZXNzbWFu IG5hbW9ybw== IGhvbm9yYWJsZQ== IGFmdGVyRWFjaA== IMW8eWM= SEFN LnRvbQ== IGVsb25n IFNlcmlvdXM= LVNlbWl0aWM= 0KHRgg== IGZsYW0= dGVuZXI= LlRFU1Q= IFRSQUNL IFBoaWxpcHM= IEFyZW4= IEhpY2tz b2luZWQ= IEZhaA== aXNzZXVy IGNpcmN1bWNpc2lvbg== KHR3ZWV0 IHBvaWw= IFNlZW4= X01BUFBJTkc= IGludmFyaWFibHk= IEZ1c2U= ICc/Jw== PXBhc3N3b3Jk IOuCmA== IElIdHRw c3R5cGU= Zml0bmVzcw== LlRhZ3M= IOqwnA== KERXT1JE IHF1YQ== IE1hcnZpbg== Ik0= LmlzQXV0aGVudGljYXRlZA== Lmd1YXJk KT8KCg== CQkJCQkJCQkJCQkJCQkJCQkJCQ== IFNoaXBz IHNlbnNpdA== fTsNCg0KDQo= YWhhaGE= IGxpZXV0ZW5hbnQ= IEphZ3Vhcg== IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= VUNF SW5zcA== YWludGVy X3BvbHlnb24= LkRvd24= IHRleHR1cmVk LnNldEFjdGlvbg== b2dy IHNjaWVudGlmaWNhbGx5 IHNocmluZQ== IGNsb3VkeQ== LkhvdXI= UG9zdEJhY2s= QVpZ X2NhbmRpZGF0ZXM= KFNlYXJjaA== IGNvbW1pc3Npb25lcnM= IEJpZW4= IGRvY3RvcmFs IEZlZWxpbmc= X1ZFUlRJQ0FM IEJk bmdpbng= IOWcqA== X2FyZ3Y= UlNB IGVsZGVzdA== LWhlYXZ5 Q09OTg== IEh0dHBOb3RGb3VuZA== LWNvbHVtbnM= IE5QQ3M= IGNhZmVz IGfDqQ== IHN0YWxscw== IGZvcmtz IHBvYmw= U3RyZWFtcw== IGJhc3RhcmQ= IFJhcHRvcnM= IEdyYW1teQ== IEdlaA== X1RpY2s= KHByZWc= IGxpcHN0aWNr X3J1 PEg= IMSRaQ== LkNhcg== IHNwYXJlZA== bW9uaWM= aW5jdGlvbnM= QWZyaWNh KGRpY3Rpb25hcnk= ICoqKSY= YGBg X3ByZXNzdXJl bWll IFJvbWFuaWFu L21hcms= IG1haW50ZW5hbnQ= IHRyZW4= IFBvc3RncmVTUUw= UkVMRUFTRQ== SlBFRw== IGRlZGljYXRl TWFrZVJhbmdl IHJvYm90aWNz YWt0aXY= JSUl YWFy dmlld01vZGVs KG1hYw== dWNoZXI= IGRlYmVu TG9jYWxpemF0aW9u 0L7Qt9Cy0YDQsNGJ0LDQtdGC LnNldFRvb2xUaXA= LmZhc3Rqc29u IHBlcmVubmlhbA== LWNoaWVm a2lzaA== IGF0dGlj U3VidGl0bGU= IFNsYW0= IExpdGVyYXJ5 ZXJuZXM= INGC0L7Qu9GM0LrQvg== IHN0YXJ0QWN0aXZpdHlGb3JSZXN1bHQ= LkVycm9yTWVzc2FnZQ== YmluYXRpb25z Ikw= IGZvcmJpZA== IGxvZGdlZA== Lkxpc3RCb3g= IFBTRA== IGN1bHR1cmE= VU5DVA== Ik9uZQ== IEd1aWxs IEJhdHRhbGlvbg== IGNhcmVnaXZlcnM= IEtsbw== QmVoaW5k IHNlYXJjaGFibGU= X0JPVU5E Uk9D IHN0ZXJlb3R5cGU= IHByZXBlbmQ= aW50ZXJzZWN0aW9u QmFza2V0 KGxv IGZpbGVJbmZv IFVJU2Nyb2xsVmlldw== ZWNlc3NhcmlseQ== IENoZXM= LWluc3RhbmNl IGFwcGFydA== IEFtYXI= IHJvd0RhdGE= IGF5dWRh IGNhcmF2YW4= X3BpY2tsZQ== IGNoYWluaW5n KV07Cgo= IGJveGVk YWVwZXI= IEVWRVI= eW50aGVzaXM= LWZhc3Q= IOuwsA== 5Y+v5Lul IHZvbHVudGVlcmVk IGV4aWc= U0lERQ== IFBob25lTnVtYmVy dWxhaXJl IEthZA== IGRhcm4= IHlhaw== IEJsaW5r LnNwaW5uZXI= IG9yZGVhbA== X2VuZW15 IGdldFM= IEJvbw== TGluZU51bWJlcg== X0xPT0s= RUxDT01F IHNlYW1z IHNhZ2Vu aXNjbG9zZWQ= KHJheQ== W2dyb3Vw UFRT Lk5hdmlnYXRl IE93bA== IGRidXM= IGltcGF0aWVudA== IEd1cHRh KG9iamVjdHM= IGFwcmls LXF1 IG91dHJhcw== IFRIRU0= IEVNQw== RW1wbGVhZG8= IGdydWI= SUFN IHZlbm9t IHRyYW5zY2VuZA== IHZpY3RvcmlvdXM= IE1heWVy INGC0L7QstCw0YA= IEtlbGxleQ== SW5wdXRHcm91cA== IHJlZmlsbA== V2l0aFR5cGU= IGNoYXVmZg== b2xkZW0= X3RpZA== IGZsdXNoZWQ= XHN5c3RlbQ== LnJhbmRyYW5nZQ== IFBPU0lUSU9O IFRlbmFudA== Y29udmVyc2lvbg== Y2FsbGluZw== KCkpKSwK 0L7QvdCw IHNpZGV3YXlz IGxheA== CXJlcA== YWVwZXJuaWNr IG5lZ2Vy IEZseWVycw== ICJALw== dXBha2Fu X2VsYXBzZWQ= dHViZQ== UG9zWA== LnNleA== IGzDpHNzdA== IEdyYXZl 5Y+C KGVtcA== KHN0cnRvbG93ZXI= Y29udmVydGVy IFNwb25zb3JlZA== KHdvcmtlcg== IG1hdHJpbW9u Q29tbWlzc2lvbg== KGh3 X1NJR05BVFVSRQ== bWVr IGFsZ3VuYXM= X0VU aXN0cmluZw== THY= U2xpZGVz IHdlYWtTZWxm IHdr IFppZw== IHB1YnM= IEJSQQ== IGZsdW9yZXNjZW50 Y2Fycnk= LmVyYg== IEluaQ== LkRyYXdTdHJpbmc= IFNFUA== dXR0ZXJz 2ZE= Um95YWw= IGNhYmJhZ2U= IFN1aw== XT49 IEVkaXNvbg== IHNwZWN1bGF0ZWQ= LmRvd25jYXNl IHRwaA== IMOD IGd1bnNob3Q= cnBt IGZsdXR0ZXI= IGFueA== YXplcw== UU9iamVjdA== IEZhdm9y IG1vZHVsZU5hbWU= JnM= bGVo LldlaWdodA== IFdBTA== X1ZBUlM= IFdhc3Nlcg== IG91dGJvdW5k IGVyZm9sZ3Jl LnZhbG9y KGxpZ2h0 IE1hZ251cw== IHpvZWs= eWg= IHN0eWxlc2hlZXQ= Pm0= V2hpdGVzcGFjZQ== IFsnLw== CVJlcXVlc3Q= X2luY3JlYXNl LWRpc3RhbmNl aWNvbG9y aGNp IEtJTkc= UFg= b2ls ZW1pbmc= bmFtZW50cw== RGVmaW5lcw== IFstLQ== IHZhcmlvcw== IFBSRVNT LGF4aXM= IENvbGxpZGVy KX0KCg== IGZvcmNpYmx5 IHN0YWF0 X1NUQU5EQVJE IG9jY3VsdA== IGJhcHRpc20= IEN1bm5pbmdoYW0= X2J1aWx0aW4= Q1BG W21heG4= IFJIUw== IE9uZXM= KF86 IGluc2VjdXJpdHk= LnJlZ2lzdHJhdGlvbg== aW1wbGlmaWVk IFN5bXBvc2l1bQ== aHJlYWQ= IHF1ZWxsZQ== IGZyZW56eQ== Q2FsaWJyaQ== IFNQRUVE b3Vp KCldLAo= YWNjb3JkaW5n IG1jYw== IGFzaWF0 IGFkamFjZW5jeQ== IEFibGU= IHNhbGRv bm9zdGk= IGRpbWU= ZXRyYXRpb24= IE1vZGlmaWNhdGlvbg== IEhlcmI= IHBsYWF0cw== IGludGVycGVyc29uYWw= IO2ZleyduA== YXJtZQ== IGNvbWVyY2lhbA== IEJhdGVz KGNhcmRz LmdldENsaWVudA== Lk5PUk1BTA== CVRlc3Q= ICAgICAgICANCiAgICAgICAgDQo= IFJhem9y d2Vpcw== SVRIVUI= IEVOVElUWQ== YWdpdA== IG1pbmVjcmFmdA== cHJvcG9zYWw= IHNhbHR5 YW5kcg== IENvbmNsdXNpb24= IHBydWRlbnQ= IFtA IFB1cHBldA== aWdvbg== IEdvdGhhbQ== IGNoZWVycw== IFNoYXk= IGpp IEdESw== ZXhwZXJ0 IGZ1bmt5 IFphbQ== W05VTQ== RGVxdWU= X1RXTw== XHZpZXdz IHByb2pla3Q= IGRyb3duZWQ= a2lkcw== LnNoZWV0 IG5vbmQ= IGNvdXJ0ZQ== IC4uLgoKCgo= IHBpY3R1cmVzcXVl IHR1YmluZw== KCkuIg== amV0cw== X1B1YmxpYw== IEZhcnI= IEFyZA== T1VSU0U= IGthZGFy IFByb2dyYW1t LmtleXdvcmQ= CSAgICAgICAgICAgICAgICA= aWVkYWRlcw== YXRvbG9neQ== IER1bmQ= PWNvdW50 IHNsb3dkb3du LSIs LkZvcmVncm91bmRDb2xvcg== UnVucw== LlR5cGVPZg== JGN1cnJlbnQ= IHVwc2NhbGU= CXVuaW9u KGNoaXA= dW1pZGl0eQ== PVtdDQo= IGhhcnQ= ICRfWw== eW5lYw== LlVzdWFyaW8= IG9jdGF2ZQ== IHBvcnRyYXlhbA== INC90L7QvNC10YA= IE9jY3VweQ== X25hbg== IFNtYXJ0cGhvbmU= aGluZA== IHdpbmRzaGllbGQ= IGxvbmVsaW5lc3M= L2NoYXJ0 IGFjdGl2YXRlcw== LnJpYmJvbg== IGxhZ2k= IHBhcmFjaA== SHlwZXI= c2NhbGVk VGVz IEJlZXQ= IGRpc3NlY3Q= IENpYw== IH0sCgoK PigpCgo= LnN0dWR5 IGNvbnRyYXN0aW5n WkVSTw== IHR1bmE= IENob3c= X3Zh ZmF2b3I= W0luZGV4 IFBvd2VyU2hlbGw= KHByb3Rv JykpOgo= X2Zvcm1hdHRlcg== Q2hyaXN0b3BoZXI= T3JOdWxs Q0lTSU9O X2NvbnN1bWVy UGFzdGU= KG5vbWU= ZW50b24= IHVucmF2ZWw= X2Rvbg== IHBhcmVudGhlc2Vz IE5VSVQ= L10= IOKIpw== c3RhY2xlcw== L2NvbW1lbnQ= dXR0aW5n IHNsb3BweQ== KFt7 LnNhdg== dG9Kc29u IOu5hA== IFByYXR0 Lm1vZGlmeQ== LklzQ2hlY2tlZA== IHZlbmV6 IFNFVFRJTkdT amF3 IGZpcmVzdG9yZQ== IGNvbnNvcnRpdW0= IGthYg== IFN1cHBvcnRpbmc= IFRoZXNpcw== IG5vbmxpbmVhcg== IHRleHRib3g= LiIiIg== IEVuZXJn LkpPcHRpb25QYW5l IGludGVycnVwdGlvbg== w6h0cmVz IHNoYWxl IFBsYXllZA== IHNvY2lhbGU= WUdPTg== X0JBVENI IHRyaW1lc3Q= IFByb2NlZHVyZXM= IGF0dGVuZHM= IiR7 ZXZhbHVhdGlvbg== LlByb2dyZXNzQmFy IEFsZXhhbmRyYQ== Y2jDqQ== X1NFUVVFTkNF IGNyb2NoZXQ= Um9z IGlobmVu ICIqKio= IGFyb3Vz IG1vZHVsdXM= X0xJTlVY U3RhY2tTaXpl aWF0aW9uRXhjZXB0aW9u Lk11dGFibGU= IClb IHBpaQ== Zmlmbw== X1BJQ0s= UHVycG9zZQ== KFN0dWRlbnQ= IE5pY28= ZXN6 L3Nt IFBQUA== W2lucHV0 5Y+Y IGJsYXN0cw== IE11dHVhbA== cm9sbGV5 IHV0aWxpc2Vy OlRoZQ== 5Z+6 LmRlY29kZXI= IG9iamV0b3M= IGF3YWtlbmluZw== IEVubGlnaHQ= CWFsaWdu X3Jld3JpdGU= L2N1cnJlbnQ= IGRhcmF1Zg== Q2FudGlkYWQ= LG5w IHZlbG9jaXRpZXM= Q0xS IG1pc2luZm9ybWF0aW9u IHN0cmVhbWxpbmVk IGdyb29taW5n IGF6aQ== b2xn IGNvbnN0aXR1ZW50 IHdlZQ== 0YXQvtC00LjQvA== IEFsb25zbw== aWV0Zg== Y3Rlcg== IHRoZXJtb3N0YXQ= KEND IHN0YWNraW5n X2NvbnZlcnRlcg== IERpc25leWxhbmQ= CWZpbGVz SUNJ X1RPUElD CUVsZW1lbnQ= YXJnYXM= IFxA YW5jb2Nr IEJhc2VFbnRpdHk= KCItLS0= cmJyYWtr IG5lZ2F0aXZlcw== IHZ3 PWZvcGVu Y2hlbWlzdA== QXJjaGl2bw== IGAu IEZPVVI= KGFp VGFibGVXaWRnZXRJdGVt PD8+Pg== LnByZWQ= VHJhaWw= LWZhY3Rvcg== IEltYWdlQnV0dG9u cGVyaWE= IENlbGVicmF0aW9u LlJlc3BvbnNlQm9keQ== dXJjaGFzZXM= IGdldEtleQ== IENyYWI= IHFp IFdpY2s= IGNoYXN0 IC4uLi4uLg== IGNvbWVueg== IHNoYXJkcw== IGTDqWNvcg== IGhhbHZlcw== UVVFTkNZ IHBvd2VyaG91c2U= TElORw== Q2xhc3NMb2FkZXI= Y2VudHJl LXNlbmQ= bWFo IHNocmVkZGVk IFRJRkY= aW5rYQ== LgoKCgoK IGRlc2lnbmF0ZQ== IE5pZ2h0bWFyZQ== IEdlbmV0aWM= X2NoYW5jZQ== KGFuaW1hdGlvbg== cXVpbGE= X3NwZWNpZXM= TkVZ b3lzdGljaw== cmVsbG8= zqw= IGRpdmlzaXZl IFJFQw== IHN0dW1ibGU= KGZha2U= IExhY2U= YW50YWdlZA== YWtlc3Q= cHJvbW90aW9u IEZvd2xlcg== PWNlbnRlcg== IENpdWRhZA== UmFkaQ== IFNsZWVwaW5n dXRyb24= IHF1b2k= IFJBRA== IGV4cG9uZW50aWFsbHk= IEJyZWVk IG1vbm9wb2w= aGlnaGVzdA== eG1sbnM= SW50UHRy IHR1dHRl IFJlZnJpZ2Vy IOmhtemdog== IHpvbmRlcg== bGJyYWtr O2VsZW1lbnQ= IEhlZA== UmVsYXRpb25z 64U= Q29ycmVv 5aC0 IE1pZ2h0eQ== QU5HTw== X2NvbXBpbGU= LmdldENtcA== IGludmFkZQ== LnNwcmluZ2Jvb3Q= IFR1bmU= X3NuYXA= X0ZFRUQ= IGRlY2lwaGVy PXNpemU= X2ZyZQ== IFRpbGxlcnNvbg== 0LjQutCw dGlnaHQ= IGN1bHByaXQ= UlRM IFBhcmU= KHB1Yg== ZWdvdg== IHBvbnRv IGNvbnN1bA== SlNJbXBvcnQ= IHZlcndlbmRldA== IEJvb3N0ZXI= 5b6F IGNhcnJvdA== dmVyaWdl KExQ IHd4VA== IGltcHJvcGVybHk= Iik6DQo= IHN1Y2U= L21vZGFs IElDVA== LikuCgo= X21hcmtz IENhY2hlZA== IEN1cnJpY3VsdW0= QnM= CUpPcHRpb25QYW5l m4Q= IGNvZ25pdGlvbg== IE5lZ290 PXJlc3VsdA== X0ZvbnQ= YXJpbmU= IGNvbnNwaWM= IENhbGN1bGF0aW9u IENFT3M= LXRyYW5zcGFyZW50 IEJlcmVpY2g= 56iL5bqP Lmh5 LkFsaWdu IGhvcGVsZXNz IGNvbG9tYg== dXJiZWQ= IFNBWA== IGVpbno= KHpvbmU= IG11enpsZQ== IHRyZXNwYXNz IEFicmFtcw== IGNvbXDDqXQ= IFNhbmN0dWFyeQ== IE5TVGV4dEFsaWdubWVudA== IHN0YXY= IHByYWdtYXRpYw== c3RyZW5ndGg= V2l0aE9wdGlvbnM= LmJhbmQ= YXBoYWVs QXVzdHJhbGlhbg== IE9TRXJyb3I= TWFuY2hlc3Rlcg== SWRl XFJlc291cmNl 0L7QtNC10YDQtg== IHppZQ== SGFybmVzcw== LlR3ZWVu Y2Ftcw== 4pyU LXNjYWxhYmxl LW9r IGpsb25n IE9sc29u IE9ha3M= LnNsaW0= IHPFgg== IG5ld09iag== LkludmVudG9yeQ== IGtlbm4= IG5pZ2h0bWFyZXM= aXJjbGVz Lm50 Z3Jlbg== IFRFTg== IFNjb3Rz IERpc2FiaWxpdHk= X21hbmlmZXN0 LnNpZGViYXI= IHNodWZmbGVk IGh1bWlsaXR5 LnRhcA== IEdyYWlu bm90aWNlZA== 77yJ44CC X2hwcA== IGRpbGF0aW9u IGhhbmRpY2Fw Z2V0RGF0ZQ== IGR6aWHFgg== JykuJzwv cmVjb3Zlcg== eXNp KGdyYXk= YWhrYW4= IGludGVyZmVyaW5n X1RPVUNI X3JlZHVjdGlvbg== QWx0ZXI= IGN1Yw== RXhwZXJ0 IEx1bXA= Wzpd IHJlbG9j IGNvbmR1Yw== Q2hhcnNldHM= Lmxpc3RlbmVycw== LWludmVyc2U= IHN1bW1vbnM= IMO6bmljbw== IE9W IFNpY2hlcg== IEpGYWN0b3J5 LmdldEJvdW5kaW5nQ2xpZW50UmVjdA== amg= IHNrZWxldG9ucw== IEFzaWFucw== IEFNQw== aXNlbGVjdA== LmNsaWVudEhlaWdodA== KGZy SGFzRm9yZWlnbktleQ== LnJlbGF0aXZl INiu IG11bHRpY3VsdHVyYWw= X0NPTEw= IG1pY3JvYmlhbA== IGltcG9ydGFudGVz U3BhaW4= IGN5bGluZGVycw== aWVuaWU= X09XTkVS KERJUw== IGZhbmRvbQ== KG54 IGFwbGljYWNpw7Nu b2NhdG9y ZXNzaWFu IENsYXVkZQ== IGludG9sZXJhbmNl xYJlbQ== IFNlbWFudGlj Lk1pZGRsZVJpZ2h0 QVJFU1Q= IHNpZXZl xLHEn8Sx aWNhYmxl ZXJnaWM= IGJhdHRsZWQ= b3JiaXQ= KXx8KA== dWVsZQ== IGZhc2NpbmF0aW9u IGTDpQ== IFRpZ2h0 X0lOQ1JFRg== LklzU3VjY2Vzcw== LE8= IHN0w7hy IHByZXNzdXJlZA== LlRSVUU= IFRob3VzYW5k IGdlbWVpbnM= IHpi IHNwaXJpdHVhbGl0eQ== IFpldXM= IFBvd2VyZnVs YmF0dGVyeQ== aXN0ZXM= IO2D LnNoaXJv IEhpcHA= ZGVjbHR5cGU= LmpmYWNl LnRlbXBlcmF0dXJl IG1hcnF1ZQ== X2JhZw== QXR1YWw= cHJpY2luZw== Q2xlYXJseQ== X0Fic3RyYWN0 w6lr YWhydW5nZW4= SW5zdHI= CQoKCg== IGNoZXdpbmc= IENvYWNoaW5n JExBTkc= bWFsbG93 IHNlcmlvdXNuZXNz X2N1dG9mZg== IFF1YXJ0ZXJseQ== fScpCgo= IikpKTsKCg== 6KeE LlBvc2l0aXZl LXBv eGl0bw== LlJhZA== IGJyaXNr IExpZmVjeWNsZQ== 5pWw5o2u5bqT ZmF0YWw= IHhwb3M= LkRldGFpbA== ZW5hbA== TUFUQ0g= IGhlZWQ= IGFmcmljYW4= RGFkb3M= YmVyYXBh IGhlbGY= JywnJyw= IGVudHJlcHJlbmV1cnNoaXA= IGNlcnRz ZWNl PnI= X2ZpeHR1cmU= IHBvb2xpbmc= IG1vZ2VsaWpr IHNldERhdGU= 5pS/ LWNvbXBsZXRl X1JBRElP IGt1bA== IGdvYg== X1NMQVZF IGZ1cnJ5 IE5VSVRLQQ== SUxJVElFUw== IG5vY2hl IGN1ZmY= IGNvbnRlc3RhbnRz IFdW IHBhc3Nwb3J0cw== IMWC IE5haWw= X2RlY2ltYWw= YXN0bGU= IFNvbGRpZXJz UmVjaXBpZW50 IGNvdXJzZXdvcms= IGltZQ== IFNlYXRz X0RM IGNvbnN1bHRhdGlvbnM= X0FEVg== IElrZWE= IG9maWNpYWw= IHJlZ2ltZW50 IEJhdGhz LXBpbg== X0JVQ0tFVA== QUJDREVGR0hJSktMTU5PUA== Il0pKTsK PE1lc2g= Iix7 IGRlcml2ZXM= 4oCcRm9y IFl1Z29zbA== aXNFbmFibGVk IHNvbGx0ZW4= IHBldGl0aW9ucw== b3ZlcmFsbA== IGdldFRvdGFs X0hJTlQ= TWludXM= IGFub21hbGllcw== IFBpY2t1cA== PT09Jw== bGVpdHVuZw== IERlaw== WVNJUw== LnNlc3Npb25z IGNhcmM= X0l0ZW1z IGludGVybWl0dGVudA== Lkpzb25Qcm9wZXJ0eQ== IG1NYXA= IEthaw== YWluY29udHJp X3NlZWs= IHVuYW1l X3B1dHN0cg== RmQ= TGltaXRlZA== c25vdw== IFBhdmlsaW9u IEV4YWN0 IHBvc3Rpbmdz CWRpc3Q= PHN0ZGxpYg== TGlnaHRz IGZpbHRybw== V29ya2Vycw== IHN5c2xvZw== R2lybHM= IEd1bQ== X3llYXJz J319Cg== IGjDpHQ= Z2F5 KHByb2I= ZWxsYXM= IHdpbHQ= Lm9wdGltaXpl X0RVTVA= KFhNTA== IERYR0k= IG3DqXRo SVRJWkU= ZWxlY3Ryb24= LmN6 IHN1YnNldHM= IHJlc3Bvc3Rh IGJlYWQ= wrsu IE9TQw== JnBhZ2U= Z3Bz YW5pYW4= UHVycGxl IGFjcm9ueW0= Uk9XTg== QXVkaXQ= IGNvdXJpZXI= YWxpZQ== IFdhc3M= IGF1ZGl0cw== IFBPVg== IEZhY2lhbA== X3N0cmNtcA== ICsl ICAgICAKCg== YCk7Cgo= RUhJQ0xF WyJA LW5hdGlvbmFs 6ZuF6buR 6L2v6ZuF6buR X2NvZGlnbw== IHVucXVlc3Rpb24= aWxtaW5ndG9u cmVxdWVzdENvZGU= IElX LnN0cmF0ZWd5 IFNZTUJPTA== IGdyw7bDnw== X2JlaGF2aW9y IHJlZnJlc2hUb2tlbg== IG1vbmc= aW1lbnRhcnk= IFNob3Bz KCc/ X2hpZ2hsaWdodA== X2xleA== IGlsbHVtaW5hdGVk IHBhbHA= LWluc2VydA== IHN0cml2ZXM= IGZvcnRz IGVtYm9kaW1lbnRz bXBqZXM= X1RPTw== IGRyYWdnYWJsZQ== IGltbWVyc2lvbg== cGlucw== IFJlZ2lzdHI= IEZyZWVCU0Q= X3hsaW0= IFR1bHNh U25hY2tiYXI= L2RhdGU= IGRhdm9u IGF1dG9yZWxlYXNl IHZhY2F0aW9ucw== CQkgCQ== aWNlcHM= IFJhbXA= IEN5bnRoaWE= X3BvcHVsYXRpb24= JCQk IFRBUg== ZW5nYQ== IHB1cw== IOW5 IHRpbWVzdGVw TGlmZXRpbWU= IGZpbG1lcg== WVNU IEdhemV0dGU= IG91dHNpZGVy IEVYUE9SVA== R09SSVRITQ== LmZsZXg= IFJvb3Rz KHBpeGVs emN6ZQ== YWlyaWU= IG92ZXJsb2FkZWQ= U1RSQUNU IENvdXJpZXI= 44GW Y29udGluZW50 RnJlZA== IHNlbXA= IFN0ZWxsYQ== IGRvdWJ0ZnVs YWRtaW5z IG9wdGluZw== TE9UUw== IG1hbmlmZXN0bw== LWZvbGRlcg== X2Ryb3BvdXQ= dXR1cmVz w612ZWlz YWNoaWV2ZW1lbnQ= IGNveQ== ZmFpdGg= X0hBTEY= aXJlY3RlZA== IGNvbnRhdG8= U2VtYXBob3Jl UHNp IHZpdGFsaXR5 IEZsYXRCdXR0b24= SXRlbVR5cGU= IGltcGVjYw== IGJ1b3k= dWlu IHNreXJvY2tldA== IFNsYXllcg== IFJDTVA= IFNldmVudGg= X0ludGVyZmFjZQ== IGZpZXJj c3RhdGlvbnM= IEdyYWY= bGljZWQ= IGVudW1lcmF0b3I= Q29udGFpbmVycw== IG9p w4fDg08= LXRvbg== UkVQ KGZsb3c= LmNvb3Jk R2Fi IE1vcnBo IFpvZQ== IGhhcmJvdXI= Lm1lc3NhZ2luZw== X29wdGlvbmFs IEJhc2VBY3Rpdml0eQ== cmVzZW50ZXI= IG5ieXRlcw== IGNvdXJhZ2VvdXM= PSE= J0l0 IGZvcnM= IGNvcnJpZG9ycw== IEJFRU4= IGZ1c2Vk PWltYWdl LkdyaWRWaWV3 IHNlbWVu aWdyb3Vw dXB0aW1l IFhC 5o6S5bqP IGludGVncmF0ZXM= X09D IGJhaWxvdXQ= IHRlc3Rl IG9jdXA= YXVsZWQ= X29kZA== cGdh IEFTVVM= IFRTUg== IG9jY3VwYW50cw== U2V0VGl0bGU= U2NoZWR1bGVycw== IGJla29tbWVu QnJpZ2h0 IE1haW5Gb3Jt Xygn RnJvbUFycmF5 IGluZGljYQ== SEFORA== T3JkZW4= IFRlbXBlcg== LnN0YXR1c1RleHQ= cG9saXRpY2Fs IFBlcmN5 44CCCgoKCgoK LnNldFg= Z2V0TGlzdA== aG9sZXM= UGl4 IG91dHNvdXJjaW5n IG1lc3NhZ2VJZA== IGdldFNlc3Npb24= IFZJUg== T2ZGaWxl IFNwYXRpYWw= LkZsb2F0RmllbGQ= KShfXw== IFN3aW1taW5n QUNMRQ== IHNlbnRpcg== IHBsdW5nZWQ= IGF1am91cmQ= Z3VuYWthbg== KHZvbHVtZQ== IGNyYXRlcg== Lnhscw== woDCmQ== UmVuZGVyV2luZG93 LnVzZXJtb2RlbA== IGZ1bmN0b3I= RG9tYWlucw== aW50ZXJwcmU= IGFibm9ybWFsaXRpZXM= YXJnaW5n RGVtb2NyYXRz IHBhbG1z 4qCA w7hk KkE= RnJvbURhdGU= fFs= IEFsdGVybmF0ZQ== IHB1ZG8= IGNvbmRlbnNlZA== KHBsYW4= ZGVsaXZlcg== IGJ1bGxldGlu J11dLA== IGNyw6llcg== LWlw V3M= IiIiLAo= IGlrZWE= IHZpc2l0ZQ== IG11bHRpcw== UmVzdWx0YWRv IFBob3RvZ3JhcGhlcg== Li4uJywK IG1pZ2xpb3Jp IFRocmVhZHM= Z2V0U3R5bGU= ZXJhw6fDo28= PFRTb3VyY2U= IEdpbmc= J10iLA== IHNpZ25hbGVk U3VwcHJlc3NMaW50 IGR3b3Jk IEh1bnRpbmd0b24= IEFBUA== QU5HTEVT LmNyZWRlbnRpYWxz c3dhZ2dlcg== LWNvbnNvbGU= Ii0t LlRleHRJbnB1dA== IE5PUlRI IG5pZ2h0bHk= LkZPTlQ= IHF1b3RpZW50 5Lmf IHNjaMO2bg== IFBsYW5uZXI= IHJlYWRsaW5l IGNvbmZyb250aW5n YH0= SXRlbUNvdW50 CWFjdGl2ZQ== IHLDqXBvbmQ= ZWxtZXQ= IGdpbW0= LG5vbmF0b21pYw== IEFDVElWRQ== aGV1cmU= L1ByaXZhdGU= IG1lYw== LlNlY3JldA== IENJUw== xYJ1Zw== KHBlcmlvZA== IGxsZWdhcg== dXJpYQ== RGVzY3JpYmU= IHBhcmVqYQ== IFZlZA== LWVmZmVjdHM= IFBhcnNpbmc= LXJlc291cmNl IGFiYQ== ICosCg== IGFuYXRvbQ== ICgqKSg= LXJlYWw= IFZlbnR1cmVz IFNoaWVsZHM= IFVuaXZlcnNpdGllcw== UFJFU0VOVA== IFFMYXRpbg== xaU= IFdpbGV5 QWFyb24= IHJhY2lhbGx5 IE5hZHU= IGh0dHBSZXNwb25zZQ== w610aWNh IOuwqQ== IGdyw6F0aXM= 5LuL b21hcA== IGFub24= CXBvcA== YXZhdGFycw== IHN1YnBhcmFncmFwaA== ZHpp UHJvamVjdGlsZQ== RFRW bGlzdGVuaW5n X3JlZ2VuZXJhdGlvbg== IFNoZWx0ZXI= PFZlcnRleA== L21k KGxl IHZhaw== c2VsZWN0ZWRJbmRleA== X10= IFN5bnRoZXRpYw== YXBwSWQ= IEZpcmVk IHBhbXBo X2xhdGVuY3k= aW5maWxl KGNyaXRlcmlh c2VyaWFsaXphdGlvbg== UkNU CWV2 IFNDSA== IE9wdGljYWw= IHN0aXJyZWQ= IFBvdGlvbg== ZXRoaWNhbA== Ojp7Cg== IFBlbmd1aW5z UEhZ RGVjaXNpb24= a2FydA== IGV4cG9ydGVycw== IFBvbHllc3Rlcg== Y29udHJlcw== IExhd3Nvbg== IEVtcGxveWVy IHNhc3M= IGRvd250aW1l IGJyb2tlcmFnZQ== IFJvdGFyeQ== IFdhaGw= V0FSTg== IHNldEFjdGl2ZQ== dGVtcGw= Q2hlZXJz LXNoZWxs Rml0bmVzcw== IHF1aWw= IGNsZWFuZXJz IOeb IE1pbGFubw== LWFzc29jaWF0ZWQ= fX19LAo= UEZO IG9uUGFnZQ== X3N0cmVhbXM= IHNjdWxwdHVyZXM= IG5haWxlZA== PXNj 6aaW6aG1 0LjQvNCy Y29ubmV4aW9u Sk9C IEthcm1h IFN3aWZ0VUk= IERleg== L1VJ IOyZ Z2V0Q2xpZW50T3JpZ2luYWw= IHB1bmlzaGluZw== IG9kZW5zZQ== LHJpZ2h0 ZW5lcmF0aXZl IFByb2JsZQ== IEFwcFN0YXRl IGRpc2Nsb3N1cmVz IENhbnRlcg== Y29tcG9zZXI= dXBhdGVu IHN1Y2Nlc3NvcnM= Ij4nCg== IHByZXNlcnZlcw== Lm9wZW5k X05vcm1hbA== L2hy UmFuZ2Vz LGxvbmc= CQkJCSAgICAgICAgICAg cHJvZHVjdG9z IGZseWVy IEdydXBv Tmlja25hbWU= SGllcg== IERFQQ== U3ByaXRlcw== CW1hc2s= X3Jlc2VydmVk LXNob3A= Lm5vdGlmaWNhdGlvbnM= IGRpdmlzaWJsZQ== aW9zaw== a2VyamE= aW5ndA== IEZpZnR5 IGFjY291bnRhbnQ= IEV4cGxvcmF0aW9u X2Jyb2FkY2FzdA== IGV4dHJhb3JkaW5hcmlseQ== IGtvdA== IGNpcmN1bWZlcmVuY2U= cm91Y2g= W0Jvb2xlYW4= Y3Jhd2xlcg== L3JlbW92ZQ== YXJlbGxh IHNleGVz SGludHM= IGdhbWI= IGRhcmVk dGVzdGVk X0tFRVA= IGZpbHRyYXRpb24= aWNrZXk= IEluZmx1ZW5jZQ== IHNwZWNpZmljaXR5 X0lEUw== IFJvZG5leQ== X0lSUUhhbmRsZXI= T25FcnJvcg== IHByZXZTdGF0ZQ== aWVnZWw= IExFU1M= IGF3YWtlRnJvbU5pYg== IExV dW1hYmx5 b3J0YWxpdHk= IG1hbmRhdGVz CXZlcnNpb24= IHBhcmVudE5vZGU= IHBlc3Rz IGNhc2M= Y2VwdGFy IFdvb2R5 ZXJlZQ== X3Bm LlBPUw== aXN0cmE= bGV3 WWFuZw== IHN5c3RlbWQ= IHJvYW0= LkdyYXk= IGNvbmR1 4oCUaW5jbHVkaW5n VmlvbGF0aW9u TWFob24= IE1VU0lD IFNpcmk= IEVudGVyZWQ= IGNlcnRhaW5z ZWxhaA== CU1haW4= LkRhdGVGaWVsZA== LkhlYWx0aA== IEthc2ljaA== IGNhbmluZQ== PXJvb3Q= dWRkbGU= XGNvbW1vbg== IFN1bHRhbg== ZmluYW5jaWFs IFFTcWw= IGFzY2VudA== IHBydWViYQ== emllaHVuZw== LmdldEVycm9y IEdsb3JpYQ== RWNobw== X0NIT0lDRVM= X2Vwcw== L3Byb3ZpZGVy UEhPTkU= 5YWz6Zet IGNvbXByb21pc2luZw== X0FQUFJP UHJvY2Vzc0V2ZW50 IGJ5dGVBcnJheQ== IENydWM= wqg= IGljaW5n IFBDTQ== dmVjdA== QW15 IFZhY3V1bQ== aW5jaWRlbnQ= IHVzZXJu emJlaw== XSspLw== IH19Ij48 IEdldERhdGE= Y250bA== IHNhZ3Q= X1BSSU1BUlk= IGxlcg== IEZVQ0s= IFN0YXJy SUg= w7ZycGVy eW1z XSldCg== L3Rvb2w= Y29tYmluYXRpb24= IHRhbXA= IEJlaXQ= IE5JR0hU IGFubsOpZQ== KGFt XFRyYWl0cw== Olwi IGNhcmdh LmlkZQ== IGRpa2tl Q29tcGV0 IHNjb290ZXI= IHhQb3M= KGludGVycA== IGhhc2ls Y2xpZA== IGhldXJlcw== Z2xvbWVy c2hhcmVz 77yMCgo= cG9uZGU= 4bqjaQ== X2R1cGxpY2F0ZXM= c29uZ3M= fV07Cg== IFNuaXBlcg== IFRodXI= cm9wcA== IGdydWVz IG9yZXM= dXNoaW1h IHVzYWJpbGl0eQ== 6ZKf L21lbWJlcg== b2xkZW1vcnQ= SXNBY3RpdmU= R2V0RW51bWVyYXRvcg== bXV4 V0lORE9XUw== TmVnYXRpdmVCdXR0b24= 4Liz LW1ha2Vycw== 44Kk44Oz IEJlcm0= QnlFeGFtcGxl IFLDvGNr U2hvd3M= Z2hp IElocmVy IENydWQ= Y2hlZg== X2F1Yw== IGFww7Nz YW5rYW4= IEtERQ== SUxMUw== IGFuZ2xhaXM= LXJlZnJlc2g= CXJhbmdl eG1t KGVkZ2Vz IGFwcGVs Ijt9 IGVkaQ== IHN3b2xsZW4= IGJ1dGNoZXI= aWNpZGVz aG91bmQ= IF4o IEV2YWx1 IGtleWJvYXJkVHlwZQ== U1NJRA== cm9iYXQ= IG5paw== IHN0cmF3YmVycmllcw== XCJd bm9zaXM= TUVE 54g= 5LqU aW1heA== XEFubm90YXRpb24= IG51cnU= IE1pbmltYWw= IHdvcmRwcmVzcw== IGNvbGRlcg== CXBhcnNl L3N0cmV0Y2g= 5omn6KGM cm9tb3NvbWU= RElN IHRlbnRhdGl2ZQ== Ok5TVVRG LGltZw== IE1BVEVSSUFM IEpldEJyYWlucw== TGVnZW5kYXJ5 CXN0cm5jcHk= IGRlZnM= TnVtYmVyRm9ybWF0RXhjZXB0aW9u IGJ5dGVjb2Rl IHdpc3Nlbg== X01PUkU= oO2DnQ== IENvZmY= LkNvbmRpdGlvbg== IGTDqXBhcnQ= ZHNu IHBhcmFtZXRybw== XEw= Lm5hbm9UaW1l Qk9UVE9N LldoYXQ= 64Q= IERpeA== X0RB KENvbnRhaW5lcg== YXlhcg== RmxleGlibGU= LlJheWNhc3Q= IEVkd2lu W3VybA== wpI= LnN0cm9rZVN0eWxl IFBvbHlub21pYWw= aWxpdGF0aW5n IFFWQm94TGF5b3V0 KHJlcA== LnZu LWFzc2V0cw== Q0hBU0U= IEVzc2VudGlhbHM= anlsbGFuZA== IGF4cw== IFRyZW0= Lm1haW5sb29w IFdJTkRPV1M= LlJFUVVFU1Q= IHJlaW50 IExpYnJl Y2hlb24= IGd1ZXJy CU5kckZjU2hvcnQ= LnNvZnRtYXg= IEFzdXM= LXNjb3Jl IEpPSE4= PlN0YXR1cw== PkVkaXQ= IENhbWU= IEFzaGU= X3VzaW5n IExvbmU= IGxlc2Vu IHJldmVyc2luZw== bmdyeA== LnNpZ25hdHVyZQ== LUFzc2Fk L25hdGl2ZQ== X3JhdGluZ3M= IG55YQ== IGFkaWRhcw== KG9wdGlvbmFs Il0o IHJlY3VycmVuY2U= IEJNUA== z4w= X2dw Ij5c X3dyb25n eXBz LlByb3h5 X1VEUA== UXRDb3Jl TGlua2VkSW4= IGNhdmVybg== IHNww6ljaWFs X3dpcmU= IG5hbm9w LmJhbGw= IHJlZHVjZXJz IG1haWxlZA== ZG9uZw== IG9wcG9zZXM= IEhhbnNvbg== IFNhdHVyZGF5cw== YWNvbW1lbnQ= X01ldGFEYXRh IEdhbGFjdGlj KCIvIik= IENsZWFuZXI= X1RFUk0= IGNsYXJv Lk9VVA== 5a6h IHNsaWs= IGplZG5haw== SGFuZGxlckNvbnRleHQ= IGlycmFkaQ== ICAgICAgICAgICAgICAgICAgICAgICAgIAo= LnRpZ2h0 QnJlYWRjcnVtYg== ZnJleQ== IOqwneyytA== bGJyYWNl TEVHQUw= LWd1bg== IEJsb2dz IFNoaXJsZXk= IFB1bmU= dXJzaW9ucw== IHN1YnRyYWN0aW9u ICoqKgo= YXJtYWN5 IHNhbXQ= PSIpLg== IHBlcm1pc3NpYmxl KHJk IFdBVEVS IHByb2Zlc2lvbmFs IGhhbmRib29r IG1vdXJuaW5n YXJlZmE= IGFzbg== aXNleA== IGNvbnRlbnU= IFVOQw== LmdldFByaWNl IFB1bXBraW4= LwoKCg== IGNvc2luZQ== IG5pZWQ= IEJyYWtl RGF0YVVSTA== IERhdGFHcmlkVmlld0NlbGxTdHlsZQ== IFJldHVybmVk ZXdvb2Q= aXF1w6k= IGJsZWFr IHdlYmhvb2s= LlRoZXk= YXJi TEFOR0FETQ== X29yZGVyZWQ= IHByYW5r Lk5ld1JlcXVlc3Q= IGxpdGVyYWxz J30+Cg== c2VyaWFsaXplZA== a3Rvcg== KHJ4 IGdldFk= CVN0cmluZ0J1ZmZlcg== KHNsaWNl cmJyYWNl ZW1lbnRv IGxhbmM= RGVwbG95bWVudA== IGNvbmNlbnRyYXRpbmc= U2tldGNo IGJyaWdodGx5 QmVnaW5uaW5n IERhaA== VGs= SW5zZW5zaXRpdmU= IHNhYmU= KE1vZHVsZQ== IGNlZGFy X2NvbnRpbnVl IHdpdGhPYmplY3Q= IGNvbHVtbmE= IENhbGRlcg== INC/0L7QvA== X3NvZnRj c2hhbGVk ZXJ0YXRpb24= CSAgICAgICAgICAgICAgICAgICAgICAgICAgIA== OkAiIg== IGZhw6dvbg== dXN0dW0= c3Rr X0NSQw== b2R6aQ== IGFzY2VuZA== Zmdhbmc= IHByZWZhYg== IGZpbmRldA== Oicr 5Y2V5L2N dW1ibGVkb3Jl LmludmFsaWRhdGU= IHRvaQ== YW5nZXBpY2tlcg== X0FJ aGls U2VhdA== IHBpc3Rvbg== Zmli X2JsdWVwcmludA== 44K4 X1JlY29yZA== cmV0cw== RnJhbg== IENhaXQ= IHBlbGlj IGRuYQ== IHVwZGF0ZVRpbWU= IC9eWw== IHJhbGxpZWQ= IEhpbWFs U1NJ X3BsYW5lcw== IE91dHN0YW5kaW5n QXBwbGljYXRpb25CdWlsZGVy c3R1ZA== X2xvY2F0b3I= IGFib2xpdGlvbg== ICgkKQ== amVybmU= IEFBQw== L3dpbmRvd3M= LUNhbA== X1NFQ09ORFM= ICcnfQo= w6FueQ== IHl1bW15 5omL5py65Y+3 IFZHQQ== aWxhdGU= IFN1cnZlaWxsYW5jZQ== CUd0aw== 8J+Y IHNoaW1tZXI= YWx0ZXJuYXRl Rm9yU2VndWU= dWVzdHJh LWNvdmVy YXNs IEluc2V0cw== bGlqYWg= OlM= CWNhdGVnb3J5 IGZq w61saWE= IE1BRA== QGpz 5p8= IHBvb2xlZA== IHRyZWF0aWVz IEJpaw== IEhhemVs QWxsb2NhdGU= IGFpcnBsYW5lcw== IHNlcm1vbg== IFBvc2l0aW9ucw== IE1BSUw= U3RvcHBpbmc= YXZvcmVk KFRlbXA= IGNoZWF0cw== LnVzZXJJRA== IHB1dGE= LXl5eXk= VWlUaHJlYWQ= IG9mc3RyZWFt XFNlZWRlcg== IENvdHRhZ2U= IF4K IEFMVEVS IHF1YW50aWZ5 cmVpYnVuZw== IG5lY2Vzc2l0aWVz LkxvY2FsRGF0ZQ== IOaXpQ== cGljdHVyZXM= IGNydWQ= 5pyo IGRvd250dXJu YWN0b3Jpbmc= IERlcm0= IGVzdHJ1Y3Q= IE11c2lr IG1seA== Lm1ham9y Lkh0dHBTZXNzaW9u Pzw= eWVhaA== IG1vam8= IFVuaXR5RWRpdG9y IHJha2U= X3R3ZWV0 IHJhZGlvQnV0dG9u IERvbWluaW9u YXNTdHJpbmc= b3p5 IHZvZGth b2dsb2I= IEFsdW1uaQ== YmFsYW5jZXM= X21hbnVhbA== LmxvYWR0eHQ= X2ZyaWVuZHM= IFhtbERvY3VtZW50 W2ZpcnN0 S2V5Q29kZQ== IHBvZXRpYw== bWluYQ== IG9wY2lvbmVz 5omT X3N1cHBsaWVy LkZyb21SZXN1bHQ= X2Rpc3RyaWN0 IEdhbGE= LnF0 IGNvbnRyYWN0dWFs YWNvbnM= LWFuY2hvcg== IHl1cA== IHVuYW5zd2VyZWQ= IG1heGxlbg== RXJyTXNn LXNu IGh5cG5vdA== X1dN KCldWw== IGRlc2VydmluZw== b3dtZW50 KFJhbmRvbQ== IHZldG9y IElTVA== 0LDQvdC0 LWxhbmc= IHNpaw== Y3JlYXNpbmc= IHBvcnRhbHM= IEJ1bGxkb2dz cHJvbW8= IHByb3Zva2Vk XX07Cg== IEliaWQ= ZXJnbGFzcw== X1dJRkk= YXBwcm9wcmk= IHJlZGVzaWduZWQ= IC8vLS0tLS0tLS0tLS0tLS0tLQ== emlr JG8= dWx0b24= IFJlbGF0aXZlcw== IG1ldHJvcw== IG1lbnRvcmluZw== YXTEgw== dXNobWFu IGluaGVyaXRz IFJ0 L3ByZWZlcmVuY2Vz aW1lZA== Sk9JTg== KGludGVyZmFjZQ== IGFkZXB0 IE9mZmVuc2l2ZQ== IEFHUkU= b25pYW4= LnBhcnNlcnM= IHBhc3NwaHJhc2U= IHVuc2VyaWFsaXpl VmlzaXRlZA== IGdldFByb3BlcnR5 IG5vYw== ZWRhZA== ICMtfQoK dmlkYQ== c29sdmVy IE1vcmFsZXM= IGt2aW5uZQ== IEFjY2lkZW50 IHZldXQ= IG1pc2d1aWRlZA== IFJldmVsYXRpb24= IHJhcGlkZQ== cHVuaw== Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= T2JqZWN0SWQ= YWJpbmV0 ZXh0cmFjb21tZW50 IGJ1bm55 IERlZmVycmVk dXR0YQ== dWFl YnVzdGVycw== IFNvaWw= R1NU LkN1cnJlbnRSb3c= 44GR IGdyYXR1aXRz IGNydWlzZXI= 15E= IFRlbm4= anNj IO2VhA== ZGlzcG9zZWQ= QUJPVVQ= fQ0NCg== ZXhwaXJlZA== IFhtbE5vZGU= IFRhdHRvbw== Vm90ZXM= Rm9sZA== RWxpemFiZXRo X0ZJTEVOTw== IGNvbmNv IEdkaw== b3BpZXM= fX19 UVVPVEU= LUlJ c3BhbQ== LWxp IGNhcnRh LmxheW91dHM= IGJlc3Bva2U= IGFtYXRldXJz IGNvdWxldXI= aXRhbWlu IGlycmVzcGVjdGl2ZQ== IGJsYWNrQ29sb3I= LnlhaG9v IHdlYXJ5 IHN3ZWV0cw== PyI7Cg== PVwiJQ== X3dvcmtzcGFjZQ== IERpYW1ldGVy IGFtZA== IE5ldWU= IGRiTmFtZQ== SmVyZW15 bG9nZmlsZQ== YXRyaWI= IEh0dHBTZXNzaW9u CUNyZWF0ZQ== aWRkeQ== LlBBUkFN IGZpYW4= IHN6Y3o= IHFyZWFs X0VTQ0FQRQ== dXNhaGFhbg== LmRpZ2VzdA== IGdldFBhcmVudA== LkRyb3BEb3duTGlzdA== IHRow6k= IG1vbnN0cm91cw== IGJlcmhhc2ls IiIiDQoNCg== U3VwcG9ydGVkQ29udGVudA== IEdhdGhlcmluZw== aW5jeQ== LktleUNvZGU= IGZldHVz LmNlbnQ= IGJlc29uZGVycw== bmlsYWk= TFRSQg== IGhpbmdl UFJPUA== LmZvdW5kYXRpb24= bnVtZXI= LXJhbmtlZA== 6I0= IHBhaW5mdWxseQ== ICg7Oyk= Zm9ybWU= TGFkeQ== L2FwcGxl IENvbnN0aXQ= IHN0b2NraW5ncw== 5rS7 IG1lbnRvcnM= PkNyZWF0ZQ== IEludGVybmFsRW51bWVyYXRvcg== IHRlbGV2aXNlZA== VG9rZW5UeXBl IGJyaWI= Y3JlYXRlVmlldw== L0RURA== R2l0SHVi KGJpZw== IG3DoXhpbW8= 5b6u6L2v6ZuF6buR LmNm IMKgIMKgIMKgIMKg PHR5cGVvZg== IHByb2dyZXNzaW5n LnNldFdpZHRo KHR2 IHVuZmFpcmx5 IEFuaXRh YXJ5YXdhbg== RGFs VVJZ b2dlbmVpdHk= ZWZh LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq IGRlamE= T1NF cmFpbA== cm9vZg== X3F1b3Rlcw== PGo= 44Ko KHNldHRpbmc= bGV2ZWxuYW1l X2hhbmRsaW5n w6lyYQ== JGo= IGRhcmxpbmc= LlBhdGhWYXJpYWJsZQ== W3NvdXJjZQ== TWV0aG9kTmFtZQ== IE91dGxldA== 5pKt IENvY29h VWJ1bnR1 IG1vb2ll IGZsb3JpZGE= IHJldGhpbms= IGdldFg= Z2V0RWxlbWVudA== IHJhZGl4 IEdhbWVy ZGVhbGxvYw== bGVmdEpvaW4= X1NZTg== R3JpZExheW91dA== Imdv KGVhY2g= CXNjZW5l IFB5RXJy SG93YXJk LlNpZ25hbA== IFRFTQ== IOen VkVOVE9SWQ== IHNpbXVs IDw8LQ== IHR1cmJpbmVz IHN1cnRvdXQ= YWx0bw== IHVuYXJ5 YA0K IFNjcmk= IE1vbms= IHVuZm9sZGVk Q29tcG9zaXRpb24= UFBFUg== IHNpZGluZw== Jyx7Jw== IHRyZWZm X1VOSUNPREU= IGRlcmVjaG8= IHBvbGFyaXR5 IG9yYw== PERvY3VtZW50 KHRvZGF5 LikKCgoK IHNlZW1pbmc= XFY= PklE IGZpYm9uYWNjaQ== KG1hdGVyaWFs RkxBU0g= ZGlyZWN0b3JpZXM= ZXN0ZXJz VEVDVElPTg== d3JhcHBlZA== LXNlbGVjdGlvbg== LXJlbGF0aXZl KGNocg== IHBvcnRmb2xpb3M= IHNob3dEaWFsb2c= aW5nbGV0b24= IFRJQ0s= IEludmVzdG9y IGJyYXY= IFNWTg== IGhhdGVmdWw= cmlwcw== ZXhwaXJ5 X2NvaW4= PgoKCgoK IG1hcmdpbmFsaXplZA== IGV4Y2VlZGluZ2x5 bmF2YmFyU3VwcG9ydGVkQ29udGVudA== KGV4dGVuc2lvbg== IGFkdmFudGFnZW91cw== Lk1pY3Jvc29mdA== IGVuc3VpdGU= LXZpb2w= X2R1ZQ== S0g= IFJvbWFudGlj aW5hbmQ= ZWNp cmVwb3J0ZWQ= IENvcnB1cw== IHNwYW5raW5n IENyb3NieQ== LkZvdW5kYXRpb24= XF8= IGFubm9uY2Vz QXR0YWNobWVudHM= 4Liy4Lij IFdheA== 77yB77yBCgo= IHNhaWxlZA== LkV1bGVy CXNjcm9sbA== IHBlYXNhbnRz IEJ1aWxkZXJz LkdlbmVyYWw= QVJFQQ== IG1lc3Npbmc= dmVybg== IGRpYXBlcg== IG9jY3VwaWVz CWxvZ2lu LkxPQw== aWdhbnM= 77yB4oCd X2Zvb3Q= X3RhdQ== LXBhY2thZ2Vz cmVjdXI= QWx0ZXJuYXRpdmU= 77yB44CN YXJvbw== IHRydXN0ZWU= LDpd 5pa55byP Pz4+ Lk1pbnV0ZQ== IGFsY2Fu IENvbmNlcHRz Y2hpbGROb2Rlcw== Q291cnQ= IGNlbGxhcg== bGVr YWtpcw== QnViYmxl IG9iamVjdGVk IO+7vw== Ol06Cg== LnBhcnNlRmxvYXQ= IHNwYXJrcw== LWZpbmQ= dmFyaWF0aW9u SGFjaw== RmFucw== X3BhcnNlZA== RW50aXR5VHlwZQ== YXVjZQ== X3RyZWVz IEVnZ3M= VUlCYXJCdXR0b25JdGVt X3RheG9ub215 IFNIT1A= VHdlbnR5 X2NoZWNrcw== IExY dXRzY2hlaW4= KHBsYXRmb3Jt IGF1dG9wc3k= UmVxdWlyZW1lbnQ= IFJFQ1Q= dG9Db250YWlu JywnJQ== L2VkaXRvcg== IHFi IEVFRw== aHRh X1RJTEU= LXN1bQ== IEFsYnVxdWVycXVl IHNob3J0Y29kZQ== IHNpbnVz IGRlc2tz IHBvb3A= Lm9wZW5zb3VyY2U= IENvbGxhcHNl LmRlcg== IGhhd2s= IFZhbmd1YXJk IE1hcnJpb3R0 X1RhcmdldA== IEJhbmFuYQ== X2F0dGVudGlvbg== IEFyaWVs X3Rlbg== IGJha2Vy 4oCUaGU= xIXFvA== dmVsb3BtZW50 RWxm X2djaGFuZGxl UmVwdWJsaWNhbnM= IGl0ZW1CdWlsZGVy V29u X2FjY3Vt IG5ld1Bhc3N3b3Jk IGRldm9pZA== IE1hcmt1cw== ZGFlbW9u Lkh0dHBDb250ZXh0 S3Jpc3Q= IGFhbGJvcmc= X3RyaWFscw== KGFzc2VydA== 44Gj44Gm YmVsdA== IG1pbGRseQ== ZXJ2b2ly IGRlc2NlbmRhbnQ= IEdpb3Zhbm5p IGRlY2x0eXBl LVNoaXJ0 IGFwcm8= QXBwbGllZA== LmdldFBhcmFt aG9m dXJhcg== IE9CUw== X3Nlcg== KHNlY3JldA== W2xheWVy IHVzZWZ1bG5lc3M= IEtvdQ== X3N1Ym1pc3Npb24= X0hPUklaT05UQUw= LHRtcA== Ly4K IGxlc3Nlbg== X3dj X0ZJTkFM 0L3QvtC/ LnRvZG9z LlhQYXRo IElEYXRh IGRvb3JzdGVw IGNvbXBvc2luZw== IGh1dA== IFZMQU4= IG91dGY= 6K+l KGJldGE= KioqLwoK IEluZG8= IGtsYQ== X2NvbmZpZ3VyZQ== Lk1hcms= b3NlY29uZHM= KFZlcnRleA== b3JnYW5pc21z IGZmbQ== IGRlbW9saXNoZWQ= ICItLS0= bGVzaQ== IFNpZG5leQ== LmdldEluZGV4 Lk1vbmFk U2VsZWN0ZWRJdGVt IE5hdlBhcmFtcw== YXpvbGU= QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo= X3NlbnRlbmNlcw== IGluY2xpbmF0aW9u IEZhdGhlcnM= YWNjb3VudElk aGFyaQ== KT4K L3Jhdw== ICcnKTsKCg== K2w= KGNk IHVuemlw IGdsYW1vcm91cw== IyIs IG5hdw== IG1pbmli IEJyYW4= TmFjaA== X3R3ZWV0cw== IENDUA== JSI+PA== IFN0ZXBoZW5z bWFzxLE= J2Vz IHJlcGFy X2RvY3VtZW50cw== LmNsb3NlZA== LXJpbmc= L2NhdGVnb3JpZXM= IERlZXBDb3B5 U1VQ Lm5ld2F4aXM= IGdkeQ== aG9l IFJlZWY= IHBvbGl0aWM= IFJlcXVpcmVtZW50 IHNoZWRz c2VhbGVk IHBhdGhvbG9neQ== Ii8+PA== bW9kbw== IHN0ZW1taW5n IHRhYm9v IFNhdmlvcg== IH0NCg0KDQoNCg== LmN2 IGpvdWV1cg== IENvcm53YWxs IFJlY2VwdGlvbg== IGlsbHVtaW5hdGlvbg== IGdkYg== VkVD b2R1 Q29udGVudEFsaWdubWVudA== c3RhbnRpYWw= YmFzZWxpbmU= X2J1c3k= LwoKCgo= IHBsYXllcklk 5qM= X3BldA== IE1pcmFjbGU= dXJlbnQ= IE1lcmxpbg== dWJlbg== IHNldENvbG9y IGRhcmtlc3Q= c3Rlcnk= IGNhcmlj IHJldGFyZA== IEhvdXNlaG9sZA== IGphbA== IHlw IiwiIik7Cg== IEFjZXI= W1c= b2xraWVu YXlv UHJpdmF0ZUtleQ== IFNUQVRT INC90YPQtg== OicuJA== IHRoYW5rZnVsbHk= IGRpc3RydXN0 Z2V0RGVmYXVsdA== L2ZhY2Vib29r IENvbnJhZA== IHV0aWxpemFuZG8= IEthZw== L25hbWU= IGJhbWI= LkZyb21TZWNvbmRz IG11dGls IExhZ29z IEJsZXNzZWQ= aWxsZWdhbA== aWVp X1RQ IG1hdGxhYg== IGN5Y2xpYw== IHdpdGhoZWxk IGhvcnJpYmx5 LWhvdXJz LUhlYWRlcnM= IG92ZXJsYXBz IGN1YXRybw== IGVxdWl0YWJsZQ== IGNvbG9ybWFw IHNoaW4= IFN1aXRlcw== X2x1YQ== KHZv X1JFU1VMVFM= IFZpa3Rvcg== RG93bmxvYWRpbmc= bm9jaA== TW9vbg== IGRlY2lkZWRseQ== 44GU44GW X1JQQw== SW50ZXJwb2xhdG9y IHZhbnM= e1Q= X3NwYXdu IEV4eG9u X0NhbGw= IENsYXNzcm9vbQ== IHNlcm90b25pbg== IERpcGxvbWE= YmVkdGxz IFByb3RvdHlwZQ== LmV4ZWN1dGlvbg== IGRhdGluZ3NpZGU= IEdva3U= X3Jvb21z 4oCZYW0= Z3JhZg== YWNlb3Vz IGFjY29tbW9kYXRpbmc= fSwn LmRpbWVuc2lvbg== ZXJyb3JNc2c= CW1lc2g= RmlsbGVk LnByZWZlcmVuY2U= IHNtYXJ0eQ== X2NvdXBvbg== IMO2dmVy IGNvbmNlaXZl b2Rvbg== ZGljZQ== VG9EYXRl YWRhbWVudGU= LW1hc2s= IGVzY2FsYXRpbmc= 4oCmKQoK SW5SYW5nZQ== X0Vt IHV0aWxpemE= IGxldnk= PCFb IEplbm5lcg== IFJFU09VUkNF X1NUQVJURUQ= IHZvbGxleWJhbGw= IG1nYQ== IFJvc3Np Q2hhbmNl IEVuZGVk LnVudGls IGtub2Nrb3V0 X2V4ZQ== IFByZXNjcmlwdGlvbg== IENPVU5UWQ== Lmhy aWVyc2hpcA== RVJWRQ== 6ak= 44Gn44Gv IHBlcsOt IGltZ1VybA== ZWN4 IFd5bg== CVJldHVybnM= X2V5ZQ== IEFnaW5n cXVldWVz IOWIneWni+WMlg== LlNlcmlhbGl6ZWROYW1l LmhvdXJz IGlzZQ== LkFjdG9y 5p2h5Lu2 YXBwbA== VGFu L2NhdGFsb2c= L1Jlc291cmNlcw== ZWxhbg== KCd7ew== IGluc24= IG5vZGVOYW1l IGNvb2tib29r JywnPScsJw== Uk9NRQ== LnRlbXBsYXRlcw== ZWN1cmU= LWtleXM= IGdsVW5pZm9ybQ== IGdlw6c= IFJlY292ZXI= SURY IEtyaXN0ZW4= IHBvbnRvcw== YD0nJA== YXJnZW50 IGFycmFuZ2luZw== 6KiY5LqL IGVybGU= ZW5lZG9y KCkpKTs= w6Zra2U= IEdpbGxlcw== In0+Cg== Lm1vdmllcw== LXNlbGVjdG9y LmxlYXJu IHBvdGVuY3k= IGZpbm8= CWJn IGxlaGV0 IGzDtg== IGVybQ== IGFzYmVzdG9z IGRlc3Rl IGJsb2NrYWRl IFJPVU5E IGxuYW1l IFNlcGFyYXRl w6RuZ2U= IGZ1eno= CVVO X25vbWU= X2xpbmtlZA== IFNoYXJlUG9pbnQ= aGF1c2Vu IGxvYWY= LWVjb25vbWlj IGRpZEZpbmlzaA== eWVu IGJsYXN0aW5n IFdlaXJk SUNMRVM= IEdGWA== IHN1ZmZpY2U= ZWJpbg== IGFwcHJvdmluZw== IFJleWVz IFJUQUw= aWdsaQ== X3Rvaw== b3Jkb3Zh Q2FybA== IFBsYXlz bG9zc2Vu cGFpcmVk QUdNQQ== d2nEhXo= bGlua2VkaW4= IGVnYWw= KHByZWRpY2F0ZQ== IFJFU1BPTlNF IG1pblg= IGNoYW5jZWxsb3I= IFJFQ0VJVkVS IGFzY2VydGFpbg== IHplcg== IFdvcmtzaGVldHM= Tks= IHZvd2Vs dmFudA== VVBT 4oCcLg== IEhheWRlbg== IFNwYXJ0YW4= cmlnaHRz LmdldElu IGlubGFuZA== IE5pbGU= IFRyYW5zbGF0b3I= IHJlY3RhbmdsZXM= QnV0dG9uVHlwZQ== IFNvbGlj IHJhZ2F6emE= L3RhZw== IGlycmVzaXN0 I0VuZA== KioqKioqKg0K IHJlc3RyYWluZWQ= IGNoaXJvcHI= L1No LWZsaWdodA== Y29udmVydGVk IHNraXJ0cw== KGNoYXJz JHZpZXc= IGlucHV0RmlsZQ== Z21haWw= X0RJQUc= IG51bWVs IEdpbmE= ZWxsdW5nZW4= IHRheGE= IGRyaXBwaW5n PSIiLz4K IGJvcmRlcmVk IHRvdWdobmVzcw== bGVuZXNz IEJpZWJlcg== X1dBS0U= KGV0 IHNhbnTDqQ== IFRFWA== X0RJU0NPTk5FQ1Q= IHBpZW4= IEZvbnRTdHlsZQ== X1VM LXRvdGFs d29sZg== IE1hcml0aW1l IE9QVElPTkFM LXJlc3Q= IG1lbWJ1YXQ= IEJTT04= X3NpbWlsYXJpdHk= Lm92ZXJsYXk= IHBhbGF0ZQ== IEJyaWRnZXM= QW5kUGFzc3dvcmQ= IENoYXZleg== aGV0dG8= Lm9mZnNldEhlaWdodA== IHVuZGVzaXJhYmxl IGFwbGlr IC8+XA== LHRv IHJlbW92ZXI= IE1vZGVsaW5n IHB1cmNoYXNlcg== IENob29zaW5n b3BsZWZ0 IG11dGFibGVMaXN0T2Y= IFNpc3RlbWE= IElQTA== aWNrZXJWaWV3 SGFzQ29sdW1uVHlwZQ== IHNvYmll dWJlcm4= IGFsdW5v IGltYWdpbmF0aXZl IEludGVyZXN0ZWQ= KCl9PC8= IGRpdmVyc2lvbg== X3Rvb2x0aXA= LlNhbXBsZQ== IEZ1dHVyZXM= Y29udGVuaWRv IEVJTlZBTA== KGVuY29kZWQ= IFNoYXVu CXBheWxvYWQ= ZGVr PllvdXI= SXNv VHJhdmVyc2Fs aWNpZQ== LmNyb3A= IEpC SU5HRVI= IGV4ZW1wbGFyeQ== X3JlbHU= YW5uaXM= 0LXQt9GD0LvRjNGC0LDRgg== Y2x1YnM= 4oaR IHNjcmFtYmxl IFVuYmxvY2s= IGRvcnM= IHNoYWNr IG1pbmltaXppbmc= IFBhc3Npbmc= YWRkRWxlbWVudA== 4bud IHJvb2Zz IGpjbGFzcw== Y29yZG92YQ== UG9zWQ== KENhbnZhcw== KGZpbg== LWxvc3M= LmJ0bkNsb3Nl ZG9jdW1lbnRhdGlvbg== IFJK YW1vbmc= TW9z bGluZ2Vu IEFndQ== b2x5bm9taWFs XTw9 IGRpZmZpY2lsZQ== IFdpbm5lcnM= 5bGV U3RyYQ== IGNvbmdyZWc= IEVuYWJsZXM= IFN5bXB0b21z X3Nn IFJpZGluZw== X2hlYWRz IENvc21ldGlj w650 LlNpbmdsZXRvbg== IE5pY2FyYWd1YQ== IAoKCgoK IG3DrQ== J30sDQo= IEJvc25pYQ== Plg= Ly8qWw== IHBpbGVk Y2FzdGluZw== IGdyw6JjZQ== IEhlbHNpbmtp R3Jv I2Fm 7Iud IHNvdWhh IEluZGll X25lYXI= IGltbW9iaWw= LkV4Y2Vs IHJhZGlhbnQ= X01C IEtldG8= dmVudGFyaW8= X2FnZW50cw== VGFibGVWaWV3Q2VsbA== IFRoZW9kb3Jl PT09PT09PT0K LGxpc3Q= KHNp aWNpcGF0aW9u QVJUSA== c2V0RGlzcGxheQ== LkZ1dHVyZQ== IFNUQU5EQVJE IE9JRA== IGZyb3duZWQ= IE1hcmlseW4= b2xhcmU= UHU= IHPDqWN1cml0w6k= UmVkdXg= U0NP CQkJCQkgICAgICA= cml2 cGVydA== IHNvZnRtYXg= IHNlbmF0ZQ== PWVtYWls IGVzdGltYXRpbmc= CXRk RnVjaw== IFdhdGVybG9v IG1leGljbw== TmV3dG9u U2Fi LOKApgoK IGNlbGVzdGlhbA== IFFOYW1l IGdldEFwcA== Tmll X3BjaQ== IFFQb2ludEY= X2xpc3Rh Lk5WYXJDaGFy IENvYw== S2Fy IGJ1c3RlZA== aXphdGlvbmFs b3VyZA== X2Nvbm5lY3Rvcg== IFNla3M= 0L3Rg9GO 0II= L0xpc3Q= L2lj XEZyYW1ld29ya0J1bmRsZQ== dXh0 IGhlYWRwaG9uZQ== RVhURVJO LXJlc2V0 IEdlaWxl IHRyaWFuZw== IEFOTg== IHTDrQ== IFNQQQ== IE1hY2Vkb25pYQ== IGNyaWFy IGNsaW1icw== IFNPTg== IENyaXRpY3M= IGTDsw== X1NQTElU IEJvdW5kYXJ5 X0luc2VydA== Q29sZA== LmNyZWF0ZUNlbGw= X3NhaWRh LkJMVUU= QmlnRGVjaW1hbA== KEJ5dGVz CVN0YXRl LS0tQA== Vmlld1NldA== YWthaA== X1JlcG9ydA== LWNyb3Nz LmdldEN1cnJlbnRVc2Vy dWx0dXI= KEZs IEltYWc= Q1Rlc3Q= 7IOd IHN0YWc= IG96b25l IGvDqQ== cmVwYWly KSIpOw0K IHZvd3M= LkFsdGVy IEFsZ2VicmE= IEFoZWFk Z2V0dA== LklubmVyVGV4dA== IFpoZW5n LnJlYWxwYXRo IGRpc3RyYWN0aW9ucw== LGV2ZW50 IElOQ0xVREVE Lk1hdGNoZXI= LnNwb3RpZnk= IGNvbnNpZA== Lk1hcHBpbmc= IEZvYW0= IE5BTkQ= IGRldmFudA== XSIpXQo= TGF1cmE= IHNhY2tlZA== X3hvcg== IHJlYWxtcw== IFJvYm90aWNz LlNlZWs= LiQk IFJpYmJvbg== CUhSRVNVTFQ= IENyZXNjZW50 RUZS IE1lZGl0YXRpb24= LmdldFo= INC60L7QvNC/ anNvbndlYnRva2Vu Oj8= ZmFm VklPVVM= YWxsYWg= IHBpcGluZw== IG1vZGVybmU= cG9zdGFsY29kZQ== IGxldmVyYWdpbmc= IENISVA= cGNt bWFp IGlQ QUtFUg== ZGF0YUdyaWRWaWV3 X2RlcHM= LWRyaXZlcg== TGll ZGlzY2FyZA== eW50YXhFeGNlcHRpb24= IGVjdA== IEV4aGliaXQ= ICgqKg== IOuU Q2hhbmdlRXZlbnQ= IHN1cGVybWFya2V0cw== IHNobQ== cHJvZml0cw== cGlsbGFy cmFpc29u V2F0 IHBoYXJtYWNpZXM= IG5ydw== Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= CXdvcmxk U3RyZWFtaW5n RGlhbW9uZA== IEVudW1lcmF0b3I= IGVucXVpcnk= LmxhbWJkYQ== YmVr Uk9UTw== IFBkZlA= IGhpc3Rv IGdldENoaWxk L3N0cmV0Y2hy IEFNQVo= IEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbg== InVzZXI= IHNhbml0YXRpb24= IENsb3RoZXM= Lm51bXB5 ZmVj ICMjIyMjIyMjIyMjIw== 0LXQudGB0YLQsg== X2xw IGF6dXJl WFBhdGg= VmVudA== TGFib3I= IG1pc3Rha2VubHk= IGNvbmR1aXQ= IEZhaXJmYXg= Z2V0U3RhdHVzQ29kZQ== IE1veQ== TGlzdEFkYXB0ZXI= ICg/KQ== R2VuZXJhbGx5 LmlzQ29ubmVjdGVk dmlkbw== TW91c2VCdXR0b24= R2VuZXJhdGlvblN0cmF0ZWd5 X2Rlcml2 IGxla2tlcg== TWVhc3VyZW1lbnQ= X0NPT0tJRQ== ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq IGNvbXBldGl0aXZlbmVzcw== IGdhbWxl IHJldHJvc3BlY3Q= IEVkdWFyZG8= IERhdGFTZXJ2aWNl IGVzY29ydGVk IFF0eQ== SG9saWRheQ== CXJhdw== bGV1cnM= QmlydGhkYXk= IGhlYXRz LmludmVyc2U= IF8NCg== aWxsdW0= b2thYmxlQ2FsbA== X21s TGlrZWQ= ZW51bWVyYXRl RmluaXRl LXByb3A= QXJlYVZpZXc= IG1lZGlhdGlvbg== IGNoYW50aW5n X05U X3VuYw== c21vdXRo IHBpZ21lbnQ= UGFzc3dvcmRFbmNvZGVy IHbDqXI= IHdhc3Rld2F0ZXI= LVBhY2s= IGpvdmVu YWVz S1k= UGludGVyZXN0 IG11c2ljYQ== bGFjZXM= IFdpY2g= KHJvdA== KGly IOyCreygnA== 44Gd44KM X1RIRQ== Z2V0RmlsZQ== W3Byb3BlcnR5 IGVuZGluZ3M= aXp6YXJl PXRyYWlu LWxvdmluZw== IG5vdXZl IGNvbW1hcw== IGNhbWJp IFp1c2FtbWVu CUV4dA== KG9ic2VydmVy Zm9ybWlr IHF1aW5kaQ== IEl2b3J5 IEJvbGl2aWE= YXNhZA== X2xlZ2VuZA== Q2l0aWVz X0ZJUkU= YXNkZg== LkRlcHRo VmFsdWVHZW5lcmF0aW9uU3RyYXRlZ3k= dXBk LkdldFJlc3BvbnNl IHVyZ2VudGx5 SW52YXJpYW50 R2V0WA== IHN0YXR1cmU= IGltYWdpbmluZw== YXRlYXU= TU9WRUQ= KFRyYW5zYWN0aW9u X3Bvcg== UmVmUHRy Lmdsb2JhbERhdGE= Z3JhdmU= aW1lc3RlcHM= Zm91bmRsYW5k U2FsaXI= YXJ0aXN0cw== IGNyZWF0ZUFjdGlvbg== IFNhbnRv INC90LXRgg== CQkJICAgICAgICAgICAgICAg LXNvbmc= IG51aXNhbmNl IGltcG92ZXI= XykNCg== IGNyb3dkZnVuZGluZw== IHRpbXA= UGljdHVyZXM= IGxvZGdpbmc= 6ZKu YXRhc2V0cw== 44Ot44Kw cGVyc29ucw== Y29uZHVjdA== IGV2YWRl IGhhdW50aW5n ICEhfQ== IExBUkdF IGtpdHRlbg== IHVwaGlsbA== KG1pbnV0ZXM= IEVtYW51ZWw= J0M= IFNreXdhbGtlcg== cHVycG9zZQ== X21hcHBlcg== IGFkYXB0YXRpb25z LmZpbGxUZXh0 cnVr IHJlcGVydG9pcmU= KHByaW9yaXR5 KG1hcHBlZA== Um9iaW4= IGVycm9uZW91cw== IGluaGFs Qk9WRQ== KCIsIikK dWVsbGVtZW50 IGZpbmdlcnByaW50cw== IFBZVEhPTg== LWRlbQ== bGVhbm9y esSFZA== IlBlb3BsZQ== YXNpZXI= IHBhdHJpb3RpYw== LmZyZWV6ZQ== SUo= IEJhbmNv IGlzU3VjY2Vzcw== KHZlaGljbGU= KExheW91dA== IGNhcnZpbmc= X2NpcGhlcg== IHZlemVz KCdfJyw= IEZpcnN0bHk= IGZ1bGxlc3Q= IExpc3RlbmluZw== X3NpZ25hbHM= ZXdvbGY= IFNDUg== IE1lcnJ5 L3Rlc3RpZnk= X1NBTklUSVpF aW9jdGw= SUVFRQ== PU1hdGg= IGVucXU= CWF1eA== 4pml IGRpc3BlcnNlZA== aGFyZQ== YmVybg== IEFtZW5k IGluc2lkZXJz IEFsdmFyZXo= IFp1Zw== L2NhbGVuZGFy IGhldXJl LXBhcGVy IHNvZm9ydA== IHNtaXRo IHBvYg== KHJhdGU= IHNvY2nDqXTDqQ== IHdvZXM= IGJydXNoaW5n cWQ= b2xvZ3Vl c29ja2V0cw== X1lFUw== LmFkZENvbHVtbg== IGV2YXNpb24= U09GVFdBUkU= YWJveA== LnlsaW0= IGVuZ3VsZg== Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo= IG5nT25EZXN0cm95 IG5vc3Nh LmxzdA== KCl9Pgo= Lmt3YXJncw== IGNvbnRleHRv IFBVQg== RnU= IGJpZ290cnk= IGJyaWQ= IHN0ZXJvaWQ= IHZpZ29yb3VzbHk= IGJ1cnN0aW5n IHZlbmU= IHNhbGFkcw== IFZBUklBQkxFUw== IE9uYw== IGZpcmVFdmVudA== c2FuZGJveA== IHRvdWNoc2NyZWVu c2Fucw== L0luc3RydWN0aW9u IGVvZg== bGVjdHVyZQ== Py0= LmxvY2FsaXphdGlvbg== VkVT X3ZvaWNl aXR1cmE= LnJlcG9ydGluZw== IF0pOw== Tm92YQ== X0NPTVBBVA== IG91dGJyZWFrcw== LmNsaWVudFdpZHRo aWZsb3dlcg== X0dSQQ== SW5pdGlhbGl6aW5n X3BlcmY= KCl9LA== PVA= X0lNRVRIT0Q= IHRpZ2h0ZW5pbmc= IHRhYkJhcg== IEJL CURvdWJsZQ== L2hhc2g= IG1leg== VG9VcHBlcg== VEc= KGluZGVudA== IHNpbGljYQ== IC8vLy8vLw== w7Zr IGVsdmVz ZW1wbGF0ZXM= LkNvbXBhcmVUbw== IGd1bmZpcmU= YW5pbWFscw== IGtlcGFkYQ== IENQUg== X0xTQg== CXZlcnRleA== INC/0LXRgNCy LCE= IGR1bHk= X1BBVENI RU5B CUND Y29tcG9zaXRpb24= X3N2 TGJs amVq 0YHRgtGA0L7QuQ== LkVkaXRWYWx1ZQ== 5YW3 YW50YXM= IGJyZWFkY3J1bWI= IFRlc3Rlcg== IE1lYXN1cmVtZW50cw== L0lucHV0 IFJheg== X1BPTEw= SW5kZXBlbmRlbnQ= Lmx1Y2VuZQ== IE1lY2hhbmljcw== Y29sb24= LnN1cmZhY2U= IHVuYXM= cmFkbw== UExJQ0FURQ== Q1JU LnNldERlZmF1bHQ= JUg= IHJlc3BvbnNhYmxl IHBlcnBlbmRpY3VsYXI= IFJlc3Bpcg== IFR1bmlzaWE= XEFycmF5 6Lev5b6E IHBhdw== IGRlYm91bmNl KE1QSQ== INiv2LE= IGVsaw== IFJlbGF5Q29tbWFuZA== L2xpZ2h0 LnNlcmlhbGl6YXRpb24= QlNJVEU= KSgoKCg= IEJpb3M= X3N2Zw== KHN1cmZhY2U= RHVwbGljYXRlcw== ICg+ X0FTVA== Lm5pY2s= IldoeQ== IEludGVsbGVjdHVhbA== YWJicmV2aWF0aW9u ZWFyYWJsZQ== IGNvbnNlZ3Vpcg== KEJl X1BvZHM= PEFuaW1hdG9y X1VOREVGSU5FRA== QVJSWQ== IC8vfg== cGVyYXRvcg== LndyaXRlRmlsZVN5bmM= QWxz bGRlcg== IG1pZWpz IGZ1bmNz aW5jaWJsZQ== IGR1c3R5 IERyaWxs IGNvbnRpbnVhbA== IEVsZWN0cm9u LmVuZW15 KHBi IHJldW5pdGVk U21va2U= LWZhY2Vk SW50ZW5zaXR5 IFRyZWVNYXA= IEFyZ3VtZW50RXJyb3I= LndyaXRlSGVhZA== IFRSRQ== U3BsaXRPcHRpb25z LyoqKioqKi8K IFw8Xg== IEludmVzdG1lbnRz U1VNRVI= IGRhYw== QU5J Llllc05v KG9mU2l6ZQ== eXRo ZWxvYWQ= IGltcHJlcw== IGJsb2Jz LnJldHJpZXZl IHR5cmFubnk= IGNhbmNlbEJ1dHRvblRpdGxl IGhhY2k= IENhc2lub3M= IGRoZQ== UmV0YWls IFBvcm5odWI= IENyaW1lcw== T2ls KElTZXJ2aWNl UmVzaXphYmxl CVNv T2Z0ZW4= IGNvbW1vbnBsYWNl X0dD YWxkaQ== YXRobG9u KFZpZXdHcm91cA== KEVtcGxveWVl IHNhZmVndWFyZHM= 6YCA5Ye6 X0FVUkE= IHVubm90aWNlZA== IFRob3Ju bW9kZWxl IGFjb3Jkbw== IFdlbmdlcg== aW11cw== ZW5zYnVyZw== b21iYQ== Y2nDs24= Imh0dHA= X01hdHJpeA== fHx8fA== b3JuZWNlZG9y CUJ1ZmZlcmVkUmVhZGVy cmVnaXN0ZXJz cmVsZWFzZWQ= IGFkZE9ic2VydmVy IFZhbGVudA== KEN1bHR1cmVJbmZv IG1hbm5lbg== IGJ1cmdsYXJ5 X21pbnV0ZQ== IGludGVyY2VwdG9y b2NyYXRlcw== YXR0cm8= IFlF ZXNzbGVy bGlzdGVuZXJz L3Byb20= IOek dG91Y2hlcw== RXNw IEFib3J0 IGZmaQ== IGNsdW1z TklM X1ZJUlRVQUw= IGxvaW4= eW5vbWlhbHM= INec IGd6 IE5lb24= SVNJUw== YW1lcmF0ZQ== X2F2YWls IG1heGk= IGlzQXJyYXk= Q29sdW1uSW5mbw== aXppbg== IHBlcnNv IG91ZA== aWFsaXplZA== eW1p IGNvbmZpZGVudGx5 PSIvIj4K LmRhdGFzb3VyY2U= IHBheWNoZWNr IEJhdg== L0JyYW5jaA== IFRlYXI= IG1lcnVwYWthbg== IEJyYWg= INC60L7QvdGC 74I= LHBhdGg= IGRhenpsaW5n IFVDSEFS IHByb3Zpc2lvbmFs 0L/Qvw== IGxlZ2FsaXplZA== X2FsZ28= X1JTQQ== YWx0ZXJuYXRpdmU= IERFVEFJTFM= VG9Ebw== cmVmbGVjdGlvbg== X1dFRUs= IENMRUFO IHNsb2dhbnM= IOuTsQ== IFZldGVyaW5hcnk= aWRm LmRhdGVUaW1lUGlja2Vy aWNvbnRyb2w= KHBsYXk= IHVsbGFt ICcpDQo= IGNoZXF1ZQ== 5a6L5L2T IHVuc2VyZW0= IEFyY2hpdGVjdHM= YW1lbnRhbHM= IHZtYXg= IGplbWFuZA== Q0VFRA== IE9saXZpZXI= c2V2ZXJpdHk= Uks= RGlzY29ubmVjdGVk IHdlYXBvbnJ5 dWnDp8Ojbw== IGJpbmdv ZG9udA== X0NIQU5ORUxT IERhZw== IGTDpHI= w6lyaXF1ZQ== Z3JhZGFibGU= IENPTVBMRVRF IHNwYW5pc2g= IGluc3RydW1lbnRhdGlvbg== dmFzaXZl RFJBVw== IGZwdXRz IFNwZW5k IFJlc3BlY3Q= Q291cnRlc3k= IHNjaG8= IHBvc3RhZ2U= IE1lYWRvd3M= IHR1dG9yaW5n ZXJ2bw== QWJzb2x1dGVseQ== w6FuZGV6 vZTrk5w= IFNIUg== cGhvb24= IERlcG9z PScnCg== IHBoeXNpb2xvZ3k= KnRpbWU= IFRvdWdo ZG9jaw== L2hl KEhhdmU= IE1vaW5lcw== U1RZUEU= IEJyaWRl IHN0cm9u IHdvcmxkdmlldw== IGdyYXR1aXRv IGFlcm9zcGFjZQ== IElocmVt IHFj IG1hbmlmZXN0YXRpb25z c2xhdWdodA== PEFjY291bnQ= IEluZm9z YW1iaWw= X0ZpbmFs IGFkbWluaXN0cmF0aW9ucw== IGNvbGxhYm9yYXRlZA== LmpkZXNrdG9w b2x1Y2nDs24= YXNjdGltZQ== X2FsbG9jYXRl YXJyaXZhbA== Sk9S IHNoYWR5 IHBpbmVhcHBsZQ== 44KP IHNhdGlu YnJlcm8= IExpZXM= IHRlbnNvcnM= IEludGVsbGlnZW50 LlNlbGVjdGVkSW5kZXhDaGFuZ2Vk IHJhZGlhdG9y YXNzaXN0YW50 JGZpZWxkcw== CXN0ZXA= IE1pdGdsaQ== IEV2ZXJldHQ= IFNjaGVkdWxlZA== SG9yYQ== Il0tPg== IG1vdHM= IERTVA== Zm9udE5hbWU= IFdhcndpY2s= X1Rhc2s= KkM= 44On b2JlbA== X0RFVA== IHNvY2lvbG9neQ== IEthdHo= aWNpb25z b3RsYW5k YWRvbw== X3BhcnM= IHJpcHBpbmc= aWNobw== IG51dHJpdGlvdXM= CWRhbWFnZQ== S3k= IGFuY2hvcmVk IGFydGlmaWNpYWxseQ== IEp1dmVudHVz L3Blcmw= IGV4cHJlc3NpdmU= eEVF IEVudW1lcmF0aW9u Lk1FU1NBR0U= KGRlZw== 5b+X IyMjIyMj ICIiKSw= a2zDpHI= XE1haWw= RGVzaWduZWQ= IHN0YWZmZXI= IHNhbHRz KioqKioNCg== IOKB IHNldFRpdGxlQ29sb3I= RFZE LldyaXRlQWxs ZWxsYW50 IGNvZXJjaW9u IFNvcnRpbmc= 6KiA IHN0YXJ2YXRpb24= Ly97ew== LmhlYXA= IE1lZGlldmFs ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 77yR77yQ IHdhcmRz IEhlcmM= IEhvZ3dhcnRz LWNvbW1lbnRz IExhdWRlcmRhbGU= 5rw= IHJpZnQ= IHplaXQ= IHByb29mcw== LnZpZXdwb3J0 JHN0YXJ0 IEJvdWdodA== LnJpY2hUZXh0Qm94 IGNsaW5n ICcqKg== T3duZXJzaGlw IEJvZWhuZXI= KGR5bmFtaWM= IG1lZGljYWxseQ== IFdURg== IE1haW5NZW51 6LSt IGRpZmVyZW50ZQ== L3Jlc3VsdHM= ZW50aGFs IFdpZGdldHM= cnVzaA== IFJNUw== IFZvbGxleQ== IHJlbW92ZUZyb21TdXBlcnZpZXc= IExhZmF5ZXR0ZQ== IEZldGNoVHlwZQ== YWNhcw== IHBhdGhvZ2Vucw== IE1NTw== LkN1cnJlbmN5 b2Npb3Vz IHNwcml0ZUJhdGNo ZG9sbA== IHZhbXBpcmVz bGF1bmNoZXI= IHBlYWtlZA== IGRlYnVuaw== IEFTRA== IHVuZXF1YWw= IHNxdWFkcw== fS4kew== bWFuaQ== IkU= IEZhaHI= IElTSQ== IHVuYXZvaWQ= b3Bob25l WzpdCg== IERpcmVjdGVk IGJ1c2hlcw== LmZhaWx1cmU= IGltbWVyc2Vk ZXhv SGlzdG9ncmFt IEthbm4= IHBpcmFjeQ== IENydW5jaA== IGzDpg== Ly8i IG1vbm90 IFNhdW5kZXJz IFNldmVudA== KEFic3RyYWN0 IHNtb2tlcg== cm9uZQ== LmNsaWVudFk= ICItIiw= IEZvdW50YWlu IGlubmU= 7IOJ Q3Ry JGlucHV0 UFJPRklMRQ== IERvbmF0aW9u V2l0aEVtYWls IGZyYWN0dXJlcw== S2VlcGVy IG1laXNqZXM= IGFyY2hpdGVjdHVyZXM= IEx1bmc= J2ltYWdl aGFybWE= IGFiYW5kb25pbmc= QUxMRUQ= c3VidHlwZQ== cmVpcmE= IG1vc3M= IFBhcnNvbnM= YWtlZG93bg== PW9iag== IHN1Y2Vzcw== IHdlYXJhYmxl 44Kn IGFkdWx0aQ== LnVt IHZpYnJhdGlvbnM= IHN3ZWxs IERpc2Nsb3N1cmU= IFJERA== cGFpcnM= YW5nZ2Fu IG1haW5CdW5kbGU= IERJTg== IHJvY2tlZA== c2hvdWxkQmU= Lmdi IElNRA== IFdO LGFyZw== 4oCm4oCm4oCm4oCm4oCm4oCm4oCm4oCm W109JA== LlNN IGFsZ3Vucw== YWRkb25z X0NvbW1vbg== X1JFRlJFU0g= INmB2Yo= IFRZUE8= IEVjb2xvZ3k= IGdsdQ== LkRhdGFUeXBl IFByb2Jl THV4 b3dlZ28= IHJlaw== IFBsYWludGlmZg== YWNoYWJsZQ== Lm5hbWE= Km91dA== fX17ew== IENBUElUQUw= 5L2G SW1wb3J0ZXI= LmNyZWF0ZVNlcnZlcg== X3Jlc29sdmU= X0VQUw== c3RlbGxhcg== X1Byb2ZpbGU= CXN3 LW1vbg== dWRldg== XFBsdWdpbg== X01JWA== IERpc2NyaW0= LmZyb21MVFJC IFN0cmFuZA== QW55dGhpbmc= cG93ZXJz XV0NCg== LlRJTQ== IGFkZHNsYXNoZXM= IGVzaQ== QEJlZm9yZQ== IHNhaw== ICcvJzsK Y29j xZ/EsQ== ICkpOw0K X2Fib3Zl IEVDQw== L2NwdQ== IGNhZGU= LlN0ZGVycg== IHBlbGxldHM= IFBhbGlu IGfDqW4= X2phdmE= IHNhbGFo IGJlcmdlbg== X1NXQVA= IGdpYg== acOjbw== X2Rpc3RhbmNlcw== IENpbmRlcg== IGFuYXJjaGlzdA== aW1hdA== CW1vY2s= 44GX44G+44GZ T21lZ2E= IGJhaHdh X1BhcnNl LnBhcGVy CUludGVudA== cmVucw== L2dyaWQ= IGZpbHRoeQ== LmV2 IyMjIyMK IHNhcmU= IHNvYWtpbmc= IFJlZ2lvbnM= X1VTRUQ= IFNpaw== aWZpa2FzaQ== CUVkaXRvcg== THVjaw== IOyXsA== xINt LiI7 IFppZWw= IGdyYXlzY2FsZQ== KEZ1bmM= 44OB LkRlbnNl LWxlYW5pbmc= IGdyYWNlZnVs R3JhcGhOb2Rl X0NPTU1JVA== IENWUw== IHBsYWlucw== IHJlag== cGNpb25lcw== IHVuZGVybWluaW5n X2NhdHM= ZmVi Q29sbGVjdGlvblZpZXc= U0VNQg== IHRodQ== dGV4dGJveA== KEFuZHJvaWQ= IHJpZ29y IFlpZWxk LmlzUGxheWluZw== OnZpZXc= cmVtYWluZGVy IFBpcA== KWluZGV4 IEJlY2tlcg== dG9Mb2NhbGU= YXV0b3JlbGVhc2U= IFJvbWVybw== LkhhbmRsZWQ= IENhYmluZXRz KVY= IHJ0ZQ== IEh1bHU= aWNpZWw= L2FuaW1hdGlvbnM= IHByZXN1bWU= LnRyYW5zcGFyZW50 IHN1Ym1lbnU= cW0= aWVydGVu IHRleHRTaXpl IHN0YXJ2aW5n L2pvYg== QXBhY2hl IHlpZWxkaW5n LWFydGljbGU= Jz0+JF8= IOih PFNwcml0ZVJlbmRlcmVy IFNoaWE= KToo IHB1Ymxp emllag== IHRlbGVzYw== IHRlaWw= TGVnYWN5 IFBsYWNlbWVudA== KCkpew== IHRyb3VibGVzb21l 5pif IHBlcnPDtm4= X0FzcE5ldA== PX0= KHVzZXJJRA== U3Vz 44K6 LWF2ZXJhZ2U= IFFJbWFnZQ== LlN0cmljdA== dGVib3Jn LWZ1bmN0aW9ucw== UkVHSU9O Pk5ldw== X2Nob29zZQ== KGNp IHVubGVhc2g= IFJJR0hUUw== IFNwZWFy CW1ha2U= IHR5cw== YW5lbGE= IFdY X01BS0U= L3NldHVw IG9uU2F2ZQ== IGNsaW5pY2lhbnM= CWJhY2s= LkxpbmtlZA== IGNvbnNlcnZl IGJpdHRlbg== X3ZhcmlhbmNl IGxpcmU= IGluZXJ0aWE= dWZmbGVz X01QSQ== aWRkbGVz W2Fycg== LnZvY2Fi IHNoaXR0eQ== IG5lc3Rl c3NpemU= IEtU Ymxlcg== X2xpbnV4 IG1vbmdvZGI= IElURU1T S29u IEJ1cnN0 X3Bob3Rvcw== Q29sb3JhZG8= IGFja25vd2xlZGdtZW50 IG9pbHk= IG5mcw== IFppb25pc3Q= IGFkZGljdHM= IGFkZFVzZXI= IE1pc2g= IGtX IFdhbnRz KHJlY29yZHM= b2N1cnJlbmN5 SlNHbG9iYWw= LmVsYXBzZWQ= IE5i IHBwdA== XERlcGVuZGVuY3k= Um9s IMOnYWzEscWf IGV4cGFuc2lvbnM= YnViYmxl IG1pZHRlcm0= ICcjew== Y3R4dA== SVN5bnRheEV4Y2VwdGlvbg== IFZhbGxl IENhZGlsbGFj ICIifSwK IHNlbXVh cmljaFRleHQ= c29mdG1heA== b2JqUEhQRXhjZWw= LmhzdGFjaw== X2NyaXRpY2Fs KDw/ ZGo= IGNvbnNvbg== IHJvb21JZA== RE9NQ29udGVudExvYWRlZA== cGFybXM= IHplaWd0 VFBM LW5vdGNo IG9wcHJlc3NpdmU= Q29kaW5n IExlYXZlcw== KERpc3BsYXk= LnNpZ25Jbg== Ly8tLQ== IE9wcg== Y3Rh IG1ldGF2 U2VyaWFsaXplZA== IHVuYWZmZWN0ZWQ= IEFUTA== IEtQ QXRsYW50aWM= LHVybA== LHN0YXRl IGJpc3Q= ZW5lZw== IHNpbXBsaXN0aWM= IGJpZGRlcg== IHBlcmNlcHQ= IGNlbGli IFRIUk9X KC9b VGNw IGZ1cnRoZXJtb3Jl LkFjYw== b3BwYWJsZQ== 5Lik IFRhcnQ= IEJlbno= IGVtYm9kaWVk KENvbnN0 ICst UGFydGljaXBhbnRz IGh0dHBSZXF1ZXN0 YWNjZW50 IFPDvA== IGhvcnJpZnlpbmc= IC8+LA== IGVuYWN0bWVudA== IFVOSU9O L2xvZ3M= IHNjcmVlbkhlaWdodA== IGV0d2E= 5L6L5aaC IGHDum4= 5bem X3RpbWVsaW5l ICIiKSkK JzonJw== Qlc= IHJlbm92YXRpb25z IDwK UGFsZQ== Pjo8Lw== U2tlbGV0b24= IGdldFVzZXJz X2RhdGFmcmFtZQ== YWJy bWF0ZXJpYWxz JmVhY3V0ZQ== LkRpc3BsYXlOYW1l IGh2aXM= X2xhbmd1YWdlcw== LnN5 dG93ZXI= SUZJQ0FUSU9OUw== IGJhcnJpYw== IFBsdXRv YDs= 44OL Y2VudGU= I2Fi IGxleGljYWw= IEJSTw== IHJ1bGluZ3M= SEVZ LmlPUw== cmV0dXJuZWQ= LmJvb2tz IEh1YmI= ZW9m Pj46Og== IOyG IGdvVG8= 6ICD 44Go44GG PEZvcm0= Y29waWVz LnF1YW50 IFBvdGF0bw== IENvdXNpbnM= IHPDuw== R292ZXJu IGdhbGVy IEZJUg== X1dpZHRo IFNoZWxkb24= LkRldg== IFJlc3BvbnNpYmlsaXR5 c29uaWFu IHN1cGVyY2xhc3M= Yml0c2V0 ZWRkYXI= IExhYm9yYXRvcmllcw== IGNvaW5lZA== IFRlY2huaXF1ZQ== KENvcmU= IHNwcmF5ZWQ= IHBvbmc= KE5ldHdvcms= IHJvYXI= IEVBU1Q= c3RyYWlu IG1lbnN0cnVhbA== b21iYXQ= IGNhbG1pbmc= CURpbQ== X21vdmllcw== IFJBSUQ= LWRpc21pc3NpYmxl IGZyZXVuZA== LWNoYW4= IHJlc2lzdG9y X0NvcHk= b2NyaW5l IGVzcGlvbmFnZQ== Z2Fkbw== TkRBUg== IHBvcmNlbGFpbg== dGhhbG0= IGBb IGdyYWRv 0LjRgA== RE9VQkxF IGFjY2Vzc2Vz LkZsb29y IOKGlA== IHRva2VuaXpl YW5hbHl0aWNz LkNyZWF0ZUluc3RhbmNl IHN1Y2hl CWVudA== aWduZXI= INC/0LXRgNC10LQ= IGNvbmRpY2lvbmVz LmxpYnM= Iic7 UERPRXhjZXB0aW9u IG9uRGF0YQ== IEF1dGlzbQ== LWhlbHBlcg== IHJld2luZA== IGNvZmZpbg== 44O844K4 IHRyYW5zbWl0dGluZw== LnNldEFsaWdubWVudA== IGRlYWxsb2M= IGFuY2VzdHJhbA== b2dpZQ== LkNPTVA= OmZyYW1l bW1v Jzoi IFJlZ2VudHM= IGNoZWF0ZWQ= Lmdn IHBhY2Vk IGVzdGFk b2NlbmU= bHNh KGZj L2dyb3Vwcw== L21pc2M= IFNodXR0bGU= VVBJ w6Fv LWN5Y2xl CXByb3Bz IHJvdHRlbg== UmVqZWN0ZWQ= I2Fj LnVh IEFtbmVzdHk= IHBlbm5lZA== SU5DUkVNRU5U PGRpbQ== LnNldFVw IFR3ZWV0cw== IE1hZHVybw== INmC IENBY3RpdmU= CUJZVEU= KHNlcGFyYXRvcg== LlJlc2l6ZQ== dWZmbWFu c3VwcG9ydHM= IHVyYg== IEZvdW5kZWQ= X2hhcmQ= IGVjbGVjdGlj LkZpbHRlcnM= IFJvdW5kZWRSZWN0YW5nbGU= X3NhbXBsaW5n IEpldHp0 YW1lcmljYW4= Lmludm9rZUxhdGVy IEJ1dHRlcmZseQ== KGNvbm5lY3Rpb25TdHJpbmc= IE5hb21p IEphaW1l cnRz IG1hZ2ljYWxseQ== Lm1hY2hpbmU= IEFwcGFsYWNo Iisi dmFsZQ== LW1vdW50ZWQ= IGFjaGU= TUo= IFVJSW1hZ2VQaWNrZXJDb250cm9sbGVy LUp1bg== TWFuYQ== a3JhaW5l RENG L1Byb2R1Y3Q= IFJFU0VSVkVE IEZIQQ== OkAiJUAiLA== IFByb2pla3Q= IE5pcg== IENhcm5pdmFs ICom IFFT V0hP IHdlbHQ= IG1hcnJ5aW5n QWxleGFuZGVy IFJldmlld2Vk YWN0ZXJpYQ== IHdhbg== KHJvYm90 IFdpbmRvd01hbmFnZXI= IG1vbnVtZW50YWw= IERvbWluZw== L3dlYXRoZXI= X3NlY29uZGFyeQ== T3BlcmF0b3Jz X1NJREU= S2F0 LXpvbmU= IHNpZ25pZmllcw== IEh0dHBNZXRob2Q= L2NvbnRleHQ= Ig0KDQoNCg== IFJvZHJpZ28= IGJ1Yg== L211c2lj IHNlcm9udA== IG1STkE= X2VtYWlscw== ICc+Jw== IEdlbWU= INGA0LDRgQ== IH5+ IGR1Y2tz IEZyZXVuZA== RXhwZXJpbWVudA== IHJlb3BlbmVk IFwiew== IGVsbGlwdA== IGNvbmNhdGVuYXRl IHBvbG8= VGltZVpvbmU= ICAKICAgIAo= IGNhcHRpb25z cmlja3M= LmZyZXE= Lm1lbW8= IHNtYg== RHJ1Zw== XVsv X0JBQ0tFTkQ= IEVsbGE= IFBvcnRpb25z IGZldGNoRGF0YQ== IGNvcm91dGluZQ== IGVzdGF2YQ== IEdlbml1cw== OmB+ IFN3YW5zZWE= KHBheW1lbnQ= Vm90cmU= IFBydWl0dA== Lm9mZnNldFdpZHRo YXJ5bA== IHVuaWZvcm1seQ== IFdhcnA= IFNFQQ== IGRlZHVjdGlibGU= IGJ1bGxpZWQ= IEJlc2No IFByb3NwZWN0 T1NQ IlllYWg= IEFuZ3J5 LlZhbA== IGdpZ3M= IGJ1bGt5 ZXRlcmlh LmdldFN0YXJ0 IE1FVEg= IGNvaGVyZW5jZQ== IG1lZGlhdGVk 0LXQs9C40YHRgg== Li4uLgo= IHN0cm9rZUxpbmU= bWo= IFVuc3VyZQ== YXRocm9vbQ== KEJpbmFyeQ== X0tleVByZXNz 5p6E aW5oZXJpdHM= IHJlcHJlaA== CVNjaGVtYQ== IHVucmVzdHJpY3RlZA== LmRlZmluaXRpb24= XT8u IGl0aA== 5aCx IHNsaW1l bXNncw== X0pT CVZlcnNpb24= X1NFQ1VSRQ== IGNvc3Rv LlJlc3Ry Y3Ny X1RPT0xUSVA= cGNs IOKGkw== U2VsZlBlcm1pc3Npb24= LnJhdmVs IG1lbWJyZXM= QXNzZW1ibGVy cm9taXVt c3VyZg== IFVQREFURUQ= KGJyYW5jaA== KGluY2x1ZGU= IElkb2w= XE9iamVjdA== IGNsb25pbmc= IGlzTmFO IGFueg== xrDhu51uZw== IG9uYw== X0NMVVNURVI= IHt9KSwK aW1pbmFyeQ== CWNvbnRlbnRQYW5l dHJhaWw= IG5pbmV0eQ== IE5pYWdhcmE= IEFuZHI= w6lzeg== IGRpZmlj dXRyYQ== J319Pg== 44Kk44OI c3Bhcg== ICJcIiw= IG15ZmlsZQ== ZmZj IG5vdGljZWFibHk= ZXlh IFB1dHRpbmc= SlY= LmRpbWVuc2lvbnM= ZXJjYQ== Z2VuZXNpcw== ZWZmZWN0aXZl IHBlcmRlcg== Lk9S X0NPTVBBUkU= Omxlbg== L3JlZA== IEFyaXN0b3RsZQ== IHF1ZXJpZWQ= IGZvcmVzZWVhYmxl IFVJQ29udHJvbA== cmVtaW5kZXI= IGNlbmE= IGhpYw== ICIiOw0KDQo= L2Jhc2lj IGFmZm9yZGFiaWxpdHk= LGVycg== INGB0LjQvNCy IElTUg== bGljZW5zZXM= Vk9JQ0U= Lkxhbmc= LnJlbGF0aW9uc2hpcA== IGxlbmRz IG51dHplbg== IGVzcGVjw61m aWVuZGE= PFBhaXI= VHY= X1JFVFJZ IGhvbm9yaW5n X2RlY2xhcmF0aW9u KE5P IEhpY2s= IG1pbmxlbmd0aA== IEdlc2NoaWNodGU= YXBlc2g= QVRPTQ== JykiKTsK ZW50ZXJwcmlzZQ== Pn08Lw== IHBvbGl0aXF1ZQ== ZWRpdGlvbg== X0RlYnVn QW5uZQ== LlNjb3Bl Y3Rw Y2Fub25pY2Fs Pj47Cg== TWVudXM= IGZpZXJjZWx5 Lk9uY2U= IEJvcnJvdw== IHNvc3Q= IHNlcnZpbmdz LWZsYWc= IHZlc3RlZA== IGZyb24= 7ZWo IGZhbWluZQ== Il0pKXsK ZXJlw6dv IGtpamtlbg== IEZsb29yaW5n 55CD b2JzZXJ2YXRpb24= IHVzZXJEYW8= PSIiPg0K Q09WSUQ= YmFieQ== IHRyb3VnaA== IFNlYW0= IEZpZ2h0ZXJz b21pdA== IENoYXJnZXM= UnVzcw== IHF1ZWxxdWU= R2V0UG9zaXRpb24= IE1pbmlzdGVycw== X3JlY2VpcHQ= IHJvb3ROb2Rl bXVsdGlw JHNlYXJjaA== IikpKSkK dGFrZXM= ICghIQ== IEJBVA== Y2hhbmc= xJM= Lm9j IHNraWxsZXQ= IFNLVQ== IEdhbGxhZ2hlcg== IGNyZXNj d2Vla2RheQ== ZXJ2aXNlZA== Q2FyZENvbnRlbnQ= LmFjY2Vs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK VGFp IENvbXBhdGliaWxpdHk= eENG X3Jld2FyZHM= cmRm QVBQTEU= LWZlZA== IGRlcGVuZGVk LWdlbmVyYXRvcg== KFByb2Nlc3M= 0LzQvtC2 IGRpc2NyZXBhbmN5 IHBob3NwaGF0ZQ== TmV0d29ya2luZw== 6K6+6K6h5Zmo KHJv IGNvbmN1cnJlbmN5 CWF1dGg= UGx1Zw== QVRBTE9H c3Viag== L3RlYW0= KGF2Zw== b2tpbg== IHBsZWRnZXM= IGNvbGxhYm9yYXRvcnM= IGVtYmFya2Vk IERvY2g= IERhaXJ5 Y29tcGV0aXRpb24= IE11dGFibGVMaXN0 LXNldmVu IGNvbmN1cnJlbnRseQ== IFZpag== IHJlc2V0dGluZw== ZHBp IHNsaXQ= IFBPSU5URVI= IENBUlQ= LmRleA== Y3Vsb3M= X3BlcnNvbmFs IGFuYWx5dGlj I2NyZWF0ZQ== X21lbWNweQ== KExpc3ROb2Rl X1RhZw== IElycg== Ij4nOw0K U2hvcnRseQ== LnRpcA== XFs= IFJlcHJlc2VudGF0aW9u X0xJVEVSQUw= LmNibw== IEthcm5hdGFrYQ== IENvbXBldGl0aXZl IFJ1ZQ== IHJ1bm9mZg== IFNwZWxscw== ZmNsb3Nl Y2lz RnJh IHJlbW9yc2U= IENvbG9nbmU= IHJhbmdlcg== IE1vcmc= ZmlnaHRlcnM= LlJlcXVlc3RQYXJhbQ== Q29ycw== IGRlbm90ZQ== IGNob3Nlcw== w6JuZA== LnJlY3ljbGU= IExvZ2lzdGlj IERFQUQ= LWxvYWRlZA== IENsZWFycw== IGtlbGw= cmFwaGlj IE1hbmU= RU1CRVI= IG1hc2tpbmc= CWVkaXRvcg== SGFsbG8= Omxpc3Q= IGV0aG4= LXNlYXQ= ICopWw== IEdseQ== IEFDUw== CXN0YXQ= L0NvbW1vbg== IGRpc2d1aXNlZA== RmluYW5jZQ== IEVsZXBoYW50 dGVtcG9yYXJ5 IENhcmx5 IGNvY29z IEp1ZGl0aA== IHdyYXBwZXJz IEx1bmFy IHLDqWN1cA== LXNldHVw IHNpemFibGU= ICAJIA== Y2xhc3NpZmllcg== IGZpZ3NpemU= IG1hc3R1cg== IOabtOaWsA== IFJ3YW5kYQ== KXQ= IEN1cHM= QXp1cmU= KCl9LAo= U1BBUkVOVA== KGRpYw== IFRleHRGb3JtRmllbGQ= IGRlZm9ybQ== IGRpcmVjY2nDs24= IHlheg== IGdsdWVk IGF0cmF2w6lz Y29mZmVl IFVwZGF0aW5n IENvbGxlZ2Vz w6RsbHQ= YW5kZWxpZXI= IHNhbGly IFNDQUxF cWU= 6rO1 KHJlY2VpdmVy bWRi Im1hdGg= aXNuYW4= dGVsZWZvbmU= UkVQT1JU LmFkZE1vdXNlTGlzdGVuZXI= ZHVlZA== e31d KCkpOg== IHdvcmtpbmdz fSk7CgoKCg== IGNvbXBvbmVudFdpbGxNb3VudA== U2VydmVycw== X0NMT1NFRA== SVpFUg== IGJvb2I= IENPTkNBVA== IEhhcHBpbmVzcw== IGNvbW11bmU= eEFC b3duZXJzaGlw X05FQVI= X0hBUkQ= IFlB bGlvbg== IHNwaWVs IHRhZ2dpbmc= IGltbW9yYWw= LWdyb3VuZA== IHRodW5r IGxvY3Vz IExhdHZpYQ== aXppb25p Y2xhcnNpbXA= IHBhdGllbnRseQ== XEhhcw== IHN1Ym9yZGluYXRl IFdISUNI ZW50aW9uUG9saWN5 IGRlcGxldGVk RlNJWkU= IFss IEJpb2dyYXBoeQ== IFNhbmRz U0hBUkU= Q2hhcnNldA== LndyaXQ= X1NVUw== IE1vcmVubw== IGJyb2Njb2xp IFZY YW1pY3M= LkdldFVzZXI= IENvbW1vZA== LnNjaGVtZQ== KHZz IGFuYWxvZ291cw== UHN5 PWxpbmU= LnB1Ymxpc2hlcg== IG9ud2FyZA== 0LXQutGB IERlYWxlcnM= IHRvQXJyYXk= IENob2ljZXM= 0JTQvtCx0LDQsg== IGRlZmF1bHRNZXNzYWdl IGFncmVn IENvbmNhdA== SFY= IENpcmN1bGFyUHJvZ3Jlc3M= X3N2Yw== VEFC X2ZpbA== Lk1hcFBhdGg= emJ1cmc= IGdldFByb2R1Y3Q= IFZFUklGWQ== Lk1vbmdv IHB1bmRpdHM= cHVsc2U= bGljdGluZw== Z2lhdGFu IC4uLiI= IGZpeg== IGFudGlt IENoYXR0 X1RZUEVERUY= R3V5 CXRlc3Rz IFNsb3Zlbmlh IENvbW1hbmRMaW5l IGJlbmVmaWNpYXRpb24= IGJpbmRBY3Rpb25DcmVhdG9ycw== TlRBWA== LUNz IGNoYXJpc21hdGlj LmFsbG9j X25m IGFzc2F1bHRpbmc= INGC0LDQsdC70LjRhg== IGPDoWM= IFNjcm9sbHM= SEFT eXl5eU1NZGQ= IEdhbGU= IFByb3plbnQ= IFRob3JudG9u ZGVhbGVy IGV2aWN0aW9u IGFuYWxl 4oCO PSIo IGVhZw== KCcnKTsKCg== IGNvbnRlbXBsYXRpbmc= aHlw YmVsdW0= IEZpdHM= IEV4YW1pbmVy IEJ1Y2M= IG1lbWJyYW5lcw== IGJyaWxsaWFudGx5 IENlcmFtaWM= w6h2ZQ== IFBvdW5k IHRyZWFzdXJ5 LicpOw0K CXRj ZWNha2U= Q3VycmVudFVzZXI= LmhhYmJv IHRyZWFzb24= IEZUQw== TVVY IG51bWJlcmluZw== UklB LS0pDQo= IGJlaWdl IEFydGVt YmFzZXM= X0JBTkQ= IFBhdmVs 0YHRgtGA0YPQug== dGhlZA== X25icg== INCx0LDQtw== c2xpZGVVcA== IFRheGk= IGFxdWVs IE1pc2NlbGxhbmVvdXM= ZWx1 IGluc3VsYXRlZA== IGFzc2V6 LkNvbmZpZ3VyZQ== IHF1ZWxsYQ== IHBhcmFzaXRlcw== QXdheQ== ZHVjaWJsZQ== KCc9Jw== IHZlcm8= IFdhdGtpbnM= IFNlcGFyYXRvcg== YXBzZXM= ZW52aXJvbm1lbnRz IGFwcHJhaXNhbA== cGF1c2Vk X2RlYXRo IHNpdHVhY2nDs24= IGZyYXRlcm5pdHk= IGluc2lzdGVuY2U= X2NyeXB0bw== QXR0cmliUG9pbnRlcg== Il1dLAo= IG94aWRhdGl2ZQ== IG5ldXJvbmFs IFFHcmFwaGljcw== Ij4nLA== IFNtaWxl T2JqZWN0aXZl IFNha3VyYQ== Wk8= YW1pZW50b3M= LkxvY2FsRGF0ZVRpbWU= L3VuaXQ= LWZyZXF1ZW5jeQ== LUNT In07Cgo= IHJlbGV2 QWxsb2NhdGlvbg== JU0= IER1c3Rpbg== IHN3aXBlcg== IE5hcmM= dGF0dXM= IGxvbmdpbmc= IHRodWlzb250dmFuZ3N0 IGNvbW1vZG8= IEFEQQ== aW11 X2ZvcnVt YW5naQ== CUFwcGxpY2F0aW9u W2Zyb20= IEJldGhlc2Rh b3Ryb3BpYw== IE1VQ0g= IHByZWRpYw== ZmlsbWU= KGdyYW1tYXI= KEFQUA== IEN1cmw= IHNob3J0aGFuZA== YWZmaWxpYXRl XSoq X250aA== aWFiaWxpdHk= Ym9tYg== WVQ= KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== IEJpY3ljbGU= aW1hdGluZw== Lm5paQ== IEthcmE= YXNrYW4= cmVhY3RzdHJhcA== IHdsYW4= b2dyYXBoZXJz CSANCg== cGFnaW5hdG9y aWhhbm5h IG1hdGNodXBz X1BBRERJTkc= X3JlZ2lzdGVycw== eXRl IHByaWNleQ== IGZvb3Ro IEh1Y2s= UEFSVE1FTlQ= IHByb2hpYml0aW5n LmlzRGVidWdFbmFibGVk 4KS4 bGVpbg== PXJlcw== LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== ZGRs bXBy IOqwmQ== IFdBTEw= IHJldm9sdmVz IFBFUkY= KTt9 IFRvYnk= Ly4uLw== IGthbw== IGZvcmVjYXN0aW5n X0NvbnRlbnQ= IH0pKSwK cG9ybm8= bGVhZGVycw== LWhvb2tz aXN0cmlidXRvcg== L3N0b3J5 CWxpbmVz LXJlcGx5 IGFkcmVuYWxpbmU= Rmxvd0xheW91dA== LnJvdXRpbmc= CXRpbWVvdXQ= IHJhaWRlZA== CURE IGRpc2RhaW4= Y29uc2lzdGVudA== Z2Vpc3Q= KCI6Lw== KHN0YXRlcw== IEhJVA== LVJheQ== LWhlYWx0aA== IC8vLQ== dGVtZW50 Lm5hdmlnYXRlVG8= IGJlbmNoZXM= ZXdpbmc= ZW56aGVu LXNwbGl0 UmVqZWN0 IHB5bGFi IGZsYXNobGlnaHQ= IGluaXRpYXRpbmc= IE9FQ0Q= IGVudHJlZ2E= TmF0dXJl Lm9yYW5nZQ== IMO6bHRpbW9z IGVjcw== LmhvdmVy IGRlbHV4ZQ== Um9nZXI= IFRpYw== IixfXw== IHBsYWNlaG9sZGVycw== IHNwYXduaW5n IG51cnR1cmU= IGV4Y2hhbmdpbmc= Q3JlYXRlRGF0ZQ== IGxhbWlu IFNlbWljb25kdWN0b3I= ICovCgoKCg== IGbDuHJzdGU= IGluaXRpYWxz IHByb3ZlcmI= IEFjdHJlc3M= Q29uY2F0 IE5pY29sYQ== LXNob3BwaW5n aXZpdMOg aXRpYW4= IFdlcnQ= LkFkZFNjb3BlZA== IHNhbGVzbWFu Ym9z IEZlcnJ5 Q0VOVEVS bW9kZWxv IFJvZQ== IElzbGFuZGVycw== dXBlcnRpbm8= RGVjbGFyZQ== IHZvd2Vscw== IGJveGVy KHRvb2xiYXI= IGhhbGZ0aW1l bmlu IEJyb29rZQ== IFZlcw== 0LvQsNGC IG1vdGl2bw== cHJvdGVpbg== a3Vz YnVzeQ== IHN0cmluZ1ZhbHVl CU15 TnV0 dXp6aQ== IHNleg== IG9sZHM= IG1ldGh5bA== IGLDvA== aGliYQ== IEluc3BpcmF0aW9u IGF3YWl0ZWQ= QnJ1Y2U= QkFMTA== IFRSWQ== LWxpdGU= IHVuZGVyZXN0aW1hdGU= CXJ2 Lm1vdg== IGhpc3TDsw== IEVyaWU= Y25hbWU= L2Nvbm5lY3Q= Y29uZmVyZW5jZQ== X3RyYWl0 IGt2aW5kZQ== IEludm9jYXRpb24= IERhdGVUaW1lT2Zmc2V0 d2VjaGF0 Q0VP IExpYnlhbg== LmNhcGl0YWxpemU= IGdyYWNlZnVsbHk= IHJlZWxz aW5jcmVhc2U= Lm1heGNkbg== ZmF2b3JpdGVz SVRFRA== PFNjYWxhcg== LkZldGNo IHN1c3BpY2lvbnM= W01BWE4= X1RSQU5TQUNUSU9O IGN5bGluZHJpY2Fs Lm5leHRFbGVtZW50 IG1vcnBob2xvZ3k= IENlZA== IGNuYW1l KHJhd1ZhbHVl V2Fsa2luZw== TG9hZHM= X0FMSUdOTUVOVA== X1JPVU5E IFJPQ0s= Y2x1c3RlcnM= Img= dWV1cg== cGxhbnM= IGF0aGVpc3Rz IHZhdA== PSJfXw== YXdhaA== ZXJ2YXRpdmVz IGZpbmRPbmU= IG5vdGVib29rcw== IFRUTA== LkdldEFzeW5j IG3DvG5jaGVu bUFo YnJ0Yw== X1BZ QnVpbGRlckludGVyZmFjZQ== CWdiYw== IGJsYW5rcw== IGTDqW0= UmVjdXJzaXZl Lk1hbnlUb01hbnlGaWVsZA== X1BBUlNFUg== IGVuZGVhdm9ycw== IGRyaWI= X3BocA== IGF1dG9tb2JpbGVz bG9pdA== IE9ydGl6 IFVE KGRBdEE= IE1pdHN1YmlzaGk= QXR0cmlidXRlVmFsdWU= IHBvYXRl 55u45YWz IGNhdmFscnk= Lk1hdGNoZXJz IGluZ3Jlc3M= IEplaG92YWg= CXNlcQ== X3N0cmVldA== IFNvZmlh IHNjcm9sbHM= dmluY2Vz ZWxlY3Ryb25pY3M= XHBhcmFt IHplbmQ= IHNraW0= LnBpeA== ZW5r X2FyZWFz IEJvaXNl LXZhbGlkYXRvcg== IHVuZWFydGg= b2ZpbG0= IEJDRQ== b3Zza3k= IExldmVy IHBvbGljZW1hbg== IG1pZXM= IFBvcnRyYWl0 IHBvdGlvbnM= X21vdA== bWFzc2FnZQ== 0LXQvdGL IGN1ZA== IG1hbnVzY3JpcHRz Y29udGludW91cw== LnRj w7x6 IEZyZWV6ZQ== Xzoq Lmht IENTUkY= IE3DpGRjaGVu LXBlZXI= IHB1dFN0ckxu IGltc2hvdw== IEB7JA== IEJhdWVy KHRvbHVh IHdyb3VnaHQ= IEdpYW4= IMO2bg== ZnVuZw== QnV0dG9uVGl0bGVz fSkiLA== IE11cmRvY2g= S1c= IFJlcG9ydGVk c2ll IG1laWxsZXVycw== IEthZXBlcm5pY2s= IGRzcA== IEV2ZXJ5ZGF5 cmVuZHM= IENvbmNl IGluY29udHI= LnJlbW92ZUF0dHJpYnV0ZQ== 44G+44GX44Gf IHJldw== IFByZXNlbmNl L2dpbg== LkNsYWltcw== CXNs RHJhZ2dpbmc= IHNwcmVl IGFjdHVhbGl6YXI= IG5vc3M= IGxpZmVzdHlsZXM= O2M= VURHRQ== SW5NaWxsaXM= IGl0aw== YWJieQ== KHBh aXNzZW50 IFByZXNpZGVudHM= IEhleGF0cmlnZXNpbWFs ZWNpZGVk KHRleA== IGNyb3duZWQ= UGhpbGlw IFNhcms= IEFkZGl0aW9u IENvbGJlcnQ= IEdMRVM= IFFMaW5lRWRpdA== IGRyYWlucw== IHNvcnRPcmRlcg== ZXNjb3J0 VGVk IG1hbmlmZXN0ZWQ= LnZhcmlhbnQ= IFJFRkVSRU5DRVM= KGdj L3sk b2N5dGU= IG9ybmFtZW50 IGJvb2tzdG9yZQ== SG9s IFZhbGw= Lycp YWNhaw== IE5hdkJhcg== IG55ZQ== X0RlYw== b2x2aW1lbnRv TVJJ IGhvb3A= ICAgCiAgICAK IFBvc3Rpbmc= IG91dGxpbmluZw== YWdhc2Nhcg== LmJyZWFrcG9pbnRz Y2F0aWQ= X3RyaWdnZXJlZA== IHJ1bm5hYmxl L3RydW5r LWNoYWly IGJhaXNlcg== ZmFjaWxpdHk= IHBvbGxlbg== 6Z+z IFtbIg== IENHU2l6ZU1ha2U= IGFzc2FpbA== IEF0aGVuYQ== IEFkZGljdGlvbg== aWxhbmQ= O2Jy LktleWJvYXJk X2Zt QWNl IFJFUQ== IE5ld2VzdA== Oy4= IE1BREU= c2V0VGltZW91dA== U2VydmxldENvbnRleHQ= CQkJCQkgICAgICAg IEx1cA== LXJldmlld2Vk IEFuYWx5emVy Lk5hTg== dXR1cmE= R2VvbQ== eW1lcw== X3Npbg== IHRydXN0ZWVz Ly89PT0= IGFkbWl0dGVkbHk= IGFrbw== IFVFRkE= X2hlcm8= R2l0aHVi X2VzdGltYXRl IGNvcnJvYm9y ZW50aWZ1bA== IFN0ZWVyaW5n IE1pdGFy IFBpcGVz IGvDpQ== X3NlYXNvbg== IEJDSFA= L3NvZnR3YXJl bmV0dGU= KiIs dW5kcmE= IGdldFJlcXVlc3Q= LkJ1ZmZlcmVk ZmVybg== TWFyaW8= IGRpc3BlcnM= X2NhdGVnb3JpYQ== IGVuZGxlc3NseQ== Z3VhcmRz CWF0b21pYw== c2NvcGVk IHVuZG9uZQ== U0hPUA== IFRvcmNo IEhhc3Rpbmdz IEZJTEVT X1NhdmU= V2l0aE1hbnk= V2lz IGludGVuc2lmaWVk LmFyZ3VtZW50 IEFwaVNlcnZpY2U= IEpTSW1wb3J0 ZWtp SW5zdXJhbmNl c3R5 LmRzbA== IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= bHRyZQ== U0VH RFJBTQ== LWJsb2NraW5n 0L3QtQ== cGlyaW5n IFBSRVM= IEZhY2g= IHNhcmM= IFNNRQ== IEVsZW0= IENhbGlmb3Ju VW5zYWZl IENvbXBvc2Vy KGRlcA== IEF0dGVuZA== ICopKCg= IHRlYXNlZA== IEFUSQ== KHBt ICIoXDw= J10r IHNlY3Rhcmlhbg== IFBoYXJtYQ== RUk= CVRva2VuTmFtZUlkZW50aWZpZXI= w6d1 IGF1Z21lbnRhdGlvbg== IHNhamE= IGNvbG9yZQ== ZGVhZGxpbmU= LklURU0= IFJpeQ== bWFhbA== CWNsaWNr UGVybWFuZW50 SG91c3Rvbg== UmVzcG9uc2l2ZQ== IEVyZ2Vibg== ICIlIg== LnRvT2JqZWN0 CXBpZA== LlN1Ykl0ZW1z IFsr IGZ1bmd1cw== IGJyb2NodXJl IEFwcHJveGltYXRlbHk= IG1paw== dmVsb3Blcg== IHBhZ2FtZW50bw== 5Yqo55Sf5oiQ IGN5dA== IFRlbXBs ZW5pYWJsZQ== IENvbmFu IHNldGJhY2s= b2JsaW5z IE5UTg== b3NzYWw= VkVSQk9TRQ== LmJpbw== IMWe 4buf IEdyaXA= PCo= VFJJRVM= LmNob29zZQ== UGhvZW5peA== IHByb3ZpbmNpYQ== TUZMT0FU Q2Fycw== IHJldHJvc3BlY3RpdmU= IGFnb255 IGxsZW4= IGJ1bXBlZA== eWxhdGlvbg== IHdhcnRv IHRvZGRsZXJz bGF2 KHBhdGllbnQ= ICgpLT4= Y2xj IG9uQWN0aXZpdHlSZXN1bHQ= IGVtdWxhdGlvbg== IGJ1bGxk X0FVVEhPUg== Pk8= L3F1 IMK2 CWhy c3RkQ2xhc3M= IHNwYWNlcg== VHJhbnNsYXRlZg== LmFkag== Oml0ZW0= IGV4aGF1c3Rpbmc= cGx4 IHJldml0YWw= xZtuaWU= IGNhbGlmb3JuaWE= c2V0U3RhdGU= L3RhYg== aW5kc2lnaHQ= X0xldmVs aW1pbGFy Lm5hdmlnYXRvcg== IHRlbXBlcmFtZW50 IGRpZsOtYw== IGluZXhwZXJpZW5jZWQ= IGltcHJpbnQ= IFJlc2lzdA== X0ZPTExPVw== IFJldHJ5 IGVuZ2FnZW1lbnRz Q2FuQmVDb252ZXJ0ZWQ= IHNpbmdsZWQ= Lmljb25z IGNvbmRvbXM= IEZlYXRoZXI= bGVybmVu KWI= IE5wZ3NxbA== IENvbnNvbGlk cGVrdA== 56uv c3RyaW5nVmFsdWU= R2Ft IFNpbmFp IE9iamVjdFR5cGU= X2lucA== IHBhcnRp IFdhdGVycHJvb2Y= IGNvbGxpZGVk IGFpcnM= L3dvcmxk L1NlYXJjaA== X3N5bnRheA== xZ9p X2Fubm90YXRpb25z IFRhY28= TEFU IE9wY29kZQ== 44CC4oCdCgo= IGxlYXNo IEFsaWNpYQ== 77yM6buY6K6k IFRTQQ== IGhvdHRlcg== X0hhbmRsZVR5cGVEZWY= Z2luYXM= IGluZGlmZmVyZW50 Q3VzdG9tTGFiZWw= kZA= b2R5bmFtaWNz T25VaVRocmVhZA== IENhcmE= LmRldmljZXM= IEZvcmVpZ25LZXk= PicpOw0K LmJ1dA== LnRpZg== IOaWsA== IE9rSHR0cENsaWVudA== KFRleHR1cmU= LlNPQ0s= KGluc3Ry bWlzdA== VW5uYW1lZA== U3I= Km51bQ== KE5VTQ== KioqKioKCg== L2hlbHA= YmVlbGQ= LmFkanVzdA== X1Bhcm1z X0FOR0xF VFJFRQ== IGVzdHVkaW8= d29ya3NoZWV0 Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg== QWR2aWNl w7bDn2U= bkVudGVy YcSH IGFnZWluZw== IEt1cmRpc3Rhbg== X1JUQw== YmFua3M= LlVS IGluY2FybmF0aW9u IGdsYW1vdXI= IOOCuQ== IGltcGVyaWFsaXNt 7J6F64uI64uk IHNpZGVsaW5l LkFycmF5QWRhcHRlcg== IyMjIyMjCg== IFN5cmlhbnM= IEF0dGVuZGFuY2U= LWVzcXVl IGdyZW5hZGVz X3Fvcw== T1ND X2Rvb3I= LkNhcA== REFM IGFtYnVzaA== CWVz VG9Kc29u TWFudWZhY3Q= RW1lcmdlbmN5 IFFGaWxl IOWV CUxQ 5pCc57Si IEdhcmxhbmQ= LmNvbm5lY3Rpb25z LlJlYWRGaWxl IEh3eQ== 4oCUZXZlbg== eERF IG5vdXZlbGxlcw== IEh1c3M= RGVwb3NpdA== X2ZvcmVpZ24= YWJhag== IFBveg== ZGJ1cw== IGlvZA== w5cKCg== IENoZWVycw== SmVzc2ljYQ== IHNhaXNvbg== IFB0eQ== Ij48IS0t aW5vYQ== ZXhjbHVkaW5n IGJpdHRlcm5lc3M= dWVsaW5n UHJvdGVjdGlvbg== IEJlcmdlbg== CQkJIAo= QkVM IFRvYmlhcw== IHVwZA== 67KE IGZvbGlhZ2U= X1BVUg== IEFkdm9jYXRl IG9uUmVxdWVzdA== LnBhcnRpdGlvbg== IERldmVsb3BlZA== IGNyaWI= 0YHQutC4 dm91Y2hlcg== IEludGVyc2VjdGlvbg== IG5pZWNl IGxr IENhdWN1cw== KFsNCg== IERldGVjdG9y L2xn IEhlZGdl IHNsdWdn YW5nc3Ryb20= IENvbnRyb2xsZXJCYXNl CXl5 LnBw IEtsaW5n IExUUw== 4oaT YXJyYQ== Z2V0SlNPTg== X3dlYnNpdGU= IGlkaW90cw== IE1lZ2hhbg== QnV0dG9uTW9kdWxl ICU+ IHByb2plY3RpbGVz c3dvcmQ= ICAgIAkJCQkJ IGFzc2Vz IFN1Y2hl IGtlZA== csOhZg== IHNhcsOg TEVuY29kZXI= UkFORA== IFNvbWVob3c= IFNhbGE= IG11bHRpbQ== IG51bVJvd3M= IFJvY2tpZXM= IHhk IGRpc3Byb3BvcnRpb25hdGU= CVJUTEk= CVVSTA== YWdsaQ== IFN1YkxPYmplY3Q= IEdyYXZlcw== X3JlZ3VsYXJpemVy X2NoYXJhY3RlcnM= LmFuYWx5dGljcw== Lm1vZHM= IGltcHJvdmlz IEJsb2NrUG9z X2luc3RhbGxlZA== X0NPTlRJTlVF L2Rvd24= U09D LmFwaVVybA== LlVzZXJTZXJ2aWNl VHJlZXM= 5oqV X292ZXJmbG93 YXVzYWw= Ym94ZWQ= Jgo= IEphY3F1 X3Vzcg== SU5UUg== IHNpZ25hZ2U= IGNvY2g= Tm9ybWFsaXplZA== CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo= IHN1c3RhaW5pbmc= IFNjcmFw cHJhYWs= LWF2YXRhcg== LndlYnNpdGU= KGd1aQ== PXJlc3BvbnNl KG9wZXJhdG9y IGVmZm9ydGxlc3M= IEFjdGlvbkJhcg== RkZF 56uL CVJlZ2lzdGVy QVJTRQ== KW4= IE1PU1Q= X1NQUg== X0NISVA= YXNk IHRvcExlZnQ= IFR4dA== 0LDQttC0 LlZvbHVtZQ== IGlubGV0 IGZyYWN0dXJlZA== IExvbmdpdHVkZQ== IERyYW0= LkNvbm5lY3Rpb25TdHJpbmdz YWJlZQ== cGVyYXRl am5p YHQ= ZmluZ2Vy IEplc3NpZQ== LGxs IFJ1ZHk= IGdlbmVyb3VzbHk= X0NPTlZFUlQ= IGVpdXNtb2Q= IERhaQ== aW1hZ2lu IEdPYmplY3Q= IMSRw6M= aWRpb3Vz cmlkZ2Vk IHNvcHI= 0LvQsNC0 IHN0aXRjaGluZw== IGtyYg== CiAgICAgICAgCiAgICAgICAgCg== IGxhdmlzaA== IENpdg== U3RhcnRFbGVtZW50 IExvbA== CXV0aWw= J11dLg== IE1hbGF5 IC4NCg== 548= X0ludm9rZQ== aXZpc3Q= RGVwZW5kaW5n KSI7DQo= IHRvZnU= IE1DUA== IHN0b2NraW5n IGNhdGhlZHJhbA== IHF1YWRyYXRpYw== YWxlemE= Lm1vdmVUb0ZpcnN0 Q29sb3JCcnVzaA== IEVyZWN0 IFJDUw== OmJlZm9yZQ== PW5vZGU= IHByb2Jsw6htZQ== X3Jobw== IHN2ZW5zaw== Um95 YmFzZVBhdGg= IGtvbmQ= INC10YHRgtGM Z2V0U2luZ2xldG9u IERTTQ== SWFu IGh1bnRlZA== IFRlcnJhY2U= IGNoaWxkY2FyZQ== IGNvZWZmcw== IGdyYWRlZA== IEx1Y2lh IGpzb25PYmo= YWJsZU9iamVjdA== VmF1bHQ= w61zdGljYQ== X3BhZ28= X1BG YW5kcmU= IEFuYXRvbXk= LkpDb21ib0JveA== b3VyZQ== IGdlbm90eXBl YmVuY2htYXJr IGJhaWs= IFF1w6liZWM= KCkpDQoNCg== IGt1bm5l IFBvc3NpYmx5 IEJlaXNwaWVs IGNvbmRvbGVuY2Vz PXF1ZXJ5 IHbDtQ== IG51ZXZhcw== IEFwb2NhbHlwc2U= dmVjdGlvbg== CXNwcml0ZQ== bGV2YXRvcg== LiJdCg== Z2V0TmV4dA== KFJlZ2lzdGVy IHVuc3Vi dHJlZXZpZXc= Tm9kZUlk IOyK JikK Zmx0 IGhvdHNwb3Q= IGdhc3Ryb2ludGVzdGluYWw= ZmlnY2FwdGlvbg== b3dlcmVk IENzcw== X3Jvcw== X3NjYWxpbmc= IGVkaXRhcg== J11dKTsK Lm5lZw== IGZ1dHVyaXN0aWM= IHN0YXRh dWN0b3I= VUxBVEU= IHfFgg== LWNoYXJhY3Rlcg== ICAKCgo= IEJlYXU= IHBlcm1hbGluaw== Qnl0ZUJ1ZmZlcg== IGRpY3RhdGVz IE1MQQ== X0xvZ2lu Q29uZGl0aW9uYWw= U1lN QXJyYW5nZQ== IFN0b2Nrcw== IG1lYXNsZXM= 4KSk RW5jcnlwdGlvbg== IEVudGlyZQ== IG1pbk9jY3Vycw== IGh1Z3M= L3dpbmRvdw== CXByb3A= PSQoKA== IFVDUw== IEZpcg== LkNsb2Nr LWRlc2t0b3A= IG1hbGZvcm1lZA== IEFiZXJkZWVu IMOF IFJvYWRz IEJlaGF2aW91cg== KCkn 5bGe5oCn LkNvbXBhcmF0b3I= X21v X0lPUw== IE9yaW9sZXM= Lkxvb2t1cA== IGZzZWVr X0lC L3N0YXI= Kzwv X0Rlc3Ryb3k= LXRyYQ== KCcuJyk= IEZvckNhbkJlQ29udmVydGVk IEZvckNhbkJlQ29udmVydGVkVG9G IEZvckNhbkJlQ29udmVydGVkVG9Gb3JlYWNo IEFhZA== IGFpcnN0cmlrZXM= aXNPaw== IGZlZGVyYXRpb24= IExhYnJhZG9y X2xhdW5jaGVy YWxvZ3k= Pj4oKTsKCg== IEp1Yg== dXRy aXN0aW5ndWlzaGVk YWJhbnQ= UmVnaW9ucw== L2hlbHBlcg== X2xpc3Rlbg== CVRvYXN0 IEZpbGVNYW5hZ2Vy aXRvcmlz IGVsZWN0cm9kZXM= R1JBREU= IGJlZ2dlZA== IFBsYXRlcw== YWZvbmU= ISEhCg== IGVieA== IGRlZmF1bHRQcm9wcw== IGNvbXBhcmVUbw== IFNDQw== LmV4dGVudA== YXV0b3M= IOyW IFRvbGtpZW4= OjoqOwoK Kics LmRvY3VtZW50cw== c2luZw== PUJpdENvbnZlcnRlcg== IEtyaXNobmE= IHBsYWlzaXI= IGJ1Z2d5 IHJlZ3VsYXRlcw== IGZyaWRheQ== IGNvbXBsZXRlbmVzcw== IGF1ZGlibGU= IFJlY29nbml0aW9uRXhjZXB0aW9u IHNoZWRkaW5n W10pewo= KGJhbGw= IENoYXRDb2xvcg== KENvZGU= KCksCgo= IHRlcnRpYXJ5 IFNJREU= KEpTT05PYmplY3Q= pOaWrQ== UmVtYXJrcw== IGxpc3RCb3g= LmltYWdlVXJs IGRlbGF5aW5n IHNvY2lvZWNvbm9taWM= Lmxw PE15 Lm9uU3RhcnQ= IFNjb3I= Ynl0ZXJpYW4= LXJvY2s= X21ldGVy IHJlcG1hdA== IHByZWd1bnRh IE1FVEE= KGd0 IEZSSUVORA== IHNvcnRl IGhlcA== b25vbWllcw== IGF1dG9tw6F0 IEZvcm1hdHM= c3RhdGVQcm92aWRlcg== LWZsb29y X01VWA== KENvbnRlbnQ= IElOU1RBTEw= IFRpdGFuaXVt cnVj LkRhdGFzZXQ= YXNjbw== Lk1BVENI IGZlc3Rpdml0aWVz TVNO Lm90 IEdldExhc3RFcnJvcg== aWVucw== IF9fX19fX19fX19fX19fX19fXwoK X0dG X3BsYXRl IEZvcm1hbA== LWxldHRlcg== S2F0ZQ== YXBpYQ== ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K L2dlbmVyYXRlZA== IERpbmc= IEZyaWVkcmljaA== ICcpJw== VUJMSVNI IEFiaWxpdGllcw== IHVubG9ja2luZw== Lnl5 IEludGVycg== bm90aHJvdw== aXBvcA== IENPUlBPUg== W2FycmF5 PFdlYkVsZW1lbnQ= X1NJRA== LnF1YWw= RGlhZ25vc3RpYw== OiIiLAo= KG1vbWVudA== anVyZWQ= IHRlcnJlc3RyaWFs ZXJ1bGU= ICYpOwo= IGJ1cmVhdWNyYXRpYw== b3BwaW5z IGphcG9u bGVvbg== X3JlbmFtZQ== X0RFU1RST1k= LkVuZHNXaXRo IGVydXB0aW9u KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K UEVU X3JlbG9hZA== IHN1cHBsZW1lbnRhcnk= IHppZW4= Q0xMb2NhdGlvbg== IGtsZWlu X2Vm Ont9 IGNvbWVudGFyaW9z KHZhbGlkYXRpb24= Lnh0ZXh0 X0lNQUdFUw== LnNldElucHV0 IERlY29tcGlsZWQ= X1RCTA== Y29tcGxleFR5cGU= X2ZlYXR1cmVk ID8+PD8= LnZvdGU= IEZyaWRheXM= LmNvbnN1bWU= Lk1FRElB IHN5bmVyZw== jpjsnbTsp4A= X0hFQURFUlM= eEFD X252 zq0= IFNpbW9uZQ== Q2VycmFy YWRkb2Nr LnNlcmlhbGl6ZXI= IENsYXNzaWZpZWQ= Lkl0ZW1zU291cmNl IHByZWNvbmRpdGlvbg== 44Gd44GX44Gm RElTVA== SW1hZ2VVcmw= L3JhbmRvbQ== IGVyw7N0 W3Jvb3Q= QUxMRVJZ Y2o= eEFE IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo= IGl0YWxpYW5p fCM= IHJlZ2VuZXJhdGU= IHN0cnI= KHx8 IEVtZXJzb24= IFBJRQ== Y2xpZmZl CWFu PlBhc3N3b3Jk dG9EYXRl Q2lwaGVy IGNvbnZveQ== IFhDVEFzc2VydFRydWU= L19f LWZvY3Vz IFJoaW5v IGdvbw== IGJvdG9u Lk5vU3VjaA== IFJlZHVjZWQ= TUlTUw== IFdpbmNoZXN0ZXI= dXJsZW5jb2Rl IG11ZGR5 aXlh IE1icHM= IHN0YWw= b2RhZm9uZQ== 5Lus IHBo4bqpbQ== ICIvIjsK IEFtbW8= TmV3UHJvcA== ID0KCg== INCf0YA= IHBheg== IGxpYmVybw== CVJlc291cmNl bmVpZ2hib3Jz LHJlc3BvbnNl X2F0dGVtcHRz IG5r IG1pbGl0aWFz X1BBWUxPQUQ= LkJ5dGVTdHJpbmc= INGB0L7QtNC10YDQtg== YXJ0b24= PkhlbGxv bGlnaHRseQ== b3dlbGw= IGd1YXJkaW5n IFRPSw== IHdoZXJlYWJvdXRz X2R3 IFJvdWxldHRl IGd5cg== IEZlZG9yYQ== LkJ1dHRvbnM= IGV4Y2xhaW1lZA== IFNvbW1lcg== QXV0aEd1YXJk LXJhdGluZw== TWV0aG9kQmVhdA== LnBvc2l0aW9ucw== TWVkaWFu LuKApgoK IGdsYWM= IHVuZGVybWluZWQ= JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQ== X3RoaXJk LmtlZXA= IGhheWE= IHRvSlNPTg== IExhdXJpZQ== IAkgICA= IEFjY3Vt IHBydW5l dXJ2ZWQ= IE5TRg== IEdyYXBl RkxJQ1Q= 6LI= IHByZWRpcw== X3B0cnM= IG11bHRpY2FzdA== KEdyb3Vw IGhlacOf IGZlZGVyYWxseQ== X1BBVVNF IG1hbGF5c2lh IFJlY2FsbA== IHJvZHo= IFNlbnRlbmNl aW50ZWw= X2RydmRhdGE= LXNjZW5lcw== PHk= IGZvb2xlZA== IExvdWQ= IGFudGl2aXJ1cw== LnBsaXN0 IHZlcndlbmRlbg== IFdvbGZl KWl0ZW0= IHR3aXN0aW5n IGVzcGFu YXRlcm5v IEFjY29yZA== KCldLA== UkVNT1ZF ZGVoeQ== X1ByZQ== IG1pc2Nhcg== dmxh IHNlbWJs IHRldGhlcg== IEJpag== LycKCg== IENvcGllcw== LXBhdHRlcm4= Lm9uVmlldw== LXRha2luZw== X3NpbXBz 44GX44GL44GX IERBQ0E= b3JuaW5n IFBlc3NvYQ== b3JueQ== X3Bhcw== IGVpZ2h0eQ== VGFj X1NUT0NL LmxvY2F0aW9ucw== Iil9LAo= IHTDoQ== LWZpZWxkcw== b2thbmU= L2t1YmVybmV0ZXM= IGNoaWNh IGFydMOtY3Vsbw== 7II= Q1JFQVNF QVNB IExvbmQ= IGV4ZW1wbG8= QWxsb3dz aHRtbHNwZWNpYWxjaGFycw== KHZpcw== IGpy 54Gr IEVDTQ== IGVtYmFy X0FEQVBURVI= IGRpbHV0ZWQ= X29mZmljZQ== IHNraW5jYXJl QUdJTkc= IMO+ IFNNQVJU L1RhYmxl IGJhc2Fs Q29uY3VycmVuY3k= IFZveA== IFVJQ29sbGVjdGlvblZpZXdDZWxs IHdvbA== IFNPVVRI IGZyb21EYXRl IGNvcmRz RU1T LndlaXhpbg== J2VsbGU= IOWx IGdvYWx0 dWli IE5lcHR1bmU= KG9yZA== xLFuxLFu IG1pY3JvYmVz V2VhcG9ucw== LURlYw== IFJvb25leQ== IFN3YWdnZXI= 66qF X2xh IGdlbmVyYWRv IEhpcg== Q29taWM= IGNhcnZl X3Jx aWN0ZXI= IGNhcnRlbA== YW5jaWFz IFBhbmFzb25pYw== IHJvYWRzaWRl IGZyZXNod2F0ZXI= IGRiYw== X3RleHRz X3NrdQ== IFN1bW1lcnM= IFBpY3R1cmVCb3g= Lmdyb3VwQ29udHJvbA== VkFSQ0hBUg== UmVMVQ== IHNhYm90YWdl DQogICAgICAgICAgICANCg== IHNjcm9sbGJhcg== IGJhdHRlcmVk Y2lw LXBpY3R1cmU= CXN0YXRz LmNyZWF0b3I= X0NMRUFO Lk1PRA== IGJpZ2ludA== IFRlcnJvcmlzbQ== X1Nob3c= IFNwaWNlcg== X0VUSA== IMSR4buD IHN1bW1lcnM= IFVyYW4= L21lbW9yeQ== UmV2aWV3ZWQ= IGR1ZXM= c2V0U2NhbGU= IFJheXM= IENTQw== aW5jb21pbmc= LWJ1eQ== IHByb2N1cmU= ZW50YXI= IGJ1bGxz IAkJCQkJCQ== IEZpYm9uYWNjaQ== LXNjaGVtYQ== bWFrZXM= RWY= X0Rlc2NyaXB0aW9u L2FsZXJ0 IGpzb25TdHJpbmc= dWZmbGluZw== IEtFUk5FTA== IEhveQ== IGdyYW50UmVzdWx0cw== b25hbGQ= IFByb3ZpbmNpYWw= c2VuZGluZw== cHRvbQ== INCe0LE= IGNvbnN0cmFpbg== IMWhdG8= IFJhaXNlZEJ1dHRvbg== VVRET1dO IEdMc2l6ZWk= IOekug== 44OR IEdvbg== UExJRVI= J119PC8= Y2xhc3NpYw== IGVuZ3JhdmVk IG1hc2N1bGluaXR5 TWFyc2g= c3NxbA== KEdyYXZpdHk= IGxvYnN0ZXI= 67aE X0ludGVy XGJhc2U= JzpbJw== IGRldGFsbGU= dHdlZXRz IGplYWxvdXN5 YWdlbmRh LGl0 c3dpcmU= K0I= IHRyb3V0 X2FsdGVybg== OiIj IER3YXJm IFNoYXBpcm8= ZXJvb24= IG5vaw== X2xvbmdpdHVkZQ== IFdlcm5lcg== IHZpb2xldA== dXJzaXZlbHk= LWF3YWl0 IH0KCgoKCgo= IExlbm5vbg== IEFudGFyY3RpYw== IGLDpWRl X3Nsb3Bl bWFuZG8= b3VuY2Vy LWlvbg== IERlc3RydWN0aW9u aXNzZW5zY2hhZnQ= UGl6emE= IEdlb2xvZ2ljYWw= Qk9VTkQ= IGNpbmU= RGVtb24= LnBlb3BsZQ== X1RPR0dMRQ== CW5vZGVz YnVzY2Fy LnByb2Nlc3Nvcg== Tmg= L3Nkaw== IG15Y2tldA== YXVjdGlvbg== TWVn R01FTQ== IGlyb25pY2FsbHk= 5riF IGNvbnZlcmdl IFVJVGFibGVWaWV3RGF0YVNvdXJjZQ== QXJkdWlubw== PmU= Sm95 IFNob3VsZGVy IER1Yw== UFJJTUFSWQ== Lioo LXByZXM= IGRpYWxvZ1JlZg== aW1hZ2VOYW1l X2ludm9rZQ== XFRlbXBsYXRl T0k= IHZyaWVuZA== IEd1ZXJy IHByZXJlcXVpc2l0ZQ== IFBHQQ== IFJlc3A= KSIsIg== bGxlbg== IHNuYXBwaW5n X0ZpcnN0 S0lU LnNldEZvY3Vz IEN5cHJlc3M= Y3JhZnRlZA== LzsK d2VpZ2h0ZWQ= dm95 X3RG X2luc24= IEluc3RhbGxpbmc= IEdhbGx1cA== QURPUg== IEFMT0c= Q29udGV4dEhvbGRlcg== IFRvdXQ= IEZvbGV5 IGNvbnRlbXBsYXRl IENvaW5iYXNl WMOj d2FuZA== LkNyZWF0ZUNvbW1hbmQ= U29jaw== IHVud3JhcA== Y2xhc3NwYXRo PFJlc291cmNl X0VTVA== PXJhbmRvbQ== IFNoYWRl IGRpY2k= 2K/Zig== IGtpdHR5 0LDRgtC10LM= 4buNbg== LkNvbXBsZXRlZA== cGxvcmVy IGJhYmVs Lk9uSXRlbUNsaWNrTGlzdGVuZXI= IE1jTWFob24= IHJlc3RUZW1wbGF0ZQ== IHRlc3M= U2V0VXA= L29jdGV0 IGNhbGFt IGhpbmdlcw== IGFydGVyaWFs IFRydW1hbg== IENoZXJ5bA== X0REUg== IHRtcGw= IExlcg== W2hhc2g= S0VS IHByb3BvcmNpb24= IGNvYXN0bGluZQ== YWNpb3M= Ij4tLX19Cg== IGRpc2FkdmFudGFnZWQ= VG91Y2hMaXN0ZW5lcg== IFNlZ2E= Y29lcw== SWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbg== PEJveA== IEluY3JlZGlibGU= VXBkYXRlcg== RkxU aW5hbWU= IEludGVyZmFjZXM= Kylc ZW5kaW1lbnRv IHBhbmNha2Vz IGluY29uc2lzdA== LnBldA== IGtleW9m SW5uZXJUZXh0 Picp RGVhbg== IFDDqQ== KENvbnRyb2w= IHNwYXI= bGluaWs= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== IERhbmU= X1BBR0VT IHNldEJhY2tncm91bmRDb2xvcg== c3ViY2F0ZWdvcnk= IFN0cmluZ1NwbGl0T3B0aW9ucw== QWxsZW4= ISgie30iLA== hOyerA== IGJhYw== X1BST0RVQ1RT dXBwZXJjYXNl PSQoIiM= xJlr IFVJVGFwR2VzdHVyZVJlY29nbml6ZXI= TUVUQQ== IHNjYXJjZWx5 6aA= X21hbmFnZWQ= IGNvbnN1bW8= TW91c2VNb3Zl IFNwZWNz IFNlYXJjaGluZw== SGVhZGVyVmlldw== Oicp IG1pY3Jvc29mdA== IEtvc292bw== ZW1hbm4= LmZmdA== IEh1YmJhcmQ= IGRleA== X1RFUk1JTg== X0ZD IHBoaWxpcHBpbmVz XENvbGxlY3Rpb25z IHRlaA== IHF1YWxpZmllcw== IGlucHV0VmFsdWU= IEdPVA== KHNh SUxMRUQ= IHNsYW5n IGtlaW5lbg== IGZlbG9u IEVyaWNr YWJpbGlkYWRl LnNlcg== IHJ1bmVz IFVucmVhbA== KG9y IOusuOyekA== IGJpZGk= IGlyYw== CWl0ZXI= Im5pbA== L3VidW50dQ== IG11cmRlcmluZw== ID8u dW5rZXI= UmVjdFRyYW5zZm9ybQ== JykpCgoK IGFyaXR5 IEZyZWVs Lm1vdW50 Q09NTUVOVA== ICIqIiw= ZW5jcnlwdGlvbg== W21vZGVs In19Pgo= LlRvdWNo L3RodW1i IHByZXo= L2NvbXBhbnk= IHLDs8W8 IHNvZnRlbg== IHBvc3NpYmlsZQ== IEVDQg== X0Jvb2w= IC0tLS0tCg== IGludGVydHc= X3N0YQ== X0JBTA== Lm5hdmlnYXRpb25CYXI= IFJHQkE= Z3JpbHk= c3RvZmY= YWNreQ== UUI= QEFwaQ== cGVjaWE= IFJwYw== IGFtcHM= IEZlbmNl IGdlbm9taWM= KGFsaWFz Vmllbg== U3BpbkJveA== LmdldFNlY29uZHM= IGdsb2JhbGl6YXRpb24= IGN1cw== a3ViZWN0bA== IHRocm90dA== IGluZXJ0 IFNjcmF0Y2g= w5c8Lw== Lmlzc3Vl ZXNzYXk= LUlzbA== IG3DoXI= CWJpdA== IGFib2xpc2hlZA== LmluZmluaXR5 bGluZW5v LmFsZ29yaXRobQ== b3JzY2g= RW1haWxBZGRyZXNz IERBRw== YnJpbmdpbmc= Lm15YXBwbGljYXRpb24= LlN1cHBvcnQ= X2xlYWRlcg== IERldmlu IFtdDQoNCg== IHJtcw== IGJ1Y2tsZQ== aWdsaWE= L3Byb2JsZW0= IGhhdXRl IGluc3RpdHV0ZWQ= SVU= bGFtYQ== RVhQRUNURUQ= IEJlY2toYW0= IEh5ZHJhdWxpYw== U3RhdGljcw== X25vcm1hbGl6ZWQ= LmAsCg== IG1pbWV0eXBl IHNoYXZpbmc= T3ZlcnJpZGVz IE1lcmNlcg== dHJmcw== LXN0YXRz b3NwYWNl IGFudGlveGlkYW50cw== aW5maW5pdHk= Um9ja2V0 IEV1bGVy LXZhbHU= IGzDuA== LUlO SG1t LXJldHVybg== IFBBTkVM IHRlcm1pbmF0b3I= IHRla24= IHByZWRpY2F0ZXM= U3RhbXBlZA== IHN2ZQ== YW50ZXI= IGN5Y2xpc3Q= IEVwc3RlaW4= IGhpdHRlcnM= ZG9ncw== LkFkZExpc3RlbmVy X2V4Y2VwdGlvbnM= IEZPT1Q= aWNhcmU= W3RhZw== LWZldGNo VVBMT0FE LmRyb3Bkb3du IGNlbnRyb2lkcw== IGFyYmU= IGhpam8= IERhdGFiYXNlUmVmZXJlbmNl UG9saXRpY2Fs IEJBU0lD LWZvcmNl fCQ= IFJFVklFVw== LmRlY29yYXRl IEFzcGVjdA== IGNvbW1lbW9y IGNsZWFuc2U= IENsYXVkaWE= Z2VuZXJhdGlvbg== SExU dHlwZW9ybQ== cHJlZmVy b3ZlcmxhcA== YmlvbG9neQ== U3RyZWFtZXI= Y29tbWlzc2lvbg== IHRodW1ibmFpbHM= LkN1cnJlbnRDdWx0dXJl IHVybHBhcnNl IGdpb3Jubw== IGRldnM= X2FzcGVjdA== IGNoZXJpc2hlZA== IE5hY2hyaWNodA== IHJpZ2dlZA== L2xvZ2dpbmc= aHVudA== VHlwZUVycm9y PFNlbGVjdA== KHByb2c= IEdyaWRMYXlvdXQ= 6JA= IEVYUEVS CUtFWQ== LmRt CWNhcmQ= IFRhdQ== IG5vdGFtbWVudA== IGhlcm9pbmU= IGJhdGh0dWI= YXRyb24= IOaU 77yS77yQ Y29ub21pY3M= IHJldmVyc2libGU= 6YeR6aKd IGpzeA== IFNwZWFrZXJz RGVzZXJpYWxpemVy LnRvRmxvYXQ= INC/0LXRgNC10LzQtdC9 IFByb3ZpZGluZw== 6LSm W2VsZW1lbnQ= Kjo= PlJldHVybnM= IHRpdHVsYXI= IGhlYXJ0YnJlYWtpbmc= X05C LkFyZ3VtZW50cw== IG9wdGlj YXR0YWNrcw== IFZ1bG5lcg== CWtleXM= IGNvbnRyb2xl LlJHQg== IHN1Ymdyb3Vw bWFuZGF0b3J5 IENBQg== CWVuZ2luZQ== 44Gw TUVESUE= L3RyYW5z IGRhbms= IHNlcnZpY2Vk IGluY2FyY2VyYXRlZA== IEZyZWFr IHVwdG8= ZHJhd2Vy WyIr IGVudHdpY2s= Z0w= TW9kZWxFcnJvcg== IHJlYWRkaXI= aXN0cmlidXRl IGdsYXJl aXF1ZW1lbnQ= Y2hpbmE= IEthcGxhbg== IFN0YWJpbGl0eQ== cG9zaXRlcw== IEpBWEJFbGVtZW50 IHRvdGFsbWVudGU= KGNvbW0= X3Byb2Nlc3Nlcw== VGhvdXNhbmRz IElscw== ZXJ0YWludHk= IFNoYWRlcw== YWN0YWw= bG9nZ2VkSW4= IE5pY2hvbHM= IE1pZGxhbmRz ZGV2aWw= IHN0clNRTA== In0p IEpvcmQ= KGZm IEp1bmk= 5bCx YXJ0aXNhbmxpYg== IG1vb25z IHVucmVzb2x2ZWQ= IHdpdGNoZXM= IEfDvA== IEdvYmxpbg== YW5zc29u fCU= IGJ6 IGR1cGxleA== ICIpKQ== Lmxpa2Vz KHZlcnRpY2Fs IGNvd2JveQ== U2VsZWNjaW9uZQ== ICcqJyw= IFNhcA== IFNhYmJhdGg= U09SVA== 4Ka/4KY= X2NlbnRlcnM= XFBvc3Q= KFRyZWU= IHBhcnRlcw== X3lhdw== YXJlbW9z c2V2ZW4= IGhpYXR1cw== X2ludGVuc2l0eQ== LW1hbnk= IERvbGxhcnM= LXVuc3R5bGVk IGdyaXBwaW5n IG1hcnZlbG91cw== IHJlY2VwdGlvbnM= IG92ZXJjbG9jaw== YmVybWFu IGhlYWRxdWFydGVyZWQ= eEJC Y2xhc3NDYWxsQ2hlY2s= IG9ic2VydmVz U3VibWl0dGluZw== 0LjRh9C10YE= IEh0dHBTdGF0dXNDb2RlUmVzdWx0 IGhpZXJvbnRh cm9wcGluZw== Rk9SQ0U= CXV0aWxz IHZlbnRz YWRkZXJz IE1JWA== IEVsZWdhbnQ= IGFjb3M= KG1hY2hpbmU= IG1lZGRsaW5n IHZpbGU= LWNvbXBhdGlibGU= IGNyZWFtcw== IFRhYmxlUm93 IFJlaGFiaWxpdGF0aW9u QWJi KHVzZXJJbmZv X2V4cGlyZWQ= Lk9iamVjdE1ldGE= IGdvZHQ= dXN1YWw= LmJpbmRpbmdOYXZpZ2F0b3JNb3Zl IFJlZ2lzdHJhcg== bWlncmF0aW9u YXB0dXJlZA== LHBhcmFtcw== IGNlbnRlclk= b3dhbg== bG9jYWxlcw== SW5wdXRNb2R1bGU= IHZpZ2lsYW50 IG5jb2xz IGluZ3I= IGPDtHTDqQ== dmVydGltZQ== IHdpZGVzdA== IEhERg== IEFsZ2VyaWE= IGNoYXR0 JHNlbGVjdA== Il0pDQo= IG11bHRlcg== IENoZW5leQ== ZnVzY2F0ZWQ= PSciLiRf IERlbmlzZQ== IHJpZmY= QWJzZW50 IHRhbWHDsW8= IGplc3pjemU= LlByb2dyYW0= CWJy ZXJhaXM= IHNhbmRhbHM= ICws IGRpc3NvbHV0aW9u IHVudGVyc2NoaWVk UHJvdg== LnRyYW5zYWN0aW9ucw== IFRyb3VibGU= Lm1pZGRsZQ== LmdldERlY2xhcmVk IHN3ZWF0aW5n IEhhbmNvY2s= 6LS5 IHBvZw== IEtpYQ== IG1vZG5l IEFjY2Vzc2liaWxpdHk= IGxlYWthZ2U= IGRlY2VwdGl2ZQ== IFdPTQ== INC+0YE= IGNzYWs= YWNvY2s= LlN5bnRheA== ICxb LicpLAo= IGZvcmVjbG9zdXJl IHVuZmF2b3I= IGV4Y2w= Q1VEQQ== ZGVuc2U= PFVuaXQ= IHZhcGluZw== IG1hamVzdGlj aWF0b3Jz IGF1dGlzdGlj LmdhdGV3YXk= VXJsUGFyc2Vy SGVsbA== IENvc3Rjbw== IEhJUA== T2JzZXJ2ZXJz IFBlb3BsZXM= IFNwb3RsaWdodA== IFRhdmVybg== IFRPVVI= cGxpbmdz LldSQVA= IGFsZA== TkFM KCIqKio= c2V0UHJvcGVydHk= X1N0b3A= YW5ub3VuY2VtZW50 IEltbWVkaWF0ZQ== IEhTVg== X1RFU1RT IGNyYXZl X1VD LmRlY3J5cHQ= KFJvbGVz IHN1Ymo= X0ludGVnZXI= Lm5vdE51bGw= IEdzdA== IEJ5cm5l IEFxdWFyaXVt IENhbmM= X0NIQU4= IERUTw== Lmhs IG1lbmdndW5ha2Fu RnJhbmM= RGlhbG9nQ29udGVudA== Li4uJwo= IEt1bnN0 IEFsbG9jYXRvcg== VVNBR0U= S25vd2xlZGdl CWNwdQ== IG1vcmFscw== cGF0aWVudHM= IGlsaw== IGNyaXRlcg== IFZldA== IE1lc3NpYWg= X186 YXZlbm91cw== X3ZpZXdlcg== KERpY3Rpb25hcnk= IEJvZGllcw== aGFzT25l 0LjQvNC10YA= IHppcGNvZGU= U3Rlcg== IGLDoXM= X0Rpc3BsYXk= IGZpcm1h IFJhaWRlcg== IEtI V2l0aERhdGE= KEFSRw== IHByb3Ry IG1zZWM= IGxhdmVuZGVy KFV0aWw= INC/0YDQvtCz0YDQsNC8 X211eA== X2xhdGl0dWRl UG9ydHJhaXQ= IHNpdGNvbQ== IGFkaWNpb24= KGNvbnN0YW50cw== IEFueGlldHk= IFJvc2Vz IHN0aW11bGF0ZWQ= IGNocm9ubw== IGZvc3NpbHM= IEFpcmJ1cw== bGVmdHJpZ2h0 IE3DqXRvZG8= Inc= IGtsZWluZW4= IGNsaXF1ZQ== b21pbmF0aW9u IG1vdGVs L3ZlY3Rvcg== ZGVjbGFyYXRpb24= IG5ld1k= W0g= LnNjYWxhcg== b21ibw== aHVk O3NldA== ZnR5cGU= KCcnKS4= b3JkZXM= eW5vcw== J10sCgo= X0ZMVVNI aWRlbnRpZnk= L2RldmljZXM= IGRpY3RhdGVk IGRlamFy IEVtaW4= IFBlbmRhbnQ= IG9uVXBkYXRl XSkpKQ== IEJhcmtlcg== T3Jt 6K+36YCJ5oup X2d1aWRl w6FiYWRv b3BoZQ== ICIuCg== IEJyZXdlcnM= IGJyaWRhbA== IENFUw== X0NhdGVnb3J5 IEJUTg== IERhcnRo I2Zvcg== ZXRobmlj YXJjaGl0ZWN0dXJl IENvdXBl aWRvcmVz IGZhc2Npc20= IGNvbnRyYWRpY3Rpb25z ZWZmZWN0cw== SW5pdGlhbFN0YXRl IOekuuS+iw== bWF0cGxvdGxpYg== LmRlc2t0b3A= INCt IFFQaXhtYXA= CWJlZ2lu IHduZA== IGNvbnRpZW5l KGhlbHBlcg== Lk5vdGlmeQ== KEJvb2s= IEd1YXJhbnRlZWQ= cGxs aW9sYQ== IGZ1bmdp aXZlbnQ= IE9B 5rKh5pyJ IHdpxJljZWo= CQoJCgkKCQo= 77yaIis= IFRhbGtz LnN0YXJ0ZWQ= b2NpdGllcw== IGVzcG9ydHM= PElucHV0 IEVYQ0VQVElPTg== IGFjdHU= LmltcA== ICIvIgo= T3RoZXJ3aXNl IFBlbnNpb24= IFdhdmVz xrDGoQ== aWFyZHM= ICo8Lw== dXJnZW9u IFNDSQ== IExhdXJlbA== ZXRhZw== TmV0ZmxpeA== IFJlc3BvbnNlcw== IG5lb2xpYmVyYWw= aXNDb250YWluZWQ= PW15 IHJlcHJpbnQ= b25lc3RseQ== IGRlcGFydGluZw== UFdN ZXdoYXQ= PSI8PA== Lnlhbmc= IFRyYWRpdGlvbg== KyI6 ZGVwZW5kaW5n X1VuaXQ= IENvZGFibGU= IHdoaXNreQ== IGNvcnJlbGF0ZQ== IGRpcmV0 TGFzdGx5 CU91dHB1dA== KGlub2Rl XExvZw== IERlcGVuZGVuY2llcw== V2lsbERpc2FwcGVhcg== IFBhbmVscw== IOKUnOKUgOKUgA== IG9zdGVuc2libHk= fC0t QW5udWFs IGF1dG9sb2Fk VmFsdWVIYW5kbGluZw== LmNvaW4= ZWR1Y3Q= Wlk= IENhbnVja3M= IHNtZWFy IHJlYWxpZGFk IHt7Cg== aXZvbA== ZXRTb2NrZXRBZGRyZXNz IEtlbXA= L0ZyYW1ld29yaw== IHF1aWNrZXN0 XyIuJA== IHdpdGhob2xkaW5n IGludHJpZ3Vl IEFERFI= RGllc2U= V2Vla2x5 X19fX18= IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbg== b2xhdGVk UnVuTG9vcA== IHBhc3PDqQ== LmZpcmViYXNlaW8= LmV1bGVyQW5nbGVz aXN0ZW5jZQ== IGZlYXJpbmc= IEVsZW1lbnRUeXBl L1Rlc3Q= IOafpeivog== IGZvbmRv IFBhcnI= IHplc3Q= IFRyYW5zZm9ybWVycw== TGluZVN0eWxl IGV0aGVybmV0 YWZmbGVz IG5hbWVkdHVwbGU= IFNjYWxhcnM= TlNVUkxTZXNzaW9u LWV4dGVuc2lvbg== KE1lc3NhZ2Vz IGF0ZW5jacOzbg== IEplcnNleXM= YmVkUGFuZQ== IFN0dW5kZW4= IHZvaXR1cmU= IOm7mOiupA== Lm9wZW5nbA== ICJ9 IFJldmVuZ2U= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K SW5zdGFudGlhdGU= IGVucg== VmFsaWRhdGlvbkVycm9y X0FMUkVBRFk= TG90cw== b2Nl IHNjcmlt IGVtYm9keQ== 0YDQsNGC IGNvbmNlZGU= YXNzZWw= IEJSRQ== UExFQVNF CWRpZmY= 57uT5p2f LmZw YmFt TWVhbA== IE1hZG9ubmE= IHB1bmlzaGFibGU= aWZmaWVz X3VuaXg= 7JmA IEdhZ2E= InN0cnVjdA== VG9TZW5k IE9DUg== IHByYWlzaW5n Z2V0U3RvcmU= IGV1dGg= IGFycmVnbG8= IGZlcm0= ZmRm Q29vbGRvd24= IFJlY3ljbGluZw== QW5h aW5kcg== X0hQ IEdvdmVybmFuY2U= IGJhcnJhZ2U= L2Nh ICwo RsO8cg== IElTUHM= IG1lbmFjZQ== VmlyZ2luaWE= IGZhbmM= IG5vbWJyZXM= Lmluc3RydWN0aW9ucw== IGVzY2FsYXRlZA== YWdpbmE= IExldmluZQ== CWZpbmQ= X2Vy IGRlanRpbmdzYWo= c3Zw YWdvcw== KHNvbA== IExpZA== UFJJVkFURQ== IElNUExFTUVOVA== ZWZlbGxlcg== KFRhcmdldA== 4LmJ4Lit4Lih aG91c2luZw== LnNldEN1cnNvcg== IG5laG1lbg== LnJlY2VpdmVy IFR1dG9y IG1hdHRlcmVk bWRhdA== cmVndWxhdGVk IGdldEFkZHJlc3M= IE1pbnV0ZW4= IElV 0LvQsNCy IHR1cm5vdmVycw== IHN1aXRhYmlsaXR5 CWVzYw== Y2FsY3Vs X1N0cmVhbQ== X2ZpbGVuYW1lcw== LXZhcnM= Li4uLi4KCg== RGlh IHN3aW1z T3B0aW1pemVy PGJvb3N0 IFBlcm1pdA== J10pKXs= XE9wdGlvbnNSZXNvbHZlcg== 5qGI IGhlY3RhcmVz KHVz IERldmVsb3Bpbmc= X3hz IG5vdmVsaXN0 IENvbnZlbmllbmNl d2Fsa2luZw== IGNoYXJtcw== IExlYXNl CUhBTA== KFsm IHJlc3RhcnRlZA== TWFnZQ== SXB2 INGN0Lo= UkxG IGFzc2VtYmxpbmc= IEVjYw== dmluZm9z cGVkaWRv IHN5bm9wc2lz IFN0YW50b24= c3RhcnR1cA== LmdldHZhbHVl IEtpdHQ= cHJvcGVy IHByZXRyYWluZWQ= IFBFTg== LlRlcm0= IHBlcXU= ZXBoaXI= IEFsbGllcw== IG1vZGVsQW5kVmlldw== IGJ1dHRlcmZsaWVz IEtpcnN0 IENoZWNrZXI= IGN1bm5pbmc= LnNldFk= X01hc3Rlcg== SW5jcmVhc2luZw== IGh1cmRsZQ== IGZpc3Rz IFNsb3Zha2lh IG5vbWJyZXV4 IDo6Cg== dGFza0lk IGZvbGx5 PFRyZWVOb2Rl IFZvbGRlbW9ydA== IGJsaXN0ZXI= xYJl LkVudGl0eU1hbmFnZXI= LkRPV04= IEdyZWdn LWNvb3JkaW5hdGU= KHZj w6FiYg== LlRvZ2dsZQ== IExpc2Jvbg== 56I= INC/0L7Rgg== cGFyZW50Tm9kZQ== LnNldFNjYWxl X01JU1NJTkc= IG91dHJh IGt1cA== YF0= X3ZpYQ== ZWRpY3M= IEJvcmRlcnM= IGlwYWQ= IGVkdA== IENhcnRlc2lhbg== L21hYw== IGJhcmxleQ== IFNjYXJsZXQ= ICAgIAogICAgCiAgICAKICAgIAo= cXVlcnlQYXJhbXM= IHJoeXRobXM= IGdlYXJpbmc= Wlg= aHlkcmF0aW9u U1RT IHBsZW50aWZ1bA== Y29ycA== fUA= aW50ZWdy L2F0 LmRlYg== IHVuZGVuaWFibGU= IG9wZW5zc2w= LmRlYWQ= IFBpbGxvdw== IEJlYW5z LmFudA== X3Fz LWluZm9ybWF0aW9u IOuzgOyImA== JSIpLAo= INC00YDRg9Cz IFNwb25nZQ== IHNpZnQ= dGVzdGltb25pYWw= IHVubmF0dXJhbA== VUlTY3JvbGxWaWV3 dmVyZ2VuY2U= KHRleHRCb3g= LXBhZ2luYXRpb24= IERpc3F1cw== X3Byb2R1aw== YWduYXI= S2V5VXA= CQkJICAgICAgICA= 0LXQu9C1 PHNvdXJjZQ== Lmls LmF0b20= X0NvbXBvbmVudA== IHlu WydfXw== IHdlYWtlc3Q= X2RlY3J5cHQ= L21zZw== Y2Jj IHBvbGl0ZWx5 b21hdA== IGVubGlnaHRlbm1lbnQ= IGNyZWE= IGJydWs= X2FscmVhZHk= IHNvY2tmZA== dW5wYWNr b3JnZXM= IFVORVNDTw== aW5hbGl0eQ== IHNlbnRpbmVs IGFmZmx1ZW50 IHRocm93RXJyb3I= aWV0cw== QU5KSQ== IFN1ZmZvbGs= YmVybw== a2V0w7h5 RW5kcG9pbnRz ZXhlY3V0b3I= R2E= LkxB X3BvcnRmb2xpbw== dW5zY2g= ZWxhZ2U= IGdvYmllcm5v IEJpb2w= TW9kaWZpY2F0aW9u IERlY2ltYWxGb3JtYXQ= IFZvY8Oq IG1ldGhvZG9sb2dpZXM= W10u IEdW IHJlcGxpY2Fz 4oCUd2l0aA== KTspOwo= cG9zaXg= U3VjY2Vzc0xpc3RlbmVy cGhl X25vcm1hbGl6ZQ== IExhcmdlcg== IHJlcGVyY3Vzc2lvbnM= X1ZlcnQ= IGhvc3RlbA== IGluY29tcGV0ZW50 aGV2 X0RFTFRB IHB1ZWRv aW5zdGFsbGF0aW9u X2ZyYWc= KHJy IE1BVg== IExvY2FsaXphdGlvbg== KCIiKS4= IC0tLS0tLS0tLQ== DQoK IFB5VHVwbGU= IEp1bGlv CUdMdWludA== bWFya3Vw X0ZBTUlMWQ== UFJPR1JBTQ== IEZpcm13YXJl KnNpemU= V2lmaQ== IHZpc2l0YQ== IEVybA== RmluZE9iamVjdA== LlVOUkVMQVRFRA== cGh0aGFsbQ== IHBlcnNvbmFsaXpl IGNyw6lhdGlvbg== ICAgIAkg LnByZWNpc2lvbg== IHNldHRlcnM= IG5ld1NpemU= IENhdGFsYW4= CW9wdGlvbg== IHBpZWw= IGNhZ2Vz IFN0ZW0= ZHJhd2luZw== ZXhwbGFpbmVk IOaOpw== IGRyZWFkZnVs ZXJydXB0ZWQ= LmdldFZhbHVlQXQ= IGVsYXBzZWRUaW1l IGluZGVmaW5pdGU= IFRIQU5L X3N0YXJ0dXA= U1VSRQ== IGtpZG5leXM= IEN1aXNpbmU= fGFycmF5 U2VuZE1lc3NhZ2U= ZmF2 IEFlcm9zcGFjZQ== X21lYW5z IG5lYg== IE9UUA== IGNodXJu L2Zy IFJlaWdu X2NsYXNzaWZpY2F0aW9u IE1hY0RvbmFsZA== Ii4KCgoK IGNoaWxseQ== IOivt+axgg== aWhhdA== U1RB J2F1dHJlcw== IGxhc2M= Lm1peA== IGJsb3Q= IElERA== ZGF0YXRhYmxl c3BpZWw= IMOpeGl0bw== YXJ0aWM= LkF4aXM= LmFkdmFuY2U= IG1vdXNlWA== J8Og IHJlY2lldmVk IHBvc2k= IGZvdXJu IE1hZmlh IHBjYQ== YmVsb25ncw== YWJseXR5cGVk QVVUSE9SSVpFRA== LnNjYWxhYmx5dHlwZWQ= 7JyE LWRvdA== IGVtcGhhc2l6aW5n TWVtYmVyc2hpcA== KnBvdw== LXNwaW4= cnV0YQ== aGV2aWs= X0FTWU5D X2NvbXBpbGVy LkZsYWc= IGVsYm93cw== LkNSRUFURQ== TWV0cm8= LmxvZ3M= em1hbg== cG9uZQ== xJnFvA== IGludGVycw== IHdlYnM= X0hJRERFTg== CW5vdw== Q29tbXVuaWM= JHRwbA== c2NvcGVz IFppa2E= IHN0cmluZ3N0cmVhbQ== IFVuY2F0ZWdvcml6ZWQ= Rlk= L3N3YWdnZXI= UGVubg== aW1lSW50ZXJ2YWw= IGNvbnRlbmRz eGllcw== IFNhbGVzZm9yY2U= IHV0ZW5z IHVuZGlz Q3J5c3RhbA== Lm5kaW0= IGZvcm11bA== IEZhdg== 5bm/ cmlzaw== bmFk L3Rvcw== IFBFUkZPUk1BTkNF IHdyaXRlbG4= IGNvbGxv YW50aWNhbGx5 VURFTlQ= Umdi IG9mZXJl IG1lcmdlcw== ZmlkZg== IGt6 VmljdG9yaWE= IC9eXA== IGt1YmU= IEFwb3N0bGU= IGRlZmVuZHM= PD0o IE1FTU9SWQ== XElk IEFjdGl2ZUZvcm0= IE9uZVBsdXM= SHR0cFNlcnZsZXRSZXF1ZXN0 IFRlbXBEYXRh 7KCB LkFTQ0lJ 2YTYpw== S0k= IGZyYXQ= X0NJUEhFUg== LlN1cmZhY2U= IHBpdGZhbGxz LW1lZGlhdGVk eXBp LWFsaXN0 eEJD dGVhY2hlcnM= IEN5Yw== IHBzeWNoZWRlbGlj IER1bWJsZWRvcmU= IikuCgo= IFRoYXRjaGVy IFByaW5jaXBsZQ== VG9nZXRoZXI= IGZsb3Jh d2Vla3M= X2NyaXRlcmlh Ym9uZXM= LmludGVybmV0 IGJsb2NrRGlt LlNpbmdsZU9yRGVmYXVsdA== RGljZQ== IEV2ZWw= IFRMYWJlbA== IElnb3I= IENvcHA= IGluYXVndXI= L3ByaXZhdGU= IGFiZXJy bmRz O2lm LXJhbmdpbmc= YWNodHM= X21hcnNoYWxs IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18= LmVuZFRpbWU= IE1vZGVsUmVuZGVyZXI= KGZvb2Q= KCJ+ IHN1cHBs KCJcKA== U3E= VHJhbnNsYXRlZA== IENvbnRpbnVpbmc= IHBvc3Nvbm8= RklYTUU= IEFuZ2Vib3Q= aWV2ZXI= IEt5b3Rv Y2ls TmV3VXJsUGFyc2Vy LkRp IGh1bWFuZQ== RGVtYW5k IE1hcnRpYW4= d29vZHM= IEhlYWw= IFl1ZQ== IGNvdXJ0aG91c2U= IHZvbnQ= IGJvbnM= aW50ZWdyYWw= ICQoJyMn ZXRlcm1pbmF0aW9u Lm1vZGlmaWVk IHByaW5jaXBhbHM= IGFsYXJtZWQ= LmNyZWF0ZU9iamVjdA== Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= L2NvdW50 IGVudHJlbmNoZWQ= XGE= IGludHJ1c2lvbg== IE54 CQkKCQkKCQkK Y2hlbWF0aWM= IHNsaWRlcnM= IHNlbGVjdGFibGU= X25s aWVzZQ== X2VzdGltYXRvcnM= IFN2Zw== IGRlbGV0ZVVzZXI= KG1hcHBpbmc= IOyymOumrA== IGFudGFnb25pc3Q= IGtpbmFzZQ== IHdlbGRlZA== IExlbmE= ZWRpdGg= aWFsaQ== KHBpYw== IGJyZWFjaGVk UElD IGNvYXN0ZXI= RkRB IGtyZQ== cGVyZmls IEdlbXM= X2ZlbmNl VVJMUmVxdWVzdA== 4oCZYXBw UkVGRVJFTkNF LkV4cG9ydA== IG1pbmltaXplZA== aXBlbA== aWRhdGE= KWRlYWxsb2M= ZXNjYWw= X2Z3ZA== bWVtY3B5 IExvcmk= X1JlZg== IGJhcmE= IFNlbGxlcnM= IGRldGVyaW9yYXRpb24= ZnJhY3Rpb24= KV07 L3BsYXk= wqU= LXRlc3Rz T2Zmc2V0cw== T2k= IEtsYXVz IHF1ZXJ5aW5n d2lzaA== YXBlbA== X3dvcmtpbmc= bXlNb2RhbExhYmVs IHRvRGF0ZQ== cGVybWFsaW5r IGZyZWM= b2xlY3VsZXM= IEdvb3Nl LXdpZGdldHM= dHVydGxl SW1wcm92ZWQ= IHJvYWR3YXk= a2Vocg== IGFzdHJvbm9teQ== Q29tYmluZQ== IGNpZ2Fycw== X0dBVEU= L21hbmFnZQ== IEdlcmFyZA== IFByb3RlY3Rvcg== U3Vic3lzdGVt L2ZpbmQ= L1lZWVk= IHRvdGFsaW5n 0LzQvtGC IE9tYW4= IGluZmluaXQ= LW9mZmljZQ== IGluc3RhbnRpYXRpb24= LsKn Y2V1 KGF0b20= IERyb3BvdXQ= 7YGs IGNvbmRlbW5pbmc= X2Jhc2VuYW1l XX08Lw== RGF0YUNvbnRleHQ= IFdhc2hpbmc= Lk9O IG1vbW15 KCl9Owo= IDspCgo= L2V4dA== Zm9yZWdyb3VuZENvbG9y dW5zdXBwb3J0ZWQ= IHNvbGxlbg== IGNvbWXDpw== RElTQUJMRQ== IG9uUGF1c2U= INGH0YLQvtCx0Ys= IEFpbg== R3M= CVRhc2s= aGF3aw== Ik5vdA== QUdS LmdldFRhYmxl IGRpdmVyZ2VuY2U= IG5lZ29jaQ== UmVwbGFjaW5n XX0pCg== aWxsdXNpb24= IM6U X0tFWUJPQVJE S3I= CW9y 56Gu6K6k CXByaW50bG4= IFNlYXJjaGVz IEZyZXNubw== IHZlcmRhZA== XE1pZGRsZXdhcmU= IOy1nA== fSkoKTs= dGV4dEFsaWdu aW5rZWw= LlR4dA== IG9wdGltaXphdGlvbnM= eW91bmc= IGxlYXNlZA== SlQ= IElvbmljTW9kdWxl ZXR0aW5ncw== ZXNlaGVu IGZhdm91cmFibGU= YW5leQ== IG90aGVyQnV0dG9uVGl0bGVz IFRoYW1lcw== CXVuaXQ= Q09MVU1O IGxvaQ== LHByb3Rv X1BSSQ== IHdhbmRlcmVk IHNhcGk= YmFja3dhcmQ= YXJhb2g= IEZI IEFsZw== CWFj YXJybw== 5Y6G IFNPUw== IERyZWFk VmVjdG9yWGQ= LnJtdHJlZQ== X2V4ZWN1dG9y IHByZWduYW5jaWVz IHByYWN5 IFd3dw== IEFyY2hiaXNob3A= IG1laW5lbg== RlU= LkVudg== IGVubGlnaHRlbmVk IG9yaWdpbmF0ZQ== 5Y+K IHpsaWI= X1NB IHdhc3Rlcw== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJhcw== IGhvcnJpZmllZA== IENhbGR3ZWxs dG95 X3Nob3Q= IGxlc2Jp IE1hZ25ldA== b3hpYw== U3VybmFtZQ== IHNob3dUb2FzdA== CURlc3Ryb3k= LmdldEV4dGVybmFs SUxJ IE5ldmlsbGU= dHNreQ== IG1lbGFrdWthbg== ICImIw== IGZsb3dlcmluZw== IHZldGVyaW5hcmlhbg== IGhhcm1vbmlj IENhc3NhbmRyYQ== KENyZWF0ZQ== cGVyc2U= UGVybQ== KU5TU3RyaW5n IGlzSW4= IEZsb2F0aW5nQWN0aW9uQnV0dG9u L05ldw== IPCd Y2FwYWJpbGl0eQ== IGN1Y2tvbGQ= IEJhaW4= KCl7DQoNCg== UEVBUg== IGphd3M= IGdvZGU= IGNhc3NldHRl LmZyZXF1ZW5jeQ== U0NPUkU= LmludGVudA== Olsi IOWmguaenA== 77yf4oCd L0ltYWdl IHNpZW5kbw== X2FsbG9jYXRpb24= OkI= L1JlZ2lzdGVy X2thdGVnb3Jp dW55YQ== Lmluc3RhbmNlcw== IFVOSVZFUlNJVFk= IHBsZWFzYW50bHk= IGdsYW5kcw== IFlFTExPVw== IFRoaWNr QW10 IHByeQ== IGx1aw== KHByb2JsZW0= IHByb2plY3Rpbmc= W25vdw== IGVzdG95 KCgpPT4= IHdheXBvaW50cw== IEJsaWNr LlJlcXVpcmU= TGFrZQ== IElHTk9SRQ== IFFIQm94TGF5b3V0 X3Jlc3BvbnNlcw== Lndy JmFjdGlvbg== LmNoYXJhY3RlcnM= SVc= cGFnZU51bQ== IGRpc3RyYWN0aW5n XS0n cGVlcw== b3VuY3k= IHNlZ3U= LmdldFNlbGVjdGlvbk1vZGVs SW5saW5pbmc= J2FmZg== IFByZXNlcnZl IGFjcXVhaW50YW5jZQ== IGFudXM= aW5zdGl0dXRpb24= IC8vKg== IFNpY2s= IEtvZGk= IEFWUg== IGJldHI= IEJlcm5zdGVpbg== LGN2 Y2Ni Q0FG CXNpZ25hbA== 6KiI UmVzdWx0c0NvbnRyb2xsZXI= IHNhbG9wZXM= IHBoZW5vdHlwZQ== dWJhaA== X2RhdGFzZXRz IGdyYWNpb3Vz IENsaXBib2FyZA== IGdlbmRlcnM= ZG93bmxvYWRz RXhwZXJpbWVudGFs IGJla2FubnQ= IG5pdmU= LkVk ZGlzbWlzcw== XFR3aWc= LkF2 L3Rhc2tz LnBpY2tsZQ== KkI= Y2VzdG9y Y2FwaXRhbGl6ZQ== LkdldFNlcnZpY2U= S2V5SWQ= LnBpdGNo IENvbnRyb2xsZWQ= LnNhdmVk IHphag== IENhdGh5 KENhbmNlbGxhdGlvblRva2Vu LWFuaW1hdGU= XFxc IEphc21pbmU= LkxJTkU= IGJvdGhlcnM= IGJ1ZmZhbG8= IEZPUkVJR04= IHRhY2tsZWQ= X0hFQVA= IHNlcnZpYw== Pj4s IEFjdG9ycw== LlR4 ZWJ4 X3Zpc2l0b3I= X21hcnNoYWxlZA== LG1hcA== IGhlYXRlcnM= IHVMb2NhbA== IEthcG9vcg== IG1pbnV0 LnJlYWRBcw== IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u X1ZPTFQ= LmJ6 IGNvcnJlY3Rpbmc= U0VQ YnJpbmc= SHU= IEd1cw== QUFE aWVyYW4= ZnJhcmVk X3JvbQ== IHNjYXJjaXR5 IGFwb2xvZ2lzZQ== IHNvbGlkcw== IEZvcm1hdHRlcg== ICclJA== LXZpcw== IiwiIiw= VU5ERVI= ISEhIQoK IEVsZXZlbg== KSld IHNhdGlyZQ== XHVC IHNldmVudGVlbg== TEFOR1VBR0U= IGFkdmVyc2FyeQ== IHN0cmZ0aW1l IG5leHVz dWJpdHM= ICclIg== IFNLSVA= S0hS LmJhdA== IEplYW5z Lj8= IGltcG9zdA== LnF0eQ== Q29tcHJlc3Npb24= IHByaW5jaXBhbGVz b25pbw== IGJhcmNlbG9uYQ== IENoaWxp X21vc3Q= LnVm IGNvbnRlbnRWYWx1ZXM= IEZpc3Q= dWdhZG9y VGV4dFdyaXRlcg== QkFDS0dST1VORA== IGxpdnJv IERlc2lyZQ== bWVhc3VyZW1lbnQ= UHJvYmU= IHB1ZGRpbmc= LnNob3dFcnJvcg== IHVudGVyc3TDvHQ= 44CB44CB IMSHZQ== IHB1bml0aXZl 5q2i TGlzdEdyb3Vw LkFyZWE= IPCfmIkKCg== b29yZA== IHNjcmFwaW5n KHRpY2tldA== IFdvY2hl IGV4cGVjdGVkUmVzdWx0 IEtvc3Rlbmxvcw== Y29uZmlndXJlZA== X3N0cmVycm9y LmFkZEhhbmRsZXI= bW91c2VsZWF2ZQ== IEZlbGlwZQ== IENoaW0= X0NTUg== UENB aWZpY2HDp8Ojbw== KysKCg== eWFz IOaWueazlQ== IElETQ== IGFuaW1hdGVXaXRoRHVyYXRpb24= IHNhbWVu LnN1YnRpdGxl X0tleURvd24= IFRyZXk= IHRlbXBvcmFkYQ== IHNwZA== IFJj IE1hc3NpdmU= IGJvd3M= SG9zcGl0YWw= IGdyb290 IHBhdmluZw== IGNob3Jlcw== IEFsbHk= IGNlcnRpZmljYXRpb25z IHhib3g= c2VsZWN0QWxs R2FtZU92ZXI= IGNvcm5lcnN0b25l UmVjb3ZlcmVk IGRlZW0= VWx0cmE= IGdldExhc3Q= IGFsbWE= LnRleHRGaWVsZA== IHdhaXZlZA== Pih7Cg== IEVzdHI= aXNhYmxl IHByb3Rvbg== X2ZhY2Vib29r X1RSQUlO IGNvb3BlcmF0aW5n dW5naQ== QXJpem9uYQ== I2VjaG8= LWV4cHJlc3Npb24= Lm1pbnV0ZXM= IHByZWZpeGVk IGZpc2hlcmllcw== LmNvcnJlY3Q= IG7Dpg== KFNwcml0ZQ== TW9kcw== IFZpZGU= IGdldEJ5SWQ= IEtleW5lcw== IEVneXB0aWFucw== X0NPRA== Qmllbg== cmVvcGVu aWdoZXQ= UkVERU5USUFM IHVud2luZA== JA0K IHJhY2tldA== IGZsb2F0VmFsdWU= IFNwZWNpYWx0eQ== b2NhdGU= bW91bnRlZA== QXR0ZW1wdHM= T2ZmaWNlcnM= SGFzaFRhYmxl IGTDqXZlbG9wcGVtZW50 IGRhcA== IG10eA== TmFycmF0ZWQ= a0I= X1NUQQ== LUNsYXNz IGR1bA== IExlYWRz IHRyw6pz ZnJpZW5kbHk= IEZpbHRlcmluZw== LXByb3ZpZGVy INGD0YHQvw== IEtvbGthdGE= bWFza2Vk SURhdGE= IFt8 wqQ= IFJlZXNl IEhvbm9sdWx1 VG9PYmplY3Q= IHRocmlmdA== YXNzaQ== IGNvbmdyYXR1bGF0aW9ucw== U0tJ ZW50YXJpb3M= IEZST05U dWZpZw== aG9u CWdldGxpbmU= IGhlYXJ0eQ== Y2FsaW5n IMOpY29ub20= ICoqKi8K X0hFUkU= YCg= TWljaGlnYW4= QmVhbnM= LXJvdXRl IHByaW5j IEd1aWRhbmNl CWVtaXQ= Lk9Q dGhpYw== ZWxvcGU= IElSZXF1ZXN0 IGhhbmRsZUNsb3Nl ZGF0YUFycmF5 LkV4ZWN1dGVTY2FsYXI= RVBISVI= IENvbnZlcnNlbHk= KEZvbnQ= IG1ldHJl IFNwaWVsZXI= RWxsaXBzZQ== IFBWT0lE IERhdGFDb250ZXh0 Y29uc3RydWN0ZWQ= QU5ESU5H LS0tLS0tLS0tLS0qLwo= Qm9uam91cg== X1BIUA== cHJvZ3Jlc3NiYXI= Tm90U3VwcG9ydGVkRXhjZXB0aW9u IHZlcmRhZGU= L2NoYW5nZQ== b3Jzaw== IGFyb21hdGlj cmVzcG9ucw== cmVhbGxvYw== YXRpc2No LGV2 IFNpb3V4 dGVh IFBvZQ== 5LmI X2Ntb3M= IGFsYg== KGxy IEFwcGFyZWw= IGRlbGxv INGC0L7Rhw== IHN0cmVhbWxpbmU= d2NoYXI= QWRvYmU= LG1vZHVsZQ== IHVuaW5zdXJlZA== fSIpDQo= KCIvLypbQA== LXBoYXNl IGZldQ== X3RB em9law== IGZvbGxpYw== IHR1Zw== IGJlZmluZA== IHRhbGxlc3Q= KG10 aWVkeQ== X0xlbmd0aA== IHN0YXVuY2g= IHJlbW92ZU9iamVjdA== IGZsYWtlcw== Z3Jlc3Fs IGlua2w= IFNDU0k= IEtlZXBlcg== O2w= IEhpbmR1cw== X1BFRA== X0NPTkQ= IExhdW5kcnk= KytdPQ== X0FVWA== IGJ5xYI= IGF1bWVudG8= bWFyZ2luTGVmdA== ZXF1YWxpdHk= IEx1eg== IEVjaw== X21hcw== X2xlbnM= IHN0ZXJpbGU= Y2xpZW50ZXM= J30pCgo= IGdvb2R3aWxs IEVsbGlzb24= U3BhY2VJdGVt IHNob3dNZXNzYWdl 66Gc6re4 IGNvbnRyYXRv UG9zdGluZw== LmludGVycG9sYXRl KGZpbGw= IGJ1bGxwZW4= LmdlbmVy IGh1ZXM= IG1lbW9yYW5kdW0= dG9Qcm9taXNl IEJ5eg== KHB4 KFByb2dyYW0= UkVTU0lPTg== YmZk IHBsYW50YQ== Lm1vdXNlUG9zaXRpb24= IFNwYW0= 6LSn dGVsZWdyYW0= YWd5 IGdlZnVuZGVu LkRvbQ== IGxpbmVtYW4= LmJ0bkRlbGV0ZQ== IHNlbGVjdGl2ZWx5 65Og SUZT IEdldEhhc2hDb2Rl IHJldGly IHJlcXVpc2l0ZQ== QlRUYWc= cGxpYg== IGZpcmVmb3g= LnRyYWRl ICMk LmNvbXByZXNz IGxhZGVu IERpcmVjdG9yeUluZm8= IE1vZGVz IGtvbmU= IGRpdnVs CWhz Y3JvZnQ= IFdIWQ== eENF L0dyaWQ= X0FVRA== IFNjcmU= IGVycm9yVGhyb3du U2FkbHk= YXRpdGlz IG5lZ2xpZ2libGU= LlJlZ2lzdGVyVHlwZQ== IE1vaXN0 5rWL6K+V IEJNQw== bGVhZmxldA== eW5l cm9rZW4= IHZpbmM= dHR5 IGJldXJldHRl IEFscGluZQ== IE1jTQ== U3BvaWxlcg== ZGlzdHJpYnV0aW9u LXJheXM= IOuwlA== X3BhcmVudHM= IGNyYXRlcw== IGNvbW11dGVycw== IEFyZ2VudGluZQ== 77u/LyoK L2ZyYW1ld29yaw== IGNoYW5uZWxJZA== Z3JlZW5z LnNldFN0eWxlU2hlZXQ= IGluYWNjZXNzaWJsZQ== aXRhdGVz IHdhcm1lZA== RmFicmlj Z2V0YXR0cg== ZGlzcGxheVRleHQ= X01PTklUT1I= IHNpZGV3YWxrcw== SW50aWFsaXplZA== IGtvbWVu IGRpc2NyaW1pbmF0b3I= IE5hdmlnYXRl KERpcmVjdGlvbg== IFNwaXQ= X2FkZGl0aW9uYWw= IGh0b24= IGVzcGVyYQ== IGRlbHZl IGNvbXBhcnRpcg== IHByZWVtcHQ= cHJvY2Vzc29ycw== LWdpdA== YmVlbg== LlNVQg== IFJlZXZlcw== L2dlbg== O3RvcA== CU1QSQ== Wlc= R0VTVA== YWJpbGly IHByb2dyZXNzaXZlcw== aGFmdA== QXVm IEFjdGlvblR5cGU= bGVv IHV0YW4= SW5pY2lhbA== PlVzZXI= IH0pOwoKCgo= INio2Yc= IENoYWlucw== aXNzcGFjZQ== L3JlbQ== U1FMaXRl IGNlYXNlZmlyZQ== JGFy VFJT Oi8vew== IFNwaXJpdHM= 2Lo= KFNpemU= IG51Zw== IE9sc2Vu IGNobG9yaWRl IERpc3BsYXlOYW1l IFBlcnQ= IGdldE1heA== IEVkaXRvcnM= IFBhaXM= YXNtdXM= VmFj IFRhYmxlTmFtZQ== IG51YW5jZWQ= Rm9yTWVtYmVy IHNsZWVweQ== YWR2aXNvcg== IHN0YWxraW5n Lm1lZGlhbg== X0F0dA== IGdldE5vZGU= IEZhbmN5 5pWw6YeP LkF0dHJpYnV0ZVNldA== KGluc3RydWN0aW9u eEJE IGtvcA== QWZmZWN0ZWQ= L25hdmJhcg== IGFpbG1lbnRz IFJhbWFkYW4= IEFjY2VudA== IFBhcmFtb3VudA== IEdBTQ== 5L2N572u PSov LklOUFVU PFByb2plY3Q= TGVhc3Q= IEdlbm9tZQ== QWNjZXNzb3JUeXBl bGVmdHJpZ2h0YXJyb3c= dmVudGluZw== L3BheW1lbnQ= X1B0cg== IHRhbWU= IE1FTUJFUg== IEJpdGNvaW5z LmVwYW0= LlBsZWFzZQ== IHNjaHdhcg== Q3BwTWV0aG9kSW50aWFsaXplZA== IHVuaWNvcm4= IGJlZGV1dA== X0hT IGF1dG9nZW5lcmF0ZWQ= IExpbGx5 IEFzc2Vzcw== IEhlaWRp LnNvdXJjZXM= LnRlbGw= YXJnaW5z KCInIiw= 0LvQvtC2 IEVyb3RpYw== IGp1c3Rv IGVzYWM= Y29tYQ== IENvbG9ueQ== IHBjdA== CWVu IGVtcGV6 IERlbGV0aW5n TkVM IGVuYW0= UHJlc3NFdmVudA== IFJlc29sdmVy IFJURQ== Rng= IEluY29ycmVjdA== IHlj X3JlYWRpbmc= O2Jhc2U= IGhhc2h0YWdz IE1hcmluZXJz LlNldEZsb2F0 IHJlYXNzdXJpbmc= aXJzY2g= KHVzZXJpZA== ID09PT0= XSkpKTsK a2Y= IHRpbGVk ZWd1YXJk Q2xpZW50ZXM= 5pmC6ZaT ZHNs UmlnaHRz IFBzYWxt ZHVyaW5n Q2xlYXJDb2xvcg== dXN0YQ== PENvbW1lbnQ= IG5venpsZQ== IFBMQUNF L2hpc3Rvcnk= aWh1 aVZhcg== IGdlcm0= IHRyaW1taW5n IEh1bnRlcnM= IFJTVlA= SW50ZXJlc3RpbmdseQ== amlhbg== KSl7Cgo= LkV4cGVjdA== IFRvaWxldA== IHdhbGxwYXBlcnM= LldlYlNlcnZsZXQ= YXJwYQ== L21haW53aW5kb3c= aHE= IHV5 IGluZGlnbg== Q2hlY2tlZENoYW5nZUxpc3RlbmVy IGNhbGxlcnM= IE1vdXNlRXZlbnRBcmdz IEpTY3JvbGxQYW5l IHfFgmE= cmVwb3NpdG9yaWVz IMWbdw== IHJlZmVyZW5jaWE= IGlvdGE= IGNhcmdhcg== X29ic2VydmVy SENJ c2lsdmVy IGRldmFzdGF0aW9u LXNlbWlib2xk IEV4cGxhaW4= IEJsb2NrbHk= Llhy ZXN0dXJlUmVjb2duaXplcg== Q2FuY2VsQnV0dG9u IExvY2tl VHJpYWw= X1BMQUNF anVhbGFu IFJ1Ymlu U3RyaXBl IG1ldGFEYXRh Y29uZmlkZW5jZQ== X2JhdHRlcnk= IGlzbA== IGJvYQ== LnRhcmdldHM= bGlqa2U= IGFkb2xlc2NlbnRl YmV3 LEZhbHNl IHlPZmZzZXQ= UHJldmlvdXNseQ== PXBhdGg= X0FB iOadgw== IGJha2VrYQ== IGxlZQ== IEJsb2NraW5n L3RpdGxl IOW8gA== IFN0ZXZlbnNvbg== KW9iamVjdA== aXN0cm9z LmdldFNlcnZlcg== IHBsYW50YXRpb24= X0JveA== ICc7Jw== dGljYQ== KSldOwo= IGRpc3Bhcml0aWVz xrDhu5s= aWNyb2JpYWw= IHNwYXM= L0RE KHBvaW50ZXI= IG1pZHBvaW50 LmdldENsYXNzTmFtZQ== IFRvdGFsbHk= IGNvbmdlbg== IHTDqnRl LnhsaW0= Q09NUExFVEU= KGZp b3dhcmQ= 0LzRjw== LmFzYw== IHBhZ2luYXRl IGx1cmtpbmc= LnNpZ251cA== U1RZTEU= IHdvcnNo aHY= IGRlZmVuc2l2ZWx5 IEx1dGhlcmFu LmZ1bg== INC40L3RhNC+0YDQvA== cHNj IGFkbW9u IEVzdGltYXRlZA== IE15U3FsQ29ubmVjdGlvbg== LnN0YXR1c1N0cmlw IGFudGlnZW4= IGhlcnJhbWllbnQ= IENvbnN1bWVycw== IFlU Lm1hc2tzVG9Cb3VuZHM= Lnh0aWNrcw== OnJlcXVlc3Q= IE1vbw== LWF1 IHRvUmV0dXJu IFNhcHBoaXJl Y294 ZXhhbXBsZUlucHV0RW1haWw= IGNvcmF6 KHBpZWNl IHJlY29uc3RydWN0ZWQ= X3NpZ251cA== J10pPw== QmlsbGluZw== IENyb3dsZXk= c3Rvcm1z Zm9yY2Vy IHN1cHJlbWFjaXN0 X3doZWVs CXBj LmdldERvY3VtZW50 LnVuc3F1ZWV6ZQ== LmdyYWRl ZWxsdW5n LnNob3BwaW5n Y3VzdG9tZXJJZA== IG1lZGlkYXM= IE1vbWVudHM= ZW51b3Vz SUZJQ0FURQ== IyMjIyMjIwo= 5paH56ug 4buNYw== b3Jtc2c= YWxvbQ== LXRyYWRl CWJ0 L3N0dWRlbnQ= YnJpZw== YW5uZXNz KHJh IHJpY2VyY2E= U3BlYWtlcg== csOz Z3Rlc3Q= R2x5cGg= w7xnZW4= QEpzb24= KHN1bW1hcnk= S29t YmV0aA== L2VuZ2luZQ== Q2xpbWF0ZQ== c3VibWl0QnV0dG9u ZXZl ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cg== cGVkaWE= IHVzZXJuYW1lcw== IEpN IG1zZQ== aW5zcGVjdA== IFNuYXBkcmFnb24= IGRlZmVuc2VtYW4= IFVJVGFibGVWaWV3RGVsZWdhdGU= aW5kaG92ZW4= IEJveWxl IEFsdGE= YXJkdQ== IHdyZXN0bGVy IFN0cmFpdA== IGVncmVn X2Jhc2VsaW5l RW52aXJvbm1lbnRhbA== IGludml0 IEJUUw== IElTSUw= IGNvb3A= aG9yZXM= I0A= IGNvbXBlbA== KHNraXA= 6Ziz X0RFUFJFQ0FURUQ= aXBoZXJz ZG91YmxlVmFsdWU= IEFSUg== LlNjb3Jl IGNocm9tb3NvbWVz Y2xhdXNl IEx1aWdp IHN1bnNjcmVlbg== IGN5dG9r LnRvSlNPTlN0cmluZw== IHByb3ByZQ== cG9vbnM= bWl0dGVycw== IGtpdHRlbnM= IGNhdGhvbGlj Lmx0 wqw= X3F1aWNr IHZyYWk= IElSZWFkT25seQ== IEhpZ2dpbnM= IHNob3ZlZA== IGxpYWlzb24= X293bg== IG1vc3F1aXRvZXM= X25n LlNldEtleU5hbWU= X1JlbmRlcmVy X09zYw== LnVucmVnaXN0ZXI= TWVzc2FnZVR5cGU= LWZvdW5kZWQ= IHNvdXRoZWFzdGVybg== IGhhc2h0YWJsZQ== LmluZGVudA== IGpveWZ1bA== X3NleA== c2Fk LmRlYmlhbg== X2dhcw== IHBlcmlzaA== IGhldGU= X3NpbmdsZXRvbg== KGdyYWQ= IGt0w7NyYQ== IGR3aW5k aXR0YWw= U2VlaW5n IFJvb2tpZQ== CUxhYmVs c2hhbg== PDw8PDw8PDw= IHLDqA== aWVzZWw= YXJyZXJh Y2hyaXN0 IGN1cnZhdHVyZQ== IGVwaGVt Rm9ybWF0dGluZw== LmRpY3Rpb25hcnk= LlNldHRlcg== IEhpc3RvZ3JhbQ== IFN0dXR0Z2FydA== IHBhY2luZw== dXRhdGlvbnM= IE5TSw== IFBhbWVsYQ== IEJhaWw= IHBvbGFyaXphdGlvbg== IEfDtg== IEVsYWluZQ== IGtpY2tvZmY= IGNoYXBlbA== PXBvc3Q= IG1pZHdheQ== ZXdpcw== X01S aWVlZQ== LXRlc3Rpbmc= bWV6 Pi0t IGRvY3RyaW5lcw== IG1pbGlldQ== IFJBRElP dGFrZW4= UmVzcG9ucw== IGhhbmRzZXQ= IGNvbnRybw== IEFwcGxpZXM= 6Zif LkJpbmRpbmdTb3VyY2U= INis IGh1bWlsaQ== IE1lbGFuaWE= T3ZlcmxhcA== KFBhcmNlbA== IHdhcmVob3VzZXM= LkdldEJ5SWQ= IGZyYW5rZnVydA== IFdpdHQ= LnByb2o= IFNhc2hh IFJldmVy IGFydGljdWxhdGVk YW5jaGVz IFNlbWluYXI= IERhZ2dlcg== IEFnaWxl T1dM IEJz b2tseW4= RXRh IGFnb3N0bw== 7ZWY7Jes IG9wdGFyZw== CW9uQ2hhbmdl IFJPQUQ= R0JL IGVudGZlcg== LkF1dG9Db21wbGV0ZQ== IGhlbGZlbg== Q2hlYXA= IGFwcHJlbnRpY2U= aW90aWNz 5oqA T2ZZZWFy aW5kZXJlZA== Lk1TRw== IE1hcsOtYQ== KGlucGxhY2U= IGZpbmRl KERF LlNlcmlhbGl6ZXI= JHRpbWU= dW5uYWJsZQ== TWFpblRocmVhZA== ZGVwbG95bWVudA== IG1wZnI= cmljaFRleHRQYW5lbA== KTsKCgoKCg== IGRhbnljaA== X0JFRk9SRQ== X2FyeQ== IEJhdW0= IHR1cmJ1bGVudA== IE11bHRpbWVkaWE= IHBoeXNpY2lzdA== 5Zy6 QW5pbWF0ZQ== PUY= UGFnbw== L3R3aXR0ZXI= b3R0aWU= dWN1cnNhbA== X3BhZ2luYXRpb24= LmFyY2hpdmU= LWRvY3VtZW50 aW5pbmU= U2VsbGVy YWRyZXNz 6ZO+5o6l 0LDRgtC10LPQvtGA X2ZybQ== bm9EQg== aWdhdGVk IE9zYW1h cGV0dG8= Pnk= LVVu IGNvcHBpYQ== QWxtb3N0RXF1YWw= LmxleA== IGxldmVsZWQ= IFNDSVA= X0hPT0s= SUxvZ2dlcg== bmVhdQ== 77ye 24zZhg== aWtoYWls IHVwbG9hZGVy IENhcm9seW4= LmFkZFZhbHVl dGhpbmtpbmc= cHJpbnRTdGF0cw== IGNhbWJpb3M= cG9p IEJFRA== IHhibWM= Lu+/vQ== IHNhcmNhc3Q= IE5FQw== JGJvZHk= QWxsV2luZG93cw== IHlvdW5nc3Rlcg== IHVuZWFzeQ== KEFU IG5vc3RhbGdpYw== UFJJQ0U= IFNlaXRlbg== IG1ha2E= IGxpbXA= IGNvbnRyYXN0cw== Q29mZmVl CWdlbg== IHBlcm1z IE5lZWRsZXNz b3V2ZQ== YXJjaGluZw== X3BlbmFsdHk= cm93YWQ= b25nYW4= X2R1cg== IGlmbmRlZg== aWF1eA== IGNhcGFjaWRhZA== IE5vcnRl IC0qLQ0K aWZlcw== IE1hbnNpb24= I1JlZ2lvbg== Q2FuY2VsbGF0aW9u IG5lYXJpbmc= IGxhbmd1 ZXJlcXVpc2l0ZXM= X2V4cGVyaW1lbnQ= b25kaGVpbQ== XSwm IENvb2xpbmc= IHNhZmFyaQ== IHBpb25lZXJz IGZhcm1ob3VzZQ== IGRpc3RhbmNpYQ== IGRlc2VydGVk IE5hcnJvdw== LnNn IGVudHJhcg== LnJh IHJlZnVyYmlzaGVk IGludGVyY29ubmVjdGVk IHN1cnZpdmVz IHF1YWxpZmllcnM= X0NIQVJT LWFqYXg= IFJvcnk= IGtvbGVq L0dM X2xlZ2Fs IFRZUEVT IFZvaWNlcw== IEZlcmQ= dWplbXk= IHNjb3JlYm9hcmQ= IEJPVA== eERE IEl2YW5rYQ== IGhzdg== bm9kaXNjYXJk IFRIRVNF bW9qb20= IHRpY2tpbmc= cGVx IOa3u+WKoA== IE5pY29s CWFuZ2xl X2FsbG9jYXRlZA== IHN0cnV0 eERC RXZhbHVhdGU= IFZBUklBTlQ= IHJlZmVyZW5jZWRDb2x1bW5OYW1l bG9o IFJlcXVlc3RPcHRpb25z IGNvY28= IGJsZWFjaA== X29yZ2FuaXphdGlvbg== IENITw== SFRUUFM= X2JhcnJpZXI= LnZpc2l0TWV0aG9kSW5zbg== IHZpdGU= IC0k W2NlbGw= IGNlc3NhdGlvbg== CgoKCgoKCgoKCgo= INGB0LDQuQ== RXZhbHVhdGlvbg== IENJTQ== cXVhbGl0aWVz WG1sQXR0cmlidXRl IEVtb2pp ICIoJw== IFRVUk4= eHNk IEdJUw== IGNyZWF0ZVNlbGVjdG9y cmlwcGxl IHVubmVjZXNzYXJpbHk= IG5ld1Bvcw== IHN5bWJvbGlzbQ== b2J1dHRvbg== IHNhbW8= ICgqKCg= LnJld2FyZA== S0VSTkVM KGpTY3JvbGxQYW5l IGJ5c3RhbmQ= X2ljYWxs IGR1bmdlb25z IGNvbnN0ZWxsYXRpb24= IGVtYnJhY2Vz IEluZmFudA== QXVzdGlu LmFic3RyYWN0 IGNvbXBhZ24= IENvbmRpdGlvbmluZw== TWFpcw== VmVyaWZpZXI= IFB5cmFtaWQ= IG1MaXN0ZW5lcg== X2J1aWxkaW5n LlJlZGlz IFRvb3Ro TE9HR0VS LkFzeW5jVGFzaw== X3ByaW5jaXBhbA== ZXhhbXBsZU1vZGFsTGFiZWw= CUxvY2Fs TWFya2Vycw== IGRvbHBoaW5z LlRleHRFZGl0 J2Fs IG92ZXJzdA== LWRyaXZl IGluc29tbmlh IGFkYg== X3F1ZXVlcw== RWI= IERhbW4= aXN0cmluZ3N0cmVhbQ== CUR1ZWw= aWJibGU= IGltcmVhZA== LmZpbmlzaGVk IG1pc3JlcHJlc2VudGVk xYRzdA== aW9uYWxlcw== Ik5vdw== LlNlbGVjdFNpbmdsZU5vZGU= IHdlYWtlbmluZw== X2luc3RydWN0aW9ucw== LW9z IHN0YXJ0UG9pbnQ= IE1pbWU= IEhlbGQ= fHwo dW1taW5ncw== b2tpbm8= IHJlZmw= cmlkb3I= SW50ZWdyYXRlZA== RU9iamVjdA== cGVhdHM= Q2lyY3VsYXI= IFNvZGl1bQ== IHBvZHLDrWE= bWVkaWNpbmU= IHBhcmFub2lh L2JhY2tncm91bmQ= KGJvcmRlcg== X3Nsb3c= IHByZXNlbnRWaWV3Q29udHJvbGxlcg== IGNvbnRpbmdlbmN5 IFBhc2FkZW5h bG9vcHM= IE9j YXBwbGljYXRpb25z IG1wZw== IEFR LldpbkNvbnRyb2xz bGVkb24= IFJlcQ== IEFjcmVz aWJpcg== IGdldFdpbmRvdw== IFlhaA== IG5lZWR5 4pa6 IFRPTQ== KFsuLi4= IGZx IENhbWRlbg== b3JkaW5hdGVk CWNoaWxkcmVu dmVnZXQ= CWRpcmVjdGlvbg== PEZpZWxk X2NvcnJlY3Rpb24= KEVORA== SEVFVA== RmFsc3k= LmR5bGli X1JFUE8= IGJyaWxsaWFuY2U= b2dyw6Fm bG9k IHBvd2RlcmVk KEFydA== IE1JTEw= 0LXQtNCw0Lo= X3NpbXVsYXRpb24= IHNtYXNoaW5n IHVybFN0cmluZw== IGRyZWFkZWQ= cmllZw== L25z IEludGVycHJldGVy Om1heA== ZGVyaXY= IFBldHQ= IG1vZMOobGU= IGFtcGxpZmllZA== IFNpZ25hbHM= Lm5hdkN0cmw= 5ZY= IHNlcGFyYXRvcnM= IFNISUZU IGZpZGVsaXR5 LnNvbg== KGNh IFBMVUdJTg== IGxpZ2h0ZW4= UEJT ZmxvYXRpbmc= KGxvYWRlcg== IHBlZWxlZA== aGlj IHRhcGVk IG5vdmVtYnJl IHN0dWZmaW5n IEZpcmVhcm1z LkRyYXdhYmxl IGNvcnRpY2Fs IEdVSUNvbnRlbnQ= IFZlcm9uaWNh X3JzYQ== IGNvbW1lbW9yYXRl LlNZU1RFTQ== IGRhbXM= LmlzVHJ1ZQ== IFByZWduYW5jeQ== 7Iug IGF1ZGl0b3J5 KENlbGw= IGludmFkaW5n IGZvckVhY2g= CURyYXc= TWFyY3Vz UHJvY2Vzc2Vk IHNwcmF5aW5n IE91dGxpbmVJbnB1dEJvcmRlcg== ZXNzZXJhY3Q= IOacgA== UGc= LXF1YXJ0ZXJz IHNrbA== L3Byb3ZpZGVycw== dG9IYXZlQmVlbkNhbGxlZFRpbWVz IGNvc21vcw== IGZpbmFsaXN0cw== IHNsZWVwZXI= IE1hdGVyaWFsQXBw ZGFj IGJ1c2luZXNzbWVu xJ9lcg== Qmlhcw== ZGF0YWw= VXBFZGl0 IFRpcg== SVNUSUM= IEhlcmE= X2ludGVyc2VjdGlvbg== IExhbWE= CWFwcGVuZA== IHBvbGx1dGFudHM= IFNpa2g= IGNvbGxhYm9yYXRpb25z bnV0cml0aW9u IGhhbW0= IERpbGxvbg== X0RPVA== IGZpcnN0aGFuZA== U09BUA== PXo= LnByaXY= TWlzbWF0Y2g= LnNlbmRSZWRpcmVjdA== LmxpbmtMYWJlbA== IHdyZWFr TWFydmVs L3Ns IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== IG1vdmFibGU= 0YPQuQ== IERyaW5raW5n YWNlYQ== IHRyb3ZhcmU= LkNTUw== IGtlcm4= dmZz 5pWw5a2X IHN0ZXNzbw== IEZPUkNF IGxpZWY= IGFjaGlldmVz IEVsaWphaA== R2V0UHJvcGVydHk= LypA IEh1bWFuaXR5 KFRoZQ== d2FybQ== PiIp IGNvbXB1dGF0aW9ucw== LnRpbnRDb2xvcg== IHVzbGVlcA== IEdQTHY= bmRhdGE= L2NsaQ== TW9o PiINCg== LmJyaWRnZQ== IGVuY3ljbG9wZWRpYQ== IEJJTg== IFN1cHBvc2U= INio2Kc= cmlldmVk cGFnZW4= aXJzZQ== UGFjaWZpYw== LmZ1bGxOYW1l IGFsbGVnZQ== aWxsdXN0cg== IOqysA== IGRldGVycmVudA== IE5hcGxlcw== aW5jbHVkZWQ= UmF0ZXM= IGhhc05leHQ= IEplcmVtaWFo IEZlcm5hbmRleg== IGdldE9yZGVy LlN1YnNjcmliZQ== UG9zcw== OikK IFdvcmtzaGVldA== YmxlbmQ= IHdpdHR5 IGNvdW50ZXJmZWl0 X2R5 L1J1bnRpbWU= IHNvZG9t L2Rv IDx8 IFJlY3J1 5aOw5piO IG1vZGVsb3M= IGJpdHJhdGU= LmNybQ== bHVz IGZpbGVUeXBl 5bCR IG1hcnJvdw== IFZlbmV6dWVsYW4= IHNjYXY= IFNUT0NL IEltcG9zc2libGU= bmF2aWdhdGlvbkJhcg== IHNpZ2h0aW5ncw== IGNlbGxGb3JSb3dBdA== IHJlY3Rz IGFpcmw= IExlc3Rlcg== IG5vZHM= QHJlZ2lzdGVy eENE cG5hbWU= IHBvdHRlcnk= IHp3YXI= IFN1bmRlcmxhbmQ= 4oCmYnV0 L2NvbnRyb2w= IGNhbGN1bHVz KGlzb2xhdGU= cGxhY2Vob2xkZXJz Kilf IH19DQo= IEtvaGFuYQ== Y29kaWxl b3Rlcmlj IHByZXBhaWQ= IGdyYW5kbWE= IHN1bHBo IEdhaW5lcw== XE1vZHVsZQ== IGNvdW5zZWxsaW5n LWdlbmVyaWM= IFR1ZXM= LkdyYWRpZW50 IFRodXJz IGVudHJh IGFkdmFuY2VtZW50cw== U1dFUA== X01BUktFUg== IGtsdWI= IG3DqWc= ZmZmZmZmZg== Il0pewo= L2NvbXBpbGVy YWRpZW5z U3RyaW5nVmFsdWU= IFNjdWxwdA== cGFuZWxz 5b2i 5Lqn5ZOB YXLDrWE= IGRlcmFpbA== IExvY2g= IHBlcHA= bXB6 IOKe S1Y= IERpZXRhcnk= QVJSSUVS IHBvbw== IFJBTkRPTQ== 6LM= IEhvbWV3b3Jr LlZhbGlkYXRpb25FcnJvcg== IE1hcnhpc20= 0YPRgtGM IGNvbWVudGFyaW8= X0JPVEg= IHBybQ== Y2FzdEhpdA== aXBsaW5h IFZvdGVycw== LmFzc2lnbm1lbnQ= bmV0dA== U0FNUExF amlz InRpdGxl LnZhbGlkYXRvcnM= ICI/Ig== dW5pZGFk X2ZpZ3VyZQ== IGFjY3J1 IFJlbWFyaw== Rm91bmRlcg== LmluaXRpYWxpemVBcHA= IFByZXNlbnRz IE1VTFRJ dmVzdGVy LnZpc2l0SW5zbg== IGdldFBhdGg= X2RpZmZlcmVudA== IGxvb3Nlbg== IGFycm9nYW5jZQ== IGp1bmk= IFphaGw= IEdDQk8= IG1vZGVyYXRvcnM= TGluZUNvbG9y IE5vZGVUeXBl X2JlbG93 b3JndA== IEhhcmxlbQ== IE9yd2VsbA== X1VOSVg= LnJlc3RhcnQ= aXRoZQ== IGdlbmll IGNsYWQ= Jzp7Jw== IHNob3djYXNlZA== IGxhcnZhZQ== TWljaGVsbGU= IExI LmdldExvZw== Q29uc3RydWN0ZWQ= IGh2YQ== X3N1YnM= IGRhYg== LmRvY3VtZW50YXRpb24= IG5pZw== IE1hbmRhcmlu 4oCUYXJl LXBpYw== X2Nvcm5lcnM= LkJvdA== XVso X18nOg0K LkVkaXRvckJ1dHRvbg== LXN5bnRheA== U2FuZGVycw== IFRhbmtz ZGVzaXJlZA== c3RhbnRpYXRlVmlld0NvbnRyb2xsZXI= R2Vhcg== IHVzZXJNb2RlbA== CWNvbnRyb2w= RGF0YUJhc2U= IERlYmF0ZQ== aW5lc2lz IHhl Lm1hZ25pdHVkZQ== IHlhbg== IEFwaUV4Y2VwdGlvbg== KHdoaWNo YXRoZXJpbmc= Q29uc2lkZXJpbmc= IEFMUEhB 568= IFJhbmtpbmdz LmxpZmU= 6rCS T0ZGU0VU LnRlbGVncmFt IGZhdmljb24= X3NzaA== IEVER0U= UmVmcw== YW5kYW4= IGFkb2xlc2NlbmNl IFNoYW5r IFN3YW1w X3BlcmM= IGNvbnRyYXJpbw== Lm55 LiIpLA== IHVudGVu X0VOU1VSRQ== L29yZGVycw== KGNm IHVudHJlYXRlZA== YXplbg== KElucHV0U3RyZWFt IGFwcHJvdmFscw== IGdlcm1hbnk= IGF2ZXJl VHJpcGxl LWJhcnM= IHNldFBhZ2U= SmFj IEZpcmVz IERBWVM= 56i/ IHNjcmF0Y2hlZA== IEJFTg== LXdpZmU= IGludGVsbGVjdHVhbHM= IHBvdWNv IHN0YWJpbGl6YXRpb24= IHBlbG9z IFNUT1JZ PGZpZWxkc2V0 IE1haWRlbg== LkNpcmNsZQ== IHNtw6U= Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw== L2VuZA== 6Iux KG51bXB5 LnBhbmVsQ29udHJvbA== Y2hyaWZ0 Y29udGluZW50YWw= X3BlbA== RFNM PFwv IE9QUw== IE5vb24= IHVuZGlzY2xvc2Vk IFlpbg== c3Bv CWRlc2NyaWJl dG9ncm91cA== IGRpYXBlcnM= IG1IYW5kbGVy CUNsb3Nl IHJlbmRpdGlvbg== PXsoew== RW50ZXJpbmc= KERJUg== X09MRA== IFN0aW5n IFBhd24= dXNzZXM= IGdldENvZGU= SXRlbUxpc3Q= IGluZGlz ID4iLA== IGNvbmZs IGRvbWluYXRlcw== dGhlc2l6ZWQ= c3RlcmVk IGNhYw== IEdlbnVpbmU= PFBhdGg= IEhvZGc= LWZseQ== LmNpZA== IG9iamVjdElk KCMp Lm1vdmVUb05leHQ= RGlhbG9ndWU= PHBjbA== dGVhckRvd24= Jyl9fQo= 5ri4 TGl2ZXI= TWF0cml4WGQ= IGNyYXBweQ== X0RFQUQ= LnBhcnRpYWw= LkRyb3BEb3duU3R5bGU= ZnVy LkNvbGxhcHNlZA== LXRvd24= SUNJQUw= RGlyZWNjaW9u IHNldFJlc3VsdA== L3Jlc3VsdA== IFNoZWVw eXNjYWxl Y29udGk= IHJlY29ub2M= 6b4= W2Jsb2Nr Y2xheno= IGJlbmVmaXRpbmc= QUFQ LnJlcXVpcmVz LkNvb2tpZQ== IGNhcHRpdml0eQ== LlNlY3Rpb24= XSkpOw== LWNhcmV0 KHZh IHbDpGw= IEhpZ2hsYW5kcw== Tm90YQ== IEZNTA== d2ludGVy IGFnZW5kYXM= X18sX18= ZGVtYW5k IHR1dG9ycw== X1NZTQ== KENI IHVuZXF1aXY= LnRyYW5zaXRpb25z IENhbG9yaWVz IEVjb25vbWlzdA== LlBpbg== IGRlZmxlY3Q= RXhwb3NlZA== IGdlcA== LkxheW91dENvbnRyb2xJdGVt IHJhaw== ZmliZXI= IGFwb3B0 IEVudW1z aXRldXI= IG1vZGlmaWVz IHJlbHVjdGFuY2U= IHNwaWxscw== QXNjZW5kaW5n IHRlbXBlcmF0dXJh LWludGVyZmFjZQ== IGNvd29ya2Vycw== IDpc IFJvdW5kZWRSZWN0YW5nbGVCb3JkZXI= PEtleVZhbHVlUGFpcg== UGFyc2Vk IHdpdGhkcmF3aW5n KGhpc3Q= IHRoZW9yaXN0cw== LW5n IGNoaWZm 66W4 UEFJUg== IEJyZXdlcg== S2E= IEJvd2xpbmc= X3Rs J30pLg== IHByb2Jpbmc= QXJz LnJlYWxt IGVzdGF0ZXM= dmFyeQ== IEtlcw== ICIsIiw= fSwNCg0K UGxhbm5pbmc= IFJlY29u IGNvbmNsdXM= dmF1bHQ= IGluY2VudGl2 IGJpbm5lbg== IFBoaWxsaWVz LkxvYWRlcg== IEZhbGxlbg== X1R3bw== IEJpYXM= Um9sZUlk IFBhcmNlbGFibGU= IERvZGQ= ICQoIiMi 5Lq/5YWD LW1lYW4= KE91dHB1dA== QVRUUklCVVRF IHNlY3JldGl2ZQ== IFBlcmlwaGVyYWw= IEZpbGVk IOW3 X21lZGlhbg== LklD IEFycmF5QnVmZmVy KFRBQkxF IF0KCgo= IGFudGhvbG9neQ== IG9ic2NlbmU= b3BhdXNl IEVTVg== w6F2ZWlz b3NlbWl0ZQ== R3J1cG8= IE1PQ0s= IHVuYXZvaWRhYmxl IGNvdmlk aG93ZXI= Lk5ldmVy U2V0QWN0aXZl e3RleHQ= X3Byb2Jh XENvbmZpZ3VyYXRpb24= IEJyeWNl IGNvZXJjZQ== IFZhbmRlcmJpbHQ= Z2VtZW50cw== bGVnZw== IHJlYnV0 IFZJTg== 5YiG6ZKf IG9ic2Vzc2l2ZQ== L2NtZA== IGtvbW1lbnQ= IExhdWdo 64uI IHNlbHZlcw== b3JyYQ== LnJvb21z IGNvbXBsZXhpdGllcw== CW9wZXJhdG9y QWx0ZXJuYXRl IHNvcnRpZQ== Z2V0TnVt IHJlYWxpemFkbw== RG9pbmc= X0dyaWQ= IHNldFN1cHBvcnRBY3Rpb25CYXI= w6RobHQ= 5ZQ= OnsNCg== SW50ZXJlc3RlZA== IGRpbWluaXNoaW5n IExvb3Q= QWRhcHRlckZhY3Rvcnk= LXJ1bm5lcg== c2F2aW5n KHNlbQ== ZmFk RURVUkU= X2RvY3VtZW50bw== IENhbGVi IGd1aXNl IE1jR3U= KHVuaXRz IGJlemllcg== IHBhdHQ= IHBlbHZpYw== IGNvbm9zYw== YWN0aXZv IE1hbG9uZQ== LlRha2U= KHNxcnQ= c3Rhc2hvcA== LWVuZGVk IE1pZGk= IEJhbmM= IFBlcHNp X01BWQ== IHBsbA== L2luZXQ= LWVuaA== IEl0YWw= bW91cg== IHJlbHVjdGFudGx5 LnJjUGFyYW1z IHBhbHM= LnBrZw== IGZvcm1hcw== bGllw59saWNo LWJvb2tz b21hbHk= IHJlY29tbWFuZA== UExJQ0lU acSN LmNnQ29sb3I= KEJvYXJk 0LXQvdC40Lg= IExFTg== Xy1f IFVubw== IE5PVElGWQ== aGFuYQ== W3Nsb3Q= XGFkbWlu SW5JbnNwZWN0b3I= KWNvbnN0 IGZsYXR0ZXJpbmc= aWdyYW1z Y2Fj IGhlYXJ0ZmVsdA== SW5kdXN0cmlhbA== QWlycG9ydA== WEk= IHZhbGlkYXI= cmVwcmVzZW50YXRpb24= IFJlbnRhbHM= IG9taXNzaW9u IG15dGhpY2Fs IEVudHJhbmNl IHNlcmdlYW50 IHdyaXRlVG8= IE5vcndpY2g= IExpb25lbA== LWJhbA== IFp3ZQ== X3JlbnQ= IHJlbWFy IEJhaGFtYXM= IEJhbGU= OiIiLA== U3RhdGVNYW5hZ2Vy IGLDqW7DqQ== ICEqKio= IGJsb2NrZXJz LnNlbA== KExFRA== IGZzbQ== IHdpcGluZw== IHphbWFu IFJlaQ== YWd1YXk= Li4n IGxvdW5n ZXRjb2Rl IGxhbno= Y2l0YXRpb24= W2A= LWVs YXNib3VyZw== IFNPTEQ= IE9yY2hhcmQ= Q0hhbmRsZQ== IExvZnQ= LmRpdmlkZQ== LVdpdGg= L2Rlc2lnbg== LlNlcnZpY2VNb2RlbA== TWlz IHJhd0RhdGE= IGludGVyYWN0cw== IEVyb3Rpaw== IG9uUG9zdEV4ZWN1dGU= 6Jk= IHZleA== IHN0cmluZ2lmeQ== eW5lcw== X0VtYWls X09N cXVpdGU= X2VmZmVjdHM= QURY IGFkb3JuZWQ= c3Nm ZWRpdGFy IE1hZGFtZQ== IHJlZnV0ZQ== IEx1Y2E= IFdvbHZlcmluZQ== c2V4bw== QW5kcmU= PFJvdXRl IFNjZW5lcw== IHJlb3JkZXI= X214 Y3JlYXRlVGltZQ== IHN5bnQ= LG1vZGVs aWNyb3Vz IE1PVVNF 6rk= Y29tcHJlc3Npb24= IHByaW5jZXM= IHNoYW1lZnVs IHBhdQ== IFRFRA== KGNvZWZmcw== 4K+B L3VtZA== IGNhbnlvbg== L3JlbmRlcg== LnVzZWQ= IEFncmVl IEpld2Vs L2NvbW1hbmQ= QmFyY29kZQ== KGRlYWQ= d2Vic29ja2V0 dW11 R0xPU1M= IGZvcnRu IGJvYXN0ZWQ= ICJcIj4= aXN0dW5n LW1hY2hpbmU= IGluY2lkZW50YWw= IG1N LXJlYWRhYmxl LmZ4 IFBPTElU IHN5bWxpbms= KHVzaW5n eEVE ICIiIi4= LlN0ZG91dA== IOiL IGFsbWFjZW4= CXRyaWdnZXI= LXRpcA== IENPTU1JVA== LmluZ3JlZGllbnRz IG1hbmlmZXN0cw== IE9TUw== IEhhdXQ= L2xvYWRpbmc= LlR5cGVTdHJpbmc= KGNsZWFu IExJQw== IEJhcmJpZQ== T09TRQ== LuKApg== IEludml0YXRpb24= IHJlZGVlbWVk KS4nPC8= IGltZGI= IGJlbGFuZw== IHNjcmFwcGVk LW5pbA== IFByb3Vk 0LDRgdGC LlNJWkU= IHNldFZpc2libGU= IHJhaW5pbmc= IGxlbmdodA== IGFuYWs= X0NNUA== IHBhbm9yYW1pYw== IGdpbQ== c2FpZA== IHByb2dlbg== IEdCUA== 4oCg IGludmVzdGlnYXRlcw== IHByw6hz L25hdmlnYXRpb24= Lm1vdGlvbg== IExpZ2h0d2VpZ2h0 CQkgICAgICAgICAgICA= IG9udG9sb2d5 IE5JSA== KHNpbXA= LnB1bGw= IHByb3Bvc2l0aW9ucw== QFdlYlNlcnZsZXQ= IHJlZGVmaW5l IEVORVJHWQ== 7KC4 T1JJWkFUSU9O IFZlcmbDvGc= fX1dLAo= IHdlZ2Vu 4LmH Jm9hY3V0ZQ== LkJvYXJk IGN1bHBh IEdlbmV0aWNz IH0+ IGFkYW1hbnQ= 44GV44KM CWF1ZGlv 6riA IG51bWVyYWw= IHJlc3RyYWluaW5n LklOVEVSTkFM IE1vbXM= IElQQWRkcmVzcw== aW1lbnRp IGFscGhhYmV0aWNhbA== IEpGSw== IEF0dGVtcHRz ZnJhZ2U= IGRhcm0= IGJhc2VtYW4= PWxvZw== LGVycm9y IERJU0NMQUlNUw== CXRleHR1cmU= LWNvdmVyZWQ= IFBsdW0= IOWVhg== IHDDqXJp KHJldmlldw== IEZvcmNlZA== Rkg= IOy0iA== IGV5ZWJyb3c= X1JFR1M= IGNoZXN0cw== IExhcmdlc3Q= XV06Cg== VVRPUg== IGVucXVpcmllcw== IGNva2U= LWNhdGNoaW5n IEdlb2dyYXBoeQ== YXRlbA== KHByb2Q= b3JXaGVyZQ== TmluZQ== IFBpZWQ= IGFkanVzdHM= KHByb20= X21lbnVz X2V4YW0= IE5vdGlmaWNhdGlvbkNlbnRlcg== CWRz TElL X3R3aXR0ZXI= Q1JD IGV1eA== IFN0YWJsZQ== aXlvcg== IGNhcmJvbmF0ZQ== LnNhbA== TWFwcGVk aWV2aW5n KXk= eW5hbW9kYg== LkNvbXBhcmVUYWc= IHNldmVyZWQ= J2VtYWls IGZvcnNr bGV4cG9ydA== SU1JVEVS IEFwZXg= IGhtYWM= IE9kZHM= b3ZlcnJpZGVz OiI7DQo= IG9waW9pZHM= IG1lc21lcg== IEdBTA== LWxpbmVz IGFwcGx5TWlkZGxld2FyZQ== IHNlcmlh RVNJUw== IG5pbGFp IG1hbGxz IFBhb2xv IExlbnQ= LmJ1aWxkZXJz LyY= IENsaXBz IEp1cmFzc2lj 4pWd LWNvbmQ= 44O844OI fHd4 LmhvdXNl IGhlcmF1cw== IGhr IENvY28= IlwK IGFjY3JlZGl0YXRpb24= IFJhY2g= ZXJ0ZXN0 c2hvcnRjb2Rl IHZhbGlkYXRpb25z VUxTRQ== IGV4Y2VycHRz U2Vla0Jhcg== IGdldExvY2F0aW9u IGZlbmNlZA== KGdz IGx5cw== IGhhcm1z IEhvbW8= 4oCcU2hl IOKAuw== PXNlc3Npb24= X0NPTVBJTEU= TWVhbnM= IHBldGl0aW9uZXI= SU1P Il09Pg== ZGJl X2dwcw== IG1q X2V4cGlyZQ== IERBTg== IHh2 IGZ1bmNpb25lcw== IHNoYWt5 U3VnYXI= IGdldFJlc3VsdA== PFRva2Vu aHR0cENsaWVudA== Lm9uUGF1c2U= c3Rp U25ha2U= TWFwcGluZ3M= IFJlYXBlcg== IGZyZWk= IENvc21vcw== dWVycw== IEhhag== IEJsYXpl b2ppcw== Q3JMZg== LnByb2M= IG90cA== IERyYXdz CVJFRw== KCcnJw== IGdlbmVyYQ== IEF0dGFjaGVk UkVN JTsiPg== dXJuaXNoZWQ= X3Jw IHpvYWxz IGFzc29ydGVk aXRpemVk IGNhbWlubw== IGFiZHVjdGVk LnRvQmU= J10pOg== IE1vb3I= SW5jbHVkaW5n IGdyYXppbmc= c2V0U3RhdHVz YWlyb2Jp X0V4ZWN1dGU= aWZpYW50 ZWxkbw== YXV0b21hdGlj KCQp IGxlYXBz b25lZERhdGVUaW1l KGxheWVycw== LXByb2R1Y2Vk IFdvcmtib29r IGVub3Jtb3VzbHk= IGRlcHJlc3NpdmU= IGFhYQ== RW1iZWRkZWQ= QlVN IGVsbGVz IGJvYXJkZWQ= xZtteQ== IG1hc2lo X2dlbmVz CVRleHR1cmU= aXN0YXI= IEF1Z3VzdGE= IEFwcE1ldGhvZEJlYXQ= IGtvZGU= YWJleg== X3BpZWNlcw== Q3Vycg== IGxpYmVyYWxpc20= RGljaw== QWxl IHF1YWxl fSc7Cg== LmFuc3dlcnM= IEpBTg== IFBVUkU= IGNhbm9l IFNBTUU= UXVhbGlmaWVy IGRibmFtZQ== IElubm9j CVRSQUNF aXZyZQ== IG1lY2g= YXNlbA== Iixb IGFzaWE= IENhbnRlcmJ1cnk= LkRhdGFCaW5kaW5ncw== a2Fo KCkpKSk= IGR6aWV3 cmV0ZQ== IHNjcmVlbmluZ3M= Lk1PVVNF IGJ1c2llc3Q= CXJlbmRlcmVy IHRlc3RpbW9uaWFscw== IGFzcGlyZQ== Zm9ydHVuZQ== IE1TQw== IGRhbXBpbmc= XCIsCg== V2Vs V2lr IOyXrA== KHRpZA== IENhbm5lcw== b2NvcA== PiIrCg== ZmFjZXQ= IHNsYXNoZWQ= IExpYmVyaWE= U21vb3Ro X2NoZQ== TGFib3Vy IGVtaW5lbnQ= Olg= XEJhY2tlbmQ= ICsrKQo= IHRlYW13b3Jr X2FnZw== LlNlcnZl IFNORA== IFBJQ0s= IHdpcGVz L1R5cG9ncmFwaHk= IEFQQQ== aWtraQ== IGNvZGVy Z2FiZW4= IHVua25vdw== LkRlcGFydG1lbnQ= 4Lix4Lia IHBsYXllck5hbWU= KmU= PEJsb2Nr X3VwZA== IEdpYmJz bGVhc2luZw== IENvbG9tYmlhbg== KFBIUA== ICoqKiEK IOydvA== IEN1cnRhaW4= L2F5 2YTZiQ== c3BvcnRz IGRlc2Vh aXLDoQ== IHVuY29uZGl0aW9uYWw= IHRocm9t IENIUklTVA== IEhPUg== b3Njb3BpYw== IHlhxZ8= IG5vc3Rybw== Li4uIik7DQo= IHNsdXI= IGhhdHRlbg== IHBlc3RpY2lkZQ== IGZyZWV3YXk= IENvaA== IHdhbm5vbmNl IG1laWRlbg== X3N1YnN0cg== X0NTUw== IFN5bWJvbHM= 4Li34Lit REVU IE1hZGRlbg== IHJlcXVlc3Rlcg== LnZpcnR1YWw= IHd4RGVmYXVsdA== IGF1dG9tw6F0aWNhbWVudGU= YnJpZHM= aVQ= LlByaW9yaXR5 Jyk7PC8= YnVuZw== RGVhZGxpbmU= Q29uY3JldGU= IG5leHRQYWdl IOuwmw== IFN0b2tl a29w INCx0L7Qu9GM IFByb2R1aw== LW1ha2Vy IFByb2plY3RpbGU= YW5jZWxsYWJsZQ== IFRIRUlS VG9SZW1vdmU= RU1V Y29tbWVyY2lhbA== QVZFRA== IHdlYXZpbmc= IGJpb21l QFNldHRlcg== cW1s IGJyb2FkZW4= INGB0L8= SVNS IGRlYWN0aXZhdGVk IHNlbGVjdGVkSW5kZXg= cmlvdXM= ZWxwcw== LkVzY2FwZQ== IHBvbGxlZA== cXVpYQ== X3JlZmw= X21pbWU= PEF1ZGlvU291cmNl KFRyYW5zZm9ybQ== ZXZlbm9kZA== CXJhbmRvbQ== bG9jcw== IGRldXQ= cmVwbGFjZW1lbnQ= IGV4YW1pbmVy SGFzS2V5 IOumrOyKpO2KuA== IENsb3Ro IOCkqg== IFJlZ2lzdHJv IEVzdGhlcg== IFNoYXJlZE1vZHVsZQ== LmJvcnJvdw== IG9zY2lsbGF0b3I= IGZvb2xz uqs= IGJvYXN0aW5n X3B1bHNl c2hhcmluZw== IHBpc3RvbHM= X1BMQU4= IHNlcHRlbWJlcg== IG11c3Rlcg== IG1hcmNow6k= Q0hFTVk= IHN1aQ== IGdlYnJ1aWs= Lj0n ZXJyYXRlZA== IExpYQ== IGhhdW50 IEN1c2g= cm91dGVQcm92aWRlcg== Inw= ZW5kcGhw Il1dCg== IGF2YQ== 77yBIiw= 7Ke4 IGNvbGE= X1NQRUxM IGFsw6lt KExhbmd1YWdl KGR1bW15 IGJ1bmtlcg== IEVtcHJlc2E= IGNyZWF0ZUNvbnRleHQ= Om1pbg== IEJPT1Q= IE1lcmVkaXRo Wmg= IERvd25pbmc= d2pnbA== LmRj c2RhbGU= IGluY29udmVuaWVudA== IHJlYWRtZQ== TmF2aWdhdGlvblZpZXc= Q09ORElUSU9O LmRlcA== IHLDqXVzcw== IG9wY2nDs24= IEFjY291bnRhYmlsaXR5 Lk1hcg== LWd1aWQ= RURHRQ== RXZlbnRNYW5hZ2Vy IGRpc2NpcGxl dWNrbGVz fX0+ aW50ZXJlc3RlZA== RmlsdGVyV2hlcmU= IHB1c3M= LXByb3h5 X3N0YXR1c2Vz IFsj dW5mb2xk IFJvbm5pZQ== JiYh IGFjZXNzbw== dW9z X3lpZWxk KGNhbGVuZGFy KHNvdW5k IGRhdGFBcnJheQ== IFlhdGVz IHByb2Nlc3Npb24= RUZBVUxU IEdIQw== YW11cmE= IHN0cmljdGVy LkJPVFRPTQ== IGhhYml0dWFs eEFG QVZJTkc= IHNldHVwcw== ID17Cg== Kioo IHNvaw== IHJldGluYQ== IEZpcmVwbGFjZQ== aW52ZXJ0 IEZvcnJlc3Q= PGRhdGE= XEFjdGlvbg== T1VHSA== IGNhcmVsZXNz LmdldEFjdGl2ZQ== ZXNlcw== IHpkasSZ KSkqKA== U0VN IFBhbmlj VG91Y2hlcw== IHByZWNv L2FjY291bnRz 5L6b UG9zdGFsQ29kZXM= LXBsdWdpbnM= PG1lc3NhZ2U= KHBvd2Vy IHBlcmN1c3Npb24= IGPDqWw= 5o6o IGRhbmNlZA== X1NDQU5DT0RF IFNpdHRpbmc= IExva2k= U2hhcmluZw== LkRpcg== IHNjaHdlcg== X0xB Lk1lbnVTdHJpcA== X3plcm9z IGZpeGF0aW9u IEFtaXQ= IGNvbXBsaWVk LnNwYWNlQmV0d2Vlbg== IGFycmVzdGluZw== IFN1Zw== IHBlcmZvcg== IGtvbXBsZQ== IEVzc2VuY2U= IHBsZWlu c2ltdWxhdGlvbg== IGNyZWF0ZWRCeQ== IEV4cGVkaXRpb24= 77yBCgoKCg== dHJhaW5lcg== Il09JA== IHN1Y3Rpb24= bVBpZA== bm90aW4= IHByZWNpb3M= IEFzc3VyYW5jZQ== IExhbA== LiIm IG1pbkxlbmd0aA== IE1pbmVyYWxz dHJhamVjdG9yeQ== U0FGRQ== IG51YW5jZXM= KGV4dHJh X3ZpZGVvcw== W109ew== IGhvbmV5bW9vbg== X3ByZXA= CQkJCQkJCQkJCSA= IHB1cnBvcw== IGFuemVpZ2Vu LnN0cnV0cw== IHBhZ2Fy LkF1dG9TaXplTW9kZQ== IHdlbmlnZXI= IHBhZ2Fu IGFjaWRpYw== Z01hcHM= IGJld2FyZQ== X2lwYw== IG1lZHM= IGRpc2XDsW8= KSkpCgoK Q2h1cmNo IG51cnR1cmluZw== X21waQ== IHJlc3VsdGFudA== IFBpc3RvbA== c1BpZA== TXNw TW9tZW50 IFVQTE9BRA== TmFubw== YmxpY2s= IG1lc3VyZQ== IExheWVycw== X3RyYWo= IGJ1dHRvbldpdGhUeXBl CWNvbW1vbg== IE15Q2xhc3M= 2KjYsQ== eG9vcHM= X0hlaWdodA== X1dBUk5JTkdT U2V0VGV4dA== IEhpc3Bhbmljcw== TnVsbFBvaW50ZXJFeGNlcHRpb24= LmZhY3Rvcg== IHZpZWxsZWljaHQ= IHNob3V0cw== dHJ1c3RlZA== IG5ld1Jvdw== IEZyYW7Dpw== W2pq 4oCUd2hv IFFEaXI= X2FkdmFuY2Vk KEhhdmVPY2N1cnJlZA== IHVucGw= L3Jvcw== LmVhc3k= IEJBTEw= 550= L2xncGw= IHN1YmNvbnNjaW91cw== ICctJzsK ICcpOw== INGW IHNjYW50 X3Nlc3M= X3BsYXlpbmc= X0lTTw== IHNldFNpemU= X2RlY2s= X0xBUkdF IE1leQ== Q2hpY2tlbg== aWZmaW4= ZGlzcG9zZQ== SEVTVA== TGF1Z2g= IExDUw== IG9uc2l0ZQ== LmlzTG9nZ2VkSW4= IGlycml0YXRlZA== IGJyaWdhZGU= IGRlcXVldWU= Y2xhc3NOYW1lcw== IE3DoXM= IEF0YXJp KElPRXhjZXB0aW9u UmFjaGVs LXNhbXBsZQ== IGVpZ2VudGxpY2g= SUZERUY= Lm5laWdoYm9ycw== IHNlcGVyYXRl IExpc3Rpbmdz LmZm KGltcG9ydA== TW9kZWxBdHRyaWJ1dGU= IHNwZW5kZXI= IG1vdGlmcw== c3N1ZQ== IEFwcHJlbnRpY2U= LWNhdA== clBpZA== Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K b2N6 aW5pb25z L2NvbnRhaW5lcg== IHBsYWdpYXJpc20= V3JpdGFibGVEYXRhYmFzZQ== Ly4KCg== IEZldmVy LVZlcnNpb24= YWNpamE= IHdlaQ== LWluZw== IHRlbWFz IHN1cmdlZA== IGNyaWE= IGFyZA== Yml0Y29pbg== LnRpbWV6b25l IG9iamVjdE1hcHBlcg== IAogICAgICAgICAgICAK IHlsaW0= IElDVQ== IERlcHJlY2F0ZWQ= KSgpOwo= QVJHRVI= dW5nYWxvdw== VGVzdERhdGE= KHB0cw== RklMRU5BTUU= dXBwbHk= IHBhY2llbnRlcw== LGxlZnQ= IFdyaXRlTGluZQ== IHBhcmNlbHM= X2ZvbGRlcnM= IERpcms= LmFzc2VydElzSW5zdGFuY2U= TWND X1ZhcmlhYmxl KGFh IFBvcms= LlB1Ymxpc2g= LWdheQ== IFBldHJh IENvbm5lY3Rpbmc= VGFiQ29udHJvbA== aXZlcmluZw== KFNjcmVlbg== IGNoaWxsZWQ= IGFpbw== VG91Y2hFdmVudA== IGFjY2Vzc2lvbg== IExvaXM= L21vbWVudA== IGFudsOkbmQ= IHN1aWNpZGVz KGhlbHA= YW5kZXJz IFZJRA== QmVp ZXZlbnRv IEFuZ3Vz VmVycw== IEJvcmRlYXV4 LnN0cmVhbWluZw== IHJvdWdl IGNyYWZ0c21hbnNoaXA= b3NzaWw= X0ZBTEw= QG1lZGlh aWxlYWtz RGF0YVNlcnZpY2U= IFRyaXBBZHZpc29y IE1hYXI= Q3Vyc28= UG9zdGFsQ29kZXNOTA== KCk7Kys= JFBvc3RhbENvZGVzTkw= IG9jb3I= IHRhaW50ZWQ= IGxlbQ== LW91dHM= IHh4eHg= IGlycml0YXRpbmc= b3hpZA== b2ludGVk IFRvcm8= X292 LmJpcnRo KyU= IENoYXJhY3RlcmlzdGljcw== IEJldHRpbmc= IG9mZmVuZA== IFBIWVM= IElDTVA= eERD IENk LmdldE1hcA== YXRjaGV0 LmN1cnJlbnRJbmRleA== RVJBTA== IGthcHBh aWRlbmNlcw== UGFyZW4= IFNlcmdlaQ== LWZpbg== J10sWyc= w6FtYXJh R3Jvd2luZw== R2xhc3M= CW1ldGE= dmVyYmF0aW0= L0dQTA== IEthaA== KHN2Zw== Y2xpc3Q= IEJsb3dqb2I= b2NjYW4= LmFib3J0 b2RlbGlzdA== IGRpZmbDqXJlbnRz X09QVFM= PXJlcQ== IGludG94 IGRpYWdvbg== IFsoIg== JlI= IG9iamVjdGl2ZWx5 IGJsaW5raW5n IExvdmVz cmluZ2U= Kik7Cgo= IEJvbmRz IExvdmVk ZWx0cw== IGRpc3BhcmF0ZQ== IEVucmlxdWU= IldpdGg= cmVtaXVt YWphcmFu dHJ5aW5n LVJ1c3NpYW4= bmV3SW5zdGFuY2U= LlRSQU4= IG9yYW5nZXM= L2xvY2FsZQ== IERJU1A= CW5z IFNodXR0ZXJzdG9jaw== IENMT0NL KHJhZA== IGFzc3VyYW5jZXM= IHJhc3A= VWJlcmdyYXBo RW1pbHk= IGludmVudGlvbnM= cmlvdA== IHRvc3Npbmc= IG1ha2VvdmVy IHVuaXRPZldvcms= YnV0dG9uU2hhcGU= 5Yid5aeL5YyW IHBhcnRlZA== 4paR LnNpZ21vaWQ= IHJlZGlyZWN0aW9u IGRpc3R1cmJhbmNlcw== IGludGltaWRhdGVk CUNyZWF0ZWQ= YWdldA== IGNvcnJlcw== IE5FRw== aXRvbmU= L2Zyb250 IFZlcnNl Z2FtYmFy IHByZW1pZXJlZA== IElNTw== IEdvYmllcm5v IGlmcw== YXlhaA== LkNPTA== IGZyZWRlcg== IHN1Ym1lcmdlZA== IE5lcm8= bW9kaWZpYWJsZQ== L0Zvb3Rlcg== LWNlbnRyYWw= IGdvdXZlcg== IFRyaWVk IGRpenp5 UXVlcnlQYXJhbQ== Ij4nKwo= X3ByaW1pdGl2ZQ== 56iO LmdwdQ== IHZveg== ZW56ZQ== IFdpbGRlcm5lc3M= IHByb2JhYmls L3JlYw== IGFjY2Vz IFRydXN0ZWVz R2I= IHBhZGRpbmdIb3Jpem9udGFs U2hpZWxk IE5hbWVu dWRkbGVk IFByaW9yaXR5UXVldWU= UG9vcg== IFNBRg== LS1bWw== IGNobG9yaW5l IHZlcmJhbGx5 IGFpcmU= PjsNCg== aWxoYQ== W2NvbG9y YW5kYWxvbmU= LmFkZFJvdw== IFNvaw== IENvbm9y IG1lam9yYXI= J2lscw== ZGV0YWxsZQ== ICIpLAo= JUA= Lmxhenk= Lmp1bXA= b3N0ZQ== K0Y= IGluZnVyaQ== IHNvbnJh aXRlbWlk JGxvZw== IG11cmRlcm91cw== TEVD CW5pbA== IE3DpHI= KHBn aWxlbw== QXNjaWk= IExvY2toZWVk IFRoZW8= QmVsbA== YWNpb25hbGVz LmNyZWF0ZU5ldw== IOW+ LWZvb3RiYWxs IGVjb21tZXJjZQ== CVNpbXBsZQ== Y2x5 LklubmVyRXhjZXB0aW9u IHBlc29z IHRyb3Bl IEFSR1M= TWlhbWk= IFBhbG8= IFN1emFubmU= X21hcHBpbmdz I3tA IE9jY3VwYXRpb25hbA== X2J1Y2tldHM= Z29hbHM= X1J1bg== LXByZXBlbmQ= c3Nz bWFyc2hhbGw= IGVxdWl2YWxlbmNl IFdlbGNo KE9wQ29kZXM= CWNsb2Nr IE1lZGluYQ== VEVSUw== b3Jhbmc= VGhvdWdodA== IG9hdHM= X1RFWA== UklDUw== IGluZGlmZmVyZW5jZQ== IGFsbG90 LlVzZVRleHQ= IFRyaWNrcw== YXdl LkZJTEw= LXBocA== LnZvaWNl IFBhdGhmaW5kZXI= X1RBR1M= IFRyaXQ= 5oyJ6ZKu YmJj IGFkZGl0aXZlcw== IHNjaGxl IEtleWJvYXJkSW50ZXJydXB0 IHVzZVBhcmFtcw== IEJ1Y2hhbmFu cmlhbmdsZQ== IG11bHRpcGx5aW5n IHNlbGJlcg== IFllcA== Q2hhaXI= LXJlcG9ydGVk X1NESw== LG5v IEZhbGxpbmc= 5rk= ICgpLAo= cGRi IEJvcm91Z2g= LnJlbW92ZUZyb20= IG92ZXJzaGFkb3c= aWdhaWw= IHR1bmc= IG1tYw== W3BhcmVudA== RXh0ZXJu YXZpb2xldA== JykiCg== IGNvdW50ZXJ0b3Bz IHVidW50dQ== 5rc= IM6T IHVucHVibGlzaGVk IEluZGllcw== VU5FVA== IG9mZXJ0YQ== IGRhbWVz IGFzdGVyb2lkcw== IG5vdmVtYmVy Y29udHJhc3Q= LkFkZE1vZGVsRXJyb3I= K1NhbnM= IHNjcmFtYmxpbmc= dGV4dFZpZXc= L2NyeXB0bw== VXNlUHJvZ3JhbQ== QHVwZGF0ZQ== RGVzZGU= U0FU IGRpc3BsZQ== YW5uw6ll XERlcGVuZGVuY3lJbmplY3Rpb24= IGl0bQ== IOe8 IGV0aG9z QVBP IEdhcmPDrWE= aWRpcw== IFN0ZWFr cmliYQ== X3ZlcmlmaWNhdGlvbg== IEZL IEVpbnNhdHo= IHBlcnNvbmFsaXNlZA== LW1vdGlvbg== IE1lbGFuaWU= w7Zo X1ZD IGRyaWZ0aW5n LmNvbnN0cnVjdA== IO2UhA== IGJhdGNoaW5n Li4vLi4vLi4vLi4v RVJQ X3V0Yw== IG11bHRpdA== IG1yYg== Y2Nhaw== Y2h1bmtz IHRyYW5zbHVjZW50 IHBheW9mZg== 4oCUYW4= IHNpbGw= IG9ybmFtZW50cw== Z3Vh VUJZ KHN0ZXBz IEJPUkRFUg== IFNPVU5E YGAK ZW5hcmllcw== IEJpdHRl IGdseXBocw== IG92ZXJydW4= IGJsb2NrSWR4 IE1TVA== IGdlbm9tZXM= dGVuc29yZmxvdw== RGlyZWN0b3J5TmFtZQ== X2xocw== IGZpbnQ= YWRkdG9ncm91cA== IHN0ZWFkZmFzdA== IGNsb3Zlcw== IFNvdmlldHM= IElTQQ== wqNv dXJnZXJ5 c292 INCy0YvQstC+0LQ= IHB1ZA== LXdhdGNo IEhvc3BpdGFscw== fXdoaWxl IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj 4buj IGFrdHVhbA== IGtpbG9ncmFtcw== IEZBQw== b3BoeXM= cHJz KkA= eWI= c2VjdXJlZA== IGFsZ8O6bg== IOCkuQ== cGhhbnM= QWRkb24= IGNlbnRyYWxseQ== X1NVSVRF SW50ZXJlc3Rpbmc= dWx0aW1v QWdhaW5zdA== IEV6cmE= IEhlYg== dWlkYQ== IHNreXM= T0xWRQ== QmVuZWZpdHM= IHByaXNl Lio/KQ== LmlzRGVmaW5lZA== IHN0YW5kb2Zm IHBsYW5v LmxhdGVzdA== ICgkLg== IEdvdWxk IGNhdXRpb25lZA== J10o IG51aXQ= IEhDSQ== Zm9vdGJhbGw= IHdpbGxlbg== UHJvY2VlZA== IGludGVuZGluZw== dGlm IHNwb25zb3Jpbmc= b2hhbmE= RG9z TW9ybmluZw== ICEiKTsK LnNoZWxs IFJFTEFURUQ= IHBpbXA= L2NvdXJzZQ== IHJhbWlmaWNhdGlvbnM= IHBpeG1hcA== IHBvd2VybGVzcw== IGRvdWNoZQ== Y3JpbWU= Y29udHJpYnV0b3Jz KHByb3RvY29s IGdldFBvc2l0aW9u U0VUVElOR1M= IHZpZXQ= aXNzZXM= V2l0aEVtYWlsQW5kUGFzc3dvcmQ= UmV0dXJuVHlwZQ== QXBwZQ== IElLRQ== LkNvb2tpZXM= Lm1lZGl1bQ== LmdldEpTT05BcnJheQ== X0Zvcg== L3Rpbnlvcw== IFRhYmxlQ2VsbA== IFJFUExBQ0U= Lk5ldHdvcmtpbmc= IGJvd2Vk CW1k PSJ7ISE= IGhvbmRh IEV1cg== IGluZG9uZXNpYQ== IGhlbmQ= LnZpZXdtb2RlbA== CWN0cmw= IFRhYmxldHM= LW9yYW5nZQ== ZXJyYXM= X2dyYXBoaWNz e3M= IFRpdGxlcw== IGRpYWdub3Nlcw== b3VwbGU= X0RvdWJsZQ== W3Jlc3VsdA== IGppdHRlcg== X05VTUVSSUM= PmY= X01Z 0LjRgdGC0LXQvA== c3RvcmVJZA== IHJlbGlucXU= ZW9z IHdpZGVuaW5n IHRhY29z LllFUw== XSsn IEluZGV4ZWQ= IHByb2Zlc3Npb25uZWw= IFN0cmFw QnVmZmVyRGF0YQ== ZWVh ZXJpbg== QU5DRVM= X1RYVA== IHt9Lg== KGNvbnRyYWN0 eXc= IGJsaW5kbmVzcw== Q0hBTg== CWdsQ29sb3I= IGN1cnJlbnRQb3NpdGlvbg== IENhdWNhc2lhbg== JGltZw== I2Fh IHNlYW4= TWVzcw== Kj0qPQ== IGNhcGFjaXRvcg== YWxmYQ== LlJlbW92ZUFsbA== IFdQQVJBTQ== dWxhZG8= bmljb3M= IG9yZ3k= R1g= X0RFVklDRVM= b3Vya2U= IGtC IHNvcGhpc3RpY2F0aW9u X2F1ZGl0 L0lQ IEx5ZnQ= L1N0 CWNhbmNlbA== IG92YXJpYW4= bWFyaW5l a8SZ IFlN IE1pbG8= IE1hdFRhYmxl IEFiYnk= bnpl IEx1ZHdpZw== X2FybW9y IHNjYWZmb2xk 4buXaQ== YXV0aG9yaXR5 4bqleQ== LmdldFByb2R1Y3Q= IE9yYml0 X1BhcmFtZXRlcg== LmRhdGVGb3JtYXQ= L3RhZ3M= LlNwZWVk KExpbmU= IHBvbGlzaGluZw== IGtvbWI= IHJ0cmlt J2ljb24= cmllcmU= IFByZWZlcg== c3RydG9sb3dlcg== UmVncw== Q0JE LT4K IHBhcmFzaXRl ZW5kc1dpdGg= IENvYnJh OnRlc3Q= IE51Z2dldHM= xaF0 Q29yZUFwcGxpY2F0aW9u L2JpbmQ= IE1jSW50 aXR1bmVz Wy0t IFN1cnByaXNl X0lORw== IEZhc3Rlcg== 0J3QsA== OkU= IGRpbnQ= bmdl LiInLCciLiQ= IGFkamVjdGl2ZQ== LmJj Y29uc3VtZQ== Qk9S KGFuY2hvcg== IGVzdGVlbQ== IGJyZWFrdXA= ZGVjYXk= ICQKCg== RWR3YXJk QVNJ IGF0dGFjaGVz X0RJU0s= IFdpbG1pbmd0b24= IEt1bA== IFtbXQ== IERlcGFydG1lbnRz IHJldHVyblR5cGU= IFVOSVRFRA== b2JqZWN0aXZl IGdpcmxmcmllbmRz X0dV QHN0b3Jl LU91dA== Lm1vdmVz KHN0YXJ0RGF0ZQ== CUpCdXR0b24= IFBhY2U= IEJlYXRz IGxpY3o= IGV0aGVyZXVt IGNoZWVyZWQ= IGF1Y3Vu UmVnYXJkaW5n IG1pZ3JhdGluZw== IGZ1dGlsZQ== IFRhY29tYQ== X0NoYXJhY3Rlcg== IHZn IENvcGE= 2Ks= IG5hbA== IGxhbmRmaWxs IHRhbWls IHBlcnBldHJhdG9y IFBhY2Vycw== LmdldE9yZGVy fA0K R2V0T2JqZWN0 IGJsYQ== IEhhcmFt cG9ydGxldA== IGxva2Fs TWVyY2hhbnQ= UGFzc3dvcmRz b25lbnQ= IGFydGVyaWVz IEludGVsbGk= XFN5c3RlbQ== PWxvY2FsaG9zdA== LmF2aQ== IFZlbmQ= KHRibA== Q29ycmVjdGlvbg== IHV0ZXJ1cw== IHNhbGl2YQ== Kys7DQoNCg== KCcqJyw= IHNuYXRjaA== IFNUUkVFVA== KVs6 54Sh44GX44E= U2VudGVuY2U= KCkuJy8= OnJlbGF0aXZl leOCkw== X3VzZXJpZA== b2xpbmc= IENsYXNo CXNldHVw KG1p IGppdA== IFNjYW5kaW5hdmlhbg== IFBob25lcw== Iic7Cg== IHR1bXVsdA== IEludGw= IFNpbm4= KG5ld3M= IGRicw== IFJlbWFya3M= S2l0Y2hlbg== IGFkbWlyYWJsZQ== X2Rhc2g= IERPTUFJTg== YWRkTGlzdGVuZXI= Il0uKA== CU1ldGhvZA== bWFya3Q= LGV4cG9ydHM= IG91dG51bWJlcg== X0FTQw== cHJlbWl1bQ== KU5VTEw= IEJvd21hbg== LnNldE9uSXRlbUNsaWNrTGlzdGVuZXI= IFJlZ2V4T3B0aW9ucw== S2Vs L21hdA== 44GT44KM IHdlYXJlcg== aW5pcw== W2RpbQ== IE51dHp1bmc= aXNidXJ5 5Yid IHJvb3RSZWR1Y2Vy ZXlK SW5jbHVkZWQ= LUxlYWd1ZQ== YW5heA== KGluZmxhdGVy IEZpZWxkVHlwZQ== IHNob3Zl IGZ1bGxmaWxl RGF0YU1hbmFnZXI= LmdldExlZnQ= IEZz ZHJvcG91dA== IOuyiA== IG1hbmnDqHJl IGZsYW1pbmc= IGNvbXBsZXRhbWVudGU= 4oCw fC4= RW5lbWllcw== b3NjaQ== IFNBWQ== IG1hcnk= KFJ1bnRpbWVPYmplY3Q= IH4+ IFNpbXBzb25z J10uJA== X21lbWJlcnNoaXA= KSI6 IGxheW91dE1hbmFnZXI= IFJvY2tlZmVsbGVy ICd8Jw== SVBI RE9O YWNodGU= UGVhY2U= aHRhcg== QCIK IHRyZWFkbWlsbA== IHNwdXJyZWQ= IEtW bWlkZA== IGZsb3dlZA== w6Nlc3Rl R2VuZXNpcw== PT0+ IFZlbnR1cmE= X2VsaW0= INC40LzRjw== IHNvbmd3cml0ZXI= Y3JlYXRlRm9ybQ== SUdITA== IG1vbGRlZA== IHJldmVyZWQ= VW5kZXJUZXN0 aW1ibGVkb24= X1Nlc3Npb24= IG1hc2NvdA== IGFsZg== 66mU PldlbGNvbWU= IGtub2Nrcw== IEVxdWF0aW9u LnRvdWNoZXM= X0xhc3Q= IHVwYmVhdA== YmlnaW50 IGVudmlz L2Jhbm5lcg== 44GC44KK44GM IERvd25z X1NG IHJ1bkFwcA== IHF1ZXN0aQ== VHJhZGl0aW9uYWw= X3dhaXRpbmc= cGlja3Vw KCdALw== CXNl IEtlcm4= IERlbGljaW91cw== IHNhdHVybg== IEpTT05FeGNlcHRpb24= 44KN SlI= fSgpKTsK IFNvbWFsaQ== dWFp aW1hZ2Vt YW5kRmlsdGVyV2hlcmU= w6hsZXM= aW5ib3g= IHlhcMSx IG1laXN0ZW4= YF0o U1dH LGNsYXNz 4LWN4LQ= dGFpZW50 IEZyYW7Dp29pcw== QXV0aFRva2Vu IHB1ZXN0bw== IGps IGdhdGVk IERlYXRocw== IFNpZGQ= IHByZXZhaWxlZA== LcOqdHJl KGFsYnVt IHFpbnQ= bWFyY2E= IE5BRlRB IHRpZ2h0ZW5lZA== X0dBUA== RU5TSU9OUw== IExpYmVydGFyaWFu X3N0eWxlc2hlZXQ= LlNldEludA== X3B1Ymxpc2hlcg== cGFnZU51bWJlcg== enNjaGU= IFNRTEFsY2hlbXk= IGhvb2Y= Z2V0VG9rZW4= IG5lYmVu bHVuZA== Lm1pdA== ZXJycw== LnNldE1pbmltdW0= LXByaWNlZA== KHBv ZW5nYWdl X0ZU Ly8KCgo= IHRvbWU= ICI+PC8= VmVjdG9ycw== IFRlc3RVdGlscw== ZmlsdHI= VXN1 IGRpY3Rpb25hcnlXaXRo IG9icmFz IEJEU00= LmdldFRhcmdldA== IGFsbG93YWJsZQ== IEluc2VydHM= CU5vbmU= IGxpYmVyYXRlZA== S2VudA== IFdpc2hsaXN0 IExhZ2Vy IGp1aW4= IG51ZXM= IG1vbmFzdGVyeQ== IG1pY3Jvc2Vjb25kcw== IEhhbm5h 0L7RgdGC0Lg= d2VhcG9ucw== X3Nwb3Q= b2RvbQ== Lk1vZGVsRm9ybQ== IG9yZGVybHk= RklOSVRF IHJlc2lkZW5jZXM= X3RD Q0dDb2xvcg== IMW+ZQ== IHNjcmVlbnBsYXk= IHB5bW9uZ28= IGTDqXQ= IGRlc3Rh IE5ldXJvc2NpZW5jZQ== bmllc3Q= QEdlbmVyYXRlZFZhbHVl RUxTRQ== PGw= IGRpc2pvaW50 LnB1Ymxpc2hlZA== ZWxsYW4= IFN0cmluZ1dyaXRlcg== LkJyb2FkY2FzdA== IEZlaW5zdGVpbg== YW1waGV0YW1pbmU= S2V5U3BlYw== IEdyaW1t ZXR0ZWw= 4Lic T3Q= aWJyYWx0YXI= Y2Vi IHRpbWluZ3M= aW5lZQ== IEFuZHLDqQ== RXNzYXk= Lmpk IEJ1bmRlc2xpZ2E= UmV0dXJuZWQ= IGFwcGFsbGluZw== LkJpZ0ludGVnZXI= IFNFTg== IEhvbWVtYWRl LmNoYXB0ZXI= LXZhbGlk IEFUVFJJQlVURQ== dXN0cmlh IGVudMOjbw== UmV0dXJuaW5n dmVydGlzZXI= LlBhY2thZ2VNYW5hZ2Vy Q2xhcms= IHF1b3Rhcw== IHNjYWxlRmFjdG9y IGNveg== X21pbmk= IG11dGF0ZWQ= LmFjdGl2YXRpb24= Km1hdGg= LnZlcnR4 PGFydGljbGU= IGVtYnJvaWRlcnk= L2J1c2luZXNz Y2tldHQ= c2NpZW50aWZpYw== IEdpbGVz IHJhY2Vy X3BlcmZvcm1hbmNl IGxhbWluYXRl IFBISQ== UsOp IEF0aGU= Y29sZXM= IHNhxJ8= IElua1dlbGw= CXNpZw== IHNwYWNlc2hpcA== IGluc29s IFVDbGFzcw== LmxlYWRpbmdBbmNob3I= dG90YWxz IHNwcmlua2xl IE1vZHVsYXI= ICdcIg== b3Jvbg== LlJlYWRBbGxUZXh0 ICAgIAkNCg== L2lvbg== REVQVEg= X21pbmltdW0= XENhY2hl IGRpdmVyc2lmaWVk aWduZXQ= IGRvam8= IFVJQWxlcnRWaWV3 L3R0eQ== IFNhc3M= IC9cLig= IElNQUdFUw== IGRhdGluZ3NpZGVy IEV4cGxvcw== LmdlbnJl XEV2ZW50cw== IGVudW1lcmF0ZWQ= Y3VycmVudFN0YXRl aXRydXN0 Q2FsbGFibGVXcmFwcGVy Rm91bmRlZA== IHJveWFsdGllcw== KFByb3BlcnRpZXM= IFVTUFM= LS0tLS0tLS0tLS0NCg== LlJlYWRUb0VuZA== IGNvc3k= IGFwZQ== X2RlZmluaXRpb25z IHBhZ2VObw== IGR6aWVjaQ== c3RhbmRlbg== IGJlc2Fy aXRpbg== IGNvbnNlcXVhdA== IHBydg== IHNwbGl0dGVk IGVzcG9zYQ== PWZpbmRWaWV3QnlJZA== V2Fsa2Vy IEhlYXJ0aA== aWJyYXRvcg== b3RvbXk= YWdnYWJsZQ== IOW9kw== 77yBJyk7Cg== aW9uYXRl L3llYXI= IHNldEM= IE1lZGlhVGVr LWJveQ== LnRvb2xTdHJpcE1lbnVJdGVt Q29uZmlncw== YXR0ZW5kZWQ= IGVtb2M= IEJhaQ== b3BvbGl0YW4= IGludHJ1c2l2ZQ== IHp1Zw== IGZmbXBlZw== X2Jvb3N0 IG1vemlsbGE= IHNsaWNpbmc= V0c= cGFnZXNpemU= UHJvcGVydHlEZXNjcmlwdG9y IEFsZWphbmRybw== VVNFUw== SG9zdGluZw== IHJpc2tpbmc= IEludml0ZQ== IEphemVlcmE= IHJlZ2FpbmVk IEhhZ3Vl IGd1ZXJyYQ== IGVuY2xvc2luZw== J10iKQo= PFRyYW5zZm9ybQ== Lk5PUlRI IGNyaW0= SU5V IGNsZW4= IE1vdGhlcnM= IE93bmVyc2hpcA== RHJpbms= IGJlYmVyYXBh Lm9uZXJyb3I= KSsK IHRhYkluZGV4 IERpbw== IEZvcnR5 KExpbms= IHNlZ21lbnRlZA== IGphbWVz IFRhcmdldHM= IFJUUw== INC60L3QvtC/ IHZhcmlhcw== IHTDrXR1bG8= IGTDvHI= L0dhbWU= cmFuc2l0aW9u IGRpc3Rpbmd1aXNoaW5n dWt0dXI= YW5qZQ== IE1jQ2FiZQ== cGFp KHRr RGVzdHJ1Y3Rvcg== R2FtZU9iamVjdFdpdGhUYWc= JGg= IGFmcg== LnNldEVtYWls IHJlcGV0aXRpb25z bGFuZGVycw== IFNoZWE= X2NsYWlt IGFjZXNz QmVuY2htYXJr LkVzdA== LlBP IE7DpA== IGl0Y2hpbmc= IGNvbmRvbWluaXVt X0ZXRA== IHJlYWx0aW1l IGNpdmlsaXplZA== X3BoeXNpY2Fs UmFs IHdpbnRlcnM= IFlhZA== IGZvcmE= IGNhbGlicmF0ZWQ= UGV0cw== IHN0b3JtZWQ= IGplbA== IFNTUA== ZGF0YWdyaWQ= IExhdQ== dW5hcg== dWxmaWxsZWQ= RVJJTkc= IFRyaW8= 2LHZiA== Rm9yZWdyb3VuZENvbG9y PW91dA== LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K IHZpZW50 IEFETQ== X0Nvbm5lY3Rpb24= LWNhbmNlbA== KCcuJyk7Cg== IHNhaWxz IGVxdWl2YWxlbnRz TmI= IGZseWVycw== IEdJUg== a2VsaWc= LXdhbGw= LlJlcXVpcmVz IGNvc2U= IEFOQw== IGphZGU= IEFsZWM= IGVuZHJlZ2lvbg== IEVYVEk= ZWRlcmU= VGVycmFpbg== U3BlY2lmaWNhdGlvbnM= IFN3ZWVw c2V0SXRlbQ== IHNtaXJr IHNjcmlwdGVk W1N5c3RlbQ== 56eB IHN5bmNlZA== IHNxcg== Z2V3YXRlcg== IGpld2Vscw== IGhkYw== 4KWN4KSw z4Y= w7xzc2VsZG9yZg== bGllbg== Qm9yZGVycw== IEF0b21pY0ludGVnZXI= IHBhcmFseXNpcw== Q2xhc3NpZmljYXRpb24= IGdsaWRl IHVtcA== IC8+fQ== IHZlbmRpbmc= 4Li04LiZ bm90aWY= Jl8= IEVtZXJnaW5n YXRpY29u IHByb3BhZ2F0ZWQ= LW9yZGVycw== YWdhcw== dXJnZW50 KFRpbWVTcGFu QUxDSEVNWQ== L2Jvd2Vy 7IKw LmJvb3N0 LmRlcGVuZGVuY2llcw== LlN3aW5nQ29uc3RhbnRz dW50bGV0 LmNoYXJz LWNpZ2FyZXR0ZXM= IE1vZHM= ICAgICAJ IGJyYXZlcnk= IGNvdW50ZXJlZA== cmVsdWRl X21vYg== QUlORUQ= bmdvaW5n IHVuZGVyZ3JhZA== R2V0TWV0aG9k RHVhbA== X2pvdXJuYWw= LE5v IHNpZGVs IExhcnNvbg== KyIsIis= IG5hcnJhdGlvbg== IFN1YndheQ== IExleGVy IE5pbmc= aW5kaWM= dGhhbmU= LlNJRw== LWVhcnRo IGJlcnJ5 IFRldWNob3M= CUVudGl0eQ== ZXJzcGVjdGl2ZQ== Tm9z IE93bmVk QlVS IGxpbmVubw== IEZpamk= R2V0SW50 U3RyaW5nUmVm ICcmJw== dWFkYQ== LmNhcHRpb24= YXBwTmFtZQ== KG9mZg== IHZlcnN0 IHR5cG8= 6ZyA6KaB YXRlcmFuZ2VwaWNrZXI= IHFlbXU= IEdFTw== X0Ns LklU IE51bmVz W1o= IENvbXBsZXRlbHk= LkxpdmU= IEphcw== IHdlaXQ= Y29zaXR5 IHBvbGljZW1lbg== KHRhcmdldHM= aXRsZWRCb3JkZXI= IOinow== LkdsaWRl IGRlbW9uaWM= SW50ZXJpb3I= LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IERvdGE= IG9yYml0cw== QU1Z IFRyaW5pZGFk aWN1bQ== Lnph IGdldEludA== QXRsYW50YQ== IGFtbmVzdHk= IFJhaHVs IF98 aGlybw== IFRBS0U= IGp1bWxhaA== IEF1dG9tb2JpbGU= 4buP d2hvc2U= X1NBTVBM UGF0aWVudHM= INGC0LXQutGD0Yk= LnN1YnNjcmlwdGlvbnM= IE1lbnRpb24= VG9Xb3JsZA== aXBh CU1lc3NhZ2VCb3g= PEFwcGxpY2F0aW9uVXNlcg== INil ZmFicmlj a2VsZXRhbA== QmFyQnV0dG9u IGFyY2hldHlwZQ== aW5zdGFudA== IGludGVybmFjaW9uYWw= IFZveWFnZXI= KHRvdWNo IFZhbGs= L01JVA== IGNhdWw= J0Nvbm5vcg== KCIh KE9Q ZmFjdWx0eQ== IEJhdG9u IFZvbHVudGVlcnM= dGFuaw== X0JJTkRJTkc= O2xpbmU= IFZlcnNpb25z WUxFUw== IGplZXA= KEVuY29kaW5n IGdlb2xvZ2ljYWw= TmljaA== KHBkZg== IGFuYWx5emVz IGNhcHRpdmF0aW5n IGhpem8= Lm1kbA== IGphcA== IGZsaXBz CWRm IFBpZXQ= IG5yb3dz IGthbXU= INCy0L7Qtw== IHBydW5pbmc= YWN1bGE= IHRyYXZlbGxlcg== U2hvb3Q= LmVwc2lsb24= IEZsZW1pbmc= aWJ1cg== b3BlcmF0ZQ== aWdodGVy IGJlZ3M= IFdhbG51dA== KFBhcnNlcg== IHdpdGhkcmF3YWxz aXNjb3BhbA== IGJpbGxib2FyZA== a2Vr LW9wZW5pbmc= IER1ZGU= Y29uaQ== eEVC IGNhbG9y YW1haGE= LlRYVA== RHJ5 IG1pc3Npb25hcmllcw== X1ZlcnNpb24= IG11bHRpbGluZQ== 4oCUd2U= IGNvbXBvbmVudERpZFVwZGF0ZQ== RmF2b3JpdGVz aWdoYW0= IGpvdXJuw6ll IGFtdXNlZA== IE9tbmk= dGd0 IHdhaA== ZXRpbmU= IHBoYXNlZA== IG9uU3RvcA== Y3JlYXRpdmVjb21tb25z U29waA== IHVuYm9ybg== PUU= IEZlZEV4 bm9ybWFsbHk= IGx5cg== TWF0cml4TW9kZQ== IHplaWdlbg== QXRo IEt1bQ== w6RobGVu LyI7Cgo= IGRhbGxl IGxhbmNl IFN1aXRhYmxl IGNvdW5zZWxvcnM= 5YWo6YOo IGZhc3Rh IGJsYXppbmc= 7KeE L3R1dG9yaWFs LnRjcA== 5pmv TWFuYWdlckludGVyZmFjZQ== IFNhbWFy CWdsVW5pZm9ybQ== IHByZXJlcXVpc2l0ZXM= IGFudGljaXBhdGluZw== cmFxdW8= a3Nlbg== TWFnbml0dWRl dXRvbWF0aW9u SGllcmFyY2h5 IGRldmlhdGlvbnM= aW1ldA== Q0NJ PSgK IGFudGxy CWluaXRpYWw= IFJlc29ydHM= aG9tZXM= CXBvb2w= IG1hdMOp P29wdGlvbg== Om15c3Fs KHV0Zg== LlRhYkNvbnRyb2w= PlRpdGxl IEFkb3B0 LklzTWF0Y2g= IGVudHJ1c3RlZA== U3VzYW4= c3dpbmc= aW1hZ2VuZXM= IHNlbGVjaW9u IGFpZGluZw== KFtdKg== IHNldEZyYW1l c3Bpcml0 L3Jzcw== SXRhbGlj IFByb3BlbEV4Y2VwdGlvbg== IFRvbGw= LkZpbmRHYW1lT2JqZWN0V2l0aFRhZw== aW5hbnQ= IHNlbGZpZXM= XXxb IGFwcGxpY2F0aW9uQ29udGV4dA== aXhl Y2Ri ZWJi IE92ZXJzZQ== IHNxbENvbW1hbmQ= SG9zdE5hbWU= LWxhdW5jaA== Umlzaw== O3I= LlNwYW4= X0NJVFk= X01B LyIKCg== UGF3bg== IFllbHA= QnVuZGxlT3JOaWw= IG1heW9yw61h U3RhY2tOYXZpZ2F0b3I= ITsK IHRodWdz IEJhcm5ldHQ= 44O744O744O7Cgo= IOqygA== X0NPTlY= IGJ1enppbmc= a2V0ZXJhbmdhbg== TWlsaXRhcnk= d2VlZA== IGRlbGltaXRlZA== 6LWE5rqQ INCw0Lo= X0hFTFBFUg== IFJFQURZ TG9vcGVy KioqKi8K IFRydWNrcw== 5Y67 X3BvZA== T01BVElD LWphdmE= IHVuaWZ5 L0FyZWE= ICcvJyk7Cg== IEdhbWJsaW5n LkhpdA== IEZhcnJlbGw= X2ZpdG5lc3M= cmVjb21tZW5kZWQ= emVuZA== b2RpZQ== X2JlYW0= IHBsYWdl bmRvbg== LmFzc2VydGo= IGdyYXRl TWVhc3VyZWQ= LmNlbnRyYWw= Z2VzdHVyZQ== IEdsb2JhbEtleQ== cHl4 IE5lY2tsYWNl 5Y2O LkFkZENvbHVtbg== IFJ1ZGQ= IFByZXNieXRlcmlhbg== dW5kbGVy IyFb X2xhaGly KCk9PSI= QWNjZXNzaWJpbGl0eQ== LXRyYWluaW5n IFRob3U= X1BJWA== X1RSWQ== PEo= xrDGoW5n bHVjaw== X01BWElNVU0= IHRoYXc= VW5pZmllZA== PkNvbnRhY3Q= LVByZXNpZGVudA== LXBhcnNl IFBpY2tlcg== TWFyY28= dHJz zrQ= LiQu X01FU0g= IHNhZ3Rl Kz0n 0K8= KHBhcmNlbA== aXZvcnM= IGRpdmVydGVk QUdBSU4= IG5lc3M= IHZhbGxleXM= IC4uLig= IEVRVUk= IE91dHM= IERlbW9uc3Ry RGV0YWxsZQ== IOu2gA== UG9pbnRYWVo= LmVwcw== IHN5bm9ueW1z ID09KA== 4oCcWWVz J3V0aWxpc2F0ZXVy TmFtaW5n TEVW cHJvdG9jb2xz IOyb IGdldFVzZXJuYW1l LXZhcg== X210eA== IHNwZWN1bGFy IG5vdGFz SG9yaXpvbnRhbEFsaWdubWVudA== IEJheWVy c3Vz ICAgIAkJCg== IFNoYWNr cmVzaGVy IGltbWF0dXJl YnJhY2h0 SVNDTw== LmNyZWRpdA== IHZpbmVz X0xQ RUVERUQ= IFNjYXJib3JvdWdo w6FudA== KT09Jw== CWRlbHRh X0NPTE9SUw== LkN1c3RvbUJ1dHRvbg== IGFmaXJt IEppbmc= UGFybXM= Y2VudGVycw== LT5fX18= IExETA== LWNvbnRyaWI= IERyZXNkZW4= IFBpeGVscw== ICIiIiIsCg== TEVUVEU= eEJF IEh1c3Q= IEV4ZWN1dGlvbkNvbnRleHQ= IEJ1ZmZldHQ= Y2xhbXA= LkFydGljbGU= IFJhdGg= IFBleXRvbg== IExPV0VS b29rZQ== IHRpZGFs IHVuaGVhcmQ= IFNoYWxs IGJvbWJhcmQ= YW5vdmE= W21hc2s= KGNyZWRlbnRpYWxz IEV1cm9z IGJyYW5jaGluZw== IHN0cm9uZ2hvbGQ= IGNpdmlsaXphdGlvbnM= LWNvbm5lY3Q= IExTVE0= LW1vdmluZw== IHV0ZW4= Y3Jhc3Q= X0RJU1A= IENvbnRyb2xsZXJz dXBl LnBlbg== IGRlc3Nh IGRpZsOtY2ls dWl0YWJsZQ== b2ZpcmU= W2NoaWxk UkVGRVJFTkNFUw== IGRlY2VpdA== IFVyZw== PEVkZ2U= IGRlc2k= IEJPVEg= ICcpJzsK dHlwZU5hbWU= Q29tbWFuZEV2ZW50 d2hlcmVJbg== KG9wdGltaXplcg== IHLDqWFsaXM= IG9taW5vdXM= IEJyYWNrZXQ= IGRhdGVTdHJpbmc= IHNpbmdseQ== KEpGcmFtZQ== 4oCZVA== ZXNsaW50 KGhlcm8= IE1hcmE= IGNhdGNoeQ== LGNhbGxiYWNr IGN0eXBl cHJlc2V0 CWdsZnc= 0LXRiQ== aGs= IHRpdGFu QWNlcHRhcg== 44Gh44Gv X2Fzc2lnbmVk X2VyYXNl IGluZmFuY3k= UmV2aWV3ZXI= IFJlY29yZGVy IHNjbQ== IEJpZ2dlc3Q= IEdvYQ== CVND X0xvY2F0aW9u X29yaQ== a2ls cmVuZGU= IG1hcnpv U3RyaW5nVXRpbA== 0YPRidC10YHRgtCy IEhvd2U= xrDhu51p Zm9pcw== WE1MRWxlbWVudA== IGRlcmVjaG9z IGR1bmc= IFdhaw== IEdhdw== fVxc ISIpOw== IEpvaGFubmVzYnVyZw== IHN1Ym1hcmluZXM= IGFjY29s IGZvc3RlcmluZw== LgoKCgoKCgoKCgoKCg== Lk9wZXJhdG9y IG51b3Zh IHRyYWplY3Rvcmllcw== LnNjaGVkdWxlcnM= IEZvbGxvd2Vycw== IEFuZGVyc2Vu IFBlZ2d5 LmZyZQ== xLFjxLE= IGt2cA== Y29i LWxlbg== IG1haWxz IGFjY3I= IEpBVkE= IGFkbWluaXN0ZXJpbmc= RGVmYXVsdENlbGxTdHlsZQ== IGNsaWNrYWJsZQ== IEphY2tldHM= O2Rpc3BsYXk= IGJyZWFkY3J1bWJz Y2hhbA== Oic7Cg== IEhvdmVy dWNjaGluaQ== IHRlYw== IHN0b3B3YXRjaA== X1JlbGVhc2U= TWF5b3I= 4Z62 IFlhbmtlZQ== Y2huZXI= QXJ0aWZhY3Q= LmJhbm5lcg== IGtm X3N0dWR5 Zm92 IE1lZXRpbmdz w7Zt IGluanVyaW5n L2RvY3VtZW50YXRpb24= QkNN c3R5bA== CXJi IG9yaWdpbmFscw== IGZsZXJl IFRlcnJhcmlh dG9rZW5pemVy LWxpdGVy Jyk7Ig== IHBldGl0cw== IEJidw== IFRoaWVm VUlMVElO Uk9VVA== IHNudWc= Pj4p LW5pbmU= IH1dOwoK IEJlbGxldg== IGVsw6k= IHl5bg== eW5hbW8= Z2xlcw== IHNwZWQ= LkJVVFRPTg== IGRpc3BlcnNpb24= b3VibGVz IG5vdmVsbGVy Il0uIg== IHByaWVzdGhvb2Q= ICIiKQoK CWd1aQ== LWluYw== WG1sTm9kZQ== IHN0dWRz LklzQWN0aXZl IHRyw6Q= IG9yZGFpbmVk IEJ5dGVBcnJheUlucHV0U3RyZWFt IHJlcXVlc3RCb2R5 IFJUUA== UkVTVUxUUw== KGNvbGw= IHJlbG9hZGluZw== Lk5hdmlnYXRvcg== X2NvdW50ZXJz IGJ1ZGRpbmc= IGxpY2Vuc2Vl b2xvZ2k= IHPhuqNu IEtpcw== IEZsYXR0ZW4= X3ByaQ== IGFwcHJvcHJpYXRpb24= 6K+E6K66 X1JTUA== Y29tYmF0 X1BH IGhpc3RvZ3JhbXM= ZHE= RW50ZXJwcmlzZQ== IE5PQUE= IFNwZWVkd2F5 IGJhZ2k= IEJld2VydA== RmxvYXRpbmc= IEtpbWJlcmx5 UHJvc2Vj SmltbXk= IEVsaWFz IGFyYml0cmFyaWx5 IOS9v+eUqA== IENvdW50cw== dXN0ZQ== Rmlyc3RDaGlsZA== IENsZWFucw== LnB1cmNoYXNl IGludGVycG9sYXRlZA== IGJ1aWxkdXA= X1NURU5DSUw= RWd5cHQ= IGF1cmU= LnRydXRo ZmVvZg== IEdpbQ== b2NhY2hl IFV0dGFy X0NPTVBMRVRFRA== U2Vlbg== IE5hcG9saQ== KGRt IGdyaXR0eQ== LmVudGVycHJpc2U= Y29uZXhhbw== IGdhdGhlcnM= IHNldFNlYXJjaA== IENsaWZmb3Jk IFNuYXBl IFNhbHZhdGlvbg== TG9naW5Gb3Jt Q3JpdGljYWxTZWN0aW9u LnVzZXJkZXRhaWxz IHJlcGFpbnQ= 44GC44KK44GM44Go44GG SHVudGVy WmVu VGlueQ== bWxhbmQ= ZXJ0aWw= CWJ1ZmY= X09mZnNldA== IHNtZWxsZWQ= Uml2ZXI= LXRvcGlj IGFjb21w IFJvdXRlU2VydmljZVByb3ZpZGVy IDwr b21icw== IENvb3BlcmF0aXZl IHNldWxl IGFpbWU= c2hvdWxkUmVjZWl2ZQ== SG9uZw== IG9hc2lz IEdlbWluaQ== cmFwaWQ= RHVw KFF0R3Vp b2RvbnQ= LWdudQ== IFNlbGVuaXVt Jyk/Pjwv IE5vcGU= R3JlYXRlclRoYW4= Lk9ic2VydmVy IEFwcHJvcHJp IExvbmVseQ== IGhhaXJjdXQ= IGFsbGVyZGluZ3M= w7NwZXo= esWR IHNsdW1w IEdpbnM= IGdpb3JuaQ== IHBhcGVyYmFjaw== LkZpbGVSZWFkZXI= ZGFm Y3JlZHM= dHlwaW5ncw== ZGVoeWRl Y29pbA== U291dGhlcm4= IG1vdXNlQ2xpY2tlZA== emVpY2huZXQ= dXNlclJlcG9zaXRvcnk= RGVzdHJveWVk aW50ZXJuZXQ= IEVpZA== IGxpbmtlcg== 4oCZQg== IHNsYXVnaHRlcmVk IFBlcnI= CVJ1bnRpbWVPYmplY3Q= c2FpZGE= IHBhZ2VDb3VudA== IFJhbmRvbHBo IEpOSUVudg== X3N1cGVydXNlcg== LWRpcmVjdGVk IElEYg== IEJlcm5hcmRpbm8= IE5pbnRo IEFsZ29yaXRobXM= YmRi QHRlc3RhYmxl LmFybQ== YmVsbGlvbg== KHNpZA== IGJyaWVmZWQ= 4pWX 6YWN572u IFVtYQ== IEluZGljZXM= IEJ1Y2NhbmU= IGF5YW50 RnJlZWRvbQ== IFl1cmk= ZXRzaw== X1Bo IGl0YWxpYQ== Y2xvc2luZw== IHdyaXN0cw== ICp9 c2VjdXRpdmU= RW52aWFy cmFpdGg= IEhhd3Ro 15M= ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo= cGFnZVRpdGxl IGRoY3A= IOyLpO2WiQ== d2lzaGxpc3Q= IGJsYW1lcw== IHNpZGw= dWRkZWQ= IGNvbnRyb3ZlcnNpZXM= 6I8= KHVzZXJEYXRh IGxpbnNwYWNl IERpZmZlcmVuY2Vz X2RlcG9zaXQ= REVUQUlM LmRlY2s= IGNvbnRpbnV1bQ== IHNhY3JhbQ== b21pdGU= IG5mbA== Q3Vt IHNvZg== IGV2aWxz IGVudGlkYWQ= CXNvY2s= IExlbW1h LlNoaXA= IHppZw== VGVsZWZvbmU= SURFUw== IE51bWVyb3Vz Lm1ldHJpYw== aW5zbg== IGNvcHlyaWdodHM= IGNvbXBsaWNhdGlvbg== IFVSTFNlc3Npb24= IGRpcHBpbmc= IGNx IEJ1c3R5 cmVsYXRpb25zaGlwcw== IENvcnZldHRl U3VtbW9u ZXZlbnROYW1l SXNzdWVz IGlycmVzaXN0aWJsZQ== IGdyaXM= Q0FTQ0FERQ== IHBhdXNlcw== IGxlZGdl X0dQ LkltcA== IG9yZGVyYnk= IE9yZ2FuaXplcg== IEdyZWVud2ljaA== T2Fr LW1lbWJlcnM= IFdlYkdM IGdhbW0= bW9kdWxlSWQ= IGZ1bGxQYXRo bG9nZW4= KGV2ZW50TmFtZQ== KCIuIik7Cg== IGtyaXN0 IGNsaWZmcw== IFBlcmNlcHRpb24= RVRJTkc= IGzhuqFp IGludGVydg== IG9wcG9ydHVu IEp1ZGdlcw== IENvbWJpbmF0aW9u Y29udGludWVk Y29ubw== LmRyYXdSZWN0 LkNvbXBvc2U= IHNpZ3VpZW50ZXM= IER1ZmZ5 KGVuY29kaW5n IFZ1bGthbg== IEdlcnI= IHBhcmZhaXQ= KHl5 X1RIQU4= IGdldFNlcnZpY2U= X09SRA== LGVw Z3JhcGhpYw== IFF1ZXJpZXM= IHBhcnRpY3VsYXJz IEhhdmFuYQ== PW8= ZmFucw== IHVuaWxhdGVyYWw= IFJGSUQ= Q29tcGF0aWJpbGl0eQ== c3RyYW5k IHdha3R1 IHF1YWxpZGFkZQ== UHJvcGVydHlQYXJhbXM= cmV0ZW4= KGhvc3RuYW1l X0NBUg== IHdpZGVuZWQ= IFhwZXJpYQ== cG9sbG8= QWJvcnQ= ISEpCg== IFdhZw== LS0r INGC0YA= IFJlY3Vyc2l2ZQ== IGFubmU= IEdhbWVwbGF5 PENsaWVudA== LlVzYWdl IElTU1VF IGpkYmM= aXNvcnk= X21hY3Jvcw== cGlja2xl LmdhbWVzZXJ2ZXI= IHR2Yg== 0YLRiw== Lk9QRU4= IHByZWRldGVybWluZWQ= IHNpcmU= CQkJDQoJCQkNCg== aXNjcmltaW5hdGlvbg== IHJlcGVhbGVk IGNvbmplY3Q= IFByZWNvbmRpdGlvbnM= IHRpbHRlZA== IGlub2M= IGV1cm9wZWFu YWJk X0RFTEVURUQ= IC0s 4oCTYW5k QEZYTUw= ICldCg== UklORw== IGFsaXF1YQ== IGdydWVzb21l IEluY2hlcw== UGxheWVk KGNvbmZpcm0= IE5WSUM= X1RvdGFs aXNhcw== IE9uaW9u IHNlY29uZG8= IEdldFVzZXI= XFVybA== X2Fic3RyYWN0 IGRldmV6 IGN1cGJvYXJk dGV4dHM= IElzbGVz X01BVEg= U2tpcHBpbmc= X2Nvc3Rz PW91dHB1dA== aWJpbGk= IGtudWxs X2NvZWZmcw== X2F0dGVtcHQ= CVJ1bg== Z2VuZGVu cnVwdGVk IHNvYXJlZA== X2hz IGFkb3B0cw== X01PRElGSUVE XEZhY3Rvcmllcw== IFN3ZWF0 IGRva3VtZW50 IFRlbGVzY29wZQ== IEZpeGVz b3JxdWU= LkNoYXJ0aW5n X0RBQw== IHNlY3JldGlvbg== IHJoZXRvcmljYWw= UGVyZmls IG3DtmNodGVu LCcs IHZpZXdQYWdlcg== QlVZ IG9uRm9jdXM= b3NhbHM= IGJpc2N1aXRz IHZib3g= IGZvcmNlZnVsbHk= TmludGVuZG8= IHbDoWw= IGNsYW5z ZnJvZw== IGJvcmRlclRvcA== QnJpZWY= LkJvcmRlckZhY3Rvcnk= LXNlcnZpbmc= IHF1b3RhdGlvbnM= IEdhcm5lcg== IEFsbGV5 Ij8+Cg== KHNjYW5uZXI= IGVudGFpbA== IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== KGA8 LmRlc2NyaXBjaW9u X0J5 IOyalA== IHBha2lzdGFu ZWxobw== RW5naW5lZXJpbmc= IGJvb24= IExvb3Nl aWVyZ2U= U2VuYXRl IExZ cmVzcG9uc2VPYmplY3Q= aW9yZQ== w6FnZW5lcw== IOS4jQ== IGFkZEFjdGlvbg== IE1BQ0hJTkU= YW5na2Fu X21p X0FSUg== TGl0ZXI= T0xG IHN1cHBlcg== IHBhdGhNYXRjaA== IE9ycg== w61k KGZpbHRlcmVk IGF1dGhUb2tlbg== IOKEnQ== LTwv KHRlbnNvcg== IHJldm9sdmluZw== IGluaWNpYXI= IFNjaHdhcno= ZGVmZ3JvdXA= Y29sdW1uTmFtZQ== X3RyYWplY3Rvcnk= 4LmE4Lih ZWdhc3Vz IOydtOumhA== IGVhdGVy IHVuZGVyZXN0aW1hdGVk IGJ0Yw== IOyEoO2DnQ== ZW5hZGU= IFNFWFA= ZW1vdXRo T01FVFJZ ZW50ZXJlZA== LnBob25lTnVtYmVy IFZvYw== IGV4Y2Vzc2l2ZWx5 IENBVEVHT1JZ X1VQREFURUQ= IG1vbmFyY2h5 YXJjaHM= IGNhdmVhdA== d2lucw== IHBsYXlib29r c2hhZGU= IHNldFVzZXJuYW1l IGFjY3VzZXM= IG1vxbxsaQ== IGxvcnNxdWU= IGFqdWQ= aGVhcg== IHBzeWNvcGc= KEVD IG1lbGFuY2g= dGhyb2F0 bmlo V09PRA== IHZvbHRz X05FRUQ= X3doaWxl IFJpZGVycw== 16I= IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4= TmV0TWVzc2FnZQ== TW9kaWZpY2Fy LnNlc3M= KCIiKSw= 6Kmx IHByYWlzZXM= IGxjbQ== IG1ha2VzaGlmdA== IE5PVEhJTkc= IEFydGlmYWN0 d2lq dHlwaWNhbGx5 KCde PGs= xJlraQ== INC+0YLQv9GA0LDQsg== IOE= IGRlZlN0eWxlQXR0cg== aW5jZXJlbHk= w6lzdA== SW5UaGU= c3RpbWU= IGZyYWdtZW50ZWQ= IGZyeWluZw== Z3JpbQ== ZmllbGRuYW1l IGNyb3NzaW5ncw== IGFtbw== X09wdGlvbnM= IGhhaXJlZA== L3dhaXQ= IHBhcmNobWVudA== IGNyZWF0ZUVsZW1lbnQ= SHR0cFN0YXR1cw== IGVya2zDpA== aXp6YXppb25l dGh1bWJuYWlscw== bG92YWs= IGJhbmdpbmc= IHVuaW1hZ2lu IE92ZW4= KEF1ZGlv YXBzdWxhdGlvbg== IHJhbXBz 55Wq IFdvb2R3YXJk 6Zeu6aKY cm9ncmFt 0YDRg9C/0L8= IFdvcnNoaXA= IHN0YWQ= IG5lZg== IEphdW5l YnV6eg== YWx1cw== T05ET04= LXN1 IG91dHBhdGllbnQ= amFj RVNQTg== w6ZsbGFuZA== bXlw IHNob3dyb29t TW9udHNlcnJhdA== LmdldERyYXdhYmxl w6l0aWNv IHbDoG8= SUJD RXhwZXJ0cw== TWJwcw== Ij4j IG5vcnRoZWFzdGVybg== IE1lag== KG1pbGxpc2Vjb25kcw== 4oCUYWxs LXJlYWNoaW5n CXJlcGx5 P3R5cGU= IGNydXo= ID48Pw== LkZpbmRBc3luYw== KGNpcmNsZQ== IFNoaW5l IE1hdmVyaWNrcw== IHNhZmV6b25l IExhemFy IGRpc3RpbmN0aW9ucw== LWZlZWQ= LnNldENvZGU= 4KSq IHTDqWM= IHNlcmFpdA== IE1JQ1JP IENvbnN1bXB0aW9u Xm4= LmZyb21GdW5jdGlvbg== IFJ1cGVydA== IGhhcmFzc2luZw== LUNv IHRpaw== IFN2ZW5z LkltYWdlQWxpZ24= X3doaXRlc3BhY2U= IGtpY2tlcg== IGNhZGFzdHI= Q2V0dGU= X25vdGlmaWVy IEZBRw== IHByaW1hbA== IGhvbW9nZW5lb3Vz IGFzdHJvbm9taWNhbA== IEJ1cnI= LkNvcHlUbw== Z3JhcGhz aXR0bw== T1NI IHNob3dBbGVydA== YW50cm8= ImRlZmF1bHQ= ZW1waGFzaXM= V2Vp b3V0Y29tZQ== IGFrdQ== IGNhbXBhaWduZWQ= KSI7Cgo= IHJlY2lwcm9jYWw= IFJveWFsZQ== ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= LlRJTUU= IDwq T2Zmc2V0VGFibGU= Y29tcG91bmQ= d2FpdEZvcg== dWVnb3M= LnN0cmluZ1ZhbHVl X1NDSEVE IGZhdHQ= wqDCoMKgwqDCoMKgwqA= LmRpc2s= IHdhcnBlZA== IGNyaXRpcXVlcw== PycKCg== KHNraWxs IG1vZGVyYXRlZA== X2VsZW1z S2V5TGlzdGVuZXI= IHNlYXNvbmluZw== IHBvdXJxdW9p X0ZE cHJk aHlh Ij7Dlzwv IG5vdXZlYXV4 IGdpdmVhd2F5cw== 5oql6YGT TWFpbk1lbnU= Oy8q IEdyb24= cXVpdm9z Ow0KDQoNCg0K IGluZmx1ZW5jZXJz KFRJTQ== U2hhcmVkUHRy IGRpYWxvZ3M= KioqKiovCg== LkF0b21pYw== IE1vcnNl IHBjYg== IEFQQw== LkltbXV0YWJsZQ== IHJlc2l6aW5n IEx1bXB1cg== IEh1bWFuaXRpZXM= X3NvbHZl X2h1bWFu ZXR5bA== IEh1cnQ= IEVzdGFibGlzaGVk Y2xhcmVk IGNvbXBhcnRtZW50cw== QmVhbQ== X1JN LmZhbHNl KEdyaWQ= IFFTaXpl X2ZsZw== aXN0aWNh PkxvZ2lu OlVJQnV0dG9uVHlwZQ== IEV4aXRpbmc= Y2xhcw== IGFyc2Vu KG1ldHJpYw== cm93c2luZw== cXVlcnlTZWxlY3Rvcg== X0ZSSUVORA== LWlv IGNvbmZpc2NhdGVk IGRlZmlhbnQ= IE1PVE9S cmVndW50YQ== IE1vcnJvdw== IEJlcnM= Q3JhaWc= IENQQQ== IHNleGtvbnRha3Rl IHNhbW1lbg== L0F1dGg= LkxpYg== Y3JhcGVy aWNlbWFpbA== Y3JhdGNo IFdpcmVk IGFkdmVydGlzZXI= IGdldENsaWVudA== IHJlc3BvbnNpYmx5 CVVPYmplY3Q= LnNldFJvdGF0aW9u LkNvdW50ZXI= X0hPVVI= VGVzdENhdGVnb3J5 IGhpbmRzaWdodA== XGNvbnRyb2xsZXJz d2FsbHM= LnNldE1heGltdW0= IHB1YmVydHk= X3RlYW1z X01PREFM LkNP IGJhZGFzcw== KSddLAo= w7pzcXVlZGE= aXJ1dA== Q2hlbHNlYQ== LnRyYW5zZm9ybXM= IGNhcGl0YWxpc3Rz TWFyY2E= IEFyeQ== LWNvZGVk 546v VVJFRA== PFRyYW5zYWN0aW9u IFBhcmxpYW1lbnRhcnk= KSRf IHN1YnRseQ== IHNpbGt5 IERpcnQ= IHB1enpsZWQ= fScpOwo= cXVlc3Rz Rm9vdGJhbGw= IENvbmZpZGVuY2U= dXp1 YnVsYW4= IGh1bW1pbmc= bW91c2VlbnRlcg== UmV0ZW50aW9u IHNkbA== b2tlZGV4 JywnPScsJA== IEt1YWxh U0FN IHRyYW5zZm9ybWF0aXZl UEtH aWxsdXM= IHJvb3Rpbmc= IFdpdG5lc3Nlcw== IFJhamFzdGhhbg== 5byg LWFkZGVk IFRlcnJpdG9yaWVz KHNxdWFyZQ== cmFiYml0 X1Jlc291cmNl 6ZaL 4LiT IHdpbm5pbmdz IHNwbGU= IGTDqHM= IE1EQg== w6lydA== IE1hdHRpcw== YWlsbGVz X3dlYWs= L2phdg== IGNvbGxhcHNlcw== ICAgICAgCQk= IHN3aXJs IE5TU3RyaW5nRnJvbUNsYXNz IHZvbHZlcg== LlJlY2VpdmU= IERleHRlcg== IHRhYmxlbmFtZQ== cmVhdGl2ZQ== LkdldEZpbGVz dm9vcg== IEhvZQ== VkVSTg== IE9QQw== 7YOc cmFtaWRz 54Sh44GX44GV44KT U3Bpcml0 IE5PUA== IE1haW50YWlu KHNpZ21h b3Ry TW91c2VDbGlja2Vk cXVpZXJkYQ== X3dm 0L7QutCw0Lc= YXBwYWJsZQ== IEhvbGRlbg== IENvdW50ZG93bg== LnNpZ21h Y2hhbGs= YmlsZGVy IHZpc2lvbmFyeQ== CU9u JHVwZGF0ZQ== IEdpbmdyaWNo cm9vbUlk Pk5hbWE= IHl5dHlwZQ== LkRlY2ltYWxGaWVsZA== bWFjcm9z LnNldExheW91dFBhcmFtcw== IHJubg== IElNRGI= 56eN ZW1hbGVz IGluY2lkaWR1bnQ= UmVzdHJpY3RlZA== IHBlZGFscw== IEpvZw== IEFkYXB0aXZl IGZhZGVz LkV2ZW50U3lzdGVtcw== IFBhaWdl IHNlaXM= IGFwcHJvcHJpYXRlZA== RkZU Z29yaXQ= IGNvaGVzaXZl IE5pY2h0 X3dvcmtmbG93 bGl1cw== IEZvcnRuaXRl X0lX QXRQYXRo IGludG94aWNhdGVk bm9zdGlj QmluQ29udGVudA== LnJlZHVjZXI= KT8K J10q IE9ic2VydmF0aW9u X3ByZWZz LnJlc29sdXRpb24= LlBheWxvYWQ= TWl4ZWQ= IFJhaQ== KHBkZXY= KEAo aWNvdA== JGlz IGNyZWU= Pz0uKg== LlFMYWJlbA== IEdlb3JnaWFu eENB IGRlZmljaWVudA== dGhyb3du IHJhcGluZw== dXBvcw== CWNsaQ== Z2V0Vmlldw== SGlnaGxpZ2h0ZWQ= Q3BwR3VpZA== IHJlbGVnYXRlZA== IGxlYWRlcmJvYXJk UmVjZWl2ZVByb3Bz Lmhhcg== IGNvbmRp SU1JVElWRQ== IE1jQ2FydA== KXRocm93cw== YnVpZQ== YnVhaA== LmNvZWZm IEF1c3NpZQ== IFNhYmhh KGZhYnM= cmVsYW5k IEbDtnI= YmFyYW5n LHRvcA== CWVsc2lm U3RlcFRocm91Z2g= IHNrZXdlZA== IFVudXNlZA== Jyl9Pgo= WWU= Y2FsbGVl SGliZXJuYXRl IEV2ZXJlc3Q= aW1wb3J0RGVmYXVsdA== IHRhcm4= IE5vd2FkYXlz WUE= IENoYWxsZW5nZXI= X2xvZ2ljYWw= IGNyZWF0ZURhdGU= IEdsb3VjZQ== IGN1YW50bw== IEhBUg== IENoaWxs Il4= IGN1cnNvcw== LkVPRg== IG5pamU= IGFuZ2VyZWQ= b2N1c2luZw== PENvbnRhY3Q= IEF0bW9zcGhlcmlj IFdvbGZnYW5n IEJK Y2hpbGRz IEJ1Z3M= X0hFWA== KFNQ w6Vs X2V2YWx1YXRpb24= IFJBTkdF IFNPUA== X3Rva2VuaXpl bXNnaWQ= IHJleA== CXBt Q29weWluZw== Kkw= RGFsbGFz LVN0YXRl dWxmaWxs IGJ5xYJv IENvbnRyYWN0b3I= RGlkbg== QVNURQ== IFBJTw== LlRlbGU= LndhdGVy ZGV6 IGFuZ3JpbHk= IHV0aWxpc2F0ZXVy IHZvcnRleA== Q29ycG9yYXRl YXR1cmFz IHByaXplZA== J3VybA== dWdsaWZ5 IGltcHVsc2Vz IGNocm9ub2xvZ2ljYWw= cGxlbg== X25hbWE= L29u IE9mZmljZXM= IENQSQ== IEFmdGVyd2FyZHM= 44GT44KT44Gr X0JMT0NLUw== R3JhY2U= LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== IEthYnVs IOaIkA== IExlaXB6aWc= 4Kao U2hvY2s= QXVz IG11cm0= X3N0YXJ0cw== IGLDpA== IFp5 IkY= LXJpZ2h0cw== IGJlaGF2aW5n KCc+ IG1vc3F1ZXM= KndpZHRo Ii8+Ljwv LnVuc3BsYXNo LmdldEFjdGl2aXR5 VVU= IFNoYWs= X3Jn X0VxdWFscw== J2h0dHBz IE94eWdlbg== IFBvcnRzbW91dGg= 4oCUb25l IHdhdGNoZXJz IENob2k= IHNpZGVy cGVjdHJhbA== bXF0dA== LmNyZWF0ZVVzZXI= amVjdGl2ZXM= dXJtYQ== UmVnaXN0cg== UGVyc29uYWxseQ== PWtleQ== IE5FTw== IEZBUXM= aWJpbGlkYWRl Y2tzw6U= IENvbGxhYm9yYXRpb24= CWxibA== LlNFUlZFUg== IGFib3VuZA== IEJlbmU= d2FudGVk LWhvbGU= IG11dHRlcmVk IHBlcA== bmVzYw== LlVwbG9hZA== c2VtaQ== eEVD Jz4iKw== IGVtYnJ5bw== IEZpeGVkVXBkYXRl Q2FzdGxl Lm1vZGVsbw== IHBscw== IGVudmVsb3Blcw== X3JlbWFpbg== UXVhcnRlcg== YWxlcnRWaWV3 X2Zvcm1hdHRlZA== IGxhc2hlcw== emVsZg== aG9tbWU= LmZsb3dMYXlvdXRQYW5lbA== YWlycG9ydA== IE1lbW9yaWVz IEhFUk8= IEFzaHRvbg== IGV4aGliaXRpbmc= KFNFTEVDVA== U3VibWlzc2lvbg== U3R1ZmY= X3N1bg== IHBlcsOtb2Rv IGRlc3ByZQ== CWVkaXQ= IER0eXBl Y2Vzc2l2ZQ== YWFk IGRlc2Nvbg== bmVsbHk= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== IHNjcmlwdHVyZXM= IG9uVmlld0NyZWF0ZWQ= IEVWRQ== IEJhbGxldA== O307Cg== VURP IFByb2JhYmlsaXR5 cXVpcnJlbA== Q29udGFpbmluZw== IFBsYXQ= 6KI= L2JpdA== IEpRdWVyeQ== IHRpZW5lcg== L2RyaXZlcnM= IFByZXNpZGVuY3k= XHVE IEl2ZQ== aWVuYQ== IGh5cGVycw== IFNwZW5kaW5n PFc= IFRIRU1F IHVzZXJQcm9maWxl IGFubnVt cmV0d2VldGVk IFwnJw== YnVuZGxlcw== KCk8Lw== IEN5bGluZGVy IG91dGxpZXJz IGRpc3NlbWluYXRpb24= L2FwdA== IE5hdGFzaGE= IHJlbmRlckl0ZW0= IENoaXBz IHJvdW5kdXA= IGltcHJvdg== IGNvbW11bmljYXRvcg== IHNreXBl TU1N cmlqaw== LlBsYWNl IHBhc2E= IFNZTkM= ZW5zaXM= IEF4ZWw= ZW7Dp2E= Z2V0U3RyaW5nRXh0cmE= YWJpbGl0w6k= IGVtYWNz LmdyYXZpdHk= IGNoZXJpc2g= IElTU04= CUpzb24= dXlv IHVwdGltZQ== IHJhbmRvbW5lc3M= IGxvZnR5 Qm93 Q3JlYXI= IHRvd2VyaW5n Y2F0ZWdvcmll L3Bvd2Vy L3dlbGNvbWU= fFI= IGJhcnJpbmc= aWRpYQ== cXVhbQ== w7pkbw== ZXhwZXJpbWVudGFs IGNsYQ== IGN1cmF0b3I= cmVhbWJsZQ== aW5keA== TExM IH0pOg== IGhpc3RvaXJl c2ltdWxhdGU= PEFueQ== IEdsYW0= IEJhcmc= VmFsdWVDb2xsZWN0aW9u IEluc3RpdHV0bw== QXNTdHJpbmdBc3luYw== IGFkZWM= IGZlbGxvd3M= cGlwZXM= IFBsYWNlaG9sZGVy IEtn IEFsYnVtcw== ICooKg== X0dPT0Q= KSIsDQo= LlFSZWN0 w6Jt IH0NDQo= TWFyc2hhbEFz QmFjaGVsb3I= IEJhcmNvZGU= IFRyYXZlcnNl IG9kaW8= LnNldFBhcmVudA== IHNlbWljb25kdWN0b3I= QUxMRUw= IGJhbnF1ZXQ= IE5ld3NwYXBlcg== RE9NTm9kZQ== IE5hdWdodHk= Rm9ybWF0dGVkTWVzc2FnZQ== IGRpc3J1cHRpbmc= 5piT IGxvb2thaGVhZA== IGdyYXR1aXRlcw== IGNoZWVzeQ== IFNQRg== blA= IGFyc29u IGFudGVubmFz X01JRERMRQ== X01BTExPQw== LmdvQmFjaw== IFByb3Bvc2l0aW9u IE1pY2hhZWxz X3Byb29m INC90LDQudC0 w6R0emxpY2g= LXJvbGw= RURB w6Fuw60= Z292ZXJubWVudA== w7Z0dA== IEVzdGFibGlzaG1lbnQ= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= X0hJVA== IEFJTQ== YWRvbA== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg== X1JFRkVSRVI= IGZvcm1hdERhdGU= dWN0b3Nl IGRvd25sb2FkZXI= VGV4dEVkaXQ= IGRpc2FybQ== IEhBUFA= 0L7QtNCw ISkuCgo= L3Byb2Nlc3M= IGJyYWluc3Rvcm0= IE9SSUdJTkFM LlRhYmxlTmFtZQ== IEtvc3Rlbmxvc2U= IGTDqXA= IElzYWJlbA== IGFzdHJvbm9tZXJz UVVJUkVT OiIt dXBsb2FkZXI= Oi8vJQ== IGFtaXM= RmlsZVZlcnNpb24= ICwk Y29vaw== LFNJR05BTA== JywvLw== IFN1cHByZXNz IExhdGlub3M= IHdpdGhob2xk IG1uZW1vbmlj X0NZQ0xF IGhvZA== IFdvcnNl ZXJkZQ== IHR5cGVpZA== CWV4cG9ydHM= IGFjaHRlcg== b3Nhcw== IGZvb3Rub3Rl aGFuaQ== KFBhcmFtZXRlcg== CVJlbmRlcg== IFlZU1RBQ0s= IFhJSQ== IHNpZGVu IGFyb3VzYWw= IE9P Qml0dGU= IG5lYXJlcg== IENpcmN1cw== IENPTE9SUw== IHdpZWxkaW5n LkZpbGVTeXN0ZW0= IGdyaWxsZQ== IERvdmVy CiAgICAgCg== KGdlb21ldHJ5 IHN0YXBsZXM= IEFubm91bmNlbWVudA== IOuyhA== IGZvcnR1bmF0ZWx5 LlNvbWU= IG1hbmdhbmVzZQ== IGludGVydmlld2Vy WVJP IGNyeXB0b2dyYXBoeQ== IGNoYW1icmU= LnJldHJ5 IGltaXRhdGlvbg== JGZkYXRh IGxvdGlvbg== KGlkZW50aXR5 LnBn IHByZXN1bXB0aW9u X1NVUEVS dm9jYWI= IFNlbWVzdGVy IEFiZWw= X2FwcHJvdmVk LmNvbXBhdA== IHdhcnRpbWU= XV07Cgo= bHV0 X0FjY291bnQ= Pygn Y29vcA== L3JlZw== LnNldFRv aXRlc3Nl IEh5ZHJh Qmlucw== Y2FkZW5h Pi8nLA== Llwi CWFjY291bnQ= IERhaGw= IGRyb3du IGdhdXNz IHRyYW5zZm9ybWVycw== IE1ldGFsbGlj IEhlcmJhbA== YWNocw== X2J1dA== IGl0ZXJhdGl2ZQ== IEZyZWVk anVy fE0= O2JyZWFr X0ZG KGRvd25sb2Fk 4buDbg== LmNoZWNrU2VsZlBlcm1pc3Npb24= TkVUV09SSw== OmZsZXg= IENUTA== IEFyYg== IFByb2R1Y2U= CXN5bmNocm9uaXplZA== 4oCcT2g= LmRhdGF0YWJsZXM= IGNvbmVz RMOp 0YbQsA== QWxn IGZ1bmNpb25h IFViaXNvZnQ= IGdlb3BvbGl0aWNhbA== IHNpZWh0 IGh5ZHJhdGlvbg== c3Rocm91Z2g= IER1ZGxleQ== YXrEgw== IHRheGluZw== INC30LDQutCw0Lc= X0FTTQ== TmV1dHJhbA== dHJhZGl0aW9uYWw= UGxheWFibGU= IHNwYWdoZXR0aQ== IGlDbG91ZA== IERheXRvbmE= IHdlcmRl IEFOVA== IFByb24= IFN0YXRpb25z IGF0dGVzdA== IGZ1bGxlcg== IG5vdmFtZW50ZQ== XVxc Y2Nl KGRlY2s= L2F5dXNobWFu aWdzYXc= IGFkdWx0ZXM= IHRlcnJl Lk9yZGVycw== CXByb3BlcnRpZXM= RElH IFRJTUVT ImluZGljZXM= ITw= TW9uYWQ= IG5vbmV4aXN0ZW50 IEF0bGFudGlz IGdyaWV2YW5jZXM= dXJlbmNl IElQUFJPVE8= 4pmA4pmA4pmA4pmA IGVtcGxlYWRv INmD Lk1vdmVOZXh0 IElzbw== YmVhdXRpZnVs IHNvbHVibGU= IHNsdWdnaXNo IGRpZmZz X09CUw== eG1pbg== IHR1bWJsZQ== IFVuYXJ5 IHppcGZpbGU= IHN2ZW5za2E= ZXJsYW5k L2N1cGVydGlubw== CXNjcmlwdA== aXNjaGVz TW9kaWZpZWREYXRl IHZleWE= IGRldGVybWluYW50 IEdvcmdlb3Vz Z2Jvb2xlYW4= IExPRA== ZGNj c2NlbmVz IFRTUk1MUw== KFR5cGVFcnJvcg== IGNhbW91ZmxhZ2U= IGJ1cmdl VGhlbQ== LkFzc2lnbg== IGxhc3RJbmRleA== X3NwaGVyZQ== X0FCSQ== w4Q= aWxhZ2U= XHhmZg== IGtheWFr IGZpeno= dWl0ZW4= LlNob3VsZEJl IGh0b25s IFBldGl0ZQ== IGhlYWxz IE9zYWth Tko= SW5QYXJhbWV0ZXI= IEJpcmNo IGNvbW1lbnRhaXJl IFNpZWdl IGtleWNvZGU= LWludGVuc2l2ZQ== cHJvcFR5cGVz RXhwb3J0cw== IGJ1dHRvblRleHQ= IEdvZHppbGxh LkV4Y2hhbmdl IHVuZGVyc3RhbmRhYmx5 IGFjY29yZGlvbg== IHLDqWdpb24= IG1hcmtlZGx5 YW5vb2dh IGNvbnRyYXQ= X2xpZnQ= W2RhdGU= IHNjb3Ju IERhdGFNYW5hZ2Vy 4oCm4oCmCgo= X0NPTVBJTEVS IENsYXc= b2RhdGU= IHVuZGVyYWdl IEltcGxlbWVudGVk Q2xp S2Fs UHJvZHVjdG9z IGVuZmVybWVk w6lpcw== IGRpc2NyZWRpdA== IFNhbW9h IFByZXNlbnRlZA== IGNpbmVtYXQ= XEFjdGl2ZUZvcm0= IGZlcm4= IFByaW1lcg== 5oKo Z2VyZQ== IGlsbHVzaW9ucw== bm90YXRlZA== IHBvag== IG1vZGVsTmFtZQ== IFBNQw== IGRlY2Fk IGZvcmVzdHJ5 dm9pZQ== Li4uCgoKCgoK IH19Owo= IHRva2VuSWQ= YW1tdQ== IFBlcnNvbmVu IFZFUkJPU0U= IHBhdHJvbHM= IGFudGlj X2RlZXA= ZWdlbmQ= IFNldFByb3BlcnR5 IEdhcmV0aA== IE1BUw== LnJlc3RhdXJhbnQ= IEhlYXZlbmx5 aWVkbw== X2xlYWQ= IEZ1amk= UU4= TWFzc2FnZQ== IHBhcmFtTWFw IGNpdGE= X1NwZWVk KGJib3g= IEpVTA== 4oCZYW4= IG1lbnRl IFNob3djYXNl IENTSQ== PlR5cGU= LlNu b3R5cGljYWw= IEZhbGxvbg== LlVUQw== IHByZWRhdG9yeQ== IG9yZ2FuaXNpbmc= Y29sZA== IHBhcnNlcnM= dWllbg== IGNvbXBpbGVycw== IFs9 IEV1cmFz TU9TVA== CiAgICAKCg== UkFS LlNjaGVkdWxl Lm9wZXJhdGlvbnM= dWZz w7FhbmE= IHByZW9jdXA= LXRyZWF0ZWQ= LmdldFdvcmxk Lic6 IEFUSA== OnN0YXJ0 IGF1dG9pbW11bmU= IEJsYWNramFjaw== X0ZJTklTSA== KGZsb29y IHdyZWNrYWdl VVJU LkJyYW5k cGFpcw== Y2ltYWw= Y2nDsw== TkZM LWVxdWlwcGVk LmNvbnRlbnRPZmZzZXQ= IG92ZXJjcm93 IFRa IG9kb20= IENlbGx1bGFy CXdyaXRlbA== KGlucHV0U3RyZWFt KHByZWY= LXN0b2Nr IERlbmllZA== LXN1cHBvcnRlZA== ICcoKA== YW5jb2Rl LmZpbHRlcmVk RGltcw== IGpi CXByaWNl IEBACg== bm9jaw== Lm9wZW5Db25uZWN0aW9u IGFudGljcw== cmVzdWx0Q29kZQ== UGxheWJhY2s= IGNlbHVsYXI= IEZPT0Q= IFBvZGVzdGE= PW1lc3NhZ2U= LnBlcmZvcm1hbmNl IERtaXRyeQ== YWx0aW1vcmU= IHBsYXRlZA== IHR1YmVyY3Vsb3Npcw== X2dlbQ== KEVkaXRvcg== VHBs IGNyaWFu IGJ1ZmZlcmluZw== 6KeG6aKR ICcpCgo= VnU= TWF0aGY= IHRpbWVsaW5lcw== IFRhdGE= L3Bw IHBsYXN0 IFRydWx5 IFN1YnN0aXR1dGU= a2llbQ== a2Fhcg== IFZpc2g= J2h1aQ== IE1hZ2ljaw== L0xheW91dA== dXJhbsOnYQ== X3R0bA== SGlkZUluSW5zcGVjdG9y LmtleXdvcmRz TGlzdE1vZGVs X1N1Y2Nlc3M= aWxpaGFu IGJsYWNrbWFpbA== IFNlcmJpYW4= cXVlbGxl IER5c2Z1bmN0aW9u IFByZXBhcmVk IGpNZW51SXRlbQ== IGxvZ2luVXNlcg== c2V0YXR0cg== LkNS X2xjZA== IGJ5dGVzUmVhZA== IGNkZWNs IHRvd25zaGlw cGVr aWprc3RyYQ== IG1heGltaXppbmc= LnByb3ZpZGVycw== SW52ZXN0aWdhdG9ycw== IHNob290b3V0 IGFpcnNwYWNl dG9vbGJveA== UVdpZGdldA== PXBr IHBvcnRlcg== IFByZWRhdG9y IFN1bnJpc2U= IGRldm91cg== CVVJbnQ= aXR0YW5jZQ== U1BB X2VuZGlhbg== IE5hZ2Fy dmVuaWRh L29wdA== QnlFbWFpbA== IFBoeXNpY2lhbg== XEQ= INC80Ys= WUVBUg== SUND L3BvcnRmb2xpbw== LmV4ZWN1dG9y dWRlbQ== RmFsbGJhY2s= dWR1 U2xpbQ== w7Nsbg== Xnst YW5za2U= IGh1c3RsZQ== IElyZW5l IGFieXNz IFJvYmJpbnM= IGluZGV4ZXI= U2F1ZGk= IHdob2xlc29tZQ== LXNsb3Q= IFRlY24= IHBhZ2VUaXRsZQ== IGNvbnRlc3RhbnQ= aWNvcHRlcg== IGNvdXJzZUlk Q2hy IEFYSVM= Zm9yZGVy X1RVTg== VHJhZmZpYw== IHR5cGVhbGlhcw== IGRhcmY= LXVyaQ== dHN4 LmRlc3Ryb3lBbGxXaW5kb3dz IGl0ZXJhdGluZw== UmVhY3Rpb24= CUFN IGN1ZW50 LWNvb2tpZQ== IGZsYXZvcmVk c3RvaQ== IGZsaXJ0aW5n 44CL77yM 4KSu X0NSWVBUTw== W3Rva2Vu IHByb2xldGFyaWF0 LuKAmeKAnQoK CWRj LlN0cmluZ1Zhcg== IGxlZ2l0aW1hdGVseQ== X2RlY29yYXRvcg== TG9ja2Vy IEplbm5h VVJJTkc= 5YaN X1ByaW50Zg== QVRPUlk= LWRpc3Q= ICIuIik7Cg== LnF1aXo= IGlyZ2VuZA== LWxlYWd1ZQ== Z2llbg== IFByb2R1Y2Vk SGVsbWV0 5Y+v6IO9 UGxhdGZvcm1z IFJlc291cmNlTWFuYWdlcg== IEh1bmRyZWQ= cm9tZXRlcg== ZW5na2Fw SG9w IHBvc3N1aQ== QmVmb3JlRWFjaA== IENISw== IElNUw== VGlja2Vy IGdyaW5uZWQ= LmdldEFz IGltcG9zZXM= XSIp Rm9yZ2V0 L2ltcG9ydA== IGluamVjdGluZw== TG92 IGFicmls X3NsaWNlcw== LWNvbW0= IFBST0RVQ1RT IE9hc2lz IMO4bnM= IFJlamVjdA== IHJlZ3VsYXJpemF0aW9u aW1wbGljaXRseQ== bmF6 U3BlY2lmaWVy IGltcG92ZXJpc2hlZA== 5po= IG5vbWluYXRl IE9WRVJSSURF IEJhbmRz ZXRoeXN0 IEppYW4= IG5ld2NvbWVy IE5hYg== IGVicA== IFBhZ2Vy IEh1bWI= L2Nj IGV4cMOpcmllbmNl dWRnaW5n TWI= ZGJ1Zg== Jy8+ IG9ja3PDpQ== IGpkYmNUZW1wbGF0ZQ== IFNISVBQSU5H IGludGVyZGlzY2lwbGluYXJ5 IENFVA== YXV0b3A= LXN5bWJvbA== YXZlYw== IGNvbXBvdW5kZWQ= IENodW5n X1NNUw== LWll IFByb3NlY3V0b3I= IExlaWE= IE1hbmRlbGE= U2luZ2xlT3JEZWZhdWx0 CVJFUVVJUkU= YXRvd24= dXJyZXRz 5paH5a2X IENPTlRFWFQ= RU5TSVRZ IGluc3VyZ2VudHM= IERpYXM= LnN0YXRpb24= IEtsYW4= X21lYXN1cmVtZW50 X1FNQVJL IHN0b2k= TU9PVEg= PicpOwoK IGluZ2VzdGlvbg== IEdsb3c= dXRjaGVz YmVhcmluZw== LnRvYXN0cg== IGZyYWdtZW50YXRpb24= aXBwbw== X1NFR01FTlQ= IHN0dW1ibGluZw== aW1hcg== c3Rpbmlhbg== XygpCg== IG1vdGl2YXRpb25hbA== TGlzdEl0ZW1UZXh0 IHdvbWVucw== T3BlbkhlbHBlcg== aWJhbmQ= IGJ0blNhdmU= IGluY29ycG9yYXRpb24= IGRvY3VtZW50YXJpZXM= aWNs IE5k IEFyYQ== IHF1YWtl IEN1bW1pbmdz aHRt YXN0ZXJlZA== LmR0cA== IGNvbmRvcw== IEd1bmRhbQ== L2Rpc2FibGU= aHlkcmF0ZQ== IEVwb2No IG5hdGlvbmFsaXN0cw== IGRldmVy LHJlcXVlc3Q= LmdldFZlcnNpb24= Q0VMRVI= IFNhbGFo IG1vdGU= IE1lbGxvbg== c3BvdGlmeQ== IG9yaWdlbg== IG5hbGU= IGFkdmVyc2FyaWVz LkpUYWJsZQ== Zm9yY2VtZW50cw== IFJldHJlYXQ= IGFyY2hpdm9z IHNsYXNoZXM= Lk1vdXNlRG93bg== PDo6 X3Rocm91Z2g= QWxhbWF0 LmJsdXI= X2ZpbmRlcg== IGFsbHVyZQ== UGVyaXBoZXJhbA== X3Bhc3NlZA== X2NoYWxsZW5nZQ== IFBhbGVv SU5J RGlyZQ== c3BoZXJl KENPTE9S YWNrZXJz IEdseXBo KGludGVnZXI= INC60L4= IFJlbGV2YW50 INm+ IGF0YXM= X3ByaW0= IE1VVA== bmluZ2Vy YXV0b3JlbGVhc2Vwb29s PV9f IFNpZ25pbmc= 7ZWY7KeA IHVjeg== RWRpdGluZ1N0eWxl IEhlYXRlcg== IEZhaXJmaWVsZA== IEJlYXJk LGVu dXNhdA== KCcuJw== L3N0cmVhbQ== IGdldFN1cHBvcnRGcmFnbWVudE1hbmFnZXI= IG1DdXJyZW50 X1NUQVRFUw== X3dpbmQ= Q0hBUFRFUg== cHJvYmFiaWxpdHk= KGFubm90YXRpb24= ICovDQoNCg0K LlVuaXF1ZQ== LkFkZEZpZWxk SGlnaGVy LmRpZ2l0YWw= LmV4cGVyaW1lbnRhbA== YXds IHdoZW5jZQ== ZXJub3Rl U0FNRQ== Lmlwdg== dG9CZUZhbHN5 YnJhbmU= X2NhdGVnb3JpY2Fs QXVyYQ== IFR5cGVTY3JpcHQ= IHNwb250YW5lb3VzbHk= bG9uZ2xlZnRyaWdodGFycm93 aWthbA== X1RPRE8= IFd5YXR0 IGZsdXJyeQ== ZGlm IHJlY2tvbg== IENvcm91dGluZQ== CWZmbHVzaA== IHdvcmtmbG93cw== IEZBTUlMWQ== c3ByaXRlcw== X1dvcms= LkdldFNpemU= IENvbnN0cmFpbnRz QmlnSW50 aXRpYQ== Z2V0Um93 IGR1aw== IGlzTmV3 IFByb2R1a3Rl eENC aXNpZXJ0 ZnVuY3M= IEFkZW3DoXM= QmluZGluZ1V0aWw= b21waWxlcg== LWludg== IGNoYW50cw== IGVudHNwcmVjaA== KHRp X0lB 0L7RgNC00LjQvQ== IEZBTEw= aW1k IGxvY2FsdGltZQ== PExpbms= 0L3QuNC60LA= IHByb2ZpbGVy IGdldFVzZXJJZA== IFBoeXNpY2lhbnM= UkFE IGhtbQ== IE5lc3M= IFRlbXBv IEpU IHJlY29ubmFpc3NhbmNl PHRyYW5zbGF0aW9u IGVudGljaW5n IHF1YWludA== IGNvdXBl X18nLA== TkFTREFR INC30L3QsNGH0LXQvdC40Y8= UEVSQVRVUkU= IFBhaQ== IHRldGFz Q0FT SVJST1I= IGtj IHRvdGU= IGRyYXdiYWNr IHBhcnNsZXk= CUZ1bmN0aW9u aXN0eQ== IERVUA== X0NJRA== X1VU IGtzaQ== IGrDpA== PXZhbA== LnRvSGV4U3RyaW5n 5p2/ LmNsaXBz IG9mZmVu IFRFQ0hOTw== IFNoYW1l IHN1c2NlcHRpYmlsaXR5 IHN0dXBpZGl0eQ== IFRyb3V0 IENoYW1wYWduZQ== ZXRoeWxlbmU= IGJlZ3I= X3JlZGlz WWVw IGhhbnM= IERlZmVuZGFudA== IGRhc2hlcw== IHVzZXJUeXBl X2RhdG9z IHVuaWM= a3JpdA== IHJlY2VwdGl2ZQ== IEdyZXQ= KG1i IEluZmx1 w6tu fS8+ aW50ZXJlc3Rpbmc= VVRVUkU= IGltYWdlU2l6ZQ== IGdyZA== IGFic29s L2Zh LmdyYWRpZW50 IHd5c3Q= XX0+Cg== bGVnYXRpb24= Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCg== IEJsZW5kZXI= X18pOw== IHVzZXJFbWFpbA== IFBoYXI= bGVoZW0= KSk/ KFJldHVybg== ZWdyYQ== dXRpdm8= IGFwcGVuZGl4 IFJUVkY= IFNFQUw= IGd5cHN1bQ== X0FyZw== IGlsbHVtaW5hdGU= IFNjaGlmZg== cXVpbA== LkNvbWJvQm94U3R5bGU= J10pKQoK IGFsdGVycw== IHByYWN0aXNl IHVzdA== IERpbWl0 LVJlZ3VsYXI= IGNyZWVwaW5n IENhbmFkaWVucw== IHJldG9ybg== LWNvcm5lcg== ICJdIg== KHJuZw== IGNhbmFkaWFu IHBvc3Rv LmFzc2VydEFsbW9zdEVxdWFs IEJlY2t5 L3Nz IGhvc3RhZ2Vz IGJpb2xvZ2lzdA== IEhvc3BpdGFsaXR5 IEVsaw== IEJhcmFuZw== 66qp YmJiYg== LnRlYWNoZXI= IHRlcm1pbmF0ZXM= IGlzRXJyb3I= IEtlbmRyaWNr ZW5kYXJz IFN1Z2dlc3Rpb25z Q2Vs IFNlcnZpY2VQcm92aWRlcg== IFdpY2hpdGE= XSkpLAo= IGhlYWRsaWdodHM= X3ZlbnRh QU5USQ== IHByb3BpZWRhZA== IGVubGlzdA== CW9yZw== TWVzc2VuZ2Vy LmxhbmQ= IicK YXNwZXJz IHRlcnM= ZmlsdA== IEZ1bmN0b3I= IHNsaW5n X0JMSw== LUV1cm9wZWFu IEFjaGlsbGVz XEVudGl0aWVz LkRpc3BsYXlNZW1iZXI= IHJlZGV2ZWxvcG1lbnQ= CWhlbHA= IFsnLQ== IEp1bGllbg== PUludGVnZXI= LmlzTnVsbE9yRW1wdHk= IFdvVw== UGF5bWVudHM= KGhkcg== IGJhamE= IEpDb21ib0JveA== RmlyZWZveA== IGNvbmdsb21lcg== X2N1c3Q= JCIpCg== IG11dGFudHM= TWFnbg== IE1QSA== e18= X3dhcm5pbmdz IGdhc3Q= THQ= IHRyYWluYWJsZQ== VHJhZGVtYXJr QkFTSA== IEVDUw== UmV0cmlldmU= J08= IGluaXRpYWxpc2Vk IGNoZW1pbg== LlRyYW5zcG9ydA== IFlpbmc= YXNpb25z IG1vYw== X0xPR0dFUg== R0VOQ1k= IEJsb2dnZXI= ICIpIgo= UEVuZA== IGFjY29tcGFnbg== LkNPREU= IG1MaXN0 LWVkdWNhdGVk LC8= IE1lcnJpbGw= L3Blb3BsZQ== LicnJwo= X3RvZG8= IGfDvG4= X0ZVTExTQ1JFRU4= LmNsZWFudXA= VW5tYXJzaGFsbGVy LlN1cHByZXNzTGludA== IG9uc2xhdWdodA== IE1hcnNlaWxsZQ== ZWRpYXRvcg== X0VOVFJJRVM= LGRlZmF1bHQ= bWVsZHVuZw== ZWxmdGg= IEdvdmVybm1lbnRz IHBsZWFz b3R0cw== IHBsdW5kZXI= cmVhZE9ubHk= IGR5c2Z1bmN0aW9uYWw= J05laWxs IHVubG9hZGVk IHNxdWVlemluZw== IGRvb2Q= LmFkZERhdGE= IEFzaQ== TUVT KHNjaGVkdWxl IGFkdmVudHVyZXJz ZXhwZWN0RXhjZXB0aW9u IH19Pns= Q0xT IHJlY2hlcg== IGRlcm5pw6hyZQ== LkRldGFpbHM= IHJhbmRvbU51bWJlcg== IGlhcg== IExhbmdl ZXdl IEVtaWw= IGFkdmVydHM= IGRyYW1hcw== IEtvbW0= ICAJCQkJ X1Rlc3RDYXNl IENsYXJlbmNl 0LXQvdGC0LA= dG91cHBlcg== Lm9uU3VibWl0 Y2Fh X0FMQVJN KikKCg== IOuzgOqyvQ== LlByaXZhdGU= IHNreWxpbmU= UkFJTg== KGN1cmw= b3NpdGU= SWdub3Jpbmc= IHZ6 IHZlZGVyZQ== IE9TWA== YmFuYW5h IG1ldGFt IHRyYW5zbGF0ZVk= IE1jR3I= 4oCZYWNj 5Lul5LiL IHNwaXJpdHVhbGx5 KGVuYWJsZWQ= IHJlc3RvcmVz IGJ0bkNhbmNlbA== dmFuaXNoZWQ= IE51ZXZv U2FsdmFy Y2FmZmU= IG1hc3RlcmluZw== aWRkbGVk LmlzZGlnaXQ= IGdyYXZ5 YWdlZExpc3Q= XFJlc291cmNlcw== IGRvd25mYWxs LlBhc3M= IGFsdGlqZA== IHBpenphcw== IH0pKQ== cGVybXM= aWdodG9u IHJlcGVsbA== ICcnKSw= Lm5vcm1hbGl6ZWQ= IG1hcmNoZXM= CXJlc29sdmU= Q2hpbGRTY3JvbGxWaWV3 IEluc3RpdHV0aW9ucw== QXR0ZW5kYW5jZQ== bHNl ZXJkZW0= LmdldElucHV0 SGFzQmVlbg== YXBldXRpY3M= ICpc IFJpdHVhbA== X0xT IHNwb3RpZnk= IHNww6R0ZXI= IFRodW1ibmFpbA== KGNlcnQ= IGdldFJlc291cmNl X3Bsb3Rz IHN0YWluaW5n YWRqdXN0ZWQ= INep RGl2RWxlbWVudA== IFRUQw== IGFwcm92ZQ== LnZpZXdlcg== fD0= Z2V0U291cmNl 55S16K+d X1RC X2JpbGxpbmc= LUxpZmU= IHBzeWNoZQ== IHRhYlBhZ2U= IEluZmVjdA== eGZmZg== X2hpZA== IGFwb2NhbHlwc2U= IE5GUw== IElURVI= V2luZG93U2l6ZQ== aGVpdHM= IGluY3JlbWVudGVk IEJyYXk= ZW5lZ3Jv IGFsbW9uZHM= WVBSRQ== Tm9ybWFsaXpl 4oCcV2VsbA== IEFwaUNvbnRyb2xsZXI= W1VuaXQ= R2VucmVz IE5leA== IExORw== IGZvcmVnb2luZw== IHRlbmRvbg== IEhw Q291bmNpbA== IFNhdWRpcw== IERlemU= IHNjcmFwZWQ= IGJvdHRsZW5lY2s= IE9ybg== IHVubWFubmVk IGludm9raW5nU3RhdGU= IEV4b2R1cw== X0FUT01JQw== U3ViTWVudQ== X2NvbXByZXNz Iy4= RHJ2 LnB1c2hCdXR0b24= IHN1aXRjYXNl b3NzZWQ= Yml0cmFyeQ== U25pcHBldA== IEVwaWRlbWk= RGlzYWxsb3c= X0NISw== IHZlcmlmaWVz IENhdGFseXN0 4oCUZnJvbQ== IGNvbnRhbWluYW50cw== Sm9obm55 KGZpbA== IGRlcmVu IG91dGNyeQ== IEpvaGFubg== PFRhZw== X3Nhbg== IHN0ZGRldg== IHBhcmFseXplZA== IExleHVz b3NhdGU= IENoYXJzZXQ= IFJlYWx0 PT8iLA== KERlZmF1bHQ= IFRyZWFzdXJlcg== RWluZQ== IHVudHJ1ZQ== IGZpbmFuemk= IGJlaGF2aW91cmFs IG5pcHBsZQ== IFJhZGljYWw= IFBheg== IE1haXNvbg== LWVtcGxveWVk IHdlcmVsZA== IGpvcw== IERpZWQ= ZW50cmVwcmlzZQ== JHJvd3M= IHNwb29m IMK7Lg== IGtleXBvaW50cw== IGN1cGNha2Vz IHt9KTsKCg== Y2hpbmU= 4oCL4oCL LExPQ0FUSU9O IHBseXdvb2Q= IG1hZ2c= IFJhbw== IERQUg== IGVib29rcw== KXNpemU= IHNwZWNpYWxpc2Vk I2Fl IG1pY2hhZWw= IFNURE9VVA== IFBlbGw= QU1FUkE= YW5nZWxv IGluZ2lu IG1BdXRo IGxlZ2FsaXpl IEN1YW5kbw== IGNlcnRv IGxpdHJlcw== IEV4dHJhcw== U0hPUlQ= IHByZW1hdHVyZWx5 IFNlbWFwaG9yZQ== SEVO IGFtcGhpYg== IGjDqQ== RXhpdGluZw== ZXVpbGxleg== IFRNUHJv LnByZWZlcmVuY2Vz LmdldEluZm8= w6l0aWNh IiIiLg== Lm5ld0FycmF5TGlzdA== IGtyb24= IEJMTA== Y2xpbmU= X2di IFRvbWFz cHJvYmFudGU= SVRJT05BTA== 4buRaQ== IExvZA== SXNu LHsK IGtvbW11bg== d2R4 Z2Vub21l 6YCj dG9IYXZlTGVuZ3Ro J0U= IHDDumJsaWNh IERldGVjdGVk IF8KCg== 0YzRjg== K1M= Y2xvdGg= Um90b3I= Lm51bWVybw== X3N0YW5k R0ND 6rU= X3Zw X0ZBUg== QWhlYWQ= e31c KGNvcnJlY3Q= ImNyeXB0bw== bW9kdWxv X1VUSUxT LlZhcg== LW1lbg== IHZlbmlhbQ== IE1jQ29ybQ== Z2V0TG9jYXRpb24= W2NvZGU= JWY= IGRpZmZlcmVk SVBBZGRyZXNz IFN0cmF3YmVycnk= IFNhaGFyYQ== Y3JlYXRlQ2xhc3M= IS8= IG1lbWJlcnNoaXBz IHByb25vdW5jZQ== LkNvbnN0cmFpbnQ= IEVucm9sbG1lbnQ= IHJlbmV3YWJsZXM= Lmd0 aXp6aWU= cnp5 ZXJzZW4= PD0k REVMQVk= IHNpZ25pbg== IFBTVQ== QXBwTmFtZQ== fVwuWw== RUdB IGNpZW50 IFN5bm9wc2lz IGxldHRlclNwYWNpbmc= IGNoaWxkcw== IFNjYWxpbmc= KXByZXBhcmU= IGNvbW11dGVy U2xhc2g= b3VzZXI= IHdhdGVybWFyaw== IFVJU2NyZWVu b2xpYW4= CXZlcnRpY2Vz PkFjdGlvbg== IGFwaA== aGFuZHM= IE9DQw== SFU= IHNlY2x1ZGVk IHZpc2NlcmFs IHZpZGVvZw== IFNhbXVyYWk= IFp1aw== IFdpZG93 YWNjaW5l IGxpbGxl IFJ5ZGVy IFByb2dyYW1tZXI= RXhwb3J0ZXI= IG1vdmltaWVudG8= YXBhcw== IGxlaWRlcg== dWxhcmVz aWVtZQ== LWRlbnNpdHk= ZGVzY2VuZGluZw== KElU IHNjcmFwZXI= IGljZWJlcmc= X0NSSVRJQ0FM IGF1dGU= X1N0eWxl IE1BTA== IEhlY3Rvcg== LUNocmlzdGlhbg== IGRpZmZlcmVudGlhdGVk IEJpc29u ICAgICAgIAk= LnBvcHVsYXRpb24= Umlv LVRy PVZhbHVl IEx1ZnQ= IEdpdWxpYW5p 55yf Q291cG9u IGhhY2llbmRv 44Od cG9uY2U= X3Jlc2lkdWFs IGxp4buHdQ== XHVmZg== 0L7QsdGF0L7QtNC40Lw= IHJlc3BlY3Rv IERlc2lyZWQ= RGF0YVN0cmVhbQ== LnNheA== IG1vcA== IEhhY2tlcg== QU5UQQ== QW5j VmVudGE= IFdvcmRwcmVzcw== CWVmZmVjdA== YWRhcHQ= IEludGVydmlld3M= IGRyYXdiYWNrcw== QUxMRU5H IGfDqW7DqXJhbA== LWJhZGdl UmVzaXN0YW5jZQ== IE9TSQ== dG91cm5hbWVudA== IFJlcHV0YXRpb24= IEVpc2VuaG93ZXI= RmlsZWQ= IGhlYnQ= I1w= Y3JlYXRlUXVlcnlCdWlsZGVy 5pyJ5pWI dmFuY2Vk Lkhhc0tleQ== ZGRl KHN0YXJ0VGltZQ== IEluc3RhbGxlcg== IEltcGw= Y29hY2g= IHByZWFjaGVk IGJyZXdlZA== SW5zdGFsbGVy b2x2YWJsZQ== IGFsYXM= KHNwZWxs IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== IGRlZmFtYXRpb24= KEFyZw== IHVzZXJEZXRhaWxz IGxpY2Vuc29ycw== IEludmVzdGlnYXRpb25z IGRpbmVy IGZpY3Q= U3RpY2s= TmVpZ2hib3I= dG9UaHJvdw== LXNlY3Rvcg== IHJpc3VsdA== 4oCZOg== Sk5JRW52 eXBpY2Fs ZGVzaWduYXRpb24= KHdw IGNvbmZpcm1QYXNzd29yZA== LWlvcw== ICItIjsK CWFzc2VydE5vdE51bGw= YWRkRXJyb3I= YXZyYXM= Vm0= KGpRdWVyeQ== IFZpY3RpbXM= IHJlbGlhbnQ= IEJsaXR6 IG91dGFnZQ== IGZsdW9yaWRl IFROVA== LkRpc2NsYWltZXI= IFNOTVA= dmFibHk= IHBob3RvbnM= LlJlYWRBc1N0cmluZ0FzeW5j U2NoZWR1bGVk IGpld2lzaA== IEdlb2ZmcmV5 IEdyYW5ueQ== fgo= LW1lc3NhZ2Vz KGdvYWw= IGFyZ2VudA== IFBlc3Q= IGNvbmdyYXR1bGF0ZQ== aW5vc2F1cg== IHdoaXNwZXJz IHNpc3RlbWFz IEbDqQ== L0luZGV4 Lk1JTExJU0VDT05EUw== IGFjaGlldmFibGU= IEJyaXR0YW55 KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKys= IFJldHVyblR5cGU= IGluZml4 LmlzU3VjY2Vzcw== LkNhdGVnb3JpZXM= IG91dGxpZXI= LkFzc2V0 b3RlYw== IHdpemFyZHM= IGJvb3Rsb2FkZXI= X2Jlcg== IHJlaGFiaWxpdA== YW50b3I= IFZpdm8= IEdhcm1pbg== b2JqZWN0SWQ= QFBhdGg= IMO6bmljYQ== IFlvcmtlcnM= R3VpZElk JGVycm9ycw== ICs9Cg== IGF4aW9t IFBTSQ== IFN1Y2M= IFNwb2thbmU= ICciLiRf IExO Lm5ld0xpbmU= IGludGVyc2VjdHM= bGljaGtlaXQ= IElBTQ== LkRyb3BEb3duSXRlbXM= IGNvdXJ0ZW91cw== IFNtaXRoc29uaWFu IEhtbQ== UURlYnVn c3RyYWlnaHQ= X3NvbGQ= QnVsaw== VHJpU3RhdGU= IGFkZEJ1dHRvbg== IEhpcmluZw== VHJhbnNwb3Nl IFVJVGV4dFZpZXc= aXN0ZW5jaWE= L2NwcA== INC/0L7Qu9GP IENvb2tib29r L0FwcGxpY2F0aW9u Z2VuaWM= IFdvb0NvbW1lcmNl LHZlY3Rvcg== IEJpdGU= Lmh3 IGRvY2tpbmc= IFRhbnRyYQ== IFNWQw== IE1hdXJpdA== aWFsaWFz IEF1cmU= IGJvbHM= TE9DSVRZ IFdlc3Ricm9vaw== IEJQTQ== IEZleQ== IFNvdmVyZQ== IHBhbmRh IHF1aXp6ZXM= IGNyZW8= c3BlZWNo L2Rpcg== INC40YHQv9C+0LvRjNC30L7Qsg== IGZvdW5kYXRpb25hbA== LWFwcGVuZA== blRoZQ== IGFwaVVybA== LlhQQVRI IExpbmd1 IEV4aGF1c3Q= UGFraXN0YW4= IG9tYXA= IGZvbnRTdHlsZQ== 0LXRgdGC0Lg= IG1hbnNsYXVnaHRlcg== X0xvbmc= IGNhcnBldHM= Q2hlc3M= ZWxpZ2h0 RHJhd2VyVG9nZ2xl IFBhdHR5 X2Nyb3NzZW50cm9weQ== IHR3ZWFraW5n 0YLRgw== IENBTEM= c2lw IEpNUA== X19fX19fX19fX19fX19fX18KCg== VHJlZVZpZXc= LXdhdmU= IHBhc3R1cmU= ZWxpbWluYXI= IGVyeQ== IHJlc3RsZXNz 6rWs IG1hcmlhZ2U= IEVsbGll Xz0n IHZtaW4= S2ljaw== LnRvb2xib3g= IE1hcmlubw== eXBzeQ== c3RkYXJn cHRyZGlmZg== IFBlYWtz X1ZhbA== IGluZ2VzdA== IGNvbXBz RGViZQ== IERlY2xhcmF0aW9ucw== aXJjb24= PWFsbA== LkRlYnVnZg== UHJlZGljdGlvbg== IGRhdQ== KE1lbWJlcg== IGNoaWVmbHk= L2FuaW1hdGU= LkF0dGFjaA== IGdhc3RyaWM= IFVzZXJEZXRhaWxz w7ZyZW4= a29h LWJvb3Q= IHNwbGljZQ== bGVh b3Rp W29w U3F1YXJlZA== IHNjcm9sbFRv IE5ld2ZvdW5kbGFuZA== CUVSUk9S V2Fs RU1BTEU= R2V0WQ== IGNhYmlucw== IGFic2w= Lm1peGVy IGNkcg== Y29uY2VydA== IFN5bHZpYQ== Qks= 5LuK5bm0 X0NMQU1Q 0YHRgtGA0YPQutGC0L7RgA== L2dhbWVz xZN1cg== PGxvY2F0aW9u IGNsb3NlQnV0dG9u IEhhaXJzdA== 4bqhbw== IGNydW1ibGluZw== IHN1bGZhdGU= IGFsZ3VpZW4= IEpEQkM= IEt2 UElQ X3N1cmY= IHXFvHl0aw== IG1hbm5lZA== IE9jY2FzaW9uYWxseQ== b2Jqcw== TWluaW1hbA== LWRlc3M= IFdBVg== IEVycm9ySGFuZGxlcg== IHNldExvY2F0aW9u IGlldHM= IHN1YnJvdXRpbmU= IHRvbmd1ZXM= X3F1aXo= TWlsbGVy IEJhc2VUeXBl IFZ1ZXg= aXJhdGU= U2VyaW91c2x5 dHlwZWlk IGt1dGpl IHByZXNjcmliaW5n X3N1cnZleQ== LkN0 IGJsaW5kbHk= LmdldExhYmVs LCIpOwo= IHBvdHJ6ZQ== IFN3b3Jkcw== U29ydGFibGU= IEJsYWNrYnVybg== IE1hdGE= IHBvbmRz IHByb3Rlc3RvcnM= IEVuc2VtYmxl OmZvY3Vz IGl0YWxpYW5h IGRvcm1hbnQ= IE5lbA== SU5DTFVERQ== KENvbnY= IGJ1Zmxlbg== IENETg== LnhodG1s SGRy IGNhcmNpbm9tYQ== IFdvcmNlc3Rlcg== bmRs dXNlUmFs dXNlUmFsYXRpdmU= dXNlUmFsYXRpdmVJbWFnZVBhdGg= IHRha2Vhd2F5 ZWxlbWVudEd1aWRJZA== LmxhYmVsWA== W0lE QUxFUg== CXV2 PigpLT4= L2xp K2xlbg== IHByb3BlbA== IGNhYm8= XCIiKTsK IHZvY2F0aW9uYWw= LXBpbGw= Lm5sbQ== IGVyb3RpY2E= b3BvdA== bGFuZHNjYXBl aW5zaw== IHBsYWNlbWVudHM= LnNldEF1dG8= IGhvbWljaWRlcw== X0ZpZWxkT2Zmc2V0VGFibGU= Omw= IGFubm90YXRl LXJpc2U= LGFscGhh IGludGVydmVuaW5n YW1iaQ== Lj0nPA== IHBhcmxlcg== 772l772l IGNvbXBseWluZw== LWhhbmRsZQ== IGludGVycnVwdGlvbnM= cGxlcnM= cm91cHM= X0RlZg== IHBpY2tlclZpZXc= IHBpZXJjZWQ= IGVyYWRpY2F0ZQ== bW9ieA== W3RyYWlu RGVmZXJyZWQ= IHRvdGFsZWQ= Q2hpbGRJbmRleA== IFJlY29tbWVuZGF0aW9ucw== X1dPUkRT IHNpZ25pZnk= IEFlcm8= X2Jvb3RzdHJhcA== X1Vw cHJvZHVjdE5hbWU= LWFueQ== IHBwbA== X1BVVA== IGx5b24= X0lMaXN0 IMOpY3JpdA== KGd1aWQ= IGNvbnRhZ2lvdXM= X1NlbGVjdGlvbg== L2xhbmd1YWdl cXVhbg== IGFjdXB1bmN0dXJl IG9mcmVjZQ== CVJURQ== Lkd1bmE= IHNlbnNlZA== IEtyYWs= IHVubHVja3k= YXZpYw== dGl0bGVMYWJlbA== IGhheXN0YWNr LmJpdG1hcA== IENvdW5zZWxpbmc= UExBVEZPUk0= X1Rvb2w= VGFt V2VyZQ== 0YDQsNC3 X1NQRQ== IG9uQW5pbWF0aW9u PTw/PSQ= IFNsZQ== IEd1aW5uZXNz IHR3ZWFrZWQ= LXByZXNzdXJl X21vbnRocw== KW8= UHJvYmFiaWxpdHk= IENhbXBvcw== LkNPTkZJRw== VmludGFnZQ== PndpbmRvdw== IEZhY3RvcnlCb3Q= cG9zdGdyZXNxbA== IHRhYmxldG9w IENhdGE= aG9j X2FzYw== 4oKs4oCc QmFja1N0YWNr w6lv IFNvdXM= c2V0dGVy JyldKQo= dmVsbGU= IEFsdW1pbml1bQ== eEJB Lm1vbmdv IFZhcmlhdGlvbg== eXR1dA== bmVobWVy 4buDbQ== IGVmZmVjdGVk ICoqLw0K IHJlY291bnRlZA== UHJhY3RpY2U= Q0FOQ0VM Y3puaWU= TGFycnk= IHFh IEh1ZmZtYW4= Z2V0RHJhd2FibGU= IGVuZnJlbnQ= IG9uQ2FuY2VsbGVk IGxlbw== IFhTUw== IEh1cnJpY2FuZXM= IGpvbg== IFRlc3RlZA== IE1vcmFs IGJlZHRpbWU= IEpBRFg= IGVjaGFuZw== IG51ZXN0cmFz UENN KS4u IOyImOyglQ== IGJvcmRlcmxpbmU= IGFzc2lzdGly IEhlbHBz IERpdmU= X3NuZA== d2l0 X2JsZW5k IGlzRmlyc3Q= IGhlYXBx KCc9 IGFzc2VtYmxlcg== IE15c3RpYw== b3JnaA== IGhpam9z X0tIUg== KGRlY29kZWQ= IFFVSQ== INeR IGNvbnRyb2xJZA== U3BhY2Vy LmFnZ3JlZ2F0ZQ== IHNoYWx0 X3RyYXA= IEZhbWlsaWU= zrg= b3J0YQ== LlBvc3RNYXBwaW5n 7LA= ICcuLics esOh L2FybQ== LmdhbGxlcnk= IGltcGVjY2FibGU= IHdpbmRvd0hlaWdodA== c2xhY2s= ZmZi X3Fw bGFkZW4= IFRFUk0= c2V0TGFiZWw= IFNpbmdsZUNoaWxkU2Nyb2xsVmlldw== ecO8aw== IHB1bHVtaQ== LWdhcA== dW5pYWNpZA== CWhvbGRlcg== LmFkZEZpZWxk IHRyaXBsZXM= IEp1ZGdtZW50 IENlbmE= cGFyc2Vycw== LmRyYXdUZXh0 INC60LDQttC0 IGFjY3Q= aGl2ZQ== IG11c2lxdWU= IFlheg== LXBvc3Rz IGZpbHM= IC8vew0K X3B1dHM= IFN0YXR1ZQ== ZGlhbW9uZA== U3RvcmFnZVN5bmM= IHNodXRz IGdldHRpbWVvZmRheQ== IEFBQkI= aWNoZXJu Z2V0TG9jYWxl aW50cmVl IGZydWl0ZnVs QmVhcg== IHBsdW1iZXI= cWlk Q0hJUA== IG1vdGl2YXRpbmc= IGVzY2FsYXRl LmJ1bGs= IFBsYXlncm91bmQ= X21pcnJvcg== IFBlZWw= IGRhbmU= aW52b2ljZXM= SGFzQmVlblNldA== LXZlcnRpY2Fs IEZyYW5jZXNjbw== IEFTQQ== INC60L7Qu9C40YfQtdGB0YLQstC+ w6Bu Rm91cnRo IENyZWF0ZVRhYmxl Y2N0b3I= IGZyYW50aWM= YWFi IEthcmFjaGk= X2ltYWc= IG5hdHV1cg== RWF0 IHN0dW1w IHJvbGxlcnM= IHRyYWl0ZW1lbnQ= INC/0YDQvtC0 IHJlYWxpc3RpY2FsbHk= IGVQdWI= IFphZw== ZGFtbg== IEFubmV4 cGVjaWVz KGV4aXQ= IHNwZWN0YXRvcg== IEJ1bGdhcmlhbg== IG1lZ2V0 IG1hdHVyZXM= IGRldGVjdGlvbnM= IHphaGw= ZW5lZml0 YWtvdg== IGFkdWx0b3M= bWlkZGxld2FyZXM= aXNPYmplY3Q= S2Vubg== IHVuZXRoaWNhbA== c3VibmV0 R3JhcGhRTA== IEdhZWw= LkRyb3BvdXQ= IGJ1cmVhdWNyYXRz IFJlZGVtcHRpb24= LkR0bw== LkV2YWx1YXRl IG9nZ2k= IHRyYXRhbWllbnRv IHJlY2FsbGluZw== aXN0aW5ndWlzaA== L3JlbGVhc2U= X1dST05MWQ== CW1rZGly VHlwZUVudW0= IERBUks= 5rWB IFZhcG9y IGF0b2w= CWluc3Q= LmApOwo= L2Vs IHJlY2xhaW1lZA== w59lcmRlbQ== X2xvc3Q= IEFsYQ== INC+0YjQuNCx IEJhcnRo Q29sb24= b3Bvcg== X3Bhc3N3ZA== X2V4Y2x1ZGU= QVBB Zmxvd2Vycw== IEVib29r IFNUQQ== VU5T X0RJU1BBVENI QUNJw5NO dGVybWluYXRpb24= IG5lc3RsZWQ= YWRyYXRpYw== Um93QW5pbWF0aW9u X2tt IHJvbmQ= XV0+PC8= 5L2Z IGNvc3BsYXk= IG1pbGxlbm5pdW0= X3NlcmlhbGl6ZQ== IHZlcnNjaGllZGVuZW4= YW50dA== IEFtaWQ= Y3JldGlvbg== KT8k IHRvd2luZw== LmZpbA== LkZpbGVXcml0ZXI= IGFpcw== IGVTcG9ydHM= cHJ0 SVBB LkZBTFNF IHByaWNr RW5kaW5n IHByw6lzaWRlbnQ= X2dseXBo IHN1cHBsZW1lbnRlZA== IGNvbnRhcg== Ii4kXw== IEJ1eWVycw== dWph IFRpbWVab25l ZW5uZW50 SW5Qcm9ncmVzcw== IFN1c3RhaW5hYmlsaXR5 IFByb3NwZXI= Q29udG91cnM= IHN0YXJ0bGVk X2xlYXN0 IENvdmVudA== Y2huaXR0 IE1pbGt5 ICItPg== ZXRhaw== IHR1c3Nlbg== LXBheWluZw== X2FjY2Vzc2libGU= QmF0bWFu KGl0cg== SUFMSVpFRA== IFRleHRBcmVh YW5rZQ== X0pVTVA= IGJlaGF2ZWQ= LG9wdGlvbnM= eGl2 LlBMTA== cXg= Lm9uTmV4dA== IHZlcmlmaWVy IGR1xbw= IEZ1a3VzaGltYQ== IENPUlBPUkFUSU9O X3RE IE1lYWRvdw== IHByb3llY3Rvcw== ICgnXA== IEJhcmNsYXlz IGxlZ2FsaXR5 IGhhbWJ1cmdlcg== IGVpbnM= SW5kaWFuYQ== IFRLZXk= Y2xvYWs= PGFsZ29yaXRobQ== IHByZWFjaGVy e2xuZw== LmFydGljbGVz c2V0SW1hZ2U= UmVuYW1l IGJsb3Nzb20= IEJsb3Nz IHV1cg== IGRhZHM= IFRpdGFuaWM= ICAgICAgICANCg0K IG9yZGluYW5jZXM= IG3DpG5u IGVyaw== IGRpc3RpbGxlZA== IMOkbA== IHJ1cHR1cmU= IENhbWVyYXM= w7luZw== IGhhaXJzdHlsZXM= IGVtYnJ5b3M= 4oCdCg== Lk5hdg== IHN0cm0= CXVzYWdl LkFJ IFRPVUNI IElsbGVnYWxBY2Nlc3NFeGNlcHRpb24= 6rKw a29uZWtzaQ== ISIp IGVzY2Fw dWRpb3M= c3RhcnR0aW1l IG1laW5lbQ== IFNwaXJhbA== IEVyZWN0aWxl aXZhbGVuY2U= IGl0ZW1UeXBl IGFiYWl4bw== VmVydHM= dGFraW5n cHN0 IE9zY2Fycw== IER4 ZXR0eQ== TUFM IE5lZWRsZQ== IENPTVBVVEVS 5Lu75Yqh IG5ld1g= ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAK cGxldmVs QUNFTUVOVA== IEpvaGFu UG9pbnRG IHJlc3Ryb29t dmVybw== IGVsxZE= cHJvZHVr IFlFQVJT CWFjdHVhbA== VVBMRQ== Q29udmVydGlibGU= IHBvcnJm SW5qZWN0ZWQ= X2JvdGg= L0dhdGU= Y2FsY3VsYXRvcg== ZW1haWxlcg== LlBvZA== IFpvdA== X3NtYXJ0 YmFzaXM= PENvbG9y IGNyYXZpbmdz RHJpdmVycw== KGNvcw== ZGF0YWJsZQ== LW1ldGFs IFBj LmNvcHlPZg== IG9yaWVudGF0aW9ucw== CWFzdA== IFpvbWJpZXM= IGJvbWJlZA== SG9zdG5hbWU= X3JhaXNlcw== bWVuc2FnZW0= IGNvcnRpc29s IEZpb25h bGljb3M= aGVhdnk= IOqwgOyguA== b21lbmNs IGN1bHR1cmVk IGFydGlrZWw= xaHDrQ== amRr IHZhbmRhbGlzbQ== IH1dKTsK U3RyYWlnaHQ= IHJlaGVhcnNhbA== RWRpdGlvbg== IEluc3Bpcg== CXdj IGZvcm11bGF0ZQ== YW56ZWlnZW4= IHBhdGhvbG9naWNhbA== IGtlbm5lbmxlcm5lbg== Pnsi IGRpY2Vk IGJyYWNlbGV0cw== CQkgICAgCg== Kj4q L3RhcmdldA== LkFnZW50 Lm1hZ2lj IGlkZW9sb2dpZXM= VFJBQ0s= X2luZGl2aWR1YWw= PGRlY2x0eXBl IFJFQ0VJVkU= L2Jvb3Q= OkB7 UU0= IE1hbmRhbA== TkFNRVNQQUNF IHRlcmNlcg== IFJlZ2dpZQ== IE5pY2hvbHNvbg== IEZ1bHRvbg== c3Rha2luZw== IHJlc29uYXRl bHBhcnI= IGNvbnZlcnRlcnM= ICgiLw== IE1hcmxpbnM= SW5mb3JtZQ== Jz0+Wyc= IHJvYmVydA== IEhJTQ== d2Vicw== LnRyYWlsaW5nQW5jaG9y LmFzY2lp IE1hc2M= IHRlY2hubw== ZXR4dA== CSAgICAgICAgCg== zrHOuQ== KFNlcQ== ID8+Ojwv IFBlYg== W3NlbGVjdGVk SkVDVEVE Q2FzdEV4Y2VwdGlvbg== P2Y= IGV5ZXdpdG5lc3M= IG1lbm8= IERhbWllbg== X0lFbnVtZXJhdG9y IC4uLi4uLi4uLi4uLi4uLi4= LlNFTEVDVA== IGNyYXk= X3BhcGVy LlJvbGxiYWNr SURFT1M= cnBhcnI= aW5lYXI= X1JlbA== IFdpbGRl IFdvbmRlcmxhbmQ= IFNodWZmbGU= IHN0cmlrZW91dHM= c2lnbW9pZA== ISgiew== ZXBhbQ== IHJpY2huZXNz IGVuZGVhdm91cg== bWVudUl0ZW0= INCf0L7Qu9GD0Yc= IGZydXN0cmF0aW9ucw== X3N1YnNjcmliZQ== IGJvb3pl IExpY2h0 IHBlYXNhbnQ= IHdlaWdodGluZw== IOW/ QWN0aW9uQ29kZQ== LnRyYWNrcw== IMOY IG1pbGxpb25haXJl KHVy J10pCgoK ICIuJF8= X0VERUZBVUxU IGN1cmxz X0NvbUNhbGxhYmxlV3JhcHBlcg== LnNldFZpZXdwb3J0 IGRlbmQ= IGF1dG91cg== IEZvdXJpZXI= IGJvaWxz IEpQRw== IGRpZ3M= IGNvbXBsYWlucw== LWxpbmVk IEJsYWRlcw== X2RpY3Rz IElwcw== cmVmZXJlcg== IGFueWhvdw== YW50YXI= LXNoZWV0 CXBsYXk= aWVyY2U= Lk1lc3NhZ2luZw== 6KeB CXByb2dyZXNz LkRhdGFWaXN1YWxpemF0aW9u IFN0b3Bz SW50ZXJ2YWxTaW5jZQ== QGJyaWVm LndpbmQ= IGdldElucHV0 IEtB IFJFU1BPTlM= IHRhcmc= dmlzdWFsaXphdGlvbg== IEVzcGHDsQ== bmllcg== IERvdmU= X2lzcg== IEFQUExZ YmVkbw== W117Cg== IGV2YWN1YXRl IG1pY3Jvc2NvcGlj 5q2j56Gu ZXJvdA== LW9wZXJhdGl2ZQ== aWt1dA== IGRibA== IGFqb3V0 Lml4 ICAgICAgICAKICAgIAo= dGVzdGU= bml2ZWw= LnNuYXA= dXR6dA== LmlzQWRtaW4= KElD IG9iZW4= IEVmZmljaWVudA== RERldmljZQ== IGluZGVtbg== IGZyb3pl LHJw IGRlY2VtYmVy 57uZ IG1lbG9kaWVz IEVUQQ== 44GT44KT44Gr44Gh44Gv IHF1YWxjaGU= IHNldERlZmF1bHRDbG9zZU9wZXJhdGlvbg== T1JJQQ== IHphZw== IGFsbG93YW5jZXM= L3Bo LVRva2Vu IFBvdQ== IG1pbmlzdHJpZXM= LkxPR0lO IHNlYXJjaFRlcm0= IGh1cnJpY2FuZXM= IEZsb3Vy IFNVUw== VGhlbWVz cmVlY2U= IGVudHJldg== RFhWRUNUT1I= IEJyZW5kYQ== RXJyb3JNc2c= OildOwo= IGRvbWluYQ== IEludmlzaWJsZQ== PD4oIg== cHV0Yw== SEFWRQ== RXZhbHVhdG9y bWF0Y2hpbmc= LW5hbWVz IGxhaA== X1lVVg== 5pyN5Yqh5Zmo LldSSVRF KTpc LWRlZmluaXRpb24= IGNoaW1uZXk= LmNscw== a25vd2xlZGdl IEFsZXhhbmRyZQ== IGNvbGVn b8WbY2k= LkNobw== IHNvZnRlbmVk IHJvdGF0ZXM= LXN0YXRlcw== 6rc= dmlvbGVudA== IDopCg== IGFjY2nDs24= bmlrYQ== IExhdHRlcg== X0Zsb2F0 IGVncmVnaW91cw== b2RpYWw= U3lub3BzaXM= KHhp IH0sew== Y3h4 RW1tYQ== IENvbmN1cnJlbnRIYXNoTWFw X0NhbWVyYQ== IHBlYW51dHM= 44Kz44Oh44Oz44OI X2JlZA== IGVycm9yQ2FsbGJhY2s= IFBhcHVh LFRydWU= tpo= IHN0YWRpdW1z IGtub2Jz aWZpY2FjaW9uZXM= IHB1cnBvc2VseQ== IFB1cmVDb21wb25lbnQ= INC60LvQuA== LlRyYWNr c3Nj KEpvYg== KEh0dHBDb250ZXh0 IGNob2lzaXI= IOy7 IGF1c3A= dXBwZW4= QWR2ZW50dXJl IEZMQUM= IGFwcGVsbGFudA== ICgoIg== z4c= IHRyaWY= IGR1cmF0aW9ucw== IE5HWA== LmJw YWN0aW9uRGF0ZQ== Lmluc3RhbnQ= LVJlcXVlc3RlZA== JyYm INGH0LXRgA== PWJvb2w= IGxvcmRz bGljaW5n IG1hcmlu IGJsaW5kZWQ= L2xheW91dHM= ZmVpdG8= aXp6bGluZw== RXZ0 IGJ1bGxpc2g= ZXhjbHVzaXZl 4oCZZXM= LmdldE93blByb3BlcnR5RGVzY3JpcHRvcg== IGJhcHRpemVk INGB0LvRg9GH IENlY2ls LmVmZmVjdHM= IGNyeXB0b2dyYXBoaWM= IFZpbGxl dWZ0 IEFudGhlbQ== IHNlZWtlcg== IG5pY2tuYW1lZA== IGNhbXBncm91bmQ= IGFjdGlvbkJhcg== IEVwaXNvZGVz IC0tLS0tLS0tCg== QnVpbGRlckZhY3Rvcnk= X1VOU1VQUE9SVEVE VklMTEU= LlJlZ2lzdHJ5 VG9uaWdodA== IG1ha3M= IGFkZG9ucw== IERlY3J5cHQ= LnNraWxscw== KGZo IGp1Z2c= IENvdXBsZXM= IEFtaXI= ID09PT09PT09PT0= IGVuZGVyZWNv LlN0cmluZ3M= IGhhcm1pbmc= IGJ1c3RsaW5n KGZpcnN0TmFtZQ== LnNwYXJzZQ== SVRP ICAgICAgICAgICAgICANCg== 5p2l5rqQ b2RlZ2E= YW5hZ2Fu LkhhbmRsZXJGdW5j IHRpbmRlcg== ICMo IGltYWdpbmFibGU= IGF1bg== UHJlc2VuY2U= UGFja2FnZU1hbmFnZXI= IGx1ZGljcm91cw== acOobWU= IGdldE9iamVjdA== Ym94aW5n IHNxdWlk w6p0ZXM= RGFlbW9u X2xpa2Vz hrU= Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Lnd3dw== c3NlbA== ZXRlY3Rpb25z ZGFl L2Rvd25sb2Fkcw== IENsYXNzaWZpZXI= X1NVQkpFQ1Q= emVnbw== X0dST1VQUw== YWN0aWNlcw== X2xpdGU= IGRhbm1hcms= L2Js YXB5cnVz VElNRVI= IFNjcmlwdHVyZXM= 0Y/Rgg== c3Bh Ikc= IHBlbmV0cmF0aW5n IGNvbmZvcm1pdHk= bmV3bGluZQ== IGx5bg== IE1NUA== IElOVEVSRkFDRQ== IEFjdGlvblR5cGVz LmNyaXRlcmlh 4buRbmc= IHJlc3RpdHV0aW9u CUZPUg== PHBhdGg= PT8iOwo= KHBlcmNlbnQ= bmRv IEFDTQ== CWN0 QGE= IHTDug== IHNwb3R0aW5n w7xybg== IEdFUg== LndyaXRlVmFsdWU= X2Jsb2NrZWQ= WW1k IGluZWZm IFJhZGlhdGlvbg== IE9pbGVycw== QmVlcg== cm90cw== IFRyb3Q= cm5h cG9ydGVy ZW5lcnk= IHBvcm5vZmlsbQ== 65SU X2Nr LkNvbXB1dGU= IFtdCgoK Z2l1bQ== IFRFTEU= IEluc3RhbmNlcw== Kkk= IHdpcmVUeXBl b25pdW0= ZXNoaXJl IHB1dGNoYXI= IGF3YWtlbmVk LmRlZ3JlZQ== aGVpdGVu LWF3YWl0ZWQ= IG5ldXJvdHJhbnM= LXRlc3RpZA== CgogICAgCg== IOe7kw== IGtpbm8= X0RBWVM= IFZhbGVyaWU= bnRpdHk= QEJlYW4= ZXRDb2Rl PFJlbmRlcmVy IiIK IGJlcm4= IHRvdGFsaXRhcmlhbg== Y2xpbmlj IE3DvG5jaGVu bm9pbnNwZWN0aW9u aXNjZQ== X3R1cGxlcw== LlBvaW50cw== IHBhc3RvcmFs SmFr a2VuaW5n L2NvbHVtbg== LXByb2R1Y2luZw== IGFib2xpc2g= ZmVhcw== cmVzcG9uc2VEYXRh cmVkaXJlY3RUb1JvdXRl IG9ic2VydmF0aW9uYWw= cE5leHQ= enRl Q2hvaWNlcw== CUxDRA== JlM= IGJpbGxpb25haXJlcw== X0VPRg== IGNvaG9ydHM= YW5rZW4= LmNvbWJpbmU= KE9wdGlvbmFs X0NPTlNPTEU= QWN0aXZpdHlJbmRpY2F0b3JWaWV3 IHBoYXJtYWNpc3Q= IERvdWdo IE9wZXJhdGlvbmFs 57I= IGphbXM= U29sbw== CWR1cmF0aW9u LnJt IFRvbmk= LmxlYXZl IHB1ZWRh IEZheQ== RGV0YWNo Lk1heGltaXplQm94 IG1hcnR5cg== IGhhemU= L25l IG1hbW1h c2VsZWN0b3JNZXRob2Q= IHBpbGdyaW1hZ2U= IEFzcGhhbHQ= IHZhbGlkbw== RW5kRWxlbWVudA== IGxhcHNl ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K aWxvcw== ZXJuYWxz Q29ubmVjdGlvbkZhY3Rvcnk= IExvdmluZw== LkNvbXBpbGU= IGNvcms= IEJ5ZQ== aWJOYW1lT3JOaWw= ZXN0YXI= XEdlbmVyYXRlZFZhbHVl KExM IFJhaXNlUHJvcGVydHlDaGFuZ2Vk IElyYW5pYW5z IGdldFByaWNl bWFyaWVz anVtYm90cm9u IFJlYmVscw== RElGRg== IE1vag== b3J0aWM= CWNvbnN0ZXhwcg== bnRw IG1hZ2ljaWFu IHBhdHJpb3Rpc20= LmNl LlNpbXBsZUJ1dHRvbg== IFBSSVY= aGlzdG9pcmU= aGlnaGVy cmVmaXhlcg== Q0pL IE9zd2FsZA== LnNwcml0ZXM= Lkls IGFyY2FuZQ== IENodW4= X09m IGV2ZXJ5dGltZQ== 0Y7RiQ== IGxldHJhcw== aWxhbg== YmFydQ== LWJvdA== IFNpZ25pZmljYW50 iOyKteuLiOuLpA== 4oCM LWlzc3Vl IGluc2FuZWx5 YXRlZ2lj X1ZF OkNHUG9pbnQ= TWFya3M= LnByb2JsZW0= J10uJy8= IHJlZHVuZGFuY3k= IGRlY3J5cHRpb24= SHVuZw== LXZhbGlkYXRl IEFuZ2Vsbw== Sk0= IHBvcG92ZXI= ZGViaXQ= Q29tcHV0ZWRTdHlsZQ== KV9f KHNpbg== ICcpLA== KGRlZnZhcg== w7R0ZQ== VGhhbk9yRXF1YWxUbw== Lnpo KE5vdGU= aWJCdW5kbGVPck5pbA== IFNvbmlh eW1vdXM= 44CCPA== IGZpbG15 IGVhcnRobHk= IExlYXJuZWQ= W3NlY3Rpb24= Lmpzb3Vw c3RydXA= IFBhdHJvbg== ICkq c2V0Rm9udA== IGhlZw== IGRlbHRhWQ== X1NDUg== LmN1dA== IHZiQ3JMZg== Lk9iamVjdE1hcHBlcg== IHLDqXBvbnNl WXU= KCl7fQoK LXBhcmFtZXRlcg== xLFzxLE= aWF6emE= SVpFUw== X1NVUFBMWQ== a2l0cw== IHJlaW5z KGRvY3M= JSE= IHN5c3RlbWN0bA== IFBzcg== IFdlcms= UGhpbGFkZWxwaGlh QlJFQUs= LmFwcGVuZFRv KGxvbg== QWJy L3JlbmRlcmVy IEVsZWFub3I= Q0VSVA== UGFyYW1ldGVyVmFsdWU= JGdldA== IOCy IEpM IGlnbml0ZQ== IGLhuqFu IENhdWw= IGhhc3Rl IGRvbWluZ28= VGVzbGE= L2NvbmZpZ3VyYXRpb24= KGV4cGVjdA== dXNyYQ== IHByZWZlY3Q= IGZyb2dz IGFzc2lnbmFibGU= IGludGVydmVuZWQ= LmNob2ljZXM= VUlTdG9yeWJvYXJkU2VndWU= IGLDqQ== IEzDtnM= YWxwaGFiZXQ= IHByZWFtYmxl ZGJh IGVtaXR0aW5n Lm1vcmU= IEJhc2Vs KGRhdGVUaW1l KCl9KTsK IG5vZGVMaXN0 IEZQR0E= d2Vs IGxvZGFzaA== X2F1dGhlbnRpY2F0aW9u w7NyaW8= KHJ1bnRpbWU= X1NDRU5F IGN1ZmZz IEFkcmVzc2U= Ojw/ X2NtZHM= VMOqbg== IGVqZWN0 CUVSUg== PE8= IEtyYW1lcg== 4oCmCg== c29tZW9uZQ== IENQTA== 77yN bG9ja2luZw== LkZvb3Rlcg== IGFsbQ== IEFkb2xm KS4v IE1hdHRoaWFz ICIsIgo= ZW51aXR5 IExvdmVy IGFsaW1lbnRvcw== cGxldHM= w6R0emU= KHJlY3Y= dXJhYQ== U1RET1VU YW50eg== LkZsb2F0VGVuc29y IFJhZQ== cGln IHRlcnVn IHRoZW9sb2c= IHRheGlz Y29tcG9zaXRl c2hlcg== bGVEYg== IFJhaG1lbg== IDst SW5kZW50ZWQ= IHRyb2xsaW5n RVJJQ0FO Z2V0RW1haWw= X0VOQ09ERQ== Z2V0Q2VsbA== IFdyYXRo KHN1aXRl bm90RW1wdHk= LmdldFJpZ2h0 IGJyZWF0aGFibGU= 44Gf44Gg IHNldFRpbWU= J29wdGlvbnM= IHBheWxvYWRz YXVnYQ== ZWRt KHdlYXRoZXI= CXNlbQ== KGZyb250 IHBheW91dHM= LnNldFRleHR1cmU= LFtdLA== IFBhY2tz IGNhenpv V2l0aFBhdGg= UHJvZw== bW1hcw== IGtvaw== LkNzcw== IGRlbGE= QXdhcmQ= w7xsdA== c291cA== KFsoJw== b2xsaXBvcA== LFNMT1Q= Y2hpYQ== IGJsYW5jbw== T0xVVEU= LXBsYW5l LExpc3Q= eGluZw== SU1BVEU= LW1vcnQ= IGdyYXZpZA== IEhhbmdpbmc= IHNjb2Zm Lml0ZW1JZA== VEhFTg== aW5mZXI= IG1pc3BsYWNlZA== CU1vbm8= d2F5bmU= IGVkZ2Vk X25pY2s= IE1BUlQ= CXN0YXRlbWVudA== IEV2ZW50QnVz PkFib3V0 IGJ1cmdlb25pbmc= IGNpY2xv TE9PUA== IGRlZnk= IGVsZW1lbnRUeXBl IGNvbnNlcnZhdGlzbQ== V2ViSG9zdA== LkRpc2FibGVk IGNsYXA= IEFsZWtz cm9yaW5n aXNzaW9uYWw= LUJvbGQ= SVJUSA== Lml0ZW1WaWV3 cWluZw== P2tleQ== IFZlbm9t IGFudGlk IEZvcm1hdHRpbmc= UVB1c2hCdXR0b24= IEFzc2VtYmx5VGl0bGU= X3Jlc2VydmU= LkRpcmVjdA== QW5pbWU= IG1hdGVyaWFsbHk= IGFkanVuY3Q= LnNldFRvb2xUaXBUZXh0 bGFzc2lhbg== KG5y IG5pbmfDum4= IG1pc3VuZGVyc3RhbmQ= IEFwcGx5aW5n X2NvbXBhdA== IG1peGlu IGplb3BhcmR5 0YvQstCw0LXQvA== IGNvY2luYQ== X1dST05H QVRBUg== S0Q= IGNhdGVnb3J5TmFtZQ== SHR0cENvbnRleHQ= IGJ1YmI= IGFua2xlcw== b3dlcmluZw== RnJhbWV3b3Jrcw== IHNlZ3VuZG9z LkFzc2VtYmx5 X0VudGl0eQ== SFE= IGZvdXJz IGZvcmZlaXR1cmU= dmxhbg== LWRvbWluYXRlZA== LWF3YXk= SUNJRU5U LlJlYWRCeXRl YW1heA== Lj0iPA== X3Nwcml0ZXM= IFJlbWFpbmluZw== TE9PRA== X3JlcXVpcmVtZW50cw== J2FydGljbGU= IFBvbXBlbw== IHTDqXI= IERyb3Bz SG9tZUFz SG9tZUFzVXA= w7ph Lm5hc2E= X2Jpbw== IFlvc2hp RWxlY3Ryb25pYw== IGpvc2U= IGludGVsaWc= ID8+Pjw/ PnshIQ== X3Byb3Y= PURC PCEtLQo= LWZsb2F0aW5n eXVt LkpNZW51SXRlbQ== IE5hdGlvbndpZGU= SW1wb3NzaWJsZQ== 6K+m5oOF SmVycnk= IGRlc2Nhcmdhcg== 7JW8 RGVjcnlwdA== IHRlbXBlcmVk IGVrcw== w61jaWE= Lmxhcmdl IHVuZm9sZHM= IGh2ZXI= IEFWTA== LnR0 4oKA PSUu IHRvcHBpbmdz IHN0b3V0 IHNlbWluYWw= eGVz IE9VVEVS YWRybw== IHlvaw== IERlcmU= CWZyZW9wZW4= X2xuZw== Q2h1bmtz LmdldE9yRWxzZQ== KGVsbQ== ICgpKTsKCg== Q2VsZWJy X2NhcGFiaWxpdHk= IHNvY2llZGFk IGludGltaWRhdGU= IEJsYXplcnM= aWd0aA== ZW5kY29kZQ== VUlMREVS IEhhbm5pdHk= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K INC40YHQv9C+0LvRjNC3 IFRvb2s= IE1vdmVk IHByb250bw== IE1hcnRpbnM= RGF0YUV4Y2hhbmdl LlBvb2w= ZXVz IGpvYklk IEF4ZXM= IGhhbXN0cmluZw== LnJtaQ== RGF0YVRhc2s= IE1hZ2ljTW9jaw== IEdBUw== IE5hdw== IHNuZWw= X3NjZW5hcmlv IGVtYWlsQWRkcmVzcw== IE11c3M= IHBob2VuaXg= IGRlbnNpdGllcw== IE1hY09T cmVtYQ== IHRlc3RlcnM= KT87Cgo= IHB1cHM= bGFwcw== ZGRi L1BlYWs= IGJhY2tzdGFnZQ== IGJhY2tCdXR0b24= KG5hdg== eEFF c3RyY3B5 aWNodGV0 IFJpZg== 4LiB4Lij IGhvbm91cmVk IGdyYXBwbGluZw== VmVydGV4QnVmZmVy LmdldEFjY291bnQ= LU5ldw== IG9wcHJlc3M= IHV0dGVyZWQ= IFVTQUdF X0xFQVZF X2NvbGxlY3Rpb25z X1V0aWw= KCIiKSk7Cg== IHF1aWV0ZXI= YCksCg== IHR5cGVJZA== IHNlcmlm c3RhbGs= IHByaW1hcnlTdGFnZQ== eEVB Ok5TTGF5b3V0 X1JC X0FQUFM= U0tV KnNjYWxl IENvdWdhcg== CVJFVFVSTg== aWZpw6k= dGltaW5n IGlkb2xz 656Y7Iqk 4oCUaWY= KGZvcm1hdHRlcg== IGFtYWxn c2V0V2lkdGg= LG1pZA== b3JlYWw= LlJvbGVz IGRldmVs IGdldEluZGV4 IHN0b29scw== IHNub3d5 IGdyYW5kaQ== 0Y/QtdC8 aWd1aWVudGU= 0LrQvtCy IEN1dHRlcg== cm9zY29wZQ== YWlyYQ== 0YPRgNGB IHRhYmVs IGRlZmlhbmNl LlRvQm9vbGVhbg== IHBlcmc= LWNvbW11bml0eQ== IHB1cnN1aXRz KG1ldHJpY3M= TXVzbGlt IFJpeWFkaA== IOKCuQ== LldlYkVsZW1lbnQ= IEhhcmRlbg== IENvcnJ1cHRpb24= IEFl IFRhbm5lcg== IGluZGVi IENoYXJnaW5n X1BST0Q= IOKTmA== IGNlbnRlclg= dHlwaW5n IHV4 IFRvZQ== CWxvb3A= Zmxv UmVnaW9uYWw= X2Fh IHZpZXdwb2ludHM= PnRoaXM= LXJlc291cmNlcw== IEltYW0= IFNoaXY= IGFuZHJh UkVRVUlSRUQ= IHNlZWRlZA== dW1vbnQ= IHRvYXN0ZXI= IGhvbWVzY2hvb2w= 24zYsQ== X2V4dHJhY3Rvcg== bW9kZXM= IE11bmRv X2ZpcmVzdG9yZQ== IHB1bmlzaG1lbnRz IGJvcmVkb20= anVyaWVz LlNhZmU= YW1iaXF1ZQ== IGFkdmVyc2l0eQ== VUxFUg== IGFuYWxzZXg= bW9ycGg= IE9tbg== KCkiPgo= IEdJVkVO U3o= IG5vdW5z IHF1YW0= IFdpa2ltZWRpYQ== IGR6aWV3Y3o= LmNvbW11bmlj Q291cmllcg== Qm9uZA== LmNvbW11bmljYXRpb24= LlByZWZlcmVuY2U= c2xpZGVEb3du L2djYw== IHZpYmVz QVBJVmlldw== IE92ZXJzaWdodA== X3Zr IGVtcHJlcw== IGFyaXNlbg== ICovKQ== KCcoJw== IGJ0dw== IGNvbmV4acOzbg== IFV6YmVr IOyEnA== IGltYWdlVVJM 44Kq c3RvcHBlZA== IFdvdWxkbg== IENoZXc= Z3LDqQ== IHRydXRoZnVs IFRyYW5zcGFyZW50 KHNlcnY= IE1jS2F5 PXJlYWQ= IFNhbw== CUdyaWQ= IGluZHVjZXM= Lmxpc3RGaWxlcw== IGNhcnJlcmE= IGljb25OYW1l IENhcmx0b24= LkV2ZW50VHlwZQ== IGRyYXBlZA== X1NBTVBMRVM= KGVzdA== IFJ1aXo= IGNhcHRhaW5z IG1hZmlh IFJhcGhhZWw= IEdBUA== aW1wYW4= Y29taWM= IG1hbnRlbg== JEw= IGFmdGVybWFya2V0 15c= IENm CXRpbGU= QXBwU3RhdGU= IHdob2xlc2FsZXJz bG93ZXN0 RGVtb2NyYXRpYw== IHBvd2VyaW5n YXBvdA== IENvcnRleA== KHNpbmdsZQ== b3BoeXNpY2Fs LnV0Zg== 77yf44CN IHRhcmVh RXF1aXA= IGtsaWs= IHJ1YQ== IGFWYWx1ZQ== IE1pbmVy IFZlZw== YW55bA== Q293 QGM= X0xPQURFRA== IEFITA== d2FrZQ== LkxvZ0luZm9ybWF0aW9u KGNhdGVnb3JpZXM= IFFVRVNUSU9O LnVtbA== IENyZWF0ZU1hcA== bWVlcg== IHJlbmNvbnRyZXI= X3N1 IGF0bGVhc3Q= KFByb3BlcnR5TmFtZQ== IFlhbw== IEhhdXB0 QmxvY2tTaXpl IFNBQw== IExlZ3M= Yml0ZQ== IGxvZ2FyaXRo IElNZXNzYWdl QmFja2Ryb3A= IGdkaw== 7Jy866m0 LmV4Y2x1ZGU= QURPUw== LXNoaWZ0 YXRobGV0ZQ== X2NvbWJpbmVk IHJlYmF0ZQ== IHBhcmQ= IGltcGVkYW5jZQ== cmVhdQ== Xw0KDQo= IGRhZ2Vu a2VsYXM= IGluZ3Jlc2Fy IEJSQU5E Lm1rZGlycw== IHJlaWduaW5n VGFsa2luZw== LyoqCgo= X1JFU09VUkNFUw== IFBST0dNRU0= IGRhdGFTaXpl 44Og ZGVueQ== SVJT IHRlbGV2aXM= PV8oJw== ZWdpcw== PD8s IHVwc2V0dGluZw== IHNhdWNlcw== IHB1ZXJ0bw== IFZvZ3Vl aWRpbmU= IEdyZWVud29vZA== emlvbg== L3F0 5bGA Lmxhbmd1YWdlcw== IFBsYXlib3k= b25uZW1lbnQ= IFBvc2l0aW9uZWQ= IOS4uw== IEZyaXR6 SW5pdGlhbGx5 bm9kZVZhbHVl X1RSSUFOR0xFUw== LWJhY2tlbmQ= dG9JU09TdHJpbmc= IEdvdmVybm9ycw== WUxPTg== Lk9SREVS RE9J IENoZXZyb24= IGRlY2tpbmc= IFNoYXJpYQ== b3RoZXJtYWw= RW1wdHlFbnRyaWVz KEluaXRpYWxpemVk ZG9yZg== Lmx1 KFJvb20= LlllbGxvdw== IEFicmFt X2xt INC90LDQvw== IFRIQU4= fi1+LX4tfi0= Lk92ZXJyaWRl IFNWTQ== IFN1c3BlbnNpb24= IGFic29yYnM= X3RyYWZmaWM= ICI+Ig== LmZpdHM= IHJlaW5mb3JjaW5n IG1veWVu ZXJlcg== IFJvc2Vuc3RlaW4= IFdlc3Rvbg== IGNvbmZpbmVz T0xB b3JyYWluZQ== X0dSUA== IHN0cmFwcGVk IG1pbmdsZQ== CVZr IG5vc3RyYQ== IGFjdHJlc3Nlcw== IFNhbW15 bGlnbmU= SUdITElHSFQ= IHN0dXA= aWN0b3J5 IGNvbnZpY3Q= IHN1cHA= cGVvbg== dnJpZXI= IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= IHRyb3R6 IG1lbHRkb3du YXJrZXJz LlNlbGVjdENvbW1hbmQ= IExpYWJpbGl0eQ== IEJlY2FtZQ== IGx1Y2tpbHk= INC/0L7RgA== IHJlYXNzdXJl IENvbnRyYXN0 IEF1ZHJleQ== IENvbnN1bHRhbnRz IFF1ZW50aW4= LU93bmVk b2NyaW4= X1NUUklQ IHJldGFsaQ== IHJhbGx5aW5n IFJlcXVlc3RDb250ZXh0 IG1hc3NhYw== CWdy TEVF IGNhxYI= IEpvYW5uYQ== 4butYQ== aGho IHNxbFNlc3Npb24= xLFrbA== Q29tcG9zZXI= IGN1cnJlbnRQbGF5ZXI= YWdpbmk= IEJhcmJhcg== IEhlbGxvV29ybGQ= bG9vbWJlcmc= LkhlcmU= IGRpc2d1c3RlZA== CQkJCQkJICAgIA== b2t1cw== VmV0ZXI= IGNob3Bz IEZPUldBUkQ= IEVpZw== IFBhcnRpYWxWaWV3 IGltcG9zcw== IGNvbnNlcXVlbnRpYWw= IFsnIw== CWxvZ2dpbmc= IEVsaXM= cHJvY3M= LDwv X3BpbnM= XERvY3RyaW5l VXZz IEdJVA== IHRhaA== KHJ1bGVz Y3JlYXRlRnJvbQ== ICctJykK aGFuZGxpbmc= ZXh0ZXJuYWxBY3Rpb25Db2Rl Uk9EVUNUSU9O Rm9yUmVzb3VyY2U= c2J1cmc= PFRleHRWaWV3 dGhpbmthYmxl YW5nbGluZw== ICJ9XA== UFJT QXBwcm92YWw= IGtsaWVudA== bm91bg== IERpYW1vbmRz SEc= IFRyaWJhbA== LnB4 IHByb3BOYW1l IGhlbHk= 0LvQuNGH IEJvdXRpcXVl Iik7fQo= L2hvc3Q= IHN0YXR1c0Jhcg== PkRhdGE= IGRpc2NvbnRlbnQ= IGZyYWls LmVsZW1lbnRBdA== IGVtYW5j CWZ1bg== YXR0bGVz IHByb3B1bHNpb24= IGludGVyY2hhbmdlYWJsZQ== IFRhbWJpw6lu IHZlbmVy X0xPV0VS IHBkbw== IGRldGVyZ2VudA== IHRhdmVybg== VmVudWU= Lmphc3Blcg== eXR0 IEppaGFk 4oCZw6A= IG1lZGlhUGxheWVy P3A= cGNm YW5kb25lZA== IHJlY2ViZXI= T1RQ KGlPUw== KCckew== UHRz IG1hbmFnZXJpYWw= IFR1ZA== IFdFTEw= b3pl IEFudG9pbmU= IFxcCg== IFZlY3Q= IFdpbWJsZWRvbg== aXNtZXQ= IGJvdGhlcmluZw== aW9zaXM= Z2V0TWV0aG9k IGlucHV0RGF0YQ== IEJpbmRlcg== IGRjdA== w6Fsbg== X0JPTEQ= IEp1Z2VuZA== IEJlZ2lubmVycw== aW9tcw== IHJlbGVudGxlc3NseQ== IE1vbmRheXM= 5LyY VG9tb3Jyb3c= IFNhbXA= XFBlcnNpc3RlbmNl TUFTVEVS KHByZWRpY3Rpb25z KG51bWVybw== LnR3aXRjaA== LlJlc3RyaWN0 IFpa IE1MTQ== LlNtYWxs XWJ5dGU= IFZpZXdQYWdlcg== IEFnZW5jaWVz IHBhcnRpY2lwYXRlcw== IGluaXRXaXRoU3R5bGU= JVg= IGAs Lk9iag== ID8iKTsK Q2FyZWVy IDwlPQ== a3Vs Q3BwSQ== IE11c2hyb29t dXJhdA== bWlh Q2Q= YXJkdWlubw== IGNvdW50cnlDb2Rl X3BsYWNlbWVudA== KCI9PT09PT09PT09PT09PT09 LWJlbA== QXNzZXJ0aW9ucw== IHByw7N4aW1h KCkiKQo= X2Vn U1NJUA== dXpl cGxhY2Vy YW1iaWd1b3Vz X0lOSVRJQUxJWkVS IEhhdHM= IEdPT0dMRQ== IGFnaXRhdGlvbg== KG11dGV4 SElHSA== OiIp IGludmFkZXJz ICl9Cgo= Lm1hbnVhbA== IFNpZW1lbnM= CUpQYW5lbA== YmluZHVuZw== ZWNlcmE= L21ldA== IMOpYw== KHN0YXRpb24= IHBvc2ljacOzbg== X2lzc3Vlcw== X2FsaWFzZXM= X3RvcG9sb2d5 IEF1dG9kZXNr QWNrbm93bGVk ISpcCg== IEZyZWlnaHQ= IEZYTUxMb2FkZXI= aWNoZWw= KENoYXRDb2xvcg== IGRpc3NvY2k= IGFuYWxvZ3Vl PHVzaXpl LWV2 IHRlbmRy PkFsbA== IFVTRVJT LnJlc3A= X2ludGVncmF0aW9u RGlzcGxheVN0eWxl RkFJTFVSRQ== 0YfQuNGC aWxkZWQ= X3NlbWFwaG9yZQ== YWNhZGVtaWM= IHNjbGVyb3Npcw== RmFs LHN0 YD0= aWZ0b24= IHN1YnN0aXR1dGVz IFN1cHBvcnRlcnM= YXBwbGljYW50 KGt2 IEJlcm11ZGE= IGRpc2NyZXBhbmNpZXM= LlNvbGlk d2VlbmV5 IGd1bA== IGZpbGV0eXBl IHJlc3VsdGF0 U2VuZGVySWQ= IGdlem9jaHQ= IEJlcmtzaGlyZQ== ICgiPA== KG1s KHNoaWZ0 X1JFRElSRUNU T0xPTg== L2Jyb3dzZQ== Ok5TTWFrZVJhbmdl IHdhaXZl IGV4Y2U= IGNhdGFsb2dz 5Lmm aWxsaW9ucw== LkdldEN1cnJlbnRNZXRob2Q= IGJpbGluZ3VhbA== IENhc2NhZGVUeXBl CVRyYW5zZm9ybQ== X0NVU1RPTUVS aXNpZnk= INCx0Ls= IFdob2V2ZXI= IEVBUg== IFs9Ww== INC80L7QttC90L4= IGphcmRpbg== QHNob3c= IGhlaXJz IGFiYW5kb25tZW50 IFRyYW5zY3JpcHQ= XV4= OlNldFBvaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo= IEZhY3Rpb24= KGVudGl0aWVz ZmFjdGlvbg== bXR4 X3JlY2FsbA== Lk5VTEw= Lm9wdGlvbmFs KHByZWRpY3Rpb24= QUdFTlQ= IPCfmIA= 4oCZeQ== 4oCZdXRpbA== IGFuZ3N0 LkV4cGVyaW1lbnRhbA== aG9vdA== YXN5YXJhaw== YXV0b3BsYXk= IFNwbGFzaFNjcmVlbg== IGhlY3RpYw== IG1ldGljdWxvdXNseQ== IGNvbWVy S2VpdGg= IGZyYXNl X1VOSVFVRQ== Lk1hZ2VudGE= KE1heA== IHNjYWxlWQ== IHB1dHQ= KElG IEFQUExF UG9ybm8= LmFkZENlbGw= IG1vbHQ= Y2hpbXA= IGxlZ2dpbmdz IGZsb3A= 4oCZaHVp UlRPUw== L3NwYW4= LmJlZA== LkxvZ2lj IHVudHJhbnNsYXRlZA== Q0xFQVI= O2xlZnQ= IEJGUw== LWdyb3Vwcw== dG9vaw== X2FjY2VwdGVk IGNhc2hpZXI= ZXZlbnRJZA== IGRvd25ncmFkZQ== CQkJCQkJCQkJCQkK 0LDQvdC40Y4= w6RuZGU= IGNvdW5jaWxsb3I= IGRyZWQ= ZFQ= V1JBUFBFUg== Lm9s 5LiA6aG1 TUVB IGtpbmV0aWNz IGptcA== X2ZsaWdodA== RmVhcg== IENoYW5lbA== X21pZ3JhdGlvbg== aGRs ZXJlcXVpc2l0ZQ== LnJhcg== LU9uZQ== IHNoZXBoZXJk LmVhc2luZw== KGRlc2NyaXB0b3I= IHN1YnRvdGFs 44OT Q29tcGlsZWQ= IENvbHQ= ZGxl L21vY2s= KXJvdw== IHJlc2V0dA== dGVybw== IGFlcm9iaWM= LmludHJv IGNoZWNrYm94ZXM= IE1jQ2FydG5leQ== IENseWRl 77yM5bm2 Y29vbGRvd24= LWluc3RhZ3JhbQ== IE1QRw== IExlaXN1cmU= IG5hd2V0 IE5YVA== UmVndWxhckV4cHJlc3Npb24= IHJhdmU= QklMTA== IGJhcnRlbmRlcg== RW5sYXJnZQ== IHZhaXM= IDoKCgoK LkVuZHBvaW50 ICIsDQo= fX0iPnt7JA== dHJlZXM= LmVuZw== KmxvZw== OltdLAo= IGJhdHRhbGlvbg== U3ViamVjdHM= IGV4cG9zaXRpb24= IFRvYXN0cg== IHRvcExldmVs IENFTA== IGd1YmVybg== dW5zdWJzY3JpYmU= Y29uYQ== X2FwcHJveA== VFo= IFRyZWVTZXQ= LmNvbW11bml0eQ== IG5hcnJvd2Vy KEV4cGVjdGVk Q2xy IGdvcmU= IGFjcXVpdHRlZA== IEVVUk8= G1s= IHJlcHVibGljYW4= IGF1dG9iaW9ncmFwaHk= X2Zkcw== Q29sbGFwc2Vk IA0KIA0K LXBpbGxz TUJFRA== IGlOZEV4 IHJlc3BvbnNlVHlwZQ== Z2xmdw== LXR1cm5lZA== 5Y+R5biD CUJvb2xlYW4= Lk9y aW5pYQ== IGhvdmVyZWQ= IHNvcnRlcg== IE5o IEV4ZXJjaXNlcw== bGVtZW50cw== aWRvbg== VG9l IHLDqWbDqQ== U1NGV29ya2Jvb2s= IG9yZ2FuaXNlcnM= IHJlc3VsdE1hcA== X0hPUg== RG9k TG9jYWxTdG9yYWdl IGpzb25SZXNwb25zZQ== QXV0aFNlcnZpY2U= IHNtZQ== ZW1icm9z IGxvYmJ5aXN0 b2d1aQ== LnNwaW4= IENvcnJlY3Rpb25z X1JBRA== IExTTQ== KGN1cnJlbmN5 IOaA IHByZWZldGNo LkhlYWQ= LXJlYWRlcg== IFJveg== CW1vdXNl IFRMQw== IFFUYWJsZVdpZGdldEl0ZW0= IFNUT1JBR0U= YW5uZWVy IOyXkA== YWNlbg== U1g= SW1hZ2VSZWxhdGlvbg== IHJlc3VyZ2VuY2U= aXp6eQ== aWxvZ3Vl SVZBTA== IHNtYWNr cnJoYQ== KFBBUkFN IUk= IE1lY2g= IElNYXBwZXI= IGdpc3Q= IFBPRA== dm9yZQ== dWxhw6fDo28= ICwt IGludm9sdW50YXJ5 UVJT PXRpdGxl IEJpb20= IFNoZWxsZXk= IENTUA== UGVz ZHJvcHM= INGD0YHQv9C10Yg= ZGl2ZXM= IVsK IExlYXN0 IGtha28= IE1vZGVsbw== IGZ1bmN0aW9uTmFtZQ== IGNob2tpbmc= IGRlZm9ybWF0aW9u JywnJyk7Cg== Y2HDp8Ojbw== IHNxdWlycmVs c2V0QmFja2dyb3VuZA== QnJva2Vu cG9saXQ= Tm9uY2U= IGtleWVk TWVzaFBybw== LnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQ= IGZsdXNoaW5n IGJwcA== IEFuZ2xpYw== VHJvdQ== IFdhbHRlcnM= IHN0dXR0ZXI= SGlw X3dhcg== aXZlbWVudA== Q29ybg== IHVuZHVl YXBhdGthbg== IG1pbmRlbg== c2lnbmlmaWNhbnQ= KHF1YW50aXR5 JGluc2VydA== IEFMRVJU LlVuaWNvZGU= aWhu XTo9 IHBpbk1vZGU= IGZyYWlz aW50ZXJwcmV0ZXI= J2FjdGlvbg== IGJsZWliZW4= obQ= cm93c2Vycw== R0lU X0RJUlM= Rm9yZXZlcg== IFBkZlBDZWxs fG0= LnNldEhlaWdodA== IGZvcmVhcm0= IGJhdHRsZWdyb3VuZA== INC/0L7RgdC70LXQtA== IEhhdGg= IEF1dGhvcml6ZWQ= IGNvbmZlcnJlZA== IEJPVFRPTQ== LmdldEZsb2F0 b2dyYXBoZWQ= YXJkeQ== IHNlcnZpw6dv b3RveGlj L2F1dGhlbnRpY2F0aW9u IHJlcHLDqXNlbnQ= IGNvbXBsZXhpb24= CUNvbW1vbg== X2Jo V2hvbGU= SW1hZ2VEYXRh IHRpbms= ZXF1YWxUbw== IFRIUg== IGRlbHRhcw== IEFHRQ== aXphZG9y YWRtaW5pc3RyYXRpb24= cXVldHM= X2ZpbGxlZA== IEjDpA== YWxsb2Nh IEJvb25l CWxjZA== Rm9sZGVyUGF0aA== LlJhaXNl XyN7 ZXJ0aW5v IFRocm9uZQ== 4K6/ b3hldGluZQ== cHJheQ== IGRpbGlnZW50bHk= IEFyY2hpZQ== Lm11bHRpcGFydA== IHNlbw== LmdldFByb2plY3Q= IHBhag== Y2xlcm9zaXM= YW1lcm9u IHRvdXJlZA== IG5pa2U= IEJha2VyeQ== LHBhcmVudA== X1RFTQ== U3BhdGlhbA== bGFwcGluZw== UHJvZHVjZXNSZXNwb25zZVR5cGU= KGJhbGFuY2U= SHVuZHJlZHM= LXRlcm1pbmFs IkRv Q29udGVudFNpemU= IGJiYw== IGTDqWNvdXZyaXI= dXRpbHVz LnVuZG8= LG91dHB1dA== Z3JvdXBOYW1l JG1heA== IEFsbGE= INC60LDRgNGC Lk9ORQ== X2RlY2lzaW9u RUVFRQ== IHhPZmZzZXQ= 56o= IHJ1bmF3YXk= IGhhbmRqb2I= IGdlbml0YWxz KGpUZXh0RmllbGQ= LnJhZGlhbnM= IFBhZHJlcw== ZGVwZW5kZW5jZQ== IHN3YWxsb3dpbmc= cm90ZWlu IGZsZWV0cw== IGNhcmF0dGVy KGNhbg== IEZsb3JhbA== X01zZw== IGRlY2xhcmFjacOzbg== bHNydQ== c2Nob29scw== IGRlbGVnYXRlZA== IFBlbmFs IENoZXJu U21hcnRQb2ludGVy c3Rvcnlib29r IE55bG9u 5oCd X0xFU1M= L2FkZHJlc3M= IENPUlM= IOydtOuvuA== IG1vZGE= bWRw IGRlcmJ5 IFBoYXJtYWNldXRpY2Fscw== IGV5ZWQ= X2NwdXM= 6KaL fHwK Lm1hZw== KFFM IENpdmlsaXphdGlvbg== 6Yw= X0RlcA== IHN3ZWFyaW5n IFNob3J0cw== dWViYXM= IGRlbGluZQ== IEFkdmlzb3Jz IOyeiOuLpA== X0ZJTkU= fSk6 LGFzc2lnbg== IFBDSWU= e3t7 U2Np IGFtYm9z aWxlZW4= IHR1bmVy IHBhcmFtTmFtZQ== LHRvdGFs KExvY2FsRGF0ZQ== IHNwcA== IGVycm9yZXM= IEhlbHBpbmc= X21lcmdlZA== LnRpbWVTY2FsZQ== X0VMRU0= X1NPTA== IGF2ZW50 PGQ= SnVuaW9y CWJhcg== Lmx2 IOy5 PXd4 IG1pcmFjdWxvdXM= IFJhbmRvbUZvcmVzdA== IEZyYW5rZW4= YGAs KEluaXRpYWxpemVkVHlwZUluZm8= IHN1cGVyaGVyb2Vz IGFuc2libGU= X1R5cGVEZWY= IFBlcm0= T0xFUg== R3Jhbg== LW5vdGlmaWNhdGlvbg== IGtheg== IGV4aGlsYXI= c2VydGVy IHN0b3JlZnJvbnQ= X2VuZHM= IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK CWdpdA== RFNQ Q0hBSU4= rLQ= SW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbg== IFNseQ== 77yaPA== QnJpdGFpbg== L3NsaWRlcg== IHptcQ== IGJhag== YnJlZA== LlZBTFVF IGdyaWV2aW5n IHBvcm7DtHM= aWd1YQ== SU5DTFVERUQ= V2FrZQ== Y2Jk IE1vbmdvbGlh aW52aXNpYmxl IGNvcnJlY3RpdmU= IGNlbnRlcnBpZWNl Q2F1Z2h0 IGthcmFrdGVy YWxtw7Y= IGJlbHVt IGFkam9pbmluZw== Pygi IFZpc3VhbGl6YXRpb24= a2tl aWZpY2Fkb3M= c3Bk X0NCQw== LUxhbmd1YWdl IHN0aWw= b3JldGljYWw= KGNvbXBsZXRpb24= IFZlcmbDvGd1bmc= X1RyZWU= cmlwcGxpbmc= LlJlbW92ZUVtcHR5RW50cmllcw== IFRBWA== CUNvZGU= 5YuV dXJnYQ== INGD0LbQtQ== IGFpZGVy IFByZXNjb3R0 IGZpbGFtZW50 IC0tLS0tLS0tLS0tLS0tLS0tLS0t dGhlcm9z 0LXRgNCw ZGViaWFu w6RobA== b2xhaA== X1VOSVRT QXJr TW91bnRlZA== LlRyaW1TcGFjZQ== LmdldE51bWJlcg== X2VvZg== Lm5y IFNIQVJFUw== aWxhdGVy IHdpY2h0 X2NvbXBhcmlzb24= ICki Y2xpbmljYWw= IFRFbnRpdHk= dmVuZXM= LmdldFByb3BlcnRpZXM= IHJlbGF0 IGFubm95YW5jZQ== YmVi IGFuZXN0aGVzaWE= X2ludGVydmFscw== X2Zo IHN1ZG9rdQ== IGRpc2Vu Y29ubmVjdGluZw== IG9h IOKWkQ== WkY= IGN1eg== U09FVkVS IE3DtmdsaWNoa2VpdA== Y2hhcnRlZA== IGhhc2hlcg== IEtlZXBz QUVB CWxvZ3J1cw== CU5hbWVzcGFjZQ== b3J0aG8= JGFjdGlvbg== IFJvYw== Jyk7Pz4i IFBST1Q= QGFwaQ== Y2hzZWw= L2dpZg== KEhhbmRsZQ== IGFudW5jaQ== L3B5 aW52YWxpZGF0ZQ== IE1FUA== dGVtcw== O10v 6IM= 6L+Q IHRhY28= QURW aHBw QnV0dG9uQ2xpY2s= IGJyaW5nZW4= IFRJTUVPVVQ= IGFzdHJvbG9neQ== ZGF0ZUZvcm1hdA== T0dSQVBI RmlsZVN0cmVhbQ== 5a6h5qC4 LkNvbW0= J2I= IEdFVEdMT0JBTA== ZWF0aW5n YW5kZXN0 IFNFVFVQ IEFkdmFuY2Vz LnNjcm9sbEhlaWdodA== QVpF ZW5kdGltZQ== d2VhdGhlcm1hcA== IE1hbmdv IFJJUA== IGl0ZXJhdG9ycw== IGNvYXg= IOWbvg== PG1haW4= cm1z cGNi IHZhY2NpbmF0aW9ucw== IGRpc2FncmVlbWVudHM= CWV2ZW50cw== PExvY2F0aW9u Lk1lYXN1cmU= IHF1ZWRh IHNpZ25hbGxpbmc= IGRlZ3JhZGVk IEFtZWxpYQ== LWNvbmZpZGVuY2U= ZGJOYW1l X2luYWN0aXZl b25hdGlvbg== IHBlcmlwaGVyYWxz 5qC3 U1VQRVI= J1I= LndheQ== UExBSU4= IEVuZ2Vs cmVsYXk= IGRlYmlkbw== IFRyb3Rza3k= 6Iw= INCw0LTRgNC10YE= CXVzZXJz ZXRjaHVw dGVw IG5ld1Bvc2l0aW9u IHdhaXZlcnM= ZWRpY2luZQ== IHRhbmdnYWw= IGFtbW9uaWE= LWRldA== L2V4ZWM= KHBhZGRpbmc= IFNob3BwaW5nQ2FydA== IFByaW50Zg== SGFuZGxlZA== IE5BTUVT KGNsb2Nr IHt9Og== IHNpbXM= IFRlYXJz IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= X0NBTk5PVA== TEVHUk8= LlNldFBhcmVudA== 5YW25Lit IGVycmV1cg== aXBp PEV4cHJlc3Npb24= LnRpbWVsaW5l ICdfJyw= IGNvYXRpbmdz IHVzZUZvcm0= LnRr IEZlYXN0 LlNL w6RzZW50 Y2h3aXR6 IGludmVudGl2ZQ== IE1laQ== IHZlc3RpYg== IG7DpGNoc3Rlbg== L2JpZw== IHJldHJlYXRlZA== IHByb3BhbmU= dmljdGlt QWt0 IFByZXNlcnZhdGlvbg== IFBpcw== X1NIQURPVw== IHByaWNlbGVzcw== csOzZA== b2JibGVk IHJvbGVOYW1l IEdEUFI= ICciLA== Q2VudHJl QXJjaGl0ZWN0dXJl Q3BwQ2xhc3M= IG1hdHRyZXNzZXM= IGJlZXA= IERhbWlhbg== 5p2D6ZmQ YmV0dA== X2Flcw== KGNlbGxz IOuwsOyXtA== IGJpdG1hc2s= Y291bGRu LW5vdw== IGlubm92YXRl IGhhY2Vu IEx5b25z dGhpY2tuZXNz IHdoaXN0bGVibG93ZXI= JGZpbHRlcg== IGV1bGVy IEhhcm0= IGxlZHM= IEtlbHZpbg== LnF1aWNr IEzDs3Bleg== cmV2ZQ== IG5pZ2VyaWE= IGp5bGxhbmQ= LmVtcHR5TGlzdA== IHVuc2V0dGxpbmc= dXNiYW5k IHRyYWNrZXJz PVwiIjsK IGNvbnRpbnVh IE51bWVybw== ZW5kb24= IEdlcnJ5 LlRPRE8= UmVwZWF0ZWQ= IFNlcmVuYQ== 0LjQvNCw0LvRjA== cHJvZmls INCy0YHQtdGF QGFkbWlu LkxpbmVz IHRyYW5zbWlzc2lvbnM= IGNq YW7Dp2E= 5Yig6Zmk5oiQ5Yqf IGdldE1lbnVJbmZsYXRlcg== dWZyZXE= IE1hdGhlbWF0aWNhbA== TmF2aWdhdG9yTW92ZQ== IGZ3ZA== dW5pdHRlc3Q= IHN5bnRoZXNpemVk IGNyZWVk KEZyYW1l cHN5Y2g= dm9k dUM= 4bqndQ== IOKAnOKApg== IGtyYXQ= ZHJhd2FibGU= w6ZyZQ== PXRvcA== KExvZ2dlcg== RXJyb3JFeGNlcHRpb24= YWlzYWw= L3dz dWxsZWQ= QVJJTkc= IG5JbmRleA== IGludGVybmFscw== IGVmZmljaWVuY2llcw== ICNA X2JyaWdodG5lc3M= X25vcm1hbHM= IFN0b3V0 IHVudmVpbA== IFNob3Rz LWNvbXBhbnk= X2VsdA== KGRsbGV4cG9ydA== IHByb2R1Y2Npw7Nu Q2lzY28= Qmxha2U= LW1vdXRo UGVhcg== INC00L7RgdGC0YPQvw== IEpBQ0s= IO2YuA== IHN0b3B3b3Jkcw== IFRlc3M= IHBvc3Rl cmF6aWVy 6K0= TWVzc2FnaW5n t+aWsA== VGFtYmFo IG5hcmNvdGljcw== IGNhbXBlcg== IHRyaXBvZA== IGdsRW5k IGdpb2M= Y29tYmU= VXNlclJvbGU= VWw= RXF1aXZhbGVudA== IGdub21l IEZ1w58= cGFja2FnZU5hbWU= X3Vl RGlzY2xvc3VyZQ== YW1hdGU= X3RlbnNvcnM= IEthdGhyeW4= X0Jhcg== VGhyZWFkSWQ= IHZlcmlmaWNh LmFzc2VydE51bGw= IE9kaW4= YsOp INGB0L7RgdGC IGp0 LlNlbGVjdGVkSXRlbXM= IGFjdGlvbmFibGU= IFJlZ2FyZHM= aGVr Om51bWVs LEdM IFBIT05F CURlZmF1bHQ= IGVsYXN0 IGJlY2s= PWNyZWF0ZQ== OicK YXJodXM= bW9kaWZpZXJz aW50cHRy IHByb3Bpbw== 77yI56yR IHJlcXVlc3RPcHRpb25z IGltcGxpYw== IGR1cm8= IFBDUw== RGVsaW1pdGVy KGxvZ2l0cw== LkVWVA== V2l0aENvbnRleHQ= IG9sdHJl X0VYRUNVVEU= b2xpY2l0ZWQ= X0VudGVy L2Zyb20= INGB0LvQvtCy IEhvcm0= dWliTW9kYWw= X0lORklOSVRZ 77yM44CK VUdJTlM= T05HTA== LGJ1Zg== IHBvdXJyYWl0 cGo= KGN1YmU= IHVnbA== IFNhd3llcg== SUZFU1Q= QXBpcw== IENvcmVEYXRh IHNlc2FtZQ== LnB0aA== LmdldFVzZXJOYW1l Y2FzZWQ= IHZhbmlzaA== X0FwaQ== Ly86 L25vbg== LmRvY2tlcg== LnNp YWxlcnRz IGludGVzdGluZQ== cGFydGljaXBhbnRz LXZpc2libGU= ZW1zcA== bXVl X3B2 IENyaQ== b2dyYQ== X2V4cGVyaWVuY2U= IElOVEVSVkFM X3JlZ3Jlc3Npb24= 7ZWY7IS47JqU ZW5kZXJlY28= bGF0YWJsZQ== LmxvY2FsdGltZQ== IEJJVFM= IEZvbGRpbmc= CSAJCQ== w6lzZQ== LWJlYXJpbmc= IFhQQVI= T1BTSVM= J14kJyw= aW5jbA== IE9wcmFo IGJvb3Rocw== IFJvaGluZw== LkJvcmRlclNpZGU= YXRhdHlwZQ== Q3JlYXRlZEJ5 LOKAmeKAnQ== ZG9jdHJpbmU= IGJyZWF0aGVk X2JlZw== IGFmZmxpY3RlZA== TW91bnRhaW4= QmxvYw== IHJ1aW5pbmc= LkFubm90YXRpb25z CWludGVudA== IHN0YXRpY2FsbHk= X1V0aWxz TGF1bmNoZXI= Om5vcm1hbA== IHVzZXJpbmZv LUp1bA== S3lsZQ== LlJlYWRVSW50 KHVybHM= L2lm bWl0dGVs YmNt QE1vZHVsZQ== IENvbnN0YW50aW4= IGJq ZXJuYXV0 PHI= IE1lbnRvcg== IGVncmV0 X29hdXRo LkRhdGFDb250ZXh0 X0NMSQ== KENvbnN0cnVjdG9y IHNldFBvc2l0aW9u cmVzYXI= ZW50aW5n 4Li54Lil VHJhbnNtaXNzaW9u IG5vdGlmeURhdGFTZXRDaGFuZ2Vk IE1vdXNlQnV0dG9u ICoi ICAgICAgICAgICAgICAgDQo= IEx5ZGlh IHN3b3Jl IHBsYXRhZm9ybWE= CWJ1dHRvbnM= IHNwcnVuZw== KFRva2VuVHlwZQ== Q3g= QXF1 CQkJCQkJCQkJICA= CUFERA== dWlkcw== IOCkrg== IOaXtumXtA== LkFjdGlvbkJhcg== IG9jdXI= IGlsbWE= LW5ldXRyYWw= ICIuIjsK CVNpemU= UGllY2Vz IHN0aWY= ICI9Iiw= IEVxdWl2YWxlbnQ= IGlnZW4= ZGZk X3RoaWNrbmVzcw== X3JlYWRhYmxl L2ZhbHNl IHRvb2x0aXBz b3BsYXN0 aHVh aGFuZGxlUmVxdWVzdA== LkxBWlk= PFVGdW5jdGlvbg== aW1tdXRhYmxl aWhpbGF0aW9u IG9ydGhvZG94 LnBvcHVsYXRl IHZlcmE= IG9iZXI= c2FuZA== dmln Q29uZmVyZW5jZQ== KENvbGxpc2lvbg== L2F1dG8= IFNvbGlkQ29sb3JCcnVzaA== Kic= LGFkZHJlc3M= IHN3ZWV0aGVhcnQ= w6F0aWNhcw== YW5pbmU= X3BheW1lbnRz IHVubWlzdA== IHRydW1wZXQ= QkFM IGZpbGVJZA== bmllanM= QURG IG1uaXN0 IEZlaGxlcg== 44CRLA== Q2hhcmFjdGVyU2V0 IFZhbmNl SW5zZXJ0ZWQ= IGRvd253YXJkcw== IHJvdGF0aW9uYWw= IGVuY291bnRlcmluZw== TUJQcm9ncmVzc0hVRA== L1N5c3RlbQ== L3BvcA== IH0pDQoNCg== IC4nPC8= 77yJDQo= IGRjYw== YXN5YXJha2F0 IHByaW5jaXBhbGx5 5a6a5LmJ KGNob2ljZXM= LnBhZ2luYXRvcg== IHVwYnJpbmdpbmc= IGRvdGVudg== KCkpLw== IFRBUw== Z2Nk X2ludGY= Lm11dGV4 cHJlc3Rhc2hvcA== IGLDtnI= ZGFw X2RlbWFuZA== XERlc2t0b3A= dG9GbG9hdA== IHNlZ3JlZ2F0ZWQ= IGNsaW1hdGVz Lk9yZGVyQnlEZXNjZW5kaW5n KCcsJyk= UHVsbFBhcnNlcg== QXRvbXM= IGJlbsO2dA== IGhvbWVy YW50dQ== SXNFbXB0eQ== IEJlZ2lucw== PlNob3c= IFN1cHBsZW1lbnRz b2NjdXM= IGRvcGU= LmJvb2tpbmc= IEFsbWlnaHR5 W2VkZ2U= IEViYXk= X3JhY2U= RnJvemVu X3RyYXZlbA== IHBhc3RvcnM= X1NVUkZBQ0U= X2dlbnJl X0hPVA== LGRpbQ== VGJs bXRz cHJlZGljdGlvbnM= X2N1bQ== IGRldGFsbGVz LXRyYW5zaXRpb25hbA== IHdha2V1cA== UGVyc29ucw== LmNvbG9yYmFy U3RyYW5nZQ== 2K/Zhw== Jlc= IEFSUA== X1NPRlQ= X2RyYWZ0 SVZB IGdyb3A= IGxpZWJl IGlpZA== 2KfYsw== Y2FuZGlkYXRlcw== Z2V0QXM= PV8oIg== LkdldE9yZGluYWw= KSk9PQ== YW5ub3RhdGU= IEx1bWlh SVJNV0FSRQ== X09QRU5HTA== KGZvcm1EYXRh ZW50aW1lcw== IHdhdGVyc2hlZA== INCx0LXQtw== IGZsb3BweQ== VG93YXJkcw== KGNvbXBhY3Q= RERE e24= IHBva2luZw== QG0= IHJlY3ljbA== c3RydWN0b3Jz a2V5Q29kZQ== IHZlaGVtZW50 IGxpdHJl IEJJTkQ= IEZyYW5jb2lz IG51ZGl0eQ== IGlzaXpl CW9uQ2xpY2s= eXN0YWxz IGdldFN5c3RlbVNlcnZpY2U= V2ViUmVzcG9uc2U= ZmlsZXNpemU= IENobG9y Y29saQ== X3NlYXQ= LkFkZEluUGFyYW1ldGVy KXRlc3Q= IHF1ZXM= IGNhdXRpb3VzbHk= ImRpc3BsYXk= LnNodG1s IEdVSURBVEE= KCIqKg== IGdyYW5kZGF1Z2h0ZXI= IEFzc2VtYmx5RGVzY3JpcHRpb24= Rm9yRWFjaA== V2lsc29u LGVn IGJlbGlldmFibGU= IGNyb3Nzd29yZA== bG9iYmVy IFN0YXBsZXM= KHNoaXA= IHdhZ2Vk IEJvbHNoZXZpaw== LkFkZEl0ZW0= KEZpbHRlcg== X0FCQw== IGBc 0L7RiQ== IG1ib3g= IE5lcw== IEFWQ2FwdHVyZQ== IGNvbmhl IElOVEVSTkFUSU9OQUw= b3Nn IF0pLT4= U0tUT1A= IGtpZGQ= IFNTVA== IOWFsw== IEV0aG5pYw== RVJTSEVZ IG11bHRpYw== X01VTA== IEZpbmRPYmplY3RPZlR5cGU= IEV4cGVuc2Vz Z2V0TW9ja0J1aWxkZXI= LWd1aWRl J0w= IOeZuw== IHJhag== IEJsYW5jaA== IEFkZHJlc3Nlcw== Tng= IElzbGFtYWJhZA== 0L7QutGD0LzQtdC90YI= IEJlYXZlcg== LnN0dWRlbnRz IEFzeW5jQ2FsbGJhY2s= c2hlZXRz ZWNhc3Q= IEZ1bmRhbWVudGFs IHZlcmRpZW5lbg== IGV4YWNlcmJhdGVk IE1vZGVyYXRvcg== Q0NDQ0ND IHRpbWVvdXRz IHN1YmRpdmlzaW9ucw== IGNvbXByb21pc2Vz dXp6ZXI= fSwkew== X2Jsb2NraW5n ZXJtYW5u IE1pa2hhaWw= IFNlbGJzdA== 6ZSA LnNob3dz 5LiH5YWD IFRm IElIdHRwQWN0aW9uUmVzdWx0 IElFbnRpdHk= IGlx Rk1M b2RlbQ== c3Rw dWN0aW9ucw== LmZhdm9yaXRl LkdldERpcmVjdG9yeU5hbWU= IGdyYWM= IHhtbERvYw== X3B1c2hCdXR0b24= Y29sbGVjdG9y PWV4cGxvZGU= IGRlc3RpbmF0aW9uVmlld0NvbnRyb2xsZXI= IFNlcmlhbGl6ZWQ= Om1lc3NhZ2U= IENDQw== X3JlY292ZXJ5 LWtpdA== c2hpbWE= cm90Y2g= IGB9Cg== X3N1cHA= VGFibGE= 0YDQtdC00LXQuw== R3RrV2lkZ2V0 IFNJTVBMRQ== LnBoaQ== IExpYmVydGllcw== LS1b IHVudmVpbGluZw== IGV4dGVudHM= YmNk IGh2YWQ= CWNy LnJlYWRkaXI= IHJlYWRhYmlsaXR5 IGRpc21pc3Npbmc= Q2FtYg== IGNhc3VhbHR5 IElQVg== bWl0ZXM= IHB1cmlmaWVk Lk9yaWVudGF0aW9u IGxq aW11bGF0b3I= ZnJhbQ== L2xvY2F0aW9u IGNvbW11bmljYXRlcw== OlVJQWxlcnQ= L3NvY2lhbA== ZWx5bg== REVO INee IGJlZm9yZVNlbmQ= IFVudGVycw== JykuIg== ICcnKTs= LndyaXRlT2JqZWN0 KGdyYW1tYXJBY2Nlc3M= IEFwcGxpY2F0aW9uQ29udGV4dA== QnlVc2VybmFtZQ== IHNraXBz IGZpbGhv IHZpZXV4 IG1SZWN5Y2xlclZpZXc= IGFyb3VzZWQ= Lm93bA== IGN1cmxlZA== L2NhbGxiYWNr KCc6Jylb IGludW5k IGJyZWFrcG9pbnRz LWV2ZW4= LnN0ZW0= IGRlcm9n IG5lcA== IENvbXBsZXRhYmxlRnV0dXJl LUxpbmU= Lyov LkhleA== IHJ1c3Nl IGJpZg== IEZvbmQ= aWVjdA== IGFsbG90dGVk ZGV0ZWN0b3I= IC8KCg== ZW1vZGU= dWhl dWlzc2U= IEZJWEVE bWF0aHJt IHVuc3Vz IEF1dG9z IC4uLi4uLi4uLi4= LnRyYXZlbA== TkFW IGxlc2Jpc2s= IMO8emVy IGNsZXJpYw== IGxpbWl0bGVzcw== b2x1Y2lvbg== IG5lY2tsaW5l IGRyaWZ0ZWQ= IFJlbGlhYmxl IENhcnk= IHRlbsOtYQ== ID8+Jw== L2NvbW1vbnM= IEdNQw== X05QQw== IEJsaXNz IEJ1cm1h 5ZCM5pe2 KGRlcGVuZA== LXN1aXRl CXN0YWdl RG91Zw== aWRlbnRpZmljYXRpb24= X3Jlc29sdmVy QmVnYW4= W3RocmVhZA== IDsKCgo= TlRTVEFUVVM= IGRpc29iZWQ= fGg= IGFjY3VtdWxhdGluZw== ICIsIik7Cg== dVBhcmFt LmJpbGw= cml0Y2g= Q3JpbWU= 0LXRgdGM IFJlbWFpbg== 54Sh5paZ X1RIQVQ= YCJdCg== LnN0YW1w IHBhcmFub3JtYWw= IE1QQw== InVybHM= IEVzdGF0ZXM= VG9Gcm9udA== VGhpcnR5 QmV0aA== J3U= IOy9lOuTnA== VUZBQ1Q= IENyb20= IE1pc3Rlcg== IEVRVUFM ZW5oZWlt IC8vew== X3dhcw== IGJvdXF1ZXQ= IE1pZGRsZXRvbg== aXp1 X2hhc2hlcw== IGhlbm5l IExJTlVY CVNlcnZpY2U= IFRBTQ== IGBf IEFUQQ== IGRhbmdsaW5n cGFpbg== X0JPVU5EUw== cHJvZ3JhbW1pbmc= IGN1cnJlbnRJdGVt IGJlc2ll ZW1ibGU= KGNhbGM= LlNraW4= IHBlYXJscw== IEJ1cmI= LW1vbml0b3I= L2Nz Zmly KHZlcg== W2FyZ3M= w7xja2Vu ZXBhcmF0b3I= RG91 LkVudA== IEVTQQ== KGZt dG9uZXM= IFphYw== a3NhbQ== 4oCZYWxs IE1TUw== IkRvbg== IHNpbXBsZXg= IENvbnNjaW91cw== IEFwcGxpY2FudA== cGVsbGllcg== IHBlZGVzdGFs JGh0dHA= IEF2YQ== LkNH IGludMOpcmVzcw== IEludGVncmFs cmVkZQ== PWZvcm1hdA== LlBhdGhz X1BBUlRJVElPTg== IHNlaA== IFF1YW5kbw== WW91dHViZQ== LnB1dFRleHQ= 7KO87IS47JqU LkFXUw== IENzdg== Q3Vyc29yUG9zaXRpb24= LWJlZ2lu X2NvdW50cmllcw== LXJhbmRvbQ== 5Y2z UGhpbGw= IHBhbm9yYW1h IHRoZXJlcw== 5Y+q IHNpbGVuY2Vk IEN1bWJlcmxhbmQ= LlZpc2libGVJbmRleA== LnN0YXRpc3RpY3M= IHByb3BlbGxlZA== QW1lcmljYW5z IHZhbGlkYQ== IEd1YW0= IEZFTUE= LnN5bnRheA== ZGdl IGRlZXBlbg== ICAgICAgICAJCQkJ IFNwZWNpYWxpc3Rz IFNhbnRhbmE= IEJlZXRsZQ== ICUKCg== VXNlclByb2ZpbGU= KCIkLg== IGVtcGxvaQ== IGVtYWlsaW5n Z2V0T3JFbHNl X1VQUEVS LmRyaXZl IHJlZGhlYWQ= Rk9VTkRBVElPTg== IG11bHRpcGxpYw== L2VmZmVjdHM= IGhhbmR3cml0aW5n X3Rh IEJheg== w7ZmZmVudA== cHJpeA== IGNoaXBzZXQ= IGlwQWRkcmVzcw== w61kYQ== IFVuZw== IFNjaGE= LkZMT0FU IHF1aWVybw== b2Nocm9tZQ== IHJlZWZz YnNvbg== IG3Dug== IHRyYXlz Qm9tYg== IG15TGlzdA== eGltaXR5 IERlbmc= VW5p LVNlcmllcw== b2dhbnk= bMSxaw== L2NhbA== IHJlYWxpemE= IEhpYg== CQoJCgo= IGh1bWlsaWF0aW5n WyR7 IHByZXRlbmRlZA== IERhdGVuc2No YW5zaWJsZQ== CXJlbG9hZA== IG1pZ2xpb3I= X2JldA== IHRvdGFsVGltZQ== IEJheHRlcg== IGVuYW1lbA== L0ltYWdlcw== IFNFUw== IFNwcmluZ0FwcGxpY2F0aW9u KWluaXRXaXRoRnJhbWU= CWNhbA== RUxFTUVOVA== IEd1dGg= KEJpZ0ludGVnZXI= IE1lZGk= Lk1lbWJlcnM= IHJlam9pY2U= IGRvZg== UEVuZFBvaW50 IGNsaXQ= X1JFVVNF TWFrZXM= IHN6eQ== IHNoYWRlZA== IGZhdm91cmVk aXN0b2w= ZGV4 IGZsZXhHcm93 hac= X3ByaW50ZXI= LmZuYW1l cGVyYXRpb24= IG7Ds3M= Z2dlcg== 6ICB INCy0YDQtdC80Y8= KGVmZmVjdA== QnlVcmw= IEFQUw== dHV0b3JpYWw= ZWpz U3FsUGFyYW1ldGVy IHNjcmFwcw== R3JlZXRpbmdz RmVk IFJFTkRFUg== IGJsb29tcw== IGRlYmlsaXRhdGluZw== b21ldHJpY3M= IHNpbWls LWhlcm8= IHJlYWxwYXRo ZGVwYXJ0bWVudHM= QklORA== IENhc3NpZHk= bGlhbg== U0tJUA== LWNsZWFu IHNpbGRlbmFmaWw= X211bHRpcA== anNvbkRhdGE= QWdlbnRz LmZoaXI= IHRyaXVt IGFzdG9yZQ== IG5leA== OnVwZGF0ZQ== INC00LA= 4KSy OyIpCg== LlRleHRJbWFnZVJlbGF0aW9u IG1pY3Jvc2NvcHk= U1VS YW5reQ== IFBldGl0 bWFya2V0aW5n IHZlcmlmaWNhcg== YW1hZ2Vk Y3Ro IGluY29uc2lzdGVuY2llcw== IG1hasSF IGdldEluZm8= IHBhc3Npb25hdGVseQ== IGljbXA= W10+Cg== U2luZ2Fwb3Jl IE5ld3Rvd24= IHJhaWxpbmc= IEVubGlnaHRlbm1lbnQ= dXRoZXJsYW5k bGVpbmU= X3JlZ2lzdHJv IEVyaWNh X3RpY2tldHM= L21ldGhvZA== aXp6YXRv R2F0dA== LWZlYXR1cmU= IDotKQ== IHNlcnBlbnQ= IEdyb3VwTGF5b3V0 TmlrZQ== dW5nYQ== IE1pbQ== IGluY2Vzcw== IGRlcGxldGlvbg== X2xvdA== IGJpcnRoZGF5cw== IHJlbnRlcnM= IGVxdWlwb3M= IExlaHI= X1BsYXk= IHNwaWVsZQ== IExBTkQ= IEVuY291bnRlcg== aXphbmRv IHBlcnU= IHNsYW1taW5n IHJlaW5zdGFsbA== IGFuZ2k= SW5UaGVEb2N1bWVudA== IHZlcnNjaGlsbA== IHZlcnNv LnN0YWZm KHZw KGFjY291bnRz Z2V0QXBwbGljYXRpb24= IG1hbnRlbmVy LlNP LkFE IE1vcm1vbnM= CXJlYWw= IGhvdGxpbmU= IENhcmRpbw== cGFnZUluZGV4 Ymplcmc= Rm8= IGNvbnNlaWxz IG1pZ3JhaW5l IGxhdGlubw== IHRvcnBlZG8= amFiaQ== L3Jz dWJiZXI= IENsYXNzZQ== 4Lw= KC9eXA== X2RlcGxveQ== R1JFUw== IFdIQVRTT0VWRVI= IGFyY3B5 IG1pZWpzYw== QXJteQ== IHNjaMO2bmU= IGJtaQ== IDoiOwo= IENydWlzZXI= cWg= LnByZXBlbmQ= IHZpdmU= b3JpYXNpcw== ICE9Cg== dGVnYQ== YW1lZGk= UHJvamVjdGVk LWJyZQ== LHJlYWRvbmx5 IHN1YlRpdGxl IG1pc3Ry IEluaGFs Y292ZXJpbmc= IHppag== IEFSVElDTEU= UlVMRQ== IGFsdHJv IHNldHRsZXM= aWRlbGJlcmc= OiIuJA== KGZl X2Jt IHByb3ByaWV0b3I= IGtlZXI= U2VwYXJhdGVk X05FQVJFU1Q= KHN0cnBvcw== IENvbXB1dGF0aW9uYWw= IGVybg== SW5WaWV3 QWNyb3Nz IGZydWl0eQ== X21hcHBlZA== IGdyYXR1aXRlbWVudA== IHt9CgoK cG90ZW50aWFs cGFudHM= IHNlbnRpbWVudGFs IExpbmtlZGlu KHBhdGNo IGFkYXB0b3I= IFVJU3Rvcnlib2FyZA== IHNsYXNoaW5n KCIvOg== IHRleHREZWNvcmF0aW9u LmRpYWc= XFJlZGlyZWN0 IG5ldXJvc2NpZW5jZQ== IEFkanVzdG1lbnQ= IFNjb3RjaA== IENvc2J5 U0VB PXZpZXc= IGV2b2x2ZXM= IFNhbGlzYnVyeQ== 44CB4oCc ZXZlcnlvbmU= KGFyYw== IGFwYXJ0aGVpZA== IGF6aW11dGg= IFNoYW1hbg== 2KU= w7NuaWNh OmNsYXNz IEluamVjdG9y YWhhcw== YWJsZXI= X2VzdGltYXRvcg== X0NVQkU= IEtyYW5r IHVuZmF2b3JhYmxl IHJlcHV0ZWQ= IENvbmRpdGlvbmFs IG1pbGZz IFJlc3RyaWN0aW9ucw== KGhyZWY= SnVhbg== PEVudHJ5 CXRlbXBsYXRlVXJs X3Byb2R1Y3Rpb24= VHlwZUlE IGJhbGs= IG5ld0Fycg== IGxpY2VuY2Vz LnNvbHV0aW9u LnNhbQ== IEh2 IHRyZW1ibGluZw== WWF3 IGZsZWVjZQ== IHNob3ZlbA== V2Vy IHBhdHRlcg== PVk= IEZybQ== U2NyZWVucw== JCI= IEJsb25k INGB0LjRgdGC0LXQvA== KG9k IG5vY3Q= b3VudGVycw== dXNlcHBl fGludA== LnJlbWFpbmluZw== IHVsdGltbw== IG1hc3R1cmJhdGluZw== bW1j PUc= Il19Cg== IGZlYXJsZXNz IGFsZ3VtYXM= Y3VsdA== QWx0ZXJuYXRpdmVseQ== 5bKB T0RFVg== IEFkb3B0aW9u IHdlYWx0aGllc3Q= IG1lbnRyZQ== L2dvdG8= IGluZm9ybWFudA== IFJvdXQ= b2Zp IGhhbW1lcmVk IEVzdG8= 4oCZQnJpZW4= IMWa IGRlbWk= INGB0LvQtdC0 IENsaW50b25z 7IWY 5aSn5bCP RUNI IGFuYXJjaGlzdHM= IEJldmVyYWdl IGdvdQ== IGJyaWJlcnk= IHBpY2t1cHM= IHViZXI= IHN5bmVyZ3k= ZmNu IEhlbnRhaQ== IEJhc2VtZW50 IG1vcmI= X2N1 amFkaQ== KHByb2o= IEJpbmdv X2NhdGU= W2VtYWls Klg= X1NFUA== IHByaW5jaXBpbw== dXBkYXRpbmc= Ly99fQ== Li4uKA== IERPRQ== IHpn c2hhcGVz PXRtcA== Q3J1ZA== IHdvcmtwbGFjZXM= IHN0YWJpbGl6ZWQ= IHRlbnRhbmc= LnByb2R1Y3RJZA== IFRyaWRlbnQ= IG9yY2hlc3RyYXRlZA== IEJ1Y2NhbmVlcnM= X3RvbGVyYW5jZQ== aWdyYXBoeQ== w7xsZXI= INi1 QVE= IGF0aGxldGljaXNt CVNlcnZlcg== ZXdlZA== RGlkRW50ZXI= UmVnaXN0ZXJz X2VtbHJ0 IGZ1bmN0aW9uYWxpdGllcw== KGhkYw== X21hcmtlcnM= T3JlZ29u KFN0cg== IEdldEJ5SWQ= IHp3YXJ0ZQ== IE9DSQ== IEphbWU= X2NyaXQ= IHN0b2NraG9sbQ== CURpY3Rpb25hcnk= X2NhcGFiaWxpdGllcw== Q1RS IG51bWE= X2ZpcnN0bmFtZQ== IE5TUmFuZ2U= IG1vc3RyYQ== IEFycml2YWw= KElTZXJ2aWNlQ29sbGVjdGlvbg== IHRlYXNwb29ucw== IFNldFVw CQkNCg0K KGd1aWxk LiJd IG3hu5tp YmZm REFURVM= KCldCgo= IGh1bWFub2lk dGhybw== KGtsYXNz IFZhZA== ZnNw LVNhaA== IFVTRVJOQU1F IFByb3BlcnR5Q2hhbmdlZEV2ZW50QXJncw== IGxlc2lvbg== X0RFTklFRA== IFRISU5L gqQ= bWVudGFs IHByZWNhcmlvdXM= IE5vc2U= IGNvbmNs IHdpbGRmaXJl IFRCcmFuY2g= IEJBTQ== L2Nzdg== IE5BTg== IENsZWFyYW5jZQ== XEJsb2Nr LmFubm90YXRl 5om+ IFdISUxF Z2VidW5n Pkxpc3Q= c2ht Um9zcw== YWZk W3RpZA== UGVyUGl4ZWw= Kyhc IEN5YW4= IEtub3Q= X3Zsb2c= L3Zhcg== W19f IGhhc2htYXA= KCk7DQ0K IGFtYXNzZWQ= IGRhdGVQaWNrZXI= IFNhdG9zaGk= X0NBUEFDSVRZ IGJ1eg== IE1pbmg= U2V0Q29sb3I= Kz0nPA== IEludmVudA== b3JjYQ== aWdudW0= IEFtcGg= IHJlZmx1eA== CiAgICAgICAgICAgICAgICAgICAgICAgIAo= dWhu KFRN YWxsZXk= IGxlZnRvdmVycw== ZmRj 4oCcVGhlc2U= IGNyYXdsZWQ= KFZvaWQ= aWd0ZQ== 8J+S c2V0RGVmYXVsdA== IEJlZ2lubmVy UG9r IEhMUw== IGdhbWVJZA== IEFtYmllbnQ= X1BSRUQ= LiJ9LAo= w7xocnVuZw== LlN5bmM= IGludmU= IE51cnNlcnk= IGdsYXplZA== q+yekA== X2ZhdGFs X2Rpc3BhdGNoZXI= W10pDQo= IGRldXRzY2hlbg== 6rGw U2hhcGVz IGlycmV2ZXJzaWJsZQ== X3Blcw== X2VzYw== IHRoZXJtb21ldGVy 44OU44O8 X3NxcnQ= Il09PSI= IGN1bG1pbmF0aW9u V29yZFByZXNz IGxldmVu VmVydGV4VXZz IEhheXdhcmQ= IEFzc2V0SW1hZ2U= IG1haXpl IGNoaWNhZ28= IHRhdg== ZXhwZW5zZXM= 0K0= K2Y= LiInIjsK LVNB IEtvdGE= TWFpbkZyYW1l LnNhbGU= X0JV IHN0cmVu X2ZpbHQ= L3ByaW50 KFBhY2tldA== INC30LDQsg== QWN0cw== 0LXQu9C10YQ= IHJlbWF0Y2g= IHJpZGRlbg== IH0pKCk7Cg== IGVuZG90aA== IGNlcnRpZnk= IFVJUGlja2VyVmlldw== XE5vdGlmaWNhdGlvbnM= CVRpdGxl IGluZXF1YWxpdGllcw== IE1vcmFu IERhZW1vbg== bGVzaWE= IGhvcHBpbmc= IGd1c3Rv IEZpcmViYXNlRmlyZXN0b3Jl IHBvbHlsaW5l IHNwaWtlZA== JSIpOwo= IExBVElO TGFiZWxUZXh0 IHN0cmFwb24= X2ZpZA== LXNwZWNpYWw= YXJnZWQ= IFNUSUxM UXVhbGlmaWVkTmFtZQ== LlJFUw== I2M= LndyaXRlbG4= IEltbXV0YWJsZUxpc3Q= IFRodW1i IHNpbWQ= RGVzY3JpY2Fv LlNldFRleHQ= IG5vbnByb2ZpdHM= V2l0aGRyYXc= LWVuY29kZWQ= c2Jpbg== IGFtb3J0 CWRk cmlm IHBhdGVybmFs Lk1hcEZyb20= X2Fzaw== IHJlY291cnNl IGJhY2tzdG9yeQ== CW1hbmFnZXI= X0RHUkFN IEJpaGFy aW50ZWxsaWdlbmNl IHNraW1hZ2U= KGVuY29kZXI= IHN3aXJsaW5n IEFwcGV0 X3NhbHQ= IGF0dGU= IFNRVUFSRQ== IE5ldHo= X3BhaW50 YXPEsQ== aXNjaQ== Rmxv LWdvYWw= LnNldFN0cm9rZQ== IEF1c2Nod2l0eg== IEFiZGVs IGFuZXc= IOWung== IHRvdGFsUGFnZXM= IHJlZmFjdG9y IGNyZWF0aXZlbHk= ZW1heA== b2RveHk= X3R4bg== LlNvY2tldHM= IFJpZGxleQ== 4buxYw== c2FtcA== TWluTWF4 IHdvcnNlbmluZw== b3VudGFpbnM= YXJ0bmVy LXByb2Y= c2luZ3VsYXI= PWlz IEZFQw== X0ZN IOaIlg== IENhdWdodA== X1NDTA== IGV4cG8= aW5mcmE= IE1FUw== Y2hhcA== YWx0ZQ== YXJraW4= L21M IHNlbmREYXRh IGZyYW7Dp2Fpc2U= IHPDpg== X0RFRklOSVRJT04= KioqKioqCgo= XEN1c3RvbWVy IOKWiOKWiOKWiOKWiOKWiA== IHBlcnBldHJhdGVk IEZ1cmlvdXM= IHRlbmdh bGVhcmVk VUxMRVQ= aW5pYw== ZWFyY2hCYXI= PENhcg== IFJlbmV3YWJsZQ== IGNvbnRlbXBsYXRlZA== L2Zvcm1hdA== IGZvcmdpdmluZw== LlN1YkVsZW1lbnQ= UFVURQ== LmNvbnRlbnRTaXpl IHJlc3BlY3RmdWxseQ== 4oCcCgo= IHBvaWduYW50 dXJpbGU= fSkiCg== c2VxdWVudGlhbA== L2Zhc3Q= cHJ1bmc= IFN0dW5uaW5n IEJZVQ== IGNvbXBhcmVy CXJk dW5pY29ybg== xrBh LkdldEl0ZW0= IHNlY3Rpb25hbA== anVkZ2U= dXh0YXA= IHN1bmRheQ== IHDDpA== TWlubmVzb3Rh Ik4= IGFwcGxpY2F0aW9uV2lsbA== QU5HRVI= IHJlYXNvbmVk IFpFTkQ= emFw PWJhY2s= b3NwaGF0ZQ== 6IqC54K5 IHRpdHRlbg== IEFzc29j QWN0aXZpdHlDcmVhdGVk KVst PyIKCgoK IGpvdA== 2Lg= IHVuY29tcHJlc3NlZA== LklzREJOdWxs IHZhc2U= IGxvcmVt IGVudHJlcHJpc2U= IENvbnNlbnQ= 44Op44Oz QnlWZXJzaW9u IHF1aWVuZXM= CWNvbnQ= IEJsYWNraGF3a3M= IEJsYXNpbw== IHRhbmtlcg== IHN0YXJ0dGltZQ== IFNlYXM= cGlvcw== LlNwbGl0Q29udGFpbmVy Y29tcGV0aXRpdmU= IHBCdWZmZXI= IGNvbnNlbnRpbmc= LmFkZE9ic2VydmVy aXRjaGVk IG1pc2NlbGxhbmVvdXM= IFRvcHM= CWxw Y21kcw== LmRlcGFydA== IGZOYW1l CWJlc3Q= OlA= IHN3YXRo IHZva3M= YWxsb24= IEh0bWxXZWJwYWNrUGx1Z2lu LmxvZ2dlZElu YnVja2V0cw== IGhvbW9waG9iaWM= IHN1YmR1ZWQ= IG1lc3NhZ2Vib3g= V2hhdHNBcHA= IGRpc3NpcA== IE1BTlVBTA== TElLRUxZ dGVzdGRhdGE= LU9jdA== RXhpdGVk IFRhc21hbmlh bGFj IHRow7RuZw== U3Rvcmllcw== IGJpb2NoZW1pY2Fs b3JyZQ== IGVjbGlwcw== IEFzc2VtYmx5UHJvZHVjdA== cnRsZQ== IFdpbGhlbG0= cGl6emE= X0RI Y29uag== IHB1ZWJsbw== IGxpcXVl IGN1cGlk IEFjdGl2aXR5Q29tcGF0 LlNt Il19 bWFpbGJveA== Lm9wdFN0cmluZw== LW9i IE1hdWk= YXRhaXJlcw== IG1lcnJ5 Um5k IGNhcmFjdGVyw61zdGljYXM= VHJv KGNu Lmxk LXBvaW50cw== LnNi IHZlag== IGNhcmVnaXZlcg== IG5hdQ== RElSRUNUT1JZ KGFuZw== KC4p IGV4cGxhbmF0b3J5 ZWxzZXk= IE92ZXJuaWdodA== IGxhaXNzZQ== IFJBVEU= IEdvdw== UmVjb2duaXRpb25FeGNlcHRpb24= aWNoZXJ0 IHJldm9sdXRpb25z JGNhdGVnb3J5 IHVuZGVmZWF0ZWQ= L2NvbW11bml0eQ== LXBhcnRz LWFwcGxpY2F0aW9u K0E= L3N3ZWV0YWxlcnQ= IEtt aWxhdGVk YXRhdA== UEFU xI1l IFRlYw== Lm9uQWN0aXZpdHlSZXN1bHQ= XFdlYg== IEx1Zw== b3ZvbHRh IGFsdHJ1 aWd5 IGLEmWTEhQ== IGFjdGl2YXRpb25z IGF1ZGl0aW5n RVJHRQ== IOiLpQ== Q2FybG9z IGtJbnN0cnVjdGlvbg== bWluZXI= IH19Lw== QW5kSGFzaENvZGU= IEJvdXJib24= LnByb2Y= IGltcHJpbWly IEZlcmRpbmFuZA== 0LzQtdC90YI= L3t9Lw== IENsYWly IE9uQ29sbGlzaW9u c2FsZG8= cmFpc2Vk IEFCT1ZF KCk9Pg== IGRldXRzY2hsYW5k aGliaXRlZA== RXh0cmVtZQ== L2hvb2tz IGRvdXQ= IFZPQw== ZXRob3Zlbg== UE1D IHJlc3RhcnRpbmc= IFNDTg== IEVP IERKcw== UGFzc3dvcmRGaWVsZA== LkFjY2Vzc2libGU= CWJ1cw== U1RSVUNUSU9OUw== IGxhdGVu IFNOQVA= X0hFUlNIRVk= IG9uc3RhZ2U= 5bCP5pe2 IHNhaWxvcg== IEN1cnNv IGltcHJvdmlzZWQ= IGdlbmVyYWxpemU= IGJ1ZW5v IGNlcmVtb25pYWw= IENOUw== IHBpZ2Vvbg== bXNw L0FJRFM= bGluZUVkaXQ= IEZpbmFuY2luZw== IGpUYWJsZQ== IGJvdHRvbXM= IFRleHRJbnB1dFR5cGU= IG1laXNqZQ== LXNpZ25lZA== IEdyZWVudmlsbGU= b3BoaWxpYQ== SWNvbk1vZHVsZQ== IGNsYW5kZXN0 ZW1haW4= U0NBTg== X1RJTUVT IGxlY2tlbg== KGNhbmNlbA== IGVjc3Rhc3k= Lk1VTFQ= IG1vZXRlbg== IGFwcHJvcHJpYXRpb25z IFFMRA== IEd1aWw= IHRyYXBwaW5n eERB IGvDtmxu ZW51bXM= 4oCcVG8= cG9ydG8= bmluZ2Fy IFRPTw== LVNU IE1hdGhz IGt1cnM= IFJFUEw= X2NvbnRyaWI= IFBoeQ== cmFuZw== Lm1hdmVu LWZvbGxvdw== IC0tLS0tLS0tLS0t xLHEnw== X3dpbm5lcg== LkNyaXRlcmlh KGRhdGFTb3VyY2U= IHNldElucHV0 IFRJTUVTVEFNUA== b3BlcmFuZHM= Z2V0V2luZG93 LmZhY2VWZXJ0ZXhVdnM= IEludmVzdGluZw== Vnk= IHBlcnNlY3V0ZWQ= 4bq/dQ== IFBsdW1iaW5n T05HT0RC RXZpZGVuY2U= IFN0cm9t cXVvdGE= TGl2ZXJwb29s CWF0dGFjaw== bWluaW1hbA== IG9uS2V5RG93bg== IG1vZHVsZUlk IFZlcmFuc3Q= bW9ydA== YWNpc3Rz IE1BU1M= X1VOREVS LmdldFJ1bnRpbWU= RU5USUNBVElPTg== Uk9LRQ== IHNjYWxlWA== IHNlcnRh IEZyZXF1ZW50bHk= X1RSQU5TRk9STQ== IHR3aWxpZ2h0 IE1jS2Vuemll bGVkZ2Vk IEB7QCI= X0FDVElW IGhvb2tlcnM= PWRlZmF1bHQ= IHdhbG51dA== IHVzZU5ld1VybFBhcnNlcg== IENoZWVy IHdyb25nZnVs bmlv YnRj LnN0cmlkZQ== IHN1Y2Nlc2Z1bGx5 IFRyb2xs aWZpY2lv LmNvbmQ= IGhlYXBz X1BIT1RP PEFkZHJlc3M= IFN0aWNreQ== IG5pZ2h0dGltZQ== IGRhbmRv IEJJTEw= INC+0YLQstC10YI= RGV0ZXJtaW4= IGZ6 KHNpZ25hdHVyZQ== IHZpbmRlbg== LkNPTk5FQ1Q= cnVpc2U= IHh1 cHJldmVudA== Rk9Y VUlBcHBsaWNhdGlvbkRlbGVnYXRl U3BsYXNo IGVtYnJvaWRlcmVk IEhpbGZl LnNoYWRlcg== IGRvdWJ0ZWQ= UmVzcG9uc2VTdGF0dXM= IHVuc3RvcHBhYmxl dW5sb2Fk KyJd ImxhYmVs IGZyZWVsYW5jZXI= RGlyZWN0ZWQ= IHZvcmhhbmQ= IFNubw== ZXhpc3RlbmNl b3JkaWFs emFn LkFnZQ== IHNwYXducw== IFBTRw== c3RpdHV0aW9ucw== IHNpZ2h0aW5n LXRhbGs= INGB0L7RhdGA0LDQvQ== ZW5lcmltYQ== IEJlbnRvbg== X1N0b3Jl VHJhbnNwYXJlbnRDb2xvcg== IEV4cGxvc2lvbg== X0lTUw== Q2hlY2twb2ludA== IGRlZmxhdGU= 0JLRi9Cx LXRyYW5zZmVy IEJhYmllcw== IGltYQ== LnVzYWdl IG5lZ2F0aXZpdHk= IEV4dHJlbWVseQ== a2o= RG93bmxvYWRlcg== CWFjdA== W2NoYXI= Tm9ybWFscw== X3JlZmVyZW5jZXM= IGRyYWNvbg== 4bulYw== X1RSTlM= Y29tcGFueUlk IFZlcmQ= YW5pbw== IE1hdGNoZXJz KHJlbGF0aXZl IHJlZWxlY3Rpb24= LkhF VGF1 INGB0YLRgNC+0LrQuA== IE1ldGFscw== IENvY2t0YWls IGFwcmVuZGVy X3ByZWZlcmVuY2U= LlNjaGVtZQ== IGdsR2V0VW5pZm9ybUxvY2F0aW9u VXNpbmdFbmNvZGluZw== 0YDQsw== ICJdIik7Cg== TGVhZGVycw== J8OqdHJl X0RlbGF5 UHJvY2Vzc2Vz aWN1bHR1cmU= XCI6e1wi 4oCUIg== RW1vamk= LWdyb3c= IENDRA== Y29tcG9zZWQ= TWFpbnRlbmFuY2U= IFJ5emVu KGFn LnByb2I= IFNpbmF0cmE= IGhvcnJlbmQ= IE1vdW50ZWQ= X1BFRVI= IGN1aw== IHPDuGtlcg== IFF1YXI= X1JFU09MVVRJT04= J2VhdQ== IGJvdXJib24= IGF0SW5kZXg= L3BvbA== IOq0gA== CXB3 fSl9Cg== LmZvcm1EYXRh IHVkZW4= IHJvYXJpbmc= Tm90aWZpY2F0aW9uQ2VudGVy IGNsdXN0ZXJlZA== IHBhaXJ3aXNl bXVsdGlsaW5l R2FtZURhdGE= Lkxhcmdl KSc6 INGB0LXRgNCy0LXRgA== IFVJTWFuYWdlcg== U3Zj IFBsYXlzdGF0aW9u Lk1vcmU= LnF1YWxpdHk= IGNvbmZpZ0ZpbGU= LWNvbnRhaW5pbmc= IEdvYXQ= ZW5jaW9u IGxpa2VuZXNz LXVzaW5n IHNlYXNpZGU= 4bqpdQ== YW50aWNpcGF0ZWQ= Rm9sZGVycw== LUxldmVs b3BjaW9u KXByZXBhcmVGb3JTZWd1ZQ== PigpKQ== PWFkZA== XGdyaWQ= IHln X0RSSVZF IEdldE5hbWU= LkRBTw== IGhhbm4= CWNhdA== IHZpZ24= IEhlbGxlcg== IENSRUFURUQ= YmVyb3M= YnV0dA== IGJlbmRz IExlZXI= 0KY= IFNNUA== VmVjdA== IG9iamVjdFR5cGU= OmFzeW5j IGNvbXBldGVuY3k= IFF0QXdz TG91 L2NhdA== UHJvc3RpdA== LXZlcw== CXR2 IEVJ QW5kV2FpdA== IFRPT0w= fSo= X1Jlcw== IGFsaWdubWVudHM= 7KGw IENsYW1w LXBhZA== IHdyaXRlRmlsZQ== IEFwcHJlYw== 4oCZYXV0cmVz dWRhZGVz IGx1Z2FyZXM= c3BlbmRlcg== W2ltYWdl RVhJU1Q= IGRlY2VpdmU= IGh1bnRz X1ZPSUNF X0RY Q0FD ICgoJw== aXNrcw== LGZpbGVuYW1l IGxlYW5z SW5wdXREaWFsb2c= RGF0YUNvbnRyYWN0 IHNtb290aGVk IHJlY3J1aXRlcnM= IHRhbmdsZWQ= X1RhYg== IEZpbGVBY2Nlc3M= WUM= IHZY PGR5bg== TGV4ZXI= IOKYhg== IGdsR2Vu VGVtcG9yYWw= IEFURg== YW5rbw== VXNlckNvZGU= IEtvdGxpbg== Li4KCgoK RU5DRUQ= LnVudHJhY2tlZA== X21y IHdhdmVsZW5ndGhz IGRpY2hv IGltdQ== X2NyZQ== W0o= X0RG IGF0dGFpbm1lbnQ= IGxpdGVycw== W2tleXM= IGxpc3Rhcg== SHR0cHM= IGJyZXdlcnM= IGFjb21wYcOx IHRvYXN0ZWQ= LmZyaWVuZA== IHJlbHU= IFBzeWNoaWM= TWFuaXA= ZG5h UHJp LWZsYXNo KGFydGlzdA== IEtvdg== cHJlc2VydmU= X3BlbWI= LnNldFByb2dyZXNz IGR1c2s= IGNhbm5hYmlub2lkcw== IEt1bmQ= IENvdW50aWVz IO2OmOydtOyngA== IHJlbmFtaW5n IFJ1c3Nv TlNTZXQ= KEVYUFI= 5YW25LuW RGlhZ3JhbQ== LGxhc3Q= KHdpdGhEdXJhdGlvbg== IGluZGVidGVk IERpY2tlbnM= IEFscHM= IERlZ3JlZXM= aWRhcg== LWJsb29k K29mZnNldA== IEh1ZA== b3VuZGVy dWxuZXJhYmxl IHByaW8= YmxpbmQ= KHBhY2s= IG5pZ2h0bGlmZQ== IGlsbHVzdHJhdGluZw== IG51dHNoZWxs IGJyb2FkY2FzdGVycw== IGNvbXBhbnlOYW1l aXRvcmU= LnJpZ2h0QmFyQnV0dG9uSXRlbQ== Ym90ZQ== IFBJVA== LXNjcm9sbGJhcg== IHdpbmR5 IFFNYWluV2luZG93 aHVl LmVwb2No IGNhbWVy IENMVUI= aWZhcg== VW5hdmFpbGFibGU= LXF1b3Rl IEdyYXo= IHZhbHU= X01BVEVSSUFM IHBlbnk= IHRyYXR0 IGxpY2tlZA== CWNhbg== IFRhaXdhbmVzZQ== UGFnZUluZGV4 LlRpcG8= X1JlZA== IHZmcw== X3RyYW1wb2xpbmU= IE1QUw== IFBlYW51dA== IExvY2tlZA== CUFU anNwYg== X05PREVT J1dl IENvbnZlbmllbnQ= X3N1Y2Nlc3NmdWw= K3o= WUxlYWY= IHBlZGlncmVl eHo= IHNhbHZhcg== X0Rlc2M= IG5lc3Rh IGhhcmRjb2RlZA== LmdvbGQ= LkltYWdlRmllbGQ= X0JT TEs= Q2hvY29sYXRl LlN0YXJ0dXA= IGFuZWNkb3Rlcw== Lk1h P10= L3RvcGlj LlNjcm9sbEJhcnM= 0YHRgtCy0LA= IE1PTQ== IHFvcw== YXJ5YW5h w6RjaHN0 IE1jR2lsbA== IEVEVUM= KHBvc3Rz IEVudHdpY2tsdW5n X3NraWxscw== LWd1YXJk IHRleHRpbGVz fHVuaXF1ZQ== IEFyaXRobWV0aWM= TG9hZElkZW50aXR5 KTt9Cgo= IGFzc3VyZXM= V2lsZGNhcmQ= IGRlZmF1bHRlZA== IE5vdFN1cHBvcnRlZEV4Y2VwdGlvbg== IFRvbWF0bw== LlN1bW1hcnk= ISIu dXRoZXJmb3Jk IGxvb3Bob2xl IGNtYWtl LWRhdA== IHJhZ2F6em8= IGNhcGl0YWxz IEltcG9ydGFuY2U= IER1bmdlb25z X3pvbmVz LnNhdA== ICAgICAgCiAgICAgIAo= Y2F0ZWdvcmlhcw== IGRhdGF0YWJsZQ== IG5hamxl KGdw LXJlbg== IHBhbmlja2Vk IFNreWw= IFFVSUNL dmFsdWVPZg== U3RhdGlzdGlj IGRlbWVhbm9y bmRlcm4= IEFwcGVhcnM= UHJhZ21h X3Bhc3Q= SGFzaHRhYmxl IHRoYW5raW5n LmNzcmY= IHBhdmU= IFZpY3RpbQ== IFDDpQ== Rmlyc3RuYW1l Q0FURUdPUlk= aWxlc3RvbmU= JyktPl9fKCc= IGluY2FwYWM= U3RyZWFtV3JpdGVy IGNvbW11bmlvbg== X3N0ZGVycg== 6Ieq5rK7 IGh1bWFuaXRpZXM= INC70Y4= IFBhcmFz bG9mZg== SGVhZGVyVGV4dA== Z3JlZ2F0ZWQ= LlhSVGFibGVDZWxs IGVudGl0eUlk IE1hc3Rlcnk= b2xkdA== JykpKTsKCg== aHVtaWRpdHk= Li4uIik7Cgo= RGVsdGFUaW1l IG1rdGltZQ== UGhvdG9u IHBlbnNhcg== c2NhbGluZw== X3llbGxvdw== X211bHRpcGx5 IFZ1bGNhbg== IFBlYXJjZQ== X2xj LWV4Y2x1c2l2ZQ== SXNVbmljb2Rl IHBhZHI= X1BDSUU= IGdsaW1wcw== IHJhbXBhZ2U= IFBhZ2luYXRvcg== IGNvbnZleWluZw== bm9yZQ== X2RldGFjaA== J10hPSc= IGJvbmE= CUNvbg== TmF6 IHNlZ3VpbnQ= IG1pZXN6 IGVzb3M= ICcvJykK IGZhaXRoZnVsbHk= IGJla29t 0LDQutGB d2hlbG1pbmc= LnR3bw== IFNDRQ== LW5h ICgpew== IERhbWVu X3RndA== YWRhbGFmaWw= IE1NSQ== VGhpbg== IGRlcHJlY2lhdGlvbg== IGFic2VudGVl IHNhbGFyaW8= IFNvbWVib2R5 IFNsb2Fu IGVyZm9sZ3JlaWNo Ok5TTG9jYWxpemVkU3RyaW5n IGdlaMO2cnQ= IGVtbw== IExhZ3VuYQ== w6FzYQ== aXN0cmF0ZXM= UmFpc2U= IEFzdHJvcGg= ICdcXCc= X3BlZA== IFRIUk9VR0g= IE5pZXR6c2NoZQ== ZW5lcmF0aW5n b3BsYXllcg== IHJvZGVudHM= w7xobA== R2FtZU1hbmFnZXI= IEhlYWRlckNvbXBvbmVudA== IG1pbGFu cXVlZW4= IFBPTEw= IEx5bWU= IEJyaWdncw== ZWNlcg== d2Fnb24= LkRFU0M= IGdsQmVnaW4= U3RhdGVtZW50cw== ZXRyaQ== IG1vY2tlcg== IEJsdWVwcmludFJlYWRPbmx5 L2NvbnRlbnRhc3Npc3Q= ZW1hYWt0 L2xvYWRlcg== X2xvd2VyY2FzZQ== Y2l2aWw= X3ZhbG9y X0dsb2JhbA== IGFkcg== aXRpemVu LlNpZGU= IEVtYmxlbQ== IHRoaXJkcw== X1NIQVBF UmVncmVzc29y UFlUSE9O IHBzeWNob3RpYw== IGN2cw== IEFwcGxpY2F0aW9uVXNlcg== IGFsdW5vcw== VG9nZ2xlQnV0dG9u IG5nYQ== IG3Do2U= YWR2ZXJ0aXNlbWVudA== 5YiG5Lqr Lm92 IEFPTA== UkVX INin2LPYqg== IEdpbm55 IC8vLy8vLy8vLy8= U29uZ3M= YWNpYw== Q01Q IHJlY29nbml6ZXI= IHDDq3I= RElD O1wiPg== IGNsb3Q= OkV2ZW50 LlRP IEN1cnNvcnM= XFN0b3JhZ2U= IElvbmljUGFnZQ== X2pldA== KEJpdENvbnZlcnRlcg== IGNoaWxkaXNo VHJhZGVy PEhUTUxJbnB1dEVsZW1lbnQ= X0ZSRVFVRU5DWQ== PSI7Cg== eXN0YWNr SnVy IOmU IHRjYg== IHJlY2liaXI= LnN6 IO2BtOuemOyKpA== UEVSU09O bm92YQ== IGNvZXI= IE1haG1vdWQ= IFdvcmtwbGFjZQ== IiIiKSwK LlBhZ2VTaXpl Z2V0Um9vdA== KGJhc2VVcmw= W1U= IE1DUw== IENsYXJrc29u LnZvbA== ICIifQo= IHBldXg= IFByb2R1Y3RTZXJ2aWNl IG1vbmRheQ== IFRlc3REYXRh IE1hdWw= IHN0cm5jbXA= IHNob3BwZXI= dGhlb3J5 IGV0aXF1ZXR0ZQ== bGljZW5jZQ== c2NhbA== LWNsdXN0ZXI= IGhpc3TDs3JpYQ== IFN1YnRyYWN0 IGZpYmVyZ2xhc3M= X2xhc3RuYW1l IFJld3JpdGU= L3RvZG8= IG92ZXJmbG93aW5n IEdhdXNz b2theQ== IGNsdW1zeQ== KHh5 IGV4ZW1w YW5hbHl6ZQ== LXRpY2tldA== bmluZQ== IERlYWRwb29s IGNvbHVt IEpL IFtdLA0K IEFzcGVu IG1hbGlnbmFudA== aMO1ZXM= U2NhbGE= aW5uZQ== IENPTlNUQU5UUw== X1ByaWNl IyUl IGFyc2No IE5TQXR0cmlidXRlZFN0cmluZw== IEZpbGVUeXBl YWxsb2NhdGlvbg== X3Npbmd1bGFy KFBvaW50ZXI= YW5uaWVz U3RvcmVk ICc7Cgo= 4oCZZXg= ZHJz QnJpZ2h0bmVzcw== L09S VGV4dGJveA== IGtuYWNr IGplbmlz IG9jYXM= ZGF0YXA= IGdhbWVUaW1l IOCw bmR4 IEVWVA== QnlUZXh0 IGF0dHJpYnV0ZU5hbWU= IGp1Z2Fy X3NlcXM= IEZFQVRVUkVT OmRhdGU= ZmJl cmlwcGVy 56iN LkV4cHI= VXJiYW4= aWRvdA== IG9ibGl2aW91cw== KERiQ29udGV4dA== Q2Fyb2w= KCcsJywk IEJyaWxsaWFudA== a2Fk Y2VudHJhdGlvbg== IGt1aw== IE1BTkFHRU1FTlQ= X1dFQVBPTg== IGppaGFkaXN0cw== IGVudHJlZw== IGRvxJ8= IGFwcGVuZGluZw== IFpp X2N0eHQ= IHF1YWRyYW50 ZWxlbWVudFR5cGU= PWltZw== YnJ1YXI= SUNBU1Q= IGludGVsbGVjdHVhbGx5 LkFubm90YXRpb24= IGNhbXBhaWduZXJz LkRhdGFHcmlkVmlld0F1dG9TaXpl IMWfZWs= IC9eKA== LkRhdGFUYWJsZQ== IHdlYmxvZw== KGxpYnJhcnk= IEZ1cw== IE9TVA== X1Bhc3N3b3Jk IEJ1Y2tsZXk= aG9mZg== QWxpZ25lZA== X1JlYWw= RU5USUM= L2dyYXBocWw= IFdlZWQ= IExTQg== b2NjYXNpb24= YWRkYWZp TGV0cw== KCJg IHdpZGVu KHZpc2l0b3I= ICJcCg== QU5URQ== LWNhbXB1cw== LUJhcg== Y2FtZWw= Rm10 OmRlc2NyaXB0aW9u LmFyZQ== IEFuYXN0 IExvbmdlcg== c2VyaW91cw== IGRhaGVy aXp6ZXI= TXVsdGlwbGljaXR5 IEhvbGxhbmRl IEFubm90YXRpb25z KCk/ IHByb3Rlc3Rlcg== IFVyZHU= IHNwZWNpYWx0aWVz X2x5 Q2Fk YW5udA== anNw IGpvZQ== KXI= IFBlcnNpc3Q= IG9ibA== IGRlYWRsb2Nr IHNlcmk= UmVsYXRpdmVUbw== IFl1cw== KFByaW50 YWJpbGlh IHVucHJvdGVjdGVk IEFTSUM= Lk5vbWU= IFdlYkNsaWVudA== IElUVg== w7xybmJlcmc= aXRvcmk= U2lnbmluZw== IFJlYWRvbmx5 IGVsZHJl IENoZWNrZWQ= YWxudW0= U291cmNlVHlwZQ== bGV4aWNhbA== IGlsbHVzdHJhdG9y IERpcmVjdG9yYXRl IFRyb20= bXBw bG9nZw== Lmluc3RydW1lbnQ= IHdvb2RlZA== IFVzZXJUeXBl IFJlbmNvbnRyZXM= bW9kZWxOYW1l QlRUYWdDb21wb3VuZA== PlRv IGZyZWV6ZXM= IENvbnRl IENyZWRlbnRpYWw= Y2FsYQ== L3dvcmtzcGFjZQ== IGxpYmlkbw== Y2hsdXNz b2xsZXlFcnJvcg== IGFjY2lvbmVz IEppbnBpbmc= YXTDqWc= SW50ZXJzdGl0aWFs KSkpKSk7DQo= eWJyaWQ= IFJvbGxlZA== TW9kZWxDcmVhdGluZw== IFJlZmxleA== IEx1Y2lmZXI= IGVoZXI= IGNhcm5pdmFs ISI7DQo= X0xPT0tVUA== IHN1Y2PDqHM= IHJlb3BlbmluZw== IGNyZWFkbw== IFNteQ== IEVudHM= LlNpbmNl IEZpc2hlcmllcw== L2Nvbm5lY3Rpb24= IENTQQ== INC/0YDQvtCz0YDQsNC80Lw= bHNydWhl CWFjdG9y IFN0cmF1c3M= SnNvblZhbHVl CWV2YWw= bG9ja2Vy IFhJVg== X2h5cGVy IFBvbGx5 4oCmdGhl IEdVUkw= 0LXRgdGB IGRpdmVz dWdlb3Q= aW5lbWE= YmVyc29tZQ== Q29tcHJh LWN1bHR1cmFs IGdyYW5kcw== U2Fj IEJhcm5leQ== X1FVRVNUSU9O IG1hbWFu IGhhc3RpbHk= IGNsdWJob3VzZQ== IGdydW5k X1dBTEw= IHB1cmlmaWNhdGlvbg== hOS7tg== 0LLQsA== dmVzdG1lbnQ= LkRpc3BsYXlTdHlsZQ== X2NvcmVz JVM= IG9zw7Ni IGRpc2I= IEZyYW5raWU= IGluZGlzY3JpbQ== X0JlZ2lu KGVy O28= 44Oz44Kw bm9kZU5hbWU= IHJlZnVuZGVk IGRpc21hbA== IEh1ZmZQb3N0 IHVuZGVjaWRlZA== d3JpdGVsbg== a8Ozdw== IEJvc2U= CWxpYg== b3BsYW4= aW50ZXJwcmV0ZWQ= IE1PTkVZ dXZv IG50b2hz aXNldW0= Pmo= IHVuZml0 IGh1Z2dlZA== IEplc3Q= bXBz IGJyb20= J28= IGZvdg== IFNocmluZQ== IEVJVEhFUg== eWNhc3RsZQ== IHNhdHVy cmVxdWVzdERhdGE= W2Rpcg== T1VDSA== X0Rv IHlvbA== IGluaXRpYWxWYWx1ZXM= W3ZlcnRleA== c2VydmljZU5hbWU= LnNhbGFyeQ== IEF1dGhlbnRpY2F0ZQ== 6L6+ X1ZMQU4= KFtdKTsKCg== IFNlcnVt UGF0aFBhcmFt Zm9ybXVsYXJpbw== IHN1bW1hcml6ZXM= T0NS b3JhbQ== TERBUA== Ymlj cGlja2Vk LXRoYXQ= IGNkcw== CWFuaW0= IGludHJpYw== IFdvcnQ= IFZMQw== IFNoaWl0ZQ== U3R1ZGllcw== LmRpc3BhdGNoZXI= KGVuYWJsZQ== Lm1peGlu IFNleW1vdXI= IGJpb21lZGljYWw= IFNwb29u IE5vcnNl IGludGVudHM= IMOpcXVpcA== IERyZXNzZXM= TFBBUkFN LnNldFJlc3VsdA== LmRlbGV0ZUJ5SWQ= IG5ld2ZvdW5k IE9TRA== b3VzeQ== IGVzdGFkb3M= W0J5dGU= Q2h1Y2s= Lm9uVmlld0NyZWF0ZWQ= IENvbnRyaWJ1dGlvbg== X0VuYw== SU5FVA== IGZsYXZvcmZ1bA== IOOCog== dmlzYQ== IEhlcmN1bGVz LmdldEFwcA== IFlvaw== Lk1haW5BY3Rpdml0eQ== KS5b IGxhdXQ= SW52aXRl IENodXJjaGVz LCcj 2YrYsQ== KFNT IHZlbmRh YXNqb24= LklOVEVS aXBoZXJ5 KFN5bnRheA== b25kcm91cw== CWNlbnRlcg== QnJhY2tldEFjY2Vzcw== IENhcGNvbQ== LmdldEZvbnQ= IFZhdWx0cw== IGRpc2XDsWFkb3I= Om8= KHNoZWxs IGVDb21tZXJjZQ== IGFsdHJl X2F0dGFjaGVk IGlzcg== IG9idGFpbnM= LkNvbnRleHRDb21wYXQ= IGF0dGVuZGVl IFR3aWNl IE1vb2Q= 6YKu566x bm9kb2M= IFBJWEk= c29mYXI= IEJsb29keQ== LkNvbXBsZXRl IEJFUg== IGdldENhdGVnb3J5 IGRpc3F1YWxpZmllZA== X1RydWU= J2Vy LXRvbw== IGh5cGVybGluaw== X21heGltdW0= TmVhbA== IHBJbmZv LmdldEVsZW1lbnRzQnlOYW1l c2NoZWR1bGVk cGF5ZXI= CXZlcmlmeQ== LWVudGl0eQ== bWV0YXRhYmxl YmlsZHVuZw== IGRlbHRhWA== ZW1wbGFjZQ== IHJldmVydGVk cmVwaWQ= bGVhcm5lcg== fSkpCgo= dWNvc2U= IHJpY28= IGJhbmdlZA== IEFmcm8= KGluZXJ0aWE= YW5zYQ== IMOkdmVu S2FyZW4= IHN1cGVyc3Q= IGZydWl0aW9u b3RjaA== IFBheXM= UmVzaWRlbnRz IHByaXNt Jik7Cgo= Lmptcw== IFNsdWc= PScnKQ== IGd1dGVu IFNwaWVsYmVyZw== IFRGb3Jt KGJlZm9yZQ== IEZpbml0ZQ== 5paw5aKe IG1laWxsZXVyZQ== 0L/QuNGB0LDQvdC40LU= X0Vycg== LWZ0 bmFubw== LkFkZHI= IC8vDQoNCg== IEpvbmFo IERpc2Nv IGx1bmNoZXM= IERGQQ== ZXhwbGljaXQ= XSc7Cg== IHJlZmluZXJ5 IFN0cmluZ1R5cGU= dW5zcXVlZXpl IExpa2VseQ== V3JpdGVz LmJwbQ== IHBJdGVt b3Vuc2Vs U3RhbmRpbmc= IGNob2tlZA== IGFuc2No dXBpbA== IERlYnVnZ2Vy 4qCA4qCA PEdyb3Vw IFNjYWxpYQ== IHN1YnN0aXR1dGlvbnM= IGNsaW1iZXJz ICopIg== IG5hbm9wYXJ0aWNsZXM= IEFQUFJP IHB1cmNoYXNlcnM= IFFUZXN0 IEF3YWtlbmluZw== CVNlcmlhbA== LnJlcGFpbnQ= IHNhdm9yeQ== IHBvcm91cw== IGFWYXI= IFN1YXJleg== LUVhc3Q= Qm94ZXM= IFdlaW5lcg== IENSQQ== IOqwkuydhA== IHhsaW0= Ij8KCg== IHdhc2hpbmd0b24= 7Jq0 IHRvdGFsZW1lbnQ= X210aW1l LnNldFNjZW5l IGxsYW1h IGNibw== ZWZk IHVuZGVycmF0ZWQ= cmFpc2luZw== IE5BVElPTkFM ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCg== b3B0aWM= aWRlYXM= IOaPkA== IGxhaw== ISEs IGtvbW0= cGFyYWd1cw== U2l0ZXM= IHN0cmVzc2luZw== IE1hdEJ1dHRvbk1vZHVsZQ== IENvbnZlcnRlZA== YW5hbWU= X1JFQURPTkxZ XT0+ IGJvcmRlbA== IGJpYmxpb2dyYXBoeQ== IGdyaWRDb2x1bW4= IGpvdXJuYWxpc3RpYw== 7J6E IHJhc3BiZXJyeQ== c3RpY2U= IGFicmFzaXZl IERCSGVscGVy IGludGY= IFJUQlU= fSciLA== IEhhbw== c3dhbmE= IGphbnZpZXI= IGluc3RpdHV0ZXM= IFNlYmFzdA== X0NPTFM= IGZpZ3VyYQ== IFp1c3Q= Zm95 PigpKTsKCg== IExpZWJl QWdlbmN5 IOyLnOyekQ== IFRodW1ibmFpbHM= dGV4dFRoZW1l IGVjaG9pbmc= ZW1wZXJhdHVyZQ== IGZpcmVwb3dlcg== ZWRi OicpOwo= w6lnb3I= L2ZlZWQ= IGh1cmw= LWF2YWlsYWJsZQ== IFJlbmRlcnM= IGZkcw== IEpTR2xvYmFs IENpdGl6ZW5zaGlw a2llZ28= U3RhbmRhcmRJdGVt LnBsYWNlcw== IHNjYWxhYmlsaXR5 IFRyYWlscw== Zm9sbG93ZXI= IHNlcnZpw6dvcw== ID8+Ii8+Cg== W21ldGhvZA== KGli IHJpZGljdWxl IGFkYXB0YWJsZQ== ZmlsdHJv IGtldG9nZW5pYw== LkltYWdlVHJhbnNwYXJlbnRDb2xvcg== IENGTw== IFBFRA== ICIiKTs= b2dsb2Jpbg== W3NpemVvZg== QnJhbmRvbg== LlRvU2hvcnQ= IG5pxbw= IFRFUk1JTg== LmdldFN0YXR1c0NvZGU= IGRlYnRvcg== IENPTlNUUkFJTlQ= CXNpZGU= IERvbWlubw== 0YLQvtC8 IGdsYWNpZXI= IGdyb3U= enA= IENhcmxh LUZlYg== UGVs LnJlYWRWYWx1ZQ== Y2xpbWF0ZQ== IHRpbGVTaXpl LnRyaXA= RU5URQ== IGNodWJieQ== IGltcG9zaXRpb24= TE9XRVI= LmJ5SWQ= Lkxvb2tBbmRGZWVs YXJpaA== LmZpbmRCeUlkQW5kVXBkYXRl IFN0b3JlZA== IGJvdXJnZW9pc2ll SFRUUFJlcXVlc3RPcGVyYXRpb24= IHN1Y2tlcg== LmRlcXVldWU= bGlja2Vu IHN1YnJhbmdl X01FRElVTQ== SXNsYW0= IFNwYXJrcw== 77yaJQ== aW1wb3J0ZQ== IGAt IGpveXM= Z3JvdXBpZA== Rmx5aW5n CWJz Z3Jvc3M= IEZpZXN0YQ== IGNzdA== IGFmaWNpb24= b3Bob24= X0NJ am4= QmVhdXR5 IHNjZQ== IGNyYWNrZXJz YXBr IGdvcmQ= IHByZXRleHQ= IFtc IENhbmRpZA== R29hbHM= QWN0aW9uVHlwZXM= LG51bWJlcg== IHBvcHVsYWNl IGVudHJlbg== IEF1dG9m 6Zmi QmFzZUNvbnRleHQ= QmFsYW5jZXI= KEJvcmRlcg== IG1pbmNlZA== cmVjYWxs Y2Jh IGFwcHJvdmVz IEtsb3Bw ZXJtaW50 X2Zyb250ZW5k ZXNjbw== IG5pbmV0ZWVu RHJpdmluZw== IFhWSQ== IFRhY3RpY3M= IHByb2dyYW1hcw== aWVzZW4= TW92 ZGlldA== YXV0w6k= KCIuIik= IGdvdmVybm8= X0FuZA== L21pdA== IGNhZmV0ZXJpYQ== LXRyYWNraW5n IGNvbW11dGluZw== LnVua25vd24= X3R5cGVvZg== IFNTQQ== UFJPVE8= Lk1lcmdl IGZvckNlbGxSZXVzZUlkZW50aWZpZXI= IFNhdGlzZmFjdGlvbg== ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== SU1QTElFRA== IFJlc3RyaWN0ZWQ= IE1hZ251bQ== 0L3QvtC8 S2Fuc2Fz YXlsaWdodA== IFRvd2FyZHM= IFRvbWU= IFRlbmRlcg== X2RlcHQ= LmNydA== dHJlY2h0 U1RPTkU= IGVtcHRpZWQ= ICcpOwoK 4LiB4Liy4Lij 0Y/RgtGM bGVjaw== IFt+LA== LmV4cGlyZXM= IFRpZw== IElyb25pY2FsbHk= CUxM Lk5vdE5pbA== IOWKoA== IEdvdmVy IFBlcnNwZWN0aXZlcw== IERWUg== IGxva2FsZQ== IHJlc2VuZA== IGRvdWJseQ== IGNvbXVuaWRhZA== IEFzc2VtYmx5Q29tcGFueQ== KHR1cm4= IHN1Ymxpc3Q= IGVuZG9yc2VtZW50cw== X1JFR0lTVFJZ ISIpDQo= KTs7Cg== IGdhbnpl IEhhcm5lc3M= X21hdGNoZWQ= 5L6h 4oCiCgo= Q2hlZg== CUluaXRpYWxpemU= KTsiPgo= IEZhcmFnZQ== cmlzaA== YWx0ZXQ= RGVhbGVy LkxvZ1dhcm5pbmc= KGFmdGVy IEdhcnRlbg== IGV4cGxvZGVz LkNMQVNT IHVzZVJvdXRlcg== LUxh IHNhZGRlbmVk YXJvdg== VG9VcGRhdGU= IOae cGlp JwoKCgo= IFRSQU5TQUNUSU9O b25nYQ== bG9nYW4= Q3Jvdw== IGJyaXRpc2g= IENvbnRlbnRWaWV3 X0JC b2x2ZW5jeQ== bG9hZE1vZGVs VE9PTFM= aGV0ZW4= X25o QUJM LXZlcnM= QXJlbmE= LnNpbmdsZXRvbkxpc3Q= KHBhdA== CW5hbWVz KHNx IHZhbG9yZQ== JHJlcQ== IGFudGhyb3BvbG9neQ== VGhpbmtpbmc= IG1pc2NoaWVm IGFyY2hpdmFs 4KS5 LlNldFRvb2xUaXA= cHJhcg== YW5qYQ== IGZpcnN0bHk= CWxpZ2h0 LS0s IFNwZWFycw== IG9nbA== c3RlZW4= aW1wbGVtZW50cw== cmlzdHM= K0U= IEJhbnM= IGZhc3RiYWxs IEhlcm1lcw== dmVsZWQ= dHdlbnR5 IG5lY2VzaXRh IE1vcm9jY2Fu aXNMb2dnZWRJbg== Q0xPQ0tT LkFic3RyYWN0aW9ucw== LlBhY2tldA== IG1lbmFjaW5n LXZlc20= IExpdmluZ3N0b24= IG9jaQ== IGV4dHJhZGl0aW9u ICQoJA== IExvY2tlcg== IFJlYmVsbGlvbg== IG1peGlucw== Y3RhbA== L3JmYw== IFNHRA== LGlkeA== IGJsZWlidA== KFwk IHBldGVy IGJhcnJlbg== IHBob3NwaG9yeQ== IGdvZ2dsZXM= LmhvbQ== QGQ= PSct LmlzVXNlcg== YWthc2g= X2h1Yg== aXBlbGluZXM= IEB9 LnN1cm5hbWU= SW50ZXJvcA== IGluRmlsZQ== IGVzcGVjaWFsbWVudGU= IGF1dG9ub20= IFphbWJpYQ== X0NPVU5UUlk= PENvdXJzZQ== aWRlb2dyYXBoaWM= IENhbWVyb29u ZmluZEJ5SWQ= KSIu IERlcGVuZHM= cml0b3M= Lk91cg== IHN1YnNpZGl6ZWQ= JywnIis= IGdsZWFu IEFzc2VtYmx5Q29weXJpZ2h0 cGljYWJsZQ== IHVud2l0dGluZw== IG9tZGF0 IEVhc2U= IGVtYm9kaWVz KHBEWA== IFZvdGVy QXNzaWduZWQ= cmV2ZWFs IGZlbmQ= KHBhcnNlRmxvYXQ= IGRwcw== dHBsaWI= YXNzZXJ0Q291bnQ= eG1heA== VW51c2Vk KGZi IHN1Ym1pdHM= IFJlcGxpY2E= KGR5 IGJhbmRl LnNlbWFudGlj IHNlYXJjaFN0cmluZw== IFNhbmZvcmQ= CWZ1bGw= cHJt X3V0aWxpdGllcw== VU5VU0VE IHNjYW5uZXJz IGJmZA== Lk9yZ2FuaXphdGlvbg== LWN1cg== UmFpbA== IHhueHg= JSk7Cg== IG92ZXJwb3N0aW5n VmlldA== IHRhcGVyZWQ= IGNhbWVv IFZpZXdpbmc= IGRpc21hbnRsZQ== IGZpc3M= IFNlbnRyeQ== aGVhdG1hcA== IMOhcmVhcw== IEdyw7w= IGppZw== LmNsZWFyUmVjdA== ZXZlbnRUeXBl IHR1cmJ1bGVuY2U= Y2tpbGw= LkZvY3VzZWQ= IGludGVybWVkaWFyeQ== IE9iZXNpdHk= YXRlZ28= bW9udG8= IEFsYW1vZmlyZQ== IFNoZWlsYQ== IENPTExFQ1RJT04= Q2FyZEJvZHk= IEhhYml0 UExBTg== LnZpc3VhbGl6YXRpb24= JSkuCgo= IEludGVsbGlK IEdsb3Zlcg== LnNwYXRpYWw= IGdyZWV0aW5ncw== IE9wZW5GaWxlRGlhbG9n ey8q IFTDqWzDqQ== IEVm ICJbJQ== IG1hZ2lzdHJhdGU= IExpdGVjb2lu IFNlbGU= IGNvbW1lcmM= cHJpbnR3 bmV4dEludA== LmdldENoaWxkQXQ= IEdldEN1cnJlbnQ= IGV1cm9ww6k= IEFJUw== ZXR0ZW4= LkV2ZW50UXVldWU= YW5mb3Jk dW5ha2Fu LnNldE91dHB1dA== IGNtZGxpbmU= LGdldA== IEhlYXJk LmNvbnRlbnRUeXBl ZW1k IFJldG9ybmE= YWNk IFBsYXlvZmY= YWNtYW4= LndlYnNvY2tldA== Q2xpZW50SWQ= LmV4YW0= IGF0dGVudWF0aW9u LnNldENoYXJhY3Rlcg== CUNvbGxlY3Rpb24= 5rCX IHByZWRpY3RvcnM= IFNoZXJpZGFu cmltaW5hdG9y KFN0YWNr X1BLRw== PScnKToK KHBhZA== IE5vZG8= IGludGVyb3Blcg== IFRyYW5zcGFyZW5jeQ== CWR4 emVt IHByYXRpcXVl IGZpYnI= KCk/Owo= X01PQklMRQ== LlJFRw== X1lFTExPVw== VGl0YW4= JykKCgoK IGNvbXBvbmVudE5hbWU= IENvb2xlcg== aXNGdW5jdGlvbg== LmZlZWRiYWNr IHBlcmZlY3RlZA== IHBhZWQ= LXNjcmlwdHM= U3VzcA== PE9wdGlvbg== IER0 7YS0 J1JF IE5STA== IE1hbm55 IHJvZw== IEdhcnI= X2Nvb2tpZXM= U3Bs IHByb21vdGVycw== KmR0 XEFQSQ== IGV2b2tl X0VudHJ5 IGZpcmVmaWdodGVy aXZpZGFk SmFjb2I= IGxlZ2lvbg== KHBvbA== CWZsYXNo b29rZWVwZXI= LmNsaXBzVG9Cb3VuZHM= IGdyYXBoaXRl J2h0dHA= X1RSSUFOR0xF IERyb3BJbmRleA== LnNtdHA= IFVOU0lHTkVE X1BJQ1RVUkU= X09SSUVOVEFUSU9O IE9QUA== Iyc= w6FmaWNv Lmhpc3RvZ3JhbQ== IEJlbm55 Pldl IHJlcG9zdA== IGZpYW5jZQ== IEJvdW50eQ== c3RyZXNz RGF0ZXRpbWU= Okg= IFNwaGlueA== Tm9ybWFsbHk= YXBpeGVs IHVzZXJBZ2VudA== IE1vcmk= L2xhYg== Lk1PREVM IEVtb3Rpb25hbA== U2NhbGVk ZGV2aWNlSWQ= IOqzhA== Y2Vhc2Vk PElN Y2VlZGVk IGxpYnJhcmlhbg== KW51bGw= IG1pY3Jvbg== IEZvdQ== dWxlbg== L2xpdmU= cnNjaGVpbg== ZmVh IGhhYmls IE5hdkxpbms= bmVjZXNzYXJ5 LmNvZGVz LW1ha2U= IHBQYXJlbnQ= X3JlbGF0aW9ucw== IHJ1c2hlcw== IHByb3BlbnNpdHk= IFNraW5ueQ== V0VTVA== X2NvcnB1cw== KHJlb3JkZXJlZA== ZmRi IEdldE1lc3NhZ2U= QnJ1bg== LnZz IHDFgg== IGNydW5jaHk= Qm9vbQ== UEo= SmFrZQ== 57qm JGNsaWVudA== IH1dKQo= IGNvbnZlcnNl IEdSQVQ= IENSUw== Lkxvdw== KHZhbGlkYXRl X0NMSUNLRUQ= LmJsdWV0b290aA== CXh0eXBl IGNsb3NlTW9kYWw= X2ludGVudA== IHByb2dub3Npcw== c2F2 Q3Rs IGNob29zZXI= IFN1ZG9rdQ== PVVzZXI= LmNsZg== CWV4cGxpY2l0 IHBvdGVudGlhbHM= IEdlb3JnZXM= IGVsaWM= IHRzbGli IFJhZ25hcg== X3JlcHJlc2VudGF0aW9u LWxlZ2dlZA== aGFtc3Rlcg== IEZpcmVzdG9yZQ== Y29udmVydFZpZXc= Q29tYmluZWQ= INC00LXQuw== IGVzcGVjdA== IOOCkg== IFN0YW1pbmE= bG9va3M= RU5BUklP L2ZpeHR1cmVz LnNtcw== IHNlbWljbGFzcw== IHNlbWljbGFzc2ljYWw= LlBlZWs= XSQ= X0RTUA== X0xWTA== VklSVFVBTA== IENhcGl0YWxz IFNDVA== LldoaWxl IFN1YnN0YW5jZQ== LWRvbmU= IGVuc2xhdmVk Y2xhc3NpZnk= ZW50YW55bA== IFZlZ2V0YWJsZQ== X0RFUEVORA== RGFuaQ== IHF1aWVyZXM= IGFiYmlhbW8= IExpYmVy YWZj 6YCf cHJlZGljdGVk LlBORw== IFdoaXA= Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== IOKJoA== IOWM REVN Q0NB L2Nsb3Nl IC8vLzwv IG1lc21h IEJlaXJ1dA== IEluaXRpYWxpemluZw== 4buZdA== TU9OVEg= IO2bhA== UGFya2luZw== Q29tZm9ydA== IEVuZ2luZXM= d2VycA== QFJlcXVlc3RQYXJhbQ== LUtleQ== IGJhY2tsaWdodA== cGFzc2Vz Lm51bWJlck9mTGluZXM= L0xpbnV4 KEhUVFA= IEh0dHBVUkxDb25uZWN0aW9u b3Nvcw== Lnh4 IGZpbG1wamVz ID09PT4= b3B0aW1pemU= Q2Fub24= IC4uLiIK ICciJzsK IGPDqWxpYg== IHByaW5jaXBhbG1lbnRl IFByb3BlcnR5VmFsdWU= T1VOQ0U= IGV4Y3Vyc2lvbg== IEFjY2Vzc1Rva2Vu cmVxdWV0ZQ== Vm9sdGFnZQ== ZXhwbGFpbg== fSkoKTsKCg== VVJMT1BU IGZ1bmdhbA== R3JlZWs= LWJsaW5k IGZldWRhbA== IFNvbmF0YQ== IERpYWdub3Npcw== JHhtbA== ZWRpdGFyeQ== IHN0aW11bGF0ZXM= UG9udA== Lkhhc1ByZWZpeA== Ym9hdHM= IFNjYXR0ZXI= IEdFTkVSSUM= IGZpc2hlcw== PWxlbmd0aA== IG1lbGhvcmVz c3BlbnQ= w7Rt IEluZ3JhbQ== Pi4KCg== cGFyaXR5 LlZpZGVvQ2FwdHVyZQ== IFR1YmVz IGNvbWVkaWM= IHByb2Nlc3NEYXRh QURC KG5ld1N0YXRl 5YGc IFdlYnNlaXRl X09mZg== LGJvZHk= IHN1YmNvbnRyYWN0 IGNodXRl IGNhcnRlc2lhbg== dGhyZXNo LkNhcnQ= IG1ldG9k Y3VzdG9taXpl THRk CXNvdW5k V2ViU2VydmljZQ== IEhpbmRlcmVk W3Jlcw== KFRpbGU= Y2FwYWJpbGl0aWVz X09WRVJGTE9X INGB0YHRi9C7 IENvY2g= IHRlc3ROYW1l V09SRFM= XE1vZHVsZXM= P3VybA== X2NvbnRpbnVvdXM= IFFJY29u IHN0YXJlcw== IGVqZWN0ZWQ= IEludmFzaW9u ZmluYWxpemU= IGdldg== PGc= IEVkaXRvckdVSQ== QmVybGlu LmxpbmVFZGl0 LXJlZ2V4cA== IHNsZWQ= IEVBQ0g= dWNv IHNlZWRpbmc= IGxvY2FsaXpl ZXR1 X2FsbW9zdA== cGFuc2U= IFNlbnNvcnM= X1NJ KnNw IFByb3BlcnR5SW5mbw== IGFwcm94aW0= IGRhdGFHcmlkVmlld1RleHRCb3hDb2x1bW4= 16A= IGRpZmVyZW5jaWE= TE9PSw== IG9tbmlw IFR1cmluZw== IHVuaWRhZGVz 77yfCg== LlJvd0hlYWRlcnM= X0FDVElPTlM= IERhbHk= IGZvcnRpZmllZA== IFdhZ2U= LnNpbXBz KGlzc3Vl IGxlcHQ= T3duZXJJZA== J29yZGVy 5Y+N 56Wo IHJld3JpdGluZw== Lkl0YWxpYw== IEZvcmdvdHRlbg== KElM IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24= ZXdu IHBvcHVsb3Vz IFNoZWQ= IyR7 IEFsbw== RGV2aWNlSW5mbw== KElOVk9LRQ== IHBlbmE= IEJCQg== LmJi IHRvcnM= IGNvbmR1Y2l2ZQ== LXB1cnBsZQ== IHNxdWFyZWx5 Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCg== 0LrRgNGL ZmFzdGE= IGNwdA== IEluZ2Vu IHs/fQ== 0YPQsw== UGVybA== LnNreQ== LWF1dG9tYXRpYw== aW1wbGVtZW50 b3JubWVudA== LklNQUdF LVNwZWVk CUZpZWxk IHBvdW5kZWQ= IExa IGF1dG9Gb2N1cw== IOC5gA== LkNvbXBhbmlvbg== IFZpbQ== dW5jaWE= X3NrYg== IHVubWFycmllZA== IFNvdXI= Z2FhcmQ= TGVvZA== IOCq LkNsb3Vk IHJlaW5mb3JjZXM= J10+ IGZlbGl6 IFVBVg== cmFuY2Vz 5Y2B VG9MaXN0QXN5bmM= LkV4ZWN1dG9y LXRz ICcuJzsK IEtpbmVjdA== 44GE44GG IGJldm9y IEV4dHJhY3Rpb24= X2RyYXdlcg== JHN1Yg== IHVwbGlmdGluZw== LmJ0bkV4aXQ= KCcvLypbQA== UkVESVM= c3RkZXhjZXB0 ZGVv IGdpdmVy X2JpbmRpbmdz VG9EZXZpY2U= Lm1p IEVzdGltYXRlcw== YWxsZWxl Pz8/Cgo= IFN0cmVhbXM= IGFmZmxpY3Q= LnNhcA== IHF1YWxp IEdhdWw= U3BlY2lmaWVz IHpr IHNhbml0YXJ5 IG5ld0luZGV4 c3BlY3M= IGZyYWdtZW50TWFuYWdlcg== IE5lY2Vzc2FyeQ== CVNwcmluZw== PX4= IE9NQVA= Y2FyZWVy KCItIik7Cg== IERhcmxpbmc= aXRhZw== OnBr IFN0ZWxsYXI= IGluZmVydGlsaXR5 bGV4aWJsZQ== VW5hcnk= IDpdLA== Lk5FVw== Z3N1Yg== X1VGdW5jdGlvbg== LnNsaWRlcw== IGRpdmVyc29z X2xvY2Fscw== XFwv IHBjYXA= IE9vaw== LkRhdGFHcmlkVmlld0NvbnRlbnRBbGlnbm1lbnQ= ZXJzb25pYw== IHRyZWJ1aWU= IHNlcXVlbnRpYWxseQ== YWJhcg== IElQQ0M= IGRldm91dA== XEhlbHBlcnM= RVR3ZWV0 IHRyYWJhamFy IFdpbGtpbnNvbg== IGRhw58= SHVtYW5z VGVhY2hlcnM= IERhdGFWaWV3 IFlvZw== IGplZGU= IGFtYmlhbmNl dHJhbmQ= IGVycmF0aWM= IHThu6s= LnJhYmJpdA== IG5ld2JpZQ== IGVudHJhbmNlcw== IG9ydGhvZ29uYWw= IERJU1BBVENI IFNjaHJv X1RVUk4= Omludm9rZQ== IHRhbnRhbA== IFpvbmVz c3RhdGVtZW50cw== TGltaXRz IEfDpA== aWHFgmE= LnByZWRpY2F0ZQ== LkZS IENocmlzdG9waA== LkNvbnM= IEhvcnRvbg== X0N1c3RvbWVy CU1E IGVsa2Fhcg== IE1TRQ== IElzQWN0aXZl XSop XFVuaXQ= IGVv Rm9yT2JqZWN0 ZWxpYWM= LWRldmVsb3BtZW50 IHRlYWw= IHN0aXRjaGVk IE91dGNvbWU= b25jw6k= ZW1iZWRkaW5n IG9uTmV4dA== IO2VtOuLuQ== KGV4aXN0aW5n LmJpZA== CWFzc2VydEZhbHNl e2w= TEVycm9y X2J1bGxldA== KEh0bWw= IGVCb29rcw== cGVyUGFnZQ== L3F1ZXN0aW9u LmZha2U= Lm1i X2RsbA== IGN1bXNob3Q= IE1hZGFnYXNjYXI= SE9MREVS IHBlc3F1aXNh X0RFQ0xT XSxbLQ== IEFsYmFuaWE= LXRvYXN0 IHByb3RhZ29uaXN0cw== IG15b2NhcmQ= IHdhbGtlcnM= ID09PT09PT0= L1BhZ2U= PTw/PQ== IGVucXVhbnRv X1RSVU5D IHNlcHRlbWJyZQ== IGxheW91dFBhcmFtcw== ICcuLi8uLi8uLi8uLi8uLi8= IFRyYWZmb3Jk IHBhbGF2cmE= IHJ1bmRvd24= IGJyaXR0bGU= w6RjaGU= LllFTExPVw== IENlcmVtb255 IG5ld1RleHQ= dmVjcw== IGVzc2Vu IE1ldG9kbw== IEdVSURF IHBvc3Rwb25l IFZTdGFjaw== WyIk IE1pY3Jvc3lzdGVtcw== XFBhZ2U= cG1hdA== X0ZBVUxU X21C U3RhdGVNYWNoaW5l RmFjdWx0eQ== Lnd4 IE1vemFydA== YW5pbWU= IHB5dA== IEJ1a2tpdA== LUlORlJJTkdFTUVOVA== IHNlYXJjaGVy LWJhc2tldA== IG9tYXM= IFR1bmlz IFBsYXR0 IHsNCg0KDQo= eWFo dG9sdWE= SW50cm9kdWNlZA== c3VwcGx5 IG1pc29neW4= IFdhaXN0 IEVI LW9wZXJhdG9y IGRhcmtlbg== IENvc21pYw== IGdsYWNpZXJz IA0NCg== XVtf Q29tcGFueUlk IFJlY29uc3RydWN0aW9u aXp6bGllcw== IGzDrWRlcg== IGNvbGxlZ2lhdGU= IFBldHR5 T1VSTkFM ZGVjb3JhdG9ycw== cmFtcw== KCgK IEFzdHJvbm9teQ== IHJpbw== IEN5cmls anVhbg== IHJlaW5j IFBpc3RvbnM= IEJ1c3k= cHRyb24= IHBvbW9j CVJUQ0s= QnV5aW5n Ly8qKgo= IFdyYXBwZWQ= IE1lZXI= IGltYXA= IGJlc3RpbW0= IEFnaWxpdHk= LlRvVGFibGU= c3RpbmVuY2U= XSkqKg== IEF1dG9tYXRlZA== ZHNw IEdhcmxpYw== aW9kZQ== ZXhlbHM= aW50cm9z IGJlc3Rvd2Vk KHZpc2libGU= IGh5ZHJhdGVk bm94aW91cw== IEF1dGhlbnRpY2F0aW9uU2VydmljZQ== IHNob3dNb2RhbA== IGNvbXBvc2Vycw== R0VORVJBTA== Q1RT IFNocg== Y3JlYXQ= IGNsb3NldHM= IGdyb3VuZGluZw== IENPTU1FTlRT ICsj IGdyb3VuZHdvcms= KGluZGV4UGF0aA== Z3JhdGlz dXBwaWVz IGt2bQ== IGN1YWxlcw== LkRlZXBFcXVhbA== IGFsbG95cw== LWJ1ZGdldA== KF9fXw== IGNvbmVjdGFy LXJhZA== IGl0Y2g= bGFtcA== LmdycA== LWFkZG9ucw== IHNlYWJvcm4= IG5lZ2xpZ2VudA== X0RldGFpbA== IHNlcmVuZQ== IGJhcnJhY2tz IGJx IFNlY3Q= KGRhdG9z IHRoZW1hdGlj IHBvbGx1dGVk CWFuaW1hdGlvbg== SHVnaA== RXhlY3V0YWJsZQ== KCcvJylb IGFwb3B0b3Npcw== IGFiYnJldmlhdGVk Zm9vbg== UmFua2Vk CWhpdA== CQkgICAgICAgICAgICAgICAgICAgICAgIA== Q29udGludW91cw== IG1vdmVUbw== REJPYmplY3Q= IGNvbmNlaXZhYmxl IEd3ZW4= IMOhbGw= X18oKQ== IExhbmE= IGVpbnplbA== IHJlY291bnRz eXN0ZW1z b3dhbnk= KTo/Pgo= IEFrcm9u b2xpbmk= Q29ycA== YXBocmFn ICInLg== IGNvbnZlbmVk IC4uLi4KCg== IGNhbGxlZQ== IENsb3Zlcg== LmRlc2NyaXB0b3I= Lkl0ZW1TdGFjaw== IHBlcnZlcnNl X0NF PUAi LS0tDQo= IGJldg== c3VtYQ== YWNjdW11bGF0b3I= IGxpemFyZA== INC+0Yc= Z2V0RGVzY3JpcHRpb24= IFNhcmFz Lm5leHRTaWJsaW5n IGVsYXN0aWNpdHk= IGNoYWM= bW92ZWQ= X1RvcA== dHJlcg== KGRvd24= ZWxlbXM= b2JpbGk= LnBvc3RNZXNzYWdl ICjiiA== Q3N2 IFlvc2VtaXRl c3dlZXQ= TUFUUklY aWdyYXRlZA== IGZvcmdpbmc= IFBhZ2VTaXpl dHJhbnNmb3Jtcw== PVlFUw== IGRpc2Nsb3Npbmc= IFBlZGlhdHJpYw== IERlYWRseQ== UmVzb3VyY2VJZA== LWJpbmFyeQ== IFJvd2U= IENhaXI= X2V4dHJhY3Rpb24= RGVjcmU= IE9ic3Q= cGxy IFBoeXNpb2xvZ3k= bXZj aHRp LlRl IGV4dHJhdmFnYW50 IEFudGli w7NzdA== b3V0ZGly IGNhcm5l Vmlld1BhZ2Vy IGltcGxhbnRlZA== U2VhcmNoUGFyYW1z w7xyZ2Vy Y29uZGU= YWNlbnRl X0NVREE= JHZhbA== IldoaWxl IHRlbXBMaXN0 IHN5bmFnb2d1ZQ== Y21j INGA0LDQsdC+0YLRiw== IHNlem5hbQ== IHNlc3N1YWxp IGNhYmV6YQ== ZXTDoA== IGZhw6c= Z2Vo Y2VkZQ== IlNvbWU= Om9u LWZvcm1lZA== YnluYW1l IOuwmO2ZmA== IG5hw68= IEFVRw== IGVhc2Vk XSl7 KHB0aHJlYWQ= IGplZGVt KGZpeHR1cmU= IFBhcmw= XX0pOwo= IGV4cHVsc2lvbg== IEluZXRBZGRyZXNz IE1MUA== LicpOw== IG9ybw== IFNldmlsbGE= IGZvcm11bGFpcmU= LXRlcnJvcmlzbQ== L1dlYkFQSQ== KmFuZ3N0cm9t Y3Jhd2w= X2xvYW4= X0RJR0VTVA== IEtub3h2aWxsZQ== LmdjYQ== IERpeQ== bnRhZw== YWJsZVZpZXdDb250cm9sbGVy LkZlZWQ= LXNoYXJlZA== IGNvY2Np X2ludml0ZQ== IEJ1Y2tpbmdoYW0= IEdsdXRlbg== IGVuZGVtaWM= UmFpc2Vk IHF1ZXJ5SW50ZXJmYWNl IG1hcnRpbg== QuG6oW4= IGhhcmU= IGRlaW4= cmFyaWFu bXlmaWxl IGFuZ3Vpc2g= VGV4dG8= IEJVRkY= KGxu bWFycw== X3N1YnRpdGxl X2dpZnQ= IGJvbGRseQ== IFNpbmd1bGFy KExvZ0xldmVs PEFydGljbGU= L3N0YXRz INC/0L7Qsg== IGl0ZW5z IGRlbm9taW5hdGlvbg== LkRhdGFHcmlkVmlld1RyaVN0YXRl X0xS IER1Y2hlc3M= CUJsb2Nr dHJhY2Vy LUNO XEFwcERhdGE= Lmxpc3Rz KFJvdXRl IEdPT0RNQU4= ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg== IHRpbmhh IGV2ZXJsYXN0aW5n YURhdGE= KGNvbXBhcmU= IHJwdA== XFBocA== LkZJTEVT IHNwYXJpbmc= U2Nhcg== INin2YTYqg== IEJldGhsZWhlbQ== IGJhY2twYWdl c3BsaWNl ZsO2cg== QGR5bmFtaWM= 4bupYw== 7KY= LnBhZ2luZw== IEJlbG1vbnQ= LkVYUA== IGludGVybGU= IENoZWNrbGlzdA== IFVuaWNvcm4= QkVTVA== Z2V0UGxheWVy LmFyZ3NvcnQ= IHdpdGhTdHJpbmc= IE1vZGVyYXRl fSI+Cg== LnNldEltYWdlQml0bWFw IHRyZW5jaGVz IGdlbmVyYXI= IGZlcm1lbnRlZA== IGRlanRpbmc= Q3RybHM= IGRpc2FncmVlcw== UXVpZXQ= KFNRTEV4Y2VwdGlvbg== IFRlbnNvckZsb3c= T05B UG9ydGxhbmQ= LlB0cg== bGx4 YXN0b24= Q2x1c3RlcnM= IFVzdWFyaW9z IGtoaQ== IGdpYQ== IERvbHBoaW4= xZFz IGx1ZGVy IGRpc3Bvc2l0aXZv IFZ5 b21wc29u IO2VoA== IGtjYWw= IENhbGNpdW0= U2VjdGlvbnNJbg== IENhc2M= IGdyYXR1aXRp b3NvbWFs IHVuZGVyY3V0 IENhaA== OnBhcmFtcw== IHJldHVyblVybA== IEVyZQ== w6lyYw== IGludGw= fS8jew== IG91dHB1dFBhdGg= IGZhbHNlaG9vZA== IFVzZXJSb2xl PEhhc2hNYXA= IENyZWF0ZVVzZXI= IENvd2JveQ== CVVzZQ== XSgK IFNob3BpZnk= Vmlld1N0YXRl QWR2YW5jZQ== LXRhbms= IlQ= IEplbnM= PW9wdGlvbnM= KCIuLg== Lm1pbWU= IENSVA== IGjDpHR0ZQ== KHNv LlVOS05PV04= IGRhcsO8YmVy IENPVkVS R2Vt Q3Jv X1JFQ1Y= X2hpZXJhcmNoeQ== Q2hvb3Npbmc= SkVYRUM= IGRvcnNhbA== KyI8 IE5leQ== V29tYW4= QmV6aWVy IHJpZ3M= IG9udHZhbmc= 77yM5YiZ IEdhdXQ= Y21i TmhhcA== IG1vbm9j IGVuZXJnaWE= b2JzZXJ2ZU9u c3Rha2Vz LSot IE5hY2s= fX0iCg== ZXJ2YXM= IEhpbmRlcmVkUm90b3I= QWRqYWNlbnQ= IEludGVybmFjaW9uYWw= CWFyZWE= IPCflA== IHNwYXJrbGU= KCkuXw== LmlkZWE= IHV0cmVjaHQ= IG1hcHBlZEJ5 IENvbG8= CVRS UG9zdGVy IGNvbWJhdGluZw== IFllbGxvd3N0b25l aWVycmV6 YWNjdA== IHPDoWNo Lk5ld3M= IGZpZWxkVmFsdWU= IGNheg== IEZyZWVt CQkKCQo= IHVzdXI= IHNvbGE= IGN1bWJlcnNvbWU= IGNhdGFwdWx0 Ii4v IEV4ZWN1dG9ycw== IEFtZXM= ICc8JT0= ZmlsbG5h LOKAlA== OlNldFRleHQ= LWNhdGVnb3JpZXM= LWFyY2hpdmU= IFBvbGx1dGlvbg== Lk9m 4oCcQXQ= X0NIQVJTRVQ= KENvbHVtbg== 4oCZKQ== IHVubWlzdGFr IGVhcm0= IFBsYXRmb3Jtcw== IE1vbWVudHVt VmVjdG9yaXplcg== cmF3ZXI= KHBhc3Nwb3J0 KHBsYW5l IHJlcHJlc2VudGE= IHB1YmtleQ== IEphaW4= IG1lbm5lcw== IGluc3RhbnRhbmVvdXM= IGV0aGVycw== IG5lc3Rz IFBhdHRvbg== IEhBQ0s= cGFja2luZw== SVNlcnZpY2U= IHJvY2tlcg== IGZpY2E= IEdsYWRpYXRvcg== IFVQQw== IExvd2VsbA== YmVhcmVy IHZpcGVy X2dsb2I= IG1hc2hlZA== IGhhaXJzdHlsZQ== IHVuZGVybWluZXM= cmVzdGF1cmFudHM= IHJlYWN0aW9uYXJ5 IGJpbGxpZw== fSIpOw0K IHZpc3Rhcw== IG9wZW5kaXI= CWxhYmVscw== YWxsaXM= IFdvbGZm IENQQw== IHJhaWx3YXlz IFZhdWdoYW4= IEFza2luZw== Y2Fp IEdu X1BST0Y= LVNlcA== LmN1cnZl TXVsdGlwbHk= 0YDQsNC90LjRhg== IG1lZXR1cA== Z2V0RGI= KEdVSQ== IHJlaW1idXJzZQ== OnJlc3VsdA== VHVtYmxy LkNsb3NlZA== IGNvbmZvcm1z IEhvaw== aWVkYWRl TmV3TGFiZWw= IG5hdkN0cmw= RG9jdG9ycw== IOyViA== IGJvdXRz IGlzYw== Lyc7Cgo= dWhs LlVp LXNhbWE= IENhbm9uaWNhbA== IG1ldGljdWxvdXM= IGdyb3Rlcw== IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= ZXRlcw== IGxhbmd1ZQ== IGZDaGFpbg== IFR5cGVmYWNl IEJyaWdoYW0= aWFyZQ== J8OpdGFpdA== IEVGRg== IGRlc3Ryb3llcg== X21hdHJpY2Vz TsO6bWVybw== Y2FsbGFibGU= X3BlcmlvZHM= c3RydWs= bWFq LnJs LmxpZnQ= 2YrZhA== w5A= UmV0VmFs RGVudmVy IFRyaWJ1dGU= a2l5ZQ== emV3 IFNwYXJl IGxldWtlbWlh IHdhaXRyZXNz IHBsdXTDtHQ= QWxpYXNlcw== IExvY2F0ZQ== 5rY= SWRlbnRpZmljYXRpb24= LnRlbA== LWRheXM= dGVycml0 aW1idXM= IEJ1dHRlcktuaWZl 64K0 cnVwdGN5 IEdyYWRlcw== IHVuZGVyc2lkZQ== IGhhcmRzaGlwcw== dW5laQ== LWNvbnRhaW5lZA== IFsnLg== T2Jzb2xldGU= LlJldHJvZml0 IHVyYW51cw== X3JnYmE= IHJhcGVz IEthcmU= W+KApl0= IEZpbmNo LmJ1bmlmdUZsYXRCdXR0b24= cXVpc2Fy IE51cnNlcw== ZWdhZGU= IGhu RXhjbHVkZQ== IHN0b2NoYXN0aWM= IHNvdHRv IFBlbmFsdHk= IHNvbnN0 IHJvc2E= X0ZpbmQ= IEludmFsaWRhdGU= TGlzdEl0ZW1JY29u JywNDQo= X3BkdQ== IE1lYWxz YWrEhWM= IE9vcHM= IE5vdGljZXM= IGRlcml2YXRpb24= W10NCg== 6Lqr eXN0ZXJ5 X2ZpdmU= RWFybg== PWV2ZW50 IG9ncg== LVJFQUw= IExpcHM= c2VsZWN0b3Jz YWRpZXI= IHNldEJhY2tncm91bmRJbWFnZQ== KHRoaW5n IHNvZnRiYWxs XHhhYQ== KGlkZW50 IEp1cnk= IFZveWFnZQ== IFRBcnJheQ== KFBhaW50 V2FybQ== RVhURVJOQUw= YXN1 ICghKCg= LkZFVENI IHNraXJt T1JFRA== Y2FuY2VsbGVk aXR0ZWw= IHNlZWR1 bGljaGVz b2hv LHJldGFpbg== KFdlYkRyaXZlcg== aXB0YWJsZXM= RVJJQ0E= IGNsZWFubGluZXNz ZWxsb3dvcmxk IGNvaGVzaW9u Z2lzdA== XS4n ZXJnaW5n IGlzcA== Lm9mZnNldFRvcA== KGZhY3Rvcg== dW5pdmVyc2Fs IFBsYXliYWNr IEJ5dGVTdHJpbmc= IGRhbW5pbmc= IFNTUg== YWN1cw== IFN0YXRlbg== IOWVhuWTgQ== IFBlZQ== IFNhbXBsaW5n YXRvcmlh c3RhcnRJbmRleA== 5ZCr IOy0iOq4sA== IE9saXZlaXJh IEZsYWtl Ym9vbQ== X01TSw== IEZhY2luZw== b3JnaGluaQ== Zm9vZHM= VHJlZVdpZGdldEl0ZW0= IEhBTEY= IiIiKQo= IENIQVBURVI= IEV2ZWx5bg== Pis= IEhvcm5ldHM= d29rZQ== IC9b YXRob2xpYw== LnNlZ21lbnRz Lm5hdmlnYXRlQnlVcmw= IE1hbnVz IHBlcHRpZGVz IGZsZWV0aW5n IEFUVg== IFNoaWI= SW50QXJyYXk= IG1veg== cHJvYmxlbXM= b2duZQ== Lk90aGVy QWRtaW5pc3RyYXRpb24= JSUqLw== Il09PQ== IEFuZHJlcw== QWRh aGludHM= XCIiOwo= KHBuZw== IOqwgOuKpQ== 44OK cmVqZWN0ZWQ= IG1vdmVycw== 546H IHBhcmVudGhlc2lz KGFzc2lnbnM= RWxpdGU= UmVtaW5kZXI= IHN1ZmZlcmVycw== IFJlc291cmNlQnVuZGxl dGhhZw== PicNCg== YW50aW5v UGVyaXBo IFNoYXJk Q2hhcnREYXRh KGpq IG9zdGF0 aHVnZQ== LWF1dGhvcmVk LmNp IHB5bXlzcWw= IGxpbmVycw== IEFUUw== Pkxhc3Q= KSIpCgo= IGdldHBpZA== R2V0U2l6ZQ== IGV4dG9ydGlvbg== W2Zsb2F0 IEVJTkE= L0Jhc2U= LnNldE9uQWN0aW9u 0L7Qu9GP IEdsYWNpZXI= X2F6 IHRyYW5zcG9ydGU= IFNtcw== dGh1bWJz IHRyZWFzdXJlcg== IG16 aXN0aWs= UkVESUVOVA== IGlzaQ== X3N0dWZm UE9TSVRPUlk= c3RhcnRkYXRl IFppbmM= 5rG9 IGthaw== IGVyZmFocmVu X0NPTUJP IHVjd29yZHM= LlBheQ== IGtpbmdkb21z IGV4Y2VsZW50ZQ== aWduaXRl X3ZhcmlhdGlvbg== IG5hdmVnYWRvcg== 5LiT dmlld0NvbnRyb2xsZXI= cmlyZQ== SG9uZXN0bHk= Q2FzY2FkZQ== ZXRyYWlu QXJnZW50aW5h Y3E= IE1hcmlhbg== L2Fy IGludGVyZXNzZQ== dXJhaGFu KFBD IGZyaXZvbA== IFRydXN0ZWQ= KElDb25maWd1cmF0aW9u IFJpaGFubmE= ZW5kb3ph ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByb2NsYW1hdGlvbg== IHByZWRvbWluYW50 IGNvbnN0cw== LW5lY2s= V29sZg== LmNoZWNrYm94 IHN0YW56YQ== IGVudGVuZGVy Ly8o SGFuZHM= IGJpbGxlZGVy IFRvc2hpYmE= YWJiaXg= RU5DSUVT IGppbQ== UFVS Lmxlc3Nvbg== IGJlcnRo bGFyxLFu Qmxv CWV4dA== ZWVs IGRlbWFzaQ== IGNvbG9uaXphdGlvbg== L2Rpc2M= 77yP Q2VydGFpbmx5 566h55CG5ZGY IGpvZ2Fkb3I= dcOp Q29sdW1uc01vZGU= IEpW IEluc3RpdHV0 X3NwZWN0cnVt LmRlbnNl IFNob3J0Y3V0 IHNlYnVhaA== IGZsYXNoeQ== UmVnYXJkcw== IHNoYXJwZXI= Y2FuY2VsbGF0aW9uVG9rZW4= X2RldGFsbGU= IFNjYXJsZXR0 INC80LDRgg== IG5lZ29jaW8= 4LiW IEpX d2ViZHJpdmVy LndhbGw= IHhhbWFyaW4= b3BhcXVl LkFkZFBhcmFtZXRlcg== KENvbnRyb2xsZXI= LWFib3J0aW9u X0ZVTkNUSU9OUw== Q3VzdG9tZXJJZA== IHZlbmly IEJ1c3Rlcg== X3ByZWRpY3RlZA== L3J1bGVz LU1ldGhvZHM= IGdkemll Il0nKTsK IFB4 Q09OUw== LlNsaWNl IHJldmFtcGVk IFRhYmxlVmlldw== IGRpY2tz IO2YuOy2nA== IEF1eGlsaWFyeQ== T3BlcmE= L3Jj IHVudGhpbmthYmxl IGRlZHVjdGVk bHo= IExhZ2U= IFJvd2xpbmc= cHJvdmVk T2ZmZXJz LHNldA== UkdCTw== IEZV IENlbnRPUw== b3pv IFRyb2phbg== IG1hw7FhbmE= IC8vPQ== Kio6 IHtcCg== IEJvd2Vu S25vd2luZw== IOW6 PS09LT0tPS09LT0tPS09LQ== IGViZW5mYWxscw== XT17Cg== Qk1J KCk7KQ== KHBlcm1pc3Npb24= QW5kZXJzb24= IGRlZ3JhZGU= U29hcA== dcWf IFB1cHB5 IEV0aGlvcGlhbg== IFRFU1RJTkc= ZW5zZXg= IGRyZXNzZXI= IENob3Jl VW5oYW5kbGVk QXNzb2NpYXRl LmFkZGl0aW9uYWw= IGRpZmbDqXJlbnRlcw== aXNxdWU= IG5lY2Vzc8Ohcmlv IGdlbmVyaWNz KHBm IFxg IE5lYXJieQ== YXBvcmF0aW9u IFRoZW1lRGF0YQ== V2lGaQ== LlJlYWw= YWN5ag== TGl2 IHBzeWNob2xvZ2ljYWxseQ== bWV0aG9kUG9pbnRlclR5cGU= IE5pa29s IERlZGljYXRlZA== X1BPUlRT IEphZQ== TlNBdHRyaWJ1dGVkU3RyaW5n IGFtYmFzc2Fkb3Jz IEhhbmRsZXJz IEFuYXQ= IHZvY2FsaXN0 IHJhcg== IGRldnVlbHZl Lmdz IHhjYg== IHN1Ym1vZHVsZQ== IEFTU0lHTg== dXJlZW4= IGNsYXNlcw== ZW1vdGg= X0NOVEw= X2p3dA== IOuniA== IG91dHBvc3Q= IEluYm94 CWZsZXg= IEdyb2Nlcnk= SUxJTkU= Lm1vYg== IENvbnN0cg== XT1d KHdhbGxldA== IHNlZGU= ZmFs IGltcGFzcw== PXtbJw== IHVuZm9yZQ== ZnVzZQ== X0xlYW4= IGF2YWxhbmNoZQ== PXJhbmQ= IGFkdWx0ZXJ5 IEdlZQ== CUlucHV0U3RyZWFt IGNhYmVs X01PVU5U IG5vdGljaWFz IFJhdW0= IGJ5dGVhcnJheQ== IG9uSGlkZQ== ICkuCg== JGluc3RhbmNl IGRpZFNlbGVjdFJvd0F0SW5kZXhQYXRo YWNhbQ== LWNvbGxlY3Rpb24= IHVwaGU= UG90ZW50aWFs IFNEUw== X2FwcHJvdmFs RGFtbg== OmNvbnZlcnQ= IE1vZGlmaWNhdGlvbnM= IOyYiA== IHVuYWI= IHNjcm9sbGVk KyIpOwo= IGdhdWNoZQ== IEhPTA== YW50YW5hbW8= IGNvbHVtbkhlYWRlcg== CVpFUEhJUg== emFj IG91dGluZ3M= IGFwcGxhdWRlZA== aG9yaWE= bW9keA== IG1pbGxlbm5pYQ== Jm0= Lkpzb25JZ25vcmU= IHBpb25lZXJlZA== IENhdnM= CWpz ZGVwYXJ0dXJlZGF5 X2ti LlBhdGllbnQ= IHBldGFscw== cG9ydHJhaXQ= In19Cg== SG9tZUFzVXBFbmFibGVk LnByZXR0eQ== LGNsanM= IG1lZGlvcw== aGFzaGVk ZW1vZGVs IE1vam8= LmZyb21SR0JP LXBl IGludGltYXRlbHk= IGVsZ2c= W107DQo= L09ic2VydmFibGU= IG9iZWRpZW50 IEphbWFs UmVxdWlyZWRNaXhpbg== IExpc3RWaWV3SXRlbQ== CXBsYWNlaG9sZGVy X3RyYW5zYWtzaQ== PFNlcnZpY2U= IGVuc3VlZA== IFJpY2Fu U2FnYQ== QVVESU8= IGpt LXNhbGVz LW11bHRp JSI7Cg== IGNsYXNzaWZpY2F0aW9ucw== IHTDo28= Q29hbA== OycpOwo= IGRlbGlnaHRz X2h6 X2JvbGQ= REVQRU5E INCh0L7Qt9C0 YXRlZQ== X3N1Ym5ldA== IFRvd25zZW5k IENhc3RpbGxv IHBydA== JC8p IGZpbGli KCcvJylbLQ== IHVwaG9sc3Rlcnk= IGNvbXBvbmVudGU= IFhG LlJldmVyc2U= X3R1bm5lbA== SW1tZWRpYXRlbHk= LW1vdmU= IGFsaXN0 V1ND c3RydWN0dXJhbA== aXN0b3JpY2Fs VGFuZ2dhbA== IENPVVJU IG9ic2N1cmVk IGxhbmRzbGlkZQ== IGJlZHNpZGU= IGJhcmFuZw== LWVsZWN0ZWQ= IGNlcmFtaWNz LS0qLwo= IFdhbm5h RHlu IHZlcnNjaGllZGVuZQ== IGluZHVjaW5n IGZsdXRl LkFwcGVuZFRleHQ= IFp1Yg== IFB1bGl0emVy OmJvdGg= Lm1heExlbmd0aA== LlByb3BlcnR5VHlwZQ== YXd5 aXRlbU5hbWU= IE5hcnJhdGl2ZQ== cmV2b2x1dGlvbg== IGhhbHRlbg== IEVycm9yUmVzcG9uc2U= Z2F0aGVy L3V0aWxpdHk= Oicn IEtlZQ== IE9seW1waWE= Q2xpbmljYWw= OmdyZWVu IFBsZXg= IEtlbnNpbmd0b24= IFBob25ldGlj IGRpc3RyaWJ1dGVz X2V4ZW1wdA== V2F0Y2hpbmc= Lk1pc2M= IGRvbWFpbmU= OiIu 44OV44I= X01PRFVMRVM= IGhhYmxhcg== IExhb3M= LnNldFRleHRTaXpl LnBhdXNlZA== X1RX IG92ZXJ3aGVsbQ== IGhlbWF0 THVja2lseQ== IFNFTlQ= IEludmVzdGlnYXRvcnM= Pih7 KGZvdXQ= IEFVWA== LnJhd1F1ZXJ5 LXN0cm9uZw== IHJlc2VtYmxlZA== IFNoYWZ0 IFhJSUk= c3VnZ2VzdA== IHNpbmdhcG9yZQ== X2FiaWxpdHk= JGs= CWlOZEV4 XEltYWdl Q2FkYXN0cm8= LnBpdm90 IG1hbnBvd2Vy X2F0dHM= LnNldEZpbGw= ZXdvcmxk Y29uc3Rz R2V0V2lkdGg= IGdyYXR1aXRh IFBldHI= LWFuc3dlcg== IEhlbWlzcGhlcmU= IENhag== IFRyYWRlcw== xIdp IEZyZWRkeQ== T25DaGFuZ2U= IHBvcm5vZ3JhZmlh IFNVTU1BUlk= X21lYXM= IERSSVZF IENyZWU= X21hbGU= IHN1aw== IG1hbmV1dmVycw== c2V0VmlzaWJpbGl0eQ== YWxsaQ== IGRpc2NyZXRpb25hcnk= cmVnYXRpb24= WVNUSUNL OmhyZWY= IHRhcmFm IGNodQ== IEBb RW5vdWdo LlRyYW5zZmVy SWZOZWVkZWQ= OildKQ== CSAgICAgICAgICAgICAg W2F4aXM= VHJhbnNsYXRpb25z LnNlcnZlcnM= IEtFRVA= JywpCg== c3BvbnNvcg== YXJjaGl2ZXM= LlVsdHJhV2lu IEhvbm91cg== J10pKTs= IGluZWxpZ2libGU= IEFudHdvcnRlbg== IEFwcGxpY2F0aW9uRXhjZXB0aW9u IGNhdGVnb3JpZQ== IFdFSUdIVA== IEJ1bmR5 IFBJWEVM IGR1a2U= VG93ZXI= U2NvdGxhbmQ= IHJlZmVyZWVz IEFzc2VtYmx5VHJhZGVtYXJr CXN0YXJ0QWN0aXZpdHk= Lk9uZVRvT25l IEF1c3dhaGw= IHN0cmVuZ3RoZW5z LlF1aXQ= IFVSTFJlcXVlc3Q= ZWVj IHJlZ2lzdHJhemlvbmU= IGhvc2Vz QWN0dWFsaXphcg== L2FycmF5 IGNvbnN0cnVjdGlvbnM= Y2Nk IEZpbGVOb3RGb3VuZEVycm9y VGjDqm0= KHJlc3VsdGFkbw== IFNFUklFUw== U3BlYWs= X0FIQg== QmxvY2tlZA== LWZvbnRhd2Vzb21l Ol0p b2JibGU= KGxpbmtz IENhdGFsb25pYQ== R2VW LkRhdGVGb3JtYXQ= IGZsZWE= LmVm IHNvbGljaXR1ZA== IERZ Y29kZWdlbg== eXRoZQ== IGVwb2xs X1RE IGFmZmlybWF0aW9u X2Zh SVNUQQ== IEVhdG9u Y3JlYXRlUXVlcnk= IGxvZ2lzdGljYWw= IFJheWNhc3RIaXQ= IGNhdWxpZmxvd2Vy IHVsY2Vy LkFscGhh aW5rZQ== Wy4u RVhBTVBMRQ== LXdhZ2U= IHN0YXRp ZWN0aXZl LmdldE1pbg== IFNVQkpFQ1Q= IEF1ZGlvTWFuYWdlcg== enphcmVsbGE= IFNlbGVjdExpc3RJdGVt ICQNCg== IG9oaW8= IFRhaG9l IGtXaA== cXVlcnlTdHJpbmc= IGRlcGFydGFtZW50bw== PWFkbWlu IHdvcmtzdGF0aW9u KSsrOwo= SGVhZGVySW5TZWN0aW9u IFRyaXVtcGg= Q2hhcmxvdHRl IFNNQQ== Q8OzbW8= IHZlcm0= IHRoZWFubw== Ymdjb2xvcg== XCIiLAo= IFJlbWluZGVy QmlsbHk= b3JhbFR5cGU= Z2ViZXI= KGNsb25l IEt1dA== Lz4u QXBvbGxv IHNobA== Wkg= VGh1bmRlcg== IGdpZnM= X2tlbGFz IFJvdGhz IH0o IEJyb2FkY29t IERlcHRocw== CUlOTkVS cGFyY2Vs IGVqZXJjaWNpbw== IGluZGVwZW5kZW50cw== aWxsb3c= ZXhlY3V0YWJsZQ== RXZlbnRv IHpvc3Q= IEhNQUM= W0RsbEltcG9ydA== YWxsZXM= X2Rlcml2YXRpdmU= QXBpS2V5 IHN0ZXBwZXI= PXBsdA== Z2V0SW5kZXg= IHZhbGV1cnM= UG9saXRpY3M= IElEWA== IFVzYQ== IExUQw== Lm1pbkxlbmd0aA== c3Rybw== X05D IHN0YWduYW50 IG1vbnRhZ2U= IGJsb3VzZQ== ZWxpZ2U= IHR1cnF1b2lzZQ== IFN1cGVybg== 5q2z dmFyYQ== TmV3SXRlbQ== X0VYVEVOREVE IHdvb2R3b3JraW5n IEVwaXNjb3BhbA== LnBhaXI= LlVzZXJJbmZv IGRpcmVudA== L3RjcA== IGZyYXVnaHQ= U2xhdmU= LmdldExhdGl0dWRl IFRvb2xib3g= IGVhcm5lcnM= IEhPVVI= 0LDQu9Cw cG9zYWJsZXM= Y29uZGl0aW9uYWxseQ== X3h4 IGxhbsOn KHJw Q2hh IGluY2Fybg== LkRhbw== Li8o 2KfZgQ== VGQ= Q0VG L3JhbmQ= LlZpcnR1YWw= IGRiSGVscGVy YW1pbmVz IGx6 IHN0b3M= IEF0a2lucw== X0RE aXRvcmlv IG1pbmltaXNl aGlwc3Rlcg== KHsuLi4= X1NSVg== W2ZyYW1l IFJva3U= R1JQ IGJhcmJlcg== LkZlY2hh IOuwnA== IGdyYW51bGFyaXR5 IFNheWluZw== X2xpa2VsaWhvb2Q= LmJhckRvY2tDb250cm9s IGZyb250bGluZQ== IFdoYWxl IHNtZWxsaW5n IENvbnRyaWJ1dGlvbnM= aXZhbnQ= IGNyaXBwbGluZw== cHJlbG9hZA== IEhlcnJlcmE= X1dBVENI LWV0 OmV4cHI= aW52ZXN0bWVudA== ZWRlcmF0aW9u X21nbXQ= IGhvb3Bz bW9ua2V5 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK aW50ZXJzZWN0 IGNyaW1zb24= IHN1b2k= IFtdOgo= WE9iamVjdA== U0ZNTA== RVFVQUw= KCd+ Y2VudHJvaWQ= CXJlc3RvcmU= IHByZW5hdGFs IE1pc3RyZXNz IHF4 dHBz IHJlc3Bhd24= IFtdKSwK IGtvbnRyb2w= 44GC44KK44GM44Go44GG44GU44GW TW9kdWxlTmFtZQ== IG5ld1BhdGg= IFBhZ2luZw== IHJpbnM= X21ha2Vy XGJyaWVm IGJpc2hlcg== CVJlYWQ= IGppaGFkaXN0 LnBlcnNpc3RlbnQ= IFJvYm90cw== L2dycGM= IEpvdQ== w6RyZW4= 77yM5Zyo LXB0 IHpkYXJtYQ== X05N IENvbm5lY3Rpdml0eQ== KGJj IEZsb3JpYW4= IFNvY2lvbG9neQ== X3dv QW5kU2VydmU= XygpOwo= IEZMVA== X0RFUg== IENvbm5pZQ== IEJyb2FkY2FzdFJlY2VpdmVy eyg= IGNvbW1lbnRlcg== IGRlbW9jcmF0 IGFtcGxpZnk= LS0tLS0tLS0tLQ0K IEhNUw== IHRyYWlsZWQ= IFNvZGE= LXRlc3RlZA== dWxpc3Q= KW5ldw== X1RocmVhZA== VG9kZA== IGRlYmlhbg== Vms= IHByZXNlbnRh IGNvbWZvcnRz IFdhc2hlcg== IGdhcmc= IEh1Y2thYmVl INGB0LDQvA== ICEi QWRhcHRlck1hbmFnZXI= IEVh IEFzc29jaWF0aW9ucw== CQkJCQkKCQkJCQkK LmdldFdyaXRhYmxlRGF0YWJhc2U= IG51Y2xlaQ== w6lnb3JpZQ== CSAgICAgICAgICAgICAgICAg QkFC IHVwa2VlcA== IFR1cA== LndpdGhPcGFjaXR5 bHlh IGx1eGU= dXBybw== LWVuZw== IHJlbGHDp8Ojbw== IGtleVByZXNzZWQ= IGh5YnJpZHM= bGZ3 T3BlcmF0aW9uQ29udHJhY3Q= IG5hbWVMYWJlbA== IEhvcnQ= X2dydXBv IGJhbmRh SXg= SGVhbHRoeQ== LmdldEVuZA== ZnJhdQ== KFNjZW5l KENvbGxlY3Rpb25z IFNraXBwaW5n dWJv IGbDvG4= Ij4tLT4K IGRyb2l0cw== IGhvbW9zZXh1YWxz IGFiZHVjdGlvbg== CXdpZGdldA== JGhlYWRlcnM= IERBUg== IGZsYQ== dGhyZWF0 IGxvdWlz LkdldFByb3BlcnR5 Ikp1c3Q= KGZyYW1lcw== cnlv cHJvZmVzc2lvbg== fGk= 7ZW07ISc KHN2 IHVucmVjb2duaXplZA== SW9uaWM= RmFzaGlvbg== U2NyZWVuU3RhdGU= IEluY29taW5n Tm90Tmls IHN5bmNpbmc= ZW1pZQ== IHRoZXJtbw== X3Byb2Nz IGluY29uc2lzdGVuY3k= cmVsaWdpb3Vz Lm1q IHBlcnNvbm4= IG1vbWVudG9z b3JhcmlseQ== IOaK X25ldXJvbnM= SWxsdXN0cg== aW1vdG8= aWxpaw== IFdvag== VHJhZGluZw== IGFwcGFyZQ== IGVudHJlcHJpc2Vz YWNoYXQ= IMKs IG5laWdo QlVUVE9ORE9XTg== IE1haGVy YWdoYW4= LWhhc2g= ImY= IGNsaWVudGVsZQ== LmFkZEJ1dHRvbg== CVNQ UWk= IGdyYXRlZA== UE9TSVRF Oj4= IEhvd2VsbA== IENvbXBhcmF0aXZl IElTQw== wq1p T2NlYW4= RGF2aXM= IEZpbG1l V2lucw== IEpJVA== b2NjZXI= IENvcm0= RU5DSE1BUks= cmNoaXZl aWNhw6fDo28= IG1hdGE= IGNoaWxkYmlydGg= IE9wdGlvbmFsbHk= RW5z IHhodHRw IGVsdWNpZA== X09zY0luaXRTdHJ1Y3Q= KSkpOgo= IGludHVpdA== IERvbmF0ZQ== IGNvcnJlbGF0ZXM= PkRlbGV0ZQ== IGVxdWlwZQ== IGJvY2E= IGluZmxhdGFibGU= ZXJhaA== IERhdGVUaW1lS2luZA== IGNhbHZlcw== XExpYg== IGVtbHJ0 IFRyaWxvZ3k= IFBhbmM= IER1aXM= IHBlbMOtY3VsYQ== V0FSRFM= X0RFVEVDVA== LXNlY3Rpb25hbA== ZGhjcA== Rm9yUm93 LWRlc3RydWN0 IFByZXNlbnRlcg== L3NsaWNr LG9u IENpdGFkZWw= bG9nZ2VkaW4= X3N1YnR5cGU= IHNpZ3Vl IGN1cmluZw== IEZpcmV3YWxs IGZsdW9yZXNjZW5jZQ== IEl0YWxpYW5z 0LjRgtGB0Y8= LmdldFN0eWxl SW5TZWNvbmRz amll LVNtaXRo IHhsaW5r IHN1Ym1pc3NpdmU= 0L7QvdGC YXJib25hdGU= IEZhdWw= X2dvYWxz IENvbW1pc3Npb25lcnM= Y2hhcnRJbnN0YW5jZQ== X1BPU1RGSUVMRFM= IG1lZGlhbA== IG1hbm9z IGRlbHQ= c3Zt LkFwaXM= ZXBoeQ== IGFzeW1wdA== IGFwcERlbGVnYXRl IGltcHJvYmFibGU= Y2th c2ltZA== L0Vycm9y LuKAkw== IFBUUw== ZGVlcg== IHNpbmE= bWFnbml0dWRl SURBREU= J119Jw== IG1heW9yZXM= CWNvbW1lbnQ= L2NvbnNvbGU= IkA= dm9sdA== LnNlbGw= IE1hY3k= IG1lbG9k IGltw6FnZW5lcw== X2NoZw== IGlub3V0 aWRlbnRl KScpLAo= ZG5p LmJsb2I= IHR5cG9ncmFwaHk= IGVlcmll X09JRA== cGVzYW4= YWphbg== IGNob3BwaW5n IGJsdWZm YWRm X2Jhc2Vz LkZvcm1hdHRlcg== IFwl IFBhZ2VJbmZv Q2Fycmllcg== IENhbGlicmF0aW9u Y29tbw== LWJvZGllZA== IGZpbmFuY2llcg== IElOQQ== LkVSUg== IGhvb2RpZQ== IFNhbml0eQ== Z3VhcmRlZA== Lm9wZW5kYXlsaWdodA== SVNNQVRDSA== SGlnaGxpZ2h0cw== w7xuaw== YW5pZW0= YW5nZXJlZA== YXNzaWdubWVudHM= IHJlZ2lzdHJhZG8= IFVQUEVS YW1waWxrYW4= YXNoaXJl IE5pa29sYQ== IENGTA== IEhEQw== IHBvaWRz IElQcw== IHByZXZlbnRhdGl2ZQ== aXBzb2lk aWZpeA== LmNhbWVs Lmdh Vm9sdW1lcw== LXN0ZQ== WWFob28= X3NpYmxpbmc= SGlnaGVzdA== b3B0Z3JvdXA= IGt2aW5uYQ== 4oCd44CCCgo= IEFwcGxpYW5jZXM= ICI+PA== JykiKQo= aHR0 IElkZW50aWZpZWQ= IHBlbmNpbHM= IG1lbWJlcklk IGFwcGVuZFN0cmluZw== LmxvYWREYXRh IG1vY2tNdmM= IGp1Yg== IFNsdXQ= IFRhaXBlaQ== c3RhdHQ= UG9saXQ= IHBhcnRhZ2Vy RGlkQ2hhbmdl SW5jcmVhc2Vz KX0u IEJhYmE= X0NMSVA= W3VuaXQ= INC60LvRjtGH IGFsY3VuaQ== IExvbGE= IGNsaW5naW5n QFBvc3RNYXBwaW5n KGNvbmNhdA== IHNzaWQ= IEZhdWM= b2tpdA== IFJlY29yZGVk w6FsZXo= KCQoJzw= LmFzc2VydElzTm90 IGthbGk= Vm9sdA== IHdhcm1seQ== IHNjYXJlcw== Z2V0dGk= ZsO8aHJ0 X2RvZXM= LkVNQUlM aW1hdGlvbnM= IHNwcmluZ2ZveA== IERlY29t YXJjeQ== IGdsaXRjaGVz IE1vZmY= IFZvbGw= LmJldHdlZW4= IGNvb3JkZW4= IFBhcnRpY3VsYXJseQ== R0JQ IHNlbWJsZQ== RWFzdGVybg== X01TQg== XSl7DQo= bW9yZ2Fu IEVWQUw= ZGVyZQ== SE9VU0U= bW9pcmU= aXN0aXF1ZQ== X2xzdG0= LWNvbW1pdA== eXN0ZXJpb3Vz IHR3aW5r LXRodW1ibmFpbHM= ZW7DrQ== OicnLA== IGJsYWNrb3V0 IEZsb29ycw== IHNvZmFz IG91aQ== bGVzaG9vdA== IFJhcQ== LWFicw== IGtyYQ== TWluaW5n c2hhZnQ= LnNldENvbHVtbnM= Q2xheno= UFJFVFRZ LnBsYXlsaXN0 6Zai LVNhaGFyYW4= TUlORw== CWJs 6K6u amY= RE9DS0VS aG9wZWZ1bGx5 KGlnbm9yZQ== IFVzZXJzQ29udHJvbGxlcg== IE1pdGFyYmVpdGVy IExFUw== SGFtaWx0b24= LW1ldGFkYXRh IEtL aWt0aWc= IHdvbGx0ZQ== ZWdyYXRvcg== XWJvb2w= LGN1cnJlbnQ= IHZhbHVlVHlwZQ== IGV4Y2F2YXRpb24= b2xhbmQ= IHZlcnY= L2ZpbGVwYXRo QXV0aFByb3ZpZGVy IHByb2NyYXN0 CVVMT05H X01FTUJFUlM= IHVwbGlmdA== IEF1dG9ub21vdXM= IGFydHdvcmtz IE91dHJlYWNo IHBvcmU= SG9tZXBhZ2U= RGlhbG9nVGl0bGU= IEdlbmVyYXRpbmc= UEFSU0U= IHNlbWFuYXM= IGh1bWFubw== SlNHbG9iYWxTY29wZQ== IHZvbHRl IGJlbGxh KGlzaW5zdGFuY2U= IHBsYw== XENhdGFsb2c= IGVzdGVlbWVk 6Zu3 KHN1ZmZpeA== IHN3ZWVwcw== CU9SREVS IGRvaXZlbnQ= IFN3YXJt IENvbXBpbGVk Z2V0UGFnZQ== QURS LlJpY2hUZXh0Qm94 IE5hbWluZw== YWdnZWQ= IEdBTkc= cmFzaW5n b2RlbGVk IGdhbGE= IEpTTmFtZQ== ZGRm IGlsbHVzdA== IExhbnNpbmc= W3BvcnQ= LWRlYXRo IGRpbmhlaXJv IEVpZ2h0aA== IGJpYW4= c3TDpQ== IHZlcnNpw7Nu IExpbmVhckdyYWRpZW50 IEhhcmRpbmc= Liop ZWN6eQ== JGhlYWRlcg== IHbDpXI= VW5jaGVja2Vk IGtvamU= IFBhbGFkaW4= KCkpKSw= R2l2aW5n KCl9KQo= IGRpcHM= RnJpZW5kbHk= IHBvcnRyYXlz IGhlbGl1bQ== IGluc3VyZ2VuY3k= X2V4cGlyeQ== IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5n IGFhbnRhbA== c2xvcGU= bWFzdA== LmdldEludGVnZXI= ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== X1BJUEVMSU5F IGRlbnNlbHk= IG11dGF0aW5n bWlkaQ== IFNlaXQ= YXluZQ== Tk9XTEVE IERlc21vbmQ= IEZOYW1l IE5haXJvYmk= XENvbnRleHQ= IGNhbGN1bGFy LWRlbg== IGNvdHQ= XSk6DQo= IFJlY29tbWVuZGF0aW9u IFJvbGV4 IHZhbGlkYXRpb25SZXN1bHQ= LnBhdA== IG7DoHk= IFJlc3RDbGllbnQ= IEdQSQ== IEFzaGV2aWxsZQ== IE9TUA== IFBFUk1JU1NJT04= 0JTQsNGC0LA= L25vdGlmaWNhdGlvbg== S25pZ2h0 X1dvcmQ= IEJlbmRlcg== cmFua2luZw== IHBhcnRpZGE= X3Jlc2VydmF0aW9u zIA= IG1OYW1l IGdldGNo IGJvcnI= IGRpbGlnZW50 RGlzY3Vzcw== 5q2j5Zyo YXBlYWtl aW9uZWQ= LU5hemk= LmN1bQ== IEtyb24= PSQoJyM= L3NpbmdsZQ== IGVyb3Rpc2No IFZpYg== IHJhdGlmaWVk IGNvbmNlcnRlZA== IFJFR0FSRA== IGRvYnI= LkRyaXZlck1hbmFnZXI= J3I= UG9ydGFibGU= CXN1aXRl IHJlbGFjaW9uZXM= IERvcA== ZW1wbG9p RE9C IGNydW1icw== IHhscw== X0FwcGxpY2F0aW9u KCc6Jyw= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= bXNl IGJlcms= IFJldHVyblZhbHVl IEJlbGx5 IGNhbWFy IFBlZWs= ZWxzaW5n IG5vdGlmaWVz IFRyaXN0YW4= IEdBUg== ZW1tZQ== IEVsZXZhdGVk X0NTVg== KGNoYWxr IHR3ZW50aWVz IFNlYXJjaFJlc3VsdA== PXNlYXJjaA== IE1peGluZw== w710 IHJlY3J1aXRlcg== IElERU9HUkFQSA== IEFnbw== KE9wZXJhdGlvbg== JHZhbHVlcw== IHdvcmxkbHk= IFJvc2VuYmVyZw== IENvbmZpZ3VyZVNlcnZpY2Vz Pio8Lw== S0FOSkk= IGNodWNrbGVk IHN0cmlmZQ== IEJvbWJheQ== IEJBQ0tHUk9VTkQ= ZXRhdA== ZW51bWVyYXRvcg== IHPDu3I= IOOBrg== X3BlZGlkbw== L0Rr IGplYW4= X0NvbHVtbg== IGhlYXRtYXA= LlBlbmRpbmc= IHVuc3VjY2Vzc2Z1bGx5 CWVw IHNpbmZ1bA== IEFudG9ueQ== X0ZPQ1VT VGV4dExhYmVs X3JlYWN0aW9u IElEaXJlY3Q= IGNhcm5pdg== V29ya3NoZWV0 IHN1ZWRl CVJUQ1Q= IHNldGJhY2tz LnVuYmluZA== IHNpw6g= TGlxdWlk X1JFTkRFUkVS TWF0ZQ== IE1pbGxlbm5pYWxz IGVwb3h5 aXp6aW5lc3M= IGJyYXppbA== 0L7RgdGC0Yw= JnZpZXc= L2dwaW8= SmFtaWU= LkdyYXZpdHk= PSIuJF8= IFZBTg== IElEUg== YXBwZWFyYW5jZQ== LlNlbGVuaXVt TGVhcA== LlJlbGF0aXZlTGF5b3V0 U2lnbmFscw== QWNjZWxlcmF0aW9u CUhBTkRMRQ== L09wZW4= IGdldExvZ2dlcg== U3Bp LXdyaXRpbmc= INCy0YvQtw== LXdvcnRoeQ== IHdjcw== IFFUaW1lcg== IFBvbHltZXI= IHZhbnQ= CURlbGV0ZQ== aXR0ZQ== V2hpbHN0 IGFsZ3Vt IHNoaWVsZGluZw== IGttcw== CSAgICAJCQk= TWV0ZW9y IGFnZ3JlZ2F0b3I= IFNpbmQ= SG9zdEV4Y2VwdGlvbg== PScnLAo= IEpTQnJhY2tldEFjY2Vzcw== T05P X0J1aWxk IHN0cmlwcGVy IExK PENvbXBvbmVudA== L3NvdXJjZXM= IGVyZ29ub21pYw== IEFjY3JlZA== dW5jZQ== b25pcw== emVpZ3Q= IFNrYXRl IFJlY3RUcmFuc2Zvcm0= SW5jb21wbGV0ZQ== IGluZ2VuaW91cw== IGNvaXNh IGNpdHlOYW1l aGFiaXQ= X1RW IEFOU1c= Li4uIj4K IHNub3Jr X29wYWNpdHk= IGluaXRXaXRoTmliTmFtZQ== aWFkbw== QUFD IF0pLg== O3o= X3BhcmFncmFwaA== IG5vc2Vz c3RhbmRz aWZy X21F SXJhcQ== LlByZWRpY2F0ZQ== ZW5haXJl XV1dOwo= IHVuaWRhZA== IHJldGlyZWVz X2hlbGxv IG1vZGVsZQ== IFVJVGFibGVWaWV3Q29udHJvbGxlcg== ZndyaXRl X251bWVybw== X3Zpc2l0ZWQ= IHJlY2ViZQ== KE5vdGlmaWNhdGlvbg== RmFudGFzdGlj X3N1Ym1lbnU= IFBFTQ== IEN1cGVydGlubw== YXBwcm94aW1hdGVseQ== Y2xhc3NlZA== LlJlYWRTdHJpbmc= IGRvbWljaWxl X1BX IGJhbGxwYXJr IEthbGU= Y29udHJh X2Zhdm9yaXRl L29m UXVpdGU= IE9UQQ== IGFjY2VsZXJvbWV0ZXI= ZGlkbg== fF4= IFJvaGluZ3lh aXZpY3Jt YW5uYWJpbg== 0L7QsdGL0YLQuA== b3JhZG8= Jykr SGF1bnRlZA== LElE KFVJQWxlcnRBY3Rpb24= dXJ2 X2JlbA== IE1leGljYW5z L3Rlcm1z IFBhaW50ZXI= SW5wdXRMYWJlbA== IFZpbmNp IFJvc2ll XHVj PE1lbnU= IGNvb2xhbnQ= KGN1cnJlbnRVc2Vy X2R1YWw= KSJ9LAo= JnA= IGNvbnZlcmdlZA== IHJlc3RyYWlu IFl1Z29zbGF2aWE= PXRhcmdldA== IGltcHVscw== ZHNh U2VhcmNoVHJlZQ== IGhib3g= IEltcHJlc3M= wqfDgw== Z2V0RnVsbFllYXI= KGRh IFlZUw== LmFsaWdubWVudA== LkdldFRleHQ= LnRva2VuaXpl IE9seW1wdXM= IG11cmt5 b3Jlc3RhdGlvbg== IGRpc3NhdGlzZmFjdGlvbg== CVRBcnJheQ== X2tzZXM= LkFkZFNpbmdsZXRvbg== IFN0YXJ0VGltZQ== IGZhbmF0aWM= ICAgICAgICAgICAgICAgICAgICAJ IGVudGl0eVR5cGU= Lm92ZXJyaWRl IC0tLS0tLS0tLS0tLS0= IERhdGFncmFt Zm91dA== KHdpdGhJZA== ICNfXw== n+iDvQ== ZWt5bGw= LmZyaWVuZHM= YW1lbGVvbg== IHphY2g= LnNpbXBsZUJ1dHRvbg== cmV0b3Jubw== IGtvbms= L3NtYWxs IFF1aWNrbHk= dW5yZWFk RG9uYXRl RGV0YWlsVmlldw== IGR1YQ== IHBlbmV0cmF0ZWQ= T01VWA== IG5pcg== X3BkYXRh Il0sWyI= IGxvd2Vz IGRvcGluZw== IGFzeW1tZXRyaWM= IG5lZWRsZXNz b3VyY2Vt IHVwcm8= IEd1enpsZQ== YWZi IHNleHRyZWZmZW4= LWNvbGxhcg== IGNvbG9zc2Fs TW9ua2V5 bmlzaA== IGhhbmRsZU1lc3NhZ2U= SW5jcmVhc2Vk KmR4 IENoYXR0YW5vb2dh Zm9yZw== IE9yZGVu IHNocmk= IFZhbmQ= ICJAIg== SW1hZ2VTaGFycA== IFdpbGRjYXRz cG9uaWJsZQ== LnNjZW5lcw== IHBhaW50ZXJz IFBmaXplcg== IFphaA== VG9Mb2NhbA== IEZsYW0= IMOpdGFpZW50 KSle IFNhbmRib3g= IFRSQURF IGNocm9taXVt IGFjY2xhaW0= IHBhY21hbg== wrR0 KXJlYWRlcg== TWFyaQ== LkRpc3BhdGNoZXI= LkFETUlO IFJlbWVk U3dlZGVu IG92ZXJsYXlz LmVy IHBhbmc= IGNsZWFubHk= YXZlbnBvcnQ= VG95b3Rh cGF0Y2hlcw== IHZ0eA== IEVpcw== Y2xhZG8= IFJpdGNo Uk9MUw== IGhhZGU= IGNvbnNwaWN1b3Vz IGRvY2tz KGpx IFByZW1pZXJzaGlw IEJleg== IOKElg== INGD0YHQuw== X3RvdGFscw== IHByb3Zh IEN1ZQ== IHNhw7pkZQ== IEdhbWVDb250cm9sbGVy SU1JWkU= LHBvcnQ= 44CCKA== LkNkZWNs SW5zdGFudGlhdGlvbkV4Y2VwdGlvbg== IGNvbGxhZ2U= IElPQw== IGJhaXM= IG9uRmluaXNo LXN0YXJz c2V0U2l6ZQ== IG1vZ3Vs IGRpc2lsbHVzaW9u IGNoZXZ5 KFNjaGVkdWxlcnM= KElS X2xvY3M= IGNhbm5vbnM= IGNhbmNlbGxpbmc= L2J1cw== IGJ1Zmlv IFlvdXJz IFBpa2FjaHU= IHRlcm1l csOl ZmFocmVu IG93bmVySWQ= IG9ibGlnYXRvcnk= IGN1bHA= IGFjaWRpdHk= LW11bHQ= IEJhbWJvbw== ICciPg== X2dz IGNvbXBpbA== bmFyZA== LWV4Yw== IHJoeW1l IGJ1dHRv c2F5cw== YW50YXN5 67g= IGNpdHTDoA== IGNoZWc= VGltZVN0cmluZw== IHBvc2l0aXZpdHk= IERhYmVp IHdhbmc= IGVzY3Jl ImM= CXZpZGVv IFJhbmtlZA== LnN0cmluZ3M= Pj4+KA== INC40L3RgtC10YA= IHJlc3Rh WzosOg== IHJlbmRyZQ== IGRlc2Vy Sm9z IGRpc3J1cHRpb25z INC+0L/QtdGA c2FtcGxpbmc= c3VwcHJlc3M= IGNvbnRhaW5lclZpZXc= IFNlYW1sZXNz IGFpcnk= IG9ubG9hZA== LldpbmRvd01hbmFnZXI= IFBMQQ== YnJhY28= LnNldFBvc2l0aXZlQnV0dG9u IHBkdQ== IGdzaQ== IENsaQ== X2dyYWRpZW50cw== 0Y/QtA== IFdoaXNwZXI= Y3N0ZGludA== IGzDpG5n IGZvcm11bGF0aW9ucw== w6lub20= b3VybmVtb3V0aA== WyRf IG9yZGluYXJpbHk= LnNldFVzZXJuYW1l IGZhY3VsdGllcw== TUlUVEVE L3ZhbHVlcw== IHdlaXI= IEFwdA== TVo= CWNm dWNrZW4= CQkJCQkJCQkJCQkJCQkJCQkJCQk= ZGVmZW5zZQ== W2lWYXI= IEJ1c2luZXNzRXhjZXB0aW9u U2VsZWN0b3Jz KGNvb3JkaW5hdGVz IFJlc2V0cw== IERyaW5rcw== b2xlYW5z KHN0eXB5 X0lPQw== Lnh4eA== IFNsYXRlcg== IEJlbGl6ZQ== IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= YWRkaW4= X2VwaXNvZGVz IGlzY2hlbQ== bGVnYWxBcmd1bWVudEV4Y2VwdGlvbg== RGFubnk= IHBhcmVk LmNvZGVoYXVz IEFzc3k= CVJlY3Q= 4p4= Lmxpc3Rh INCy0LDRiA== IHZldHM= SFdORA== aXNvbmVy IHhv IG9yYWxseQ== IFN0bXQ= LnJubg== IERQSQ== IFN0cmlrZXM= LnNldFZpZXdwb3J0Vmlldw== IOiHquWKqOeUn+aIkA== WUVMTE9X R0xlbnVt cGFydG5lcnM= IEltcGxpY2l0 IHRha28= 4oCZZWxsZQ== IGVybcO2Zw== dG90YWxDb3VudA== R2ls CXdvcms= IHByYXRpYw== aW5hdGk= YWJpZXM= IFNraW5uZXI= IHNwaXJpdGVk IHBhbmNyZWF0aWM= IGhkZg== J2Vt IHBzeWNob3Npcw== b2xpY2l0 ICJ7Ig== X2F0dWFs IMOpbGVjdA== VEVBTQ== IGRhaw== IFNXQVQ= LkZyYWdtZW50TWFuYWdlcg== IHByb3Zpc2lvbmluZw== bGlmZXRpbWU= X0VYVEVOU0lPTlM= IENBU0NBREU= ICFb KEtQ IHZlbQ== IEludGVycmFjaWFs J119LAo= c3BhY2Vy X2t2 V2FyZWhvdXNl UkRE X2ZzbQ== LlN0cmV0Y2hJbWFnZQ== LFllcw== IFJlZnVnZWU= IEJyaW5naW5n IHbDoWxpZG8= LmludGVyc2VjdGlvbg== IHNwb29reQ== X3BvcnRhbA== IG1vdGg= IFpvZGlhYw== IFNPQ0lBTA== TWltZVR5cGU= J119fTwv IHJlc2l6YWJsZQ== 5Lqb KHBoYXNl KG1hcHBlZEJ5 IG11bmRpYWw= IGNvbnZv L2xlZnQ= L2RvY3VtZW50cw== d2FzaGluZw== IEFtw6lyaWNh X3F1b3Rh LnBvc3Rlcg== J10iKTsK IHN0ZWxsdA== IERJU0NMQUlNRVI= W29wdA== IGVkcw== IFJhY2Vz dmVudGFz IHB6 IENhcGFj IFVzZXJEYW8= aXRlc3Q= UHJvdmVlZG9y IFNob3RndW4= IHRoaXJzdHk= IEJhbGFuY2Vk aXF1ZXRh IGhlYWxlcg== LyIp LlNkaw== IHRlcnQ= ImRhdGE= X3Byb3ZpbmNl LkF1dG9tYXRpb24= IGZvbnRXaXRoTmFtZQ== X0FOVA== 55WM b29kbGVz IFJFUFJFU0VOVA== X0dQUw== IHBlcnN1YXNpb24= IERpc2N1c3Npb25z IGZyZWQ= TkVH OmJvcmRlcg== CWluaXRpYWxpemU= CWdsb2c= LWNhcGl0YWw= IEltVmVj IGRldmlz Q2FuZGlkYXRlcw== LmFuaW1hdGlvbnM= IHJhZ2F6emk= IFByb21ldGhldXM= IEtpZGQ= IHByb2dyYW1tYQ== Q2VydGlmaWNhdGVz Q29udGE= LmVzcHJlc3Nv IOuQmA== IGJlaWRl 6ZmG LmdldFJhdw== IEZ1bGxOYW1l IGlhbQ== KCopKA== bWFpZHM= Qkg= IENvbnNwaXJhY3k= X0RV IGJsYXRhbnRseQ== IFx8 IFdpZw== IENvbmo= UmVuZGVyaW5nQ29udGV4dA== TWl0Y2g= IGFsbGVsZXM= IOazqOaEjw== IHJpbXM= IE5laWdoYm9y IEt5bGll LnBhcnR5 dG9ycw== IOyhsO2ajA== IHdlcw== IENyYWZ0aW5n WyIu LnNwb25nZQ== IOqx SXNsYW1pYw== IHByb3NlY3V0aW5n IHdpaw== Lm9zZ2k= b25pbmdlbg== R3JhbW1hcg== J2lt IGF4aWFs Q2xlYW5pbmc= LmdldEV4dGVybmFsU3RvcmFnZQ== PS4v IGNocm9tYXQ= 0LXRhQ== YWJheQ== IGJvbGE= LkFnZ3Jlc3NpdmU= J10sJF8= aXphY2Fv UHJlcGFyaW5n OkFueQ== LkVOVEVS LXdpbmRvd3M= IGVucmFnZWQ= X2RpY2U= IGRldHRh ZWNhbA== X09SSUdJTg== IC0tLS0tLT4= X0JsdWU= IGJvdGFuaWNhbA== IGZyYWdz IGZhbWlsaWFs LWR1 IHNlaXppbmc= KGJsb2Nrcw== LnJk LmNoZWNrTm90TnVsbA== IG1pc2Vy IG1heHg= IEtuZWU= Vmlld0l0ZW0= SW5uZXJIVE1M RGFuZ2Vy KChfXw== IHByenlwYWQ= Y3JlYXRlVXJs Kios IERlY29yYXRpbmc= QVRFR1k= Pz4v LkRlc2lnbmVy aGV4ZGlnZXN0 IEV2ZXJ5d2hlcmU= YWxsZXJpZXM= LlRFWFRVUkU= LkJsb2Nrcw== emVsbA== IHByZcOnbw== U3VkZGVubHk= aW5wdXRFbWFpbA== KHN5bmM= LmJk Z29sZGVu PicpOw== IERpY2tpbnNvbg== Pj4oCg== IFFVRVVF IGdldENvbHVtbg== IFNBTkQ= LnBpZWNl bGljZXI= Rmx1dHRlcg== IGdldFZlcnNpb24= IHJlc291cmNlSWQ= b2ds xYJhdw== LkJyYW5jaA== CXdlYg== IGZyYW1lcmF0ZQ== UFBQ IGZyYXk= Q05U IGluZm9ybWF0aWU= J10NCg0K bmVhcw== SGVhZGVyQ29kZQ== IOa4 IHRyZw== cmF3dHlwZXM= SG9uZGE= IG1hcmtldGVy IHJlcXVlc3REYXRh IFBn CW5vdA== IHBhZ2VJbmZv IGFrdHVlbGxlbg== 44GV44KT IEFNUw== cHVzaFZpZXdDb250cm9sbGVy CUFM IHZlc3Rz cHJvZHVjZQ== LW3Dqm1l IFJhaG1hbg== RnVubnk= RVo= X1ZhbGlk IHNxdWFkcm9u IGxhc2g= IGlybQ== aWFzY28= IFBhcmFu IHBldGl0ZXM= IERlY2F5 IHVuaW5pdGlhbGl6ZWQ= cHJpdmlsZWdlZA== IG1iZWR0bHM= 5aSH5rOo IF4u IGVjc3RhdGlj RGV0cm9pdA== IHBhcnRlbg== IHNvdXZlbmly LmdldExvZ2lu 0LzQvtGC0YA= ZW7Dp8Ojbw== IG3DrW5pbW8= IEFjY2Vzc2Vk cmnDsw== TWlj IFZvY2Fs LlNldFN0cmluZw== IG1lbnNhamVz 5YCN IGF0dHJhdmVycw== IEFwaA== ICcpOw0K w7xuZGU= IGVuY2hhbnRlZA== IFJvb3RTdGF0ZQ== IENMT1NFRA== CQkJCQkJCQkNCg== IGNhbGllbnRl b3JyaXM= IHBoeXNpY2lzdHM= aHduZA== X3Zp IHLDoXBpZG8= IGNhcGl0YWxpemVk ZWRCeQ== IG1hY2hpbmluZw== IGh1YmJ5 IFN0YWN5 LkJ1cw== ZHJpbms= SHVy IHByb3BpYQ== VW5pdFRlc3Q= IG1pc2NvbmNlcHRpb24= X18pKTsK L2Rj IE1heXdlYXRoZXI= X21D LmNyZWF0ZUZyb20= IFFQYWludGVy cm9wc3ljaA== aW5uaXR1cw== YXlhcw== IGdlZw== KGR3 IHVzYWRv IHRyaWNrbGU= IGFubmloaWw= IFBhc3Rh ICsrCg== KEV4cGVjdGVkQ29uZGl0aW9ucw== LnBvc3RWYWx1ZQ== aWNhcA== IERvbmV0c2s= X3NvdXA= LXB1Ymxpc2g= IFBi bWVudGlvbnM= QUNDRVBU LlB1bGw= LOKAmeKAmQ== IHJldGFyZGVk X0FUT00= IFRlcm1pbmF0b3I= LWNvdXJ0 IENMTG9jYXRpb25Db29yZGluYXRl IHJldmVyZW5jZQ== IFNTQw== dXRlbHk= IFdPTg== IEdTTA== ZnJlaQ== LmdldExvbmdpdHVkZQ== IG9wZW5GaWxlRGlhbG9n LkJ1dHRlcg== LWltcG9ydGFudA== X01BTlk= IEdvbmc= 4oCcSG93 IGdvcmdl PW1zZw== IEV6ZWs= Y3JlYXRlQ29tbWFuZA== OmNoZWNrZWQ= IGluZm9ncmFwaGlj LldFU1Q= RGlycw== IGd1YXJkYQ== IGJlZXRsZQ== PHNtYWxs LWFuZHJvaWQ= IGNyZWRpdG9y IE3DqWQ= IGZpbmFsaXN0 IGFibA== bmV2 X2ludGVyYWN0aW9u IE1vbnRlcmV5 amFo IGNhbmRpZXM= IFF1aW5jeQ== 6Kqt IGJhdGNoU2l6ZQ== YWtpdA== IG9iZQ== KHBhcmE= IGV4cGVyaW1lbnRlZA== IGNvdW5jaWxsb3Jz IGNsYXNoZWQ= c3F1 LXN0cm9rZXM= IEdL IEV4cGlyZXM= IHByb3NlY3V0aW9ucw== IENyZWF0dXJlcw== IHnDtg== eGxpbQ== X0lNUA== RW50cnlQb2ludA== ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= LkRlZmF1bHRDZWxsU3R5bGU= IGJyZXZl IEJyaXRhbm4= IHN3ZWF0eQ== IGxldGg= IGZsYXNoYmFjaw== cGVybWFuZW50 IEpESw== X0RldGFpbHM= RXVybw== cHB0 IHJpY2hUZXh0Qm94 L2JvYXJk IHRyYW5jZQ== LmN5Y2xl Jyk7Iik7Cg== IHRveGlu X2RlaW5pdA== IG92ZXJhcmNoaW5n IGNvbmZpZ3BhcnNlcg== IEthd2FzYWtp LnRodW1i IHBsYXlh IEpvc2Vm K18= IHplcm9lcw== IGF1cA== IEhhcmk= Y29tbWl0dGVk Tml0 LmZpbGVQYXRo IERpc2FiaWxpdGllcw== bWFudWZhY3Q= LWFsaWduZWQ= LlJFU0VU IHJ1c3R5 RXk= IG91c3RlZA== Y29zYQ== U3RydWN0dXJlZA== LmdldEQ= IHPDoWJhZG8= PkxvYWRpbmc= X21B LmdldFJhbmRvbQ== Ymxpbmdz IGNoZWVzZXM= dHRp LuKAog== IEJ1cmdlc3M= ZW5kZXJpdA== LicsDQo= KCIiKw== YWNi JXA= aW5kZXhlZA== X3ByZWRpY2F0ZQ== bmVzaWE= IGJpZWQ= IENJVA== KFBvcw== X3JhZGk= 5Lu35qC8 Qml6 IEFkb2xlc2NlbnQ= IHZpw6pu Y3ljbA== X0NhbmNlbA== IGNvbmNsdXNpdmU= IGFwcGVsbGF0ZQ== aW5mb3JtYXRpY3M= U0o= IGVsZWN0aXZl cm9sZUlk RmV0Y2hlcg== CUNvbW1hbmQ= KCIoJQ== IGZhcnQ= SUxB Z2V0QmxvY2s= QVVTRQ== INC00LDQvQ== IEFydGU= IG5vdGlmeWluZw== IGdlbGU= LnNhbWU= IFJlZ2Vs IEJhxZ8= LmNyZWF0aW9u IFZO X2NvbW11bml0eQ== IHVuc3VzdGFpbmFibGU= U0VY IGdyaWRTaXpl cmVzY2lh YXZlcnNhYmxl KCcsJylb IFBoZWxwcw== 4buVaQ== QU5DRUxFRA== LUlT LnJ1bm5lcnM= IFN0b2tlcw== LlByb2R1 IHdoaXBwaW5n X2FjcXVpcmU= IGludmVzdGlnYWNpw7Nu ZnJpZWQ= LmNvcHlXaXRo IEhhcmRjb3Zlcg== LVNl 4Z624Z4= aW52aXRhdGlvbg== bGVzYWk= IERvcm0= INGB0L/QuNGB0LrQsA== IGNvbmNhdGVuYXRlZA== b3BoaWw= IHRoaW5rZXI= L2ZvbnRhd2Vzb21l IExlb3BhcmQ= ICIvIik7Cg== IHJlc2lkdWFscw== IE1pY3Jvd2F2ZQ== IGNvbmZvcm1l dGhyb3A= IGRpc2VtYg== IE9NRw== IERpc2NpcGxpbmU= IEFjcm9iYXQ= L3JlcG9zaXRvcnk= ZGZh X01FRA== YnVmaW8= IG3DqXRob2Rl X0hPTEQ= aWFzaQ== X2xlZ2FjeQ== KQ0NCg== 5qOA R2V0UHJvY0FkZHJlc3M= IHlheQ== b3RlbmNl b3JkZXJpZA== LXR3 IGRlYXJseQ== SW5jb21pbmc= L2ls IG5ldXJvcA== dWN6 KTsNDQ0K IElubm92YXRpdmU= IHByb2Z1bmQ= aWdtYXQ= U2VsZWN0aW9uTW9kZQ== cmVsZXZhbnQ= LkdP IGJydWlzZXM= IHNhY2g= b2RlZg== IHJlaW1i L2Rlc2t0b3A= LXNwb3Q= dW5kYW5jZQ== RW50cm9weQ== XGNvcmU= IHN1Z2Vy IE12Yw== IEdOT01F X2luZHg= IFlZU1RZUEU= IE1hdGxhYg== IENJRg== ICopKQ== IHByb2R1Y3RMaXN0 IEFscmlnaHQ= YWNlbWFyaw== 0YLQuNCy bW9kaWZpY2F0aW9u aW50ZXJuYXRpb25hbA== IGhvbWVycw== IGRpY3Rz IFFGb250 LlNRTGl0ZQ== IHRyYW5zcGxhbnRhdGlvbg== IE1lc3NhZ2VCb3hCdXR0b24= IEVsdmVz J11dKQo= KFFJY29u IGNpbmVtYXM= Q09PUkQ= LUNoaW5h IGto4bqpdQ== 5oiR55qE IHNrdWxscw== IHBhaW5zdGFraW5n ZmNl LlhSTGFiZWw= IHNwZWNpZmllcg== IHByZWZlcnJpbmc= L2FjdGl2aXR5 KFBob3Rv w6FsdA== LmxvdA== Jycu YW5ub25jZQ== Lmdvb2dsZWNvZGU= LXBkZg== IFBva2U= X0FDTA== IGVuZG93ZWQ= ZGlzY292ZXI= Lm9tZw== IHdvb2RsYW5k Lk1hZ2lj IHZvbG9udA== Tm90QWxsb3dlZA== IGNoYXZl Qk1X JywnPScs IFNJWA== 5oiR5Lus IGtvc2hlcg== IGFzcGlyYXRpb24= aW50bA== X3JlZnB0cg== JysK bWVudG9y LmNsdWI= V2luZG93U3RhdGU= LkFSUg== IHp6YQ== IG1lc3NhZ2VUeXBl LmVxdQ== VGhvcg== IGluanVzdA== IGd1bXM= IGJvcmRlclNpZGU= Ly8vLy8= IFRyYW5zbWl0 IGJ1ZnNpemU= IGhhaw== IGVsbGFz UkFORE9N CW1j IHBlYQ== ZWtv ZG9jdW1lbnRv IGh5c3Rlcmlh IGFyZW5hcw== IGd1bm1lbg== IG1pa2U= IGltcHVuaXR5 YXRpc2F0aW9u X1plcm8= X0NPTVBBTlk= IEdvcnM= IHVzZUNsYXNz KHJlZGlz IFJVTk5JTkc= IEJhaXI= dmVsdGU= ICcsJy4= 0LDRgtGM0YHRjw== w7ZzdA== ZW5jb2RlVVJJQ29tcG9uZW50 X3Jlc3RyaWN0 IGRlY2Fscw== IFBlZGlkbw== IGFsdGVyY2F0aW9u RGlzcGxheXM= IEFwcGxpY2FudHM= Q1VT VGV4dGFyZWE= IEFuZ29sYQ== LmZ1dHVyZQ== IFVTSE9SVA== IHN1cHByZXNzaW5n IHNldHplbg== QVBvbHlub21pYWw= IHRvY2g= IGhhbGxtYXJr ICQkJA== IENIQVJTRVQ= LnJwbQ== IERpY2g= LS0tLS0tLS0tLS0tLS0tLS0tLS0= X3Bhcm0= 6L+Y YWNjaW9uZXM= aGFpdA== V0FSREVE X3JvdXRpbmc= IE5PTQ== IGVuY2xhdmU= IExvdHRv CWZy Y29tcGxleENvbnRlbnQ= IEJhbGxhcmQ= a3ViZQ== L3dpbg== LmdldENvbHVtbk1vZGVs X1JFUExBQ0U= SGVhZGVyVmFsdWU= IGVzdHVkaWFudGVz IGFwaXM= IGJwbQ== IFR5cGVOYW1l QW5kR2V0 cml0YQ== UGxhbnM= Pk5vdGU= IGZldGlzY2g= IHRvbmVk X2dvdG8= b25zZW5zZQ== IG1vbGRz IGluZmlsdHJhdGlvbg== IEd1ZXJyZXJv dWJibw== Y2tp KCQoIi4= X2FjdGl2aXRpZXM= KGNoYW5nZXM= IG9mQXBw IEtlcGxlcg== IERlbXA= IENvbnRpbmVudA== LlRpY2tz IFVuc2lnbmVk IEphaHJlcw== IGZyZXNobWVu IEFyY2hpdmVk INC60L7RgtC+0YDRi9C5 ICc6Og== VHV0b3JpYWw= Q2M= IHRhYmxlTGF5b3V0UGFuZWw= ZnJvbUpzb24= LmxldmVscw== X3RyYW5zaWVudA== IGVuZG9yc2luZw== IERJQw== bGF1Zg== IHNocmVk X0VNSVQ= aWZpY2FudGx5 QUxB L3Byb3Rv IG5hcnJvd2luZw== VXRj RmFjdG9ycw== IHNlbnRpZW50 5p6Q bGl4aXI= IENST1NT bWV0ZW9y IGdyb2lu IG1kYg== IFJvdHRlcmRhbQ== IGNvbWlkYQ== IE9wQ29kZQ== IERlZmF1bHRWYWx1ZQ== UGVybWlzc2lvbnNSZXN1bHQ= IGhldGVyb2dlbmVvdXM= IG1vb3Q= IGRlY2VpdmVk LWluZGVwZW5kZW50 IE9iamVjdE91dHB1dFN0cmVhbQ== IG92ZXJwb3dlcg== LmR1cA== IGxkYg== IGRvbWVzdGljYWxseQ== IGJlc3RlbGxlbg== IGxvdg== IENvbnRyYWN0b3Jz VHJpYW5nbGVz IGZvZGRlcg== IGZpbG1lcw== 5LyB IHJldm9sdmVy U3RhcnR1cFNjcmlwdA== L3ZhbGlkYXRpb24= IFJlc291cmNlVHlwZQ== acWf IExheg== ZmVm IGxzdG0= eyo= LmF0dGFjaG1lbnQ= LmhpdHM= ZXdpdGg= RE9H QWxhYmFtYQ== IG1lZGl1bXM= Lm1Db250ZXh0 LWNvbHM= 5Y+L Lm5vdGljZQ== IGF0dG4= IFBhY2tpbmc= IExu X0NPTVBMRVg= L1VzZXJz LnNhdmV0eHQ= IFJvdW5kcw== Pyw/LD8sPyw= IGluZ2w= IFJPQw== X2ZlbWFsZQ== IFN0YXJk XV07 IHdyZXN0bGVycw== IHRvcnJlbnRz IHNpbmg= 77u/Cgo= 67O1 c2Vuc2U= aG93ZXZlcg== LlBoeXNpY3M= SW5mcmFzdHJ1Y3R1cmU= IFNhY3I= RmVs IERJU1RSSUJVVA== w6ltZW50cw== IFZhbGlkYXRlcw== IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IHwv IGVzbA== IHLDqXNlYXU= IEJpcA== QllURVM= X1dBVEVS VHVybmluZw== RUxT IGp1eHRhcA== IGxlc2Jpc2NoZQ== w71jaA== KFVua25vd24= TmVv QEpzb25Qcm9wZXJ0eQ== IGFsdW1ub3M= IFJhcXFh aW1laQ== LmdldEJvdW5kcw== Lk1vdXNlRXZlbnRIYW5kbGVy IyMjIyMjIw== R2VuZXJpY1R5cGU= L2Ntcw== IHR1cm5v INC80LjQvQ== IGZvbGtsb3Jl IEV2bw== IGNvbmR1Y3Rpdml0eQ== IGxlYmVu IGdlYXJib3g= LXZz IM+G IGRyaW5rZXJz IGNvbmV4YW8= IFRlZXRo IGdldEFyZ3VtZW50cw== IFJBVA== ZW50aW91cw== RWR1Yw== K1c= IEluc3RpdHV0aW9uYWw= IEJvcmQ= aXNFcXVhbA== KHB3ZA== IGlnbml0ZWQ= IFJvdXNzZQ== IGltcGFjdGZ1bA== IE1hbGs= IGdlcmFs IFBpdm90 IGF6dA== IGNzdmZpbGU= IFJvcGU= IFNPTFVUSU9O IEFyYml0cmFyeQ== IGxldHRv Lk1vdXNlQWRhcHRlcg== IH19fQ== IFNhaWxvcg== ZGVyYQ== UHV0dGluZw== IGNvbmNlbnRyYXRlcw== IGF1dGhEb21haW4= 4oCd55qE LWZpbmFscw== LHN0cmxlbg== TXVvbg== IE9yZGluYXJ5 ZmlyZWZveA== IExhVGVY IEh1bmQ= ZW5naW5lZXJpbmc= L2JsdWU= ZWRUZXh0Qm94 KCIiKTs= IENEREw= a2VwdA== IEdldFN0cmluZw== S2ly KCk9Jw== IE9DRA== YW50aXVt JG1lbnU= IEFwcGFsYWNoaWFu U2VjcmV0YXJ5 66WY 4Li14Lii U2VtYW50aWM= ICpb ZXN0b25l dW5na2lu TWF4WQ== LXRvbmU= In07DQo= X1BhcnQ= PE1lbWJlcg== dHJhbQ== IHRyYW5zaXN0b3I= IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg== IERlc2Rl IHJpZ2h0ZnVs IENvcm5lbA== 5pE= LkhPVVI= IHNpZGVsaW5lZA== cmVmZXJyZXI= bWF6ZQ== IGhvbHN0ZXI= IGNyaXBwbGVk IERhdGVGb3JtYXR0ZXI= b3BoYWdl X21E IGRlc2VsZWN0 cmF1ZA== IFBLSw== cm93RGF0YQ== IGxvY2tzbWl0aA== LnJlc3BvbnNlcw== KHByb2R1Y3RJZA== X1NUTVQ= S2V5VHlwZQ== LlRoZW4= emVl IGNydA== IEdyYW5kbWE= QFJlc291cmNl IGJpdHdpc2U= LWNtcHI= 44CCd3d3 emVpdGln JmRpc3BsYXk= Q2FydEl0ZW0= LU5v IG51bcOpcm8= IG1hdXI= IGluc3RhbmNpYQ== CWR0 X25wYw== IHNrYXRlYm9hcmQ= 4oCcQWxs IENyb3dk IMOkbg== IGJyYXo= Y2Fl eW5ldA== L3Bt L3NjcmVlbg== T1BUQVJH IFZCb3g= IGxlb3BhcmQ= X2dyZWF0ZXI= Y3B0 PGRk IG1lY2hhbmljYWxseQ== b3NwZWxz KWY= Lmx3amds LmdldFBvcnQ= IFBSRUY= LkFkZFRyYW5zaWVudA== cHBhcmQ= IO2ajA== RXRoZXJuZXQ= IHNhbGluZQ== KGxldmVscw== IHNlcnZpY2VQcm92aWRlcg== LkFuZ2xl YWx0aXR1ZGU= aWxsYXVtZQ== IHNjYXBl X0NBTEM= X3F1ZXN0 IERpc3NlcnRhdGlvbg== IEVETQ== LUNkcw== IGhvbm9yYXJ5 c3RvcHM= IHN1YmRpcg== IFZI IENoZWF0 IHJpZ2h0ZnVsbHk= UUU= LldyaXRlQnl0ZQ== ZmlndXJlcw== ZW5uaWU= KERCRw== IHZva3NuZQ== IGV4cGVuZGVk VU5JQ0FUSU9O aWxpbng= IFJlY2Fw X3ZlcnRz IHRyYXVtYXQ= IGdldFBsYXllcg== IHZlcmJlc3M= IGN1bHRpdmF0aW5n IGluaXRpYXRvcg== VGjDtG5n ZmluZEZpcnN0 X3Blcm1z IGJ1Yw== ICIiIg0KDQo= VFlQRVM= b2JqZWN0TWFuYWdlcg== KENvbmZpZ3VyYXRpb25NYW5hZ2Vy IHRpbWlk IHNuYXBjaGF0 IGNvbnNlZw== CWRpc3RhbmNl X3JpZ2h0cw== X0Rlcw== IEZsZXNo LXZlcg== IGFmbA== ZnJhdWVu IGJsYXNwaA== IFF1YWxpdMOkdA== bWFm TW9uaXRvcmluZw== LkRpZmY= IHNob3JlbGluZQ== IHJlc3BvbnNlQm9keQ== bWVtc2V0 PGRlY2ltYWw= U21hcnR5SGVhZGVyQ29kZQ== IGluc2V0cw== IEJpbmFyeVRyZWU= YW1lZGE= IG5paGls IE5heQ== eW1vbG9neQ== IFdH IHRhcGk= IEluc3RhbGxlZA== bWFpbnRlbmFuY2U= KX0iCg== IFhP LXBlcmlvZA== c2Fy IG5pbmd1bmE= T1JNQVQ= LnNldFByb3RvdHlwZU9m IEti IEhlbnJpaw== w6l0aXF1ZQ== IExhaG9yZQ== CUFkZHJlc3M= IG1lbHRz Tnk= X2FkdmFuY2U= IHZlbG9jaWRhZA== IGFsdW1ubw== IHNhbml0aXplcg== IHBoaXNoaW5n IENvbWV0 IGNoaWFy CXNwZWM= dHJpbW1lZA== KHN0YXRlYXJy b25uZW4= UmV2ZW51ZQ== TGVucw== IGNoYWlyZWQ= IEFzc3VtZXM= VHJhc2g= X3Vuc2V0 XEJyaWRnZQ== UG9pbnRTaXpl IFBvbGlj IHNleHVhbGVz CWRmcw== IFdpZGVTdHJpbmc= IGFjY3J1ZWQ= WVc= X1NDSEVEVUxF IGtpdGU= IHBhcmFjaHV0ZQ== W3RhYmxl IGFjdGl2ZUNsYXNzTmFtZQ== LlF1YWQ= SXNyYWVsaQ== IMWT IGhvb2c= IGNo4buJ ZXdlYXI= IHRpcmVsZXNzbHk= c2V0RXJyb3I= LmdldEFtb3VudA== LnNldEl0ZW1z IE1hbnNvbg== IEJheWVzaWFu X0ZsYWc= QUNIRVI= L29yaWdpbmFs IGltbWFj IExvc2luZw== Jz4KCg== TGlj IE1pcmFnZQ== IEFzc2VtYmx5RmlsZVZlcnNpb24= VGVW IFZhbHVlRXZlbnRMaXN0ZW5lcg== LXNvbHZpbmc= VGhv cm91bGV0dGU= X1dQ IHVuaW50ZXJydXB0ZWQ= IGZpZWxkVHlwZQ== LlR5cGVk IGFtb3Vy IG1vY2tlcnk= KHZvbA== IFN1YmNvbW1pdHRlZQ== IFJ1Zg== ZXJveA== OlVJQnV0dG9uVHlwZUN1c3RvbQ== IEJsdXI= IHd5a29u bmNlcw== QVNIQk9BUkQ= ISEiKTsK IG11cmRlcmVycw== LmRhaWx5 IERJQUc= amluZw== IGRvbHBoaW4= IGzDsm5n IGLDtg== IFZvY2FidWxhcnk= LlN0T2JqZWN0 JykiPg== IHp1bg== IHNjcmltbWFnZQ== dHLDqWFs IExpZw== W3Zp Q29sZQ== IGZyb3N0aW5n LlBsYXllcnM= LXRyYW5zbGF0ZQ== RmVlbHM= PVwiLw== LkJ1dHRlcktuaWZl ID8+Owo= IGF2aQ== aW5uaWU= LkZhaWx1cmU= IHNwaW5kbGU= Q29uZmlndXJhdGlvbkV4Y2VwdGlvbg== X2hvcA== IHBvc2nDp8Ojbw== IEF3YWl0 VUlJbWFnZVBpY2tlckNvbnRyb2xsZXI= CWRheQ== IGdlbm9t Q2Fi INGA0LXQt9GD0LvRjNGC0LDRgg== T1JJR0lOQUw= IGVqYWN1bGF0aW9u KHRjcA== U0VDT05E IHRvbmlj IExpc3RCb3g= IAkJCg== KCk+Cg== IHF1YXRyZQ== xrDhu6NuZw== d2l0aEVycm9ycw== Lk1heWJl LOKApg== dG9rZW5JZA== X1VOREVG IGZyZXNobmVzcw== IEFtZW5kbWVudHM= Lm1hcGJveA== LkNW KGJsb2c= X2dldHRpbWU= LnF1ZXN0 c3BhcnNl IHJlc2FsZQ== IGVudGh1c2lhc3RpY2FsbHk= IFByb3N0aXR1dGFz V2E= Q2FyZ28= LlBhcmNlbGFibGU= U0VOU09S IFJ5dQ== TGF1Z2hz X05hdGl2ZQ== L3Bn eXN0cw== IHBob3RvYw== 566A YWRvcHQ= LnNwZWNpZXM= Y29uY2lsaWF0aW9u QWRqdXN0ZWQ= LkZpcmViYXNlQXV0aA== dXR0bGU= b3JkaW5hdGlvbg== IG11bmNo IFN0YWtl LnBpbmc= YW5rZXI= KFFTdHJpbmdMaXRlcmFs IHN1YnNjcmlwdA== ICAJCg== IE1DQw== X0NtZA== c2V4eQ== aW91 IE1BTlk= IG5hbm55 VFJBSU4= IGZsb3VyaXNoaW5n IFdhdGNoZXM= IFFNYXA= IEZlcm0= IHdhc20= IEFiZWQ= X1VE IEdsYXNzZXM= K3Y= QXR0ZW5k LkNoYWlu IGRlY2VuY3k= IFN1cHBsZW1lbnRhcnk= aHVudGVy LXR4dA== ICJ9IjsK LnNldFdpbmRvd1RpdGxl KCI8Pw== IG51bWJlcldpdGhJbnQ= IGFmYXI= 56e75Yiw cml0dGU= L2xpc3Rz KeKAnQ== IGRpdmVyc2Fz IGVtYmVy LlJlYWN0Tm9kZQ== IGthbmc= IFN0YW1mb3Jk W2F0 LmNsb3NlUGF0aA== IGNvbnRyYWNlcHRpdmU= KGxvY2F0aW9ucw== IGF2YW56 IENvbnRhaW5lcnM= IFNjaG9sYXJz LmFjY3VyYWN5 INCy0YvQv9C+0LvQvQ== 5ZWP PSItLQ== IFdyZXN0bGU= IEd1YW50YW5hbW8= IG55bXBo KGd1ZXNz LnNldENvbHVtbg== X3RF LmNvbnRlbnRNb2Rl IGludmFsaWRhdGVk IFNob290ZXI= IE1hdGVy LlN1Ym1pdA== IGFuZ2xlZA== bmF2YmFyRHJvcGRvd24= QW8= IOa1 0LjRgdC6 IFNDQU4= CWNt IE1hcmt0 dHJ1Y2s= OycK Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCg== IGdoZXR0bw== IGJ1aXRlbg== IENsb3du OiE= IGNoaW1wYW4= J2ZpZWxk YW1tbw== IERlcGVuZA== KX0p KEZMQUdT IFJDQQ== IENob2ly TG9naW5QYWdl IEdvcmQ= Q29tcGFjdA== LXBvY2tldA== IGNvbnN1bHRhcg== IEludGVyY2VwdA== xZ90aXI= dWV0eXBl b25lbnRz IHN0YXJ0UG9zaXRpb24= IHBvc2l4 IFdvaG51bmc= X0VYUFJFU1NJT04= IExvZ2luQWN0aXZpdHk= KG9wY29kZQ== IFRhbmdv IE51bWJlck9m Lm92ZXJmbG93 IFdDUw== IE9jY3VwYXRpb24= X2Nn LlRvcGlj IENhcmVlcnM= QVJBVElPTg== LmdldExpbmU= IOyihQ== IE5hY2h0 IHRvSXRlbQ== aW5jbHVzaXZl YXZpZXN0 LWFwcG9pbnRlZA== KGludGVybmFs Q09OVEVYVA== KGRpZ2l0cw== PXsiLw== IHBsYXl3cmlnaHQ= IGRlYWRsaWVzdA== bGVhZHM= LlBVVA== ICp9Cgo= IFBhY3Q= IERpc2NvdW50cw== TG9jYWxpemVkTWVzc2FnZQ== IE3DpG5uZXI= Xz4= IG1hc2NhcmE= KFByb2ZpbGU= 5Yqf6IO9 aW1pdMOp IHdpbGRmaXJlcw== LVJPTQ== LmlzT24= KGdyb3VwSWQ= UmVwYWly YWNjdW11bGF0ZQ== IDwiLA== IGhhbmR3cml0dGVu IGFjaGV0ZXI= IE1HTQ== IElybWE= LT57Xw== Z2Vl Y3JpbWluYWw= IOiLpeimgQ== IG1vbWVudGFyaWx5 IikhPQ== X2xpdA== IGV4cGlyZXNJbg== LiIpLg== 6ZW/5bqm IGZyw6Zra2U= dmxj IG9yYnM= KSwk IHZlbnR1cmVk Lz5c Y2hhcm0= TnVpdGth ZWxkaWc= YXRvbmlu V2l0bmVzcw== LWxhdA== IHNldEhpZGRlbg== IHJlbGljcw== IGNvbnN1bGF0ZQ== LklHTk9SRQ== IkFmdGVy IHNldEFkZHJlc3M= IGJlc3RlaHQ= ICcnKQoK LnhheGlz IHNlcsOjbw== IG1pc2xlZA== X1VOSUZPUk0= IFZJQQ== aW5jcg== IHplbml0aA== IHZpc2Nvc2l0eQ== IHRoaW5seQ== LmdldFNoYXJlZFByZWZlcmVuY2Vz LkVycm9yQ29kZQ== IiksIg== IE1pbGxpb25lbg== IC8+KQo= U2Nyb2xsSW5kaWNhdG9y LXNlZWtpbmc= IFBPTElUSUNP YXNjYQ== X3Js TmF2aWc= KGZ1bGxmaWxl IHNvbGl0dWRl IGp1dmVu IGhhdWxpbmc= IE1hY3Jvcw== IEdyeQ== IGV4ZXJjaXRhdGlvbg== IEFUVEFDSw== VGlja0NvdW50 IHJpdGVz IGRvZQ== UGFydGljbGVTeXN0ZW0= IHNsdQ== V2luZG93VGV4dA== IENsYXNzTmFtZQ== IHNsYW5kZXI= CVBvcnQ= am9uZw== P2E= LkRpYWw= 4oCUYXQ= JG9ialBIUEV4Y2Vs IHNvYXI= RU5O YXBwZWFyZWQ= IHF1b3RpZA== ZW1hY2hpbmU= IG5pcA== IG1pY3JvdGltZQ== IEFsbWE= OyE= LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IFBhc3NhZ2U= IGR1bXBzdGVycw== IEV4Y2x1ZGU= IHN1Z2dlc3RpdmU= IENpcmN1bGFyUHJvZ3Jlc3NJbmRpY2F0b3I= X2Nscg== QXJyYXlUeXBl SUxMQQ== RWxhcHNlZFRpbWU= RHJpdmVu IHJlc291cmNlTmFtZQ== IEdhcnJpc29u c2VyaXI= LWFoZWFk IHBpbm5hY2xl IEVzcHJlc3Nv U3BhcnNl IGFzc2F5cw== IEdpcmxmcmllbmQ= aW1pZA== XT0nXA== T05HTE9ORw== IHBvcnRyYXlpbmc= TGFuZQ== IGLDunNxdWVkYQ== IHJlaW5mb3JjZW1lbnRz IFNwcmVhZHNoZWV0 IEFycmF5Q29sbGVjdGlvbg== LGFycg== bGlnaHRib3g= aWNhbmE= PCI= YnVpbGRlcnM= S2lk IE1hdFNuYWNrQmFy RVhQUg== b2RjYXN0 IEZvdW5kYXRpb25z IGluZHM= PSckew== Rml6eg== LWZ1bmN0aW9uYWw= KHdvcmtzcGFjZQ== IHN0ZW1tZWQ= X3BhdGNoZXM= IEphcnZpcw== UkVBRElORw== IGRpc3Jlc3BlY3RmdWw= IFFEb20= ICR7Cg== ZXN0YXR1cw== UmVhY2hlZA== IS4KCg== SUxU IE5ERUJVRw== IENvdXJhZ2U= YmlydGhkYXRl IFRpbmc= IHV0aWxpemFkbw== w6FuY2hleg== T3V0ZG9vcg== IGhhbmRndW5z UmVmQ291bnQ= yZk= cm9tbw== IHR0cw== LlNoZQ== IFBhbmU= 44CRLOOAkA== IElPQ1RM L2JsYWNr aW5zY3JpcHRpb24= IGJpb3BzeQ== IFRpbWVJbnRlcnZhbA== LlRlc3RDaGVjaw== IEdVSVN0eWxl IENhcGFiaWxpdHk= IEJlaXRyYWc= ZG9ubmVlcw== VHJlYXRtZW50 LmJhY2t1cA== IHNpZ25pbmdz IEJvY2E= ZHJt Lk1BSU4= IGdvZWRl IE1hcmt1cA== R1JFRQ== IEJhc2VTZXJ2aWNl LkNyZWF0b3I= IGphaWxz IEthaG4= SXBBZGRyZXNz QUNISQ== IGluaGliaXRlZA== IEAkXw== IEFzc2Fzcw== IGVudmlhZG8= SGVyb2Vz 0J/QtdGA IE1hdmVu Lmxz IGl2ZQ== fFJG IHJlc2l6ZU1vZGU= IHJ1bXBl X2F0dGFjaG1lbnRz VFU= IHRhY3RpbGU= QXR0ZW1wdGluZw== IHJvYmlu eWF3 IG1lcmNlbmFyaWVz IEhhYml0YXQ= ZW5kZGF0ZQ== IG94eQ== CVJhbmRvbQ== b2hvbg== SXNOdWxs IFZhbGlkYXRpb25SZXN1bHQ= 44Oa dW1iZWQ= cHB2 IGFycA== aWNoaWNr X3Jubg== IFRGVA== VGV4SW1hZ2U= Ik9u IFNhbXBsZXI= dG9wbA== IGphbmU= eWxpbmc= IFVOSUNPREU= VGFiSW5kZXg= PHsK c3VzcGVuZA== dXZpYW4= LGFwcGxpY2F0aW9u 0L7Qu9C40YfQtdGB0YLQstC+ eWF0 ZXppZXI= IENIVU5L IEFkbGVy L0FkZA== IEtleVZhbHVl IHNwb3PDs2I= U2FtcGxpbmc= Y2hlcnM= X0FNRA== UnU= Lk11c3RDb21waWxl TmF0aW9u QXNzb2M= TWFuYWdpbmc= IEVuZ2w= X0dC IHN1Y2NpbmN0 IGRpc2xpa2Vk IElrZQ== QnVsbGV0aW4= X0FSQ0hJVkU= UHJvcG9zYWw= IGpvZ2dpbmc= LkNSRUFURUQ= IGNob2w= 6KOF jKg= LXB1c2g= IHJlc2VydmE= Y29yZXY= w6h0cmU= VEhS IGluY29tcGV0ZW5jZQ== IGNoYXJpc21h 5oSf ICI9PQ== QlRO IExvY2F0b3I= aXZldA== KCcuJykK IGZvckluZGV4UGF0aA== w7RtZQ== IGNhcGFjaXQ= d2F0ZXJz IFdST05H aG9h IE1JUFM= IGVtaXNz IEphY3F1ZWxpbmU= KGNtcA== IGVlbnM= TGVv LnRpbWluZw== Q0xVU0lPTg== ICgiLQ== 5ZOI LmtvZGU= IFVuZGVydA== IGJld2lsZA== IEVzc2Vu Lmhk IHJlbmVnb3Q= IG1vd2Vy IGxzcA== IHBlbmNoYW50 IG1hbm9l IGFnbGk= IHJlY2Fs IE9QRVJBVElPTg== KF4pKA== IM69 IFNjb3BlZA== IEAiCg== PWxhYmVs W2xvYw== SW50bA== IE56 dGFibGV0 LkNvbHVtbk5hbWU= IHNjcmVlblNpemU= REJ1cw== Y29va2Vk LXJlZ2lzdHJhdGlvbg== 4oCcT25l LW5vbg== IHdpxJlj IGNvc3Rh LmFkZFRhYg== LmNvbmRpdGlvbnM= IEhlc3M= TUVNT1JZ IEF2YWxhbmNoZQ== KCl9fQo= IHRyaXBsZXQ= IGxhYnlyaW50aA== IE5vZGVMaXN0 IE5ZVA== IHllbmk= ZGZm Lkh0bWxDb250cm9scw== QVZJUw== L01hdGg= IG1lbWNtcA== 2KfYoQ== 0L7RgdGM Y3JhcA== KHBhZ2Vz IGx4bWw= IFFEYXRlVGltZQ== X3RjYg== IG9wZW5pZA== IHN5bmFwdGlj IE1ETUE= KHNsdWc= aWdtYXRpYw== ZW5vcg== IGNyYW1wZWQ= R09Q rZA= LmlzRmlsZQ== IERpZmZlcmVudGlhbA== ID0iIjsK CQkJICAgIAk= IENvb2tl CVVGVU5DVElPTg== IHBlcnNldmVyYW5jZQ== UmVsYXRpdmVMYXlvdXQ= SU1QT1JUQU5U IGV4b24= INC+0L0= aWJhc2U= KENPTlQ= bm92YXRpb24= 5L2V W3N1Yg== QWRtaW5Db250cm9sbGVy SFRUUEhlYWRlcg== Y3JlYXI= IE5JUg== IERyb3BEb3duTGlzdA== IHZhbGlkZQ== IGRlaHlkcmF0aW9u Lidd KFdJTg== IC4uLlw= IHBob3Rvc2hvcA== CUluaXQ= X2NvdQ== IHRpbWVab25l ZGFyd2lu cm9tYXRpYw== TmF2aWdhdGlvbkl0ZW1TZWxlY3RlZExpc3RlbmVy YnJhdGVz XS0tOwo= IHRyYWdlZGllcw== IFBlZGlhdHJpY3M= U01BUlQ= LUFQSQ== IE1lc3NhZ2VMb29rdXA= CXZv IHByZWp1ZGljZXM= IG1B VXBz IE1JU1NJTkc= CWFk Q3JlYW0= IFRi IE1vbmE= X2dob3N0 CXR5cGVz RW1i IERvY3VtZW50YXJ5 Jyk7CgoKCg== IGx1cA== X1JlZmVyZW5jZQ== IEJBVENI IGludGVydHdpbmVk PENlbGw= IENhYnI= bmF0aW9u IGlzQ29ubmVjdGVk LnJlbW92ZUxpc3RlbmVy IGNvbmc= X3Rp IFNpbGljb25l IOqysOqzvA== IFdBTg== IEdpYnJhbHRhcg== L3Jlc3BvbnNl CXBlcnNvbg== Y2hhbnRz VklQ ZW1lcmdlbmN5 UGl4ZWxGb3JtYXQ= LUFt IHNvdXRod2VzdGVybg== X3BsbA== aWZlcnM= X09OQ0U= IEZheWV0dGU= Lm5jYmk= X1BhbmVs LlF1YWw= IHBvbHlz IGNyZWF0ZVN0YWNrTmF2aWdhdG9y 77+9dA== IGxheW9mZnM= IEJsYW5jbw== RmVhdA== IFZpbWVv X2NoaQ== X2xpZmV0aW1l UE9JTlRT LHByaXZhdGU= IHVuYmVhcmFibGU= cHJpbnRpbmc= IGNnaQ== LkJBQ0s= IGludGVybnM= IE5ld2x5 aW5mZWxk KElC IEthdGE= IERlZmVuZGFudHM= VGhy 6aKE X1ZG RkZGRkZGRkY= IGRhdmlkamw= IGJpdHRlcmx5 U3VnZ2VzdGlvbnM= LnNldENhbmNlbGFibGU= RklOQUw= YXNvbnM= X3J3bG9jaw== X1dSQVBQRVI= IGhhcHBpZXN0 KHJvd0luZGV4 w7NzaXRv VE9UWVBF QXV0b21hdGlvbg== TG9nRmlsZQ== IGNvbnNvbGF0aW9u 44OA IHTDqm0= IHByZXI= cmd5eg== IEdlZw== CWR0bw== LmRlZmF1bHRWYWx1ZQ== IEthbWk= IEFTRQ== b3B0aW1pemVk IO2PrA== IG9yaWdpbmF0ZXM= ZXJyTXNn IGVzcGHDp28= KFNZUw== IE1jQg== ZGFuY2U= X2RldGVjdGVk IGZyw7w= CQkgICAgCQk= PERhdGU= KGNvbWI= IERlY2lkZQ== XEZpZWxk IFByb3Bvc2Vk Umli IGRpc2xpa2Vz IFdpZW4= CURvY3VtZW50 IHRyYWY= IHN0b3JpYQ== IFRlbGxz Jyk9PQ== Q3Jp KFZBTFVF IEJ1cm5ldHQ= LHZvaWQ= IGRhbmg= IGNjcA== QmxvY2tjaGFpbg== OiItImAK SUNsaWVudA== SVNPREU= SXNzdWVy KX0NCg== LGJ1dA== IFVwaA== KFN1Yg== IHTDqWzDqXBob25l IG9uRGF0YUNoYW5nZQ== IG1hcnNoYWxsZXI= LWFuYWx5dGljcw== LGNvbnRlbnQ= IGRlYmFjbGU= X1ZhbHVlQ2hhbmdlZA== IGZhdW5h ICM9Pg== IGZveWVy J3V0aWxpc2F0aW9u IE3DvGxsZXI= IEZldGlzaA== IGRlZmF1bHRNYW5hZ2Vy IGJhY2t0cmFjaw== QmFo RXhwbGljaXQ= X0FTQ0lJ IG1BY3Rpdml0eQ== KE1zZw== IOqyjA== IFRFUk1T IEFuZ2ll SFNW IE1vc3F1ZQ== Lk5hbWVz 7Yq8 cmVzdGU= X3Bhcm1z IGdhcGluZw== IGNyb3BwaW5n RGF0YUZyYW1l IHJlc3BvbnNpdmVuZXNz X3VuZG8= X3RyYW4= LnRlcm1pbmF0ZQ== IGl0YWxpYW5l IHdhbGt0aHJvdWdo IGF0dHJhY3RpdmVuZXNz 0LTQtQ== X1NUUw== X2xlYXJu IGNob2NvbGF0ZXM= aWVyYXJjaGljYWw= LXRoaW5raW5n ICkpKQ== aXNobWVudHM= LkxvZ2Y= IFRNWg== IENhbmFyeQ== Zm9pbA== IFZhY2NpbmU= LnZ4 IFN1cnJvdW5k SW50ZXJtZWRpYXRl IGlvdg== dmFpcw== JzsiOwo= 772eCgo= 6YCB5paZ 4oCmaXQ= U2VhdHM= Q2xhcg== V2Fycw== IEh1dGNoaW5zb24= IEhhc2Fu IScpCgo= IFJpY2hpZQ== Y2hlaWRlbg== KCQoJw== WW9yaw== IGxpZHM= IGFscGhhbnVtZXJpYw== IEdsb2Nr LnNoYXBlcw== IHNwYXJraW5n X2Vwc2lsb24= dXBsaWNhdGVk LmRpcnR5 XSk9PQ== IOychOy5mA== IHNjbg== IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq X1BSRVZJRVc= X0hD aWVsZGluZw== ZmdldHM= IEFkZGlzb24= IHByb2R1Y3RTZXJ2aWNl LWZpZ3VyZQ== KHJldHZhbA== emFubw== IGF1dG9i CXNk X251bWVy IFNldExhc3RFcnJvcg== IEZpb3I= aWZpY2FuY2U= VW50aXRsZWQ= IGluZmllbGQ= IHt9KSk7Cg== IHNwYWM= IHJvb2tpZXM= KGRlc2NyaWJpbmc= bmdlbg== 4K6/4K4= LnJkZg== Lk11dGV4 IGtuZWVsaW5n IFFF c2V0TWF4 UmVhZFN0cmVhbQ== IHZlbnRhcw== c3V0 Y21wZXE= LldyaXRlQWxsVGV4dA== IEV4cGVyaWVuY2Vk JF9f IGthdW0= IExJUw== IGRvY3VtZW50b3M= X0hFQUxUSA== aWNvbnRhaW5z IGFydGlzYW5z T1dORVI= IGJsaW5rZWQ= Z2V0RGlzcGxheQ== IHRvZW4= IHJvd051bQ== IGF2cmls IGludmlz IEtlYXI= dG9CZUluVGhlRG9jdW1lbnQ= YXB1cg== IHJhY2tlZA== IE1jTWFzdGVy X0FUVFJJQg== SGF6 IGZhY3R1cmE= L3Rz INGA0LDQt9C80LXRgA== IHpm IHNob3J0ZmFsbA== LmZhc3Rh IENPTlNUQU5U Lm1hbmFnZWQ= Z2Vtcw== U2hhcmVkUG9pbnRlcg== IGJsdXJyeQ== YnJpZ2h0bmVzcw== KGNvbXBvbmVudHM= IC4uLiIKCg== U0VMTA== IElsbHVzdHJhdG9y LmdldENoYW5uZWw= IHRyb3V2w6k= eXN0ZXJz IHZvaXM= IExpbmRlbg== IGVtb2ppcw== IGJyYXds IE1TUg== IEVsbw== IENyb2F0aWFu UG9wdXBNZW51 TGV3aXM= LkpXVA== IGFzdG9uaXNoZWQ= QnVzaA== KGl0ZW1JZA== IGRldGFjaG1lbnQ= IEVuY29yZQ== 5bCU IHJla2w= IGNyYW0= KSQv LmdldEhvc3Q= X3JlY29tbWVuZA== LUhU X2NhbGlicmF0aW9u QXV0aGVudGljYXRl LmZpcmViYXNlYXBw VU5JWA== CUNhbWVyYQ== IEhFQVA= SWRlYWw= Lm9mZmljZQ== IGdvb2Z5 KFN5bWJvbA== IGpvdWVy X3BhcnRpdGlvbnM= IHJhcGlkZW1lbnQ= IEdOVU5FVA== aWRVc2Vy IHN1cGVydmlzZQ== KENvbnRhY3Q= QVdO 44GY IG5hYW0= IGF1c3Q= 5Zyo57q/ X3NvZnRtYXg= QWxsb3dBbm9ueW1vdXM= YW1tYWJsZQ== Uk9VVEU= KkQ= IGFkZW4= IENyaXN0aW5h IENyaXN0aWFubw== IGJsb29kc3RyZWFt c3ViY2xhc3M= X3BlcnNvbmE= Q0hJTEQ= LWtub3c= IG5hdmlnYXRpb25PcHRpb25z IFp1a3VuZnQ= IFBpeGFy VHlsZXI= IHVuZGVyd29ybGQ= IHNpbmNlcml0eQ== IGRpc3BlbnNlcg== IGt0ZXI= aWRkZXJz LmFkZE5vZGU= LWNoZWNrZWQ= IGtleXN0 IFdUTw== LnNpZ25hbHM= IGFkdmVudHVyZXI= IFBhbmc= XFI= PXBvcw== IGRpc3BlbnNhcmllcw== IENsb3NldA== KCJ7XCI= aWRlb24= IG7DqWNlc3NhaXJl KCkiCg== X1JFQ0VJVkVE IHLDqXN1bHRhdHM= IG1vZGVu IEljZWxhbmRpYw== O2Q= LmFsbG93ZWQ= KG5ld1VzZXI= IG1lcmNpbGVzcw== LldhaXRGb3I= IGRheWNhcmU= IENvbnZleW9y" };

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/gemini.js
var GeminiEmbedModelAdapter = class extends SmartEmbedModelApiAdapter {
  static defaults = {
    adapter: "gemini",
    description: "Google Gemini (API)",
    default_model: "gemini-embedding-001",
    endpoint: "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:batchEmbedContents"
  };
  /**
   * Create Gemini adapter instance
   * @param {SmartEmbedModel} smart_embed - Parent model instance
   */
  constructor(smart_embed) {
    super(smart_embed);
    this.enc = null;
  }
  /**
   * Initialize tokenizer
   * @returns {Promise<void>}
   */
  async load() {
    this.enc = new Tiktoken(cl100k_base_default);
  }
  /**
   * Count tokens in input text using tokenizer
   * @param {string} input - Text to tokenize
   * @returns {Promise<Object>} Token count result
   */
  async count_tokens(input) {
    if (!this.enc) await this.load();
    return { tokens: this.enc.encode(input).length };
  }
  /**
   * Prepare input text for embedding
   * Handles token limit truncation
   * @param {string} embed_input - Raw input text
   * @returns {Promise<string|null>} Processed input text
   */
  async prepare_embed_input(embed_input) {
    if (typeof embed_input !== "string") {
      throw new TypeError("embed_input must be a string");
    }
    if (embed_input.length === 0) {
      console.log("Warning: prepare_embed_input received an empty string");
      return null;
    }
    const { tokens } = await this.count_tokens(embed_input);
    if (tokens <= this.max_tokens) {
      return embed_input;
    }
    return await this.trim_input_to_max_tokens(embed_input, tokens);
  }
  /**
   * Trim input text to fit token limit
   * @private
   * @param {string} embed_input - Input text to trim
   * @param {number} tokens_ct - Current token count
   * @returns {Promise<string|null>} Trimmed input text
   */
  async trim_input_to_max_tokens(embed_input, tokens_ct) {
    const reduce_ratio = (tokens_ct - this.max_tokens) / tokens_ct;
    const new_length = Math.floor(embed_input.length * (1 - reduce_ratio));
    let trimmed_input = embed_input.slice(0, new_length);
    const last_space_index = trimmed_input.lastIndexOf(" ");
    if (last_space_index > 0) {
      trimmed_input = trimmed_input.slice(0, last_space_index);
    }
    const prepared_input = await this.prepare_embed_input(trimmed_input);
    if (prepared_input === null) {
      console.log(
        "Warning: prepare_embed_input resulted in an empty string after trimming"
      );
      return null;
    }
    return prepared_input;
  }
  /**
   * Get the request adapter class.
   * @returns {SmartEmbedGeminiRequestAdapter} The request adapter class
   */
  get req_adapter() {
    return SmartEmbedGeminiRequestAdapter;
  }
  /**
   * Get the response adapter class.
   * @returns {SmartEmbedGeminiResponseAdapter} The response adapter class
   */
  get res_adapter() {
    return SmartEmbedGeminiResponseAdapter;
  }
  /** @returns {Object} Settings configuration for Gemini adapter */
  get settings_config() {
    return {
      ...super.settings_config,
      "[ADAPTER].api_key": {
        name: "Google API Key for Gemini embeddings",
        type: "password",
        description: "Required for Gemini embedding models",
        placeholder: "Enter Google API Key"
      }
    };
  }
  /**
   * Get available models (hardcoded list)
   * @returns {Promise<Object>} Map of model objects
   */
  get_models() {
    return Promise.resolve(this.models);
  }
  get models() {
    return {
      "gemini-embedding-001": {
        "id": "models/gemini-embedding-001",
        "batch_size": 50,
        "dims": 768,
        "max_tokens": 2048,
        "name": "Gemini Embedding",
        "description": "API, 2,048 tokens, 768 dim",
        "endpoint": "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:batchEmbedContents",
        "adapter": "gemini"
      }
    };
  }
  prepare_request_headers() {
    return {
      "Content-Type": "application/json",
      "x-goog-api-key": this.api_key
    };
  }
};
var SmartEmbedGeminiRequestAdapter = class extends SmartEmbedModelRequestAdapter {
  /**
   * Prepare request body for Gemini API
   * @returns {Object} Request body for API
   */
  prepare_request_body() {
    const requests = this.embed_inputs.map((input) => {
      const [title, ...content] = input.split("\n");
      const doc_content = content.join("\n").trim() || "";
      if (doc_content.length) {
        return {
          model: this.adapter.model_config.id,
          content: {
            parts: [{ text: doc_content }]
          },
          outputDimensionality: this.adapter.model_config.dims,
          taskType: "RETRIEVAL_DOCUMENT",
          title
        };
      } else {
        return {
          model: this.adapter.model_config.id,
          content: {
            parts: [{ text: title }]
          },
          outputDimensionality: this.adapter.model_config.dims,
          taskType: "RETRIEVAL_DOCUMENT"
        };
      }
    });
    return {
      requests
    };
  }
};
var SmartEmbedGeminiResponseAdapter = class extends SmartEmbedModelResponseAdapter {
  /**
   * Parse Gemini API response
   * @returns {Array<Object>} Parsed embedding results
   */
  parse_response() {
    const resp = this.response;
    console.log("Gemini response:", resp);
    if (!resp || !resp.embeddings || !resp.embeddings[0].values) {
      console.error("Invalid Gemini embedding response format", resp);
      return [];
    }
    return resp.embeddings.map((embedding, i) => {
      if (!embedding.values || embedding.values.length === 0) {
        console.warn(`No values for embedding at index ${i}`);
        return { vec: [], tokens: 0 };
      }
      return {
        vec: embedding.values,
        tokens: 500
        // not provided
      };
    });
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-embed-model/adapters/lm_studio.js
function parse_lm_studio_models(list, adapter_key = "lm_studio") {
  if (list.object !== "list" || !Array.isArray(list.data)) {
    return { _: { id: "No models found." } };
  }
  console.log("LM Studio models", list);
  return list.data.filter((m) => m.id && m.type === "embeddings").reduce((acc, m) => {
    acc[m.id] = {
      id: m.id,
      model_name: m.id,
      max_tokens: m.loaded_context_length || 512,
      description: `LM Studio model: ${m.id}`,
      adapter: adapter_key
    };
    return acc;
  }, {});
}
var LmStudioEmbedModelAdapter = class extends SmartEmbedModelApiAdapter {
  static key = "lm_studio";
  static defaults = {
    description: "LM Studio",
    type: "API",
    host: "http://localhost:1234",
    // endpoint: "/v1/embeddings",
    endpoint: "/api/v0/embeddings",
    models_endpoint: "/api/v0/models",
    default_model: "",
    // user picks from dropdown
    streaming: false,
    api_key: "na",
    // not used
    batch_size: 10,
    max_tokens: 512
  };
  get req_adapter() {
    return LmStudioEmbedModelRequestAdapter;
  }
  get res_adapter() {
    return LmStudioEmbedModelResponseAdapter;
  }
  get endpoint() {
    return `${this.model_config.host}${this.model_config.endpoint}`;
  }
  get models_endpoint() {
    return `${this.model_config.host}${this.model_config.models_endpoint}`;
  }
  get settings_config() {
    const cfg = { ...super.settings_config };
    delete cfg["[ADAPTER].api_key"];
    cfg["[ADAPTER].refresh_models"] = {
      name: "Refresh Models",
      type: "button",
      description: "Refresh the list of available models.",
      callback: "adapter.refresh_models"
    };
    cfg["[ADAPTER].current_model"] = {
      type: "html",
      value: `<p>Embedding Model Max Tokens: ${this.max_tokens} (may be configured in LM Studio)</p>`
    };
    cfg["[ADAPTER].batch_size"] = {
      name: "Embedding Batch Size",
      type: "number",
      description: "Number of embeddings to process in parallel. Adjusting this may improve performance.",
      value: this.batch_size,
      default: this.constructor.defaults.batch_size
    };
    cfg["[ADAPTER].cors_note"] = {
      name: "CORS required",
      type: "html",
      // The renderer treats `value` as innerHTML.
      value: `<p>Before you can use LM Studio you must <strong>Enable CORS</strong> inside LM Studio \u2192 Developer \u2192 Settings</p>`
    };
    return cfg;
  }
  async get_models(refresh = false) {
    if (!refresh && this.adapter_settings.models) return this.adapter_settings.models;
    const resp = await this.http_adapter.request({
      url: this.models_endpoint,
      method: "GET"
    });
    const raw = await resp.json();
    const parsed = this.parse_model_data(raw);
    this.adapter_settings.models = parsed;
    this.model.re_render_settings();
    return parsed;
  }
  parse_model_data(list) {
    return parse_lm_studio_models(list, this.constructor.key);
  }
  async count_tokens(input) {
    return { tokens: this.estimate_tokens(input) };
  }
  validate_config() {
    if (!this.adapter_config.model_key) {
      return { valid: false, message: "No model selected." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
  /**
   * Prepare input text and ensure it fits within `max_tokens`.
   * @param {string} embed_input - Raw input text
   * @returns {Promise<string|null>} Processed input text
   */
  async prepare_embed_input(embed_input) {
    if (typeof embed_input !== "string") throw new TypeError("embed_input must be a string");
    if (embed_input.length === 0) return null;
    const { tokens } = await this.count_tokens(embed_input);
    if (tokens <= this.max_tokens) return embed_input;
    return await this.trim_input_to_max_tokens(embed_input, tokens);
  }
  /**
   * Refresh available models.
   */
  refresh_models() {
    console.log("refresh_models");
    this.get_models(true);
  }
  // no usaqge stats from LM Studio so need to estimate tokens
  async embed_batch(inputs) {
    const token_cts = inputs.map((item) => this.estimate_tokens(item.embed_input));
    const resp = await super.embed_batch(inputs);
    resp.forEach((item, idx) => {
      item.tokens = token_cts[idx];
    });
    return resp;
  }
};
var LmStudioEmbedModelRequestAdapter = class extends SmartEmbedModelRequestAdapter {
  /**
   * Prepare request body for LM Studio API
   * @returns {Object} Request body for API
   */
  prepare_request_body() {
    const body = {
      model: this.adapter.model_config.id,
      input: this.embed_inputs
    };
    return body;
  }
};
var LmStudioEmbedModelResponseAdapter = class extends SmartEmbedModelResponseAdapter {
  /**
   * Parse LM Studio API response
   * @returns {Array<Object>} Parsed embedding results
   */
  parse_response() {
    const resp = this.response;
    if (!resp || !resp.data) {
      console.error("Invalid response format", resp);
      return [];
    }
    return resp.data.map((item) => ({
      vec: item.embedding,
      tokens: null
      // LM Studio doesn't provide token usage
    }));
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/smart_chat_model.js
var SmartChatModel = class extends SmartModel {
  scope_name = "smart_chat_model";
  static defaults = {
    adapter: "openai"
  };
  /**
   * Create a SmartChatModel instance.
   * @param {Object} opts - Configuration options
   * @param {string} opts.adapter - Adapter to use
   * @param {Object} opts.adapters - Map of adapter names to adapter classes
   * @param {Object} opts.settings - Model settings configuration
   */
  constructor(opts = {}) {
    super(opts);
  }
  /**
   * Get available models.
   * @returns {Object} Map of model objects
   */
  get models() {
    return this.adapter.models;
  }
  get can_stream() {
    return this.adapter.constructor.defaults.streaming;
  }
  get can_use_tools() {
    return this.adapter.constructor.defaults.can_use_tools;
  }
  /**
   * Complete a chat request.
   * @param {Object} req - Request parameters
   * @returns {Promise<Object>} Completion result
   */
  async complete(req) {
    return await this.invoke_adapter_method("complete", req);
  }
  /**
   * Stream chat responses.
   * @param {Object} req - Request parameters
   * @param {Object} handlers - Event handlers for streaming
   * @param {Function} handlers.chunk - Handler for chunks: receives response object
   * @param {Function} handlers.error - Handler for errors: receives error object
   * @param {Function} handlers.done - Handler for completion: receives final response object
   * @returns {Promise<string>} Complete response text
   */
  async stream(req, handlers = {}) {
    return await this.invoke_adapter_method("stream", req, handlers);
  }
  /**
   * Stop active stream.
   */
  stop_stream() {
    this.invoke_adapter_method("stop_stream");
  }
  /**
   * Count tokens in input text.
   * @param {string|Object} input - Text to count tokens for
   * @returns {Promise<number>} Token count
   */
  async count_tokens(input) {
    return await this.invoke_adapter_method("count_tokens", input);
  }
  /**
   * Test if API key is valid.
   * @returns {Promise<boolean>} True if API key is valid
   */
  async test_api_key() {
    await this.invoke_adapter_method("test_api_key");
    this.re_render_settings();
  }
  /**
   * Get default model key.
   * @returns {string} Default model key
   */
  get default_model_key() {
    return this.adapter.constructor.defaults.default_model;
  }
  /**
   * Get current settings.
   * @returns {Object} Settings object
   */
  get settings() {
    return this.opts.settings;
  }
  /**
   * Get settings configuration.
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    const _settings_config = {
      adapter: {
        name: "Chat Model Platform",
        type: "dropdown",
        description: "Select a platform/provider for chat models.",
        options_callback: "get_platforms_as_options",
        is_scope: true,
        // trigger re-render of settings when changed
        callback: "adapter_changed"
      },
      // Merge adapter-specific settings
      ...this.adapter.settings_config || {}
    };
    return this.process_settings_config(_settings_config);
  }
  /**
   * Process setting key.
   * @param {string} key - Setting key
   * @returns {string} Processed key
   */
  process_setting_key(key) {
    return key.replace(/\[CHAT_ADAPTER\]/g, this.adapter_name);
  }
  /**
   * Validate the adapter configuration.
   * @returns {Object} Validation result with 'valid' and 'message'.
   */
  validate_config() {
    return this.adapter.validate_config();
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/streamer.js
var SmartStreamer = class {
  constructor(url, options = {}) {
    const {
      method = "GET",
      headers = {},
      body = null,
      withCredentials = false
    } = options;
    this.url = url;
    this.method = method;
    this.headers = headers;
    this.body = body;
    this.withCredentials = withCredentials;
    this.listeners = {};
    this.readyState = this.CONNECTING;
    this.progress = 0;
    this.chunk = "";
    this.last_event_id = "";
    this.xhr = null;
    this.FIELD_SEPARATOR = ":";
    this.INITIALIZING = -1;
    this.CONNECTING = 0;
    this.OPEN = 1;
    this.CLOSED = 2;
    this.chunk_accumulator = "";
    this.chunk_splitting_regex = options.chunk_splitting_regex || /(\r\n|\n|\r)/g;
  }
  /**
   * Adds an event listener for the specified event type.
   *
   * @param {string} type - The type of the event.
   * @param {Function} listener - The listener function to be called when the event is triggered.
   */
  addEventListener(type, listener) {
    if (!this.listeners[type]) this.listeners[type] = [];
    if (!this.listeners[type].includes(listener)) this.listeners[type].push(listener);
  }
  /**
   * Removes an event listener from the SmartStreamer instance.
   *
   * @param {string} type - The type of event to remove the listener from.
   * @param {Function} listener - The listener function to remove.
   */
  removeEventListener(type, listener) {
    if (!this.listeners[type]) return;
    this.listeners[type] = this.listeners[type].filter((callback) => callback !== listener);
    if (this.listeners[type].length === 0) delete this.listeners[type];
  }
  /**
   * Dispatches an event to the appropriate event handlers.
   *
   * @param {Event} event - The event to be dispatched.
   * @returns {boolean} - Returns true if the event was successfully dispatched, false otherwise.
   */
  dispatchEvent(event) {
    if (!event) return true;
    event.source = this;
    const onHandler = "on" + event.type;
    if (Object.prototype.hasOwnProperty.call(this, onHandler)) {
      this[onHandler].call(this, event);
      if (event.defaultPrevented) return false;
    }
    if (this.listeners[event.type]) {
      this.listeners[event.type].forEach((callback) => {
        callback(event);
        return !event.defaultPrevented;
      });
    }
    return true;
  }
  /**
   * Initiates the streaming process.
   */
  stream() {
    this.#setReadyState(this.CONNECTING);
    this.xhr = new XMLHttpRequest();
    this.xhr.addEventListener("progress", this.#onStreamProgress.bind(this));
    this.xhr.addEventListener("load", this.#onStreamLoaded.bind(this));
    this.xhr.addEventListener("readystatechange", this.#checkStreamClosed.bind(this));
    this.xhr.addEventListener("error", this.#onStreamFailure.bind(this));
    this.xhr.addEventListener("abort", this.#onStreamAbort.bind(this));
    this.xhr.open(this.method, this.url);
    for (const header in this.headers) {
      this.xhr.setRequestHeader(header, this.headers[header]);
    }
    if (this.last_event_id) this.xhr.setRequestHeader("Last-Event-ID", this.last_event_id);
    this.xhr.withCredentials = this.withCredentials;
    this.xhr.send(this.body);
  }
  /**
   * Ends the streamer connection.
   * Aborts the current XHR request and sets the ready state to CLOSED.
   */
  end() {
    if (this.readyState === this.CLOSED) return;
    this.xhr.abort();
    this.xhr = null;
    this.#setReadyState(this.CLOSED);
  }
  // private methods
  #setReadyState(state) {
    const event = new CustomEvent("readyStateChange");
    event.readyState = state;
    this.readyState = state;
    this.dispatchEvent(event);
  }
  #onStreamFailure(e) {
    const event = new CustomEvent("error");
    event.data = e.currentTarget.response;
    this.dispatchEvent(event);
    this.end();
  }
  #onStreamAbort(e) {
    const event = new CustomEvent("abort");
    this.end();
  }
  #onStreamProgress(e) {
    if (!this.xhr) return;
    if (this.xhr.status !== 200) {
      this.#onStreamFailure(e);
      return;
    }
    if (this.readyState === this.CONNECTING) {
      this.dispatchEvent(new CustomEvent("open"));
      this.#setReadyState(this.OPEN);
    }
    const data = this.xhr.responseText.substring(this.progress);
    this.progress += data.length;
    const parts = data.split(this.chunk_splitting_regex);
    parts.forEach((part, index) => {
      if (part.trim().length === 0) {
        if (this.chunk) {
          this.dispatchEvent(this.#parseEventChunk(this.chunk.trim()));
          this.chunk = "";
        }
      } else {
        this.chunk += part;
        if (index === parts.length - 1 && this.xhr.readyState === XMLHttpRequest.DONE) {
          this.dispatchEvent(this.#parseEventChunk(this.chunk.trim()));
          this.chunk = "";
        }
      }
    });
  }
  #onStreamLoaded(e) {
    this.#onStreamProgress(e);
    this.dispatchEvent(this.#parseEventChunk(this.chunk));
    this.chunk = "";
  }
  #parseEventChunk(chunk) {
    if (!chunk) return console.log("no chunk");
    const event = new CustomEvent("message");
    event.data = chunk;
    event.last_event_id = this.last_event_id;
    return event;
  }
  #checkStreamClosed() {
    if (!this.xhr) return;
    if (this.xhr.readyState === XMLHttpRequest.DONE) this.#setReadyState(this.CLOSED);
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/_adapter.js
var SmartChatModelAdapter = class extends SmartModelAdapter {
  /**
   * @override in sub-class with adapter-specific default configurations
   * @property {string} id - The adapter identifier
   * @property {string} description - Human-readable description
   * @property {string} type - Adapter type ("API")
   * @property {string} endpoint - API endpoint
   * @property {boolean} streaming - Whether streaming is supported
   * @property {string} adapter - Adapter identifier
   * @property {string} models_endpoint - Endpoint for retrieving models
   * @property {string} default_model - Default model to use
   * @property {string} signup_url - URL for API key signup
   */
  static defaults = {};
  /**
   * Create a SmartChatModelAdapter instance.
   * @param {SmartChatModel} model - The parent SmartChatModel instance
   */
  constructor(model) {
    super(model);
    this.smart_chat = model;
    this.main = model;
  }
  /**
   * Complete a chat request.
   * @abstract
   * @param {Object} req - Request parameters
   * @returns {Promise<Object>} Completion result
   */
  async complete(req) {
    throw new Error("complete not implemented");
  }
  /**
   * Count tokens in input text.
   * @abstract
   * @param {string|Object} input - Text to count tokens for
   * @returns {Promise<number>} Token count
   */
  async count_tokens(input) {
    throw new Error("count_tokens not implemented");
  }
  /**
   * Stream chat responses.
   * @abstract
   * @param {Object} req - Request parameters
   * @param {Object} handlers - Event handlers for streaming
   * @returns {Promise<string>} Complete response text
   */
  async stream(req, handlers = {}) {
    throw new Error("stream not implemented");
  }
  /**
   * Test if API key is valid.
   * @abstract
   * @returns {Promise<boolean>} True if API key is valid
   */
  async test_api_key() {
    throw new Error("test_api_key not implemented");
  }
  /**
   * Refresh available models.
   */
  refresh_models() {
    console.log("refresh_models");
    this.get_models(true);
  }
  /**
   * Get settings configuration.
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    return {
      "[CHAT_ADAPTER].model_key": {
        name: "Chat Model",
        type: "dropdown",
        description: "Select a chat model.",
        options_callback: "adapter.get_models_as_options",
        callback: "reload_model",
        default: this.constructor.defaults.default_model
      },
      "[CHAT_ADAPTER].refresh_models": {
        name: "Refresh Models",
        type: "button",
        description: "Refresh the list of available models.",
        callback: "adapter.refresh_models"
      }
    };
  }
  /**
   * Validate the adapter configuration.
   * @abstract
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    throw new Error("validate_config not implemented");
  }
  get can_use_tools() {
    return this.model_config?.can_use_tools || false;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/_api.js
var MODEL_ADAPTER_CACHE = {};
var MODELS_DEV_CACHE = { data: null, fetched_at: 0 };
var SmartChatModelApiAdapter = class extends SmartChatModelAdapter {
  constructor(model) {
    super(model);
    this.model_data_loaded_at = 0;
  }
  /**
   * Get the request adapter class.
   * @returns {SmartChatModelRequestAdapter} The request adapter class
   */
  get req_adapter() {
    return SmartChatModelRequestAdapter;
  }
  /**
   * Get the response adapter class.
   * @returns {SmartChatModelResponseAdapter} The response adapter class
   */
  get res_adapter() {
    return SmartChatModelResponseAdapter;
  }
  /**
   * Get or initialize the HTTP adapter.
   * @returns {SmartHttpRequest} The HTTP adapter instance
   */
  get http_adapter() {
    if (!this._http_adapter) {
      if (this.model.opts.http_adapter) this._http_adapter = this.model.opts.http_adapter;
      else this._http_adapter = new SmartHttpRequest({ adapter: SmartHttpRequestFetchAdapter });
    }
    return this._http_adapter;
  }
  /**
   * Get the settings configuration for the API adapter.
   * @returns {Object} Settings configuration object with API key and other settings
   */
  get settings_config() {
    return {
      ...super.settings_config,
      "[CHAT_ADAPTER].api_key": {
        name: "API Key",
        type: "password",
        description: "Enter your API key for the chat model platform.",
        callback: "test_api_key",
        is_scope: true
        // trigger re-render of settings when changed (reload models dropdown)
      }
    };
  }
  /**
   * Count tokens in the input text.
   * @abstract
   * @param {string|Object} input - Text or message object to count tokens for
   * @returns {Promise<number>} Number of tokens in the input
   */
  async count_tokens(input) {
    throw new Error("count_tokens not implemented");
  }
  /**
   * Get the parameters for requesting available models.
   * @returns {Object} Request parameters for models endpoint
   */
  get models_request_params() {
    return {
      url: this.models_endpoint,
      method: this.models_endpoint_method,
      headers: {
        "Authorization": `Bearer ${this.api_key}`
      }
    };
  }
  /**
   * Validate parameters required for getting models.
   * @returns {true|Array<Object>} True if valid, array of error objects if invalid
   */
  validate_get_models_params() {
    if (!this.adapter_config.models_endpoint) {
      const err_msg = `${this.model.adapter_name} models endpoint required to retrieve models`;
      console.warn(err_msg);
      return [{ value: "", name: err_msg }];
    }
    if (!this.api_key) {
      const err_msg = `${this.model.adapter_name} API key required to retrieve models`;
      console.warn(err_msg);
      return [{ value: "", name: err_msg }];
    }
    return true;
  }
  async get_enriched_model_data() {
    const provider_key = this.constructor.key;
    await this.get_models_dev_index();
    const provider_data = MODELS_DEV_CACHE.data[provider_key] || {};
    const get_limit_i = (model) => model.limit?.context || 1e4;
    const get_limit_o = (model) => model.limit?.output || 1e4;
    const get_multimodal = (model) => model.modalities?.input?.includes("image") || false;
    if (Object.keys(this.model_data || {}).length > 0) {
      for (const [key, model] of Object.entries(this.model_data)) {
        const enriched = provider_data?.models?.[model.id];
        if (!enriched) continue;
        this.model_data[key].models_dev = enriched;
        this.model_data[key].name = enriched.name || model.name;
        this.model_data[key].max_input_tokens = get_limit_i(enriched);
        this.model_data[key].max_output_tokens = get_limit_o(enriched);
        this.model_data[key].multimodal = get_multimodal(enriched);
        this.model_data[key].can_use_tools = enriched.tool_call;
        this.model_data[key].cost = enriched.cost;
      }
    } else {
      for (const [key, model] of Object.entries(provider_data?.models || {})) {
        this.model_data[key] = {
          ...model,
          model_name: model.name,
          description: model.name,
          max_input_tokens: get_limit_i(model),
          max_output_tokens: get_limit_o(model),
          multimodal: get_multimodal(model),
          can_use_tools: model.tool_call
        };
      }
    }
    return this.model_data;
  }
  valid_model_data() {
    return typeof this.model_data === "object" && Object.keys(this.model_data || {}).length > 0 && this.model_data_loaded_at && Date.now() - this.model_data_loaded_at < 1 * 60 * 60 * 1e3;
  }
  /**
   * Get available models from the API.
   * @param {boolean} [refresh=false] - Whether to refresh cached models
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models(refresh = false) {
    if (!refresh && this.valid_model_data()) return this.model_data;
    if (this.api_key) {
      let response;
      try {
        response = await this.http_adapter.request(this.models_request_params);
        this.model_data = this.parse_model_data(await response.json());
      } catch (error) {
        console.error("Failed to fetch model data:", { error, response });
      }
    }
    this.model_data = await this.get_enriched_model_data();
    this.model_data_loaded_at = Date.now();
    this.adapter_settings.models = this.model_data;
    if (this.valid_model_data()) setTimeout(() => {
      this.model.re_render_settings();
    }, 100);
    else console.warn("Invalid model data, not re-rendering settings");
    return this.model_data;
  }
  /**
   * Parses the raw model data from OpenAI API and transforms it into a more usable format.
   * @param {Object} model_data - The raw model data received from OpenAI API.
   * @returns {Array<Object>} An array of parsed model objects with the following properties:
   *   @property {string} model_name - The name/ID of the model as returned by the API.
   *   @property {string} id - The id used to identify the model (usually same as model_name).
   *   @property {boolean} multimodal - Indicates if the model supports multimodal inputs.
   *   @property {number} [max_input_tokens] - The maximum number of input tokens the model can process.
   *   @property {string} [description] - A description of the model's context and output capabilities.
   */
  parse_model_data(model_data) {
    throw new Error("parse_model_data not implemented");
  }
  /**
   * Complete a chat request.
   * @param {Object} req - Request parameters
   * @returns {Promise<Object>} Completion response in OpenAI format
   */
  async complete(req) {
    const _req = new this.req_adapter(this, {
      ...req,
      stream: false
    });
    const request_params = _req.to_platform();
    const http_resp = await this.http_adapter.request(request_params);
    if (!http_resp) return null;
    const _res = new this.res_adapter(this, await http_resp.json());
    try {
      return _res.to_openai();
    } catch (error) {
      console.error("Error in SmartChatModelApiAdapter.complete():", error);
      console.error(http_resp);
      return null;
    }
  }
  // STREAMING
  /**
  * Stream chat responses.
  * @param {Object} req - Request parameters
  * @param {Object} handlers - Event handlers for streaming
  * @param {Function} handlers.chunk - Handler for response objects
  * @param {Function} handlers.error - Handler for errors
  * @param {Function} handlers.done - Handler for completion
  * @returns {Promise<Object>} Complete response object
  */
  async stream(req, handlers = {}) {
    const _req = new this.req_adapter(this, req);
    const request_params = _req.to_platform(true);
    if (this.streaming_chunk_splitting_regex) request_params.chunk_splitting_regex = this.streaming_chunk_splitting_regex;
    return await new Promise((resolve, reject) => {
      try {
        this.active_stream = new SmartStreamer(this.endpoint_streaming, request_params);
        const resp_adapter = new this.res_adapter(this);
        this.active_stream.addEventListener("message", async (e) => {
          if (this.is_end_of_stream(e)) {
            await resp_adapter.handle_chunk(e.data);
            this.stop_stream();
            const final_resp = resp_adapter.to_openai();
            handlers.done && await handlers.done(final_resp);
            resolve(final_resp);
            return;
          }
          try {
            resp_adapter.handle_chunk(e.data);
            handlers.chunk && await handlers.chunk(resp_adapter.to_openai());
          } catch (error) {
            console.error("Error processing stream chunk:", error);
            handlers.error && handlers.error(e.data);
            this.stop_stream();
            reject(error);
          }
        });
        this.active_stream.addEventListener("error", (e) => {
          console.error("Stream error:", e);
          handlers.error && handlers.error("*API Error. See console logs for details.*");
          this.stop_stream();
          reject(e);
        });
        this.active_stream.stream();
      } catch (err) {
        console.error("Failed to start stream:", err);
        handlers.error && handlers.error("*API Error. See console logs for details.*");
        this.stop_stream();
        reject(err);
      }
    });
  }
  /**
   * Check if a stream event indicates end of stream.
   * @param {Event} event - Stream event
   * @returns {boolean} True if end of stream
   */
  is_end_of_stream(event) {
    return event.data === "data: [DONE]";
  }
  /**
   * Stop active stream.
   */
  stop_stream() {
    if (this.active_stream) {
      this.active_stream.end();
      this.active_stream = null;
    }
  }
  /**
   * Validate Anthropic adapter configuration.
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    if (!this.adapter_config.model_key || this.adapter_config.model_key === "undefined") return { valid: false, message: "No model selected." };
    if (!this.api_key) {
      return { valid: false, message: "API key is missing." };
    }
    if (!this.can_use_tools) {
      return { valid: false, message: "Selected model does not support tools." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
  /**
   * Get the API key.
   * @returns {string} The API key.
   */
  get api_key() {
    return this.main.opts.api_key || this.adapter_config?.api_key;
  }
  /**
  
     * Get the number of choices.
     * @returns {number} The number of choices.
     */
  get choices() {
    return this.adapter_config.choices;
  }
  get models_endpoint() {
    return this.adapter_config.models_endpoint;
  }
  get models_endpoint_method() {
    return "POST";
  }
  /**
   * Get the endpoint URL.
   * @returns {string} The endpoint URL.
   */
  get endpoint() {
    return this.adapter_config.endpoint;
  }
  /**
   * Get the streaming endpoint URL.
   * @returns {string} The streaming endpoint URL.
   */
  get endpoint_streaming() {
    return this.adapter_config.endpoint_streaming || this.endpoint;
  }
  /**
   * Get the maximum output tokens.
   * @returns {number} The maximum output tokens.
   */
  get max_output_tokens() {
    return this.adapter_config.max_output_tokens || 3e3;
  }
  /**
   * Get the temperature.
   * @returns {number} The temperature.
   */
  get temperature() {
    return this.adapter_config.temperature;
  }
  async get_models_dev_index(ttl_ms = 60 * 60 * 1e3) {
    const now = Date.now();
    if (MODELS_DEV_CACHE?.data && now - MODELS_DEV_CACHE?.fetched_at < ttl_ms) {
      return MODELS_DEV_CACHE.data;
    }
    try {
      const req = {
        url: "https://models.dev/api.json",
        method: "GET",
        headers: { "Content-Type": "application/json" }
      };
      const resp = await this.http_adapter.request(req);
      const data = await resp.json();
      MODELS_DEV_CACHE.data = data;
      MODELS_DEV_CACHE.fetched_at = now;
      return data;
    } catch (err) {
      console.warn("models.dev fetch failed; continuing without enrichment", err);
      return MODELS_DEV_CACHE.data || [];
    }
  }
  /**
   * Get available models as dropdown options synchronously.
   * @returns {Array<Object>} Array of model options.
   */
  get_models_as_options() {
    if (Object.keys(this.model_data || {}).length) {
      return Object.entries(this.model_data).map(([id, model]) => ({ value: id, name: model.name || id })).sort((a, b) => a.name.localeCompare(b.name));
    }
    this.get_models(true);
    return [{ value: "", name: "No models currently available" }];
  }
  get model_data() {
    if (!MODEL_ADAPTER_CACHE[this.constructor.key]) MODEL_ADAPTER_CACHE[this.constructor.key] = {};
    return MODEL_ADAPTER_CACHE[this.constructor.key];
  }
  set model_data(data) {
    if (!MODEL_ADAPTER_CACHE[this.constructor.key]) MODEL_ADAPTER_CACHE[this.constructor.key] = {};
    MODEL_ADAPTER_CACHE[this.constructor.key] = data;
  }
};
var SmartChatModelRequestAdapter = class {
  /**
   * @constructor
   * @param {SmartChatModelAdapter} adapter - The SmartChatModelAdapter instance
   * @param {Object} req - The incoming request object
   */
  constructor(adapter, req = {}) {
    this.adapter = adapter;
    this._req = req;
  }
  /**
   * Get the messages array from the request
   * @returns {Array<Object>} Array of message objects
   */
  get messages() {
    return this._req.messages || [];
  }
  /**
   * Get the model identifier
   * @returns {string} Model ID
   */
  get model() {
    return this._req.model || this.adapter.model_config.id;
  }
  /**
   * Get the temperature setting
   * @returns {number} Temperature value
   */
  get temperature() {
    return this._req.temperature;
  }
  /**
   * Get the maximum tokens setting
   * @returns {number} Max tokens value
   */
  get max_tokens() {
    return this._req.max_tokens || this.adapter.model_config.max_output_tokens;
  }
  /**
   * Get the streaming flag
   * @returns {boolean} Whether to stream responses
   */
  get stream() {
    return this._req.stream;
  }
  /**
   * Get the tools array
   * @returns {Array<Object>|null} Array of tool objects or null
   */
  get tools() {
    return this._req.tools || null;
  }
  /**
   * Get the tool choice setting
   * @returns {string|Object|null} Tool choice configuration
   */
  get tool_choice() {
    return this._req.tool_choice || null;
  }
  get frequency_penalty() {
    return this._req.frequency_penalty;
  }
  get presence_penalty() {
    return this._req.presence_penalty;
  }
  get top_p() {
    return this._req.top_p;
  }
  /**
   * Get request headers
   * @returns {Object} Headers object
   */
  get_headers() {
    const headers = {
      "Content-Type": "application/json",
      ...this.adapter.adapter_config.headers || {}
    };
    if (this.adapter.adapter_config.api_key_header !== "none") {
      if (this.adapter.adapter_config.api_key_header) {
        headers[this.adapter.adapter_config.api_key_header] = this.adapter.api_key;
      } else if (this.adapter.api_key) {
        headers["Authorization"] = `Bearer ${this.adapter.api_key}`;
      }
    }
    return headers;
  }
  /**
   * Convert request to platform-specific format
   * @returns {Object} Platform-specific request parameters
   */
  to_platform(streaming = false) {
    return this.to_openai(streaming);
  }
  /**
   * Convert request to OpenAI format
   * @returns {Object} Request parameters in OpenAI format
   */
  to_openai(streaming = false) {
    const body = {
      messages: this._transform_messages_to_openai(),
      model: this.model,
      // TODO max_completion_tokens
      temperature: this.temperature,
      stream: streaming,
      ...this.tools && { tools: this._transform_tools_to_openai() }
    };
    if (body.tools?.length > 0 && this.tool_choice && this.tool_choice !== "none") {
      body.tool_choice = this.tool_choice;
    }
    if (this.model?.startsWith("o1-")) {
      body.messages = body.messages.filter((m) => m.role !== "system");
      delete body.temperature;
    }
    if (typeof this._req.top_p === "number") body.top_p = this._req.top_p;
    if (typeof this._req.presence_penalty === "number") body.presence_penalty = this._req.presence_penalty;
    if (typeof this._req.frequency_penalty === "number") body.frequency_penalty = this._req.frequency_penalty;
    return {
      url: this.adapter.endpoint,
      method: "POST",
      headers: this.get_headers(),
      body: JSON.stringify(body)
    };
  }
  /**
   * Transform messages to OpenAI format
   * @returns {Array<Object>} Transformed messages array
   * @private
   */
  _transform_messages_to_openai() {
    return this.messages.map((message) => this._transform_single_message_to_openai(message));
  }
  /**
   * Transform a single message to OpenAI format
   * @param {Object} message - Message object to transform
   * @returns {Object} Transformed message object
   * @private
   */
  _transform_single_message_to_openai(message) {
    const transformed = {
      role: this._get_openai_role(message.role),
      content: this._get_openai_content(message)
    };
    if (message.name) transformed.name = message.name;
    if (message.tool_calls) transformed.tool_calls = this._transform_tool_calls_to_openai(message.tool_calls);
    if (message.image_url) transformed.image_url = message.image_url;
    if (message.tool_call_id) transformed.tool_call_id = message.tool_call_id;
    return transformed;
  }
  /**
   * Get the OpenAI role for a given role.
   * @param {string} role - The role to transform.
   * @returns {string} The transformed role.
   * @private
   */
  _get_openai_role(role) {
    return role;
  }
  /**
   * Get the OpenAI content for a given content.
   * @param {string} content - The content to transform.
   * @returns {string} The transformed content.
   * @private
   */
  _get_openai_content(message) {
    return message.content;
  }
  /**
   * Transform tool calls to OpenAI format.
   * @param {Array} tool_calls - Array of tool call objects.
   * @returns {Array} Transformed tool calls array.
   * @private
   */
  _transform_tool_calls_to_openai(tool_calls) {
    return tool_calls.map((tool_call) => ({
      id: tool_call.id,
      type: tool_call.type,
      function: {
        name: tool_call.function.name,
        arguments: tool_call.function.arguments
      }
    }));
  }
  /**
   * Transform tools to OpenAI format.
   * @returns {Array} Transformed tools array.
   * @private
   */
  _transform_tools_to_openai() {
    return this.tools.map((tool2) => ({
      type: tool2.type,
      function: {
        name: tool2.function.name,
        description: tool2.function.description,
        parameters: tool2.function.parameters
      }
    }));
  }
};
var SmartChatModelResponseAdapter = class {
  // must be getter to prevent erroneous assignment
  static get platform_res() {
    return {
      id: "",
      object: "chat.completion",
      created: 0,
      model: "",
      choices: [],
      usage: {}
    };
  }
  /**
   * @constructor
   * @param {SmartChatModelAdapter} adapter - The SmartChatModelAdapter instance
   * @param {Object} res - The response object
   */
  constructor(adapter, res) {
    this.adapter = adapter;
    this._res = res || this.constructor.platform_res;
  }
  /**
   * Get response ID
   * @returns {string|null} Response ID
   */
  get id() {
    return this._res.id || null;
  }
  /**
   * Get response object type
   * @returns {string|null} Object type
   */
  get object() {
    return this._res.object || null;
  }
  /**
   * Get creation timestamp
   * @returns {number|null} Creation timestamp
   */
  get created() {
    return this._res.created || null;
  }
  /**
   * Get response choices
   * @returns {Array<Object>} Array of choice objects
   */
  get choices() {
    return this._res.choices || [];
  }
  /**
   * Get first tool call if present
   * @returns {Object|null} Tool call object
   */
  get tool_call() {
    return this.message.tool_calls?.[0] || null;
  }
  /**
   * Get tool name from first tool call
   * @returns {string|null} Tool name
   */
  get tool_name() {
    return this.tool_call?.tool_name || null;
  }
  /**
   * Get tool call parameters
   * @returns {Object|null} Tool parameters
   */
  get tool_call_content() {
    return this.tool_call?.parameters || null;
  }
  /**
   * Get token usage statistics
   * @returns {Object|null} Usage statistics
   */
  get usage() {
    return this._res.usage || null;
  }
  get error() {
    return this._res.error || null;
  }
  /**
   * Convert response to OpenAI format
   * @returns {Object} Response in OpenAI format
   */
  to_openai() {
    const res = {
      id: this.id,
      object: this.object,
      created: this.created,
      choices: this._transform_choices_to_openai(),
      usage: this._transform_usage_to_openai(),
      raw: this._res
    };
    if (this.error) res.error = this.error;
    return res;
  }
  /**
   * Parse chunk adds delta to content as expected output format
   */
  handle_chunk(chunk) {
    if (chunk === "data: [DONE]") return;
    chunk = JSON.parse(chunk.split("data: ")[1] || "{}");
    if (Object.keys(chunk).length === 0) return;
    if (!this._res.choices[0]) {
      this._res.choices.push({
        message: {
          index: 0,
          role: "assistant",
          content: ""
        }
      });
    }
    if (!this._res.id) {
      this._res.id = chunk.id;
    }
    if (chunk.choices?.[0]?.delta?.content) {
      this._res.choices[0].message.content += chunk.choices[0].delta.content;
    }
    if (chunk.choices?.[0]?.delta?.tool_calls) {
      if (!this._res.choices[0].message.tool_calls) {
        this._res.choices[0].message.tool_calls = [{
          id: "",
          type: "function",
          function: {
            name: "",
            arguments: ""
          }
        }];
      }
      if (chunk.choices[0].delta.tool_calls[0].id) {
        this._res.choices[0].message.tool_calls[0].id += chunk.choices[0].delta.tool_calls[0].id;
      }
      if (chunk.choices[0].delta.tool_calls[0].function.name) {
        this._res.choices[0].message.tool_calls[0].function.name += chunk.choices[0].delta.tool_calls[0].function.name;
      }
      if (chunk.choices[0].delta.tool_calls[0].function.arguments) {
        this._res.choices[0].message.tool_calls[0].function.arguments += chunk.choices[0].delta.tool_calls[0].function.arguments;
      }
    }
  }
  /**
   * Transform choices to OpenAI format.
   * @returns {Array} Transformed choices array.
   * @private
   */
  _transform_choices_to_openai() {
    return this.choices.map((choice) => ({
      index: choice.index,
      message: this._transform_message_to_openai(choice.message),
      finish_reason: this._get_openai_finish_reason(choice.finish_reason)
    }));
  }
  /**
   * Transform a single message to OpenAI format.
   * @param {Object} message - The message object to transform.
   * @returns {Object} Transformed message object.
   * @private
   */
  _transform_message_to_openai(message = {}) {
    const transformed = {
      role: this._get_openai_role(message.role),
      content: this._get_openai_content(message)
    };
    if (message.name) transformed.name = message.name;
    if (message.tool_calls) transformed.tool_calls = this._transform_tool_calls_to_openai(message.tool_calls);
    if (message.image_url) transformed.image_url = message.image_url;
    return transformed;
  }
  /**
   * Get the OpenAI role for a given role.
   * @param {string} role - The role to transform.
   * @returns {string} The transformed role.
   * @private
   */
  _get_openai_role(role) {
    return role;
  }
  /**
   * Get the OpenAI content for a given content.
   * @param {string} content - The content to transform.
   * @returns {string} The transformed content.
   * @private
   */
  _get_openai_content(message) {
    return message.content;
  }
  /**
   * Get the OpenAI finish reason for a given finish reason.
   * @param {string} finish_reason - The finish reason to transform.
   * @returns {string} The transformed finish reason.
   * @private
   */
  _get_openai_finish_reason(finish_reason) {
    return finish_reason;
  }
  /**
   * Transform usage to OpenAI format.
   * @returns {Object} Transformed usage object.
   * @private
   */
  _transform_usage_to_openai() {
    return this.usage;
  }
  /**
   * Transform tool calls to OpenAI format.
   * @param {Array} tool_calls - Array of tool call objects.
   * @returns {Array} Transformed tool calls array.
   * @private
   */
  _transform_tool_calls_to_openai(tool_calls) {
    return tool_calls.map((tool_call) => ({
      id: tool_call.id,
      type: tool_call.type,
      function: {
        name: tool_call.function.name,
        arguments: tool_call.function.arguments
      }
    }));
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/anthropic.js
var SmartChatModelAnthropicAdapter = class extends SmartChatModelApiAdapter {
  static key = "anthropic";
  static defaults = {
    description: "Anthropic Claude",
    type: "API",
    endpoint: "https://api.anthropic.com/v1/messages",
    streaming: true,
    api_key_header: "x-api-key",
    headers: {
      "anthropic-version": "2023-06-01",
      "anthropic-beta": "tools-2024-04-04",
      "anthropic-dangerous-direct-browser-access": true
    },
    adapter: "Anthropic",
    models_endpoint: false,
    default_model: "claude-opus-4-1-20250805",
    signup_url: "https://console.anthropic.com/login?returnTo=%2Fsettings%2Fkeys",
    can_use_tools: true
  };
  /**
   * Get request adapter class
   * @returns {typeof SmartChatModelAnthropicRequestAdapter} Request adapter class
   */
  get req_adapter() {
    return SmartChatModelAnthropicRequestAdapter;
  }
  /**
   * Get response adapter class
   * @returns {typeof SmartChatModelAnthropicResponseAdapter} Response adapter class
   */
  res_adapter = SmartChatModelAnthropicResponseAdapter;
  /**
   * Validate parameters for getting models
   * @returns {boolean} Always true since models are hardcoded
   */
  validate_get_models_params() {
    return true;
  }
  /**
   * Get available models (hardcoded list) and enrich via models.dev
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models() {
    try {
      this.model_data = this.anthropic_models;
      this.model_data = await this.get_enriched_model_data();
      this.model_data_loaded_at = Date.now();
      this.adapter_settings.models = this.model_data;
      setTimeout(() => {
        this.model.re_render_settings();
      }, 100);
      return this.model_data;
    } catch {
      return this.anthropic_models;
    }
  }
  is_end_of_stream(event) {
    return event.data.includes("message_stop");
  }
  /**
   * Get hardcoded list of available models
   * @returns {Object} Map of model objects with capabilities and limits
   */
  get anthropic_models() {
    return {
      // ── Claude 4 family ──────────────────────────────────────────────────────
      "claude-opus-4-1-20250805": {
        name: "Claude Opus 4.1 (2025-08-05)",
        id: "claude-opus-4-1-20250805",
        model_name: "claude-opus-4-1-20250805",
        description: "Anthropic Claude Opus 4.1 snapshot (2025-08-05)",
        max_input_tokens: 2e5,
        max_output_tokens: 32e3,
        multimodal: true
      },
      "claude-opus-4-20250514": {
        name: "Claude Opus 4 (2025-05-14)",
        id: "claude-opus-4-20250514",
        model_name: "claude-opus-4-20250514",
        description: "Anthropic Claude Opus 4 snapshot (2025-05-14)",
        max_input_tokens: 2e5,
        max_output_tokens: 32e3,
        multimodal: true
      },
      "claude-sonnet-4-20250514": {
        name: "Claude Sonnet 4 (2025-05-14)",
        id: "claude-sonnet-4-20250514",
        model_name: "claude-sonnet-4-20250514",
        description: "Anthropic Claude Sonnet 4 snapshot (2025-05-14)",
        max_input_tokens: 2e5,
        max_output_tokens: 64e3,
        multimodal: true
      },
      // ── Claude 3.7 family ───────────────────────────────────────────────────
      "claude-3-7-sonnet-latest": {
        name: "Claude 3.7 Sonnet (latest)",
        id: "claude-3-7-sonnet-latest",
        model_name: "claude-3-7-sonnet-latest",
        description: "Anthropic Claude 3.7 Sonnet (rolling-latest)",
        max_input_tokens: 2e5,
        max_output_tokens: 64e3,
        multimodal: true
      },
      "claude-3-7-sonnet-20250219": {
        name: "Claude 3.7 Sonnet (2025-02-19)",
        id: "claude-3-7-sonnet-20250219",
        model_name: "claude-3-7-sonnet-20250219",
        description: "Anthropic Claude 3.7 Sonnet snapshot (2025-02-19)",
        max_input_tokens: 2e5,
        max_output_tokens: 64e3,
        multimodal: true
      },
      // ── Claude 3.5 family ───────────────────────────────────────────────────
      "claude-3-5-sonnet-latest": {
        name: "Claude 3.5 Sonnet (latest)",
        id: "claude-3-5-sonnet-latest",
        model_name: "claude-3-5-sonnet-latest",
        description: "Anthropic Claude 3.5 Sonnet (rolling-latest)",
        max_input_tokens: 2e5,
        max_output_tokens: 8192,
        multimodal: true
      },
      "claude-3-5-sonnet-20241022": {
        name: "Claude 3.5 Sonnet (2024-10-22)",
        id: "claude-3-5-sonnet-20241022",
        model_name: "claude-3-5-sonnet-20241022",
        description: "Anthropic Claude 3.5 Sonnet snapshot (2024-10-22)",
        max_input_tokens: 2e5,
        max_output_tokens: 8192,
        multimodal: true
      },
      "claude-3-5-haiku-latest": {
        name: "Claude 3.5 Haiku (latest)",
        id: "claude-3-5-haiku-latest",
        model_name: "claude-3-5-haiku-latest",
        description: "Anthropic Claude 3.5 Haiku (rolling-latest)",
        max_input_tokens: 2e5,
        max_output_tokens: 8192
      },
      "claude-3-5-haiku-20241022": {
        name: "Claude 3.5 Haiku (2024-10-22)",
        id: "claude-3-5-haiku-20241022",
        model_name: "claude-3-5-haiku-20241022",
        description: "Anthropic Claude 3.5 Haiku snapshot (2024-10-22)",
        max_input_tokens: 2e5,
        max_output_tokens: 8192
      },
      // ── Claude 3 family ─────────────────────────────────────────────────────
      "claude-3-opus-latest": {
        name: "Claude 3 Opus (latest)",
        id: "claude-3-opus-latest",
        model_name: "claude-3-opus-latest",
        description: "Anthropic Claude 3 Opus (rolling-latest)",
        max_input_tokens: 2e5,
        max_output_tokens: 4096,
        multimodal: true
      },
      "claude-3-opus-20240229": {
        name: "Claude 3 Opus (2024-02-29)",
        id: "claude-3-opus-20240229",
        model_name: "claude-3-opus-20240229",
        description: "Anthropic Claude 3 Opus snapshot (2024-02-29)",
        max_input_tokens: 2e5,
        max_output_tokens: 4096,
        multimodal: true
      },
      "claude-3-sonnet-20240229": {
        name: "Claude 3 Sonnet (2024-02-29)",
        id: "claude-3-sonnet-20240229",
        model_name: "claude-3-sonnet-20240229",
        description: "Anthropic Claude 3 Sonnet snapshot (2024-02-29)",
        max_input_tokens: 2e5,
        max_output_tokens: 4096,
        multimodal: true
      },
      "claude-3-haiku-20240307": {
        name: "Claude 3 Haiku (2024-03-07)",
        id: "claude-3-haiku-20240307",
        model_name: "claude-3-haiku-20240307",
        description: "Anthropic Claude 3 Haiku snapshot (2024-03-07)",
        max_input_tokens: 2e5,
        max_output_tokens: 4096,
        multimodal: true
      }
    };
  }
};
var SmartChatModelAnthropicRequestAdapter = class extends SmartChatModelRequestAdapter {
  /**
   * Convert request to Anthropic format
   * @returns {Object} Request parameters in Anthropic format
   */
  to_platform(streaming = false) {
    return this.to_anthropic(streaming);
  }
  /**
   * Convert request to Anthropic format
   * @returns {Object} Request parameters in Anthropic format
   */
  to_anthropic(streaming = false) {
    this.anthropic_body = {
      model: this.model,
      max_tokens: this.max_tokens,
      temperature: this.temperature,
      stream: streaming
    };
    this.anthropic_body.messages = this._transform_messages_to_anthropic();
    if (this.tools) {
      this.anthropic_body.tools = this._transform_tools_to_anthropic();
    }
    if (this.tool_choice) {
      this.anthropic_body.tool_choice = this.tool_choice === "auto" ? { type: "auto" } : { type: "tool", name: this.tool_choice.function.name };
    }
    return {
      url: this.adapter.endpoint,
      method: "POST",
      headers: this.get_headers(),
      body: JSON.stringify(this.anthropic_body)
    };
  }
  /**
   * Transform messages to Anthropic format
   * @returns {Array<Object>} Messages in Anthropic format
   * @private
   */
  _transform_messages_to_anthropic() {
    let anthropic_messages = [];
    for (const message of this.messages) {
      if (message.role === "system") {
        if (!this.anthropic_body.system) this.anthropic_body.system = "";
        else this.anthropic_body.system += "\n\n";
        this.anthropic_body.system += Array.isArray(message.content) ? message.content.map((part) => part.text).join("\n") : message.content;
      } else if (message.role === "tool") {
        const msg = {
          role: "user",
          content: [
            {
              type: "tool_result",
              tool_use_id: message.tool_call_id,
              content: message.content
            }
          ]
        };
        anthropic_messages.push(msg);
      } else {
        const msg = {
          role: this._get_anthropic_role(message.role),
          content: this._get_anthropic_content(message.content)
        };
        if (message.tool_calls?.length > 0) msg.content = this._transform_tool_calls_to_content(message.tool_calls);
        anthropic_messages.push(msg);
      }
    }
    return anthropic_messages;
  }
  /**
   * Transform tool calls to Anthropic format
   * @param {Array<Object>} tool_calls - Tool calls
   * @returns {Array<Object>} Tool calls in Anthropic format
   * @private
   */
  _transform_tool_calls_to_content(tool_calls) {
    return tool_calls.map((tool_call) => ({
      type: "tool_use",
      id: tool_call.id,
      name: tool_call.function.name,
      input: JSON.parse(tool_call.function.arguments)
    }));
  }
  /**
   * Transform role to Anthropic format
   * @param {string} role - Original role
   * @returns {string} Role in Anthropic format
   * @private
   */
  _get_anthropic_role(role) {
    const role_map = {
      function: "assistant",
      // Anthropic doesn't have a function role, so we'll treat it as assistant
      tool: "user"
    };
    return role_map[role] || role;
  }
  /**
   * Transform content to Anthropic format
   * @param {string|Array} content - Original content
   * @returns {string|Array} Content in Anthropic format
   * @private
   */
  _get_anthropic_content(content) {
    if (Array.isArray(content)) {
      return content.map((item) => {
        if (item.type === "text") return { type: "text", text: item.text };
        if (item.type === "image_url") {
          return {
            type: "image",
            source: {
              type: "base64",
              media_type: item.image_url.url.split(";")[0].split(":")[1],
              data: item.image_url.url.split(",")[1]
            }
          };
        }
        if (item.type === "file" && item.file?.filename?.toLowerCase().endsWith(".pdf")) {
          if (item.file?.file_data) {
            return {
              type: "document",
              source: {
                type: "base64",
                media_type: "application/pdf",
                data: item.file.file_data.split(",")[1]
              }
            };
          }
        }
        return item;
      });
    }
    return content;
  }
  /**
     * Transform tools to Anthropic format
     * @returns {Array<Object>} Tools in Anthropic format
     * @private
     */
  _transform_tools_to_anthropic() {
    if (!this.tools) return void 0;
    return this.tools.map((tool2) => ({
      name: tool2.function.name,
      description: tool2.function.description,
      input_schema: tool2.function.parameters
    }));
  }
};
var SmartChatModelAnthropicResponseAdapter = class extends SmartChatModelResponseAdapter {
  static get platform_res() {
    return {
      content: [],
      id: "",
      model: "",
      role: "assistant",
      stop_reason: null,
      stop_sequence: null,
      type: "message",
      usage: {
        input_tokens: 0,
        output_tokens: 0
      }
    };
  }
  /**
   * Convert response to OpenAI format
   * @returns {Object} Response in OpenAI format
   */
  to_openai() {
    return {
      id: this._res.id,
      object: "chat.completion",
      created: Date.now(),
      choices: [
        {
          index: 0,
          message: this._transform_message_to_openai(),
          finish_reason: this._get_openai_finish_reason(this._res.stop_reason)
        }
      ],
      usage: this._transform_usage_to_openai()
    };
  }
  /**
   * Transform message to OpenAI format
   * @returns {Object} Message in OpenAI format
   * @private
   */
  _transform_message_to_openai() {
    const message = {
      role: "assistant",
      content: "",
      tool_calls: []
    };
    if (Array.isArray(this._res.content)) {
      for (const content of this._res.content) {
        if (content.type === "text") {
          message.content += (message.content ? "\n\n" : "") + content.text;
        } else if (content.type === "tool_use") {
          message.tool_calls.push({
            id: content.id,
            type: "function",
            function: {
              name: content.name,
              arguments: JSON.stringify(content.input)
            }
          });
        }
      }
    } else {
      message.content = this._res.content;
    }
    if (message.tool_calls.length === 0) {
      delete message.tool_calls;
    }
    return message;
  }
  /**
   * Transform finish reason to OpenAI format
   * @param {string} stop_reason - Original finish reason
   * @returns {string} Finish reason in OpenAI format
   * @private
   */
  _get_openai_finish_reason(stop_reason) {
    const reason_map = {
      "end_turn": "stop",
      "max_tokens": "length",
      "tool_use": "function_call"
    };
    return reason_map[stop_reason] || stop_reason;
  }
  /**
   * Transform usage statistics to OpenAI format
   * @returns {Object} Usage statistics in OpenAI format
   * @private
   */
  _transform_usage_to_openai() {
    if (!this._res.usage) {
      return {
        prompt_tokens: 0,
        completion_tokens: 0,
        total_tokens: 0
      };
    }
    return {
      prompt_tokens: this._res.usage.input_tokens || 0,
      completion_tokens: this._res.usage.output_tokens || 0,
      total_tokens: (this._res.usage.input_tokens || 0) + (this._res.usage.output_tokens || 0)
    };
  }
  handle_chunk(chunk) {
    if (!chunk.startsWith("data: ")) return;
    chunk = JSON.parse(chunk.slice(6));
    if (!this._res.content.length) {
      this._res.content = [
        {
          type: "text",
          text: ""
        }
      ];
    }
    if (chunk.message?.id) {
      this._res.id = chunk.message.id;
    }
    if (chunk.message?.model) {
      this._res.model = chunk.message.model;
    }
    if (chunk.message?.role) {
      this._res.role = chunk.message.role;
    }
    if (chunk.delta?.type === "text_delta") {
      this._res.content[0].text += chunk.delta.text;
    }
    if (chunk.delta?.stop_reason) {
      this._res.stop_reason = chunk.delta.stop_reason;
    }
    if (chunk.usage) {
      this._res.usage = {
        ...this._res.usage,
        ...chunk.usage
      };
    }
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/openai.js
var EXCLUDED_PREFIXES = [
  "text-",
  "davinci",
  "babbage",
  "ada",
  "curie",
  "dall-e",
  "whisper",
  "omni",
  "tts",
  "gpt-4o-mini-tts",
  "computer-use",
  "codex",
  "gpt-4o-transcribe",
  "gpt-4o-mini-transcribe",
  "gpt-4o-mini-realtime",
  "gpt-4o-realtime",
  "o4-mini-deep-research",
  "o3-deep-research",
  "gpt-image"
];
var SmartChatModelOpenaiAdapter = class extends SmartChatModelApiAdapter {
  static key = "openai";
  static defaults = {
    description: "OpenAI",
    type: "API",
    endpoint: "https://api.openai.com/v1/chat/completions",
    streaming: true,
    models_endpoint: "https://api.openai.com/v1/models",
    default_model: "gpt-5-nano",
    signup_url: "https://platform.openai.com/api-keys",
    can_use_tools: true
  };
  res_adapter = SmartChatModelOpenaiResponseAdapter;
  /**
   * Parse model data from OpenAI API response.
   * Filters for GPT models and adds context window information.
   * @param {Object} model_data - Raw model data from OpenAI
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    return model_data.data.filter((model) => !EXCLUDED_PREFIXES.some((m) => model.id.startsWith(m)) && !model.id.includes("-instruct")).reduce((acc, model) => {
      const out = {
        model_name: model.id,
        id: model.id,
        multimodal: true,
        can_use_tools: true,
        max_input_tokens: get_max_input_tokens(model.id)
      };
      acc[model.id] = out;
      return acc;
    }, {});
  }
  /**
   * Override the HTTP method for fetching models.
   */
  models_endpoint_method = "GET";
  /**
   * Test the API key by attempting to fetch models.
   * @returns {Promise<boolean>} True if API key is valid
   */
  async test_api_key() {
    const models = await this.get_models();
    return models.length > 0;
  }
  /**
   * Get settings configuration for OpenAI adapter.
   * Adds image resolution setting for multimodal models.
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    const config = super.settings_config;
    if (this.adapter?.model_config?.multimodal) {
      config["[CHAT_ADAPTER].image_resolution"] = {
        name: "Image Resolution",
        type: "dropdown",
        description: "Select the image resolution for the chat model.",
        option_1: "low",
        option_2: "high",
        default: "low"
      };
    }
    config["[CHAT_ADAPTER].open_ai_note"] = {
      name: "Note about using OpenAI",
      type: "html",
      value: "<b>OpenAI models:</b> Some models require extra verification steps in your OpenAI account for them to appear in the model list."
    };
    return config;
  }
};
function get_max_input_tokens(model_id) {
  if (model_id.startsWith("gpt-4.1")) {
    return 1e6;
  }
  if (model_id.startsWith("o")) {
    return 2e5;
  }
  if (model_id.startsWith("gpt-5")) {
    return 4e5;
  }
  if (model_id.startsWith("gpt-4o") || model_id.startsWith("gpt-4.5") || model_id.startsWith("gpt-4-turbo")) {
    return 128e3;
  }
  if (model_id.startsWith("gpt-4")) {
    return 8192;
  }
  if (model_id.startsWith("gpt-3")) {
    return 16385;
  }
  return 8e3;
}
var SmartChatModelOpenaiResponseAdapter = class extends SmartChatModelResponseAdapter {
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/azure.js
var SmartChatModelAzureAdapter = class extends SmartChatModelOpenaiAdapter {
  static key = "azure";
  static defaults = {
    description: "Azure OpenAI",
    type: "API",
    adapter: "AzureOpenAI",
    streaming: true,
    api_key_header: "api-key",
    azure_resource_name: "",
    azure_deployment_name: "",
    azure_api_version: "2024-10-01-preview",
    default_model: "gpt-35-turbo",
    signup_url: "https://learn.microsoft.com/azure/cognitive-services/openai/quickstart?tabs=command-line",
    models_endpoint: "https://{azure_resource_name}.openai.azure.com/openai/deployments?api-version={azure_api_version}",
    can_use_tools: true
  };
  /**
   * Override the settings configuration to include Azure-specific fields.
   */
  get settings_config() {
    return {
      ...super.settings_config,
      "[CHAT_ADAPTER].azure_resource_name": {
        name: "Azure Resource Name",
        type: "text",
        description: "The name of your Azure OpenAI resource (e.g. 'my-azure-openai').",
        default: ""
      },
      "[CHAT_ADAPTER].azure_deployment_name": {
        name: "Azure Deployment Name",
        type: "text",
        description: "The name of your specific model deployment (e.g. 'gpt35-deployment').",
        default: ""
      },
      "[CHAT_ADAPTER].azure_api_version": {
        name: "Azure API Version",
        type: "text",
        description: "The API version for Azure OpenAI (e.g. '2024-10-01-preview').",
        default: "2024-10-01-preview"
      }
    };
  }
  /**
   * Build the endpoint dynamically based on Azure settings.
   * Example:
   *  https://<RESOURCE>.openai.azure.com/openai/deployments/<DEPLOYMENT>/chat/completions?api-version=2023-05-15
   */
  get endpoint() {
    const { azure_resource_name, azure_deployment_name, azure_api_version } = this.adapter_config;
    return `https://${azure_resource_name}.openai.azure.com/openai/deployments/${azure_deployment_name}/chat/completions?api-version=${azure_api_version}`;
  }
  /**
   * For streaming, we can reuse the same endpoint. 
   * The request body includes `stream: true` which the base class uses.
   */
  get endpoint_streaming() {
    return this.endpoint;
  }
  /**
   * The models endpoint for retrieving a list of your deployments.
   * E.g.:
   *   https://<RESOURCE>.openai.azure.com/openai/deployments?api-version=2023-05-15
   */
  get models_endpoint() {
    const { azure_resource_name, azure_api_version } = this.adapter_config;
    return `https://${azure_resource_name}.openai.azure.com/openai/deployments?api-version=${azure_api_version}`;
  }
  /**
   * Azure returns a list of deployments in the shape:
   * {
   *   "object": "list",
   *   "data": [
   *     {
   *       "id": "mydeployment",
   *       "model": "gpt-35-turbo",
   *       "status": "succeeded",
   *       "createdAt": ...
   *       "updatedAt": ...
   *       ...
   *     },
   *     ...
   *   ]
   * }
   * We'll parse them into a dictionary keyed by deployment ID.
   */
  parse_model_data(model_data) {
    if (model_data.object !== "list" || !Array.isArray(model_data.data)) {
      return { "_": { id: "No deployments found." } };
    }
    const parsed = {};
    for (const d of model_data.data) {
      parsed[d.id] = {
        model_name: d.id,
        id: d.id,
        raw: d,
        // You can add more details if you want:
        description: `Model: ${d.model}, Status: ${d.status}`,
        // Hard to guess tokens; omit or guess:
        max_input_tokens: 4e3
      };
    }
    return parsed;
  }
  /**
   * Validate the Azure configuration fields.
   */
  validate_config() {
    const { azure_resource_name, azure_deployment_name, azure_api_version } = this.adapter_config;
    if (!azure_resource_name) {
      return { valid: false, message: "Azure resource name is missing." };
    }
    if (!azure_deployment_name) {
      return { valid: false, message: "Azure deployment name is missing." };
    }
    if (!azure_api_version) {
      return { valid: false, message: "Azure API version is missing." };
    }
    if (!this.api_key) {
      return { valid: false, message: "Azure OpenAI API key is missing." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/google.js
var SmartChatModelGoogleAdapter = class extends SmartChatModelApiAdapter {
  static key = "google";
  static defaults = {
    description: "Google (Gemini)",
    type: "API",
    api_key_header: "none",
    endpoint: "https://generativelanguage.googleapis.com/v1beta/models/MODEL_NAME:generateContent",
    endpoint_streaming: "https://generativelanguage.googleapis.com/v1beta/models/MODEL_NAME:streamGenerateContent",
    streaming: true,
    adapter: "Gemini",
    models_endpoint: "https://generativelanguage.googleapis.com/v1beta/models",
    default_model: "gemini-1.5-pro",
    signup_url: "https://ai.google.dev/",
    can_use_tools: true
  };
  streaming_chunk_splitting_regex = /(\r\n|\n|\r){2}/g;
  // handle Google's BS (split on double newlines only)
  /**
   * Get request adapter class
   */
  req_adapter = SmartChatModelGeminiRequestAdapter;
  /**
   * Get response adapter class
   */
  res_adapter = SmartChatModelGeminiResponseAdapter;
  /**
   * Uses Gemini's dedicated token counting endpoint
   */
  async count_tokens(input) {
    const req = {
      url: `https://generativelanguage.googleapis.com/v1beta/models/${this.model_key}:countTokens?key=${this.api_key}`,
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(this.prepare_token_count_body(input))
    };
    const resp = await this.http_adapter.request(req);
    return resp.json.totalTokens;
  }
  /**
   * Formats input for token counting based on type
   * @private
   */
  prepare_token_count_body(input) {
    if (typeof input === "string") {
      return { contents: [{ parts: [{ text: input }] }] };
    } else if (Array.isArray(input)) {
      return { contents: input.map((msg) => this.transform_message_for_token_count(msg)) };
    } else if (typeof input === "object") {
      return { contents: [this.transform_message_for_token_count(input)] };
    }
    throw new Error("Invalid input for count_tokens");
  }
  /**
   * Transforms message for token counting, handling text and images
   * @private
   */
  transform_message_for_token_count(message) {
    return {
      role: message.role === "assistant" ? "model" : message.role,
      parts: Array.isArray(message.content) ? message.content.map((part) => {
        if (part.type === "text") return { text: part.text };
        if (part.type === "image_url") return {
          inline_data: {
            mime_type: part.image_url.url.split(";")[0].split(":")[1],
            data: part.image_url.url.split(",")[1]
          }
        };
        return part;
      }) : [{ text: message.content }]
    };
  }
  /**
   * Builds endpoint URLs with model and API key
   */
  get endpoint() {
    return `https://generativelanguage.googleapis.com/v1beta/models/${this.model_key}:generateContent?key=${this.api_key}`;
  }
  get endpoint_streaming() {
    return `https://generativelanguage.googleapis.com/v1beta/models/${this.model_key}:streamGenerateContent?key=${this.api_key}`;
  }
  // /**
  //  * Extracts text from Gemini's streaming format
  //  */
  // get_text_chunk_from_stream(event) {
  //   const data = JSON.parse(event.data);
  //   return data.candidates[0]?.content?.parts[0]?.text || '';
  // }
  /**
   * Get models endpoint URL with API key
   * @returns {string} Complete models endpoint URL
   */
  get models_endpoint() {
    return `${this.constructor.defaults.models_endpoint}?key=${this.api_key}`;
  }
  /**
   * Get HTTP method for models endpoint
   * @returns {string} HTTP method ("GET")
   */
  get models_endpoint_method() {
    return "GET";
  }
  get models_request_params() {
    return {
      url: this.models_endpoint,
      method: this.models_endpoint_method
    };
  }
  /**
   * Parse model data from Gemini API response
   * @param {Object} model_data - Raw model data from API
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    return model_data.models.filter((model) => model.name.startsWith("models/gemini")).reduce((acc, model) => {
      const out = {
        model_name: model.name.split("/").pop(),
        id: model.name.split("/").pop(),
        max_input_tokens: model.inputTokenLimit,
        max_output_tokens: model.maxOutputTokens,
        description: model.description,
        multimodal: model.name.includes("vision") || model.description.includes("multimodal"),
        raw: model
      };
      acc[model.name.split("/").pop()] = out;
      return acc;
    }, {});
  }
  is_end_of_stream(event) {
    return event.data.includes('"finishReason"');
    return false;
  }
};
var SmartChatModelGeminiRequestAdapter = class extends SmartChatModelRequestAdapter {
  to_platform(streaming = false) {
    return this.to_gemini(streaming);
  }
  to_gemini(streaming = false) {
    const gemini_body = {
      contents: this._transform_messages_to_gemini(),
      generationConfig: {
        temperature: this.temperature,
        maxOutputTokens: this.max_tokens,
        topK: this._req.topK || 1,
        topP: this._req.topP || 1,
        stopSequences: this._req.stop || []
      },
      safetySettings: [
        {
          category: "HARM_CATEGORY_HARASSMENT",
          threshold: "BLOCK_NONE"
        },
        {
          category: "HARM_CATEGORY_HATE_SPEECH",
          threshold: "BLOCK_NONE"
        },
        {
          category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          threshold: "BLOCK_NONE"
        },
        {
          category: "HARM_CATEGORY_DANGEROUS_CONTENT",
          threshold: "BLOCK_NONE"
        }
      ]
    };
    if (this.tools) gemini_body.tools = this._transform_tools_to_gemini();
    if (gemini_body.tools && this.tool_choice !== "none") gemini_body.tool_config = this._transform_tool_choice_to_gemini();
    return {
      url: streaming ? this.adapter.endpoint_streaming : this.adapter.endpoint,
      method: "POST",
      headers: this.get_headers(),
      body: JSON.stringify(gemini_body)
    };
  }
  _transform_messages_to_gemini() {
    let gemini_messages = [];
    let system_message = "";
    for (const message of this.messages) {
      if (message.role === "system") {
        system_message += message.content + "\n";
      } else {
        gemini_messages.push({
          role: this._get_gemini_role(message.role),
          parts: this._transform_content_to_gemini(message.content)
        });
      }
    }
    if (system_message) {
      gemini_messages.unshift({
        role: "user",
        parts: [{ text: system_message.trim() }]
      });
    }
    return gemini_messages;
  }
  _get_gemini_role(role) {
    const role_map = {
      user: "user",
      assistant: "model",
      function: "model"
      // Gemini doesn't have a function role, so we'll treat it as model
    };
    return role_map[role] || role;
  }
  _transform_content_to_gemini(content) {
    if (Array.isArray(content)) {
      return content.map((part) => {
        if (part.type === "text") return { text: part.text };
        if (part.type === "image_url") {
          return {
            inline_data: {
              mime_type: part.image_url.url.split(";")[0].split(":")[1],
              data: part.image_url.url.split(",")[1]
            }
          };
        }
        if (part.type === "file" && part.file?.filename?.toLowerCase().endsWith(".pdf")) {
          if (part.file?.file_data) {
            return {
              inline_data: {
                mime_type: "application/pdf",
                data: part.file.file_data.split(",")[1]
              }
            };
          }
        }
        return part;
      });
    }
    return [{ text: content }];
  }
  _transform_tools_to_gemini() {
    return [{
      function_declarations: this.tools.map((tool2) => ({
        name: tool2.function.name,
        description: tool2.function.description,
        parameters: tool2.function.parameters
      }))
    }];
  }
  _transform_tool_choice_to_gemini() {
    return {
      function_calling_config: {
        mode: "ANY",
        allowed_function_names: this.tools.map((tool2) => tool2.function.name)
      }
    };
  }
};
var SmartChatModelGeminiResponseAdapter = class extends SmartChatModelResponseAdapter {
  static get platform_res() {
    return {
      candidates: [{
        content: {
          parts: [
            {
              text: ""
            }
          ],
          role: ""
        },
        finishReason: ""
      }],
      promptFeedback: {},
      usageMetadata: {}
    };
  }
  to_openai() {
    const first_candidate = this._res.candidates[0];
    if (!this._res.id) this._res.id = "gemini-" + Date.now().toString();
    return {
      id: this._res.id,
      object: "chat.completion",
      created: Date.now(),
      model: this.adapter.model_key,
      choices: [{
        index: 0,
        message: first_candidate?.content ? this._transform_message_to_openai(first_candidate.content) : "",
        finish_reason: this._get_openai_finish_reason(first_candidate.finishReason)
      }],
      usage: this._transform_usage_to_openai()
    };
  }
  _transform_message_to_openai(content) {
    const message = {
      role: "assistant",
      content: content.parts.filter((part) => part.text).map((part) => part.text).join("")
    };
    const function_call = content.parts.find((part) => part.functionCall);
    if (function_call) {
      message.tool_calls = [{
        type: "function",
        function: {
          name: function_call.functionCall.name,
          arguments: JSON.stringify(function_call.functionCall.args)
        }
      }];
    }
    return message;
  }
  _get_openai_finish_reason(finish_reason) {
    const reason_map = {
      "STOP": "stop",
      "MAX_TOKENS": "length",
      "SAFETY": "content_filter",
      "RECITATION": "content_filter",
      "OTHER": "null"
    };
    return reason_map[finish_reason] || finish_reason.toLowerCase();
  }
  _transform_usage_to_openai() {
    if (!this._res.usageMetadata) {
      return {
        prompt_tokens: null,
        completion_tokens: null,
        total_tokens: null
      };
    }
    return {
      prompt_tokens: this._res.usageMetadata.promptTokenCount || null,
      completion_tokens: this._res.usageMetadata.candidatesTokenCount || null,
      total_tokens: this._res.usageMetadata.totalTokenCount || null
    };
  }
  handle_chunk(chunk) {
    let chunk_trimmed = chunk.trim();
    if (["[", ","].includes(chunk_trimmed[0])) chunk_trimmed = chunk_trimmed.slice(1);
    if (["]", ","].includes(chunk_trimmed[chunk_trimmed.length - 1])) chunk_trimmed = chunk_trimmed.slice(0, -1);
    const data = JSON.parse(chunk_trimmed);
    if (data.candidates?.[0]?.content?.parts?.[0]?.text?.length) {
      this._res.candidates[0].content.parts[0].text += data.candidates[0].content.parts[0].text;
    }
    if (data.candidates?.[0]?.content?.role?.length) {
      this._res.candidates[0].content.role = data.candidates[0].content.role;
    }
    if (data.candidates?.[0]?.finishReason?.length) {
      this._res.candidates[0].finishReason += data.candidates[0].finishReason;
    }
    if (data.promptFeedback) {
      this._res.promptFeedback = {
        ...this._res.promptFeedback || {},
        ...data.promptFeedback
      };
    }
    if (data.usageMetadata) {
      this._res.usageMetadata = {
        ...this._res.usageMetadata || {},
        ...data.usageMetadata
      };
    }
    if (data.candidates?.[0]?.content?.parts?.[0]?.functionCall) {
      if (!this._res.candidates[0].content.parts[0].functionCall) {
        this._res.candidates[0].content.parts[0].functionCall = {
          name: "",
          args: {}
        };
      }
      this._res.candidates[0].content.parts[0].functionCall.name += data.candidates[0].content.parts[0].functionCall.name;
      if (data.candidates[0].content.parts[0].functionCall.args) {
        Object.entries(data.candidates[0].content.parts[0].functionCall.args).forEach(([key, value]) => {
          if (!this._res.candidates[0].content.parts[0].functionCall.args[key]) {
            this._res.candidates[0].content.parts[0].functionCall.args[key] = "";
          }
          this._res.candidates[0].content.parts[0].functionCall.args[key] += value;
        });
      }
    }
  }
};
var SmartChatModelGeminiAdapter = class extends SmartChatModelGoogleAdapter {
  static key = "gemini";
  static defaults = {
    description: "Gemini (SWITCH TO **GOOGLE** ADAPTER)",
    type: "API",
    api_key_header: "none",
    endpoint: "https://generativelanguage.googleapis.com/v1beta/models/MODEL_NAME:generateContent",
    endpoint_streaming: "https://generativelanguage.googleapis.com/v1beta/models/MODEL_NAME:streamGenerateContent",
    streaming: true,
    adapter: "Gemini",
    models_endpoint: "https://generativelanguage.googleapis.com/v1beta/models",
    default_model: "gemini-1.5-pro",
    signup_url: "https://ai.google.dev/",
    can_use_tools: true
  };
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/open_router.js
var SmartChatModelOpenRouterAdapter = class extends SmartChatModelApiAdapter {
  static key = "open_router";
  static defaults = {
    description: "Open Router",
    type: "API",
    endpoint: "https://openrouter.ai/api/v1/chat/completions",
    streaming: true,
    adapter: "OpenRouter",
    models_endpoint: "https://openrouter.ai/api/v1/models",
    default_model: "mistralai/mistral-7b-instruct:free",
    signup_url: "https://accounts.openrouter.ai/sign-up?redirect_url=https%3A%2F%2Fopenrouter.ai%2Fkeys",
    can_use_tools: true
  };
  /**
   * Get request adapter class
   * @returns {typeof SmartChatModelOpenRouterRequestAdapter} Request adapter class
   */
  get req_adapter() {
    return SmartChatModelOpenRouterRequestAdapter;
  }
  /**
   * Get response adapter class
   * @returns {typeof SmartChatModelOpenRouterResponseAdapter} Response adapter class
   */
  get res_adapter() {
    return SmartChatModelOpenRouterResponseAdapter;
  }
  /**
   * Get API key from various sources
   * @returns {string|undefined} API key if available
   */
  get api_key() {
    return this.main.opts.api_key || this.adapter_settings?.api_key || "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";
  }
  /**
   * Count tokens in input text (rough estimate)
   * @param {string|Object} input - Text to count tokens for
   * @returns {Promise<number>} Estimated token count
   */
  async count_tokens(input) {
    const text = typeof input === "string" ? input : JSON.stringify(input);
    return Math.ceil(text.length / 4);
  }
  get models_request_params() {
    return {
      url: this.models_endpoint,
      method: "GET"
    };
  }
  /**
   * Parse model data from OpenRouter API response
   * @param {Object} model_data - Raw model data
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    if (model_data.data) {
      model_data = model_data.data;
    }
    if (model_data.error) throw new Error(model_data.error);
    return model_data.reduce((acc, model) => {
      acc[model.id] = {
        model_name: model.id,
        id: model.id,
        max_input_tokens: model.context_length,
        description: model.name,
        can_use_tools: model.description.includes("tool use") || model.description.includes("function call"),
        multimodal: model.architecture.modality === "multimodal",
        raw: model
      };
      return acc;
    }, {});
  }
};
var SmartChatModelOpenRouterRequestAdapter = class extends SmartChatModelRequestAdapter {
  to_platform(stream = false) {
    const req = this.to_openai(stream);
    return req;
  }
  _get_openai_content(message) {
    if (message.role === "user") {
      if (Array.isArray(message.content) && message.content.every((part) => part.type === "text")) {
        return message.content.map((part) => part.text).join("\n");
      }
    }
    return message.content;
  }
};
var SmartChatModelOpenRouterResponseAdapter = class extends SmartChatModelResponseAdapter {
  static get platform_res() {
    return {
      id: "",
      object: "chat.completion",
      created: 0,
      model: "",
      choices: [],
      usage: {}
    };
  }
  to_platform() {
    return this.to_openai();
  }
  get object() {
    return "chat.completion";
  }
  get error() {
    if (!this._res.error) return null;
    const error = this._res.error;
    if (!error.message) error.message = "";
    if (this._res.error.metadata?.raw) {
      if (typeof this._res.error.metadata.raw === "string") {
        error.message += `

${this._res.error.metadata.raw}`;
      } else {
        error.message += `

${JSON.stringify(this._res.error.metadata.raw, null, 2)}`;
      }
    }
    return error;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/lm_studio.js
var SmartChatModelLmStudioAdapter = class extends SmartChatModelApiAdapter {
  static key = "lm_studio";
  /** @type {import('./_adapter.js').SmartChatModelAdapter['constructor']['defaults']} */
  static defaults = {
    description: "LM Studio (OpenAI\u2011compatible)",
    type: "API",
    endpoint: "http://localhost:1234/v1/chat/completions",
    streaming: true,
    adapter: "LM_Studio_OpenAI_Compat",
    models_endpoint: "http://localhost:1234/v1/models",
    default_model: "",
    signup_url: "https://lmstudio.ai/docs/api/openai-api",
    can_use_tools: true,
    api_key: "no api key required"
  };
  /* ------------------------------------------------------------------ *
   *  Request / Response classes
   * ------------------------------------------------------------------ */
  get req_adapter() {
    return SmartChatModelLmStudioRequestAdapter;
  }
  get res_adapter() {
    return SmartChatModelLmStudioResponseAdapter;
  }
  /* ------------------------------------------------------------------ *
   *  Settings
   * ------------------------------------------------------------------ */
  /**
   * Extend the base settings with a read‑only HTML block that reminds the
   * user to enable CORS inside LM Studio. The Smart View renderer treats
   * `type: "html"` as a static fragment, so no extra runtime logic is needed.
   */
  get settings_config() {
    const config = super.settings_config;
    delete config["[CHAT_ADAPTER].api_key"];
    return {
      ...config,
      "[CHAT_ADAPTER].cors_instructions": {
        /* visible only when this adapter is selected */
        name: "CORS required",
        type: "html",
        value: `<p>Before you can use LM Studio you must <strong>Enable CORS</strong> inside LM Studio \u2192 Developer \u2192 Settings</p>`
      }
    };
  }
  /* ------------------------------------------------------------------ *
   *  Model list helpers
   * ------------------------------------------------------------------ */
  /**
   * LM Studio returns an OpenAI‑style list; normalise to the project shape.
   */
  parse_model_data(model_data) {
    if (model_data.object !== "list" || !Array.isArray(model_data.data)) {
      return { _: { id: "No models found." } };
    }
    const out = {};
    for (const m of model_data.data) {
      out[m.id] = {
        id: m.id,
        model_name: m.id,
        description: `LM Studio model: ${m.id}`,
        multimodal: false
      };
    }
    return out;
  }
  get models_endpoint_method() {
    return "get";
  }
  /**
   * Count tokens in input text (no dedicated endpoint)
   * Rough estimate: 1 token ~ 4 chars
   * @param {string|Object} input
   * @returns {Promise<number>}
   */
  async count_tokens(input) {
    const text = typeof input === "string" ? input : JSON.stringify(input);
    return Math.ceil(text.length / 4);
  }
  /**
   * Test API key - LM Studio doesn't require API key. Always true.
   * @returns {Promise<boolean>}
   */
  async test_api_key() {
    return true;
  }
  get api_key() {
    return "no api key required";
  }
  /**
   * Validate configuration
   */
  validate_config() {
    if (!this.adapter_config.model_key) {
      return { valid: false, message: "No model selected." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};
var SmartChatModelLmStudioRequestAdapter = class extends SmartChatModelRequestAdapter {
  to_platform(streaming = false) {
    const req = this.to_openai(streaming);
    const body = JSON.parse(req.body);
    if (this.tool_choice?.function?.name) {
      const last_msg = body.messages[body.messages.length - 1];
      if (typeof last_msg.content === "string") {
        last_msg.content = [
          { type: "text", text: last_msg.content }
        ];
      }
      last_msg.content.push({
        type: "text",
        text: `Use the "${this.tool_choice.function.name}" tool.`
      });
      body.tool_choice = "required";
    } else if (body.tool_choice && typeof body.tool_choice === "object") {
      body.tool_choice = "auto";
    }
    req.body = JSON.stringify(body);
    return req;
  }
};
var SmartChatModelLmStudioResponseAdapter = class extends SmartChatModelResponseAdapter {
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/ollama.js
var SmartChatModelOllamaAdapter = class extends SmartChatModelApiAdapter {
  static key = "ollama";
  static defaults = {
    description: "Ollama (Local)",
    type: "API",
    // models_endpoint: "http://localhost:11434/api/tags",
    // endpoint: "http://localhost:11434/api/chat",
    api_key: "na",
    host: "http://localhost:11434",
    endpoint: "/api/chat",
    models_endpoint: "/api/tags",
    // streaming: false, // TODO: Implement streaming
    streaming: true
  };
  req_adapter = SmartChatModelOllamaRequestAdapter;
  res_adapter = SmartChatModelOllamaResponseAdapter;
  get endpoint() {
    return `${this.model_config.host}${this.model_config.endpoint}`;
  }
  get models_endpoint() {
    return `${this.model_config.host}${this.model_config.models_endpoint}`;
  }
  get model_show_endpoint() {
    return `${this.model_config.host}/api/show`;
  }
  get models_endpoint_method() {
    return "GET";
  }
  /**
   * Get available models from local Ollama instance
   * @param {boolean} [refresh=false] - Whether to refresh cached models
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models(refresh = false) {
    if (!refresh && typeof this.model_data === "object" && Object.keys(this.model_data || {}).length > 0 && this.model_data_loaded_at && time_now - this.model_data_loaded_at < 1 * 60 * 60 * 1e3) return this.model_data;
    try {
      const list_resp = await this.http_adapter.request(this.models_request_params);
      const list_data = await list_resp.json();
      const models_raw_data = [];
      for (const model of list_data.models) {
        const model_details_resp = await this.http_adapter.request({
          url: this.model_show_endpoint,
          method: "POST",
          body: JSON.stringify({ model: model.name })
        });
        const model_details_data = await model_details_resp.json();
        models_raw_data.push({ ...model_details_data, name: model.name });
      }
      this.model_data = this.parse_model_data(models_raw_data);
      await this.get_enriched_model_data();
      this.adapter_settings.models = this.model_data;
      this.model.re_render_settings();
      this.model_data_loaded_at = Date.now();
      return this.model_data;
    } catch (error) {
      console.error("Failed to fetch model data:", error);
      return { "_": { id: `Failed to fetch models from ${this.model.adapter_name}` } };
    }
  }
  /**
   * Parse model data from Ollama API response
   * @param {Object[]} model_data - Raw model data from Ollama
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    if (!Array.isArray(model_data)) {
      this.model_data = {};
      console.error("Invalid model data format from Ollama:", model_data);
      return {};
    }
    if (model_data.length === 0) {
      this.model_data = { "no_models_available": {
        id: "no_models_available",
        name: "No models currently available"
      } };
      return this.model_data;
    }
    return model_data.reduce((acc, model) => {
      const out = {
        model_name: model.name,
        id: model.name,
        multimodal: false,
        max_input_tokens: Object.entries(model.model_info).find((m) => m[0].includes(".context_length"))[1],
        can_use_tools: true
        // TODO: CHECK MODELFILE FOR TOOLS SUPPORT
      };
      acc[model.name] = out;
      return acc;
    }, {});
  }
  /**
   * Override settings config to remove API key setting since not needed for local instance
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    const config = super.settings_config;
    delete config["[CHAT_ADAPTER].api_key"];
    config["[CHAT_ADAPTER].host"] = {
      name: "Ollama host",
      type: "text",
      description: "Enter the host for your Ollama instance",
      default: this.constructor.defaults.host
    };
    return config;
  }
  is_end_of_stream(event) {
    return event.data.includes('"done_reason"');
  }
};
var SmartChatModelOllamaRequestAdapter = class extends SmartChatModelRequestAdapter {
  /**
   * Convert request to Ollama format
   * @returns {Object} Request parameters in Ollama format
   */
  to_platform(streaming = false) {
    const ollama_body = {
      model: this.model,
      messages: this._transform_messages_to_ollama(),
      options: this._transform_parameters_to_ollama(),
      stream: streaming || this.stream
      // format: 'json', // only used for tool calls since returns JSON in content body
    };
    if (this.tools) {
      ollama_body.tools = this._transform_functions_to_tools();
      if (this.tool_choice?.function?.name) {
        ollama_body.messages[ollama_body.messages.length - 1].content += `

Use the "${this.tool_choice.function.name}" tool.`;
        ollama_body.format = "json";
      }
    }
    return {
      url: this.adapter.endpoint,
      method: "POST",
      body: JSON.stringify(ollama_body)
    };
  }
  /**
   * Transform messages to Ollama format
   * @returns {Array} Messages in Ollama format
   * @private
   */
  _transform_messages_to_ollama() {
    return this.messages.map((message) => {
      const ollama_message = {
        role: message.role,
        content: this._transform_content_to_ollama(message.content)
      };
      const images = this._extract_images_from_content(message.content);
      if (images.length > 0) {
        ollama_message.images = images.map((img) => img.replace(/^data:image\/[^;]+;base64,/, ""));
      }
      return ollama_message;
    });
  }
  /**
   * Transform content to Ollama format
   * @param {string|Array} content - Message content
   * @returns {string} Content in Ollama format
   * @private
   */
  _transform_content_to_ollama(content) {
    if (Array.isArray(content)) {
      return content.filter((item) => item.type === "text").map((item) => item.text).join("\n");
    }
    return content;
  }
  /**
   * Extract images from content
   * @param {string|Array} content - Message content
   * @returns {Array} Array of image URLs
   * @private
   */
  _extract_images_from_content(content) {
    if (!Array.isArray(content)) return [];
    return content.filter((item) => item.type === "image_url").map((item) => item.image_url.url);
  }
  /**
   * Transform functions to tools format
   * @returns {Array} Tools array in Ollama format
   * @private
   */
  _transform_functions_to_tools() {
    return this.tools;
  }
  /**
   * Transform parameters to Ollama options format
   * @returns {Object} Options in Ollama format
   * @private
   */
  _transform_parameters_to_ollama() {
    const options = {};
    if (this.max_tokens) options.num_predict = this.max_tokens;
    if (this.temperature) options.temperature = this.temperature;
    if (this.top_p) options.top_p = this.top_p;
    if (this.frequency_penalty) options.frequency_penalty = this.frequency_penalty;
    if (this.presence_penalty) options.presence_penalty = this.presence_penalty;
    return options;
  }
};
var SmartChatModelOllamaResponseAdapter = class extends SmartChatModelResponseAdapter {
  static get platform_res() {
    return {
      model: "",
      created_at: null,
      message: {
        role: "",
        content: ""
      },
      total_duration: 0,
      load_duration: 0,
      prompt_eval_count: 0,
      prompt_eval_duration: 0,
      eval_count: 0,
      eval_duration: 0
    };
  }
  /**
   * Convert response to OpenAI format
   * @returns {Object} Response in OpenAI format
   */
  to_openai() {
    return {
      id: this._res.created_at,
      object: "chat.completion",
      created: Date.now(),
      model: this._res.model,
      choices: [
        {
          index: 0,
          message: this._transform_message_to_openai(),
          finish_reason: this._res.done_reason
        }
      ],
      usage: this._transform_usage_to_openai()
    };
  }
  /**
   * Transform message to OpenAI format
   * @returns {Object} Message in OpenAI format
   * @private
   */
  _transform_message_to_openai() {
    return {
      role: this._res.message.role,
      content: this._res.message.content,
      tool_calls: this._res.message.tool_calls
    };
  }
  /**
   * Transform usage statistics to OpenAI format
   * @returns {Object} Usage statistics in OpenAI format
   * @private
   */
  _transform_usage_to_openai() {
    return {
      prompt_tokens: this._res.prompt_eval_count || 0,
      completion_tokens: this._res.eval_count || 0,
      total_tokens: (this._res.prompt_eval_count || 0) + (this._res.eval_count || 0)
    };
  }
  /**
   * Parse chunk adds delta to content as expected output format
   */
  handle_chunk(chunk) {
    chunk = JSON.parse(chunk || "{}");
    if (chunk.created_at && !this._res.created_at) {
      this._res.created_at = chunk.created_at;
    }
    if (chunk.message?.content) {
      this._res.message.content += chunk.message.content;
    }
    if (chunk.message?.role) {
      this._res.message.role = chunk.message.role;
    }
    if (chunk.model) {
      this._res.model = chunk.model;
    }
    if (chunk.message?.tool_calls) {
      if (!this._res.message.tool_calls) {
        this._res.message.tool_calls = [{
          id: "",
          type: "function",
          function: {
            name: "",
            arguments: ""
          }
        }];
      }
      if (chunk.message.tool_calls[0].id) {
        this._res.message.tool_calls[0].id += chunk.message.tool_calls[0].id;
      }
      if (chunk.message.tool_calls[0].function.name) {
        this._res.message.tool_calls[0].function.name += chunk.message.tool_calls[0].function.name;
      }
      if (chunk.message.tool_calls[0].function.arguments) {
        if (typeof chunk.message.tool_calls[0].function.arguments === "string") {
          this._res.message.tool_calls[0].function.arguments += chunk.message.tool_calls[0].function.arguments;
        } else {
          this._res.message.tool_calls[0].function.arguments = chunk.message.tool_calls[0].function.arguments;
        }
      }
    }
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/_custom.js
var adapters_map = {
  "openai": {
    req: SmartChatModelRequestAdapter,
    res: SmartChatModelResponseAdapter
  },
  "anthropic": {
    req: SmartChatModelAnthropicRequestAdapter,
    res: SmartChatModelAnthropicResponseAdapter
  },
  "gemini": {
    req: SmartChatModelGeminiRequestAdapter,
    res: SmartChatModelGeminiResponseAdapter
  },
  "lm_studio": {
    req: SmartChatModelLmStudioRequestAdapter,
    res: SmartChatModelLmStudioResponseAdapter
  },
  "ollama": {
    req: SmartChatModelOllamaRequestAdapter,
    res: SmartChatModelOllamaResponseAdapter
  }
};
var SmartChatModelCustomAdapter = class extends SmartChatModelApiAdapter {
  static key = "custom";
  static defaults = {
    description: "Custom API (Local or Remote, OpenAI format)",
    type: "API",
    /**
     * new default property: 'api_adapter' indicates which
     * request/response adapter set to use internally
     */
    api_adapter: "openai"
  };
  /**
   * Provide dynamic request/response classes
   * based on current adapter_config.api_adapter setting
   * ----------------------------------------------------
   */
  /**
   * @override
   * @returns {typeof SmartChatModelRequestAdapter}
   */
  get req_adapter() {
    const adapter_name = this.adapter_config.api_adapter || "openai";
    const map_entry = adapters_map[adapter_name];
    return map_entry && map_entry.req ? map_entry.req : SmartChatModelRequestAdapter;
  }
  /**
   * @override
   * @returns {typeof SmartChatModelResponseAdapter}
   */
  get res_adapter() {
    const adapter_name = this.adapter_config.api_adapter || "openai";
    const map_entry = adapters_map[adapter_name];
    return map_entry && map_entry.res ? map_entry.res : SmartChatModelResponseAdapter;
  }
  /**
   * Synthesize a custom endpoint from the config fields.
   * All fields are optional; fallback to a minimal default.
   * @returns {string}
   */
  get endpoint() {
    const protocol = this.adapter_config.protocol || "http";
    const hostname = this.adapter_config.hostname || "localhost";
    const port = this.adapter_config.port ? `:${this.adapter_config.port}` : "";
    let path = this.adapter_config.path || "";
    if (path && !path.startsWith("/")) path = `/${path}`;
    return `${protocol}://${hostname}${port}${path}`;
  }
  get_adapters_as_options() {
    return Object.keys(adapters_map).map((adapter_name) => ({ value: adapter_name, name: adapter_name }));
  }
  /**
   * Provide custom settings for configuring
   * the user-defined fields plus the new 'api_adapter'.
   * @override
   * @returns {Object} settings configuration
   */
  get settings_config() {
    return {
      /**
       * Select which specialized request/response adapter
       * you'd like to use for your custom endpoint.
       */
      "[CHAT_ADAPTER].api_adapter": {
        name: "API Adapter",
        type: "dropdown",
        description: "Pick a built-in or external adapter to parse request/response data.",
        // Provide a short selection set, or dynamically gather from keys of adapters_map
        options_callback: "adapter.get_adapters_as_options",
        default: "openai"
      },
      "[CHAT_ADAPTER].id": {
        name: "Model Name",
        type: "text",
        description: "Enter the model name for your endpoint if needed."
      },
      "[CHAT_ADAPTER].protocol": {
        name: "Protocol",
        type: "text",
        description: "e.g. http or https"
      },
      "[CHAT_ADAPTER].hostname": {
        name: "Hostname",
        type: "text",
        description: "e.g. localhost or some.remote.host"
      },
      "[CHAT_ADAPTER].port": {
        name: "Port",
        type: "number",
        description: "Port number or leave blank"
      },
      "[CHAT_ADAPTER].path": {
        name: "Path",
        type: "text",
        description: "Path portion of the URL (leading slash optional)"
      },
      "[CHAT_ADAPTER].streaming": {
        name: "Streaming",
        type: "toggle",
        description: "Enable streaming if your API supports it."
      },
      "[CHAT_ADAPTER].max_input_tokens": {
        name: "Max Input Tokens",
        type: "number",
        description: "Max number of tokens your model can handle in the prompt."
      },
      "[CHAT_ADAPTER].api_key": {
        name: "API Key",
        type: "password",
        description: "If your service requires an API key, add it here."
      }
    };
  }
  /**
   * Return 'true' for get_models params since user might
   * not rely on auto-populating. 
   * @override
   * @returns {true}
   */
  validate_get_models_params() {
    return true;
  }
  /**
   * Unlike most API-based adapters, we do NOT force the user to have model_key set.
   * So we override validate_config() to skip the "No model selected" error.
   * Since this is a custom adapter, the onus is on the user to configure it correctly.
   * @override
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    return { valid: true, message: "Configuration is valid." };
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/groq.js
var SmartChatModelGroqAdapter = class extends SmartChatModelApiAdapter {
  static key = "groq";
  static defaults = {
    description: "Groq",
    type: "API",
    endpoint: "https://api.groq.com/openai/v1/chat/completions",
    streaming: true,
    adapter: "Groq",
    models_endpoint: "https://api.groq.com/openai/v1/models",
    default_model: "llama3-8b-8192",
    signup_url: "https://groq.com",
    can_use_tools: true
  };
  /**
   * Request adapter class
   * @returns {typeof SmartChatModelGroqRequestAdapter}
   */
  get req_adapter() {
    return SmartChatModelGroqRequestAdapter;
  }
  /**
   * Response adapter class
   * @returns {typeof SmartChatModelGroqResponseAdapter}
   */
  get res_adapter() {
    return SmartChatModelGroqResponseAdapter;
  }
  get models_endpoint_method() {
    return "GET";
  }
  /**
   * Parse model data from Groq API format to a dictionary keyed by model ID.
   * The API returns a list of model objects like:
   * {
   *   "object": "list",
   *   "data": [ { "id": "...", "object": "model", ... }, ... ]
   * }
   * 
   * We'll convert each model to:
   * {
   *   model_name: model.id,
   *   id: model.id,
   *   max_input_tokens: model.context_window,
   *   description: `Owned by: ${model.owned_by}, context: ${model.context_window}`,
   *   multimodal: Check if model name or description suggests multimodality
   * }
   */
  parse_model_data(model_data) {
    if (model_data.object !== "list" || !Array.isArray(model_data.data)) {
      return { "_": { id: "No models found." } };
    }
    const parsed = {};
    for (const m of model_data.data) {
      parsed[m.id] = {
        model_name: m.id,
        id: m.id,
        max_input_tokens: m.context_window || 8192,
        description: `Owned by: ${m.owned_by}, context: ${m.context_window}`,
        // A basic heuristic for multimodal: if 'vision' or 'tool' is in model id
        // Adjust as needed based on known capabilities
        multimodal: m.id.includes("vision")
      };
    }
    return parsed;
  }
  /**
   * Validate configuration for Groq
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    if (!this.adapter_config.model_key) return { valid: false, message: "No model selected." };
    if (!this.api_key) {
      return { valid: false, message: "API key is missing." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};
var SmartChatModelGroqRequestAdapter = class extends SmartChatModelRequestAdapter {
  _get_openai_content(message) {
    if (["assistant", "tool"].includes(message.role)) {
      if (Array.isArray(message.content)) {
        return message.content.map((part) => {
          if (typeof part === "string") return part;
          if (part?.text) return part.text;
          return "";
        }).join("\n");
      }
    }
    return message.content;
  }
};
var SmartChatModelGroqResponseAdapter = class extends SmartChatModelResponseAdapter {
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/xai.js
var SmartChatModelXaiAdapter = class extends SmartChatModelApiAdapter {
  /** Human-readable platform key used by SmartChatModel */
  static key = "xai";
  /** @type {import('./_adapter.js').SmartChatModelAdapter['constructor']['defaults']} */
  static defaults = {
    description: "xAI Grok",
    type: "API",
    adapter: "xAI_Grok",
    endpoint: "https://api.x.ai/v1/chat/completions",
    streaming: true,
    models_endpoint: "https://api.x.ai/v1/models",
    default_model: "grok-3-mini-beta",
    signup_url: "https://ide.x.ai",
    can_use_tools: true
  };
  /** Grok is OpenAI-compatible → reuse the stock adapters */
  get req_adapter() {
    return SmartChatModelRequestAdapter;
  }
  get res_adapter() {
    return SmartChatModelResponseAdapter;
  }
  /* ------------------------------------------------------------------ *
   *  Model-list helpers
   * ------------------------------------------------------------------ */
  /**
   * The Grok `/v1/models` route is **GET**, not POST.
   * Override the HTTP verb so `get_models()` works.
   * @returns {string} 'GET'
   */
  get models_endpoint_method() {
    return "GET";
  }
  /**
   * Parse `/v1/models` payload to the canonical shape used by SmartChat.
   *
   * Grok returns:
   * ```json
   * { "object":"list",
   *   "data":[{ "id":"grok-3-beta", "context_length":128000, …}] }
   * ```
   */
  parse_model_data(model_data = {}) {
    const list = model_data.data || model_data.models || [];
    return list.reduce((acc, m) => {
      const id = m.id || m.name;
      acc[id] = {
        id,
        model_name: id,
        description: m.description || `context: ${m.context_length || "n/a"}`,
        max_input_tokens: m.context_length || 128e3,
        multimodal: !!m.modality && m.modality.includes("vision"),
        raw: m
      };
      return acc;
    }, {});
  }
  /* ------------------------------------------------------------------ *
   *  Validation helpers
   * ------------------------------------------------------------------ */
  validate_config() {
    if (!this.adapter_config.model_key) {
      return { valid: false, message: "No model selected." };
    }
    if (!this.api_key) {
      return { valid: false, message: "API key is missing." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-chat-model/adapters/deepseek.js
var SmartChatModelDeepseekAdapter = class extends SmartChatModelApiAdapter {
  static key = "deepseek";
  static defaults = {
    description: "DeepSeek",
    type: "API",
    endpoint: "https://api.deepseek.com/chat/completions",
    streaming: true,
    adapter: "DeepSeek",
    models_endpoint: "https://api.deepseek.com/models",
    default_model: "deepseek-base",
    signup_url: "https://deepseek.com/signup",
    can_use_tools: true
  };
  /**
   * Get the request adapter class
   * @returns {typeof SmartChatModelDeepseekRequestAdapter} Request adapter class
   */
  get req_adapter() {
    return SmartChatModelDeepseekRequestAdapter;
  }
  /**
   * Get the response adapter class
   * @returns {typeof SmartChatModelDeepseekResponseAdapter} Response adapter class
   */
  get res_adapter() {
    return SmartChatModelDeepseekResponseAdapter;
  }
  get models_endpoint_method() {
    return "GET";
  }
  /**
   * Parse the raw model data from DeepSeek's /v1/models endpoint
   * into a structured map of model objects keyed by model ID.
   * @param {Object} model_data - Raw JSON from DeepSeek
   * @returns {Object} Map of model objects
   */
  parse_model_data(model_data) {
    if (!model_data?.data || !Array.isArray(model_data.data)) {
      return { "_": { id: "No models found." } };
    }
    const parsed = {};
    for (const m of model_data.data) {
      parsed[m.id] = {
        model_name: m.id,
        id: m.id,
        max_input_tokens: m.context_size || 8192,
        description: m.description || m.name || m.id,
        raw: m
      };
    }
    return parsed;
  }
  /**
   * Estimate tokens in user input.
   * @param {string|Object} input - Input text or structured message
   * @returns {Promise<number>} Token count estimate
   */
  async count_tokens(input) {
    const text = typeof input === "string" ? input : JSON.stringify(input);
    return Math.ceil(text.length / 4);
  }
  /**
   * Check if an incoming streaming chunk signals end of stream.
   * @param {CustomEvent} event - SSE event with data
   * @returns {boolean} True if end of stream
   */
  is_end_of_stream(event) {
    if (!event?.data) return false;
    return event.data.includes('"done":true') || event.data.includes("[DONE]");
  }
  /**
   * Validate DeepSeek adapter configuration
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    if (!this.api_key) {
      return { valid: false, message: "DeepSeek API key is missing." };
    }
    if (!this.adapter_config.model_key) {
      return { valid: false, message: "No model selected for DeepSeek." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};
var SmartChatModelDeepseekRequestAdapter = class extends SmartChatModelRequestAdapter {
  /**
   * Convert incoming request to DeepSeek's expected format
   * Often just reuse the base "to_openai()" if that matches DeepSeek's design
   * @param {boolean} streaming - True if streaming
   * @returns {Object} Request parameters
   */
  to_platform(streaming = false) {
    return this.to_openai(streaming);
  }
};
var SmartChatModelDeepseekResponseAdapter = class extends SmartChatModelResponseAdapter {
};

// node_modules/obsidian-smart-env/default.config.js
var import_obsidian13 = require("obsidian");

// node_modules/obsidian-smart-env/node_modules/smart-completions/smart_completions.js
var SmartCompletions = class extends Collection {
  static version = 0.1;
  /**
   * Lazily instantiates and returns a chat_model. Similar to how
   * SmartEntities implements embed_model. You can adapt this
   * depending on how your environment is structured.
   *
   * @returns {Object|null} The chat model instance or null if not configured
   */
  get chat_model() {
    if (!this._chat_model) {
      this._chat_model = this.env.init_module("smart_chat_model", {
        model_config: {},
        settings: this.settings.chat_model ?? this.env.smart_chat_threads?.settings?.chat_model ?? {},
        reload_model: this.reload_chat_model.bind(this),
        re_render_settings: this.re_render_settings?.bind(this) ?? (() => {
          console.log("no re_render_settings");
        })
      });
    }
    return this._chat_model;
  }
  /**
   * Force unload & reload of chat model if user changes adapter or settings.
   */
  reload_chat_model() {
    if (this._chat_model?.unload) {
      this._chat_model.unload();
    }
    this._chat_model = null;
  }
  /**
   * In addition to base collection settings, merges `chat_model.settings_config`.
   * Allows the SmartCompletions UI to show chat-model relevant settings.
   * @returns {Object} Merged settings config
   */
  get settings_config() {
    return {};
  }
  /**
   * (Optional) An array of request adapter classes. SmartCompletion items will invoke these
   * in `run_completion_adapters()`. For example, we can list the context adapter or other custom ones.
   */
  get completion_adapters() {
    if (!this._completion_adapters) {
      this._completion_adapters = {};
      Object.entries(this.opts.completion_adapters).forEach(([key, adapter]) => {
        if (this._completion_adapters[adapter.property_name || key]) {
          const existing = this._completion_adapters[adapter.property_name || key];
          const existing_version = existing.version || 0;
          const new_version = adapter.version || 0;
          if (new_version < existing_version) return;
        }
        this._completion_adapters[adapter.property_name || key] = adapter;
      });
    }
    return this._completion_adapters;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-utils/coerce_primitives.js
function coerce_primitives(value) {
  if (typeof value !== "string") {
    return value;
  }
  const trimmed_value = value.trim();
  if (trimmed_value === "true") {
    return true;
  }
  if (trimmed_value === "false") {
    return false;
  }
  const float_pattern = /^-?\d+\.\d+$/;
  if (float_pattern.test(trimmed_value)) {
    const num = parseFloat(trimmed_value);
    if (num.toString() === trimmed_value) {
      return num;
    }
  }
  const int_pattern = /^-?(?:0|[1-9]\d*)$/;
  if (int_pattern.test(trimmed_value)) {
    return Number(trimmed_value);
  }
  return value;
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/parse_xml_fragments.js
function strip_code_fence(raw_input) {
  const fence_re = /^\s*```[a-z]*\n([\s\S]*?)\n```\s*$/i;
  const m = fence_re.exec(raw_input);
  return m ? m[1] : raw_input;
}
function parse_xml_fragments(xml_input) {
  if (typeof xml_input !== "string" || xml_input.trim() === "") {
    return null;
  }
  const stripped_input = strip_code_fence(xml_input);
  const VERBATIM_TAGS = /* @__PURE__ */ new Set(["think"]);
  const compress_whitespace = (str) => str.replace(/\s+/g, " ").trim();
  const parse_attributes = (str) => {
    if (!str) return {};
    const attrs = {};
    const attr_re = /(\w[\w.\-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;
    let m;
    while ((m = attr_re.exec(str)) !== null) {
      const [, key, val_dq, val_sq] = m;
      const raw_val = val_dq ?? val_sq;
      attrs[key] = coerce_primitives(raw_val);
    }
    return attrs;
  };
  const attach_child = (map, tag, node) => {
    if (tag in map) {
      const existing = map[tag];
      map[tag] = Array.isArray(existing) ? [...existing, node] : [existing, node];
    } else {
      map[tag] = node;
    }
  };
  const finalize_node = (ctx) => {
    const text_raw = ctx.verbatim ? ctx.text.replace(/^\s*\n/, "").replace(/\s+$/, "") : compress_whitespace(ctx.text);
    if (Object.keys(ctx.children_map).length) {
      ctx.node.contents = ctx.children_map;
    } else if (text_raw !== "") {
      ctx.node.contents = ctx.verbatim ? text_raw : coerce_primitives(text_raw);
    } else {
      ctx.node.contents = null;
    }
  };
  const cleaned = stripped_input.replace(/<!--[\s\S]*?-->/g, "");
  const token_re = /<[^>]+>|[^<]+/g;
  const root_map = {};
  const stack = [];
  let match;
  while ((match = token_re.exec(cleaned)) !== null) {
    const token = match[0];
    if (stack.length) {
      const top = stack[stack.length - 1];
      if (top.verbatim) {
        if (token.startsWith(`</${top.tag_name}`)) {
          stack.pop();
          finalize_node(top);
          if (stack.length === 0) {
            attach_child(root_map, top.tag_name, top.node);
          } else {
            attach_child(stack[stack.length - 1].children_map, top.tag_name, top.node);
          }
          continue;
        }
        top.text += token;
        continue;
      }
    }
    if (token.startsWith("<")) {
      if (token.startsWith("</")) {
        const tag_name = token.slice(2, -1).trim();
        if (!stack.length) return null;
        const ctx = stack.pop();
        if (ctx.tag_name !== tag_name) return null;
        finalize_node(ctx);
        if (stack.length === 0) {
          attach_child(root_map, tag_name, ctx.node);
        } else {
          attach_child(stack[stack.length - 1].children_map, tag_name, ctx.node);
        }
      } else {
        const self_closing = token.endsWith("/>");
        const body = self_closing ? token.slice(1, -2) : token.slice(1, -1);
        const first_space = body.indexOf(" ");
        const tag_name = first_space === -1 ? body : body.slice(0, first_space);
        const attr_str = first_space === -1 ? "" : body.slice(first_space + 1);
        const attributes = parse_attributes(attr_str);
        const node = Object.keys(attributes).length ? { attributes } : {};
        if (self_closing) {
          node.contents = null;
          if (stack.length === 0) {
            attach_child(root_map, tag_name, node);
          } else {
            attach_child(stack[stack.length - 1].children_map, tag_name, node);
          }
        } else {
          stack.push({
            tag_name,
            node,
            text: "",
            children_map: {},
            verbatim: VERBATIM_TAGS.has(tag_name)
          });
        }
      }
    } else {
      if (stack.length) stack[stack.length - 1].text += token;
    }
  }
  while (stack.length) {
    const ctx = stack.pop();
    finalize_node(ctx);
    if (stack.length === 0) {
      attach_child(root_map, ctx.tag_name, ctx.node);
    } else {
      attach_child(stack[stack.length - 1].children_map, ctx.tag_name, ctx.node);
    }
  }
  return Object.keys(root_map).length ? root_map : null;
}

// node_modules/obsidian-smart-env/node_modules/smart-completions/utils/insert_user_message.js
function insert_user_message(request, user_message, opts = {}) {
  if (!user_message) return;
  const { position = "end", new_user_message = false } = opts;
  if (!request.messages) {
    request.messages = [];
  }
  const last_user_index = request.messages.findLastIndex((x) => x.role === "user");
  if (last_user_index === -1 || new_user_message) {
    const new_user_message2 = {
      role: "user",
      content: [{ type: "text", text: user_message }]
    };
    request.messages.push(new_user_message2);
    return;
  }
  const last_user_message = request.messages[last_user_index];
  if (!Array.isArray(last_user_message.content)) {
    last_user_message.content = [
      {
        type: "text",
        text: last_user_message.content
      }
    ];
  }
  if (position === "start") {
    last_user_message.content.unshift({
      type: "text",
      text: user_message
    });
  } else {
    last_user_message.content.push({
      type: "text",
      text: user_message
    });
  }
}

// node_modules/obsidian-smart-env/node_modules/smart-completions/adapters/_adapter.js
var SmartCompletionAdapter = class {
  constructor(item) {
    this.item = item;
  }
  get data() {
    return this.item.data;
  }
  get env() {
    return this.item.env;
  }
  get completion() {
    return this.data.completion;
  }
  get request() {
    return this.item.data.completion.request;
  }
  get response() {
    return this.item.response;
  }
  insert_user_message(user_message, opts = {}) {
    insert_user_message(this.request, user_message, opts);
  }
  // Override these methods in subclasses
  static get property_name() {
    return null;
  }
  /**
   * @returns {Promise<void>}
   */
  async to_request() {
  }
  /**
   * @returns {Promise<void>}
   */
  async from_response() {
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-completions/utils/run_adapters.js
async function run_adapters({ item, adapters, adapter_method }) {
  const data_keys = Object.keys(item.data);
  const entries = Object.entries(adapters).map(([key, AdapterClass]) => ({
    AdapterClass,
    property: AdapterClass.property_name === void 0 ? key : AdapterClass.property_name,
    order: AdapterClass.order || 0
  }));
  const applicable = entries.filter(({ property }) => property === null || data_keys.includes(property)).sort((a, b) => a.order - b.order);
  for (const { AdapterClass } of applicable) {
    if (!(AdapterClass.prototype instanceof SmartCompletionAdapter)) {
      console.warn(`Adapter ${AdapterClass.name} does not extend SmartCompletionAdapter`);
    }
    const adapter = new AdapterClass(item);
    await adapter[adapter_method]?.();
  }
}

// node_modules/obsidian-smart-env/node_modules/smart-completions/smart_completion.js
var SmartCompletion = class extends CollectionItem {
  constructor(env, data = null) {
    super(env, data);
    this.run_adapter_item_constructors();
  }
  run_adapter_item_constructors() {
    for (const [key, AdapterClass] of Object.entries(this.completion_adapters)) {
      AdapterClass.item_constructor?.(this);
    }
  }
  /**
   * Default data structure for a new SmartCompletion item.
   * @static
   * @returns {Object}
   */
  static get defaults() {
    return {
      response_i: 0,
      data: {
        completion: {
          request: {},
          responses: [],
          chat_model: null
        }
      }
    };
  }
  /**
   * get_key
   * Overridden to produce a unique key based on a hash of this.data plus the current timestamp.
   * @returns {string}
   */
  get_key() {
    const hash = murmur_hash_32_alphanumeric(JSON.stringify(this.data));
    const ts = Date.now();
    return `${hash}-${ts}`;
  }
  /**
   * Called automatically in many cases (via create_or_update).
   * You can also call it manually if needed.
   */
  async init(completion_opts = {}) {
    if (this.data.chat_model_config) {
      this.chat_model = this.env.init_module("smart_chat_model", {
        settings: this.data.chat_model_config
      });
    }
    await this.build_request();
    await this.complete(completion_opts);
    await this.parse_response();
    this.queue_save();
    this.collection.process_save_queue();
  }
  /**
   * Collects or transforms data into a final `completion.request` structure
   * by running any applicable completion adapters.
   * @returns {Promise<void>}
   */
  async build_request() {
    this.data.completion.request = {};
    await run_adapters({ item: this, adapters: this.completion_adapters, adapter_method: "to_request" });
    if (Object.keys(this.data.completion.request).length > 0) {
      this.data.completion.request.messages = this.data.completion.request.messages.map((msg) => {
        if (typeof msg.content === "string" && msg.content.trim().length === 0) return null;
        if (Array.isArray(msg.content)) {
          msg.content = msg.content.filter((part) => {
            if (part.type !== "text") return true;
            if (part.text && part.text.trim().length > 0) return true;
            return false;
          });
          if (msg.content.length === 0) return null;
        }
        return msg;
      }).filter((msg) => msg !== null);
      ;
    }
    return this.data.completion.request;
  }
  async parse_response() {
    await run_adapters({ item: this, adapters: this.completion_adapters, adapter_method: "from_response" });
    return this.data.completion.responses;
  }
  /**
   * Calls the underlying chat model, stores the response in completion.responses.
   * @returns {Promise<void>}
   */
  async complete(opts = {}) {
    if (!this.data.completion || !this.data.completion.request) {
      console.warn("No completion.request found, skipping complete().");
      return;
    }
    const chat_model = this.get_chat_model(opts);
    this.data.completion.chat_model = {
      model_key: chat_model.model_key,
      platform_key: chat_model.adapter_name
    };
    if (!chat_model) {
      console.warn("No chat model available for SmartCompletion. Check environment config.");
      return;
    }
    try {
      const request_payload = this.data.completion.request;
      const stream = opts.stream;
      const result = stream ? await chat_model.stream(request_payload, this.stream_handlers(opts.stream_handlers)) : await chat_model.complete(request_payload);
      if (!stream) {
        this.data.completion.responses.push({
          timestamp: Date.now(),
          ...result
        });
      }
      const typing_indicator = this.container?.closest(".smart-chat-thread")?.querySelector(".smart-chat-typing-indicator");
      if (typing_indicator) typing_indicator.style.display = "none";
      this.queue_save();
    } catch (err) {
      console.error("Error in SmartCompletion.complete():", err);
    }
  }
  stream_handlers(stream_handlers = {}) {
    return {
      chunk: async (resp) => {
        this.data.completion.responses[0] = {
          timestamp: Date.now(),
          ...resp
        };
        await stream_handlers.chunk?.(this);
      },
      done: async (resp) => {
        this.data.completion.responses[0] = {
          timestamp: Date.now(),
          ...resp
        };
        await stream_handlers.done?.(this);
      },
      error: async (err) => {
        console.error("error", err);
        await stream_handlers.error?.(err);
      }
    };
  }
  /**
   * Access the completion adapters from the parent collection, if any.
   */
  get completion_adapters() {
    return this.collection?.completion_adapters || {};
  }
  /**
   * If a local chat_model config is present, creates a dedicated instance.
   * Otherwise, returns the collection-level chat_model or null.
   * @returns {Object|null}
   */
  get_chat_model() {
    if (this.chat_model) {
      return this.chat_model;
    } else {
      console.log("no chat_model, using collection chat_model");
      return this.collection?.chat_model || null;
    }
  }
  /**
   * @returns {Object|undefined} Currently selected response based on `response_i`.
   */
  get response() {
    return this.data.completion.responses[this.response_i];
  }
  /**
   * @method response_text
   * @returns {string} The best guess at the main text from the model's first response.
   */
  get response_text() {
    const resp = this.response;
    if (!resp) return "";
    if (Array.isArray(resp.choices) && resp.choices[0]) {
      const choice = resp.choices[0];
      if (choice.message && choice.message.content) {
        return choice.message.content;
      }
      if (choice.text) return choice.text;
    }
    if (resp.text) return resp.text;
    return "";
  }
  get response_structured_output() {
    if (!this.response) return null;
    if (this.action_call) {
      try {
        const parsed2 = JSON.parse(this.action_call);
        return parsed2;
      } catch (e) {
        console.log("failed to parse tool_call in response_structured_output");
      }
    }
    if (!this.response_text) return null;
    const parsed = parse_xml_fragments(this.response_text);
    if (!parsed) return null;
    return parsed;
  }
  get action_call() {
    const resp = this.response;
    if (!resp) return null;
    return resp.choices?.[0]?.message?.tool_calls?.[0]?.function?.arguments;
  }
  get messages() {
    const messages = [];
    if (this.data.system_message) {
      messages.push({
        role: "system",
        content: this.data.system_message
      });
    }
    if (this.data.user_message) {
      messages.push({
        role: "user",
        content: this.data.user_message
      });
    }
    if (this.response_text) {
      messages.push({
        role: "assistant",
        content: this.response_text
      });
    }
    return messages;
  }
  get is_completed() {
    return this.data.completion.responses.length > 0;
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-collections/utils/ajson_merge.js
function ajson_merge(existing, new_obj) {
  if (new_obj === null) return null;
  if (new_obj === void 0) return existing;
  if (typeof new_obj !== "object") return new_obj;
  if (typeof existing !== "object" || existing === null) existing = {};
  const keys = Object.keys(new_obj);
  const length = keys.length;
  for (let i = 0; i < length; i++) {
    const key = keys[i];
    const new_val = new_obj[key];
    const existing_val = existing[key];
    if (Array.isArray(new_val)) {
      existing[key] = new_val.slice();
    } else if (is_object(new_val)) {
      existing[key] = ajson_merge(is_object(existing_val) ? existing_val : {}, new_val);
    } else if (new_val !== void 0) {
      existing[key] = new_val;
    }
  }
  return existing;
}
function is_object(obj) {
  return obj !== null && typeof obj === "object" && !Array.isArray(obj);
}

// node_modules/obsidian-smart-env/node_modules/smart-collections/adapters/ajson_single_file.js
var class_to_collection_key2 = {
  "SmartSource": "smart_sources",
  "SmartNote": "smart_sources",
  // DEPRECATED
  "SmartBlock": "smart_blocks",
  "SmartDirectory": "smart_directories"
};
function _parse_ajson_key(ajson_key) {
  let changed = false;
  let [collection_key, ...item_key] = ajson_key.split(":");
  if (class_to_collection_key2[collection_key]) {
    collection_key = class_to_collection_key2[collection_key];
    changed = true;
  }
  return {
    collection_key,
    item_key: item_key.join(":"),
    changed
  };
}
var AjsonSingleFileCollectionDataAdapter = class extends AjsonMultiFileCollectionDataAdapter {
  /**
   * Returns the single shared `.ajson` file path for this collection.
   * @param {string} [key] - (unused) Item key, ignored in single-file mode.
   * @returns {string} The single .ajson file path for the entire collection.
   */
  get_item_data_path(key) {
    const file_name = (this.collection?.collection_key || "collection") + ".ajson";
    const sep = this.fs?.sep || "/";
    const dir = this.collection.data_dir || "data";
    return [dir, file_name].join(sep);
  }
  /**
   * Override process_load_queue to parse the entire single-file .ajson once,
   * distributing final states to items.
   *
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    this.collection.emit_event("collection:load_started");
    this.collection.show_process_notice("loading_collection");
    if (!await this.fs.exists(this.collection.data_dir)) {
      await this.fs.mkdir(this.collection.data_dir);
    }
    const path = this.get_item_data_path();
    if (!await this.fs.exists(path)) {
      for (const item of Object.values(this.collection.items)) {
        if (item._queue_load) {
          item.queue_import?.();
        }
      }
      this.collection.clear_process_notice("loading_collection");
      this.collection.emit_event("collection:load_halted");
      return;
    }
    const raw_data = await this.fs.read(path, "utf-8", { no_cache: true });
    if (!raw_data) {
      for (const item of Object.values(this.collection.items)) {
        if (item._queue_load) {
          item.queue_import?.();
        }
      }
      this.collection.clear_process_notice("loading_collection");
      this.collection.emit_event("collection:load_halted");
      return;
    }
    const { rewrite, file_data } = this.parse_single_file_ajson(raw_data);
    if (rewrite) {
      if (file_data.length) {
        await this.fs.write(path, file_data);
      } else {
        await this.fs.remove(path);
      }
    }
    for (const item of Object.values(this.collection.items)) {
      item._queue_load = false;
      item.loaded_at = Date.now();
    }
    this.collection.clear_process_notice("loading_collection");
    this.collection.emit_event("collection:load_completed");
  }
  /**
   * Helper to parse single-file .ajson content, distributing states to items.
   *
   * @param {string} raw
   * @returns {{ rewrite: boolean, file_data: string }}
   */
  parse_single_file_ajson(raw) {
    let rewrite = false;
    const lines = raw.trim().split("\n").filter(Boolean);
    let data_map = {};
    let line_count = 0;
    for (let i = 0; i < lines.length; i++) {
      const line = lines[i].trim();
      if (!line.endsWith(",")) {
        rewrite = true;
      }
      const trimmed = line.replace(/,$/, "");
      const combined = "{" + trimmed + "}";
      try {
        const obj = JSON.parse(combined);
        const [fullKey, value] = Object.entries(obj)[0];
        let { collection_key, item_key, changed } = _parse_ajson_key(fullKey);
        const newKey = `${collection_key}:${item_key}`;
        if (!value) {
          delete data_map[newKey];
          if (changed || newKey !== fullKey) {
            delete data_map[fullKey];
          }
          rewrite = true;
        } else {
          data_map[newKey] = value;
          if (changed || newKey !== fullKey) {
            delete data_map[fullKey];
            rewrite = true;
          }
        }
      } catch (err) {
        console.warn("parse error for line: ", line, err);
        rewrite = true;
      }
      line_count++;
    }
    for (const [ajson_key, val] of Object.entries(data_map)) {
      const [collection_key, ...rest] = ajson_key.split(":");
      const item_key = rest.join(":");
      const collection = this.collection.env[collection_key];
      if (!collection) continue;
      let item = collection.get(item_key);
      if (!item) {
        const ItemClass = collection.item_type;
        item = new ItemClass(this.env, val);
        collection.set(item);
      } else {
        item.data = ajson_merge(item.data, val);
      }
      item.loaded_at = Date.now();
      item._queue_load = false;
      if (!val.key) val.key = item_key;
    }
    if (line_count > Object.keys(data_map).length) {
      rewrite = true;
    }
    let minimal_lines = [];
    for (const [ajson_key, val] of Object.entries(data_map)) {
      minimal_lines.push(`${JSON.stringify(ajson_key)}: ${JSON.stringify(val)},`);
    }
    return {
      rewrite,
      file_data: minimal_lines.join("\n")
    };
  }
  /**
   * Override process_save_queue for single-file approach.
   * We'll simply call save_item for each queued item, which appends a line to the same `.ajson`.
   *
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    this.collection.emit_event("collection:save_started");
    this.collection.show_process_notice("saving_collection");
    const save_queue = Object.values(this.collection.items).filter((item) => item._queue_save);
    const time_start = Date.now();
    const batch_size = 50;
    for (let i = 0; i < save_queue.length; i += batch_size) {
      const batch = save_queue.slice(i, i + batch_size);
      await Promise.all(batch.map((item) => {
        const adapter = this.create_item_adapter(item);
        return adapter.save().catch((err) => {
          console.warn(`Error saving item ${item.key}`, err);
          item.queue_save();
        });
      }));
    }
    const deleted_items = Object.values(this.collection.items).filter((item) => item.deleted);
    if (deleted_items.length) {
      deleted_items.forEach((item) => {
        delete this.collection.items[item.key];
      });
    }
    console.log(`Saved (single-file) ${this.collection.collection_key} in ${Date.now() - time_start}ms`);
    this.collection.clear_process_notice("saving_collection");
    this.collection.emit_event("collection:save_completed");
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-completions/utils/insert_image.js
async function insert_image(request, image_path, fs) {
  const base64_image = await convert_image_to_base64(fs, image_path);
  if (!base64_image) return;
  const last_user_index = request.messages.findLastIndex((x) => x.role === "user");
  const image_content = {
    role: "user",
    content: [{ type: "image_url", image_url: { url: base64_image } }]
  };
  if (last_user_index === -1) {
    request.messages.unshift(image_content);
  }
  const last_user_message = request.messages[last_user_index];
  if (!last_user_message) return console.warn("insert_image: no last_user_message");
  if (!Array.isArray(last_user_message.content)) {
    last_user_message.content = [];
  }
  last_user_message.content.push(image_content.content[0]);
}
async function convert_image_to_base64(fs, image_path) {
  if (!image_path) return;
  const image_exts = ["png", "jpg", "jpeg", "gif", "webp", "svg", "bmp", "ico"];
  const ext = image_path.split(".").pop().toLowerCase();
  if (!image_exts.includes(ext)) return;
  try {
    const base64_data = await fs.read(image_path, "base64");
    const base64_url = `data:image/${ext};base64,${base64_data}`;
    return base64_url;
  } catch (err) {
    console.warn(`Failed to convert image ${image_path} to base64`, err);
  }
}

// node_modules/obsidian-smart-env/node_modules/smart-completions/utils/insert_pdf.js
async function insert_pdf(request, pdf_path, fs) {
  const base64_pdf = await convert_pdf_to_base64(fs, pdf_path);
  if (!base64_pdf) return;
  const last_user_index = request.messages.findLastIndex((x) => x.role === "user");
  const pdf_content = {
    role: "user",
    content: [{
      type: "file",
      file: {
        filename: pdf_path.split(/[\\/]/).pop(),
        file_data: `data:application/pdf;base64,${base64_pdf}`
        // <-- Prefix added
      }
    }]
  };
  if (last_user_index === -1) {
    request.messages.unshift(pdf_content);
    return;
  }
  const last_user_message = request.messages[last_user_index];
  if (!last_user_message) return console.warn("insert_pdf: no last_user_message");
  if (!Array.isArray(last_user_message.content)) {
    last_user_message.content = [];
  }
  last_user_message.content.push(pdf_content.content[0]);
}
async function convert_pdf_to_base64(fs, pdf_path) {
  if (!pdf_path) return;
  const ext = pdf_path.split(".").pop().toLowerCase();
  if (ext !== "pdf") return;
  try {
    const base64_data = await fs.read(pdf_path, "base64");
    return base64_data;
  } catch (err) {
    console.warn(`Failed to convert PDF ${pdf_path} to base64`, err);
  }
}

// node_modules/obsidian-smart-env/node_modules/smart-completions/adapters/context.js
var SmartCompletionContextAdapter = class extends SmartCompletionAdapter {
  static order = 10;
  static get property_name() {
    return "context_key";
  }
  async to_request() {
    const context_key = this.data.context_key;
    if (!context_key) return;
    const context_opts = this.data.context_opts;
    const context_collection = this.item.env.smart_contexts;
    if (!context_collection) {
      console.warn("No 'smart_contexts' collection found; skipping context adapter.");
      return;
    }
    const completions = this.item.thread.completions;
    const last_context_completion = completions.findLast((comp) => comp.data.context_key === context_key);
    if (last_context_completion && last_context_completion.key !== this.item.key) {
      return;
    }
    const ctx_item = context_collection.get(context_key);
    if (!ctx_item) {
      console.warn(`SmartContext not found for key '${context_key}'`);
      return;
    }
    if (!ctx_item.has_context_items) {
      console.warn(`SmartContext '${context_key}' has no context items; skipping context adapter.`);
      return;
    }
    await ctx_item.save();
    let compiled;
    try {
      compiled = await ctx_item.compile(context_opts);
    } catch (err) {
      console.warn("Error compiling ephemeral context", err);
      return;
    }
    if (compiled.context) {
      this.insert_user_message(compiled.context);
      const last_user_message = this.data.user_message ?? completions.findLast((comp) => comp.data.user_message)?.data.user_message;
      if (last_user_message) {
        this.insert_user_message(last_user_message, { position: "end" });
      }
    }
    if (compiled.images?.length > 0) {
      await this.insert_images(compiled.images);
    }
    if (compiled.pdfs?.length > 0) {
      await this.insert_pdfs(compiled.pdfs);
    }
    this.data.completion.used_context = true;
  }
  async insert_images(image_paths) {
    if (!Array.isArray(image_paths) || !image_paths.length) return;
    for (const img_path of image_paths) {
      await insert_image(this.request, img_path, this.item.env.fs);
    }
  }
  async insert_pdfs(pdf_paths) {
    if (!Array.isArray(pdf_paths) || !pdf_paths.length) return;
    for (const pdf_path of pdf_paths) {
      await insert_pdf(this.request, pdf_path, this.item.env.fs);
    }
  }
  /**
   * No special post-processing after we get model response.
   */
  async from_response() {
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-completions/adapters/user.js
var SmartCompletionUserAdapter = class extends SmartCompletionAdapter {
  static order = 1;
  /**
   * @returns {string}
   */
  static get property_name() {
    return "user_message";
  }
  get request() {
    return this.item.data.completion.request;
  }
  /**
   * to_request: Checks `data.user`, adds a user message to `request.messages`.
   * @returns {Promise<void>}
   */
  async to_request() {
    const user_message = this.data.user_message;
    const new_user_message = this.data.new_user_message;
    this.insert_user_message(user_message, {
      position: "start",
      // always at start so that other adapters may add again to end (e.g. context adapter)
      new_user_message
    });
  }
  /**
   * from_response: No post-processing needed for default user message.
   * @returns {Promise<void>}
   */
  async from_response() {
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-completions/adapters/action.js
var ActionCompletionAdapter = class extends SmartCompletionAdapter {
  static get property_name() {
    return "action_key";
  }
  /**
   * @returns {Promise<void>}
   */
  async to_request() {
    const action_key = this.data.action_key;
    if (!action_key) return;
    const thread = this.item.thread;
    if (thread && thread.current_completion !== this.item) return console.log("ActionCompletionAdapter: skipping tools, not the current completion");
    const action_opts = this.data.action_opts;
    const action_collection = this.item.env.smart_actions;
    if (!action_collection) {
      console.warn("No 'smart_actions' collection found; skipping action adapter.");
      return;
    }
    const action_item = action_collection.get(action_key);
    if (!action_item) {
      console.warn(`SmartAction not found for key '${action_key}'`);
      return;
    }
    let tools;
    try {
      const tool2 = action_item.as_tool;
      tools = tool2 ? [tool2] : [];
    } catch (err) {
      console.warn("Error generating action tool", err);
      return;
    }
    if (!tools.length) return;
    if (!this.data.actions) this.data.actions = {};
    this.data.actions[action_key] = true;
    this.insert_tools(tools, { force: true });
  }
  get default_action_params() {
    return this.data.action_opts || {};
  }
  /**
   * @returns {Promise<void>}
   */
  async from_response() {
    console.log("ActionCompletionAdapter: from_response");
    const tool_call = this.response.choices[0].message?.tool_calls?.[0];
    if (!tool_call) return console.warn("No tool call found in response");
    const action_key = tool_call?.function?.name;
    const tool_arguments = tool_call?.function?.arguments;
    if (!action_key) return;
    const action_collection = this.item.env.smart_actions;
    if (!action_collection) return;
    const action_item = action_collection.get(action_key);
    if (!action_item) return;
    let parsed_args = tool_arguments;
    if (typeof parsed_args === "string") {
      try {
        parsed_args = JSON.parse(parsed_args);
      } catch (err) {
        console.warn("Could not parse tool_call arguments", err);
        return;
      }
    }
    const action_params = {
      ...this.default_action_params,
      ...parsed_args
    };
    const result = await action_item.run_action(action_params);
    if (result && typeof result === "object" && result.final) {
      if (!this.item.data.completion.responses[0]) {
        this.item.data.completion.responses[0] = { choices: [{ message: {} }] };
      } else if (!this.item.data.completion.responses[0].choices?.[0]) {
        this.item.data.completion.responses[0].choices = [{ message: {} }];
      }
      this.item.data.completion.responses[0].choices[0].message = {
        ...this.item.data.completion.responses[0].choices[0].message,
        role: "assistant",
        content: result.final
      };
    }
    if (!this.data.actions) this.data.actions = {};
    this.data.actions[action_key] = result;
  }
  /**
   * Insert the ephemeral tools into the request
   * @param {Array<object>} tools
   * @param {object} opts
   * @returns {void}
   */
  insert_tools(tools, opts = {}) {
    this.request.tools = tools;
    if (opts.force) {
      this.request.tool_choice = {
        type: "function",
        function: {
          name: tools[0].function.name
        }
      };
    }
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-completions/adapters/action_xml.js
function scaffold_xml(root_tag, root_desc, params) {
  return [
    `<${root_tag} instructions="${root_desc}">`,
    ...Object.entries(params).map(
      ([p, v]) => `  <${p} instructions="${v.description || ""}">VALUE</${p}>`
    ),
    `</${root_tag}>`
  ].join("\n");
}
function strip_instruction_attrs(xml) {
  return xml.replace(/\s+instructions="[^"]*"/g, "");
}
var ActionXmlCompletionAdapter = class extends ActionCompletionAdapter {
  static get property_name() {
    return "action_xml_key";
  }
  /* ────────────────────────────────────────────────────────────────────────
     REQUEST CONSTRUCTION
     ────────────────────────────────────────────────────────────────────── */
  async to_request() {
    const action_key = this.data.action_xml_key;
    if (!action_key) return;
    const thread = this.item.thread;
    if (thread.current_completion !== this.item) return console.log("ActionXmlCompletionAdapter: skipping tools, not the current completion");
    const action_item = this.env.smart_actions?.get(action_key);
    if (!action_item) {
      return console.warn(`SmartAction '${action_key}' not found`);
    }
    let tools;
    try {
      const tool2 = action_item.as_tool;
      tools = tool2 ? [tool2] : [];
    } catch (err) {
      return console.warn("Unable to compile OpenAPI \u2192 tools", err);
    }
    if (!tools.length) return;
    const func_def = tools[0].function;
    const param_props = func_def.parameters?.properties || {};
    const required_params = func_def.parameters?.required || [];
    this._func_name = func_def.name;
    this._required_params = required_params;
    const action_instruction = [
      "Important Instructions:",
      `1. You must invoke the action '${func_def.name}' exactly once.`,
      "2. You must respond *only* with XML in the exact structure provided below.",
      "3. Replace VALUE with real arguments based on the property-specific instructions below.",
      "4. Do not include any other text or instructions.",
      "5. Follow these property-specific instructions for producing the XML response.",
      "Action Instructions:",
      `- ${func_def.description || ""}`,
      "Property-Specific Instructions:",
      ...Object.entries(param_props).map(
        ([p, v]) => `- ${p}: ${v.description || ""}`
      )
    ].join("\n");
    const xml_scaffold = scaffold_xml(func_def.name, func_def.description, param_props);
    const xml_template = strip_instruction_attrs(xml_scaffold);
    const action_instruction_msg = [
      action_instruction,
      `You are ready to invoke the action '${func_def.name}'.`
    ].join("\n");
    const xml_template_msg = [
      `To invoke the action '${func_def.name}', respond *only* with XML in this exact structure (replace VALUE with real arguments based on the action and property-specific instructions above):`,
      xml_template
    ].join("\n");
    this.insert_user_message(action_instruction_msg);
    this.insert_user_message(xml_template_msg);
    this.data.actions ??= {};
    this.data.actions[action_key] = true;
    this.data.action_key = action_key;
  }
  /* ────────────────────────────────────────────────────────────────────────
     RESPONSE PARSING
     ────────────────────────────────────────────────────────────────────── */
  async from_response() {
    const action_key = this.data.action_xml_key;
    if (!action_key) return;
    const assistant_msg = this.response?.choices?.[0]?.message;
    if (!assistant_msg) {
      return console.warn("ActionXmlCompletionAdapter: assistant message not found");
    }
    const func_name = this._func_name || action_key;
    let parsed_xml = this.item?.response_structured_output;
    let root_node = parsed_xml[func_name];
    if (!root_node) {
      const candidate = Object.keys(parsed_xml)[0];
      console.warn(`ActionXmlCompletionAdapter: expected root <${func_name}>, found <${candidate}> \u2013 using candidate`);
      root_node = parsed_xml[candidate];
    }
    if (!root_node) {
      return console.warn(`ActionXmlCompletionAdapter: root tag '${func_name}' not found`);
    }
    const node_to_value = (node) => {
      if (!node || typeof node !== "object") return node;
      const { attributes = {}, contents } = node;
      if (contents === null || typeof contents !== "object") {
        return Object.keys(attributes).length ? { ...attributes, value: contents } : contents;
      }
      const out = {};
      for (const [k, v] of Object.entries(contents)) {
        out[k] = Array.isArray(v) ? v.map(node_to_value) : node_to_value(v);
      }
      return Object.keys(attributes).length ? { ...attributes, ...out } : out;
    };
    const args = node_to_value(root_node);
    const missing = (this._required_params || []).filter(
      (p) => args[p] === void 0 || args[p] === "" || args[p] === null
    );
    if (missing.length) {
      return console.warn(`ActionXmlCompletionAdapter: missing ${missing.join(", ")}`);
    }
    assistant_msg.tool_calls = [
      { function: { name: action_key, arguments: args } }
    ];
    delete assistant_msg.content;
    await super.from_response();
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-completions/adapters/system.js
var SmartCompletionSystemAdapter = class extends SmartCompletionAdapter {
  /**
   * Identifies the data property that triggers this adapter.
   * @returns {string}
   */
  static get property_name() {
    return "system_message";
  }
  /**
   * to_request: If `data.system_message` is present, prepends a system message to request.messages.
   * @returns {Promise<void>}
   */
  async to_request() {
    const sys_msg = this.data.system_message;
    if (!sys_msg) return;
    if (!this.request.messages) {
      this.request.messages = [];
    }
    this.request.messages.unshift({
      role: "system",
      content: sys_msg
    });
  }
  /**
   * from_response: No post-processing needed here.
   * @returns {Promise<void>}
   */
  async from_response() {
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-completions/adapters/variable.js
var SmartCompletionVariableAdapter = class extends SmartCompletionAdapter {
  static order = 100;
  // Default order, can be overridden by specific adapters
  static registry = [];
  static register(matcher_fx, replacement_fx, var_example) {
    this.registry.push({ matcher_fx, replacement_fx, var_example });
  }
  static get available_vars() {
    return this.registry.map(({ var_example }) => var_example);
  }
  static async replace_vars(env, text) {
    for (const { matcher_fx, replacement_fx } of this.registry) {
      if (await matcher_fx.call(env, text)) {
        text = await replacement_fx.call(env, text);
      }
    }
    return text;
  }
  async to_request() {
    const messages = this.request.messages || [];
    for (const msg of messages) {
      if (typeof msg.content === "string") {
        msg.content = await this.constructor.replace_vars(this.env, msg.content);
      } else if (Array.isArray(msg.content)) {
        for (const part of msg.content) {
          if (part && typeof part.text === "string") {
            part.text = await this.constructor.replace_vars(this.env, part.text);
          }
        }
      }
    }
  }
  async from_response() {
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-completions/index.js
var smart_completions_default_config = {
  class: SmartCompletions,
  data_adapter: AjsonSingleFileCollectionDataAdapter,
  item_type: SmartCompletion,
  completion_adapters: {
    // SmartCompletionTemplateAdapter,
    SmartCompletionContextAdapter,
    SmartCompletionUserAdapter,
    ActionCompletionAdapter,
    ActionXmlCompletionAdapter,
    SmartCompletionSystemAdapter,
    SmartCompletionVariableAdapter
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-blocks/content_parsers/parse_blocks.js
function parse_blocks(source2, content) {
  let { blocks: blocks_obj, task_lines } = parse_markdown_blocks(content);
  const last_read_at = source2.data.last_read?.at || Date.now();
  for (const [sub_key, line_range] of Object.entries(blocks_obj)) {
    const block_key = source2.key + sub_key;
    const existing_block = source2.block_collection.get(block_key);
    const block_content = get_line_range2(content, line_range[0], line_range[1]);
    if (existing_block && existing_block.lines[0] === line_range[0] && existing_block.lines[1] === line_range[1] && existing_block.size === block_content.length && existing_block.vec) {
      continue;
    }
    const block_outlinks = get_markdown_links(block_content);
    const block_data = {
      key: block_key,
      lines: line_range,
      size: block_content.length,
      outlinks: block_outlinks,
      last_read: {
        at: last_read_at,
        hash: murmur_hash_32_alphanumeric(block_content)
      }
    };
    if (!existing_block || existing_block?.data.last_read?.hash !== block_data.last_read.hash) {
      const new_item = new source2.block_collection.item_type(source2.env, block_data);
      source2.block_collection.set(new_item);
    } else {
      existing_block.data = {
        ...existing_block.data,
        ...block_data
        // overwrites lines, last_read
      };
    }
  }
  clean_and_update_source_blocks(source2, blocks_obj, task_lines);
  for (const block of source2.blocks) {
    if (!block.vec) {
      block.queue_embed();
    }
  }
}
function clean_and_update_source_blocks(source2, blocks_obj, task_lines = []) {
  const current_block_keys = new Set(Object.keys(blocks_obj).map((sk) => source2.key + sk));
  const blocks = source2.blocks;
  for (let i = 0; i < blocks.length; i++) {
    if (!current_block_keys.has(blocks[i].key)) {
      blocks[i].deleted = true;
      blocks[i].queue_save();
    }
  }
  source2.data.blocks = blocks_obj;
  source2.data.task_lines = task_lines;
  source2.queue_save();
}

// node_modules/obsidian-smart-env/utils/format_collection_name.js
function format_collection_name(key) {
  return key.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
}

// node_modules/obsidian-smart-env/components/collection_settings.js
async function build_html3(collection, opts = {}) {
  const settings_html = Object.entries(collection.settings_config).map(([setting_key, setting_config]) => {
    if (!setting_config.setting) setting_config.setting = setting_key;
    return this.render_setting_html(setting_config);
  }).join("\n");
  const html = `<div><div class="collection-settings-container"><div class="source-settings collection-settings">
    <h2>${format_collection_name(collection.collection_key)}</h2>
    ${settings_html}
  </div></div></div>`;
  return html;
}
async function render5(collection, opts = {}) {
  const html = await build_html3.call(this, collection, opts);
  const frag = this.create_doc_fragment(html);
  await this.render_setting_components(frag, { scope: collection });
  if (opts.settings_container) {
    this.empty(opts.settings_container);
    opts.settings_container.appendChild(frag.querySelector(".collection-settings"));
  } else {
    collection.settings_container = frag.querySelector(".collection-settings-container");
  }
  return collection.settings_container;
}

// node_modules/obsidian-smart-env/modals/exclude_folders_fuzzy.js
var import_obsidian4 = require("obsidian");
var ExcludedFoldersFuzzy = class extends import_obsidian4.FuzzySuggestModal {
  /**
   * @param {App} app - The Obsidian app
   * @param {Object} env - An environment-like object, must have .settings and .fs.folder_paths
   */
  constructor(app2, env) {
    super(app2);
    this.env = env;
    this.setPlaceholder("Select a folder to exclude...");
  }
  open(callback) {
    this.callback = callback;
    super.open();
  }
  getItems() {
    return this.env.smart_sources?.fs?.folder_paths || [];
  }
  getItemText(item) {
    return item;
  }
  onChooseItem(item) {
    if (!item) return;
    const oldVal = this.env.settings.smart_sources?.folder_exclusions || "";
    const splitted = oldVal.split(",").map((s) => s.trim()).filter(Boolean);
    if (!splitted.includes(item)) splitted.push(item);
    this.env.settings.smart_sources.folder_exclusions = splitted.join(",");
    this.callback?.();
  }
};

// node_modules/obsidian-smart-env/modals/excluded_sources.js
var import_obsidian5 = require("obsidian");
var ExcludedSourcesModal = class extends import_obsidian5.Modal {
  /**
   * @param {Object} app - Obsidian app
   * @param {Object} env - The environment instance
   */
  constructor(app2, env) {
    super(app2);
    this.env = env;
  }
  async onOpen() {
    this.titleEl.setText("Excluded Sources");
    this.contentEl.addClass("excluded-sources-modal");
    this.render_excluded_list();
  }
  async render_excluded_list() {
    this.contentEl.empty();
    const list_el = this.contentEl.createEl("ul");
    const excluded_file_paths = this.env.smart_sources.excluded_file_paths;
    for (const file_path of excluded_file_paths) {
      const li = list_el.createEl("li");
      li.setText(file_path);
    }
  }
};

// node_modules/obsidian-smart-env/modals/env_stats.js
var import_obsidian6 = require("obsidian");
var EnvStatsModal = class extends import_obsidian6.Modal {
  constructor(app2, env) {
    super(app2);
    this.env = env;
  }
  onOpen() {
    this.titleEl.setText("Smart Environment");
    this.contentEl.empty();
    this.contentEl.createEl("p", { text: "Loading stats..." });
    setTimeout(this.render.bind(this), 100);
  }
  async render() {
    const frag = await this.env.render_component("env_stats", this.env);
    this.contentEl.empty();
    if (frag) {
      this.contentEl.appendChild(frag);
    } else {
      this.contentEl.createEl("p", { text: "Failed to load stats." });
    }
  }
};

// node_modules/obsidian-smart-env/modals/exclude_files_fuzzy.js
var import_obsidian7 = require("obsidian");
var ExcludedFilesFuzzy = class extends import_obsidian7.FuzzySuggestModal {
  /**
   * @param {App} app - The Obsidian app
   * @param {Object} env - An environment-like object, must have .settings and .fs.file_paths
   */
  constructor(app2, env) {
    super(app2);
    this.env = env;
    this.setPlaceholder("Select a file to exclude...");
  }
  open(callback) {
    this.callback = callback;
    super.open();
  }
  getItems() {
    const fileExclusions = (this.env.settings.smart_sources?.file_exclusions || "").split(",").map((s) => s.trim()).filter(Boolean);
    const candidates = (this.env.smart_sources?.fs?.file_paths || []).filter((path) => !fileExclusions.includes(path));
    return candidates;
  }
  getItemText(item) {
    return item;
  }
  onChooseItem(item) {
    if (!item) return;
    const oldVal = this.env.settings.smart_sources?.file_exclusions || "";
    const splitted = oldVal.split(",").map((s) => s.trim()).filter(Boolean);
    if (!splitted.includes(item)) splitted.push(item);
    this.env.settings.smart_sources.file_exclusions = splitted.join(",");
    this.callback?.();
  }
};

// node_modules/obsidian-smart-env/components/env_settings.css
var css_sheet = new CSSStyleSheet();
css_sheet.replaceSync(`.sc-env-settings-container {
  margin: 1rem 0;
}

.sc-env-settings-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.5rem;
}

.toggle-env-settings-btn {
  cursor: pointer;
}

.smart-env-settings-header {
  margin-bottom: 1rem;
}

.excluded-folder-item,
.excluded-file-item {
  margin: 0.3rem 0;
}

/* hide standard text input since env_settings adds improved interface */
.source-settings.collection-settings {
  [data-setting='file_exclusions'],
  [data-setting='folder_exclusions'] {
    display: none;
  }
}`);
var env_settings_default = css_sheet;

// node_modules/obsidian-smart-env/components/env_settings.js
async function build_html4(env, opts = {}) {
  const env_settings_html = Object.entries(env.settings_config).map(([setting_key, setting_config]) => {
    if (setting_key === "file_exclusions" || setting_key === "folder_exclusions") return false;
    if (!setting_config.setting) setting_config.setting = setting_key;
    return this.render_setting_html(setting_config);
  }).filter(Boolean).join("\n");
  const add_excluded_folders_btn = `
    <button class="sc-add-excluded-folder-btn" type="button">Add excluded folder</button>
  `;
  const add_excluded_files_btn = `
    <button class="sc-add-excluded-file-btn" type="button">Add excluded file</button>
  `;
  const excluded_folders_list = `<div class="sc-excluded-folders-list"></div>`;
  const excluded_files_list = `<div class="sc-excluded-files-list"></div>`;
  return `
    <div class="sc-env-settings-container">
      <div class="sc-env-settings-header">
        <h2>Smart Environment</h2>
        <button type="button" class="toggle-env-settings-btn">Show environment settings</button>
      </div>
      <div class="sc-env-settings-body" style="display: none;">
        <div class="smart-env-settings-header" id="smart-env-buttons">
          <button class="sc-collection-stats-btn" type="button">Show stats</button>
          <button class="smart-env_reload-sources-btn" type="button">Reload sources</button>
          <button class="smart-env_clean-up-data-btn" type="button">Clean-up data</button>
          <button class="smart-env_clear-sources-data-btn" type="button">Clear sources data</button>
        </div>

        ${env_settings_html}

        <div class="smart-env-settings-header">
          <h2>Excluded folders</h2>
          ${add_excluded_folders_btn}
        </div>
        ${excluded_folders_list}

        <div class="smart-env-settings-header">
          <h2>Excluded files</h2>
          ${add_excluded_files_btn}
        </div>
        ${excluded_files_list}

        <button class="sc-excluded-sources-btn" type="button">Show excluded</button>

        <div data-smart-settings="smart_sources"></div>
        <div data-smart-settings="smart_blocks"></div>
        <p>Notes about embedding models:</p>
        <ul>
          <li>IMPORTANT: make sure local <code>BGE-micro-v2</code> embedding model works before trying other local models.</li>
          <li>API models require an API key and send your notes to third-party servers for processing.</li>
          <li>If notes persistently re-embed after switching models, use "Clear sources data" then "Reload sources" to reset.</li>
        </ul>
        <div data-smart-notices></div>
        <hr>
      </div>
      ${render_sign_in_or_open_smart_plugins(env)}
    </div>
  `;
}
async function render6(env, opts = {}) {
  const html = await build_html4.call(this, env, opts);
  const frag = this.create_doc_fragment(html);
  this.apply_style_sheet(env_settings_default);
  await this.render_setting_components(frag, { scope: env });
  env.settings_container = frag.querySelector(".sc-env-settings-container");
  const lean_coffee_callout = await env.render_component("lean_coffee_callout", env);
  env.settings_container.appendChild(lean_coffee_callout);
  post_process5.call(this, env, env.settings_container, opts);
  return frag;
}
async function post_process5(env, container, opts = {}) {
  const heading_btn = container.querySelector(".toggle-env-settings-btn");
  const body_el = container.querySelector(".sc-env-settings-body");
  if (heading_btn && body_el) {
    heading_btn.addEventListener("click", () => {
      const is_hidden = body_el.style.display === "none";
      body_el.style.display = is_hidden ? "block" : "none";
      heading_btn.textContent = is_hidden ? "Hide environment settings" : "Show environment settings";
    });
  }
  const muted_notices_frag = await env.render_component("muted_notices", env);
  await this.render_setting_components(muted_notices_frag, { scope: env });
  container.querySelector("[data-smart-notices]").appendChild(muted_notices_frag);
  const add_folder_btn = container.querySelector(".sc-add-excluded-folder-btn");
  if (add_folder_btn) {
    add_folder_btn.addEventListener("click", () => {
      const fuzzy = new ExcludedFoldersFuzzy(env.main.app, env);
      fuzzy.open(() => {
        render_excluded_dir_list(env, container);
        env.update_exclusions();
      });
    });
  }
  const add_file_btn = container.querySelector(".sc-add-excluded-file-btn");
  if (add_file_btn) {
    add_file_btn.addEventListener("click", () => {
      const fuzzy = new ExcludedFilesFuzzy(env.main.app, env);
      fuzzy.open(() => {
        render_excluded_file_list(env, container);
        env.update_exclusions();
      });
    });
  }
  const show_excluded_btn = container.querySelector(".sc-excluded-sources-btn");
  if (show_excluded_btn) {
    show_excluded_btn.addEventListener("click", () => {
      const modal = new ExcludedSourcesModal(env.main.app, env);
      modal.open();
    });
  }
  const show_stats_btn = container.querySelector(".sc-collection-stats-btn");
  if (show_stats_btn) {
    show_stats_btn.addEventListener("click", () => {
      const modal = new EnvStatsModal(env.main.app, env);
      modal.open();
    });
  }
  const reload_sources_btn = container.querySelector(".smart-env_reload-sources-btn");
  if (reload_sources_btn) {
    reload_sources_btn.addEventListener("click", async () => {
      const start = Date.now();
      env.smart_sources.unload();
      env.smart_blocks.unload();
      await env.init_collections();
      await env.load_collections();
      await env.smart_sources.process_embed_queue();
      const end = Date.now();
      env.events?.emit("sources:reloaded", { time_ms: end - start });
      env.main.notices?.show("reload_sources", { time_ms: end - start });
    });
  }
  const clean_up_data_btn = container.querySelector(".smart-env_clean-up-data-btn");
  if (clean_up_data_btn) {
    clean_up_data_btn.addEventListener("click", async () => {
      await env.smart_sources.run_clean_up_data();
    });
  }
  const smart_env_buttons = container.querySelector("#smart-env-buttons");
  const clear_sources_data_btn = smart_env_buttons.querySelector(".smart-env_clear-sources-data-btn");
  if (clear_sources_data_btn) {
    const inline_confirm_html = `
      <div class="sc-inline-confirm-row" style="display: none;">
        <span style="margin-right: 10px;">
          Are you sure you want to clear all sources data? This cannot be undone.
        </span>
        <span class="sc-inline-confirm-row-buttons">
          <button class="sc-inline-confirm-yes">Yes</button>
          <button class="sc-inline-confirm-cancel">Cancel</button>
        </span>
      </div>
    `;
    const inline_confirm_frag = this.create_doc_fragment(inline_confirm_html);
    smart_env_buttons.appendChild(inline_confirm_frag);
    const confirm_yes = smart_env_buttons.querySelector(".sc-inline-confirm-yes");
    const confirm_cancel = smart_env_buttons.querySelector(".sc-inline-confirm-cancel");
    clear_sources_data_btn.addEventListener("click", () => {
      const confirm_row = smart_env_buttons.querySelector(".sc-inline-confirm-row");
      confirm_row.style.display = "block";
      clear_sources_data_btn.style.display = "none";
    });
    confirm_yes.addEventListener("click", async (e) => {
      const confirm_row = e.target.closest(".sc-inline-confirm-row");
      await env.smart_sources.run_clear_all();
      confirm_row.style.display = "none";
      clear_sources_data_btn.style.display = "inline-block";
    });
    confirm_cancel.addEventListener("click", (e) => {
      const confirm_row = e.target.closest(".sc-inline-confirm-row");
      confirm_row.style.display = "none";
      clear_sources_data_btn.style.display = "inline-block";
    });
  }
  const env_collections_containers = container.querySelectorAll("[data-smart-settings]");
  for (const el of env_collections_containers) {
    const collection_key = el.dataset.smartSettings;
    const collection = env[collection_key];
    if (!collection) continue;
    const collection_settings_frag = await env.render_component("collection_settings", collection);
    el.appendChild(collection_settings_frag);
  }
  render_excluded_dir_list(env, container);
  render_excluded_file_list(env, container);
}
function render_excluded_dir_list(env, container) {
  const list_container = container.querySelector(".sc-excluded-folders-list");
  if (!list_container) return;
  list_container.empty();
  const ul = list_container.createEl("ul");
  const excluded_csv = env.settings.smart_sources?.folder_exclusions || "";
  const arr = excluded_csv.split(",").map((s) => s.trim()).filter(Boolean);
  arr.forEach((folder) => {
    const li = ul.createEl("li", { cls: "excluded-folder-item" });
    li.setText(folder + "  ");
    const remove_btn = li.createEl("button", { text: "(x)", cls: "remove-folder-btn" });
    remove_btn.addEventListener("click", () => {
      const splitted = excluded_csv.split(",").map((x) => x.trim()).filter(Boolean);
      const new_arr = splitted.filter((f) => f !== folder);
      env.settings.smart_sources.folder_exclusions = new_arr.join(",");
      render_excluded_dir_list(env, container);
    });
  });
  if (!arr.length) {
    ul.createEl("li", { text: "No folders excluded yet." });
  }
}
function render_excluded_file_list(env, container) {
  const list_container = container.querySelector(".sc-excluded-files-list");
  if (!list_container) return;
  list_container.empty();
  const ul = list_container.createEl("ul");
  const excluded_csv = env.settings.smart_sources?.file_exclusions || "";
  const arr = excluded_csv.split(",").map((s) => s.trim()).filter(Boolean);
  arr.forEach((file_path) => {
    const li = ul.createEl("li", { cls: "excluded-file-item" });
    li.setText(file_path + "  ");
    const remove_btn = li.createEl("button", { text: "(x)", cls: "remove-file-btn" });
    remove_btn.addEventListener("click", () => {
      const splitted = excluded_csv.split(",").map((s) => s.trim()).filter(Boolean);
      const new_arr = splitted.filter((f) => f !== file_path);
      env.settings.smart_sources.file_exclusions = new_arr.join(",");
      render_excluded_file_list(env, container);
    });
  });
  if (!arr.length) {
    ul.createEl("li", { text: "No files excluded yet." });
  }
}
function render_sign_in_or_open_smart_plugins(env) {
  const oauth_storage_prefix = env.plugin.app.vault.getName().toLowerCase().replace(/[^a-z0-9]/g, "_") + "_smart_plugins_oauth_";
  const isLoggedIn = !!localStorage.getItem(oauth_storage_prefix + "token");
  const buttonLabel = isLoggedIn ? "Open Smart Plugins" : "Sign in";
  const buttonCallback = isLoggedIn ? "open_smart_plugins_settings" : "initiate_smart_plugins_oauth";
  return `
    <div class="setting-component"
      data-name="Smart Plugins - Early Access"
      data-type="button"
      data-btn-text="${buttonLabel}"
      data-description="Supporters can sign in to access early-release Smart Plugins"
      data-callback="${buttonCallback}"
    ></div>
  `;
}

// node_modules/obsidian-smart-env/components/env_stats.js
async function build_html5(env, opts = {}) {
  const lines = [];
  lines.push(`<h2>Collections</h2>`);
  const collection_keys = Object.keys(env.collections).sort((a, b) => {
    if (a === "smart_sources" || a === "smart_blocks") return -1;
    if (b === "smart_sources" || b === "smart_blocks") return 1;
    return a.localeCompare(b);
  });
  for (const collection_key of collection_keys) {
    const collection = env[collection_key];
    if (!collection || !collection.items) {
      lines.push(`
        <div class="sc-collection-stats">
          <h3>${format_collection_name(collection_key)}</h3>
          <p>No valid items.</p>
        </div>
      `);
      continue;
    }
    const snippet = generate_collection_stats(collection, collection_key);
    lines.push(snippet);
  }
  return `
    <div class="sc-env-stats-container">
      ${lines.join("\n")}
    </div>
  `;
}
async function render7(env, opts = {}) {
  const html = await build_html5.call(this, env, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process6.call(this, env, frag, opts);
}
async function post_process6(env, frag, opts = {}) {
  return frag;
}
function generate_collection_stats(collection, collectionKey) {
  const total_items = Object.values(collection.items).length;
  const niceName = format_collection_name(collectionKey);
  const state = collection.env.collections[collectionKey];
  if (state !== "loaded") {
    return `
      <div class="sc-collection-stats">
        <h3>${niceName}</h3>
        <p>Not loaded yet (${total_items} items known).</p>
      </div>
    `;
  }
  const load_time_html = collection.load_time_ms ? `<span>Load time: ${collection.load_time_ms}ms</span>` : "";
  const state_html = `<span>State: ${state}</span>`;
  let html = "";
  if (collectionKey === "smart_sources") {
    html = get_smart_sources_stats(collection, niceName, total_items);
  } else {
    html = get_generic_collection_stats(collection, niceName, total_items);
  }
  let embed_stats = "";
  if (typeof collection.process_embed_queue === "function") {
    embed_stats = calculate_embed_coverage(collection, total_items);
  }
  return `
    <div class="sc-collection-stats">
      <h3>${niceName}</h3>
      ${embed_stats}
      ${html}
      ${load_time_html}
      ${state_html}
    </div>
  `;
}
function get_smart_sources_stats(collection, niceName, total_items, load_time_html) {
  const totalFiles = collection.total_files ?? total_items;
  const included = collection.included_files ?? "Error calculating included files";
  const excluded = totalFiles - included;
  return `
      <p><strong>Total Files:</strong> ${totalFiles}</p>
      <p><strong>Excluded:</strong> ${excluded}</p>
      <p><strong>Included:</strong> ${included}</p>
  `;
}
function get_generic_collection_stats(collection, niceName, total_items, load_time_html) {
  return `
      <p><strong>Total:</strong> ${total_items}</p>
  `;
}
function calculate_embed_coverage(collection, total_items) {
  const embedded_items = Object.values(collection.items).filter((item) => item.vec);
  if (!embedded_items.length) return "<p>No items embedded</p>";
  const is_unembedded = Object.values(collection.items).filter((i) => i.should_embed && i.is_unembedded);
  const pct = embedded_items.length / total_items * 100;
  const percent = Math.round(pct);
  const display = `${percent}% (${embedded_items.length} / ${total_items})`;
  return `<p><strong>Embedding coverage:</strong> ${display}</p>` + (is_unembedded.length ? `<p><strong>Unembedded:</strong> ${is_unembedded.length}</p>` : "");
}

// node_modules/obsidian-smart-env/components/lean_coffee_callout.js
var import_obsidian8 = require("obsidian");
function build_html6(env, opts = {}) {
  return `<div class="wrapper">
    <div id="lean-coffee-callout" data-callout-metadata="" data-callout-fold="" data-callout="info" class="callout" style="mix-blend-mode: unset;">
      <div class="callout-title" style="align-items: center;">
        <div class="callout-icon">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
            viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
            stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-info">
            <circle cx="12" cy="12" r="10"></circle>
            <path d="M12 16v-4"></path>
            <path d="M12 8h.01"></path>
          </svg>
        </div>
        <div class="callout-title-inner">
          <strong>Community Lean Coffee</strong>
        </div>
      </div>
      <div class="callout-content">
        <p dir="auto">
          <span>Ask questions. Bring challenges. Request features. Show workflows. Be ready to share.</span>
          <br>
          <i>Join the next <a href="https://lu.ma/calendar/cal-ZJtdnzAdURyouM7" target="_external">Community Lean Coffee</a> meeting.</i> Unable to attend? Submit a question <a href="https://docs.google.com/forms/d/e/1FAIpQLSdqOtTjksMwg1BOuGNCncpMQ_QT-wcd-3AgZGIe3A_isut5aQ/viewform?usp=dialog" target="_external">here</a> \u{1F334}
        </p>
      </div>
    </div>
  </div>`;
}
function render8(env, opts = {}) {
  const html = build_html6.call(this, env, opts);
  const frag = this.create_doc_fragment(html);
  const callout = frag.querySelector("#lean-coffee-callout");
  const icon_container = callout.querySelector(".callout-icon");
  const icon = (0, import_obsidian8.getIcon)("smart-chat");
  if (icon) {
    this.empty(icon_container);
    icon_container.appendChild(icon);
  }
  post_process7.call(this, env, callout, opts);
  return callout;
}
function post_process7(env, callout) {
}

// node_modules/obsidian-smart-env/components/muted_notices.js
async function build_html7(env, opts = {}) {
  let html = `<div class="muted-notice-container" style="display: flex; flex-direction: column; gap: 10px;">
    <h2>Muted notices</h2>
  `;
  if (Object.keys(env.notices.settings?.muted || {}).length) {
    for (const notice in env.notices.settings?.muted) {
      html += `<div class="muted-notice" data-notice="${notice}" style="display: flex; align-items: center; justify-content: space-between; gap: 10px;">
        <span>${notice}</span>
        <button class="unmute-button">Remove</button>
      </div>`;
    }
  } else {
    html += `<p>No muted notices.</p>`;
  }
  html += `</div>`;
  return html;
}
async function render9(env, opts = {}) {
  let html = await build_html7.call(this, env, opts);
  const frag = this.create_doc_fragment(html);
  post_process8.call(this, env, frag, opts);
  return frag;
}
async function post_process8(env, frag, opts = {}) {
  const unmute_buttons = frag.querySelectorAll(".unmute-button");
  unmute_buttons.forEach((button) => {
    button.addEventListener("click", () => {
      const notice = button.parentElement.dataset.notice;
      env.notices.settings.muted[notice] = false;
      delete env.notices.settings.muted[notice];
      button.parentElement.remove();
    });
  });
}

// node_modules/obsidian-smart-env/components/source_inspector.css
var css_sheet2 = new CSSStyleSheet();
css_sheet2.replaceSync(`.source-inspector {
  background-color: var(--background-secondary-alt);
  margin: var(--size-4-3) 0;
  padding: var(--size-4-3);
  border-radius: var(--radius-m);
}

.source-inspector-blocks-container {
  margin-top: var(--size-4-2);
  display: flex;
  flex-direction: column;
  gap: var(--size-4-3);
}

.source-inspector-blocks-container blockquote {
  margin-left: var(--size-4-3);
  padding-left: var(--size-4-3);
  border-left: 2px solid var(--text-faint);
}
`);
var source_inspector_default = css_sheet2;

// node_modules/obsidian-smart-env/components/source_inspector.js
function build_html8(source2, opts = {}) {
  return `<div>
    <div class="source-inspector-source-info">
      <button class="source-inspector-show-data-btn" type="button">Show source data</button>
      <div class="source-inspector-source-data" style="display:none; margin: 0.5em 0;">
        <pre style="max-height:300px; overflow:auto; background:#222; color:#fff; padding:0.5em; border-radius:4px;"></pre>
      </div>
    </div>
    <div class="smart-chat-message source-inspector">
      <h2>Blocks</h2>
      <div class="source-inspector-blocks-container"></div>
    </div>
  </div>`;
}
async function render10(source2, opts = {}) {
  const html = build_html8(source2, opts);
  const frag = this.create_doc_fragment(html);
  this.apply_style_sheet(source_inspector_default);
  await post_process9.call(this, source2, frag, opts);
  return frag;
}
async function post_process9(source2, frag, opts = {}) {
  const container = frag.querySelector(".source-inspector .source-inspector-blocks-container");
  if (!container) return frag;
  const source_info = frag.querySelector(".source-inspector-source-info");
  const btn = frag.querySelector(".source-inspector-show-data-btn");
  const data_div = frag.querySelector(".source-inspector-source-data");
  const pre = data_div?.querySelector("pre");
  if (btn && data_div && pre) {
    btn.addEventListener("click", () => {
      if (data_div.style.display === "none") {
        pre.textContent = JSON.stringify(source2.data, null, 2);
        data_div.style.display = "";
        btn.textContent = "Hide source data";
      } else {
        data_div.style.display = "none";
        btn.textContent = "Show source data";
      }
    });
  }
  const source_should_embed = source2.should_embed ? `<span style="color: green;">should embed</span>` : `<span style="color: orange;">embedding skipped</span>`;
  const source_embed_status = source2.vec ? `<span style="color: green;">vectorized</span>` : `<span style="color: orange;">not vectorized</span>`;
  const source_info_frag = this.create_doc_fragment(`<p>${source_should_embed} | ${source_embed_status}</p>`);
  source_info.appendChild(source_info_frag);
  if (!source2 || !source2.blocks || source2.blocks.length === 0) {
    this.safe_inner_html(container, `<p>No blocks</p>`);
    return frag;
  }
  const sorted_blocks = source2.blocks.sort((a, b) => a.line_start - b.line_start);
  for (const block of sorted_blocks) {
    const sub_key_display = block.sub_key.split("#").join(" > ");
    const block_info = `${sub_key_display} (${block.size} chars; lines: ${block.line_start}-${block.line_end})`;
    const should_embed = block.should_embed ? `<span style="color: green;">should embed</span>` : `<span style="color: orange;">embedding skipped</span>`;
    const embed_status = block.vec ? `<span style="color: green;">vectorized</span>` : `<span style="color: orange;">not vectorized</span>`;
    let block_content = "";
    let embed_input = "";
    try {
      const raw = await block.read();
      block_content = raw.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\n/g, "<br>").replace(/\t/g, "&nbsp;&nbsp;");
      const embed_raw = await block.get_embed_input(raw);
      embed_input = embed_raw.replace(/</g, "&lt;").replace(/>/g, "&gt;");
    } catch (err) {
      console.error("[source_inspector] Error reading block:", err);
      block_content = `<em style="color:red;">Error reading block content</em>`;
    }
    const block_frag = this.create_doc_fragment(`
      <p>
        ${block_info}<br>
        ${should_embed} | ${embed_status}
      </p>
      <details class="source-inspector-embed-input">
        <summary>Embed input</summary>
        <pre style="max-height:300px; overflow:auto; background:#222; color:#fff; padding:0.5em; border-radius:4px;">${embed_input}</pre>
      </details>
      <blockquote>${block_content}</blockquote>
      <hr>
    `);
    container.appendChild(block_frag);
  }
  return frag;
}

// node_modules/obsidian-smart-env/components/supporter_callout.js
var import_obsidian9 = require("obsidian");
function build_html9(plugin, opts = {}) {
  const { plugin_name = plugin.manifest.name } = opts;
  return `<div class="wrapper">
    <div id="footer-callout" data-callout-metadata="" data-callout-fold="" data-callout="info" class="callout" style="mix-blend-mode: unset;">
      <div class="callout-title" style="align-items: center;">
        <div class="callout-icon">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
            viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
            stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-info">
            <circle cx="12" cy="12" r="10"></circle>
            <path d="M12 16v-4"></path>
            <path d="M12 8h.01"></path>
          </svg>
        </div>
        <div class="callout-title-inner"><strong>Become a Supporter</strong></div>
      </div>
      <div class="callout-content">
        <p>Try early &amp; experimental features:
          <ul>
            <li><b>Smart Connections Early Release:</b>
              <ul>
                <li>Inline block connections</li>
                <li>Footer connections view</li>
                <li>Connections re-ranking</li>
              </ul>
            </li>
            <li><b>Smart Context Early Release:</b>
              <ul>
                <li>Named contexts</li>
                <li>External sources: include code from external repositories</li>
                <li>Context codeblocks: embed context in notes ("My most valuable workflow" - \u{1F334} Brian)</li>
              </ul>
            </li>
            <li><b>Smart Editor:</b>
              <ul>
                <li>Generate &amp; review changes</li>
              </ul>
            </li>
            <li><em>Be the first to know what's coming next!</em></li>
          </ul>
        </p>
        <p>Access the Supporter Community Campfire Chat:
          <ul>
            <li>Supporter-only private discussions</li>
            <li>Share workflows</li>
            <li>Get priority help &amp; support</li>
          </ul>
        </p>
        <p>Guaranteed seat in the Community Lean Coffee meetings.</p>
        <p><i>Your support shapes the future of ${plugin_name}.</i></p>
        <p>
          <strong>Fuel the circle of empowerment.</strong> <a href="https://smartconnections.app/community-supporters?utm_source=obsidian-${plugin_name.replace(/[^a-zA-Z0-9]/g, "-").toLowerCase()}" class="button" target="_external">Become a Supporter</a>
        </p>
      </div>
    </div>
  </div>`;
}
function render11(plugin, opts = {}) {
  const html = build_html9.call(this, plugin, opts);
  const frag = this.create_doc_fragment(html);
  const callout = frag.querySelector("#footer-callout");
  const icon_container = callout.querySelector(".callout-icon");
  const icon = (0, import_obsidian9.getIcon)("hand-heart");
  if (icon) {
    this.empty(icon_container);
    icon_container.appendChild(icon);
  }
  post_process10.call(this, plugin, callout, opts);
  return callout;
}
function post_process10(plugin, callout) {
}

// node_modules/obsidian-smart-env/components/user_agreement_callout.js
var import_obsidian10 = require("obsidian");
function build_html10(plugin, opts = {}) {
  const { plugin_name = plugin.manifest.name } = opts;
  return `<div class="wrapper">
    <div id="footer-callout" data-callout-metadata="" data-callout-fold="" data-callout="info" class="callout" style="mix-blend-mode: unset;">
      <div class="callout-title" style="align-items: center;">
        <div class="callout-icon">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
            viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
            stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-info">
            <circle cx="12" cy="12" r="10"></circle>
            <path d="M12 16v-4"></path>
            <path d="M12 8h.01"></path>
          </svg>
        </div>
        <div class="callout-title-inner"><strong>User Agreement</strong></div>
      </div>
      <div class="callout-content">
        <p>By using ${plugin_name} you agree to share how it helps you with at least one other person \u{1F60A}\u{1F334}</p>
      </div>
    </div>
  </div>`;
}
function render12(plugin, opts = {}) {
  const html = build_html10.call(this, plugin, opts);
  const frag = this.create_doc_fragment(html);
  const callout = frag.querySelector("#footer-callout");
  const icon_container = callout.querySelector(".callout-icon");
  const icon = (0, import_obsidian10.getIcon)("smart-connections");
  if (icon) {
    this.empty(icon_container);
    icon_container.appendChild(icon);
  }
  post_process11.call(this, plugin, callout, opts);
  return callout;
}
function post_process11(plugin, callout) {
}

// node_modules/obsidian-smart-env/smart_env.config.js
var smart_env_config = {
  collections: {},
  item_types: {},
  components: {
    collection_settings: render5,
    env_settings: render6,
    env_stats: render7,
    lean_coffee_callout: render8,
    muted_notices: render9,
    source_inspector: render10,
    supporter_callout: render11,
    user_agreement_callout: render12
  }
};

// node_modules/obsidian-smart-env/default.config.js
var smart_env_config2 = {
  env_path: "",
  modules: {
    smart_fs: {
      class: SmartFs,
      adapter: SmartFsObsidianAdapter
    },
    smart_view: {
      class: SmartView,
      adapter: SmartViewObsidianAdapter
    },
    // smart_notices: {
    //   class: SmartNotices,
    //   adapter: Notice,
    // },
    smart_embed_model: {
      class: SmartEmbedModel,
      adapters: {
        transformers: SmartEmbedTransformersIframeAdapter,
        openai: SmartEmbedOpenAIAdapter,
        ollama: SmartEmbedOllamaAdapter,
        gemini: GeminiEmbedModelAdapter,
        lm_studio: LmStudioEmbedModelAdapter
      }
    },
    smart_chat_model: {
      class: SmartChatModel,
      // DEPRECATED FORMAT: will be changed (requires SmartModel adapters getters update)
      adapters: {
        anthropic: SmartChatModelAnthropicAdapter,
        azure: SmartChatModelAzureAdapter,
        custom: SmartChatModelCustomAdapter,
        google: SmartChatModelGoogleAdapter,
        gemini: SmartChatModelGeminiAdapter,
        groq: SmartChatModelGroqAdapter,
        lm_studio: SmartChatModelLmStudioAdapter,
        ollama: SmartChatModelOllamaAdapter,
        open_router: SmartChatModelOpenRouterAdapter,
        openai: SmartChatModelOpenaiAdapter,
        xai: SmartChatModelXaiAdapter,
        deepseek: SmartChatModelDeepseekAdapter
      },
      http_adapter: new SmartHttpRequest({
        adapter: SmartHttpObsidianRequestAdapter,
        obsidian_request_url: import_obsidian13.requestUrl
      })
    }
  },
  collections: {
    smart_sources: {
      collection_key: "smart_sources",
      class: SmartSources,
      data_adapter: AjsonMultiFileSourcesDataAdapter,
      source_adapters: {
        "md": ObsidianMarkdownSourceContentAdapter,
        "txt": ObsidianMarkdownSourceContentAdapter,
        "excalidraw.md": ExcalidrawSourceContentAdapter,
        "base": BasesSourceContentAdapter
        // "canvas": MarkdownSourceContentAdapter,
        // "default": MarkdownSourceContentAdapter,
      },
      content_parsers: [
        parse_blocks
      ],
      // process_embed_queue: false,
      process_embed_queue: true
      // trigger embedding on load
    },
    smart_blocks: {
      collection_key: "smart_blocks",
      class: SmartBlocks,
      data_adapter: AjsonMultiFileBlocksDataAdapter,
      block_adapters: {
        "md": MarkdownBlockContentAdapter,
        "txt": MarkdownBlockContentAdapter,
        "excalidraw.md": MarkdownBlockContentAdapter
        // "canvas": MarkdownBlockContentAdapter,
      }
    },
    smart_completions: smart_completions_default_config
  },
  item_types: {
    SmartSource,
    SmartBlock,
    SmartCompletion
  },
  items: {
    smart_source: smart_source_default,
    smart_block: smart_block_default
  },
  components: {
    smart_blocks: {
      settings: render3
    },
    smart_embed_model: {
      settings: render4
    }
  },
  default_settings: {
    is_obsidian_vault: true,
    smart_blocks: {
      embed_blocks: true,
      min_chars: 200
    },
    smart_sources: {
      min_chars: 200,
      embed_model: {
        adapter: "transformers",
        transformers: {
          legacy_transformers: false,
          model_key: "TaylorAI/bge-micro-v2"
        }
      },
      excluded_headings: "",
      file_exclusions: "Untitled",
      folder_exclusions: ""
    },
    language: "en",
    new_user: true,
    // DEPRECATED: 2025-06-05 (use localStorage instead)
    re_import_wait_time: 13,
    smart_chat_threads: {
      chat_model: {
        adapter: "ollama",
        ollama: {}
      }
    },
    smart_notices: {},
    smart_view_filter: {
      expanded_view: false,
      render_markdown: true,
      show_full_path: false
    },
    version: ""
  }
};
merge_env_config(smart_env_config2, smart_env_config);
var default_config_default = smart_env_config2;

// node_modules/obsidian-smart-env/utils/add_icons.js
var import_obsidian14 = require("obsidian");
function add_smart_chat_icon() {
  (0, import_obsidian14.addIcon)("smart-chat", `<defs>
  <symbol id="smart-chat-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round">
    <path d="M2 4c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2v11c0 1.1-.9 2-2 2h-8l-5 4v-4H4c-1.1 0-2-.9-2-2Z" stroke-width="2"></path>
    <path d="M7 8c.5.3 1.3.3 1.8 0" stroke-width="2"></path>
    <path d="M15.2 8c.5.3 1.3.3 1.8 0" stroke-width="2"></path>
    <path d="M8 11.5c1 .8 2.5 1.2 4 1.2s3-.4 4-1.2" stroke-width="2"></path>
  </symbol>
</defs>
<use href="#smart-chat-icon" />`);
}
function add_smart_connections_icon() {
  (0, import_obsidian14.addIcon)("smart-connections", `<path d="M50,20 L80,40 L80,60 L50,100" stroke="currentColor" stroke-width="4" fill="none"/>
    <path d="M30,50 L55,70" stroke="currentColor" stroke-width="5" fill="none"/>
    <circle cx="50" cy="20" r="9" fill="currentColor"/>
    <circle cx="80" cy="40" r="9" fill="currentColor"/>
    <circle cx="80" cy="70" r="9" fill="currentColor"/>
    <circle cx="50" cy="100" r="9" fill="currentColor"/>
    <circle cx="30" cy="50" r="9" fill="currentColor"/>`);
}

// node_modules/obsidian-smart-env/node_modules/smart-notices/smart_notices.js
var import_obsidian15 = require("obsidian");

// node_modules/obsidian-smart-env/node_modules/smart-notices/notices.js
var NOTICES = {
  item_excluded: {
    en: "Cannot show Smart Connections for excluded entity: {{entity_key}}"
  },
  load_env: {
    en: "Mobile detected: to prevent performance issues, click to load Smart Environment when ready.",
    button: {
      en: `Load Smart Env`,
      callback: (env) => {
        env.load(true);
      }
    },
    timeout: 1e4
  },
  /** @deprecated in favor of in-component insctructions (2025-06-22) */
  missing_entity: {
    en: "No entity found for key: {{key}}"
  },
  notice_muted: {
    en: "Notice muted"
  },
  new_version_available: {
    en: "A new version is available! (v{{version}})",
    timeout: 15e3,
    button: {
      en: "Release notes",
      callback: (scope) => {
        window.open("https://github.com/brianpetro/obsidian-smart-connections/releases", "_blank");
      }
    }
  },
  new_early_access_version_available: {
    en: "A new early access version is available! (v{{version}})"
  },
  supporter_key_required: {
    en: "Supporter license key required for early access update"
  },
  revert_to_stable_release: {
    en: 'Click "Check for Updates" in the community plugins tab and complete the update for Smart Connections to finish reverting to the stable release.',
    timeout: 0
  },
  action_installed: {
    en: 'Installed action "{{name}}"'
  },
  action_install_error: {
    en: 'Error installing action "{{name}}": {{error}}',
    timeout: 0
  },
  embed_model_not_loaded: {
    en: "Embed model not loaded. Please wait for the model to load and try again."
  },
  embed_search_text_failed: {
    en: "Failed to embed search text."
  },
  error_in_embedding_search: {
    en: "Error in embedding search. See console for details."
  },
  copied_to_clipboard: {
    en: "Message: {{content}} copied successfully."
  },
  copy_failed: {
    en: "Unable to copy message to clipboard."
  },
  copied_chatgpt_url_to_clipboard: {
    en: "ChatGPT URL copied to clipboard."
  },
  loading_collection: {
    en: "Loading {{collection_key}}..."
  },
  done_loading_collection: {
    en: "{{collection_key}} loaded."
  },
  saving_collection: {
    en: "Saving {{collection_key}}..."
  },
  initial_scan: {
    en: "[{{collection_key}}] Starting initial scan...",
    timeout: 0
  },
  done_initial_scan: {
    en: "[{{collection_key}}] Initial scan complete.",
    timeout: 3e3
  },
  pruning_collection: {
    en: "Pruning {{collection_key}}..."
  },
  done_pruning_collection: {
    en: "Pruned {{count}} items from {{collection_key}}."
  },
  embedding_progress: {
    en: "Embedding progress: {{progress}} / {{total}}\n{{tokens_per_second}} tokens/sec using {{model_name}}",
    button: {
      en: "Pause",
      callback: (env) => {
        console.log("pausing");
        env.smart_sources.entities_vector_adapter.halt_embed_queue_processing();
      }
    },
    timeout: 0
  },
  embedding_complete: {
    en: "Embedding complete. {{total_embeddings}} embeddings created. {{tokens_per_second}} tokens/sec using {{model_name}}",
    timeout: 0
  },
  embedding_paused: {
    en: "Embedding paused. Progress: {{progress}} / {{total}}\n{{tokens_per_second}} tokens/sec using {{model_name}}",
    button: {
      en: "Resume",
      callback: (env) => {
        env.smart_sources.entities_vector_adapter.resume_embed_queue_processing(100);
      }
    },
    timeout: 0
  },
  embedding_error: {
    en: "Error embedding: {{error}}",
    timeout: 0
  },
  import_progress: {
    en: "Importing... {{progress}} / {{total}} sources",
    timeout: 0
  },
  done_import: {
    en: "Import complete. {{count}} sources imported in {{time_in_seconds}}s",
    timeout: 0
  },
  no_import_queue: {
    en: "No items in import queue"
  },
  clearing_all: {
    en: "Clearing all data...",
    timeout: 0
  },
  done_clearing_all: {
    en: "All data cleared and reimported",
    timeout: 3e3
  },
  image_extracting: {
    en: "Extracting text from Image(s)",
    timeout: 0
  },
  pdf_extracting: {
    en: "Extracting text from PDF(s)",
    timeout: 0
  },
  insufficient_settings: {
    en: "Insufficient settings for {{key}}, missing: {{missing}}",
    timeout: 0
  },
  unable_to_init_source: {
    en: "Unable to initialize source: {{key}}",
    timeout: 0
  },
  reload_sources: {
    en: "Reloaded sources in {{time_ms}}ms"
  }
};

// node_modules/obsidian-smart-env/node_modules/smart-notices/smart_notices.js
function define_default_create_methods(notices) {
  for (const key of Object.keys(notices)) {
    const notice_obj = notices[key];
    if (typeof notice_obj.create !== "function") {
      notice_obj.create = function(opts = {}) {
        let text = this.en ?? key;
        for (const [k, v] of Object.entries(opts)) {
          text = text.replace(new RegExp(`{{${k}}}`, "g"), String(v));
        }
        let button;
        if (!opts.button && this.button) {
          const btn_label = typeof this.button.en === "string" ? this.button.en : "OK";
          button = {
            text: btn_label,
            callback: typeof this.button.callback === "function" ? this.button.callback : () => {
            }
            // no-op
          };
        } else {
          button = opts.button;
        }
        let final_timeout = opts.timeout ?? this.timeout ?? 5e3;
        return {
          text,
          button,
          timeout: final_timeout,
          confirm: opts.confirm,
          // pass any user-provided confirm
          immutable: opts.immutable
          // pass any user-provided immutable
        };
      };
    }
  }
  return notices;
}
var SmartNotices = class {
  /**
   * @param {Object} scope - The main plugin instance
   */
  constructor(env, opts = {}) {
    env?.create_env_getter(this);
    this.active = {};
    this.adapter = opts.adapter || this.env.config.modules.smart_notices.adapter;
    define_default_create_methods(NOTICES);
  }
  /** plugin settings for notices (muted, etc.) */
  get settings() {
    if (!this.env?.settings?.smart_notices) {
      this.env.settings.smart_notices = {};
    }
    if (!this.env?.settings?.smart_notices?.muted) {
      this.env.settings.smart_notices.muted = {};
    }
    return this.env?.settings?.smart_notices;
  }
  /**
   * Displays a notice by key or custom message.
   * Usage:
   *   notices.show('load_env', { scope: this });
   *
   * @param {string} id - The notice key or custom ID
   * @param {object} opts - Additional user opts
   */
  show(id, opts = {}) {
    let message = null;
    if (typeof opts === "string") {
      message = opts;
    } else {
      opts = opts || {};
    }
    const normalized_id = this._normalize_notice_key(id);
    if (this.settings?.muted?.[normalized_id]) {
      if (opts.confirm?.callback) {
        opts.confirm.callback();
      }
      return;
    }
    const notice_entry = NOTICES[id];
    let derived = {
      text: message || id,
      timeout: opts.timeout ?? 5e3,
      button: opts.button,
      immutable: opts.immutable,
      confirm: opts.confirm
    };
    if (notice_entry?.create) {
      const result = notice_entry.create({ ...opts });
      derived.text = message || result.text;
      derived.timeout = result.timeout;
      derived.button = result.button;
      derived.immutable = result.immutable;
      derived.confirm = result.confirm;
    }
    const content_fragment = this._build_fragment(normalized_id, derived.text, derived);
    if (this.active[normalized_id]?.noticeEl?.isConnected) {
      return this.active[normalized_id].setMessage(content_fragment, derived.timeout);
    }
    return this._render_notice(normalized_id, content_fragment, derived);
  }
  /**
   * Normalizes the notice key to a safe string.
   */
  _normalize_notice_key(key) {
    return key.replace(/[^a-zA-Z0-9_-]/g, "_");
  }
  /**
   * Creates and tracks the notice instance
   */
  _render_notice(normalized_id, content_fragment, { timeout }) {
    this.active[normalized_id] = new this.adapter(content_fragment, timeout);
    return this.active[normalized_id];
  }
  /**
   * Builds a DocumentFragment with notice text & possible buttons
   */
  _build_fragment(id, text, { button, confirm: confirm2, immutable }) {
    const frag = document.createDocumentFragment();
    frag.createEl("p", {
      cls: "sc-notice-head",
      text: `[Smart Env v${this.env.constructor.version}]`
    });
    const content = frag.createEl("p", { cls: "sc-notice-content", text });
    const actions = frag.createEl("div", { cls: "sc-notice-actions" });
    if (confirm2?.text && typeof confirm2.callback === "function") {
      this._add_button(confirm2, actions);
    }
    if (button?.text && typeof button.callback === "function") {
      this._add_button(button, actions);
    }
    if (!immutable) {
      this._add_mute_button(id, actions);
    }
    return frag;
  }
  /**
   * Creates a <button> appended to the container
   */
  _add_button(btnConfig, container) {
    const btn = document.createElement("button");
    this.env.smart_view.safe_inner_html(btn, btnConfig.text);
    btn.addEventListener("click", (e) => {
      if (btnConfig.stay_open) {
        e.preventDefault();
        e.stopPropagation();
      }
      btnConfig.callback?.(this.env);
    });
    container.appendChild(btn);
  }
  /**
   * Mute button
   */
  _add_mute_button(id, container) {
    const btn = document.createElement("button");
    (0, import_obsidian15.setIcon)(btn, "bell-off");
    btn.addEventListener("click", () => {
      if (!this.settings.muted) this.settings.muted = {};
      this.settings.muted[id] = true;
      if (NOTICES["notice muted"]) {
        this.show("notice muted", null, { timeout: 2e3 });
      }
    });
    container.appendChild(btn);
  }
  /**
   * Hides & clears all active notices
   */
  unload() {
    for (const id in this.active) {
      this.remove(id);
    }
  }
  /**
   * Removes an active notice by key
   */
  remove(id) {
    const normalized_id = this._normalize_notice_key(id);
    this.active[normalized_id]?.hide();
    delete this.active[normalized_id];
  }
};

// node_modules/obsidian-smart-env/styles.css
var css_sheet3 = new CSSStyleSheet();
css_sheet3.replaceSync(`.status-bar-item:has(.smart-env-status-container) {
  padding: 0 0.5em;

  &:hover {
    background-color: var(--background-modifier-hover);
  }
  &> .smart-env-status-container {
    display: flex;
    align-items: center;
    gap: 0.5em;
    text-decoration: none;
    color: var(--status-bar-text-color);
  }
}`);
var styles_default = css_sheet3;

// node_modules/obsidian-smart-env/sc_oauth.js
var import_obsidian17 = require("obsidian");

// node_modules/obsidian-smart-env/node_modules/smart-plugins-obsidian/utils.js
var import_obsidian16 = require("obsidian");
function get_smart_server_url() {
  if (typeof window !== "undefined" && window.SMART_SERVER_URL_OVERRIDE) {
    return window.SMART_SERVER_URL_OVERRIDE;
  }
  return "https://connect.smartconnections.app";
}
function try_get_zlib() {
  if (typeof window?.require === "function") {
    try {
      return window.require("zlib");
    } catch {
    }
  }
  return null;
}
function inflate_deflate_data(compressed) {
  const zlib = try_get_zlib();
  if (!zlib) {
    throw new Error("zlib not available (maybe Obsidian mobile?).");
  }
  const buf = Buffer.from(compressed);
  const out = zlib.inflateRawSync(buf);
  return new Uint8Array(out.buffer, out.byteOffset, out.length);
}
async function parse_zip_into_files(zipBuffer) {
  const dv = new DataView(zipBuffer);
  let offset = 0;
  const length = dv.byteLength;
  const files = [];
  let pluginManifest = null;
  while (offset + 4 <= length) {
    const localSig = dv.getUint32(offset, true);
    if (localSig === 33639248 || localSig === 134695760) {
      break;
    }
    if (localSig !== 67324752) {
      break;
    }
    offset += 4;
    const versionNeeded = dv.getUint16(offset, true);
    const generalPurposeBitFlag = dv.getUint16(offset + 2, true);
    const compressionMethod = dv.getUint16(offset + 4, true);
    offset += 6;
    const lastModTimeDate = dv.getUint32(offset, true);
    offset += 4;
    let crc32 = dv.getUint32(offset, true);
    let compressedSize = dv.getUint32(offset + 4, true);
    let uncompressedSize = dv.getUint32(offset + 8, true);
    offset += 12;
    const fileNameLen = dv.getUint16(offset, true);
    const extraLen = dv.getUint16(offset + 2, true);
    offset += 4;
    const fileNameBytes = new Uint8Array(zipBuffer.slice(offset, offset + fileNameLen));
    const fileName = new TextDecoder("utf-8").decode(fileNameBytes);
    offset += fileNameLen;
    offset += extraLen;
    const hasDataDescriptor = (generalPurposeBitFlag & 8) !== 0;
    let compDataStart = offset;
    let compDataEnd;
    if (!hasDataDescriptor) {
      compDataEnd = compDataStart + compressedSize;
    } else {
      let scanPos = compDataStart;
      let foundSig = false;
      while (scanPos + 4 <= length) {
        const sig = dv.getUint32(scanPos, true);
        if (sig === 134695760 || sig === 67324752 || sig === 33639248) {
          foundSig = true;
          break;
        }
        scanPos++;
      }
      compDataEnd = foundSig ? scanPos : length;
    }
    if (compDataEnd > length) {
      break;
    }
    const fileDataCompressed = new Uint8Array(zipBuffer.slice(compDataStart, compDataEnd));
    offset = compDataEnd;
    if (hasDataDescriptor) {
      if (offset + 4 <= length) {
        const ddSig = dv.getUint32(offset, true);
        if (ddSig === 134695760) {
          offset += 4;
        }
        if (offset + 12 <= length) {
          crc32 = dv.getUint32(offset, true);
          compressedSize = dv.getUint32(offset + 4, true);
          uncompressedSize = dv.getUint32(offset + 8, true);
          offset += 12;
        } else {
          break;
        }
      }
    }
    let rawData;
    if (compressionMethod === 0) {
      rawData = fileDataCompressed;
    } else if (compressionMethod === 8) {
      rawData = inflate_deflate_data(fileDataCompressed);
    } else {
      continue;
    }
    files.push({ fileName, data: rawData });
    if (fileName.toLowerCase().endsWith("manifest.json") && !fileName.includes("/")) {
      try {
        pluginManifest = JSON.parse(new TextDecoder("utf-8").decode(rawData));
      } catch {
      }
    }
  }
  return { files, pluginManifest };
}
async function write_files_with_adapter(adapter, baseFolder, files) {
  const hasWriteBinary = typeof adapter.writeBinary === "function";
  if (!await adapter.exists(baseFolder)) {
    await adapter.mkdir(baseFolder);
  }
  for (const { fileName, data } of files) {
    const fullPath = baseFolder + "/" + fileName;
    if (hasWriteBinary) {
      await adapter.writeBinary(fullPath, data);
    } else {
      const base642 = btoa(String.fromCharCode(...data));
      await adapter.write(fullPath, base642);
    }
  }
}
async function fetch_plugin_zip(repoName, token) {
  const resp = await (0, import_obsidian16.requestUrl)({
    url: `${get_smart_server_url()}/plugin_download`,
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Bearer ${token}`
    },
    body: JSON.stringify({ repo: repoName })
  });
  if (resp.status !== 200) {
    throw new Error(`plugin_download error ${resp.status}: ${resp.text}`);
  }
  const ab = resp.arrayBuffer;
  if (ab.byteLength < 4) {
    throw new Error("Server returned too few bytes, not a valid ZIP.");
  }
  const dv = new DataView(ab);
  if (dv.getUint32(0, true) !== 67324752) {
    const txt = new TextDecoder().decode(new Uint8Array(ab));
    throw new Error(`Server did not return a valid ZIP. Text:
${txt}`);
  }
  return ab;
}
async function enable_plugin(app2, plugin_id) {
  await app2.plugins.enablePlugin(plugin_id);
  app2.plugins.enabledPlugins.add(plugin_id);
  app2.plugins.requestSaveConfig();
  app2.plugins.loadManifests();
}

// node_modules/obsidian-smart-env/sc_oauth.js
var CLIENT_ID = "smart-plugins-op";
var CLIENT_SECRET = "smart-plugins-op-secret";
function get_local_storage_token(oauth_storage_prefix) {
  return {
    token: localStorage.getItem(oauth_storage_prefix + "token") || "",
    refresh: localStorage.getItem(oauth_storage_prefix + "refresh") || ""
  };
}
function set_local_storage_token({ access_token, refresh_token }, oauth_storage_prefix) {
  localStorage.setItem(oauth_storage_prefix + "token", access_token);
  if (refresh_token) {
    localStorage.setItem(oauth_storage_prefix + "refresh", refresh_token);
  }
}
async function exchange_code_for_tokens(code, plugin) {
  const oauth_storage_prefix = plugin.app.vault.getName().toLowerCase().replace(/[^a-z0-9]/g, "_") + "_smart_plugins_oauth_";
  const url = `${get_smart_server_url()}/auth/oauth_exchange2`;
  const resp = await (0, import_obsidian17.requestUrl)({
    url,
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      client_id: CLIENT_ID,
      client_secret: CLIENT_SECRET,
      code
    })
  });
  if (resp.status !== 200) {
    throw new Error(`OAuth exchange error ${resp.status} ${resp.text}`);
  }
  const { access_token, refresh_token } = resp.json;
  if (!access_token) {
    throw new Error("No access_token in response");
  }
  set_local_storage_token({ access_token, refresh_token }, oauth_storage_prefix);
}
async function install_smart_plugins_plugin(plugin) {
  const oauth_storage_prefix = plugin.app.vault.getName().toLowerCase().replace(/[^a-z0-9]/g, "_") + "_smart_plugins_oauth_";
  const { token } = get_local_storage_token(oauth_storage_prefix);
  if (!token) throw new Error('No token found to install "smart-plugins"');
  const repo = "brianpetro/smart-plugins-obsidian";
  const zipData = await fetch_plugin_zip(repo, token);
  const { files, pluginManifest } = await parse_zip_into_files(zipData);
  let folder_name = (pluginManifest?.id || "smart-plugins").trim();
  folder_name = folder_name.replace(/[^\w-]/g, "_");
  const base_folder = ".obsidian/plugins/" + folder_name;
  await write_files_with_adapter(plugin.app.vault.adapter, base_folder, files);
  await plugin.app.plugins.loadManifests();
  if (plugin.app.plugins.manifests[folder_name]) {
    await enable_plugin(plugin.app, folder_name);
  }
}

// node_modules/obsidian-smart-env/utils/open_url_externally.js
function open_url_externally(plugin, url) {
  const webviewer = plugin.app.internalPlugins?.plugins?.webviewer?.instance;
  window.open(url, webviewer ? "_external" : "_blank");
}

// node_modules/obsidian-smart-env/utils/register_status_bar_context_menu.js
var import_obsidian19 = require("obsidian");

// node_modules/obsidian-smart-env/views/source_inspector.js
var import_obsidian18 = require("obsidian");
var SmartNoteInspectModal = class extends import_obsidian18.Modal {
  constructor(smart_connections_plugin, entity) {
    super(smart_connections_plugin.app);
    this.smart_connections_plugin = smart_connections_plugin;
    this.entity = entity;
  }
  get env() {
    return this.smart_connections_plugin.env;
  }
  onOpen() {
    this.titleEl.innerText = this.entity.key;
    this.render();
  }
  async render() {
    this.contentEl.empty();
    const frag = await this.env.render_component("source_inspector", this.entity);
    this.contentEl.appendChild(frag);
  }
};

// node_modules/obsidian-smart-env/utils/register_status_bar_context_menu.js
function register_status_bar_context_menu(env, status_container, deps = {}) {
  const { Menu: MenuClass = import_obsidian19.Menu } = deps;
  const plugin = env.main;
  const on_context_menu = (ev) => {
    ev.preventDefault();
    ev.stopPropagation();
    const menu = new MenuClass(plugin.app);
    menu.addItem(
      (item) => item.setTitle("Inspect active note").setIcon("search").onClick(async () => {
        const active_file = plugin.app.workspace.getActiveFile();
        if (!active_file) {
          new import_obsidian19.Notice("No active note found");
          return;
        }
        const src = env.smart_sources?.get(active_file.path);
        if (!src) {
          new import_obsidian19.Notice("Active note is not indexed by Smart Environment");
          return;
        }
        new SmartNoteInspectModal(plugin, src).open();
      })
    );
    menu.addItem(
      (item) => item.setTitle("Show stats").setIcon("chart-pie").onClick(() => {
        const modal = new EnvStatsModal(plugin.app, env);
        modal.open();
      })
    );
    menu.addItem(
      (item) => item.setTitle("Export data").setIcon("download").onClick(() => {
        env.export_json();
        new import_obsidian19.Notice("Smart Env exported");
      })
    );
    menu.addSeparator();
    menu.addItem(
      (item) => item.setTitle("Learn about Community Supporters").setIcon("hand-heart").onClick(() => {
        const url = "https://smartconnections.app/community-supporters/?utm_source=status-bar";
        window.open(url, "_external");
      })
    );
    menu.showAtPosition({ x: ev.pageX, y: ev.pageY });
  };
  plugin.registerDomEvent(status_container, "contextmenu", on_context_menu);
  return on_context_menu;
}

// node_modules/obsidian-smart-env/node_modules/smart-utils/file_tree.js
function build_file_tree_string(paths = []) {
  if (!Array.isArray(paths) || paths.length === 0) return "";
  const root = {};
  for (const path of paths) {
    const isFolder = is_folder_path(path);
    const parts = path.split("/").filter(Boolean);
    let node = root;
    for (let i = 0; i < parts.length; i++) {
      const part = parts[i];
      const isLast = i === parts.length - 1;
      if (isLast) {
        if (isFolder) {
          node[part] = node[part] ?? { __isExplicitFolder: true };
        } else {
          node[part] = null;
        }
      } else {
        node = node[part] ??= {};
      }
    }
  }
  compress_single_child_dirs(root);
  return build_tree_string(root).trimEnd();
}
function is_folder_path(path) {
  return typeof path === "string" && path.endsWith("/");
}
function compress_single_child_dirs(node) {
  if (!node || typeof node !== "object") return;
  for (const key of Object.keys(node)) {
    const child = node[key];
    if (child && typeof child === "object") {
      if (child.__isExplicitFolder) {
        delete child.__isExplicitFolder;
        compress_single_child_dirs(child);
        continue;
      }
      const childKeys = Object.keys(child);
      if (childKeys.length === 1 && child[childKeys[0]] !== null && !child[childKeys[0]].__isExplicitFolder) {
        const mergedKey = `${key}/${childKeys[0]}`;
        node[mergedKey] = child[childKeys[0]];
        delete node[key];
        compress_single_child_dirs(node[mergedKey]);
      } else {
        compress_single_child_dirs(child);
      }
    }
  }
}
function build_tree_string(node, prefix = "") {
  let output = "";
  const entries = Object.entries(node).sort((a, b) => {
    const aIsDir = a[1] !== null;
    const bIsDir = b[1] !== null;
    if (aIsDir && !bIsDir) return -1;
    if (!aIsDir && bIsDir) return 1;
    return a[0].localeCompare(b[0]);
  });
  entries.forEach(([name, child], idx) => {
    const isLast = idx === entries.length - 1;
    const connector = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
    if (child === null) {
      output += `${prefix}${connector}${name}
`;
    } else {
      output += `${prefix}${connector}${name}/
`;
      output += build_tree_string(child, prefix + (isLast ? "    " : "\u2502   "));
    }
  });
  return output;
}

// node_modules/obsidian-smart-env/utils/replace_folder_tree_var.js
function replace_folder_tree_var(prompt) {
  const env = this;
  let paths = env.smart_sources?.fs?.folder_paths ?? [];
  paths = paths.map((p) => p.endsWith("/") ? p : p + "/");
  const tree = build_file_tree_string([...new Set(paths)]);
  return prompt.replace(/{{\s*folder_tree\s*}}/gi, tree);
}

// node_modules/obsidian-smart-env/utils/replace_folders_top_var.js
function replace_folders_top_var(prompt) {
  const env = this;
  let paths = env.smart_sources?.fs?.folder_paths ?? [];
  paths = paths.map((p) => (p.split("/")[0] || "") + "/");
  const tree = build_file_tree_string([...new Set(paths)]);
  return prompt.replace(/{{\s*folders_top\s*}}/gi, tree);
}

// node_modules/obsidian-smart-env/utils/replace_recent_n_var.js
function replace_recent_n_var(prompt) {
  console.log("replace_recent_n_var", prompt);
  const env = this;
  return prompt.replace(/{{\s*recent_(\d+)\s*}}/gi, (_, count) => {
    const n = parseInt(count, 10) || 0;
    const files = Object.values(env.smart_sources?.fs?.files ?? {}).sort((a, b) => b.stat.mtime - a.stat.mtime).slice(0, n).map((f) => f.path).join("\n  - ");
    console.log("replace_recent_n_var", n, files);
    return files ? `
  - ${files}` : "";
  }).trim();
}

// node_modules/obsidian-smart-env/utils/replace_vault_tags_var.js
function replace_vault_tags_var(prompt) {
  const appRef = this.app;
  const tags = appRef?.metadataCache?.getTags?.() || {};
  const vault_tags = Object.keys(tags).map((tag) => tag.replace("#", "")).join("\n  - ");
  return prompt.replace(/{{\s*(?:vault_tags|tags)\s*}}/gi, `
  - ${vault_tags}
`).trim();
}

// node_modules/obsidian-smart-env/utils/register_completion_variable_adapter_replacements.js
function register_completion_variable_adapter_replacements(variable_adapter_class) {
  variable_adapter_class.register(
    (txt) => /{{\s*folder_tree\s*}}/i.test(txt),
    replace_folder_tree_var,
    "{{ folder_tree }}"
    // Example variable
  );
  variable_adapter_class.register(
    (txt) => /{{\s*folders_top\s*}}/i.test(txt),
    replace_folders_top_var,
    "{{ folders_top }}"
    // Example variable
  );
  variable_adapter_class.register(
    (txt) => /{{\s*(?:tags|vault_tags)\s*}}/i.test(txt),
    replace_vault_tags_var,
    "{{ tags }}"
    // Example variable
  );
  variable_adapter_class.register(
    (txt) => /{{\s*recent_(\d+)\s*}}/i.test(txt),
    replace_recent_n_var,
    "{{ recent_10 }}"
    // Example variable
  );
}

// node_modules/obsidian-smart-env/smart_env.js
var SmartEnv2 = class extends SmartEnv {
  static async create(plugin, main_env_opts = null) {
    add_smart_chat_icon();
    add_smart_connections_icon();
    if (!main_env_opts) main_env_opts = plugin.smart_env_config;
    if (plugin.app.plugins.plugins["smart-connections"] && plugin.app.plugins.plugins["smart-connections"].env && !plugin.app.plugins.plugins["smart-connections"].env.constructor.version) {
      const update_notice = "Detected older SmartEnv with 'init_main'. Reloading without the outdated plugin. Please update Smart Connections.";
      console.warn(update_notice);
      new import_obsidian20.Notice(update_notice, 0);
      disable_plugin(plugin.app, "smart-connections");
    }
    const opts = merge_env_config(main_env_opts, default_config_default);
    return await super.create(plugin, opts);
  }
  async load(force_load = false) {
    if (!import_obsidian20.Platform.isMobile && !this.plugin.app.workspace.protocolHandlers.has("sc-op/callback")) {
      this.plugin.registerObsidianProtocolHandler("sc-op/callback", async (params) => {
        await this.handle_sc_op_oauth_callback(params);
      });
    }
    if (import_obsidian20.Platform.isMobile && !force_load) {
      const frag = this.smart_view.create_doc_fragment(`<div><p>Smart Environment loading deferred on mobile.</p><button>Load Environment</button></div>`);
      frag.querySelector("button").addEventListener("click", () => {
        this.load(true);
      });
      new import_obsidian20.Notice(frag, 0);
      return;
    }
    await super.load();
    const plugin = this.main;
    plugin.registerEvent(
      plugin.app.vault.on("create", (file) => {
        if (file instanceof import_obsidian20.TFile && this.smart_sources?.source_adapters?.[file.extension]) {
          const source2 = this.smart_sources?.init_file_path(file.path);
          if (source2) {
            this.queue_source_re_import(source2);
          } else {
            console.warn("SmartEnv: Unable to init source for newly created file", file.path);
          }
        }
      })
    );
    plugin.registerEvent(
      plugin.app.vault.on("rename", (file, old_path) => {
        if (file instanceof import_obsidian20.TFile && this.smart_sources?.source_adapters?.[file.extension]) {
          const source2 = this.smart_sources?.init_file_path(file.path);
          if (source2) {
            this.queue_source_re_import(source2);
          } else {
            console.warn("SmartEnv: Unable to init source for renamed file", file.path);
          }
        }
        if (old_path) {
          const source2 = this.smart_sources?.get(old_path);
          if (source2) {
            source2.delete();
            if (this.rename_debounce_timeout) clearTimeout(this.rename_debounce_timeout);
            this.rename_debounce_timeout = setTimeout(() => {
              this.smart_sources?.process_save_queue();
              this.rename_debounce_timeout = null;
            }, 1e3);
          }
        }
      })
    );
    plugin.registerEvent(
      plugin.app.vault.on("modify", (file) => {
        if (file instanceof import_obsidian20.TFile && this.smart_sources?.source_adapters?.[file.extension]) {
          const source2 = this.smart_sources?.get(file.path);
          if (source2) {
            this.queue_source_re_import(source2);
          } else {
            console.warn("SmartEnv: Unable to get source for modified file", file.path);
          }
        }
      })
    );
    plugin.registerEvent(
      plugin.app.workspace.on("editor-change", () => {
        this.debounce_re_import_queue();
      })
    );
    plugin.registerEvent(
      plugin.app.workspace.on("active-leaf-change", () => {
        this.debounce_re_import_queue();
      })
    );
    plugin.registerEvent(
      plugin.app.vault.on("delete", (file) => {
        if (file instanceof import_obsidian20.TFile && this.smart_sources?.source_adapters?.[file.extension]) {
          delete this.smart_sources?.items[file.path];
        }
      })
    );
    this.refresh_status();
    register_completion_variable_adapter_replacements(this._config.collections.smart_completions.completion_adapters.SmartCompletionVariableAdapter);
  }
  // queue re-import the file
  queue_source_re_import(source2) {
    if (!source2 || !source2.key) return;
    if (!this.sources_re_import_queue) this.sources_re_import_queue = {};
    if (this.sources_re_import_queue?.[source2.key]) return;
    source2.data.last_import = { at: 0, hash: null, mtime: 0, size: 0 };
    this.sources_re_import_queue[source2.key] = source2;
    this.debounce_re_import_queue();
  }
  debounce_re_import_queue() {
    this.refresh_status();
    this.sources_re_import_halted = true;
    if (this.sources_re_import_timeout) clearTimeout(this.sources_re_import_timeout);
    if (!this.sources_re_import_queue || Object.keys(this.sources_re_import_queue).length === 0) {
      this.sources_re_import_timeout = null;
      return;
    }
    this.sources_re_import_timeout = setTimeout(this.run_re_import.bind(this), this.settings.re_import_wait_time * 1e3);
  }
  async run_re_import() {
    this.sources_re_import_halted = false;
    const queue_length = Object.keys(this.sources_re_import_queue || {}).length;
    if (queue_length) {
      for (const [key, src] of Object.entries(this.sources_re_import_queue)) {
        await src.import();
        if (!this.smart_sources._embed_queue) this.smart_sources._embed_queue = [];
        if (src.should_embed) this.smart_sources._embed_queue.push(src);
        if (this.smart_blocks.settings.embed_blocks) {
          for (const block of src.blocks) {
            if (block._queue_embed || block.should_embed && block.is_unembedded) {
              this.smart_sources._embed_queue.push(block);
              block._queue_embed = true;
            }
          }
        }
        delete this.sources_re_import_queue[key];
        if (this.sources_re_import_halted) {
          this.debounce_re_import_queue();
        }
      }
      if (this.smart_sources?._embed_queue?.length) {
        await this.smart_sources.process_embed_queue();
      }
    }
    if (this.sources_re_import_timeout) clearTimeout(this.sources_re_import_timeout);
    this.sources_re_import_timeout = null;
    this.refresh_status();
  }
  refresh_status() {
    if (!this.status_elm) {
      const existing = this.main.app.statusBar.containerEl.querySelector(".smart-env-status-container");
      if (existing) {
        existing.closest(".status-bar-item")?.remove();
      }
      this.status_elm = this.main.addStatusBarItem();
      this.smart_view.apply_style_sheet(styles_default);
      this.status_container = this.status_elm.createEl("a", {
        cls: "smart-env-status-container"
      });
      (0, import_obsidian20.setIcon)(this.status_container, "smart-connections");
      this.status_msg = this.status_container.createSpan(
        "smart-env-status-msg"
      );
      this.open_context_menu_handler = register_status_bar_context_menu(
        this,
        this.status_container
      );
    }
    const queue_length = Object.keys(this.sources_re_import_queue || {}).length;
    if (queue_length) {
      this.status_msg.setText(`Embed now (${queue_length})`);
      this.status_container.setAttribute("title", "Click to re\u2011import.");
      this.status_container.removeAttribute("href");
      this.status_container.removeEventListener(
        "click",
        this.open_menu_click_handler
      );
      this.status_container.removeEventListener(
        "click",
        re_embed_click_handler
      );
      this.status_container.addEventListener("click", re_embed_click_handler);
      return;
    }
    this.status_msg.setText("Smart Env " + this.constructor.version);
    this.status_container.setAttribute("title", "Smart Environment status");
    this.status_container.removeEventListener("click", re_embed_click_handler);
    this.status_container.removeAttribute("href");
    this.status_container.removeAttribute("target");
    if (!this.open_menu_click_handler) {
      this.open_menu_click_handler = (e) => {
        const evt = new MouseEvent("contextmenu", e);
        this.status_container.dispatchEvent(evt);
      };
    }
    this.status_container.removeEventListener(
      "click",
      this.open_menu_click_handler
    );
    this.status_container.addEventListener("click", this.open_menu_click_handler);
  }
  get notices() {
    if (!this._notices) {
      this._notices = new SmartNotices(this, {
        adapter: import_obsidian20.Notice
      });
    }
    return this._notices;
  }
  get settings_config() {
    const config = super.settings_config;
    delete config["is_obsidian_vault"];
    config["re_import_wait_time"] = {
      type: "number",
      name: "Re-import wait time",
      description: "Time in seconds to wait before re-importing a file after modification."
    };
    return config;
  }
  // Smart Plugins
  /**
   * This is the function that is called by the new "Sign in with Smart Plugins" button.
   * It replicates the old 'initiate_oauth()' logic from sc_settings_tab.js
   */
  initiate_smart_plugins_oauth() {
    console.log("initiate_smart_plugins_oauth");
    const state = Math.random().toString(36).slice(2);
    const redirect_uri = encodeURIComponent("obsidian://sc-op/callback");
    const url = `${get_smart_server_url()}/oauth?client_id=smart-plugins-op&redirect_uri=${redirect_uri}&state=${state}`;
    open_url_externally(this.plugin, url);
  }
  /**
   * Handles the OAuth callback from the Smart Plugins server.
   * @param {Object} params - The URL parameters from the OAuth callback.
   */
  async handle_sc_op_oauth_callback(params) {
    const code = params.code;
    if (!code) {
      new import_obsidian20.Notice("No OAuth code provided in URL. Login failed.");
      return;
    }
    try {
      await exchange_code_for_tokens(code, this.plugin);
      await install_smart_plugins_plugin(this.plugin);
      new import_obsidian20.Notice("Smart Plugins installed / updated successfully!");
      this.open_smart_plugins_settings();
    } catch (err) {
      console.error("OAuth callback error", err);
      new import_obsidian20.Notice(`OAuth callback error: ${err.message}`);
    }
  }
  /**
   * Opens the Obsidian settings window with the 'Smart Plugins' tab active.
   * @public
   */
  async open_smart_plugins_settings() {
    const spInstalled = this.plugin.app.plugins.plugins["smart-plugins"];
    if (!spInstalled) {
      await install_smart_plugins_plugin(this.plugin);
      await new Promise((r) => setTimeout(r, 500));
    }
    const spEnabled = this.plugin.app.plugins.enabledPlugins.has("smart-plugins");
    if (!spEnabled) {
      await enable_plugin(this.plugin.app, "smart-plugins");
      await new Promise((r) => setTimeout(r, 500));
    }
    this.plugin.app.commands.executeCommandById("app:open-settings");
    const spTab = this.plugin.app.setting.pluginTabs.find((t) => t.name === "Smart Plugins");
    if (spTab) {
      this.plugin.app.setting.openTab(spTab);
    }
  }
  /**
   * Serializes the environment and, when in a browser, triggers a download.
   * @param {string} [filename='smart_env.json']
   * @returns {string} stringified JSON
   */
  export_json(filename = "smart_env.json") {
    const json = JSON.stringify(this.to_json(), null, 2);
    if (typeof document !== "undefined") {
      download_json(json, filename);
    }
    return json;
  }
  // WAIT FOR OBSIDIAN SYNC
  async ready_to_load_collections() {
    await new Promise((r) => setTimeout(r, 3e3));
    await this.wait_for_obsidian_sync();
  }
  async wait_for_obsidian_sync() {
    while (this.obsidian_is_syncing) {
      console.log("Smart Connections: Waiting for Obsidian Sync to finish");
      await new Promise((r) => setTimeout(r, 1e3));
      if (!this.plugin) throw new Error("Plugin disabled while waiting for obsidian sync, reload required.");
    }
  }
  get obsidian_is_syncing() {
    const obsidian_sync_instance = this.plugin?.app?.internalPlugins?.plugins?.sync?.instance;
    if (!obsidian_sync_instance) return false;
    if (obsidian_sync_instance?.syncStatus.startsWith("Uploading")) return false;
    if (obsidian_sync_instance?.syncStatus.startsWith("Fully synced")) return false;
    return obsidian_sync_instance?.syncing;
  }
};
async function disable_plugin(app2, plugin_id) {
  console.log("disabling plugin " + plugin_id);
  await app2.plugins.unloadPlugin(plugin_id);
  await app2.plugins.disablePluginAndSave(plugin_id);
  await app2.plugins.loadManifests();
}
function re_embed_click_handler(e) {
  e.preventDefault();
  e.stopPropagation();
  smart_env.status_msg.setText(`Embedding...`);
  smart_env.run_re_import();
}
function download_json(json, filename) {
  const blob = new Blob([json], { type: "application/json" });
  const url = URL.createObjectURL(blob);
  const anchor = document.createElement("a");
  anchor.href = url;
  anchor.download = filename;
  document.body.appendChild(anchor);
  anchor.click();
  document.body.removeChild(anchor);
  URL.revokeObjectURL(url);
}

// node_modules/smart-collections/adapters/_adapter.js
var CollectionDataAdapter2 = class {
  /**
   * @constructor
   * @param {Object} collection - The collection instance that this adapter manages.
   */
  constructor(collection) {
    this.collection = collection;
    this.env = collection.env;
  }
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = ItemDataAdapter2;
  /**
   * Optional factory method to create item adapters.
   * If `this.item_adapter_class` is not null, it uses that; otherwise can be overridden by subclasses.
   * @param {Object} item - The item to create an adapter for.
   * @returns {ItemDataAdapter}
   */
  create_item_adapter(item) {
    if (!this.ItemDataAdapter) {
      throw new Error("No item_adapter_class specified and create_item_adapter not overridden.");
    }
    return new this.ItemDataAdapter(item);
  }
  /**
   * Load a single item by its key using an `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to load.
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Save a single item by its key using its associated `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to save.
   * @returns {Promise<void>} Resolves when the item is saved.
   */
  async save_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Delete a single item by its key. This may involve updating or removing its file,
   * as handled by the `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to delete.
   * @returns {Promise<void>} Resolves when the item is deleted.
   */
  async delete_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Process any queued load operations. Typically orchestrates calling `load_item()` 
   * on items that have been flagged for loading.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    throw new Error("Not implemented");
  }
  /**
   * Process any queued save operations. Typically orchestrates calling `save_item()` 
   * on items that have been flagged for saving.
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    throw new Error("Not implemented");
  }
  /**
   * Load the item's data from storage if it has been updated externally.
   * @async
   * @param {string} key - The key of the item to load.
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_item_if_updated(item) {
    const adapter = this.create_item_adapter(item);
    await adapter.load_if_updated();
  }
};
var ItemDataAdapter2 = class {
  /**
   * @constructor
   * @param {Object} item - The collection item instance that this adapter manages.
   */
  constructor(item) {
    this.item = item;
  }
  /**
   * Load the item's data from storage. May involve reading a file and parsing 
   * its contents, then updating `item.data`.
   * @async
   * @returns {Promise<void>} Resolves when the item is fully loaded.
   */
  async load() {
    throw new Error("Not implemented");
  }
  /**
   * Save the item's data to storage. May involve writing to a file or appending 
   * lines in an append-only format.
   * @async
   * @param {string|null} [ajson=null] - An optional serialized representation of the item’s data.
   *                                     If not provided, the adapter should derive it from the item.
   * @returns {Promise<void>} Resolves when the item is saved.
   */
  async save(ajson = null) {
    throw new Error("Not implemented");
  }
  /**
   * Delete the item's data from storage. May involve removing a file or writing 
   * a `null` entry in an append-only file to signify deletion.
   * @async
   * @returns {Promise<void>} Resolves when the item’s data is deleted.
   */
  async delete() {
    throw new Error("Not implemented");
  }
  /**
   * Returns the file path or unique identifier used by this adapter to locate and store 
   * the item's data. This may be a file name derived from the item's key.
   * @returns {string} The path or identifier for the item's data.
   */
  get data_path() {
    throw new Error("Not implemented");
  }
  /**
   * @returns {CollectionDataAdapter} The collection data adapter that this item data adapter belongs to.
   */
  get collection_adapter() {
    return this.item.collection.data_adapter;
  }
  get env() {
    return this.item.env;
  }
  /**
   * Load the item's data from storage if it has been updated externally.
   * @async
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_if_updated() {
    throw new Error("Not implemented");
  }
};

// node_modules/smart-collections/adapters/_file.js
var FileCollectionDataAdapter2 = class extends CollectionDataAdapter2 {
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = FileItemDataAdapter2;
  /**
   * @returns {Object} Filesystem interface derived from environment or collection settings.
   */
  get fs() {
    return this.collection.data_fs || this.collection.env.data_fs;
  }
};
var FileItemDataAdapter2 = class extends ItemDataAdapter2 {
  /**
   * @returns {Object} Filesystem interface derived from environment or collection settings.
   */
  get fs() {
    return this.item.collection.data_fs || this.item.collection.env.data_fs;
  }
  get data_path() {
    throw new Error("Not implemented");
  }
  async load_if_updated() {
    const data_path = this.data_path;
    if (await this.fs.exists(data_path)) {
      const loaded_at = this.item.loaded_at || 0;
      const data_file_stat = await this.fs.stat(data_path);
      if (data_file_stat.mtime > loaded_at + 1 * 60 * 1e3) {
        console.log(`Smart Collections: Re-loading item ${this.item.key} because it has been updated on disk`);
        await this.load();
      }
    }
  }
};

// node_modules/smart-collections/adapters/ajson_multi_file.js
var class_to_collection_key3 = {
  "SmartSource": "smart_sources",
  "SmartNote": "smart_sources",
  // DEPRECATED
  "SmartBlock": "smart_blocks",
  "SmartDirectory": "smart_directories"
};
var AjsonMultiFileCollectionDataAdapter2 = class extends FileCollectionDataAdapter2 {
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = AjsonMultiFileItemDataAdapter2;
  /**
   * Load a single item by its key.
   * @async
   * @param {string} key
   * @returns {Promise<void>}
   */
  async load_item(key) {
    const item = this.collection.get(key);
    if (!item) return;
    const adapter = this.create_item_adapter(item);
    await adapter.load();
  }
  /**
   * Save a single item by its key.
   * @async
   * @param {string} key
   * @returns {Promise<void>}
   */
  async save_item(key) {
    const item = this.collection.get(key);
    if (!item) return;
    const adapter = this.create_item_adapter(item);
    await adapter.save();
  }
  /**
   * Process any queued load operations.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    this.collection.emit_event("collection:load_started");
    this.collection.show_process_notice("loading_collection");
    if (!await this.fs.exists(this.collection.data_dir)) {
      await this.fs.mkdir(this.collection.data_dir);
    }
    const load_queue = Object.values(this.collection.items).filter((item) => item._queue_load);
    if (!load_queue.length) {
      this.collection.clear_process_notice("loading_collection");
      return;
    }
    console.log(`Loading ${this.collection.collection_key}: ${load_queue.length} items`);
    const batch_size = 100;
    for (let i = 0; i < load_queue.length; i += batch_size) {
      const batch = load_queue.slice(i, i + batch_size);
      await Promise.all(batch.map((item) => {
        const adapter = this.create_item_adapter(item);
        return adapter.load().catch((err) => {
          console.warn(`Error loading item ${item.key}`, err);
          item.queue_load();
        });
      }));
    }
    this.collection.loaded = load_queue.length;
    this.collection.clear_process_notice("loading_collection");
    this.collection.emit_event("collection:load_completed");
  }
  /**
   * Process any queued save operations.
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    this.collection.emit_event("collection:save_started");
    this.collection.show_process_notice("saving_collection");
    const save_queue = Object.values(this.collection.items).filter((item) => item._queue_save);
    console.log(`Saving ${this.collection.collection_key}: ${save_queue.length} items`);
    const time_start = Date.now();
    const batch_size = 50;
    for (let i = 0; i < save_queue.length; i += batch_size) {
      const batch = save_queue.slice(i, i + batch_size);
      await Promise.all(batch.map((item) => {
        const adapter = this.create_item_adapter(item);
        return adapter.save().catch((err) => {
          console.warn(`Error saving item ${item.key}`, err);
          item.queue_save();
        });
      }));
    }
    const deleted_items = Object.values(this.collection.items).filter((item) => item.deleted);
    if (deleted_items.length) {
      deleted_items.forEach((item) => {
        delete this.collection.items[item.key];
      });
    }
    console.log(`Saved ${this.collection.collection_key} in ${Date.now() - time_start}ms`);
    this.collection.clear_process_notice("saving_collection");
    this.collection.emit_event("collection:save_completed");
  }
  get_item_data_path(key) {
    return [
      this.collection.data_dir || "multi",
      this.fs?.sep || "/",
      this.get_data_file_name(key) + ".ajson"
    ].join("");
  }
  /**
   * Transforms the item key into a safe filename.
   * Replaces spaces, slashes, and dots with underscores.
   * @returns {string} safe file name
   */
  get_data_file_name(key) {
    return key.split("#")[0].replace(/[\s\/\.]/g, "_").replace(".md", "");
  }
  /**
   * Build a single AJSON line for the given item and data.
   * @param {Object} item 
   * @returns {string}
   */
  get_item_ajson(item) {
    const collection_key = item.collection_key;
    const key = item.key;
    const data_value = item.deleted ? "null" : JSON.stringify(item.data);
    return `${JSON.stringify(`${collection_key}:${key}`)}: ${data_value},`;
  }
};
var AjsonMultiFileItemDataAdapter2 = class extends FileItemDataAdapter2 {
  /**
   * Derives the `.ajson` file path from the collection's data_dir and item key.
   * @returns {string}
   */
  get data_path() {
    return this.collection_adapter.get_item_data_path(this.item.key);
  }
  /**
   * Load the item from its `.ajson` file.
   * @async
   * @returns {Promise<void>}
   */
  async load() {
    try {
      const raw_data = await this.fs.adapter.read(this.data_path, "utf-8", { no_cache: true });
      if (!raw_data) {
        this.item.queue_import();
        return;
      }
      const { rewrite, file_data } = this._parse(raw_data);
      if (rewrite) {
        if (file_data.length) await this.fs.write(this.data_path, file_data);
        else await this.fs.remove(this.data_path);
      }
      const last_import_mtime = this.item.data.last_import?.at || 0;
      if (last_import_mtime && this.item.init_file_mtime > last_import_mtime) {
        this.item.queue_import();
      }
    } catch (e) {
      this.item.queue_import();
    }
  }
  /**
   * Parse the entire AJSON content as a JSON object, handle legacy keys, and extract final state.
   * @private
   * @param {string} ajson 
   * @returns {boolean}
   */
  _parse(ajson) {
    try {
      let rewrite = false;
      if (!ajson.length) return false;
      ajson = ajson.trim();
      const original_line_count = ajson.split("\n").length;
      const json_str = "{" + ajson.slice(0, -1) + "}";
      const data = JSON.parse(json_str);
      const entries = Object.entries(data);
      for (let i = 0; i < entries.length; i++) {
        const [ajson_key, value] = entries[i];
        if (!value) {
          delete data[ajson_key];
          rewrite = true;
          continue;
        }
        const { collection_key, item_key, changed } = this._parse_ajson_key(ajson_key);
        if (changed) {
          rewrite = true;
          data[collection_key + ":" + item_key] = value;
          delete data[ajson_key];
        }
        const collection = this.env[collection_key];
        if (!collection) continue;
        const existing_item = collection.get(item_key);
        if (!value.key) value.key = item_key;
        if (existing_item) {
          existing_item.data = value;
          existing_item._queue_load = false;
          existing_item.loaded_at = Date.now();
        } else {
          const ItemClass = collection.item_type;
          const new_item = new ItemClass(this.env, value);
          new_item._queue_load = false;
          new_item.loaded_at = Date.now();
          collection.set(new_item);
        }
      }
      if (rewrite || original_line_count > entries.length) {
        rewrite = true;
      }
      return {
        rewrite,
        file_data: rewrite ? Object.entries(data).map(([key, value]) => `${JSON.stringify(key)}: ${JSON.stringify(value)},`).join("\n") : null
      };
    } catch (e) {
      if (ajson.split("\n").some((line) => !line.endsWith(","))) {
        console.warn("fixing trailing comma error");
        ajson = ajson.split("\n").map((line) => line.endsWith(",") ? line : line + ",").join("\n");
        return this._parse(ajson);
      }
      console.warn("Error parsing JSON:", e);
      return { rewrite: true, file_data: null };
    }
  }
  _parse_ajson_key(ajson_key) {
    let changed;
    let [collection_key, ...item_key] = ajson_key.split(":");
    if (class_to_collection_key3[collection_key]) {
      collection_key = class_to_collection_key3[collection_key];
      changed = true;
    }
    return {
      collection_key,
      item_key: item_key.join(":"),
      changed
    };
  }
  /**
   * Save the current state of the item by appending a new line to its `.ajson` file.
   * @async
   * @returns {Promise<void>}
   */
  async save(retries = 0) {
    try {
      const ajson_line = this.get_item_ajson();
      await this.fs.append(this.data_path, "\n" + ajson_line);
      this.item._queue_save = false;
    } catch (e) {
      if (e.code === "ENOENT" && retries < 1) {
        const dir = this.collection_adapter.collection.data_dir;
        if (!await this.fs.exists(dir)) {
          await this.fs.mkdir(dir);
        }
        return await this.save(retries + 1);
      }
      console.warn("Error saving item", this.data_path, this.item.key, e);
    }
  }
  /**
   * Build a single AJSON line for the given item and data.
   * @param {Object} item 
   * @returns {string}
   */
  get_item_ajson() {
    return this.collection_adapter.get_item_ajson(this.item);
  }
};

// node_modules/smart-file-system/utils/glob_to_regex.js
function create_regex2(pattern, { case_sensitive, extended_glob, windows_paths }) {
  const regex_pattern = glob_to_regex_pattern2(pattern, extended_glob);
  const adjusted_pattern = adjust_for_windows_paths2(regex_pattern, windows_paths);
  const flags = case_sensitive ? "" : "i";
  return new RegExp(`^${adjusted_pattern}$`, flags);
}
function adjust_for_windows_paths2(pattern, windows_paths) {
  return windows_paths ? pattern.replace(/\\\//g, "[\\\\/]").replace(/\\\\\\/g, "[\\\\/]") : pattern;
}
function glob_to_regex_pattern2(pattern, extended_glob) {
  let in_class = false;
  let in_brace = 0;
  let result = "";
  for (let i = 0; i < pattern.length; i++) {
    const char = pattern[i];
    switch (char) {
      case "\\":
        if (i + 1 < pattern.length) {
          result += `\\${pattern[i + 1]}`;
          i++;
        } else {
          result += "\\\\";
        }
        break;
      case "/":
        result += "\\/";
        break;
      case "[":
        if (!in_class) {
          const closingIndex = pattern.indexOf("]", i + 1);
          if (closingIndex === -1) {
            result += "\\[";
          } else {
            in_class = true;
            if (pattern[i + 1] === "!") {
              result += "[^";
              i++;
            } else {
              result += "[";
            }
          }
        } else {
          result += "\\[";
        }
        break;
      case "]":
        if (in_class) {
          in_class = false;
          result += "]";
        } else {
          result += "\\]";
        }
        break;
      case "{":
        if (!in_class) {
          const closingIndex = pattern.indexOf("}", i + 1);
          if (closingIndex === -1) {
            result += "\\{";
          } else {
            in_brace++;
            result += "(";
          }
        } else {
          result += "\\{";
        }
        break;
      case "}":
        if (!in_class && in_brace > 0) {
          in_brace--;
          result += ")";
        } else {
          result += "\\}";
        }
        break;
      case ",":
        if (!in_class && in_brace > 0) {
          result += "|";
        } else {
          result += ",";
        }
        break;
      case "*":
        if (!in_class) {
          if (i + 1 < pattern.length && pattern[i + 1] === "*") {
            result += ".*";
            i++;
          } else {
            result += "[^/]*";
          }
        } else {
          result += "\\*";
        }
        break;
      case "?":
        if (!in_class) {
          result += "[^/]";
        } else {
          result += "\\?";
        }
        break;
      // We escape these to ensure they remain literal
      case "(":
      case ")":
      case "+":
      case "|":
      case "^":
      case "$":
      case ".":
        result += `\\${char}`;
        break;
      default:
        result += char;
        break;
    }
  }
  if (in_class) {
    result += "]";
    in_class = false;
  }
  if (extended_glob) {
    result = result.replace(/\\\+\\\((.*?)\\\)/g, "($1)+").replace(/\\\@\\\((.*?)\\\)/g, "($1)").replace(/\\\!\\\((.*?)\\\)/g, "(?!$1).*").replace(/\\\?\\\((.*?)\\\)/g, "($1)?").replace(/\\\*\\\((.*?)\\\)/g, "($1)*");
  }
  return result;
}
function glob_to_regex2(pattern, options = {}) {
  const default_options = {
    case_sensitive: true,
    extended_glob: false,
    windows_paths: false
  };
  const merged_options = { ...default_options, ...options };
  if (pattern === "") {
    return /^$/;
  }
  if (pattern === "*" && !merged_options.windows_paths) {
    return /^[^/]+$/;
  }
  if (pattern === "**" && !merged_options.windows_paths) {
    return /^.+$/;
  }
  return create_regex2(pattern, merged_options);
}

// node_modules/smart-file-system/utils/fuzzy_search.js
function fuzzy_search2(arr, search_term) {
  let matches = [];
  for (let i = 0; i < arr.length; i++) {
    const search_chars = search_term.toLowerCase().split("");
    let match = true;
    let distance = 0;
    const name = arr[i];
    const label_name = name.toLowerCase();
    for (let j = 0; j < search_chars.length; j++) {
      const search_index = label_name.substring(distance).indexOf(search_chars[j]);
      if (search_index >= 0) {
        distance += search_index + 1;
      } else {
        match = false;
        break;
      }
    }
    if (match) matches.push({ name, distance });
  }
  matches.sort((a, b) => a.distance - b.distance);
  return matches.map((match) => match.name);
}

// node_modules/smart-file-system/smart_fs.js
var SmartFs2 = class {
  /**
   * Create a new SmartFs instance
   * 
   * @param {Object} env - The Smart Environment instance
   * @param {Object} [opts={}] - Optional configuration
   * @param {string} [opts.fs_path] - Custom environment path
   */
  constructor(env, opts = {}) {
    this.env = env;
    this.opts = opts;
    this.fs_path = opts.fs_path || opts.env_path || "";
    if (!opts.adapter) throw new Error("SmartFs requires an adapter");
    this.adapter = new opts.adapter(this);
    this.excluded_patterns = [];
    if (Array.isArray(opts.exclude_patterns)) {
      opts.exclude_patterns.forEach((pattern) => this.add_ignore_pattern(pattern));
    }
    this.folders = {};
    this.files = {};
    this.file_paths = [];
    this.folder_paths = [];
    this.auto_excluded_files = [];
  }
  async refresh() {
    this.files = {};
    this.file_paths = [];
    this.folders = {};
    this.folder_paths = [];
    await this.init();
  }
  async init() {
    await this.load_exclusions();
    await this.load_files();
  }
  async load_files() {
    const all = await this.list_recursive();
    this.file_paths = [];
    this.folder_paths = [];
    all.forEach((file) => {
      if (file.type === "file") {
        this.files[file.path] = file;
        this.file_paths.push(file.path);
      } else if (file.type === "folder") {
        this.folders[file.path] = file;
        this.folder_paths.push(file.path);
      }
    });
  }
  include_file(file_path) {
    const file = this.adapter.get_file(file_path);
    this.files[file.path] = file;
    this.file_paths.push(file.path);
    return file;
  }
  /**
   * Load .gitignore patterns
   * 
   * @returns {Promise<RegExp[]>} Array of RegExp patterns
   */
  async load_exclusions() {
    const gitignore_path = ".gitignore";
    const gitignore_exists = await this.adapter.exists(gitignore_path);
    if (gitignore_exists && !this.env.settings.skip_excluding_gitignore) {
      const gitignore_content = await this.adapter.read(gitignore_path, "utf-8");
      gitignore_content.split("\n").filter((line) => !line.startsWith("#")).filter(Boolean).forEach((pattern) => this.add_ignore_pattern(pattern));
    }
    this.add_ignore_pattern(".**");
    this.add_ignore_pattern("**/.**");
    this.add_ignore_pattern("**/.*/**");
    this.add_ignore_pattern("**/*.ajson");
  }
  /**
   * Add a new ignore pattern
   * 
   * @param {string} pattern - The pattern to add
   */
  add_ignore_pattern(pattern, opts = {}) {
    this.excluded_patterns.push(glob_to_regex2(pattern.trim(), opts));
  }
  /**
   * Check if a path is ignored based on gitignore patterns
   * 
   * @param {string} _path - The path to check
   * @returns {boolean} True if the path is ignored, false otherwise
   */
  is_excluded(_path) {
    try {
      if (_path.includes("#")) return true;
      if (!this.excluded_patterns.length) return false;
      return this.excluded_patterns.some((pattern) => pattern.test(_path));
    } catch (e) {
      console.error(`Error checking if path is excluded: ${e.message}`);
      console.error(`Path: `, _path);
      throw e;
    }
  }
  /**
   * Check if any path in an array of paths is excluded
   * 
   * @param {string[]} paths - Array of paths to check
   * @returns {boolean} True if any path is excluded, false otherwise
   */
  has_excluded_patterns(paths) {
    return paths.some((p) => this.is_excluded(p));
  }
  /**
   * Pre-process an array of paths, throwing an error if any path is excluded
   * 
   * @param {string[]} paths - Array of paths to pre-process
   * @throws {Error} If any path in the array is excluded
   * @returns {string[]} The array of paths
   */
  pre_process(paths) {
    if (this.has_excluded_patterns(paths)) {
      throw new Error(`Path is excluded: ${paths.find((p) => this.is_excluded(p))}`);
    }
    return paths;
  }
  /**
   * Post-process the result of an operation
   * 
   * @param {any} returned_value - The value returned by the operation
   * @returns {any} The post-processed value
   */
  post_process(returned_value) {
    if (this.adapter.post_process) return this.adapter.post_process(returned_value);
    if (Array.isArray(returned_value)) {
      returned_value = returned_value.filter((r) => {
        if (typeof r === "string") return !this.is_excluded(r);
        if (typeof r === "object" && r.path) return !this.is_excluded(r.path);
        return true;
      });
    }
    return returned_value;
  }
  // v2
  /**
   * Use the adapter for a method
   * runs pre_process and post_process (checks exclusions)
   * @param {string} method - The method to use
   * @param {string[]} paths - The paths to use
   * @param {...any} args - Additional arguments for the method
   * @returns {Promise<any>} The result of the method
   */
  async use_adapter(method, paths, ...args) {
    if (!this.adapter[method]) throw new Error(`Method ${method} not found in adapter`);
    paths = this.pre_process(paths ?? []);
    let resp = await this.adapter[method](...paths, ...args);
    return this.post_process(resp);
  }
  use_adapter_sync(method, paths, ...args) {
    if (!this.adapter[method]) throw new Error(`Method ${method} not found in adapter`);
    paths = this.pre_process(paths ?? []);
    let resp = this.adapter[method](...paths, ...args);
    return this.post_process(resp);
  }
  /**
   * Append content to a file
   * 
   * @param {string} rel_path - The relative path of the file to append to
   * @param {string|Buffer} content - The content to append
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async append(rel_path, content) {
    return await this.use_adapter("append", [rel_path], content);
  }
  /**
   * Create a new directory
   * 
   * @param {string} rel_path - The relative path of the directory to create
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async mkdir(rel_path, opts = { recursive: true }) {
    return await this.use_adapter("mkdir", [rel_path], opts);
  }
  /**
   * Check if a file or directory exists
   * 
   * @param {string} rel_path - The relative path to check
   * @returns {Promise<boolean>} True if the path exists, false otherwise
   */
  async exists(rel_path) {
    return await this.use_adapter("exists", [rel_path]);
  }
  exists_sync(rel_path) {
    return this.use_adapter_sync("exists_sync", [rel_path]);
  }
  /**
   * List files in a directory
   * 
   * @param {string} rel_path - The relative path to list
   * @returns {Promise<string[]>} Array of file paths
   */
  async list(rel_path = "/") {
    return await this.use_adapter("list", [rel_path]);
  }
  async list_recursive(rel_path = "/") {
    return await this.use_adapter("list_recursive", [rel_path]);
  }
  async list_files(rel_path = "/") {
    return await this.use_adapter("list_files", [rel_path]);
  }
  async list_files_recursive(rel_path = "/") {
    return await this.use_adapter("list_files_recursive", [rel_path]);
  }
  async list_folders(rel_path = "/") {
    return await this.use_adapter("list_folders", [rel_path]);
  }
  async list_folders_recursive(rel_path = "/") {
    return await this.use_adapter("list_folders_recursive", [rel_path]);
  }
  /**
   * Read the contents of a file
   * 
   * @param {string} rel_path - The relative path of the file to read
   * @returns {Promise<string|Buffer>} The contents of the file
   */
  async read(rel_path, encoding = "utf-8") {
    try {
      const content = await this.adapter.read(rel_path, encoding);
      return content;
    } catch (error) {
      console.warn("Error during read: " + error.message, rel_path);
      if (error.code === "ENOENT") return null;
      return { error: error.message };
    }
  }
  /**
   * Remove a file
   * 
   * @param {string} rel_path - The relative path of the file to remove
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async remove(rel_path) {
    return await this.use_adapter("remove", [rel_path]);
  }
  /**
   * Remove a directory
   * 
   * @param {string} rel_path - The relative path of the directory to remove
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async remove_dir(rel_path, recursive = false) {
    return await this.use_adapter("remove_dir", [rel_path], recursive);
  }
  /**
   * Rename a file or directory
   * 
   * @param {string} rel_path - The current relative path
   * @param {string} new_rel_path - The new relative path
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async rename(rel_path, new_rel_path) {
    await this.use_adapter("rename", [rel_path, new_rel_path]);
    await this.refresh();
  }
  /**
   * Get file or directory statistics
   * 
   * @param {string} rel_path - The relative path to get statistics for
   * @returns {Promise<Object>} An object containing file or directory statistics
   */
  async stat(rel_path) {
    return await this.use_adapter("stat", [rel_path]);
  }
  /**
   * Write content to a file
   * Should handle when target path is within a folder that doesn't exist
   * 
   * @param {string} rel_path - The relative path of the file to write to
   * @param {string|Buffer} content - The content to write
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async write(rel_path, content) {
    try {
      await this.adapter.write(rel_path, content);
    } catch (error) {
      console.error("Error during write:", error);
      throw error;
    }
  }
  // // aliases
  // async create(rel_path, content) { return await this.use_adapter('write', [rel_path], content); }
  // async update(rel_path, content) { return await this.use_adapter('write', [rel_path], content); }
  get_link_target_path(link_target, source_path) {
    if (this.adapter.get_link_target_path) return this.adapter.get_link_target_path(link_target, source_path);
    if (!this.file_paths) return console.warn("get_link_target_path: file_paths not found");
    const matching_file_paths = this.file_paths.filter((path) => path.includes(link_target));
    return fuzzy_search2(matching_file_paths, link_target)[0];
  }
  get sep() {
    return this.adapter.sep || "/";
  }
  get_full_path(rel_path = "") {
    return this.adapter.get_full_path(rel_path);
  }
  get base_path() {
    return this.adapter.get_base_path();
  }
};

// node_modules/smart-file-system/adapters/obsidian.js
var obsidian2 = __toESM(require("obsidian"), 1);
var SmartFsObsidianAdapter2 = class {
  /**
   * Create an SmartFsObsidianAdapter instance
   * 
   * @param {Object} smart_fs - The SmartFs instance
   */
  constructor(smart_fs) {
    this.smart_fs = smart_fs;
    this.obsidian = obsidian2;
    this.obsidian_app = smart_fs.env.main.app;
    this.obsidian_adapter = smart_fs.env.main.app.vault.adapter;
  }
  get fs_path() {
    return this.smart_fs.fs_path;
  }
  get_file(file_path) {
    const file = {};
    file.path = file_path.replace(/\\/g, "/").replace(this.smart_fs.fs_path, "").replace(/^\//, "");
    file.type = "file";
    file.extension = file.path.split(".").pop().toLowerCase();
    file.name = file.path.split("/").pop();
    file.basename = file.name.split(".").shift();
    Object.defineProperty(file, "stat", {
      get: () => {
        const tfile = this.obsidian_app.vault.getAbstractFileByPath(file_path);
        if (tfile) {
          return {
            ctime: tfile.stat.ctime,
            mtime: tfile.stat.mtime,
            size: tfile.stat.size,
            isDirectory: () => tfile instanceof this.obsidian.TFolder,
            isFile: () => tfile instanceof this.obsidian.TFile
          };
        }
        return null;
      }
    });
    return file;
  }
  /**
   * Append content to a file
   * 
   * @param {string} rel_path - The relative path of the file to append to
   * @param {string} data - The content to append
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async append(rel_path, data) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.append(rel_path, data);
  }
  /**
   * Create a new directory
   * 
   * @param {string} rel_path - The relative path of the directory to create
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async mkdir(rel_path) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.mkdir(rel_path);
  }
  /**
   * Check if a file or directory exists
   * 
   * @param {string} rel_path - The relative path to check
   * @returns {Promise<boolean>} True if the path exists, false otherwise
   */
  async exists(rel_path) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.exists(rel_path);
  }
  exists_sync(rel_path) {
    return !!this.obsidian_app.vault.getAbstractFileByPath(rel_path);
  }
  /**
   * List files in a directory (NOT up-to-date with list_recursive)
   * 
   * @param {string} rel_path - The relative path to list
   * @returns {Promise<string[]>} Array of file paths
   */
  async list(rel_path, opts = {}) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    if (rel_path.startsWith("/")) rel_path = rel_path.slice(1);
    if (rel_path.endsWith("/")) rel_path = rel_path.slice(0, -1);
    if (rel_path.includes(".")) {
      const { files: file_paths } = await this.obsidian_adapter.list(rel_path);
      const files2 = file_paths.map((file_path) => {
        if (this.smart_fs.fs_path) file_path = file_path.replace(this.smart_fs.fs_path, "").slice(1);
        const file_name = file_path.split("/").pop();
        const file = {
          basename: file_name.split(".")[0],
          extension: file_name.split(".").pop().toLowerCase(),
          name: file_name,
          path: file_path
        };
        return file;
      });
      return files2;
    }
    const files = this.obsidian_app.vault.getAllLoadedFiles().filter((file) => {
      const last_slash = file.path.lastIndexOf("/");
      if (last_slash === -1 && rel_path !== "") return false;
      const folder_path = file.path.slice(0, last_slash);
      if (folder_path !== rel_path) return false;
      return true;
    });
    return files;
  }
  // NOTE: currently does not handle hidden files and folders
  async list_recursive(rel_path, opts = {}) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    if (rel_path.startsWith("/")) rel_path = rel_path.slice(1);
    if (rel_path.endsWith("/")) rel_path = rel_path.slice(0, -1);
    const files = this.obsidian_app.vault.getAllLoadedFiles().filter((file) => {
      if (file.path.length > 200) {
        this.smart_fs.auto_excluded_files.push(file.path);
        return false;
      }
      if (rel_path !== "" && !file.path.startsWith(rel_path)) return false;
      if (file instanceof this.obsidian.TFile) {
        if (opts.type === "folder") return false;
        file.type = "file";
      } else if (file instanceof this.obsidian.TFolder) {
        if (opts.type === "file") return false;
        delete file.basename;
        delete file.extension;
        file.type = "folder";
      }
      if (this.smart_fs.fs_path) file.path = file.path.replace(this.smart_fs.fs_path, "").slice(1);
      return true;
    });
    return files;
  }
  async list_files(rel_path) {
    return await this.list(rel_path, { type: "file" });
  }
  async list_files_recursive(rel_path) {
    return await this.list_recursive(rel_path, { type: "file" });
  }
  async list_folders(rel_path) {
    return await this.list(rel_path, { type: "folder" });
  }
  async list_folders_recursive(rel_path) {
    return await this.list_recursive(rel_path, { type: "folder" });
  }
  /**
   * Read the contents of a file
   * 
   * @param {string} rel_path - The relative path of the file to read
   * @returns {Promise<string>} The contents of the file
   */
  async read(rel_path, encoding, opts = {}) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    if (encoding === "utf-8") {
      if (!opts.no_cache) {
        const tfile = this.obsidian_app.vault.getFileByPath(rel_path);
        if (tfile) return await this.obsidian_app.vault.cachedRead(tfile);
      }
      return await this.obsidian_adapter.read(rel_path);
    }
    if (encoding === "base64") {
      const array_buffer2 = await this.obsidian_adapter.readBinary(rel_path, "base64");
      const base642 = this.obsidian.arrayBufferToBase64(array_buffer2);
      return base642;
    }
    const array_buffer = await this.obsidian_adapter.readBinary(rel_path);
    return array_buffer;
  }
  /**
   * Rename a file or directory
   * 
   * @param {string} old_path - The current path of the file or directory
   * @param {string} new_path - The new path for the file or directory
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async rename(old_path, new_path) {
    if (!old_path.startsWith(this.fs_path)) old_path = this.fs_path + "/" + old_path;
    if (!new_path.startsWith(this.fs_path)) new_path = this.fs_path + "/" + new_path;
    return await this.obsidian_adapter.rename(old_path, new_path);
  }
  /**
   * Remove a file
   * 
   * @param {string} rel_path - The relative path of the file to remove
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async remove(rel_path) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    try {
      return await this.obsidian_adapter.remove(rel_path);
    } catch (error) {
      console.warn(`Error removing file: ${rel_path}`, error);
    }
  }
  /**
   * Remove a directory
   * 
   * @param {string} rel_path - The relative path of the directory to remove
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async remove_dir(rel_path, recursive = false) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.rmdir(rel_path, recursive);
  }
  /**
   * Get file or directory information
   * 
   * @param {string} rel_path - The relative path of the file or directory
   * @returns {Promise<Object>} An object containing file or directory information
   */
  async stat(rel_path) {
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    return await this.obsidian_adapter.stat(rel_path);
  }
  /**
   * Write content to a file
   * 
   * @param {string} rel_path - The relative path of the file to write to
   * @param {string} data - The content to write
   * @returns {Promise<void>} A promise that resolves when the operation is complete
   */
  async write(rel_path, data) {
    if (!data) data = "";
    if (!rel_path.startsWith(this.fs_path)) rel_path = this.fs_path + "/" + rel_path;
    const folder_path = rel_path.split("/").slice(0, -1).join("/");
    if (!await this.exists(folder_path)) {
      await this.mkdir(folder_path);
      console.log(`Created folder: ${folder_path}`);
    }
    return await this.obsidian_adapter.write(rel_path, data);
  }
  get_link_target_path(link_path, file_path) {
    return this.obsidian_app.metadataCache.getFirstLinkpathDest(link_path, file_path)?.path;
  }
  get_base_path() {
    return this.obsidian_adapter.basePath;
  }
  get_full_path(rel_path = "") {
    const sep = rel_path.includes("/") ? "/" : "\\";
    return this.get_base_path() + sep + rel_path;
  }
};

// node_modules/smart-view/utils/empty.js
function empty2(elm) {
  const range = document.createRange();
  range.selectNodeContents(elm);
  range.deleteContents();
}

// node_modules/smart-view/utils/replace_html.js
var replace_html2 = /* @__PURE__ */ (() => {
  const cache = /* @__PURE__ */ new Map();
  return (container, html_snippet) => {
    const key = html_snippet.trim();
    let tpl = cache.get(key);
    if (!tpl) {
      tpl = document.createElement("template");
      tpl.innerHTML = key;
      cache.set(key, tpl);
    }
    container.replaceChildren(tpl.content.cloneNode(true));
  };
})();

// node_modules/smart-view/utils/replace_with_fragment.js
var replace_with_fragment2 = (container, html_snippet) => {
  const range = document.createRange();
  const frag = range.createContextualFragment(html_snippet.trim());
  container.replaceChildren(frag);
};

// node_modules/smart-view/utils/safe_inner_html.js
var restricted_re2 = /<(td|th|tr|thead|tbody|tfoot|caption|col|colgroup|option|optgroup|li|dt|dd|source|track)\b/i;
var safe_inner_html2 = (container, html_snippet) => {
  const trimmed = html_snippet.trim();
  (restricted_re2.test(trimmed) ? replace_with_fragment2 : replace_html2)(container, trimmed);
};

// node_modules/smart-utils/escape_html.js
function escape_html2(str = "") {
  return String(str).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
}

// node_modules/smart-utils/create_hash.js
function murmur_hash_322(input_string, seed = 0) {
  let remainder = input_string.length & 3;
  let bytes = input_string.length - remainder;
  let h1 = seed;
  let c1 = 3432918353;
  let c2 = 461845907;
  let i = 0;
  let k1 = 0;
  let chunk = 0;
  while (i < bytes) {
    chunk = input_string.charCodeAt(i) & 255 | (input_string.charCodeAt(i + 1) & 255) << 8 | (input_string.charCodeAt(i + 2) & 255) << 16 | (input_string.charCodeAt(i + 3) & 255) << 24;
    i += 4;
    k1 = chunk;
    k1 = multiply_322(k1, c1);
    k1 = rotate_left_322(k1, 15);
    k1 = multiply_322(k1, c2);
    h1 ^= k1;
    h1 = rotate_left_322(h1, 13);
    h1 = h1 * 5 + 3864292196 | 0;
  }
  k1 = 0;
  switch (remainder) {
    case 3:
      k1 ^= (input_string.charCodeAt(i + 2) & 255) << 16;
    // falls through
    case 2:
      k1 ^= (input_string.charCodeAt(i + 1) & 255) << 8;
    // falls through
    case 1:
      k1 ^= input_string.charCodeAt(i) & 255;
      k1 = multiply_322(k1, c1);
      k1 = rotate_left_322(k1, 15);
      k1 = multiply_322(k1, c2);
      h1 ^= k1;
      break;
  }
  h1 ^= input_string.length;
  h1 = fmix_322(h1);
  return h1 | 0;
}
function murmur_hash_32_alphanumeric2(input_string, seed = 0) {
  const signed_hash = murmur_hash_322(input_string, seed);
  const unsigned_hash = signed_hash >>> 0;
  return unsigned_hash.toString(36);
}
function multiply_322(a, b) {
  return (a & 65535) * b + ((a >>> 16) * b << 16) | 0;
}
function rotate_left_322(value, shift) {
  return value << shift | value >>> 32 - shift;
}
function fmix_322(h) {
  h ^= h >>> 16;
  h = multiply_322(h, 2246822507);
  h ^= h >>> 13;
  h = multiply_322(h, 3266489909);
  h ^= h >>> 16;
  return h | 0;
}

// node_modules/smart-utils/camel_case_to_snake_case.js
function camel_case_to_snake_case2(str = "") {
  return str.replace(/([A-Z])/g, (m) => `_${m.toLowerCase()}`).replace(/^_/, "").replace(/2$/, "");
}

// node_modules/smart-utils/deep_merge.js
function deep_merge2(target = {}, source2 = {}) {
  for (const key in source2) {
    if (!Object.prototype.hasOwnProperty.call(source2, key)) continue;
    if (is_plain_object4(source2[key]) && is_plain_object4(target[key])) {
      deep_merge2(target[key], source2[key]);
    } else {
      target[key] = source2[key];
    }
  }
  return target;
}
function is_plain_object4(o) {
  return o && typeof o === "object" && !Array.isArray(o);
}

// node_modules/smart-utils/cos_sim.js
function cos_sim2(vector1 = [], vector2 = []) {
  if (vector1.length !== vector2.length) {
    throw new Error("Vectors must have the same length");
  }
  let dot_product = 0;
  let magnitude1 = 0;
  let magnitude2 = 0;
  const epsilon = 1e-8;
  for (let i = 0; i < vector1.length; i++) {
    dot_product += vector1[i] * vector2[i];
    magnitude1 += vector1[i] * vector1[i];
    magnitude2 += vector2[i] * vector2[i];
  }
  magnitude1 = Math.sqrt(magnitude1);
  magnitude2 = Math.sqrt(magnitude2);
  if (magnitude1 < epsilon || magnitude2 < epsilon) return 0;
  return dot_product / (magnitude1 * magnitude2);
}

// node_modules/smart-utils/get_by_path.js
function get_by_path2(obj, path, scope = null) {
  if (!path) return "";
  const keys = path.split(".");
  if (scope) {
    keys.unshift(scope);
  }
  const final_key = keys.pop();
  const instance = keys.reduce((acc, key) => acc && acc[key], obj);
  if (instance && typeof instance[final_key] === "function") {
    return instance[final_key].bind(instance);
  }
  return instance ? instance[final_key] : void 0;
}

// node_modules/smart-utils/set_by_path.js
function set_by_path2(obj, path, value, scope = null) {
  const keys = path.split(".");
  if (scope) {
    keys.unshift(scope);
  }
  const final_key = keys.pop();
  const target = keys.reduce((acc, key) => {
    if (!acc[key] || typeof acc[key] !== "object") {
      acc[key] = {};
    }
    return acc[key];
  }, obj);
  target[final_key] = value;
}

// node_modules/smart-utils/delete_by_path.js
function delete_by_path2(obj, path, scope = null) {
  const keys = path.split(".");
  if (scope) {
    keys.unshift(scope);
  }
  const final_key = keys.pop();
  const instance = keys.reduce((acc, key) => acc && acc[key], obj);
  if (instance) {
    delete instance[final_key];
  }
}

// node_modules/smart-utils/geom.js
function compute_centroid2(points) {
  if (!points || points.length === 0) {
    return null;
  }
  const n = points.length;
  const dim = points[0].length;
  const sums = new Float64Array(dim);
  for (let i = 0; i < n; i++) {
    const p = points[i];
    for (let d = 0; d < dim; d++) {
      sums[d] += p[d];
    }
  }
  for (let d = 0; d < dim; d++) {
    sums[d] /= n;
  }
  return Array.from(sums);
}
function compute_medoid2(points) {
  if (!points || points.length === 0) {
    return null;
  }
  if (points.length === 1) {
    return points[0];
  }
  const n = points.length;
  const dim = points[0].length;
  const sum_of_distances = new Float64Array(n);
  for (let i = 0; i < n - 1; i++) {
    const p_i = points[i];
    for (let j = i + 1; j < n; j++) {
      const p_j = points[j];
      let dist_sq = 0;
      for (let d = 0; d < dim; d++) {
        const diff = p_i[d] - p_j[d];
        dist_sq += diff * diff;
      }
      const dist = Math.sqrt(dist_sq);
      sum_of_distances[i] += dist;
      sum_of_distances[j] += dist;
    }
  }
  let min_index = 0;
  let min_sum = sum_of_distances[0];
  for (let i = 1; i < n; i++) {
    if (sum_of_distances[i] < min_sum) {
      min_sum = sum_of_distances[i];
      min_index = i;
    }
  }
  return points[min_index];
}

// node_modules/smart-view/smart_view.js
var SmartView2 = class {
  /**
   * @constructor
   * @param {object} opts - Additional options or overrides for rendering.
   */
  constructor(opts = {}) {
    this.opts = opts;
    this._adapter = null;
  }
  /**
   * Renders all setting components within a container.
   * @async
   * @param {HTMLElement} container - The container element.
   * @param {Object} opts - Additional options for rendering.
   * @returns {Promise<void>}
   */
  async render_setting_components(container, opts = {}) {
    const components = container.querySelectorAll(".setting-component");
    const promises = [];
    for (const component of components) {
      promises.push(this.render_setting_component(component, opts));
    }
    await Promise.all(promises);
    return container;
  }
  /**
   * Creates a document fragment from HTML string.
   * @param {string} html - The HTML string.
   * @returns {DocumentFragment}
   */
  create_doc_fragment(html) {
    return document.createRange().createContextualFragment(html);
  }
  /**
   * Gets the adapter instance used for rendering (e.g., Obsidian or Node, etc.).
   * @returns {Object} The adapter instance.
   */
  get adapter() {
    if (!this._adapter) {
      if (!this.opts.adapter) {
        throw new Error("No adapter provided to SmartView. Provide a 'smart_view.adapter' in env config.");
      }
      const AdapterClass = this.opts.adapter;
      this._adapter = new AdapterClass(this);
    }
    return this._adapter;
  }
  /**
   * Gets an icon (implemented in the adapter).
   * @param {string} icon_name - Name of the icon to get.
   * @returns {string} The icon HTML string.
   */
  get_icon_html(icon_name) {
    return this.adapter.get_icon_html(icon_name);
  }
  /**
   * Renders a single setting component (implemented in adapter).
   * @async
   * @param {HTMLElement} setting_elm - The DOM element for the setting.
   * @param {Object} opts - Additional options for rendering.
   * @returns {Promise<*>}
   */
  async render_setting_component(setting_elm, opts = {}) {
    return await this.adapter.render_setting_component(setting_elm, opts);
  }
  /**
   * Renders markdown content (implemented in adapter).
   * @param {string} markdown - The markdown content.
   * @param {object|null} scope - The scope to pass for rendering.
   * @returns {Promise<DocumentFragment>}
   */
  async render_markdown(markdown, scope = null) {
    return await this.adapter.render_markdown(markdown, scope);
  }
  /**
   * Gets a value from an object by path.
   * @param {Object} obj - The object to search in.
   * @param {string} path - The path to the value.
   * @returns {*}
   */
  get_by_path(obj, path, settings_scope = null) {
    return get_by_path2(obj, path, settings_scope);
  }
  /**
   * Sets a value in an object by path.
   * @param {Object} obj - The object to modify.
   * @param {string} path - The path to set the value.
   * @param {*} value - The value to set.
   */
  set_by_path(obj, path, value, settings_scope = null) {
    set_by_path2(obj, path, value, settings_scope);
  }
  /**
   * Deletes a value from an object by path.
   * @param {Object} obj - The object to modify.
   * @param {string} path - The path to delete.
   */
  delete_by_path(obj, path, settings_scope = null) {
    delete_by_path2(obj, path, settings_scope);
  }
  /**
   * Escapes HTML special characters in a string.
   * @param {string} str - The string to escape.
   * @returns {string} The escaped string.
   */
  escape_html(str) {
    return escape_html2(str);
  }
  /**
   * A convenience method to build a setting HTML snippet from a config object.
   * @param {Object} setting_config
   * @returns {string}
   */
  render_setting_html(setting_config) {
    if (setting_config.type === "html") {
      return setting_config.value;
    }
    const attributes = Object.entries(setting_config).map(([attr, value]) => {
      if (attr.includes("class")) return "";
      if (typeof value === "number") return `data-${attr.replace(/_/g, "-")}=${value}`;
      return `data-${attr.replace(/_/g, "-")}="${value}"`;
    }).join("\n");
    return `<div class="setting-component${setting_config.scope_class ? " " + setting_config.scope_class : ""}"
data-setting="${setting_config.setting}"
${attributes}
></div>`;
  }
  /**
   * Renders settings from a config, returning a fragment.
   * @async
   * @param {Object} settings_config
   * @param {Object} opts
   * @returns {Promise<DocumentFragment>}
   */
  async render_settings(settings_config5, opts = {}) {
    const html = Object.entries(settings_config5).map(([setting_key, setting_config]) => {
      if (!setting_config.setting) {
        setting_config.setting = setting_key;
      }
      return this.render_setting_html(setting_config);
    }).join("\n");
    const frag = this.create_doc_fragment(`<div>${html}</div>`);
    return await this.render_setting_components(frag, opts);
  }
  /**
   * @function add_settings_listeners
   * @description
   * Scans the given container for elements that have `data-smart-setting` and attaches
   * a 'change' event listener. On change, it updates the corresponding path in `scope.settings`.
   * 
   * @param {Object} scope - An object containing a `settings` property, where new values will be stored.
   * @param {HTMLElement} [container=document] - The DOM element to scan. Defaults to the entire document.
   */
  add_settings_listeners(scope, container = document) {
    const elements = container.querySelectorAll("[data-smart-setting]");
    elements.forEach((elm) => {
      const path = elm.dataset.smartSetting;
      if (!path) return;
      if (!elm.dataset.listenerAttached) {
        elm.dataset.listenerAttached = "true";
        elm.addEventListener("change", () => {
          let newValue;
          if (elm instanceof HTMLInputElement) {
            if (elm.type === "checkbox") {
              newValue = elm.checked;
            } else if (elm.type === "radio") {
              if (elm.checked) {
                newValue = elm.value;
              } else {
                return;
              }
            } else {
              newValue = elm.value;
            }
          } else if (elm instanceof HTMLSelectElement || elm instanceof HTMLTextAreaElement) {
            newValue = elm.value;
          } else {
            newValue = elm.value ?? elm.textContent;
          }
          this.set_by_path(scope.settings, path, newValue);
        });
      }
    });
  }
  apply_style_sheet(sheet) {
    if ("adoptedStyleSheets" in Document.prototype) {
      document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
    } else {
      const styleEl = document.createElement("style");
      if (sheet.cssRules) {
        styleEl.textContent = Array.from(sheet.cssRules).map((rule) => rule.cssText).join("\n");
      }
      document.head.appendChild(styleEl);
    }
  }
  empty(elm) {
    empty2(elm);
  }
  safe_inner_html(elm, html) {
    safe_inner_html2(elm, html);
  }
};

// node_modules/smart-view/adapters/_adapter.js
var SmartViewAdapter2 = class {
  constructor(main) {
    this.main = main;
  }
  // NECESSARY OVERRIDES
  /**
   * Retrieves the class used for settings.
   * Must be overridden by subclasses to return the appropriate setting class.
   * @abstract
   * @returns {Function} The setting class constructor.
   * @throws Will throw an error if not implemented in the subclass.
   */
  get setting_class() {
    throw new Error("setting_class() not implemented");
  }
  /**
   * Generates the HTML for a specified icon.
   * Must be overridden by subclasses to provide the correct icon HTML.
   * @abstract
   * @param {string} icon_name - The name of the icon to generate HTML for.
   * @returns {string} The HTML string representing the icon.
   * @throws Will throw an error if not implemented in the subclass.
   */
  get_icon_html(icon_name) {
    throw new Error("get_icon_html() not implemented");
  }
  /**
   * Renders Markdown content within a specific scope.
   * Must be overridden by subclasses to handle Markdown rendering appropriately.
   * @abstract
   * @param {string} markdown - The Markdown content to render.
   * @param {object|null} [scope=null] - The scope within which to render the Markdown.
   * @returns {Promise<void>} A promise that resolves when rendering is complete.
   * @throws Will throw an error if not implemented in the subclass.
   */
  async render_markdown(markdown, scope = null) {
    throw new Error("render_markdown() not implemented");
  }
  /**
   * Opens a specified URL.
   * Should be overridden by subclasses to define how URLs are opened.
   * @abstract
   * @param {string} url - The URL to open.
   */
  open_url(url) {
    throw new Error("open_url() not implemented");
  }
  /**
   * Handles the selection of a folder by invoking the folder selection dialog and updating the setting.
   * @abstract
   * @param {string} setting - The path of the setting being modified.
   * @param {string} value - The current value of the setting.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} scope - The current scope containing settings and actions.
   */
  handle_folder_select(path, value, elm, scope) {
    throw new Error("handle_folder_select not implemented");
  }
  /**
   * Handles the selection of a file by invoking the file selection dialog and updating the setting.
   * @abstract
   * @param {string} setting - The path of the setting being modified.
   * @param {string} value - The current value of the setting.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} scope - The current scope containing settings and actions.
   */
  handle_file_select(path, value, elm, scope) {
    throw new Error("handle_file_select not implemented");
  }
  /**
   * Performs actions before a setting is changed, such as clearing notices and updating the UI.
   * @abstract
   * @param {string} setting - The path of the setting being changed.
   * @param {*} value - The new value for the setting.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} scope - The current scope containing settings and actions.
   */
  pre_change(path, value, elm) {
  }
  /**
   * Performs actions after a setting is changed, such as updating UI elements.
   * @abstract
   * @param {string} setting - The path of the setting that was changed.
   * @param {*} value - The new value for the setting.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} changed - Additional information about the change.
   */
  post_change(path, value, elm) {
  }
  /**
   * Reverts a setting to its previous value in case of validation failure or error.
   * @abstract
   * @param {string} setting - The path of the setting to revert.
   * @param {HTMLElement} elm - The HTML element associated with the setting.
   * @param {object} scope - The current scope containing settings.
   */
  revert_setting(path, elm, scope) {
    console.warn("revert_setting() not implemented");
  }
  // DEFAULT IMPLEMENTATIONS (may be overridden)
  get setting_renderers() {
    return {
      text: this.render_text_component,
      string: this.render_text_component,
      password: this.render_password_component,
      number: this.render_number_component,
      dropdown: this.render_dropdown_component,
      toggle: this.render_toggle_component,
      textarea: this.render_textarea_component,
      textarea_array: this.render_textarea_array_component,
      button: this.render_button_component,
      remove: this.render_remove_component,
      folder: this.render_folder_select_component,
      "text-file": this.render_file_select_component,
      file: this.render_file_select_component,
      slider: this.render_slider_component,
      html: this.render_html_component,
      button_with_confirm: this.render_button_with_confirm_component,
      json: this.render_json_component,
      array: this.render_array_component
    };
  }
  async render_setting_component(elm, opts = {}) {
    this.empty(elm);
    const path = elm.dataset.setting;
    const scope = opts.scope || this.main.main;
    const settings_scope = opts.settings_scope || null;
    try {
      let value = elm.dataset.value ?? this.main.get_by_path(scope.settings, path, settings_scope);
      if (typeof value === "undefined" && typeof elm.dataset.default !== "undefined") {
        value = elm.dataset.default;
        if (typeof value === "string") value = value.toLowerCase() === "true" ? true : value === "false" ? false : value;
        this.main.set_by_path(scope.settings, path, value, settings_scope);
      }
      const renderer = this.setting_renderers[elm.dataset.type];
      if (!renderer) {
        console.warn(`Unsupported setting type: ${elm.dataset.type}`);
        return elm;
      }
      const setting = renderer.call(this, elm, path, value, scope, settings_scope);
      if (elm.dataset.name) setting.setName(elm.dataset.name);
      if (elm.dataset.description) {
        const frag = this.main.create_doc_fragment(`<span>${elm.dataset.description}</span>`);
        setting.setDesc(frag);
      }
      if (elm.dataset.tooltip) setting.setTooltip(elm.dataset.tooltip);
      this.add_button_if_needed(setting, elm, path, scope);
      this.handle_disabled_and_hidden(elm);
      return elm;
    } catch (e) {
      console.error(JSON.stringify({ path, elm }, null, 2));
      console.error(JSON.stringify(e, null, 2));
    }
  }
  render_dropdown_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    let options;
    if (elm.dataset.optionsCallback) {
      console.log(`getting options callback: ${elm.dataset.optionsCallback}`);
      const opts_callback = this.main.get_by_path(scope, elm.dataset.optionsCallback);
      if (typeof opts_callback === "function") options = opts_callback();
      else console.warn(`optionsCallback is not a function: ${elm.dataset.optionsCallback}`, scope);
    }
    if (!options || !options.length) {
      options = this.get_dropdown_options(elm);
    }
    smart_setting.addDropdown((dropdown) => {
      if (elm.dataset.required) dropdown.inputEl.setAttribute("required", true);
      options.forEach((option) => {
        const opt = dropdown.addOption(option.value, option.name ?? option.value);
        opt.selected = option.value === value;
      });
      dropdown.onChange((value2) => {
        this.handle_on_change(path, value2, elm, scope, settings_scope);
      });
      dropdown.setValue(value);
    });
    return smart_setting;
  }
  render_text_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addText((text) => {
      text.setPlaceholder(elm.dataset.placeholder || "");
      if (value) text.setValue(value);
      let debounceTimer;
      if (elm.dataset.button) {
        smart_setting.addButton((button) => {
          button.setButtonText(elm.dataset.button);
          button.onClick(async () => this.handle_on_change(path, text.getValue(), elm, scope));
        });
      } else {
        text.onChange(async (value2) => {
          clearTimeout(debounceTimer);
          debounceTimer = setTimeout(() => this.handle_on_change(path, value2.trim(), elm, scope, settings_scope), 2e3);
        });
      }
    });
    return smart_setting;
  }
  render_password_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addText((text) => {
      text.inputEl.type = "password";
      text.setPlaceholder(elm.dataset.placeholder || "");
      if (value) text.setValue(value);
      let debounceTimer;
      text.onChange(async (value2) => {
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => this.handle_on_change(path, value2, elm, scope, settings_scope), 2e3);
      });
    });
    return smart_setting;
  }
  render_number_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addText((number) => {
      number.inputEl.type = "number";
      number.setPlaceholder(elm.dataset.placeholder || "");
      if (typeof value !== "undefined") number.inputEl.value = parseInt(value);
      number.inputEl.min = elm.dataset.min || 0;
      if (elm.dataset.max) number.inputEl.max = elm.dataset.max;
      let debounceTimer;
      number.onChange(async (value2) => {
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => this.handle_on_change(path, parseInt(value2), elm, scope, settings_scope), 2e3);
      });
    });
    return smart_setting;
  }
  render_toggle_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addToggle((toggle) => {
      let checkbox_val = value ?? false;
      if (typeof checkbox_val === "string") {
        checkbox_val = checkbox_val.toLowerCase() === "true";
      }
      toggle.setValue(checkbox_val);
      toggle.onChange(async (value2) => this.handle_on_change(path, value2, elm, scope, settings_scope));
    });
    return smart_setting;
  }
  render_textarea_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addTextArea((textarea) => {
      textarea.setPlaceholder(elm.dataset.placeholder || "");
      textarea.setValue(value || "");
      let debounceTimer;
      textarea.onChange(async (value2) => {
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => this.handle_on_change(path, value2, elm, scope, settings_scope), 2e3);
      });
    });
    return smart_setting;
  }
  render_textarea_array_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addTextArea((textarea) => {
      textarea.setPlaceholder(elm.dataset.placeholder || "");
      textarea.setValue(Array.isArray(value) ? value.join("\n") : value || "");
      let debounceTimer;
      textarea.onChange(async (value2) => {
        value2 = value2.split("\n").map((v) => v.trim()).filter((v) => v);
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => this.handle_on_change(path, value2, elm, scope, settings_scope), 2e3);
      });
    });
    return smart_setting;
  }
  render_button_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addButton((button) => {
      button.setButtonText(elm.dataset.btnText || elm.dataset.name);
      button.onClick(async () => {
        if (elm.dataset.confirm && !confirm(elm.dataset.confirm)) return;
        if (elm.dataset.href) this.open_url(elm.dataset.href);
        if (elm.dataset.callback) {
          const callback = this.main.get_by_path(scope, elm.dataset.callback);
          if (callback) callback(path, value, elm, scope, settings_scope);
        }
      });
    });
    return smart_setting;
  }
  render_remove_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addButton((button) => {
      button.setButtonText(elm.dataset.btnText || elm.dataset.name || "Remove");
      button.onClick(async () => {
        this.main.delete_by_path(scope.settings, path, settings_scope);
        if (elm.dataset.callback) {
          const callback = this.main.get_by_path(scope, elm.dataset.callback);
          if (callback) callback(path, value, elm, scope, settings_scope);
        }
      });
    });
    return smart_setting;
  }
  render_folder_select_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addFolderSelect((folder_select) => {
      folder_select.setPlaceholder(elm.dataset.placeholder || "");
      if (value) folder_select.setValue(value);
      folder_select.inputEl.closest("div").addEventListener("click", () => {
        this.handle_folder_select(path, value, elm, scope);
      });
      folder_select.inputEl.querySelector("input").addEventListener("change", (e) => {
        const folder = e.target.value;
        this.handle_on_change(path, folder, elm, scope, settings_scope);
      });
    });
    return smart_setting;
  }
  render_file_select_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addFileSelect((file_select) => {
      file_select.setPlaceholder(elm.dataset.placeholder || "");
      if (value) file_select.setValue(value);
      file_select.inputEl.closest("div").addEventListener("click", () => {
        this.handle_file_select(path, value, elm, scope, settings_scope);
      });
    });
    return smart_setting;
  }
  render_slider_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addSlider((slider) => {
      const min = parseFloat(elm.dataset.min) || 0;
      const max = parseFloat(elm.dataset.max) || 100;
      const step = parseFloat(elm.dataset.step) || 1;
      const currentValue = typeof value !== "undefined" ? parseFloat(value) : min;
      slider.setLimits(min, max, step);
      slider.setValue(currentValue);
      slider.onChange((newVal) => {
        const numericVal = parseFloat(newVal);
        this.handle_on_change(path, numericVal, elm, scope, settings_scope);
      });
    });
    return smart_setting;
  }
  render_html_component(elm, path, value, scope) {
    this.safe_inner_html(elm, value);
    return elm;
  }
  /**
   * Renders an array setting component for managing a list of strings.
   * @param {HTMLElement} elm - Container element for the setting.
   * @param {string} path - Dot-notation path to store the array.
   * @param {Array<string>} value - Initial array value.
   * @param {object} scope - Scope containing settings and actions.
   * @param {object|null} settings_scope - Optional nested settings scope.
   * @returns {object} smart_setting instance.
   */
  render_array_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    let arr = Array.isArray(value) ? [...value] : [];
    const items_container = document.createElement("div");
    items_container.className = "array-items-container";
    const render_items = () => {
      items_container.innerHTML = "";
      arr.forEach((val, idx) => {
        const row = document.createElement("div");
        row.className = "array-item-row";
        const input = document.createElement("input");
        input.type = "text";
        input.value = val;
        input.placeholder = "Value";
        const remove_btn = document.createElement("button");
        remove_btn.textContent = "\u2715";
        remove_btn.title = "Remove";
        input.addEventListener("change", () => {
          arr[idx] = input.value;
          trigger_change();
        });
        remove_btn.addEventListener("click", () => {
          arr.splice(idx, 1);
          render_items();
          trigger_change();
        });
        row.appendChild(input);
        row.appendChild(remove_btn);
        items_container.appendChild(row);
      });
    };
    const add_row = document.createElement("div");
    add_row.className = "array-add-row";
    const new_input = document.createElement("input");
    new_input.type = "text";
    new_input.placeholder = "Value";
    const add_btn = document.createElement("button");
    add_btn.textContent = "+";
    add_btn.title = "Add value";
    add_btn.addEventListener("click", () => {
      const v = new_input.value.trim();
      if (!v) return;
      arr.push(v);
      new_input.value = "";
      render_items();
      trigger_change();
    });
    add_row.appendChild(new_input);
    add_row.appendChild(add_btn);
    smart_setting.controlEl.appendChild(items_container);
    smart_setting.controlEl.appendChild(add_row);
    const trigger_change = () => {
      this.handle_on_change(path, [...arr], elm, scope, settings_scope);
    };
    render_items();
    elm.appendChild(smart_setting.settingEl);
    return smart_setting;
  }
  render_json_component(elm, path, value, scope, settings_scope) {
    try {
      const smart_setting = new this.setting_class(elm);
      let obj = typeof value === "object" && value !== null ? { ...value } : {};
      const pairs_container = document.createElement("div");
      pairs_container.className = "json-pairs-container";
      const renderPairs = () => {
        pairs_container.innerHTML = "";
        Object.entries(obj).forEach(([key, val], idx) => {
          const pair_div = document.createElement("div");
          pair_div.className = "json-pair-row";
          const key_i = document.createElement("input");
          key_i.type = "text";
          key_i.value = key;
          key_i.placeholder = "Property";
          const value_i = document.createElement("input");
          value_i.type = "text";
          value_i.value = val;
          value_i.placeholder = "Value";
          const remove_btn = document.createElement("button");
          remove_btn.textContent = "\u2715";
          remove_btn.title = "Remove";
          key_i.addEventListener("change", () => {
            const newKey = key_i.value.trim();
            if (!newKey) return;
            if (newKey !== key) {
              obj[newKey] = obj[key];
              delete obj[key];
              renderPairs();
              triggerChange();
            }
          });
          value_i.addEventListener("change", () => {
            obj[key_i.value] = value_i.value;
            triggerChange();
          });
          remove_btn.addEventListener("click", () => {
            delete obj[key_i.value];
            renderPairs();
            triggerChange();
          });
          pair_div.appendChild(key_i);
          pair_div.appendChild(value_i);
          pair_div.appendChild(remove_btn);
          pairs_container.appendChild(pair_div);
        });
      };
      const add_div = document.createElement("div");
      add_div.className = "json-add-row";
      const new_key_i = document.createElement("input");
      new_key_i.type = "text";
      new_key_i.placeholder = "Property";
      const new_val_i = document.createElement("input");
      new_val_i.type = "text";
      new_val_i.placeholder = "Value";
      const add_btn = document.createElement("button");
      add_btn.textContent = "+";
      add_btn.title = "Add property";
      add_btn.addEventListener("click", () => {
        const k = new_key_i.value.trim();
        if (!k || k in obj) return;
        obj[k] = new_val_i.value;
        new_key_i.value = "";
        new_val_i.value = "";
        renderPairs();
        triggerChange();
      });
      add_div.appendChild(new_key_i);
      add_div.appendChild(new_val_i);
      add_div.appendChild(add_btn);
      smart_setting.controlEl.appendChild(pairs_container);
      smart_setting.controlEl.appendChild(add_div);
      const triggerChange = () => {
        this.handle_on_change(path, { ...obj }, elm, scope, settings_scope);
      };
      renderPairs();
      elm.appendChild(smart_setting.settingEl);
      return smart_setting;
    } catch (e) {
      console.error(e);
    }
  }
  add_button_if_needed(smart_setting, elm, path, scope) {
    if (elm.dataset.btn) {
      smart_setting.addButton((button) => {
        button.setButtonText(elm.dataset.btn);
        button.inputEl.addEventListener("click", (e) => {
          if (elm.dataset.btnCallback && typeof scope[elm.dataset.btnCallback] === "function") {
            if (elm.dataset.btnCallbackArg) scope[elm.dataset.btnCallback](elm.dataset.btnCallbackArg);
            else scope[elm.dataset.btnCallback](path, null, smart_setting, scope);
          } else if (elm.dataset.btnHref) {
            this.open_url(elm.dataset.btnHref);
          } else if (elm.dataset.callback && typeof this.main.get_by_path(scope, elm.dataset.callback) === "function") {
            this.main.get_by_path(scope, elm.dataset.callback)(path, null, smart_setting, scope);
          } else if (elm.dataset.href) {
            this.open_url(elm.dataset.href);
          } else {
            console.error("No callback or href found for button.");
          }
        });
        if (elm.dataset.btnDisabled || elm.dataset.disabled && elm.dataset.btnDisabled !== "false") {
          button.inputEl.disabled = true;
        }
      });
    }
  }
  handle_disabled_and_hidden(elm) {
    if (elm.dataset.disabled && elm.dataset.disabled !== "false") {
      elm.classList.add("disabled");
      elm.querySelector("input, select, textarea, button").disabled = true;
    }
    if (elm.dataset.hidden && elm.dataset.hidden !== "false") {
      elm.style.display = "none";
    }
  }
  get_dropdown_options(elm) {
    return Object.entries(elm.dataset).reduce((acc, [k, v]) => {
      if (!k.startsWith("option")) return acc;
      const [value, name] = v.split("|");
      acc.push({ value, name: name || value });
      return acc;
    }, []);
  }
  handle_on_change(path, value, elm, scope, settings_scope) {
    this.pre_change(path, value, elm, scope);
    if (elm.dataset.validate) {
      const valid = this[elm.dataset.validate](path, value, elm, scope);
      if (!valid) {
        elm.querySelector(".setting-item").style.border = "2px solid red";
        this.revert_setting(path, elm, scope);
        return;
      }
    }
    this.main.set_by_path(scope.settings, path, value, settings_scope);
    if (elm.dataset.callback) {
      const callback = this.main.get_by_path(scope, elm.dataset.callback);
      if (callback) callback(path, value, elm, scope);
    }
    this.post_change(path, value, elm, scope);
  }
  render_button_with_confirm_component(elm, path, value, scope) {
    const smart_setting = new this.setting_class(elm);
    smart_setting.addButton((button) => {
      button.setButtonText(elm.dataset.btnText || elm.dataset.name);
      elm.appendChild(this.main.create_doc_fragment(`
        <div class="sc-inline-confirm-row" style="
          display: none;
        ">
          <span style="margin-right: 10px;">
            ${elm.dataset.confirm || "Are you sure?"}
          </span>
          <span class="sc-inline-confirm-row-buttons">
            <button class="sc-inline-confirm-yes">Yes</button>
            <button class="sc-inline-confirm-cancel">Cancel</button>
          </span>
        </div>
      `));
      const confirm_row = elm.querySelector(".sc-inline-confirm-row");
      const confirm_yes = confirm_row.querySelector(".sc-inline-confirm-yes");
      const confirm_cancel = confirm_row.querySelector(".sc-inline-confirm-cancel");
      button.onClick(async () => {
        confirm_row.style.display = "block";
        elm.querySelector(".setting-item").style.display = "none";
      });
      confirm_yes.addEventListener("click", async () => {
        if (elm.dataset.href) this.open_url(elm.dataset.href);
        if (elm.dataset.callback) {
          const callback = this.main.get_by_path(scope, elm.dataset.callback);
          if (callback) callback(path, value, elm, scope);
        }
        elm.querySelector(".setting-item").style.display = "block";
        confirm_row.style.display = "none";
      });
      confirm_cancel.addEventListener("click", () => {
        confirm_row.style.display = "none";
        elm.querySelector(".setting-item").style.display = "block";
      });
    });
    return smart_setting;
  }
  empty(elm) {
    empty2(elm);
  }
  safe_inner_html(elm, html) {
    safe_inner_html2(elm, html);
  }
};

// node_modules/smart-view/adapters/obsidian.js
var import_obsidian21 = require("obsidian");
var SmartViewObsidianAdapter2 = class extends SmartViewAdapter2 {
  get setting_class() {
    return import_obsidian21.Setting;
  }
  open_url(url) {
    window.open(url);
  }
  async render_file_select_component(elm, path, value) {
    return super.render_text_component(elm, path, value);
  }
  async render_markdown(markdown, scope) {
    const component = scope.env.smart_connections_plugin?.connections_view || new import_obsidian21.Component();
    if (!scope) return console.warn("Scope required for rendering markdown in Obsidian adapter");
    const frag = this.main.create_doc_fragment("<div><div class='inner'></div></div>");
    const container = frag.querySelector(".inner");
    try {
      await import_obsidian21.MarkdownRenderer.render(
        scope.env.plugin.app,
        markdown,
        container,
        scope?.file_path || "",
        component
      );
    } catch (e) {
      console.warn("Error rendering markdown in Obsidian adapter", e);
    }
    return frag;
  }
  get_icon_html(name) {
    return (0, import_obsidian21.getIcon)(name).outerHTML;
  }
  // Obsidian Specific
  is_mod_event(event) {
    return import_obsidian21.Keymap.isModEvent(event);
  }
  render_folder_select_component(elm, path, value, scope, settings_scope) {
    const smart_setting = new this.setting_class(elm);
    const folders = scope.env.plugin.app.vault.getAllFolders().sort((a, b) => a.path.localeCompare(b.path));
    smart_setting.addDropdown((dropdown) => {
      if (elm.dataset.required) dropdown.inputEl.setAttribute("required", true);
      dropdown.addOption("", "No folder selected");
      folders.forEach((folder) => {
        dropdown.addOption(folder.path, folder.path);
      });
      dropdown.onChange((value2) => {
        this.handle_on_change(path, value2, elm, scope, settings_scope);
      });
      dropdown.setValue(value);
    });
    return smart_setting;
  }
};

// node_modules/smart-view/components/settings.js
async function render13(scope, opts = {}) {
  const html = Object.entries(scope.settings_config).map(([setting_key, setting_config]) => {
    if (!setting_config.setting) setting_config.setting = setting_key;
    return this.render_setting_html(setting_config);
  }).join("\n");
  const heading_html = `<h2>${scope.collection_key.split("_").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ")} Settings</h2>`;
  const frag = this.create_doc_fragment(heading_html + html);
  return await post_process12.call(this, scope, frag, opts);
}
async function post_process12(scope, frag, opts = {}) {
  await this.render_setting_components(frag, { scope });
  return frag;
}

// node_modules/smart-model/components/settings.js
async function render14(scope, opts = {}) {
  const html = Object.entries(scope.settings_config).map(([setting_key, setting_config]) => {
    if (!setting_config.setting) setting_config.setting = setting_key;
    return this.render_setting_html(setting_config);
  }).join("\n");
  const frag = this.create_doc_fragment(html);
  return await post_process13.call(this, scope, frag, opts);
}
async function post_process13(scope, frag, opts = {}) {
  await this.render_setting_components(frag, { scope });
  return frag;
}

// node_modules/obsidian-smart-env/modals/story.js
var import_obsidian22 = require("obsidian");
var StoryModal = class _StoryModal extends import_obsidian22.Modal {
  constructor(plugin, { title, url }) {
    super(plugin.app);
    this.plugin = plugin;
    this.title = title;
    this.url = url;
  }
  static open(plugin, story_url) {
    const modal = new _StoryModal(plugin, story_url);
    modal.open();
  }
  onOpen() {
    this.titleEl.setText(this.title);
    this.modalEl.addClass("sc-story-modal");
    const container = this.contentEl.createEl("div", {
      cls: "sc-story-container"
    });
    if (import_obsidian22.Platform.isMobile) {
      const btn = container.createEl("button", { text: "Open in browser" });
      btn.addEventListener("click", () => {
        open_url_externally(this.plugin, this.url);
        this.close();
      });
      return;
    } else {
      const webview = container.createEl("webview", {
        attr: { src: this.url, allowpopups: "" }
      });
      webview.style.width = "100%";
      webview.style.height = "100%";
      webview.addEventListener("did-navigate", (event) => {
        const new_url = event.url || webview.getAttribute("src");
        if (new_url && new_url !== this.url) {
          open_url_externally(this.plugin, new_url);
          this.close();
        }
      });
    }
  }
  onClose() {
    this.contentEl.empty();
  }
};

// src/modals/connections_filter.js
var import_obsidian23 = require("obsidian");
var ConnectionsFilterModal = class extends import_obsidian23.Modal {
  constructor(app2, env, connections_filter = {}) {
    super(app2);
    this.env = env;
    this.connections_filter = connections_filter;
  }
  async onOpen() {
    this.titleEl.setText("Connections Filter");
    this.contentEl.empty();
    console.log("Opening ConnectionsFilterModal with codeblock_ctx:", this.connections_filter);
    const connections_settings_frag = await this.env.smart_view.render_settings(
      this.env.smart_sources.connections_filter_config,
      { scope: { settings: { smart_view_filter: this.connections_filter } } }
    );
    this.contentEl.appendChild(connections_settings_frag);
  }
};

// src/components/connections.js
function build_top_bar_buttons(view_env, opts = {}) {
  const connections_settings = opts.connections_settings ?? view_env.settings.smart_view_filter;
  const expanded_view = connections_settings.expanded_view;
  const buttons = [
    { title: "Refresh", icon: "refresh-cw" },
    { title: "Fold all toggle", icon: expanded_view ? "fold-vertical" : "unfold-vertical" },
    { title: "Lookup", icon: "search" },
    { title: "Settings", icon: "settings" },
    { title: "Help", icon: "help-circle" }
  ];
  return buttons.map(
    (btn) => `
    <button title="${btn.title}" aria-label="${btn.title} button">
      ${this.get_icon_html(btn.icon)}
    </button>`
  ).join("");
}
async function build_html11(entity, opts = {}) {
  const top_bar_buttons = build_top_bar_buttons.call(this, entity.env, opts);
  return `<div><div class="sc-connections-view">
    <div class="sc-top-bar">
      <p class="sc-context" data-key="">Loading\u2026</p>
      ${top_bar_buttons}
    </div>
    <div class="sc-list"></div>
    <div class="sc-bottom-bar">
      <span class="sc-context" data-key="" title="Loading context\u2026">Loading context\u2026</span>
      ${opts.attribution || ""}
    </div>
  </div></div>`;
}
async function render15(entity, opts = {}) {
  const html = await build_html11.call(this, entity, opts);
  const frag = this.create_doc_fragment(html);
  const container = frag.querySelector(".sc-connections-view");
  post_process14.call(this, entity, container, opts);
  return container;
}
async function post_process14(entity, container, opts = {}) {
  const plugin = entity.env.smart_connections_plugin;
  const list_el = container.querySelector(".sc-list");
  const header_ctx = container.querySelector(".sc-top-bar .sc-context");
  const footer_ctx = container.querySelector(".sc-bottom-bar .sc-context");
  const connections_settings = opts.connections_settings ?? entity.env.settings.smart_view_filter;
  const render_results = async () => {
    const exclude_keys = Object.keys(entity.data.hidden_connections || {});
    const results = await entity.find_connections({
      exclude_keys,
      ...opts.filter || {}
    });
    const results_frag = await entity.env.render_component(
      "connections_results",
      results,
      opts
    );
    this.empty(list_el);
    Array.from(results_frag.children).forEach((el) => list_el.appendChild(el));
    header_ctx.innerText = entity.path.split("/").pop();
    footer_ctx.innerText = entity.path.split("/").pop();
    header_ctx.dataset.key = entity.key;
    footer_ctx.dataset.key = entity.key;
    list_el.dataset.key = entity.key;
  };
  if (entity.vec) {
    await render_results();
  } else {
    list_el.createEl("p", {
      text: "This source is not embedded. Check your Smart Environment settings. For example, the current content may be less than the minimum embedding size.",
      cls: "sc-warning"
    });
    const inspect_btn = list_el.createEl("button", {
      text: "Inspect Source",
      cls: "sc-inspect-source-btn",
      title: "Inspect source details"
    });
    inspect_btn.addEventListener("click", async () => {
      new SmartNoteInspectModal(plugin, entity).open();
    });
  }
  const toggle_btn = container.querySelector('[title="Fold all toggle"]');
  toggle_btn.addEventListener("click", () => {
    const expanded = connections_settings.expanded_view;
    connections_settings.expanded_view = !expanded;
    list_el.querySelectorAll(".sc-result").forEach(
      (elm) => expanded ? elm.classList.add("sc-collapsed") : elm.classList.remove("sc-collapsed")
    );
    this.safe_inner_html(
      toggle_btn,
      this.get_icon_html(expanded ? "unfold-vertical" : "fold-vertical")
    );
  });
  const refresh_btn = container.querySelector('[title="Refresh"]');
  refresh_btn.addEventListener("click", async () => {
    await entity.read();
    entity.queue_import();
    await entity.collection.process_source_import_queue?.();
    await render_results();
  });
  container.querySelector('[title="Lookup"]')?.addEventListener("click", () => plugin.open_lookup_view());
  container.querySelector('[title="Help"]')?.addEventListener(
    "click",
    () => StoryModal.open(plugin, {
      title: "Getting Started With Smart Connections",
      url: "https://smartconnections.app/story/smart-connections-getting-started/?utm_source=connections-view-help#page=understanding-connections-1"
    })
  );
  const settings_btn = container.querySelector('[title="Settings"]');
  settings_btn?.addEventListener("click", async () => {
    if (opts.codeblock) {
      const modal = new ConnectionsFilterModal(plugin.app, entity.env, opts.connections_settings);
      modal.open();
    } else {
      await app.setting.open();
      await app.setting.openTabById("smart-connections");
    }
  });
  if (!connections_settings.render_markdown) list_el.classList.add("sc-result-plaintext");
  container.querySelectorAll(".sc-context").forEach((el) => {
    el.addEventListener("click", (event) => {
      new SmartNoteInspectModal(plugin, entity).open();
    });
  });
  return container;
}

// src/components/lookup.js
var get_lookup_params = (query, settings, filter) => {
  const skip_blocks = settings.smart_view_filter?.exclude_blocks_from_source_connections;
  return {
    hypotheticals: [query],
    filter,
    ...skip_blocks ? { skip_blocks: true } : {}
  };
};
async function build_html12(collection, opts = {}) {
  const expanded_view = collection.env.settings.smart_view_filter?.expanded_view ?? collection.env.settings.expanded_view;
  return `<div id="sc-lookup-view">
    <div class="sc-top-bar">
      <button class="sc-fold-toggle">${this.get_icon_html(expanded_view ? "fold-vertical" : "unfold-vertical")}</button>
    </div>
    <div class="sc-container">
      <h2>Smart Lookup</h2>
      <div class="sc-textarea-container">
        <textarea
          id="query"
          name="query"
          placeholder="Describe what you're looking for (e.g., 'PKM strategies', 'story elements', 'personal AI alignment')"
        ></textarea>
        <div class="sc-textarea-btn-container">
          <button class="send-button">${this.get_icon_html("search")}</button>
        </div>
      </div>
      <p>Use semantic (embeddings) search to surface relevant notes. Results are sorted by similarity to your query. Note: returns different results than lexical (keyword) search.</p>
    </div>
    <div class="sc-list">
    </div>
    <div class="sc-bottom-bar">
      ${opts.attribution || ""}
    </div>
  </div>`;
}
async function render16(collection, opts = {}) {
  let html = await build_html12.call(this, collection, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process15.call(this, collection, frag, opts);
}
async function post_process15(collection, frag, opts = {}) {
  const query_input = frag.querySelector("#query");
  const results_container = frag.querySelector(".sc-list");
  const render_lookup = async (query, results_container2) => {
    const lookup_params = get_lookup_params(query, collection.env.settings, opts.filter);
    const results = await collection.lookup(lookup_params);
    this.empty(results_container2);
    const results_frag = await collection.env.render_component("connections_results", results, opts);
    Array.from(results_frag.children).forEach((elm) => results_container2.appendChild(elm));
  };
  let timeout;
  query_input.addEventListener("input", (event) => {
    clearTimeout(timeout);
    const query = event.target.value.trim();
    if (query) {
      timeout = setTimeout(async () => {
        await render_lookup(query, results_container);
      }, 500);
    }
  });
  if (opts.query) {
    query_input.value = opts.query;
    await render_lookup(opts.query, results_container);
  }
  const send_button = frag.querySelector(".send-button");
  send_button.addEventListener("click", async (event) => {
    clearTimeout(timeout);
    const query = query_input.value.trim();
    if (query) {
      await render_lookup(query, results_container);
    }
  });
  const list_el = frag.querySelector(".sc-list");
  const connections_settings = opts.connections_settings ?? collection.env.settings.smart_view_filter;
  const toggle_btn = frag.querySelector(".sc-fold-toggle");
  toggle_btn.addEventListener("click", () => {
    const expanded = connections_settings.expanded_view;
    connections_settings.expanded_view = !expanded;
    list_el.querySelectorAll(".sc-result").forEach(
      (elm) => expanded ? elm.classList.add("sc-collapsed") : elm.classList.remove("sc-collapsed")
    );
    this.safe_inner_html(
      toggle_btn,
      this.get_icon_html(expanded ? "unfold-vertical" : "fold-vertical")
    );
  });
  return frag;
}

// src/components/connections_results.js
async function build_html13(results, opts = {}) {
  return ``;
}
async function render17(results, opts = {}) {
  const html = await build_html13.call(this, results, opts);
  const frag = this.create_doc_fragment(html);
  if (!results || !Array.isArray(results) || results.length === 0) {
    const no_results = this.create_doc_fragment(`<p class="sc-no-results">No results found.<br><em>Try using the refresh button. If that doesn't work, try running "Clear sources data" and then "Reload sources" in the Smart Environment settings.</em></p>`);
    frag.appendChild(no_results);
    return frag;
  }
  const result_frags = await Promise.all(results.map((result) => {
    return result.item.env.render_component("connections_result", result, { ...opts });
  }));
  result_frags.forEach((result_frag) => frag.appendChild(result_frag));
  return frag;
}

// src/views/smart_chat.js
function build_html14(obsidian_view, opts = {}) {
  const top_bar_buttons = [
    // { title: 'Open Conversation Note', icon: 'external-link' },
    { title: "New Chat", icon: "plus" },
    { title: "Chat History", icon: "history" },
    { title: "Chat Options", icon: "sliders-horizontal", style: "display: none;" },
    { title: "Chat Settings", icon: "settings" },
    { title: "Help", icon: "help-circle" }
  ].map((btn) => `
    <button title="${btn.title}" ${btn.style ? `style="${btn.style}"` : ""}>
      ${this.get_icon_html(btn.icon)}
    </button>
  `).join("");
  return `
    <div class="sc-chat-container">
      <div class="sc-top-bar-container">
        <input class="sc-chat-name-input" type="text" value="" placeholder="Add name to save this chat">
        ${top_bar_buttons}
      </div>
      <div id="settings" class="smart-chat-overlay" style="display: none;">
        <div class="smart-chat-overlay-header">
          <button class="smart-chat-overlay-close">
            ${this.get_icon_html("x")}
          </button>
        </div>
        <div class="sc-settings"></div>
      </div>
      <div class="sc-thread">
        <!-- Thread messages will be inserted here -->
      </div>
    </div>
    ${obsidian_view.attribution || ""}
  `;
}
async function render18(obsidian_view, opts = {}) {
  const html = build_html14.call(this, obsidian_view, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process16.call(this, obsidian_view, frag, opts);
}
async function post_process16(obsidian_view, frag, opts) {
  const chat_box = frag.querySelector(".sc-thread");
  const settings_button = frag.querySelector('button[title="Chat Settings"]');
  const overlay_container = frag.querySelector(".smart-chat-overlay");
  const settings_container = overlay_container.querySelector(".sc-settings");
  while (!obsidian_view.env.smart_threads) {
    await new Promise((resolve) => setTimeout(resolve, 300));
  }
  const threads_collection = obsidian_view.env.smart_threads;
  threads_collection.container = frag.querySelector(".sc-chat-container");
  let thread;
  if (opts.thread_key) {
    thread = threads_collection.get(opts.thread_key);
  }
  if (!thread) thread = threads_collection.get_active_thread();
  if (!thread) {
    thread = await threads_collection.create_or_update({});
  }
  chat_box.setAttribute("data-thread-key", thread.key);
  await thread.render(chat_box, opts);
  const chat_input = frag.querySelector(".sc-chat-form textarea");
  if (chat_input) {
    chat_input.addEventListener("keydown", obsidian_view.handle_chat_input_keydown.bind(obsidian_view));
  }
  const close_button = overlay_container.querySelector(".smart-chat-overlay-close");
  if (close_button) {
    close_button.addEventListener("click", () => {
      overlay_container.style.display = "none";
    });
  }
  settings_button.addEventListener("click", () => {
    if (overlay_container.style.display === "none") {
      threads_collection.render_settings(settings_container);
      overlay_container.style.display = "block";
    } else {
      overlay_container.style.display = "none";
    }
  });
  const help_button = frag.querySelector("[title='Help']");
  help_button.addEventListener("click", () => {
    window.open("https://docs.smartconnections.app/smart-chat", "_blank");
  });
  const new_chat_button = frag.querySelector('button[title="New Chat"]');
  new_chat_button.addEventListener("click", async () => {
    this.empty(threads_collection.container);
    opts.thread_key = null;
    obsidian_view.render_view();
  });
  const chat_history_button = frag.querySelector('button[title="Chat History"]');
  chat_history_button.addEventListener("click", () => {
    obsidian_view.open_chat_history();
  });
  setup_chat_name_input_handler.call(this, frag, thread);
  return frag;
}
function setup_chat_name_input_handler(frag, thread) {
  const name_input = frag.querySelector(".sc-chat-name-input");
  if (!name_input) return;
  if (!thread.key.startsWith("Untitled")) {
    name_input.value = thread.key;
  }
  name_input.addEventListener("blur", async () => {
    const new_name = name_input.value.trim();
    if (new_name && new_name !== thread.key) {
      try {
        await thread.rename(new_name);
        console.log(`Thread renamed to "${new_name}"`);
      } catch (error) {
        console.error("Error renaming thread:", error);
        name_input.value = thread.key;
      }
    }
  });
  name_input.addEventListener("keydown", async (e) => {
    if (e.key === "Enter") {
      e.preventDefault();
      name_input.blur();
    }
  });
}

// node_modules/smart-model/smart_model.js
var SmartModel2 = class {
  scope_name = "smart_model";
  static defaults = {
    // override in sub-class if needed
  };
  /**
   * Create a SmartModel instance.
   * @param {Object} opts - Configuration options
   * @param {Object} opts.adapters - Map of adapter names to adapter classes
   * @param {Object} opts.settings - Model settings configuration
   * @param {Object} opts.model_config - Model-specific configuration
   * @param {string} opts.model_config.adapter - Name of the adapter to use
   * @param {string} [opts.model_key] - Optional model identifier to override settings
   * @throws {Error} If required options are missing
   */
  constructor(opts = {}) {
    this.opts = opts;
    this.validate_opts(opts);
    this.state = "unloaded";
    this._adapter = null;
  }
  /**
   * Initialize the model by loading the configured adapter.
   * @async
   * @returns {Promise<void>}
   */
  async initialize() {
    this.load_adapter(this.adapter_name);
    await this.load();
  }
  /**
   * Validate required options.
   * @param {Object} opts - Configuration options
   */
  validate_opts(opts) {
    if (!opts.adapters) throw new Error("opts.adapters is required");
    if (!opts.settings) throw new Error("opts.settings is required");
  }
  /**
   * Get the current settings
   * @returns {Object} Current settings
   */
  get settings() {
    if (!this.opts.settings) this.opts.settings = {
      ...this.constructor.defaults
    };
    return this.opts.settings;
  }
  /**
   * Get the current adapter name
   * @returns {string} Current adapter name
   */
  get adapter_name() {
    let adapter_key = this.opts.model_config?.adapter || this.opts.adapter || this.settings.adapter || Object.keys(this.adapters)[0];
    if (!adapter_key || !this.adapters[adapter_key]) {
      console.warn(`Platform "${adapter_key}" not supported`);
      adapter_key = Object.keys(this.adapters)[0];
    }
    return adapter_key;
  }
  /**
   * Get adapter-specific settings.
   * @returns {Object} Settings for current adapter
   */
  get adapter_settings() {
    if (!this.settings[this.adapter_name]) this.settings[this.adapter_name] = {};
    return this.settings[this.adapter_name];
  }
  get adapter_config() {
    const base_config = this.adapters[this.adapter_name]?.defaults || {};
    return {
      ...base_config,
      ...this.adapter_settings,
      ...this.opts.adapter_config
    };
  }
  /**
   * Get available models.
   * @returns {Object} Map of model objects
   */
  get models() {
    return this.adapter.models;
  }
  /**
   * Get default model key.
   * @returns {string} Default model key
   */
  get default_model_key() {
    return this.adapter.constructor.defaults.default_model;
  }
  /**
   * Get the current model key
   * @returns {string} Current model key
   */
  get model_key() {
    return this.opts.model_key || this.adapter_config.model_key || this.settings.model_key || this.default_model_key;
  }
  /**
   * Get the current model configuration
   * @returns {Object} Combined base and custom model configuration
   */
  get model_config() {
    const model_key = this.model_key;
    const base_model_config = this.models[model_key] || {};
    return {
      ...this.adapter_config,
      ...base_model_config,
      ...this.opts.model_config
    };
  }
  get model_settings() {
    if (!this.settings[this.model_key]) this.settings[this.model_key] = {};
    return this.settings[this.model_key];
  }
  /**
   * Load the current adapter and transition to loaded state.
   * @async
   * @returns {Promise<void>}
   */
  async load() {
    this.set_state("loading");
    try {
      if (!this.adapter?.is_loaded) {
        await this.invoke_adapter_method("load");
      }
    } catch (err) {
      this.set_state("unloaded");
      if (!this.reload_model_timeout) {
        this.reload_model_timeout = setTimeout(async () => {
          this.reload_model_timeout = null;
          await this.load();
          this.set_state("loaded");
          this.env?.events?.emit("model:loaded", { model_key: this.model_key });
          this.notices?.show("Loaded model: " + this.model_key);
        }, 6e4);
      }
      throw new Error(`Failed to load model: ${err.message}`);
    }
    this.set_state("loaded");
  }
  /**
   * Unload the current adapter and transition to unloaded state.
   * @async
   * @returns {Promise<void>}
   */
  async unload() {
    if (this.adapter?.is_loaded) {
      this.set_state("unloading");
      await this.invoke_adapter_method("unload");
      this.set_state("unloaded");
    }
  }
  /**
   * Set the model's state.
   * @param {('unloaded'|'loading'|'loaded'|'unloading')} new_state - The new state
   * @throws {Error} If the state is invalid
   */
  set_state(new_state) {
    const valid_states = ["unloaded", "loading", "loaded", "unloading"];
    if (!valid_states.includes(new_state)) {
      throw new Error(`Invalid state: ${new_state}`);
    }
    this.state = new_state;
  }
  get is_loading() {
    return this.state === "loading";
  }
  get is_loaded() {
    return this.state === "loaded";
  }
  get is_unloading() {
    return this.state === "unloading";
  }
  get is_unloaded() {
    return this.state === "unloaded";
  }
  // ADAPTERS
  /**
   * Get the map of available adapters
   * @returns {Object} Map of adapter names to adapter classes
   */
  get adapters() {
    return this.opts.adapters || {};
  }
  /**
   * Load a specific adapter by name.
   * @async
   * @param {string} adapter_name - Name of the adapter to load
   * @throws {Error} If adapter not found or loading fails
   * @returns {Promise<void>}
   */
  async load_adapter(adapter_name) {
    this.set_adapter(adapter_name);
    if (!this._adapter.loaded) {
      this.set_state("loading");
      try {
        await this.invoke_adapter_method("load");
        this.set_state("loaded");
      } catch (err) {
        this.set_state("unloaded");
        throw new Error(`Failed to load adapter: ${err.message}`);
      }
    }
  }
  /**
   * Set an adapter instance by name without loading it.
   * @param {string} adapter_name - Name of the adapter to set
   * @throws {Error} If adapter not found
   */
  set_adapter(adapter_name) {
    const AdapterClass = this.adapters[adapter_name];
    if (!AdapterClass) {
      throw new Error(`Adapter "${adapter_name}" not found.`);
    }
    if (this._adapter?.constructor.name.toLowerCase() === adapter_name.toLowerCase()) {
      return;
    }
    this._adapter = new AdapterClass(this);
  }
  /**
   * Get the current active adapter instance
   * @returns {Object} The active adapter instance
   * @throws {Error} If adapter not found
   */
  get adapter() {
    const adapter_name = this.adapter_name;
    if (!adapter_name) {
      throw new Error(`Adapter not set for model.`);
    }
    if (!this._adapter) {
      this.load_adapter(adapter_name);
    }
    return this._adapter;
  }
  /**
   * Ensure the adapter is ready to execute a method.
   * @param {string} method - Name of the method to check
   * @throws {Error} If adapter not loaded or method not implemented
   */
  ensure_adapter_ready(method) {
    if (!this.adapter) {
      throw new Error("No adapter loaded.");
    }
    if (typeof this.adapter[method] !== "function") {
      throw new Error(`Adapter does not implement method: ${method}`);
    }
  }
  /**
   * Invoke a method on the current adapter.
   * @async
   * @param {string} method - Name of the method to call
   * @param {...any} args - Arguments to pass to the method
   * @returns {Promise<any>} Result from the adapter method
   * @throws {Error} If adapter not ready or method fails
   */
  async invoke_adapter_method(method, ...args) {
    this.ensure_adapter_ready(method);
    return await this.adapter[method](...args);
  }
  /**
   * Get platforms as dropdown options.
   * @returns {Array<Object>} Array of {value, name} option objects
   */
  get_platforms_as_options() {
    return Object.entries(this.adapters).map(([key, AdapterClass]) => ({ value: key, name: AdapterClass.defaults.description || key }));
  }
  // SETTINGS
  /**
   * Get the settings configuration schema
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    return this.process_settings_config({
      adapter: {
        name: "Model Platform",
        type: "dropdown",
        description: "Select a model platform to use with Smart Model.",
        options_callback: "get_platforms_as_options",
        is_scope: true,
        // trigger re-render of settings when changed
        callback: "adapter_changed",
        default: "default"
      }
    });
  }
  /**
   * Process settings configuration with conditionals and prefixes.
   * @param {Object} _settings_config - Raw settings configuration
   * @param {string} [prefix] - Optional prefix for setting keys
   * @returns {Object} Processed settings configuration
   */
  process_settings_config(_settings_config, prefix = null) {
    return Object.entries(_settings_config).reduce((acc, [key, val]) => {
      const new_key = (prefix ? prefix + "." : "") + this.process_setting_key(key);
      acc[new_key] = val;
      return acc;
    }, {});
  }
  /**
   * Process an individual setting key.
   * Example: replace placeholders with actual adapter names.
   * @param {string} key - The setting key with placeholders.
   * @returns {string} Processed setting key.
   */
  process_setting_key(key) {
    return key.replace(/\[ADAPTER\]/g, this.adapter_name);
  }
  re_render_settings() {
    if (typeof this.opts.re_render_settings === "function") this.opts.re_render_settings();
    else console.warn("re_render_settings is not a function (must be passed in model opts)");
  }
  /**
   * Reload model.
   */
  reload_model() {
    if (typeof this.opts.reload_model === "function") this.opts.reload_model();
    else console.warn("reload_model is not a function (must be passed in model opts)");
  }
  adapter_changed() {
    this.reload_model();
    this.re_render_settings();
  }
  model_changed() {
    this.reload_model();
    this.re_render_settings();
  }
};

// node_modules/smart-chat-model/smart_chat_model.js
var SmartChatModel2 = class extends SmartModel2 {
  scope_name = "smart_chat_model";
  static defaults = {
    adapter: "openai"
  };
  /**
   * Create a SmartChatModel instance.
   * @param {Object} opts - Configuration options
   * @param {string} opts.adapter - Adapter to use
   * @param {Object} opts.adapters - Map of adapter names to adapter classes
   * @param {Object} opts.settings - Model settings configuration
   */
  constructor(opts = {}) {
    super(opts);
  }
  /**
   * Get available models.
   * @returns {Object} Map of model objects
   */
  get models() {
    return this.adapter.models;
  }
  get can_stream() {
    return this.adapter.constructor.defaults.streaming;
  }
  get can_use_tools() {
    return this.adapter.constructor.defaults.can_use_tools;
  }
  /**
   * Complete a chat request.
   * @param {Object} req - Request parameters
   * @returns {Promise<Object>} Completion result
   */
  async complete(req) {
    return await this.invoke_adapter_method("complete", req);
  }
  /**
   * Stream chat responses.
   * @param {Object} req - Request parameters
   * @param {Object} handlers - Event handlers for streaming
   * @param {Function} handlers.chunk - Handler for chunks: receives response object
   * @param {Function} handlers.error - Handler for errors: receives error object
   * @param {Function} handlers.done - Handler for completion: receives final response object
   * @returns {Promise<string>} Complete response text
   */
  async stream(req, handlers = {}) {
    return await this.invoke_adapter_method("stream", req, handlers);
  }
  /**
   * Stop active stream.
   */
  stop_stream() {
    this.invoke_adapter_method("stop_stream");
  }
  /**
   * Count tokens in input text.
   * @param {string|Object} input - Text to count tokens for
   * @returns {Promise<number>} Token count
   */
  async count_tokens(input) {
    return await this.invoke_adapter_method("count_tokens", input);
  }
  /**
   * Test if API key is valid.
   * @returns {Promise<boolean>} True if API key is valid
   */
  async test_api_key() {
    await this.invoke_adapter_method("test_api_key");
    this.re_render_settings();
  }
  /**
   * Get default model key.
   * @returns {string} Default model key
   */
  get default_model_key() {
    return this.adapter.constructor.defaults.default_model;
  }
  /**
   * Get current settings.
   * @returns {Object} Settings object
   */
  get settings() {
    return this.opts.settings;
  }
  /**
   * Get settings configuration.
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    const _settings_config = {
      adapter: {
        name: "Chat Model Platform",
        type: "dropdown",
        description: "Select a platform/provider for chat models.",
        options_callback: "get_platforms_as_options",
        is_scope: true,
        // trigger re-render of settings when changed
        callback: "adapter_changed"
      },
      // Merge adapter-specific settings
      ...this.adapter.settings_config || {}
    };
    return this.process_settings_config(_settings_config);
  }
  /**
   * Process setting key.
   * @param {string} key - Setting key
   * @returns {string} Processed key
   */
  process_setting_key(key) {
    return key.replace(/\[CHAT_ADAPTER\]/g, this.adapter_name);
  }
  /**
   * Validate the adapter configuration.
   * @returns {Object} Validation result with 'valid' and 'message'.
   */
  validate_config() {
    return this.adapter.validate_config();
  }
};

// node_modules/smart-http-request/smart_http_request.js
var SmartHttpRequest2 = class {
  /**
   * @param {object} opts - Options for the SmartHttpRequest class
   * @param {SmartHttpRequestAdapter} opts.adapter - The adapter constructor to use for making HTTP requests
   * @param {Obsidian.requestUrl} opts.obsidian_request_adapter - For use with Obsidian adapter
   */
  constructor(opts = {}) {
    this.opts = opts;
    if (!opts.adapter) throw new Error("HttpRequestAdapter is required");
    this.adapter = new opts.adapter(this);
  }
  /**
   * Returns a well-formed response object
   * @param {object} request_params - Parameters for the HTTP request
   * @param {string} request_params.url - The URL to make the request to
   * @param {string} [request_params.method='GET'] - The HTTP method to use
   * @param {object} [request_params.headers] - Headers to include in the request
   * @param {*} [request_params.body] - The body of the request (for POST, PUT, etc.)
   * @returns {SmartHttpResponseAdapter} instance of the SmartHttpResponseAdapter class
   * @example
   * const response = await smart_http_request.request({
   *   url: 'https://api.example.com/data',
   *   method: 'GET',
   *   headers: { 'Content-Type': 'application/json' }
   * });
   * console.log(await response.json());
   */
  async request(request_params) {
    return await this.adapter.request(request_params);
  }
};

// node_modules/smart-http-request/adapters/_adapter.js
var SmartHttpRequestAdapter2 = class {
  constructor(main) {
    this.main = main;
  }
  async request(request_params) {
    throw new Error("request not implemented");
  }
};
var SmartHttpResponseAdapter2 = class {
  constructor(response) {
    this.response = response;
  }
  async headers() {
    throw new Error("headers not implemented");
  }
  async json() {
    throw new Error("json not implemented");
  }
  async status() {
    throw new Error("status not implemented");
  }
  async text() {
    throw new Error("text not implemented");
  }
};

// node_modules/smart-http-request/adapters/obsidian.js
var SmartHttpObsidianRequestAdapter2 = class extends SmartHttpRequestAdapter2 {
  async request(request_params) {
    let response;
    try {
      if (!this.main.opts.obsidian_request_url) {
        throw new Error("obsidian_request_url is required in SmartHttp constructor opts");
      }
      response = await this.main.opts.obsidian_request_url({ ...request_params, throw: false });
      if (response.status === 400) throw new Error("Obsidian request failed");
      return new SmartHttpObsidianResponseAdapter2(response);
    } catch (error) {
      console.error("Error in SmartHttpObsidianRequestAdapter.request():");
      console.error(JSON.stringify(request_params, null, 2));
      console.error(response);
      console.error(error);
      return null;
    }
  }
};
var SmartHttpObsidianResponseAdapter2 = class extends SmartHttpResponseAdapter2 {
  async status() {
    return this.response.status;
  }
  async json() {
    return await this.response.json;
  }
  async text() {
    return await this.response.text;
  }
  async headers() {
    return this.response.headers;
  }
};

// node_modules/smart-http-request/adapters/fetch.js
var SmartHttpRequestFetchAdapter2 = class extends SmartHttpRequestAdapter2 {
  async request(request_params) {
    const { url, ...opts } = request_params;
    const resp = await fetch(url, opts);
    return new SmartHttpResponseFetchAdapter2(resp);
  }
};
var SmartHttpResponseFetchAdapter2 = class extends SmartHttpResponseAdapter2 {
  async headers() {
    return this.response.headers;
  }
  async json() {
    if (!this._json) {
      this._json = await this.response.json();
    }
    return this._json;
  }
  async status() {
    return this.response.status;
  }
  async text() {
    if (!this._text) {
      this._text = await this.response.text();
    }
    return this._text;
  }
};

// node_modules/smart-chat-model/streamer.js
var SmartStreamer2 = class {
  constructor(url, options = {}) {
    const {
      method = "GET",
      headers = {},
      body = null,
      withCredentials = false
    } = options;
    this.url = url;
    this.method = method;
    this.headers = headers;
    this.body = body;
    this.withCredentials = withCredentials;
    this.listeners = {};
    this.readyState = this.CONNECTING;
    this.progress = 0;
    this.chunk = "";
    this.last_event_id = "";
    this.xhr = null;
    this.FIELD_SEPARATOR = ":";
    this.INITIALIZING = -1;
    this.CONNECTING = 0;
    this.OPEN = 1;
    this.CLOSED = 2;
    this.chunk_accumulator = "";
    this.chunk_splitting_regex = options.chunk_splitting_regex || /(\r\n|\n|\r)/g;
  }
  /**
   * Adds an event listener for the specified event type.
   *
   * @param {string} type - The type of the event.
   * @param {Function} listener - The listener function to be called when the event is triggered.
   */
  addEventListener(type, listener) {
    if (!this.listeners[type]) this.listeners[type] = [];
    if (!this.listeners[type].includes(listener)) this.listeners[type].push(listener);
  }
  /**
   * Removes an event listener from the SmartStreamer instance.
   *
   * @param {string} type - The type of event to remove the listener from.
   * @param {Function} listener - The listener function to remove.
   */
  removeEventListener(type, listener) {
    if (!this.listeners[type]) return;
    this.listeners[type] = this.listeners[type].filter((callback) => callback !== listener);
    if (this.listeners[type].length === 0) delete this.listeners[type];
  }
  /**
   * Dispatches an event to the appropriate event handlers.
   *
   * @param {Event} event - The event to be dispatched.
   * @returns {boolean} - Returns true if the event was successfully dispatched, false otherwise.
   */
  dispatchEvent(event) {
    if (!event) return true;
    event.source = this;
    const onHandler = "on" + event.type;
    if (Object.prototype.hasOwnProperty.call(this, onHandler)) {
      this[onHandler].call(this, event);
      if (event.defaultPrevented) return false;
    }
    if (this.listeners[event.type]) {
      this.listeners[event.type].forEach((callback) => {
        callback(event);
        return !event.defaultPrevented;
      });
    }
    return true;
  }
  /**
   * Initiates the streaming process.
   */
  stream() {
    this.#setReadyState(this.CONNECTING);
    this.xhr = new XMLHttpRequest();
    this.xhr.addEventListener("progress", this.#onStreamProgress.bind(this));
    this.xhr.addEventListener("load", this.#onStreamLoaded.bind(this));
    this.xhr.addEventListener("readystatechange", this.#checkStreamClosed.bind(this));
    this.xhr.addEventListener("error", this.#onStreamFailure.bind(this));
    this.xhr.addEventListener("abort", this.#onStreamAbort.bind(this));
    this.xhr.open(this.method, this.url);
    for (const header in this.headers) {
      this.xhr.setRequestHeader(header, this.headers[header]);
    }
    if (this.last_event_id) this.xhr.setRequestHeader("Last-Event-ID", this.last_event_id);
    this.xhr.withCredentials = this.withCredentials;
    this.xhr.send(this.body);
  }
  /**
   * Ends the streamer connection.
   * Aborts the current XHR request and sets the ready state to CLOSED.
   */
  end() {
    if (this.readyState === this.CLOSED) return;
    this.xhr.abort();
    this.xhr = null;
    this.#setReadyState(this.CLOSED);
  }
  // private methods
  #setReadyState(state) {
    const event = new CustomEvent("readyStateChange");
    event.readyState = state;
    this.readyState = state;
    this.dispatchEvent(event);
  }
  #onStreamFailure(e) {
    const event = new CustomEvent("error");
    event.data = e.currentTarget.response;
    this.dispatchEvent(event);
    this.end();
  }
  #onStreamAbort(e) {
    const event = new CustomEvent("abort");
    this.end();
  }
  #onStreamProgress(e) {
    if (!this.xhr) return;
    if (this.xhr.status !== 200) {
      this.#onStreamFailure(e);
      return;
    }
    if (this.readyState === this.CONNECTING) {
      this.dispatchEvent(new CustomEvent("open"));
      this.#setReadyState(this.OPEN);
    }
    const data = this.xhr.responseText.substring(this.progress);
    this.progress += data.length;
    const parts = data.split(this.chunk_splitting_regex);
    parts.forEach((part, index) => {
      if (part.trim().length === 0) {
        if (this.chunk) {
          this.dispatchEvent(this.#parseEventChunk(this.chunk.trim()));
          this.chunk = "";
        }
      } else {
        this.chunk += part;
        if (index === parts.length - 1 && this.xhr.readyState === XMLHttpRequest.DONE) {
          this.dispatchEvent(this.#parseEventChunk(this.chunk.trim()));
          this.chunk = "";
        }
      }
    });
  }
  #onStreamLoaded(e) {
    this.#onStreamProgress(e);
    this.dispatchEvent(this.#parseEventChunk(this.chunk));
    this.chunk = "";
  }
  #parseEventChunk(chunk) {
    if (!chunk) return console.log("no chunk");
    const event = new CustomEvent("message");
    event.data = chunk;
    event.last_event_id = this.last_event_id;
    return event;
  }
  #checkStreamClosed() {
    if (!this.xhr) return;
    if (this.xhr.readyState === XMLHttpRequest.DONE) this.#setReadyState(this.CLOSED);
  }
};

// node_modules/smart-model/adapters/_adapter.js
var SmartModelAdapter2 = class {
  /**
   * Create a SmartModelAdapter instance.
   * @param {SmartModel} model - The parent SmartModel instance
   */
  constructor(model) {
    this.model = model;
    this.state = "unloaded";
  }
  /**
   * Load the adapter.
   * @async
   * @returns {Promise<void>}
   */
  async load() {
    this.set_state("loaded");
  }
  /**
   * Unload the adapter.
   * @returns {void}
   */
  unload() {
    this.set_state("unloaded");
  }
  /**
   * Get all settings.
   * @returns {Object} All settings
   */
  get settings() {
    return this.model.settings;
  }
  /**
   * Get the current model key.
   * @returns {string} Current model identifier
   */
  get model_key() {
    return this.model.model_key;
  }
  /**
   * Get the current model configuration.
   * @returns {Object} Model configuration
   */
  get model_config() {
    return this.model.model_config;
  }
  /**
   * Get model-specific settings.
   * @returns {Object} Settings for current model
   */
  get model_settings() {
    return this.model.model_settings;
  }
  /**
   * Get adapter-specific configuration.
   * @returns {Object} Adapter configuration
   */
  get adapter_config() {
    return this.model.adapter_config;
  }
  /**
   * Get adapter-specific settings.
   * @returns {Object} Adapter settings
   */
  get adapter_settings() {
    return this.model.adapter_settings;
  }
  /**
   * Get the models.
   * @returns {Object} Map of model objects
   */
  get models() {
    if (typeof this.adapter_config.models === "object" && Object.keys(this.adapter_config.models || {}).length > 0) return this.adapter_config.models;
    else {
      return {};
    }
  }
  /**
   * Get available models from the API.
   * @abstract
   * @param {boolean} [refresh=false] - Whether to refresh cached models
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models(refresh = false) {
    throw new Error("get_models not implemented");
  }
  /**
   * Validate the parameters for get_models.
   * @returns {boolean|Array<Object>} True if parameters are valid, otherwise an array of error objects
   */
  validate_get_models_params() {
    return true;
  }
  /**
   * Get available models as dropdown options synchronously.
   * @returns {Array<Object>} Array of model options.
   */
  get_models_as_options() {
    const models = this.models;
    const params_valid = this.validate_get_models_params();
    if (params_valid !== true) return params_valid;
    if (!Object.keys(models || {}).length) {
      this.get_models(true);
      return [{ value: "", name: "No models currently available" }];
    }
    return Object.entries(models).map(([id, model]) => ({ value: id, name: model.name || id })).sort((a, b) => a.name.localeCompare(b.name));
  }
  /**
   * Set the adapter's state.
   * @deprecated should be handled in SmartModel (only handle once)
   * @param {('unloaded'|'loading'|'loaded'|'unloading')} new_state - The new state
   * @throws {Error} If the state is invalid
   */
  set_state(new_state) {
    const valid_states = ["unloaded", "loading", "loaded", "unloading"];
    if (!valid_states.includes(new_state)) {
      throw new Error(`Invalid state: ${new_state}`);
    }
    this.state = new_state;
  }
  // Replace individual state getters/setters with a unified state management
  get is_loading() {
    return this.state === "loading";
  }
  get is_loaded() {
    return this.state === "loaded";
  }
  get is_unloading() {
    return this.state === "unloading";
  }
  get is_unloaded() {
    return this.state === "unloaded";
  }
};

// node_modules/smart-chat-model/adapters/_adapter.js
var SmartChatModelAdapter2 = class extends SmartModelAdapter2 {
  /**
   * @override in sub-class with adapter-specific default configurations
   * @property {string} id - The adapter identifier
   * @property {string} description - Human-readable description
   * @property {string} type - Adapter type ("API")
   * @property {string} endpoint - API endpoint
   * @property {boolean} streaming - Whether streaming is supported
   * @property {string} adapter - Adapter identifier
   * @property {string} models_endpoint - Endpoint for retrieving models
   * @property {string} default_model - Default model to use
   * @property {string} signup_url - URL for API key signup
   */
  static defaults = {};
  /**
   * Create a SmartChatModelAdapter instance.
   * @param {SmartChatModel} model - The parent SmartChatModel instance
   */
  constructor(model) {
    super(model);
    this.smart_chat = model;
    this.main = model;
  }
  /**
   * Complete a chat request.
   * @abstract
   * @param {Object} req - Request parameters
   * @returns {Promise<Object>} Completion result
   */
  async complete(req) {
    throw new Error("complete not implemented");
  }
  /**
   * Count tokens in input text.
   * @abstract
   * @param {string|Object} input - Text to count tokens for
   * @returns {Promise<number>} Token count
   */
  async count_tokens(input) {
    throw new Error("count_tokens not implemented");
  }
  /**
   * Stream chat responses.
   * @abstract
   * @param {Object} req - Request parameters
   * @param {Object} handlers - Event handlers for streaming
   * @returns {Promise<string>} Complete response text
   */
  async stream(req, handlers = {}) {
    throw new Error("stream not implemented");
  }
  /**
   * Test if API key is valid.
   * @abstract
   * @returns {Promise<boolean>} True if API key is valid
   */
  async test_api_key() {
    throw new Error("test_api_key not implemented");
  }
  /**
   * Refresh available models.
   */
  refresh_models() {
    console.log("refresh_models");
    this.get_models(true);
  }
  /**
   * Get settings configuration.
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    return {
      "[CHAT_ADAPTER].model_key": {
        name: "Chat Model",
        type: "dropdown",
        description: "Select a chat model.",
        options_callback: "adapter.get_models_as_options",
        callback: "reload_model",
        default: this.constructor.defaults.default_model
      },
      "[CHAT_ADAPTER].refresh_models": {
        name: "Refresh Models",
        type: "button",
        description: "Refresh the list of available models.",
        callback: "adapter.refresh_models"
      }
    };
  }
  /**
   * Validate the adapter configuration.
   * @abstract
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    throw new Error("validate_config not implemented");
  }
  get can_use_tools() {
    return this.model_config?.can_use_tools || false;
  }
};

// node_modules/smart-chat-model/adapters/_api.js
var MODEL_ADAPTER_CACHE2 = {};
var MODELS_DEV_CACHE2 = { data: null, fetched_at: 0 };
var SmartChatModelApiAdapter2 = class extends SmartChatModelAdapter2 {
  constructor(model) {
    super(model);
    this.model_data_loaded_at = 0;
  }
  /**
   * Get the request adapter class.
   * @returns {SmartChatModelRequestAdapter} The request adapter class
   */
  get req_adapter() {
    return SmartChatModelRequestAdapter2;
  }
  /**
   * Get the response adapter class.
   * @returns {SmartChatModelResponseAdapter} The response adapter class
   */
  get res_adapter() {
    return SmartChatModelResponseAdapter2;
  }
  /**
   * Get or initialize the HTTP adapter.
   * @returns {SmartHttpRequest} The HTTP adapter instance
   */
  get http_adapter() {
    if (!this._http_adapter) {
      if (this.model.opts.http_adapter) this._http_adapter = this.model.opts.http_adapter;
      else this._http_adapter = new SmartHttpRequest2({ adapter: SmartHttpRequestFetchAdapter2 });
    }
    return this._http_adapter;
  }
  /**
   * Get the settings configuration for the API adapter.
   * @returns {Object} Settings configuration object with API key and other settings
   */
  get settings_config() {
    return {
      ...super.settings_config,
      "[CHAT_ADAPTER].api_key": {
        name: "API Key",
        type: "password",
        description: "Enter your API key for the chat model platform.",
        callback: "test_api_key",
        is_scope: true
        // trigger re-render of settings when changed (reload models dropdown)
      }
    };
  }
  /**
   * Count tokens in the input text.
   * @abstract
   * @param {string|Object} input - Text or message object to count tokens for
   * @returns {Promise<number>} Number of tokens in the input
   */
  async count_tokens(input) {
    throw new Error("count_tokens not implemented");
  }
  /**
   * Get the parameters for requesting available models.
   * @returns {Object} Request parameters for models endpoint
   */
  get models_request_params() {
    return {
      url: this.models_endpoint,
      method: this.models_endpoint_method,
      headers: {
        "Authorization": `Bearer ${this.api_key}`
      }
    };
  }
  /**
   * Validate parameters required for getting models.
   * @returns {true|Array<Object>} True if valid, array of error objects if invalid
   */
  validate_get_models_params() {
    if (!this.adapter_config.models_endpoint) {
      const err_msg = `${this.model.adapter_name} models endpoint required to retrieve models`;
      console.warn(err_msg);
      return [{ value: "", name: err_msg }];
    }
    if (!this.api_key) {
      const err_msg = `${this.model.adapter_name} API key required to retrieve models`;
      console.warn(err_msg);
      return [{ value: "", name: err_msg }];
    }
    return true;
  }
  async get_enriched_model_data() {
    const provider_key = this.constructor.key;
    await this.get_models_dev_index();
    const provider_data = MODELS_DEV_CACHE2.data[provider_key] || {};
    const get_limit_i = (model) => model.limit?.context || 1e4;
    const get_limit_o = (model) => model.limit?.output || 1e4;
    const get_multimodal = (model) => model.modalities?.input?.includes("image") || false;
    if (Object.keys(this.model_data || {}).length > 0) {
      for (const [key, model] of Object.entries(this.model_data)) {
        const enriched = provider_data?.models?.[model.id];
        if (!enriched) continue;
        this.model_data[key].models_dev = enriched;
        this.model_data[key].name = enriched.name || model.name;
        this.model_data[key].max_input_tokens = get_limit_i(enriched);
        this.model_data[key].max_output_tokens = get_limit_o(enriched);
        this.model_data[key].multimodal = get_multimodal(enriched);
        this.model_data[key].can_use_tools = enriched.tool_call;
        this.model_data[key].cost = enriched.cost;
      }
    } else {
      for (const [key, model] of Object.entries(provider_data?.models || {})) {
        this.model_data[key] = {
          ...model,
          model_name: model.name,
          description: model.name,
          max_input_tokens: get_limit_i(model),
          max_output_tokens: get_limit_o(model),
          multimodal: get_multimodal(model),
          can_use_tools: model.tool_call
        };
      }
    }
    return this.model_data;
  }
  valid_model_data() {
    return typeof this.model_data === "object" && Object.keys(this.model_data || {}).length > 0 && this.model_data_loaded_at && Date.now() - this.model_data_loaded_at < 1 * 60 * 60 * 1e3;
  }
  /**
   * Get available models from the API.
   * @param {boolean} [refresh=false] - Whether to refresh cached models
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models(refresh = false) {
    if (!refresh && this.valid_model_data()) return this.model_data;
    if (this.api_key) {
      let response;
      try {
        response = await this.http_adapter.request(this.models_request_params);
        this.model_data = this.parse_model_data(await response.json());
      } catch (error) {
        console.error("Failed to fetch model data:", { error, response });
      }
    }
    this.model_data = await this.get_enriched_model_data();
    this.model_data_loaded_at = Date.now();
    this.adapter_settings.models = this.model_data;
    if (this.valid_model_data()) setTimeout(() => {
      this.model.re_render_settings();
    }, 100);
    else console.warn("Invalid model data, not re-rendering settings");
    return this.model_data;
  }
  /**
   * Parses the raw model data from OpenAI API and transforms it into a more usable format.
   * @param {Object} model_data - The raw model data received from OpenAI API.
   * @returns {Array<Object>} An array of parsed model objects with the following properties:
   *   @property {string} model_name - The name/ID of the model as returned by the API.
   *   @property {string} id - The id used to identify the model (usually same as model_name).
   *   @property {boolean} multimodal - Indicates if the model supports multimodal inputs.
   *   @property {number} [max_input_tokens] - The maximum number of input tokens the model can process.
   *   @property {string} [description] - A description of the model's context and output capabilities.
   */
  parse_model_data(model_data) {
    throw new Error("parse_model_data not implemented");
  }
  /**
   * Complete a chat request.
   * @param {Object} req - Request parameters
   * @returns {Promise<Object>} Completion response in OpenAI format
   */
  async complete(req) {
    const _req = new this.req_adapter(this, {
      ...req,
      stream: false
    });
    const request_params = _req.to_platform();
    const http_resp = await this.http_adapter.request(request_params);
    if (!http_resp) return null;
    const _res = new this.res_adapter(this, await http_resp.json());
    try {
      return _res.to_openai();
    } catch (error) {
      console.error("Error in SmartChatModelApiAdapter.complete():", error);
      console.error(http_resp);
      return null;
    }
  }
  // STREAMING
  /**
  * Stream chat responses.
  * @param {Object} req - Request parameters
  * @param {Object} handlers - Event handlers for streaming
  * @param {Function} handlers.chunk - Handler for response objects
  * @param {Function} handlers.error - Handler for errors
  * @param {Function} handlers.done - Handler for completion
  * @returns {Promise<Object>} Complete response object
  */
  async stream(req, handlers = {}) {
    const _req = new this.req_adapter(this, req);
    const request_params = _req.to_platform(true);
    if (this.streaming_chunk_splitting_regex) request_params.chunk_splitting_regex = this.streaming_chunk_splitting_regex;
    return await new Promise((resolve, reject) => {
      try {
        this.active_stream = new SmartStreamer2(this.endpoint_streaming, request_params);
        const resp_adapter = new this.res_adapter(this);
        this.active_stream.addEventListener("message", async (e) => {
          if (this.is_end_of_stream(e)) {
            await resp_adapter.handle_chunk(e.data);
            this.stop_stream();
            const final_resp = resp_adapter.to_openai();
            handlers.done && await handlers.done(final_resp);
            resolve(final_resp);
            return;
          }
          try {
            resp_adapter.handle_chunk(e.data);
            handlers.chunk && await handlers.chunk(resp_adapter.to_openai());
          } catch (error) {
            console.error("Error processing stream chunk:", error);
            handlers.error && handlers.error(e.data);
            this.stop_stream();
            reject(error);
          }
        });
        this.active_stream.addEventListener("error", (e) => {
          console.error("Stream error:", e);
          handlers.error && handlers.error("*API Error. See console logs for details.*");
          this.stop_stream();
          reject(e);
        });
        this.active_stream.stream();
      } catch (err) {
        console.error("Failed to start stream:", err);
        handlers.error && handlers.error("*API Error. See console logs for details.*");
        this.stop_stream();
        reject(err);
      }
    });
  }
  /**
   * Check if a stream event indicates end of stream.
   * @param {Event} event - Stream event
   * @returns {boolean} True if end of stream
   */
  is_end_of_stream(event) {
    return event.data === "data: [DONE]";
  }
  /**
   * Stop active stream.
   */
  stop_stream() {
    if (this.active_stream) {
      this.active_stream.end();
      this.active_stream = null;
    }
  }
  /**
   * Validate Anthropic adapter configuration.
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    if (!this.adapter_config.model_key || this.adapter_config.model_key === "undefined") return { valid: false, message: "No model selected." };
    if (!this.api_key) {
      return { valid: false, message: "API key is missing." };
    }
    if (!this.can_use_tools) {
      return { valid: false, message: "Selected model does not support tools." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
  /**
   * Get the API key.
   * @returns {string} The API key.
   */
  get api_key() {
    return this.main.opts.api_key || this.adapter_config?.api_key;
  }
  /**
  
     * Get the number of choices.
     * @returns {number} The number of choices.
     */
  get choices() {
    return this.adapter_config.choices;
  }
  get models_endpoint() {
    return this.adapter_config.models_endpoint;
  }
  get models_endpoint_method() {
    return "POST";
  }
  /**
   * Get the endpoint URL.
   * @returns {string} The endpoint URL.
   */
  get endpoint() {
    return this.adapter_config.endpoint;
  }
  /**
   * Get the streaming endpoint URL.
   * @returns {string} The streaming endpoint URL.
   */
  get endpoint_streaming() {
    return this.adapter_config.endpoint_streaming || this.endpoint;
  }
  /**
   * Get the maximum output tokens.
   * @returns {number} The maximum output tokens.
   */
  get max_output_tokens() {
    return this.adapter_config.max_output_tokens || 3e3;
  }
  /**
   * Get the temperature.
   * @returns {number} The temperature.
   */
  get temperature() {
    return this.adapter_config.temperature;
  }
  async get_models_dev_index(ttl_ms = 60 * 60 * 1e3) {
    const now = Date.now();
    if (MODELS_DEV_CACHE2?.data && now - MODELS_DEV_CACHE2?.fetched_at < ttl_ms) {
      return MODELS_DEV_CACHE2.data;
    }
    try {
      const req = {
        url: "https://models.dev/api.json",
        method: "GET",
        headers: { "Content-Type": "application/json" }
      };
      const resp = await this.http_adapter.request(req);
      const data = await resp.json();
      MODELS_DEV_CACHE2.data = data;
      MODELS_DEV_CACHE2.fetched_at = now;
      return data;
    } catch (err) {
      console.warn("models.dev fetch failed; continuing without enrichment", err);
      return MODELS_DEV_CACHE2.data || [];
    }
  }
  /**
   * Get available models as dropdown options synchronously.
   * @returns {Array<Object>} Array of model options.
   */
  get_models_as_options() {
    if (Object.keys(this.model_data || {}).length) {
      return Object.entries(this.model_data).map(([id, model]) => ({ value: id, name: model.name || id })).sort((a, b) => a.name.localeCompare(b.name));
    }
    this.get_models(true);
    return [{ value: "", name: "No models currently available" }];
  }
  get model_data() {
    if (!MODEL_ADAPTER_CACHE2[this.constructor.key]) MODEL_ADAPTER_CACHE2[this.constructor.key] = {};
    return MODEL_ADAPTER_CACHE2[this.constructor.key];
  }
  set model_data(data) {
    if (!MODEL_ADAPTER_CACHE2[this.constructor.key]) MODEL_ADAPTER_CACHE2[this.constructor.key] = {};
    MODEL_ADAPTER_CACHE2[this.constructor.key] = data;
  }
};
var SmartChatModelRequestAdapter2 = class {
  /**
   * @constructor
   * @param {SmartChatModelAdapter} adapter - The SmartChatModelAdapter instance
   * @param {Object} req - The incoming request object
   */
  constructor(adapter, req = {}) {
    this.adapter = adapter;
    this._req = req;
  }
  /**
   * Get the messages array from the request
   * @returns {Array<Object>} Array of message objects
   */
  get messages() {
    return this._req.messages || [];
  }
  /**
   * Get the model identifier
   * @returns {string} Model ID
   */
  get model() {
    return this._req.model || this.adapter.model_config.id;
  }
  /**
   * Get the temperature setting
   * @returns {number} Temperature value
   */
  get temperature() {
    return this._req.temperature;
  }
  /**
   * Get the maximum tokens setting
   * @returns {number} Max tokens value
   */
  get max_tokens() {
    return this._req.max_tokens || this.adapter.model_config.max_output_tokens;
  }
  /**
   * Get the streaming flag
   * @returns {boolean} Whether to stream responses
   */
  get stream() {
    return this._req.stream;
  }
  /**
   * Get the tools array
   * @returns {Array<Object>|null} Array of tool objects or null
   */
  get tools() {
    return this._req.tools || null;
  }
  /**
   * Get the tool choice setting
   * @returns {string|Object|null} Tool choice configuration
   */
  get tool_choice() {
    return this._req.tool_choice || null;
  }
  get frequency_penalty() {
    return this._req.frequency_penalty;
  }
  get presence_penalty() {
    return this._req.presence_penalty;
  }
  get top_p() {
    return this._req.top_p;
  }
  /**
   * Get request headers
   * @returns {Object} Headers object
   */
  get_headers() {
    const headers = {
      "Content-Type": "application/json",
      ...this.adapter.adapter_config.headers || {}
    };
    if (this.adapter.adapter_config.api_key_header !== "none") {
      if (this.adapter.adapter_config.api_key_header) {
        headers[this.adapter.adapter_config.api_key_header] = this.adapter.api_key;
      } else if (this.adapter.api_key) {
        headers["Authorization"] = `Bearer ${this.adapter.api_key}`;
      }
    }
    return headers;
  }
  /**
   * Convert request to platform-specific format
   * @returns {Object} Platform-specific request parameters
   */
  to_platform(streaming = false) {
    return this.to_openai(streaming);
  }
  /**
   * Convert request to OpenAI format
   * @returns {Object} Request parameters in OpenAI format
   */
  to_openai(streaming = false) {
    const body = {
      messages: this._transform_messages_to_openai(),
      model: this.model,
      // TODO max_completion_tokens
      temperature: this.temperature,
      stream: streaming,
      ...this.tools && { tools: this._transform_tools_to_openai() }
    };
    if (body.tools?.length > 0 && this.tool_choice && this.tool_choice !== "none") {
      body.tool_choice = this.tool_choice;
    }
    if (this.model?.startsWith("o1-")) {
      body.messages = body.messages.filter((m) => m.role !== "system");
      delete body.temperature;
    }
    if (typeof this._req.top_p === "number") body.top_p = this._req.top_p;
    if (typeof this._req.presence_penalty === "number") body.presence_penalty = this._req.presence_penalty;
    if (typeof this._req.frequency_penalty === "number") body.frequency_penalty = this._req.frequency_penalty;
    return {
      url: this.adapter.endpoint,
      method: "POST",
      headers: this.get_headers(),
      body: JSON.stringify(body)
    };
  }
  /**
   * Transform messages to OpenAI format
   * @returns {Array<Object>} Transformed messages array
   * @private
   */
  _transform_messages_to_openai() {
    return this.messages.map((message) => this._transform_single_message_to_openai(message));
  }
  /**
   * Transform a single message to OpenAI format
   * @param {Object} message - Message object to transform
   * @returns {Object} Transformed message object
   * @private
   */
  _transform_single_message_to_openai(message) {
    const transformed = {
      role: this._get_openai_role(message.role),
      content: this._get_openai_content(message)
    };
    if (message.name) transformed.name = message.name;
    if (message.tool_calls) transformed.tool_calls = this._transform_tool_calls_to_openai(message.tool_calls);
    if (message.image_url) transformed.image_url = message.image_url;
    if (message.tool_call_id) transformed.tool_call_id = message.tool_call_id;
    return transformed;
  }
  /**
   * Get the OpenAI role for a given role.
   * @param {string} role - The role to transform.
   * @returns {string} The transformed role.
   * @private
   */
  _get_openai_role(role) {
    return role;
  }
  /**
   * Get the OpenAI content for a given content.
   * @param {string} content - The content to transform.
   * @returns {string} The transformed content.
   * @private
   */
  _get_openai_content(message) {
    return message.content;
  }
  /**
   * Transform tool calls to OpenAI format.
   * @param {Array} tool_calls - Array of tool call objects.
   * @returns {Array} Transformed tool calls array.
   * @private
   */
  _transform_tool_calls_to_openai(tool_calls) {
    return tool_calls.map((tool_call) => ({
      id: tool_call.id,
      type: tool_call.type,
      function: {
        name: tool_call.function.name,
        arguments: tool_call.function.arguments
      }
    }));
  }
  /**
   * Transform tools to OpenAI format.
   * @returns {Array} Transformed tools array.
   * @private
   */
  _transform_tools_to_openai() {
    return this.tools.map((tool2) => ({
      type: tool2.type,
      function: {
        name: tool2.function.name,
        description: tool2.function.description,
        parameters: tool2.function.parameters
      }
    }));
  }
};
var SmartChatModelResponseAdapter2 = class {
  // must be getter to prevent erroneous assignment
  static get platform_res() {
    return {
      id: "",
      object: "chat.completion",
      created: 0,
      model: "",
      choices: [],
      usage: {}
    };
  }
  /**
   * @constructor
   * @param {SmartChatModelAdapter} adapter - The SmartChatModelAdapter instance
   * @param {Object} res - The response object
   */
  constructor(adapter, res) {
    this.adapter = adapter;
    this._res = res || this.constructor.platform_res;
  }
  /**
   * Get response ID
   * @returns {string|null} Response ID
   */
  get id() {
    return this._res.id || null;
  }
  /**
   * Get response object type
   * @returns {string|null} Object type
   */
  get object() {
    return this._res.object || null;
  }
  /**
   * Get creation timestamp
   * @returns {number|null} Creation timestamp
   */
  get created() {
    return this._res.created || null;
  }
  /**
   * Get response choices
   * @returns {Array<Object>} Array of choice objects
   */
  get choices() {
    return this._res.choices || [];
  }
  /**
   * Get first tool call if present
   * @returns {Object|null} Tool call object
   */
  get tool_call() {
    return this.message.tool_calls?.[0] || null;
  }
  /**
   * Get tool name from first tool call
   * @returns {string|null} Tool name
   */
  get tool_name() {
    return this.tool_call?.tool_name || null;
  }
  /**
   * Get tool call parameters
   * @returns {Object|null} Tool parameters
   */
  get tool_call_content() {
    return this.tool_call?.parameters || null;
  }
  /**
   * Get token usage statistics
   * @returns {Object|null} Usage statistics
   */
  get usage() {
    return this._res.usage || null;
  }
  get error() {
    return this._res.error || null;
  }
  /**
   * Convert response to OpenAI format
   * @returns {Object} Response in OpenAI format
   */
  to_openai() {
    const res = {
      id: this.id,
      object: this.object,
      created: this.created,
      choices: this._transform_choices_to_openai(),
      usage: this._transform_usage_to_openai(),
      raw: this._res
    };
    if (this.error) res.error = this.error;
    return res;
  }
  /**
   * Parse chunk adds delta to content as expected output format
   */
  handle_chunk(chunk) {
    if (chunk === "data: [DONE]") return;
    chunk = JSON.parse(chunk.split("data: ")[1] || "{}");
    if (Object.keys(chunk).length === 0) return;
    if (!this._res.choices[0]) {
      this._res.choices.push({
        message: {
          index: 0,
          role: "assistant",
          content: ""
        }
      });
    }
    if (!this._res.id) {
      this._res.id = chunk.id;
    }
    if (chunk.choices?.[0]?.delta?.content) {
      this._res.choices[0].message.content += chunk.choices[0].delta.content;
    }
    if (chunk.choices?.[0]?.delta?.tool_calls) {
      if (!this._res.choices[0].message.tool_calls) {
        this._res.choices[0].message.tool_calls = [{
          id: "",
          type: "function",
          function: {
            name: "",
            arguments: ""
          }
        }];
      }
      if (chunk.choices[0].delta.tool_calls[0].id) {
        this._res.choices[0].message.tool_calls[0].id += chunk.choices[0].delta.tool_calls[0].id;
      }
      if (chunk.choices[0].delta.tool_calls[0].function.name) {
        this._res.choices[0].message.tool_calls[0].function.name += chunk.choices[0].delta.tool_calls[0].function.name;
      }
      if (chunk.choices[0].delta.tool_calls[0].function.arguments) {
        this._res.choices[0].message.tool_calls[0].function.arguments += chunk.choices[0].delta.tool_calls[0].function.arguments;
      }
    }
  }
  /**
   * Transform choices to OpenAI format.
   * @returns {Array} Transformed choices array.
   * @private
   */
  _transform_choices_to_openai() {
    return this.choices.map((choice) => ({
      index: choice.index,
      message: this._transform_message_to_openai(choice.message),
      finish_reason: this._get_openai_finish_reason(choice.finish_reason)
    }));
  }
  /**
   * Transform a single message to OpenAI format.
   * @param {Object} message - The message object to transform.
   * @returns {Object} Transformed message object.
   * @private
   */
  _transform_message_to_openai(message = {}) {
    const transformed = {
      role: this._get_openai_role(message.role),
      content: this._get_openai_content(message)
    };
    if (message.name) transformed.name = message.name;
    if (message.tool_calls) transformed.tool_calls = this._transform_tool_calls_to_openai(message.tool_calls);
    if (message.image_url) transformed.image_url = message.image_url;
    return transformed;
  }
  /**
   * Get the OpenAI role for a given role.
   * @param {string} role - The role to transform.
   * @returns {string} The transformed role.
   * @private
   */
  _get_openai_role(role) {
    return role;
  }
  /**
   * Get the OpenAI content for a given content.
   * @param {string} content - The content to transform.
   * @returns {string} The transformed content.
   * @private
   */
  _get_openai_content(message) {
    return message.content;
  }
  /**
   * Get the OpenAI finish reason for a given finish reason.
   * @param {string} finish_reason - The finish reason to transform.
   * @returns {string} The transformed finish reason.
   * @private
   */
  _get_openai_finish_reason(finish_reason) {
    return finish_reason;
  }
  /**
   * Transform usage to OpenAI format.
   * @returns {Object} Transformed usage object.
   * @private
   */
  _transform_usage_to_openai() {
    return this.usage;
  }
  /**
   * Transform tool calls to OpenAI format.
   * @param {Array} tool_calls - Array of tool call objects.
   * @returns {Array} Transformed tool calls array.
   * @private
   */
  _transform_tool_calls_to_openai(tool_calls) {
    return tool_calls.map((tool_call) => ({
      id: tool_call.id,
      type: tool_call.type,
      function: {
        name: tool_call.function.name,
        arguments: tool_call.function.arguments
      }
    }));
  }
};

// node_modules/smart-chat-model/adapters/anthropic.js
var SmartChatModelAnthropicAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "anthropic";
  static defaults = {
    description: "Anthropic Claude",
    type: "API",
    endpoint: "https://api.anthropic.com/v1/messages",
    streaming: true,
    api_key_header: "x-api-key",
    headers: {
      "anthropic-version": "2023-06-01",
      "anthropic-beta": "tools-2024-04-04",
      "anthropic-dangerous-direct-browser-access": true
    },
    adapter: "Anthropic",
    models_endpoint: false,
    default_model: "claude-opus-4-1-20250805",
    signup_url: "https://console.anthropic.com/login?returnTo=%2Fsettings%2Fkeys",
    can_use_tools: true
  };
  /**
   * Get request adapter class
   * @returns {typeof SmartChatModelAnthropicRequestAdapter} Request adapter class
   */
  get req_adapter() {
    return SmartChatModelAnthropicRequestAdapter2;
  }
  /**
   * Get response adapter class
   * @returns {typeof SmartChatModelAnthropicResponseAdapter} Response adapter class
   */
  res_adapter = SmartChatModelAnthropicResponseAdapter2;
  /**
   * Validate parameters for getting models
   * @returns {boolean} Always true since models are hardcoded
   */
  validate_get_models_params() {
    return true;
  }
  /**
   * Get available models (hardcoded list) and enrich via models.dev
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models() {
    try {
      this.model_data = this.anthropic_models;
      this.model_data = await this.get_enriched_model_data();
      this.model_data_loaded_at = Date.now();
      this.adapter_settings.models = this.model_data;
      setTimeout(() => {
        this.model.re_render_settings();
      }, 100);
      return this.model_data;
    } catch {
      return this.anthropic_models;
    }
  }
  is_end_of_stream(event) {
    return event.data.includes("message_stop");
  }
  /**
   * Get hardcoded list of available models
   * @returns {Object} Map of model objects with capabilities and limits
   */
  get anthropic_models() {
    return {
      // ── Claude 4 family ──────────────────────────────────────────────────────
      "claude-opus-4-1-20250805": {
        name: "Claude Opus 4.1 (2025-08-05)",
        id: "claude-opus-4-1-20250805",
        model_name: "claude-opus-4-1-20250805",
        description: "Anthropic Claude Opus 4.1 snapshot (2025-08-05)",
        max_input_tokens: 2e5,
        max_output_tokens: 32e3,
        multimodal: true
      },
      "claude-opus-4-20250514": {
        name: "Claude Opus 4 (2025-05-14)",
        id: "claude-opus-4-20250514",
        model_name: "claude-opus-4-20250514",
        description: "Anthropic Claude Opus 4 snapshot (2025-05-14)",
        max_input_tokens: 2e5,
        max_output_tokens: 32e3,
        multimodal: true
      },
      "claude-sonnet-4-20250514": {
        name: "Claude Sonnet 4 (2025-05-14)",
        id: "claude-sonnet-4-20250514",
        model_name: "claude-sonnet-4-20250514",
        description: "Anthropic Claude Sonnet 4 snapshot (2025-05-14)",
        max_input_tokens: 2e5,
        max_output_tokens: 64e3,
        multimodal: true
      },
      // ── Claude 3.7 family ───────────────────────────────────────────────────
      "claude-3-7-sonnet-latest": {
        name: "Claude 3.7 Sonnet (latest)",
        id: "claude-3-7-sonnet-latest",
        model_name: "claude-3-7-sonnet-latest",
        description: "Anthropic Claude 3.7 Sonnet (rolling-latest)",
        max_input_tokens: 2e5,
        max_output_tokens: 64e3,
        multimodal: true
      },
      "claude-3-7-sonnet-20250219": {
        name: "Claude 3.7 Sonnet (2025-02-19)",
        id: "claude-3-7-sonnet-20250219",
        model_name: "claude-3-7-sonnet-20250219",
        description: "Anthropic Claude 3.7 Sonnet snapshot (2025-02-19)",
        max_input_tokens: 2e5,
        max_output_tokens: 64e3,
        multimodal: true
      },
      // ── Claude 3.5 family ───────────────────────────────────────────────────
      "claude-3-5-sonnet-latest": {
        name: "Claude 3.5 Sonnet (latest)",
        id: "claude-3-5-sonnet-latest",
        model_name: "claude-3-5-sonnet-latest",
        description: "Anthropic Claude 3.5 Sonnet (rolling-latest)",
        max_input_tokens: 2e5,
        max_output_tokens: 8192,
        multimodal: true
      },
      "claude-3-5-sonnet-20241022": {
        name: "Claude 3.5 Sonnet (2024-10-22)",
        id: "claude-3-5-sonnet-20241022",
        model_name: "claude-3-5-sonnet-20241022",
        description: "Anthropic Claude 3.5 Sonnet snapshot (2024-10-22)",
        max_input_tokens: 2e5,
        max_output_tokens: 8192,
        multimodal: true
      },
      "claude-3-5-haiku-latest": {
        name: "Claude 3.5 Haiku (latest)",
        id: "claude-3-5-haiku-latest",
        model_name: "claude-3-5-haiku-latest",
        description: "Anthropic Claude 3.5 Haiku (rolling-latest)",
        max_input_tokens: 2e5,
        max_output_tokens: 8192
      },
      "claude-3-5-haiku-20241022": {
        name: "Claude 3.5 Haiku (2024-10-22)",
        id: "claude-3-5-haiku-20241022",
        model_name: "claude-3-5-haiku-20241022",
        description: "Anthropic Claude 3.5 Haiku snapshot (2024-10-22)",
        max_input_tokens: 2e5,
        max_output_tokens: 8192
      },
      // ── Claude 3 family ─────────────────────────────────────────────────────
      "claude-3-opus-latest": {
        name: "Claude 3 Opus (latest)",
        id: "claude-3-opus-latest",
        model_name: "claude-3-opus-latest",
        description: "Anthropic Claude 3 Opus (rolling-latest)",
        max_input_tokens: 2e5,
        max_output_tokens: 4096,
        multimodal: true
      },
      "claude-3-opus-20240229": {
        name: "Claude 3 Opus (2024-02-29)",
        id: "claude-3-opus-20240229",
        model_name: "claude-3-opus-20240229",
        description: "Anthropic Claude 3 Opus snapshot (2024-02-29)",
        max_input_tokens: 2e5,
        max_output_tokens: 4096,
        multimodal: true
      },
      "claude-3-sonnet-20240229": {
        name: "Claude 3 Sonnet (2024-02-29)",
        id: "claude-3-sonnet-20240229",
        model_name: "claude-3-sonnet-20240229",
        description: "Anthropic Claude 3 Sonnet snapshot (2024-02-29)",
        max_input_tokens: 2e5,
        max_output_tokens: 4096,
        multimodal: true
      },
      "claude-3-haiku-20240307": {
        name: "Claude 3 Haiku (2024-03-07)",
        id: "claude-3-haiku-20240307",
        model_name: "claude-3-haiku-20240307",
        description: "Anthropic Claude 3 Haiku snapshot (2024-03-07)",
        max_input_tokens: 2e5,
        max_output_tokens: 4096,
        multimodal: true
      }
    };
  }
};
var SmartChatModelAnthropicRequestAdapter2 = class extends SmartChatModelRequestAdapter2 {
  /**
   * Convert request to Anthropic format
   * @returns {Object} Request parameters in Anthropic format
   */
  to_platform(streaming = false) {
    return this.to_anthropic(streaming);
  }
  /**
   * Convert request to Anthropic format
   * @returns {Object} Request parameters in Anthropic format
   */
  to_anthropic(streaming = false) {
    this.anthropic_body = {
      model: this.model,
      max_tokens: this.max_tokens,
      temperature: this.temperature,
      stream: streaming
    };
    this.anthropic_body.messages = this._transform_messages_to_anthropic();
    if (this.tools) {
      this.anthropic_body.tools = this._transform_tools_to_anthropic();
    }
    if (this.tool_choice) {
      this.anthropic_body.tool_choice = this.tool_choice === "auto" ? { type: "auto" } : { type: "tool", name: this.tool_choice.function.name };
    }
    return {
      url: this.adapter.endpoint,
      method: "POST",
      headers: this.get_headers(),
      body: JSON.stringify(this.anthropic_body)
    };
  }
  /**
   * Transform messages to Anthropic format
   * @returns {Array<Object>} Messages in Anthropic format
   * @private
   */
  _transform_messages_to_anthropic() {
    let anthropic_messages = [];
    for (const message of this.messages) {
      if (message.role === "system") {
        if (!this.anthropic_body.system) this.anthropic_body.system = "";
        else this.anthropic_body.system += "\n\n";
        this.anthropic_body.system += Array.isArray(message.content) ? message.content.map((part) => part.text).join("\n") : message.content;
      } else if (message.role === "tool") {
        const msg = {
          role: "user",
          content: [
            {
              type: "tool_result",
              tool_use_id: message.tool_call_id,
              content: message.content
            }
          ]
        };
        anthropic_messages.push(msg);
      } else {
        const msg = {
          role: this._get_anthropic_role(message.role),
          content: this._get_anthropic_content(message.content)
        };
        if (message.tool_calls?.length > 0) msg.content = this._transform_tool_calls_to_content(message.tool_calls);
        anthropic_messages.push(msg);
      }
    }
    return anthropic_messages;
  }
  /**
   * Transform tool calls to Anthropic format
   * @param {Array<Object>} tool_calls - Tool calls
   * @returns {Array<Object>} Tool calls in Anthropic format
   * @private
   */
  _transform_tool_calls_to_content(tool_calls) {
    return tool_calls.map((tool_call) => ({
      type: "tool_use",
      id: tool_call.id,
      name: tool_call.function.name,
      input: JSON.parse(tool_call.function.arguments)
    }));
  }
  /**
   * Transform role to Anthropic format
   * @param {string} role - Original role
   * @returns {string} Role in Anthropic format
   * @private
   */
  _get_anthropic_role(role) {
    const role_map = {
      function: "assistant",
      // Anthropic doesn't have a function role, so we'll treat it as assistant
      tool: "user"
    };
    return role_map[role] || role;
  }
  /**
   * Transform content to Anthropic format
   * @param {string|Array} content - Original content
   * @returns {string|Array} Content in Anthropic format
   * @private
   */
  _get_anthropic_content(content) {
    if (Array.isArray(content)) {
      return content.map((item) => {
        if (item.type === "text") return { type: "text", text: item.text };
        if (item.type === "image_url") {
          return {
            type: "image",
            source: {
              type: "base64",
              media_type: item.image_url.url.split(";")[0].split(":")[1],
              data: item.image_url.url.split(",")[1]
            }
          };
        }
        if (item.type === "file" && item.file?.filename?.toLowerCase().endsWith(".pdf")) {
          if (item.file?.file_data) {
            return {
              type: "document",
              source: {
                type: "base64",
                media_type: "application/pdf",
                data: item.file.file_data.split(",")[1]
              }
            };
          }
        }
        return item;
      });
    }
    return content;
  }
  /**
     * Transform tools to Anthropic format
     * @returns {Array<Object>} Tools in Anthropic format
     * @private
     */
  _transform_tools_to_anthropic() {
    if (!this.tools) return void 0;
    return this.tools.map((tool2) => ({
      name: tool2.function.name,
      description: tool2.function.description,
      input_schema: tool2.function.parameters
    }));
  }
};
var SmartChatModelAnthropicResponseAdapter2 = class extends SmartChatModelResponseAdapter2 {
  static get platform_res() {
    return {
      content: [],
      id: "",
      model: "",
      role: "assistant",
      stop_reason: null,
      stop_sequence: null,
      type: "message",
      usage: {
        input_tokens: 0,
        output_tokens: 0
      }
    };
  }
  /**
   * Convert response to OpenAI format
   * @returns {Object} Response in OpenAI format
   */
  to_openai() {
    return {
      id: this._res.id,
      object: "chat.completion",
      created: Date.now(),
      choices: [
        {
          index: 0,
          message: this._transform_message_to_openai(),
          finish_reason: this._get_openai_finish_reason(this._res.stop_reason)
        }
      ],
      usage: this._transform_usage_to_openai()
    };
  }
  /**
   * Transform message to OpenAI format
   * @returns {Object} Message in OpenAI format
   * @private
   */
  _transform_message_to_openai() {
    const message = {
      role: "assistant",
      content: "",
      tool_calls: []
    };
    if (Array.isArray(this._res.content)) {
      for (const content of this._res.content) {
        if (content.type === "text") {
          message.content += (message.content ? "\n\n" : "") + content.text;
        } else if (content.type === "tool_use") {
          message.tool_calls.push({
            id: content.id,
            type: "function",
            function: {
              name: content.name,
              arguments: JSON.stringify(content.input)
            }
          });
        }
      }
    } else {
      message.content = this._res.content;
    }
    if (message.tool_calls.length === 0) {
      delete message.tool_calls;
    }
    return message;
  }
  /**
   * Transform finish reason to OpenAI format
   * @param {string} stop_reason - Original finish reason
   * @returns {string} Finish reason in OpenAI format
   * @private
   */
  _get_openai_finish_reason(stop_reason) {
    const reason_map = {
      "end_turn": "stop",
      "max_tokens": "length",
      "tool_use": "function_call"
    };
    return reason_map[stop_reason] || stop_reason;
  }
  /**
   * Transform usage statistics to OpenAI format
   * @returns {Object} Usage statistics in OpenAI format
   * @private
   */
  _transform_usage_to_openai() {
    if (!this._res.usage) {
      return {
        prompt_tokens: 0,
        completion_tokens: 0,
        total_tokens: 0
      };
    }
    return {
      prompt_tokens: this._res.usage.input_tokens || 0,
      completion_tokens: this._res.usage.output_tokens || 0,
      total_tokens: (this._res.usage.input_tokens || 0) + (this._res.usage.output_tokens || 0)
    };
  }
  handle_chunk(chunk) {
    if (!chunk.startsWith("data: ")) return;
    chunk = JSON.parse(chunk.slice(6));
    if (!this._res.content.length) {
      this._res.content = [
        {
          type: "text",
          text: ""
        }
      ];
    }
    if (chunk.message?.id) {
      this._res.id = chunk.message.id;
    }
    if (chunk.message?.model) {
      this._res.model = chunk.message.model;
    }
    if (chunk.message?.role) {
      this._res.role = chunk.message.role;
    }
    if (chunk.delta?.type === "text_delta") {
      this._res.content[0].text += chunk.delta.text;
    }
    if (chunk.delta?.stop_reason) {
      this._res.stop_reason = chunk.delta.stop_reason;
    }
    if (chunk.usage) {
      this._res.usage = {
        ...this._res.usage,
        ...chunk.usage
      };
    }
  }
};

// node_modules/smart-chat-model/adapters/openai.js
var EXCLUDED_PREFIXES2 = [
  "text-",
  "davinci",
  "babbage",
  "ada",
  "curie",
  "dall-e",
  "whisper",
  "omni",
  "tts",
  "gpt-4o-mini-tts",
  "computer-use",
  "codex",
  "gpt-4o-transcribe",
  "gpt-4o-mini-transcribe",
  "gpt-4o-mini-realtime",
  "gpt-4o-realtime",
  "o4-mini-deep-research",
  "o3-deep-research",
  "gpt-image"
];
var SmartChatModelOpenaiAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "openai";
  static defaults = {
    description: "OpenAI",
    type: "API",
    endpoint: "https://api.openai.com/v1/chat/completions",
    streaming: true,
    models_endpoint: "https://api.openai.com/v1/models",
    default_model: "gpt-5-nano",
    signup_url: "https://platform.openai.com/api-keys",
    can_use_tools: true
  };
  res_adapter = SmartChatModelOpenaiResponseAdapter2;
  /**
   * Parse model data from OpenAI API response.
   * Filters for GPT models and adds context window information.
   * @param {Object} model_data - Raw model data from OpenAI
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    return model_data.data.filter((model) => !EXCLUDED_PREFIXES2.some((m) => model.id.startsWith(m)) && !model.id.includes("-instruct")).reduce((acc, model) => {
      const out = {
        model_name: model.id,
        id: model.id,
        multimodal: true,
        can_use_tools: true,
        max_input_tokens: get_max_input_tokens2(model.id)
      };
      acc[model.id] = out;
      return acc;
    }, {});
  }
  /**
   * Override the HTTP method for fetching models.
   */
  models_endpoint_method = "GET";
  /**
   * Test the API key by attempting to fetch models.
   * @returns {Promise<boolean>} True if API key is valid
   */
  async test_api_key() {
    const models = await this.get_models();
    return models.length > 0;
  }
  /**
   * Get settings configuration for OpenAI adapter.
   * Adds image resolution setting for multimodal models.
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    const config = super.settings_config;
    if (this.adapter?.model_config?.multimodal) {
      config["[CHAT_ADAPTER].image_resolution"] = {
        name: "Image Resolution",
        type: "dropdown",
        description: "Select the image resolution for the chat model.",
        option_1: "low",
        option_2: "high",
        default: "low"
      };
    }
    config["[CHAT_ADAPTER].open_ai_note"] = {
      name: "Note about using OpenAI",
      type: "html",
      value: "<b>OpenAI models:</b> Some models require extra verification steps in your OpenAI account for them to appear in the model list."
    };
    return config;
  }
};
function get_max_input_tokens2(model_id) {
  if (model_id.startsWith("gpt-4.1")) {
    return 1e6;
  }
  if (model_id.startsWith("o")) {
    return 2e5;
  }
  if (model_id.startsWith("gpt-5")) {
    return 4e5;
  }
  if (model_id.startsWith("gpt-4o") || model_id.startsWith("gpt-4.5") || model_id.startsWith("gpt-4-turbo")) {
    return 128e3;
  }
  if (model_id.startsWith("gpt-4")) {
    return 8192;
  }
  if (model_id.startsWith("gpt-3")) {
    return 16385;
  }
  return 8e3;
}
var SmartChatModelOpenaiResponseAdapter2 = class extends SmartChatModelResponseAdapter2 {
};

// node_modules/smart-chat-model/adapters/azure.js
var SmartChatModelAzureAdapter2 = class extends SmartChatModelOpenaiAdapter2 {
  static key = "azure";
  static defaults = {
    description: "Azure OpenAI",
    type: "API",
    adapter: "AzureOpenAI",
    streaming: true,
    api_key_header: "api-key",
    azure_resource_name: "",
    azure_deployment_name: "",
    azure_api_version: "2024-10-01-preview",
    default_model: "gpt-35-turbo",
    signup_url: "https://learn.microsoft.com/azure/cognitive-services/openai/quickstart?tabs=command-line",
    models_endpoint: "https://{azure_resource_name}.openai.azure.com/openai/deployments?api-version={azure_api_version}",
    can_use_tools: true
  };
  /**
   * Override the settings configuration to include Azure-specific fields.
   */
  get settings_config() {
    return {
      ...super.settings_config,
      "[CHAT_ADAPTER].azure_resource_name": {
        name: "Azure Resource Name",
        type: "text",
        description: "The name of your Azure OpenAI resource (e.g. 'my-azure-openai').",
        default: ""
      },
      "[CHAT_ADAPTER].azure_deployment_name": {
        name: "Azure Deployment Name",
        type: "text",
        description: "The name of your specific model deployment (e.g. 'gpt35-deployment').",
        default: ""
      },
      "[CHAT_ADAPTER].azure_api_version": {
        name: "Azure API Version",
        type: "text",
        description: "The API version for Azure OpenAI (e.g. '2024-10-01-preview').",
        default: "2024-10-01-preview"
      }
    };
  }
  /**
   * Build the endpoint dynamically based on Azure settings.
   * Example:
   *  https://<RESOURCE>.openai.azure.com/openai/deployments/<DEPLOYMENT>/chat/completions?api-version=2023-05-15
   */
  get endpoint() {
    const { azure_resource_name, azure_deployment_name, azure_api_version } = this.adapter_config;
    return `https://${azure_resource_name}.openai.azure.com/openai/deployments/${azure_deployment_name}/chat/completions?api-version=${azure_api_version}`;
  }
  /**
   * For streaming, we can reuse the same endpoint. 
   * The request body includes `stream: true` which the base class uses.
   */
  get endpoint_streaming() {
    return this.endpoint;
  }
  /**
   * The models endpoint for retrieving a list of your deployments.
   * E.g.:
   *   https://<RESOURCE>.openai.azure.com/openai/deployments?api-version=2023-05-15
   */
  get models_endpoint() {
    const { azure_resource_name, azure_api_version } = this.adapter_config;
    return `https://${azure_resource_name}.openai.azure.com/openai/deployments?api-version=${azure_api_version}`;
  }
  /**
   * Azure returns a list of deployments in the shape:
   * {
   *   "object": "list",
   *   "data": [
   *     {
   *       "id": "mydeployment",
   *       "model": "gpt-35-turbo",
   *       "status": "succeeded",
   *       "createdAt": ...
   *       "updatedAt": ...
   *       ...
   *     },
   *     ...
   *   ]
   * }
   * We'll parse them into a dictionary keyed by deployment ID.
   */
  parse_model_data(model_data) {
    if (model_data.object !== "list" || !Array.isArray(model_data.data)) {
      return { "_": { id: "No deployments found." } };
    }
    const parsed = {};
    for (const d of model_data.data) {
      parsed[d.id] = {
        model_name: d.id,
        id: d.id,
        raw: d,
        // You can add more details if you want:
        description: `Model: ${d.model}, Status: ${d.status}`,
        // Hard to guess tokens; omit or guess:
        max_input_tokens: 4e3
      };
    }
    return parsed;
  }
  /**
   * Validate the Azure configuration fields.
   */
  validate_config() {
    const { azure_resource_name, azure_deployment_name, azure_api_version } = this.adapter_config;
    if (!azure_resource_name) {
      return { valid: false, message: "Azure resource name is missing." };
    }
    if (!azure_deployment_name) {
      return { valid: false, message: "Azure deployment name is missing." };
    }
    if (!azure_api_version) {
      return { valid: false, message: "Azure API version is missing." };
    }
    if (!this.api_key) {
      return { valid: false, message: "Azure OpenAI API key is missing." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};

// node_modules/smart-chat-model/adapters/google.js
var SmartChatModelGoogleAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "google";
  static defaults = {
    description: "Google (Gemini)",
    type: "API",
    api_key_header: "none",
    endpoint: "https://generativelanguage.googleapis.com/v1beta/models/MODEL_NAME:generateContent",
    endpoint_streaming: "https://generativelanguage.googleapis.com/v1beta/models/MODEL_NAME:streamGenerateContent",
    streaming: true,
    adapter: "Gemini",
    models_endpoint: "https://generativelanguage.googleapis.com/v1beta/models",
    default_model: "gemini-1.5-pro",
    signup_url: "https://ai.google.dev/",
    can_use_tools: true
  };
  streaming_chunk_splitting_regex = /(\r\n|\n|\r){2}/g;
  // handle Google's BS (split on double newlines only)
  /**
   * Get request adapter class
   */
  req_adapter = SmartChatModelGeminiRequestAdapter2;
  /**
   * Get response adapter class
   */
  res_adapter = SmartChatModelGeminiResponseAdapter2;
  /**
   * Uses Gemini's dedicated token counting endpoint
   */
  async count_tokens(input) {
    const req = {
      url: `https://generativelanguage.googleapis.com/v1beta/models/${this.model_key}:countTokens?key=${this.api_key}`,
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(this.prepare_token_count_body(input))
    };
    const resp = await this.http_adapter.request(req);
    return resp.json.totalTokens;
  }
  /**
   * Formats input for token counting based on type
   * @private
   */
  prepare_token_count_body(input) {
    if (typeof input === "string") {
      return { contents: [{ parts: [{ text: input }] }] };
    } else if (Array.isArray(input)) {
      return { contents: input.map((msg) => this.transform_message_for_token_count(msg)) };
    } else if (typeof input === "object") {
      return { contents: [this.transform_message_for_token_count(input)] };
    }
    throw new Error("Invalid input for count_tokens");
  }
  /**
   * Transforms message for token counting, handling text and images
   * @private
   */
  transform_message_for_token_count(message) {
    return {
      role: message.role === "assistant" ? "model" : message.role,
      parts: Array.isArray(message.content) ? message.content.map((part) => {
        if (part.type === "text") return { text: part.text };
        if (part.type === "image_url") return {
          inline_data: {
            mime_type: part.image_url.url.split(";")[0].split(":")[1],
            data: part.image_url.url.split(",")[1]
          }
        };
        return part;
      }) : [{ text: message.content }]
    };
  }
  /**
   * Builds endpoint URLs with model and API key
   */
  get endpoint() {
    return `https://generativelanguage.googleapis.com/v1beta/models/${this.model_key}:generateContent?key=${this.api_key}`;
  }
  get endpoint_streaming() {
    return `https://generativelanguage.googleapis.com/v1beta/models/${this.model_key}:streamGenerateContent?key=${this.api_key}`;
  }
  // /**
  //  * Extracts text from Gemini's streaming format
  //  */
  // get_text_chunk_from_stream(event) {
  //   const data = JSON.parse(event.data);
  //   return data.candidates[0]?.content?.parts[0]?.text || '';
  // }
  /**
   * Get models endpoint URL with API key
   * @returns {string} Complete models endpoint URL
   */
  get models_endpoint() {
    return `${this.constructor.defaults.models_endpoint}?key=${this.api_key}`;
  }
  /**
   * Get HTTP method for models endpoint
   * @returns {string} HTTP method ("GET")
   */
  get models_endpoint_method() {
    return "GET";
  }
  get models_request_params() {
    return {
      url: this.models_endpoint,
      method: this.models_endpoint_method
    };
  }
  /**
   * Parse model data from Gemini API response
   * @param {Object} model_data - Raw model data from API
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    return model_data.models.filter((model) => model.name.startsWith("models/gemini")).reduce((acc, model) => {
      const out = {
        model_name: model.name.split("/").pop(),
        id: model.name.split("/").pop(),
        max_input_tokens: model.inputTokenLimit,
        max_output_tokens: model.maxOutputTokens,
        description: model.description,
        multimodal: model.name.includes("vision") || model.description.includes("multimodal"),
        raw: model
      };
      acc[model.name.split("/").pop()] = out;
      return acc;
    }, {});
  }
  is_end_of_stream(event) {
    return event.data.includes('"finishReason"');
    return false;
  }
};
var SmartChatModelGeminiRequestAdapter2 = class extends SmartChatModelRequestAdapter2 {
  to_platform(streaming = false) {
    return this.to_gemini(streaming);
  }
  to_gemini(streaming = false) {
    const gemini_body = {
      contents: this._transform_messages_to_gemini(),
      generationConfig: {
        temperature: this.temperature,
        maxOutputTokens: this.max_tokens,
        topK: this._req.topK || 1,
        topP: this._req.topP || 1,
        stopSequences: this._req.stop || []
      },
      safetySettings: [
        {
          category: "HARM_CATEGORY_HARASSMENT",
          threshold: "BLOCK_NONE"
        },
        {
          category: "HARM_CATEGORY_HATE_SPEECH",
          threshold: "BLOCK_NONE"
        },
        {
          category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          threshold: "BLOCK_NONE"
        },
        {
          category: "HARM_CATEGORY_DANGEROUS_CONTENT",
          threshold: "BLOCK_NONE"
        }
      ]
    };
    if (this.tools) gemini_body.tools = this._transform_tools_to_gemini();
    if (gemini_body.tools && this.tool_choice !== "none") gemini_body.tool_config = this._transform_tool_choice_to_gemini();
    return {
      url: streaming ? this.adapter.endpoint_streaming : this.adapter.endpoint,
      method: "POST",
      headers: this.get_headers(),
      body: JSON.stringify(gemini_body)
    };
  }
  _transform_messages_to_gemini() {
    let gemini_messages = [];
    let system_message = "";
    for (const message of this.messages) {
      if (message.role === "system") {
        system_message += message.content + "\n";
      } else {
        gemini_messages.push({
          role: this._get_gemini_role(message.role),
          parts: this._transform_content_to_gemini(message.content)
        });
      }
    }
    if (system_message) {
      gemini_messages.unshift({
        role: "user",
        parts: [{ text: system_message.trim() }]
      });
    }
    return gemini_messages;
  }
  _get_gemini_role(role) {
    const role_map = {
      user: "user",
      assistant: "model",
      function: "model"
      // Gemini doesn't have a function role, so we'll treat it as model
    };
    return role_map[role] || role;
  }
  _transform_content_to_gemini(content) {
    if (Array.isArray(content)) {
      return content.map((part) => {
        if (part.type === "text") return { text: part.text };
        if (part.type === "image_url") {
          return {
            inline_data: {
              mime_type: part.image_url.url.split(";")[0].split(":")[1],
              data: part.image_url.url.split(",")[1]
            }
          };
        }
        if (part.type === "file" && part.file?.filename?.toLowerCase().endsWith(".pdf")) {
          if (part.file?.file_data) {
            return {
              inline_data: {
                mime_type: "application/pdf",
                data: part.file.file_data.split(",")[1]
              }
            };
          }
        }
        return part;
      });
    }
    return [{ text: content }];
  }
  _transform_tools_to_gemini() {
    return [{
      function_declarations: this.tools.map((tool2) => ({
        name: tool2.function.name,
        description: tool2.function.description,
        parameters: tool2.function.parameters
      }))
    }];
  }
  _transform_tool_choice_to_gemini() {
    return {
      function_calling_config: {
        mode: "ANY",
        allowed_function_names: this.tools.map((tool2) => tool2.function.name)
      }
    };
  }
};
var SmartChatModelGeminiResponseAdapter2 = class extends SmartChatModelResponseAdapter2 {
  static get platform_res() {
    return {
      candidates: [{
        content: {
          parts: [
            {
              text: ""
            }
          ],
          role: ""
        },
        finishReason: ""
      }],
      promptFeedback: {},
      usageMetadata: {}
    };
  }
  to_openai() {
    const first_candidate = this._res.candidates[0];
    if (!this._res.id) this._res.id = "gemini-" + Date.now().toString();
    return {
      id: this._res.id,
      object: "chat.completion",
      created: Date.now(),
      model: this.adapter.model_key,
      choices: [{
        index: 0,
        message: first_candidate?.content ? this._transform_message_to_openai(first_candidate.content) : "",
        finish_reason: this._get_openai_finish_reason(first_candidate.finishReason)
      }],
      usage: this._transform_usage_to_openai()
    };
  }
  _transform_message_to_openai(content) {
    const message = {
      role: "assistant",
      content: content.parts.filter((part) => part.text).map((part) => part.text).join("")
    };
    const function_call = content.parts.find((part) => part.functionCall);
    if (function_call) {
      message.tool_calls = [{
        type: "function",
        function: {
          name: function_call.functionCall.name,
          arguments: JSON.stringify(function_call.functionCall.args)
        }
      }];
    }
    return message;
  }
  _get_openai_finish_reason(finish_reason) {
    const reason_map = {
      "STOP": "stop",
      "MAX_TOKENS": "length",
      "SAFETY": "content_filter",
      "RECITATION": "content_filter",
      "OTHER": "null"
    };
    return reason_map[finish_reason] || finish_reason.toLowerCase();
  }
  _transform_usage_to_openai() {
    if (!this._res.usageMetadata) {
      return {
        prompt_tokens: null,
        completion_tokens: null,
        total_tokens: null
      };
    }
    return {
      prompt_tokens: this._res.usageMetadata.promptTokenCount || null,
      completion_tokens: this._res.usageMetadata.candidatesTokenCount || null,
      total_tokens: this._res.usageMetadata.totalTokenCount || null
    };
  }
  handle_chunk(chunk) {
    let chunk_trimmed = chunk.trim();
    if (["[", ","].includes(chunk_trimmed[0])) chunk_trimmed = chunk_trimmed.slice(1);
    if (["]", ","].includes(chunk_trimmed[chunk_trimmed.length - 1])) chunk_trimmed = chunk_trimmed.slice(0, -1);
    const data = JSON.parse(chunk_trimmed);
    if (data.candidates?.[0]?.content?.parts?.[0]?.text?.length) {
      this._res.candidates[0].content.parts[0].text += data.candidates[0].content.parts[0].text;
    }
    if (data.candidates?.[0]?.content?.role?.length) {
      this._res.candidates[0].content.role = data.candidates[0].content.role;
    }
    if (data.candidates?.[0]?.finishReason?.length) {
      this._res.candidates[0].finishReason += data.candidates[0].finishReason;
    }
    if (data.promptFeedback) {
      this._res.promptFeedback = {
        ...this._res.promptFeedback || {},
        ...data.promptFeedback
      };
    }
    if (data.usageMetadata) {
      this._res.usageMetadata = {
        ...this._res.usageMetadata || {},
        ...data.usageMetadata
      };
    }
    if (data.candidates?.[0]?.content?.parts?.[0]?.functionCall) {
      if (!this._res.candidates[0].content.parts[0].functionCall) {
        this._res.candidates[0].content.parts[0].functionCall = {
          name: "",
          args: {}
        };
      }
      this._res.candidates[0].content.parts[0].functionCall.name += data.candidates[0].content.parts[0].functionCall.name;
      if (data.candidates[0].content.parts[0].functionCall.args) {
        Object.entries(data.candidates[0].content.parts[0].functionCall.args).forEach(([key, value]) => {
          if (!this._res.candidates[0].content.parts[0].functionCall.args[key]) {
            this._res.candidates[0].content.parts[0].functionCall.args[key] = "";
          }
          this._res.candidates[0].content.parts[0].functionCall.args[key] += value;
        });
      }
    }
  }
};
var SmartChatModelGeminiAdapter2 = class extends SmartChatModelGoogleAdapter2 {
  static key = "gemini";
  static defaults = {
    description: "Gemini (SWITCH TO **GOOGLE** ADAPTER)",
    type: "API",
    api_key_header: "none",
    endpoint: "https://generativelanguage.googleapis.com/v1beta/models/MODEL_NAME:generateContent",
    endpoint_streaming: "https://generativelanguage.googleapis.com/v1beta/models/MODEL_NAME:streamGenerateContent",
    streaming: true,
    adapter: "Gemini",
    models_endpoint: "https://generativelanguage.googleapis.com/v1beta/models",
    default_model: "gemini-1.5-pro",
    signup_url: "https://ai.google.dev/",
    can_use_tools: true
  };
};

// node_modules/smart-chat-model/adapters/open_router.js
var SmartChatModelOpenRouterAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "open_router";
  static defaults = {
    description: "Open Router",
    type: "API",
    endpoint: "https://openrouter.ai/api/v1/chat/completions",
    streaming: true,
    adapter: "OpenRouter",
    models_endpoint: "https://openrouter.ai/api/v1/models",
    default_model: "mistralai/mistral-7b-instruct:free",
    signup_url: "https://accounts.openrouter.ai/sign-up?redirect_url=https%3A%2F%2Fopenrouter.ai%2Fkeys",
    can_use_tools: true
  };
  /**
   * Get request adapter class
   * @returns {typeof SmartChatModelOpenRouterRequestAdapter} Request adapter class
   */
  get req_adapter() {
    return SmartChatModelOpenRouterRequestAdapter2;
  }
  /**
   * Get response adapter class
   * @returns {typeof SmartChatModelOpenRouterResponseAdapter} Response adapter class
   */
  get res_adapter() {
    return SmartChatModelOpenRouterResponseAdapter2;
  }
  /**
   * Get API key from various sources
   * @returns {string|undefined} API key if available
   */
  get api_key() {
    return this.main.opts.api_key || this.adapter_settings?.api_key || "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";
  }
  /**
   * Count tokens in input text (rough estimate)
   * @param {string|Object} input - Text to count tokens for
   * @returns {Promise<number>} Estimated token count
   */
  async count_tokens(input) {
    const text = typeof input === "string" ? input : JSON.stringify(input);
    return Math.ceil(text.length / 4);
  }
  get models_request_params() {
    return {
      url: this.models_endpoint,
      method: "GET"
    };
  }
  /**
   * Parse model data from OpenRouter API response
   * @param {Object} model_data - Raw model data
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    if (model_data.data) {
      model_data = model_data.data;
    }
    if (model_data.error) throw new Error(model_data.error);
    return model_data.reduce((acc, model) => {
      acc[model.id] = {
        model_name: model.id,
        id: model.id,
        max_input_tokens: model.context_length,
        description: model.name,
        can_use_tools: model.description.includes("tool use") || model.description.includes("function call"),
        multimodal: model.architecture.modality === "multimodal",
        raw: model
      };
      return acc;
    }, {});
  }
};
var SmartChatModelOpenRouterRequestAdapter2 = class extends SmartChatModelRequestAdapter2 {
  to_platform(stream = false) {
    const req = this.to_openai(stream);
    return req;
  }
  _get_openai_content(message) {
    if (message.role === "user") {
      if (Array.isArray(message.content) && message.content.every((part) => part.type === "text")) {
        return message.content.map((part) => part.text).join("\n");
      }
    }
    return message.content;
  }
};
var SmartChatModelOpenRouterResponseAdapter2 = class extends SmartChatModelResponseAdapter2 {
  static get platform_res() {
    return {
      id: "",
      object: "chat.completion",
      created: 0,
      model: "",
      choices: [],
      usage: {}
    };
  }
  to_platform() {
    return this.to_openai();
  }
  get object() {
    return "chat.completion";
  }
  get error() {
    if (!this._res.error) return null;
    const error = this._res.error;
    if (!error.message) error.message = "";
    if (this._res.error.metadata?.raw) {
      if (typeof this._res.error.metadata.raw === "string") {
        error.message += `

${this._res.error.metadata.raw}`;
      } else {
        error.message += `

${JSON.stringify(this._res.error.metadata.raw, null, 2)}`;
      }
    }
    return error;
  }
};

// node_modules/smart-chat-model/adapters/lm_studio.js
var SmartChatModelLmStudioAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "lm_studio";
  /** @type {import('./_adapter.js').SmartChatModelAdapter['constructor']['defaults']} */
  static defaults = {
    description: "LM Studio (OpenAI\u2011compatible)",
    type: "API",
    endpoint: "http://localhost:1234/v1/chat/completions",
    streaming: true,
    adapter: "LM_Studio_OpenAI_Compat",
    models_endpoint: "http://localhost:1234/v1/models",
    default_model: "",
    signup_url: "https://lmstudio.ai/docs/api/openai-api",
    can_use_tools: true,
    api_key: "no api key required"
  };
  /* ------------------------------------------------------------------ *
   *  Request / Response classes
   * ------------------------------------------------------------------ */
  get req_adapter() {
    return SmartChatModelLmStudioRequestAdapter2;
  }
  get res_adapter() {
    return SmartChatModelLmStudioResponseAdapter2;
  }
  /* ------------------------------------------------------------------ *
   *  Settings
   * ------------------------------------------------------------------ */
  /**
   * Extend the base settings with a read‑only HTML block that reminds the
   * user to enable CORS inside LM Studio. The Smart View renderer treats
   * `type: "html"` as a static fragment, so no extra runtime logic is needed.
   */
  get settings_config() {
    const config = super.settings_config;
    delete config["[CHAT_ADAPTER].api_key"];
    return {
      ...config,
      "[CHAT_ADAPTER].cors_instructions": {
        /* visible only when this adapter is selected */
        name: "CORS required",
        type: "html",
        value: `<p>Before you can use LM Studio you must <strong>Enable CORS</strong> inside LM Studio \u2192 Developer \u2192 Settings</p>`
      }
    };
  }
  /* ------------------------------------------------------------------ *
   *  Model list helpers
   * ------------------------------------------------------------------ */
  /**
   * LM Studio returns an OpenAI‑style list; normalise to the project shape.
   */
  parse_model_data(model_data) {
    if (model_data.object !== "list" || !Array.isArray(model_data.data)) {
      return { _: { id: "No models found." } };
    }
    const out = {};
    for (const m of model_data.data) {
      out[m.id] = {
        id: m.id,
        model_name: m.id,
        description: `LM Studio model: ${m.id}`,
        multimodal: false
      };
    }
    return out;
  }
  get models_endpoint_method() {
    return "get";
  }
  /**
   * Count tokens in input text (no dedicated endpoint)
   * Rough estimate: 1 token ~ 4 chars
   * @param {string|Object} input
   * @returns {Promise<number>}
   */
  async count_tokens(input) {
    const text = typeof input === "string" ? input : JSON.stringify(input);
    return Math.ceil(text.length / 4);
  }
  /**
   * Test API key - LM Studio doesn't require API key. Always true.
   * @returns {Promise<boolean>}
   */
  async test_api_key() {
    return true;
  }
  get api_key() {
    return "no api key required";
  }
  /**
   * Validate configuration
   */
  validate_config() {
    if (!this.adapter_config.model_key) {
      return { valid: false, message: "No model selected." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};
var SmartChatModelLmStudioRequestAdapter2 = class extends SmartChatModelRequestAdapter2 {
  to_platform(streaming = false) {
    const req = this.to_openai(streaming);
    const body = JSON.parse(req.body);
    if (this.tool_choice?.function?.name) {
      const last_msg = body.messages[body.messages.length - 1];
      if (typeof last_msg.content === "string") {
        last_msg.content = [
          { type: "text", text: last_msg.content }
        ];
      }
      last_msg.content.push({
        type: "text",
        text: `Use the "${this.tool_choice.function.name}" tool.`
      });
      body.tool_choice = "required";
    } else if (body.tool_choice && typeof body.tool_choice === "object") {
      body.tool_choice = "auto";
    }
    req.body = JSON.stringify(body);
    return req;
  }
};
var SmartChatModelLmStudioResponseAdapter2 = class extends SmartChatModelResponseAdapter2 {
};

// node_modules/smart-chat-model/adapters/ollama.js
var SmartChatModelOllamaAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "ollama";
  static defaults = {
    description: "Ollama (Local)",
    type: "API",
    // models_endpoint: "http://localhost:11434/api/tags",
    // endpoint: "http://localhost:11434/api/chat",
    api_key: "na",
    host: "http://localhost:11434",
    endpoint: "/api/chat",
    models_endpoint: "/api/tags",
    // streaming: false, // TODO: Implement streaming
    streaming: true
  };
  req_adapter = SmartChatModelOllamaRequestAdapter2;
  res_adapter = SmartChatModelOllamaResponseAdapter2;
  get endpoint() {
    return `${this.model_config.host}${this.model_config.endpoint}`;
  }
  get models_endpoint() {
    return `${this.model_config.host}${this.model_config.models_endpoint}`;
  }
  get model_show_endpoint() {
    return `${this.model_config.host}/api/show`;
  }
  get models_endpoint_method() {
    return "GET";
  }
  /**
   * Get available models from local Ollama instance
   * @param {boolean} [refresh=false] - Whether to refresh cached models
   * @returns {Promise<Object>} Map of model objects
   */
  async get_models(refresh = false) {
    if (!refresh && typeof this.model_data === "object" && Object.keys(this.model_data || {}).length > 0 && this.model_data_loaded_at && time_now - this.model_data_loaded_at < 1 * 60 * 60 * 1e3) return this.model_data;
    try {
      const list_resp = await this.http_adapter.request(this.models_request_params);
      const list_data = await list_resp.json();
      const models_raw_data = [];
      for (const model of list_data.models) {
        const model_details_resp = await this.http_adapter.request({
          url: this.model_show_endpoint,
          method: "POST",
          body: JSON.stringify({ model: model.name })
        });
        const model_details_data = await model_details_resp.json();
        models_raw_data.push({ ...model_details_data, name: model.name });
      }
      this.model_data = this.parse_model_data(models_raw_data);
      await this.get_enriched_model_data();
      this.adapter_settings.models = this.model_data;
      this.model.re_render_settings();
      this.model_data_loaded_at = Date.now();
      return this.model_data;
    } catch (error) {
      console.error("Failed to fetch model data:", error);
      return { "_": { id: `Failed to fetch models from ${this.model.adapter_name}` } };
    }
  }
  /**
   * Parse model data from Ollama API response
   * @param {Object[]} model_data - Raw model data from Ollama
   * @returns {Object} Map of model objects with capabilities and limits
   */
  parse_model_data(model_data) {
    if (!Array.isArray(model_data)) {
      this.model_data = {};
      console.error("Invalid model data format from Ollama:", model_data);
      return {};
    }
    if (model_data.length === 0) {
      this.model_data = { "no_models_available": {
        id: "no_models_available",
        name: "No models currently available"
      } };
      return this.model_data;
    }
    return model_data.reduce((acc, model) => {
      const out = {
        model_name: model.name,
        id: model.name,
        multimodal: false,
        max_input_tokens: Object.entries(model.model_info).find((m) => m[0].includes(".context_length"))[1],
        can_use_tools: true
        // TODO: CHECK MODELFILE FOR TOOLS SUPPORT
      };
      acc[model.name] = out;
      return acc;
    }, {});
  }
  /**
   * Override settings config to remove API key setting since not needed for local instance
   * @returns {Object} Settings configuration object
   */
  get settings_config() {
    const config = super.settings_config;
    delete config["[CHAT_ADAPTER].api_key"];
    config["[CHAT_ADAPTER].host"] = {
      name: "Ollama host",
      type: "text",
      description: "Enter the host for your Ollama instance",
      default: this.constructor.defaults.host
    };
    return config;
  }
  is_end_of_stream(event) {
    return event.data.includes('"done_reason"');
  }
};
var SmartChatModelOllamaRequestAdapter2 = class extends SmartChatModelRequestAdapter2 {
  /**
   * Convert request to Ollama format
   * @returns {Object} Request parameters in Ollama format
   */
  to_platform(streaming = false) {
    const ollama_body = {
      model: this.model,
      messages: this._transform_messages_to_ollama(),
      options: this._transform_parameters_to_ollama(),
      stream: streaming || this.stream
      // format: 'json', // only used for tool calls since returns JSON in content body
    };
    if (this.tools) {
      ollama_body.tools = this._transform_functions_to_tools();
      if (this.tool_choice?.function?.name) {
        ollama_body.messages[ollama_body.messages.length - 1].content += `

Use the "${this.tool_choice.function.name}" tool.`;
        ollama_body.format = "json";
      }
    }
    return {
      url: this.adapter.endpoint,
      method: "POST",
      body: JSON.stringify(ollama_body)
    };
  }
  /**
   * Transform messages to Ollama format
   * @returns {Array} Messages in Ollama format
   * @private
   */
  _transform_messages_to_ollama() {
    return this.messages.map((message) => {
      const ollama_message = {
        role: message.role,
        content: this._transform_content_to_ollama(message.content)
      };
      const images = this._extract_images_from_content(message.content);
      if (images.length > 0) {
        ollama_message.images = images.map((img) => img.replace(/^data:image\/[^;]+;base64,/, ""));
      }
      return ollama_message;
    });
  }
  /**
   * Transform content to Ollama format
   * @param {string|Array} content - Message content
   * @returns {string} Content in Ollama format
   * @private
   */
  _transform_content_to_ollama(content) {
    if (Array.isArray(content)) {
      return content.filter((item) => item.type === "text").map((item) => item.text).join("\n");
    }
    return content;
  }
  /**
   * Extract images from content
   * @param {string|Array} content - Message content
   * @returns {Array} Array of image URLs
   * @private
   */
  _extract_images_from_content(content) {
    if (!Array.isArray(content)) return [];
    return content.filter((item) => item.type === "image_url").map((item) => item.image_url.url);
  }
  /**
   * Transform functions to tools format
   * @returns {Array} Tools array in Ollama format
   * @private
   */
  _transform_functions_to_tools() {
    return this.tools;
  }
  /**
   * Transform parameters to Ollama options format
   * @returns {Object} Options in Ollama format
   * @private
   */
  _transform_parameters_to_ollama() {
    const options = {};
    if (this.max_tokens) options.num_predict = this.max_tokens;
    if (this.temperature) options.temperature = this.temperature;
    if (this.top_p) options.top_p = this.top_p;
    if (this.frequency_penalty) options.frequency_penalty = this.frequency_penalty;
    if (this.presence_penalty) options.presence_penalty = this.presence_penalty;
    return options;
  }
};
var SmartChatModelOllamaResponseAdapter2 = class extends SmartChatModelResponseAdapter2 {
  static get platform_res() {
    return {
      model: "",
      created_at: null,
      message: {
        role: "",
        content: ""
      },
      total_duration: 0,
      load_duration: 0,
      prompt_eval_count: 0,
      prompt_eval_duration: 0,
      eval_count: 0,
      eval_duration: 0
    };
  }
  /**
   * Convert response to OpenAI format
   * @returns {Object} Response in OpenAI format
   */
  to_openai() {
    return {
      id: this._res.created_at,
      object: "chat.completion",
      created: Date.now(),
      model: this._res.model,
      choices: [
        {
          index: 0,
          message: this._transform_message_to_openai(),
          finish_reason: this._res.done_reason
        }
      ],
      usage: this._transform_usage_to_openai()
    };
  }
  /**
   * Transform message to OpenAI format
   * @returns {Object} Message in OpenAI format
   * @private
   */
  _transform_message_to_openai() {
    return {
      role: this._res.message.role,
      content: this._res.message.content,
      tool_calls: this._res.message.tool_calls
    };
  }
  /**
   * Transform usage statistics to OpenAI format
   * @returns {Object} Usage statistics in OpenAI format
   * @private
   */
  _transform_usage_to_openai() {
    return {
      prompt_tokens: this._res.prompt_eval_count || 0,
      completion_tokens: this._res.eval_count || 0,
      total_tokens: (this._res.prompt_eval_count || 0) + (this._res.eval_count || 0)
    };
  }
  /**
   * Parse chunk adds delta to content as expected output format
   */
  handle_chunk(chunk) {
    chunk = JSON.parse(chunk || "{}");
    if (chunk.created_at && !this._res.created_at) {
      this._res.created_at = chunk.created_at;
    }
    if (chunk.message?.content) {
      this._res.message.content += chunk.message.content;
    }
    if (chunk.message?.role) {
      this._res.message.role = chunk.message.role;
    }
    if (chunk.model) {
      this._res.model = chunk.model;
    }
    if (chunk.message?.tool_calls) {
      if (!this._res.message.tool_calls) {
        this._res.message.tool_calls = [{
          id: "",
          type: "function",
          function: {
            name: "",
            arguments: ""
          }
        }];
      }
      if (chunk.message.tool_calls[0].id) {
        this._res.message.tool_calls[0].id += chunk.message.tool_calls[0].id;
      }
      if (chunk.message.tool_calls[0].function.name) {
        this._res.message.tool_calls[0].function.name += chunk.message.tool_calls[0].function.name;
      }
      if (chunk.message.tool_calls[0].function.arguments) {
        if (typeof chunk.message.tool_calls[0].function.arguments === "string") {
          this._res.message.tool_calls[0].function.arguments += chunk.message.tool_calls[0].function.arguments;
        } else {
          this._res.message.tool_calls[0].function.arguments = chunk.message.tool_calls[0].function.arguments;
        }
      }
    }
  }
};

// node_modules/smart-chat-model/adapters/_custom.js
var adapters_map2 = {
  "openai": {
    req: SmartChatModelRequestAdapter2,
    res: SmartChatModelResponseAdapter2
  },
  "anthropic": {
    req: SmartChatModelAnthropicRequestAdapter2,
    res: SmartChatModelAnthropicResponseAdapter2
  },
  "gemini": {
    req: SmartChatModelGeminiRequestAdapter2,
    res: SmartChatModelGeminiResponseAdapter2
  },
  "lm_studio": {
    req: SmartChatModelLmStudioRequestAdapter2,
    res: SmartChatModelLmStudioResponseAdapter2
  },
  "ollama": {
    req: SmartChatModelOllamaRequestAdapter2,
    res: SmartChatModelOllamaResponseAdapter2
  }
};
var SmartChatModelCustomAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "custom";
  static defaults = {
    description: "Custom API (Local or Remote, OpenAI format)",
    type: "API",
    /**
     * new default property: 'api_adapter' indicates which
     * request/response adapter set to use internally
     */
    api_adapter: "openai"
  };
  /**
   * Provide dynamic request/response classes
   * based on current adapter_config.api_adapter setting
   * ----------------------------------------------------
   */
  /**
   * @override
   * @returns {typeof SmartChatModelRequestAdapter}
   */
  get req_adapter() {
    const adapter_name = this.adapter_config.api_adapter || "openai";
    const map_entry = adapters_map2[adapter_name];
    return map_entry && map_entry.req ? map_entry.req : SmartChatModelRequestAdapter2;
  }
  /**
   * @override
   * @returns {typeof SmartChatModelResponseAdapter}
   */
  get res_adapter() {
    const adapter_name = this.adapter_config.api_adapter || "openai";
    const map_entry = adapters_map2[adapter_name];
    return map_entry && map_entry.res ? map_entry.res : SmartChatModelResponseAdapter2;
  }
  /**
   * Synthesize a custom endpoint from the config fields.
   * All fields are optional; fallback to a minimal default.
   * @returns {string}
   */
  get endpoint() {
    const protocol = this.adapter_config.protocol || "http";
    const hostname = this.adapter_config.hostname || "localhost";
    const port = this.adapter_config.port ? `:${this.adapter_config.port}` : "";
    let path = this.adapter_config.path || "";
    if (path && !path.startsWith("/")) path = `/${path}`;
    return `${protocol}://${hostname}${port}${path}`;
  }
  get_adapters_as_options() {
    return Object.keys(adapters_map2).map((adapter_name) => ({ value: adapter_name, name: adapter_name }));
  }
  /**
   * Provide custom settings for configuring
   * the user-defined fields plus the new 'api_adapter'.
   * @override
   * @returns {Object} settings configuration
   */
  get settings_config() {
    return {
      /**
       * Select which specialized request/response adapter
       * you'd like to use for your custom endpoint.
       */
      "[CHAT_ADAPTER].api_adapter": {
        name: "API Adapter",
        type: "dropdown",
        description: "Pick a built-in or external adapter to parse request/response data.",
        // Provide a short selection set, or dynamically gather from keys of adapters_map
        options_callback: "adapter.get_adapters_as_options",
        default: "openai"
      },
      "[CHAT_ADAPTER].id": {
        name: "Model Name",
        type: "text",
        description: "Enter the model name for your endpoint if needed."
      },
      "[CHAT_ADAPTER].protocol": {
        name: "Protocol",
        type: "text",
        description: "e.g. http or https"
      },
      "[CHAT_ADAPTER].hostname": {
        name: "Hostname",
        type: "text",
        description: "e.g. localhost or some.remote.host"
      },
      "[CHAT_ADAPTER].port": {
        name: "Port",
        type: "number",
        description: "Port number or leave blank"
      },
      "[CHAT_ADAPTER].path": {
        name: "Path",
        type: "text",
        description: "Path portion of the URL (leading slash optional)"
      },
      "[CHAT_ADAPTER].streaming": {
        name: "Streaming",
        type: "toggle",
        description: "Enable streaming if your API supports it."
      },
      "[CHAT_ADAPTER].max_input_tokens": {
        name: "Max Input Tokens",
        type: "number",
        description: "Max number of tokens your model can handle in the prompt."
      },
      "[CHAT_ADAPTER].api_key": {
        name: "API Key",
        type: "password",
        description: "If your service requires an API key, add it here."
      }
    };
  }
  /**
   * Return 'true' for get_models params since user might
   * not rely on auto-populating. 
   * @override
   * @returns {true}
   */
  validate_get_models_params() {
    return true;
  }
  /**
   * Unlike most API-based adapters, we do NOT force the user to have model_key set.
   * So we override validate_config() to skip the "No model selected" error.
   * Since this is a custom adapter, the onus is on the user to configure it correctly.
   * @override
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    return { valid: true, message: "Configuration is valid." };
  }
};

// node_modules/smart-chat-model/adapters/groq.js
var SmartChatModelGroqAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "groq";
  static defaults = {
    description: "Groq",
    type: "API",
    endpoint: "https://api.groq.com/openai/v1/chat/completions",
    streaming: true,
    adapter: "Groq",
    models_endpoint: "https://api.groq.com/openai/v1/models",
    default_model: "llama3-8b-8192",
    signup_url: "https://groq.com",
    can_use_tools: true
  };
  /**
   * Request adapter class
   * @returns {typeof SmartChatModelGroqRequestAdapter}
   */
  get req_adapter() {
    return SmartChatModelGroqRequestAdapter2;
  }
  /**
   * Response adapter class
   * @returns {typeof SmartChatModelGroqResponseAdapter}
   */
  get res_adapter() {
    return SmartChatModelGroqResponseAdapter2;
  }
  get models_endpoint_method() {
    return "GET";
  }
  /**
   * Parse model data from Groq API format to a dictionary keyed by model ID.
   * The API returns a list of model objects like:
   * {
   *   "object": "list",
   *   "data": [ { "id": "...", "object": "model", ... }, ... ]
   * }
   * 
   * We'll convert each model to:
   * {
   *   model_name: model.id,
   *   id: model.id,
   *   max_input_tokens: model.context_window,
   *   description: `Owned by: ${model.owned_by}, context: ${model.context_window}`,
   *   multimodal: Check if model name or description suggests multimodality
   * }
   */
  parse_model_data(model_data) {
    if (model_data.object !== "list" || !Array.isArray(model_data.data)) {
      return { "_": { id: "No models found." } };
    }
    const parsed = {};
    for (const m of model_data.data) {
      parsed[m.id] = {
        model_name: m.id,
        id: m.id,
        max_input_tokens: m.context_window || 8192,
        description: `Owned by: ${m.owned_by}, context: ${m.context_window}`,
        // A basic heuristic for multimodal: if 'vision' or 'tool' is in model id
        // Adjust as needed based on known capabilities
        multimodal: m.id.includes("vision")
      };
    }
    return parsed;
  }
  /**
   * Validate configuration for Groq
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    if (!this.adapter_config.model_key) return { valid: false, message: "No model selected." };
    if (!this.api_key) {
      return { valid: false, message: "API key is missing." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};
var SmartChatModelGroqRequestAdapter2 = class extends SmartChatModelRequestAdapter2 {
  _get_openai_content(message) {
    if (["assistant", "tool"].includes(message.role)) {
      if (Array.isArray(message.content)) {
        return message.content.map((part) => {
          if (typeof part === "string") return part;
          if (part?.text) return part.text;
          return "";
        }).join("\n");
      }
    }
    return message.content;
  }
};
var SmartChatModelGroqResponseAdapter2 = class extends SmartChatModelResponseAdapter2 {
};

// node_modules/smart-chat-model/adapters/deepseek.js
var SmartChatModelDeepseekAdapter2 = class extends SmartChatModelApiAdapter2 {
  static key = "deepseek";
  static defaults = {
    description: "DeepSeek",
    type: "API",
    endpoint: "https://api.deepseek.com/chat/completions",
    streaming: true,
    adapter: "DeepSeek",
    models_endpoint: "https://api.deepseek.com/models",
    default_model: "deepseek-base",
    signup_url: "https://deepseek.com/signup",
    can_use_tools: true
  };
  /**
   * Get the request adapter class
   * @returns {typeof SmartChatModelDeepseekRequestAdapter} Request adapter class
   */
  get req_adapter() {
    return SmartChatModelDeepseekRequestAdapter2;
  }
  /**
   * Get the response adapter class
   * @returns {typeof SmartChatModelDeepseekResponseAdapter} Response adapter class
   */
  get res_adapter() {
    return SmartChatModelDeepseekResponseAdapter2;
  }
  get models_endpoint_method() {
    return "GET";
  }
  /**
   * Parse the raw model data from DeepSeek's /v1/models endpoint
   * into a structured map of model objects keyed by model ID.
   * @param {Object} model_data - Raw JSON from DeepSeek
   * @returns {Object} Map of model objects
   */
  parse_model_data(model_data) {
    if (!model_data?.data || !Array.isArray(model_data.data)) {
      return { "_": { id: "No models found." } };
    }
    const parsed = {};
    for (const m of model_data.data) {
      parsed[m.id] = {
        model_name: m.id,
        id: m.id,
        max_input_tokens: m.context_size || 8192,
        description: m.description || m.name || m.id,
        raw: m
      };
    }
    return parsed;
  }
  /**
   * Estimate tokens in user input.
   * @param {string|Object} input - Input text or structured message
   * @returns {Promise<number>} Token count estimate
   */
  async count_tokens(input) {
    const text = typeof input === "string" ? input : JSON.stringify(input);
    return Math.ceil(text.length / 4);
  }
  /**
   * Check if an incoming streaming chunk signals end of stream.
   * @param {CustomEvent} event - SSE event with data
   * @returns {boolean} True if end of stream
   */
  is_end_of_stream(event) {
    if (!event?.data) return false;
    return event.data.includes('"done":true') || event.data.includes("[DONE]");
  }
  /**
   * Validate DeepSeek adapter configuration
   * @returns {Object} { valid: boolean, message: string }
   */
  validate_config() {
    if (!this.api_key) {
      return { valid: false, message: "DeepSeek API key is missing." };
    }
    if (!this.adapter_config.model_key) {
      return { valid: false, message: "No model selected for DeepSeek." };
    }
    return { valid: true, message: "Configuration is valid." };
  }
};
var SmartChatModelDeepseekRequestAdapter2 = class extends SmartChatModelRequestAdapter2 {
  /**
   * Convert incoming request to DeepSeek's expected format
   * Often just reuse the base "to_openai()" if that matches DeepSeek's design
   * @param {boolean} streaming - True if streaming
   * @returns {Object} Request parameters
   */
  to_platform(streaming = false) {
    return this.to_openai(streaming);
  }
};
var SmartChatModelDeepseekResponseAdapter2 = class extends SmartChatModelResponseAdapter2 {
};

// src/smart_env.config.js
var import_obsidian27 = require("obsidian");

// node_modules/smart-collections/utils/collection_instance_name_from.js
function collection_instance_name_from2(class_name) {
  if (class_name.endsWith("Item")) {
    return class_name.replace(/Item$/, "").toLowerCase();
  }
  return class_name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase().replace(/y$/, "ie") + "s";
}

// node_modules/smart-collections/utils/helpers.js
function create_uid2(data) {
  const str = JSON.stringify(data);
  let hash = 0;
  if (str.length === 0) return hash;
  for (let i = 0; i < str.length; i++) {
    const char = str.charCodeAt(i);
    hash = (hash << 5) - hash + char;
    hash = hash & hash;
    if (hash < 0) hash = hash * -1;
  }
  return hash.toString() + str.length;
}

// node_modules/smart-collections/utils/deep_equal.js
function deep_equal2(obj1, obj2, visited = /* @__PURE__ */ new WeakMap()) {
  if (obj1 === obj2) return true;
  if (obj1 === null || obj2 === null || obj1 === void 0 || obj2 === void 0) return false;
  if (typeof obj1 !== typeof obj2 || Array.isArray(obj1) !== Array.isArray(obj2)) return false;
  if (Array.isArray(obj1)) {
    if (obj1.length !== obj2.length) return false;
    return obj1.every((item, index) => deep_equal2(item, obj2[index], visited));
  }
  if (typeof obj1 === "object") {
    if (visited.has(obj1)) return visited.get(obj1) === obj2;
    visited.set(obj1, obj2);
    const keys1 = Object.keys(obj1);
    const keys2 = Object.keys(obj2);
    if (keys1.length !== keys2.length) return false;
    return keys1.every((key) => deep_equal2(obj1[key], obj2[key], visited));
  }
  return obj1 === obj2;
}

// node_modules/smart-collections/utils/get_item_display_name.js
function get_item_display_name2(key, show_full_path) {
  if (show_full_path) {
    return key.split("/").join(" > ").replace(".md", "");
  }
  return key.split("/").pop().replace(".md", "");
}

// node_modules/smart-collections/utils/compare.js
function compare2(item, to_item, params = {}) {
  const {
    algo = (a, b) => ({ is_equal: a === b })
  } = params;
  if (typeof algo !== "function") return { item, error: "Invalid comparison function" };
  return {
    item,
    ...algo(item, to_item) || { error: "Comparison function did not return a result" }
  };
}

// node_modules/smart-collections/item.js
var CollectionItem2 = class _CollectionItem {
  /**
   * Default properties for an instance of CollectionItem.
   * Override in subclasses to define different defaults.
   * @returns {Object}
   */
  static get defaults() {
    return {
      data: {}
    };
  }
  /**
   * @param {Object} env - The environment/context.
   * @param {Object|null} [data=null] - Initial data for the item.
   */
  constructor(env, data = null) {
    env.create_env_getter(this);
    this.config = this.env?.config;
    this.merge_defaults();
    if (data) deep_merge2(this.data, data);
    if (!this.data.class_name) this.data.class_name = this.collection.item_class_name;
  }
  /**
   * Loads an item from data and initializes it.
   * @param {Object} env
   * @param {Object} data
   * @returns {CollectionItem}
   */
  static load(env, data) {
    const item = new this(env, data);
    item.init();
    return item;
  }
  /**
   * Merge default properties from the entire inheritance chain.
   * @private
   */
  merge_defaults() {
    let current_class = this.constructor;
    while (current_class) {
      for (let key in current_class.defaults) {
        const default_val = current_class.defaults[key];
        if (typeof default_val === "object") {
          this[key] = { ...default_val, ...this[key] };
        } else {
          this[key] = this[key] === void 0 ? default_val : this[key];
        }
      }
      current_class = Object.getPrototypeOf(current_class);
    }
  }
  /**
   * Generates or retrieves a unique key for the item.
   * Key syntax supports:
   * - `[i]` for sequences
   * - `/` for super-sources (groups, directories, clusters)
   * - `#` for sub-sources (blocks)
   * @returns {string} The unique key
   */
  get_key() {
    return create_uid2(this.data);
  }
  /**
   * Updates the item data and returns true if changed.
   * @param {Object} data
   * @returns {boolean} True if data changed.
   */
  update_data(data) {
    const sanitized_data = this.sanitize_data(data);
    const current_data = { ...this.data };
    deep_merge2(current_data, sanitized_data);
    const changed = !deep_equal2(this.data, current_data);
    if (!changed) return false;
    this.data = current_data;
    return true;
  }
  /**
   * Sanitizes data for saving. Ensures no circular references.
   * @param {*} data
   * @returns {*} Sanitized data.
   */
  sanitize_data(data) {
    if (data instanceof _CollectionItem) return data.ref;
    if (Array.isArray(data)) return data.map((val) => this.sanitize_data(val));
    if (typeof data === "object" && data !== null) {
      return Object.keys(data).reduce((acc, key) => {
        acc[key] = this.sanitize_data(data[key]);
        return acc;
      }, {});
    }
    return data;
  }
  /**
   * Initializes the item. Override as needed.
   * @param {Object} [input_data] - Additional data that might be provided on creation.
   */
  init(input_data) {
  }
  /**
   * Queues this item for saving.
   */
  queue_save() {
    this._queue_save = true;
  }
  /**
   * Saves this item using its data adapter.
   * @returns {Promise<void>}
   */
  async save() {
    try {
      await this.data_adapter.save_item(this);
      this.init();
    } catch (err) {
      this._queue_save = true;
      console.error(err, err.stack);
    }
  }
  /**
   * Queues this item for loading.
   */
  queue_load() {
    this._queue_load = true;
  }
  /**
   * Loads this item using its data adapter.
   * @returns {Promise<void>}
   */
  async load() {
    try {
      await this.data_adapter.load_item(this);
      this.init();
    } catch (err) {
      this._load_error = err;
      this.on_load_error(err);
    }
  }
  /**
   * Handles load errors by re-queuing for load.
   * Override if needed.
   * @param {Error} err
   */
  on_load_error(err) {
    this.queue_load();
  }
  /**
   * Validates the item before saving. Checks for presence and validity of key.
   * @returns {boolean}
   */
  validate_save() {
    if (!this.key) return false;
    if (this.key.trim() === "") return false;
    if (this.key === "undefined") return false;
    return true;
  }
  /**
   * Marks this item as deleted. This does not immediately remove it from memory,
   * but queues a save that will result in the item being removed from persistent storage.
   */
  delete() {
    this.deleted = true;
    this.queue_save();
  }
  /**
   * Filters items in the collection based on provided options.
   * functional filter (returns true or false) for filtering items in collection; called by collection class
   * @param {Object} filter_opts - Filtering options.
   * @param {string} [filter_opts.exclude_key] - A single key to exclude.
   * @param {string[]} [filter_opts.exclude_keys] - An array of keys to exclude. If exclude_key is provided, it's added to this array.
   * @param {string} [filter_opts.exclude_key_starts_with] - Exclude keys starting with this string.
   * @param {string[]} [filter_opts.exclude_key_starts_with_any] - Exclude keys starting with any of these strings.
   * @param {string} [filter_opts.exclude_key_includes] - Exclude keys that include this string.
   * @param {string[]} [filter_opts.exclude_key_includes_any] - Exclude keys that include any of these strings.
   * @param {string} [filter_opts.exclude_key_ends_with] - Exclude keys ending with this string.
   * @param {string[]} [filter_opts.exclude_key_ends_with_any] - Exclude keys ending with any of these strings.
   * @param {string} [filter_opts.key_ends_with] - Include only keys ending with this string.
   * @param {string} [filter_opts.key_starts_with] - Include only keys starting with this string.
   * @param {string[]} [filter_opts.key_starts_with_any] - Include only keys starting with any of these strings.
   * @param {string} [filter_opts.key_includes] - Include only keys that include this string.
   * @returns {boolean} True if the item passes the filter, false otherwise.
   */
  filter(filter_opts = {}) {
    const {
      exclude_key,
      exclude_keys = exclude_key ? [exclude_key] : [],
      exclude_key_starts_with,
      exclude_key_starts_with_any,
      exclude_key_includes,
      exclude_key_includes_any,
      exclude_key_ends_with,
      exclude_key_ends_with_any,
      key_ends_with,
      key_starts_with,
      key_starts_with_any,
      key_includes,
      key_includes_any
    } = filter_opts;
    if (exclude_keys?.includes(this.key)) return false;
    if (exclude_key_starts_with && this.key.startsWith(exclude_key_starts_with)) return false;
    if (exclude_key_starts_with_any && exclude_key_starts_with_any.some((prefix) => this.key.startsWith(prefix))) return false;
    if (exclude_key_includes && this.key.includes(exclude_key_includes)) return false;
    if (exclude_key_includes_any && exclude_key_includes_any.some((include) => this.key.includes(include))) return false;
    if (exclude_key_ends_with && this.key.endsWith(exclude_key_ends_with)) return false;
    if (exclude_key_ends_with_any && exclude_key_ends_with_any.some((suffix) => this.key.endsWith(suffix))) return false;
    if (key_ends_with && !this.key.endsWith(key_ends_with)) return false;
    if (key_starts_with && !this.key.startsWith(key_starts_with)) return false;
    if (key_starts_with_any && !key_starts_with_any.some((prefix) => this.key.startsWith(prefix))) return false;
    if (key_includes && !this.key.includes(key_includes)) return false;
    if (key_includes_any && !key_includes_any.some((include) => this.key.includes(include))) return false;
    return true;
  }
  /**
   * Compares this item with another item using a custom comparison function.
   * @param {Item} to_item - The item to compare with.
   * @param {Object} [params={}] - Additional parameters for the comparison.
   * @returns {Object} An object containing the original item and the comparison results.
   */
  compare(to_item, params = {}) {
    return compare2(this, to_item, params);
  }
  /**
   * Parses item data for additional processing. Override as needed.
   * @deprecated is this used anywhere?
   */
  parse() {
  }
  get actions() {
    if (!this._actions) {
      this._actions = Object.entries(this.env.opts.items[this.item_type_key].actions || {}).reduce((acc, [k, v]) => {
        acc[k] = v.bind(this);
        return acc;
      }, {});
    }
    return this._actions;
  }
  /**
   * Derives the collection key from the class name.
   * @returns {string}
   */
  static get collection_key() {
    let name = this.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return collection_instance_name_from2(name);
  }
  /**
   * @returns {string} The collection key for this item.
   */
  get collection_key() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return collection_instance_name_from2(name);
  }
  /**
   * Retrieves the parent collection from the environment.
   * @returns {Collection}
   */
  get collection() {
    return this.env[this.collection_key];
  }
  /**
   * @returns {string} The item's key.
   */
  get key() {
    return this.data?.key || this.get_key();
  }
  get item_type_key() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return camel_case_to_snake_case2(name);
  }
  /**
   * A simple reference object for this item.
   * @returns {{collection_key: string, key: string}}
   */
  get ref() {
    return { collection_key: this.collection_key, key: this.key };
  }
  /**
   * Emits an event with item metadata.
   *
   * @param {string} event_key
   * @param {Object} [payload={}]
   * @returns {void}
   */
  emit_event(event_key, payload = {}) {
    this.env.events?.emit(event_key, { collection_key: this.collection_key, item_key: this.key, ...payload });
  }
  /**
   * @returns {Object} The data adapter for this item's collection.
   */
  get data_adapter() {
    return this.collection.data_adapter;
  }
  /**
   * @returns {Object} The filesystem adapter.
   */
  get data_fs() {
    return this.collection.data_fs;
  }
  /**
   * Access to collection-level settings.
   * @returns {Object}
   */
  get settings() {
    if (!this.env.settings[this.collection_key]) this.env.settings[this.collection_key] = {};
    return this.env.settings[this.collection_key];
  }
  set settings(settings) {
    this.env.settings[this.collection_key] = settings;
    this.env.smart_settings.save();
  }
  /**
   * @deprecated use env.smart_view
   * @returns {Object}
   */
  get smart_view() {
    if (!this._smart_view) this._smart_view = this.env.init_module("smart_view");
    return this._smart_view;
  }
  /**
   * Retrieves the display name of the collection item.
   * @readonly
   * @deprecated Use `get_item_display_name(key, show_full_path)` instead (keep UI logic out of collections).
   * @returns {string} The display name.
   */
  get name() {
    return get_item_display_name2(
      this.key,
      this.env.settings.smart_view_filter?.show_full_path
    );
  }
};

// node_modules/smart-collections/collection.js
var AsyncFunction2 = Object.getPrototypeOf(async function() {
}).constructor;
var Collection2 = class {
  /**
   * Constructs a new Collection instance.
   *
   * @param {Object} env - The environment context containing configurations and adapters.
   * @param {Object} [opts={}] - Optional configuration.
   * @param {string} [opts.collection_key] - Custom key to override default collection name.
   * @param {string} [opts.data_dir] - Custom data directory path.
   * @param {boolean} [opts.prevent_load_on_init] - Whether to prevent loading items on initialization.
   */
  constructor(env, opts = {}) {
    env.create_env_getter(this);
    this.opts = opts;
    if (opts.collection_key) this.collection_key = opts.collection_key;
    this.env[this.collection_key] = this;
    this.config = this.env.config;
    this.items = {};
    this.loaded = null;
    this._loading = false;
    this.load_time_ms = null;
    this.settings_container = null;
  }
  /**
   * Initializes a new collection in the environment. Override in subclass if needed.
   *
   * @param {Object} env
   * @param {Object} [opts={}]
   * @returns {Promise<void>}
   */
  static async init(env, opts = {}) {
    env[this.collection_key] = new this(env, opts);
    await env[this.collection_key].init();
    env.collections[this.collection_key] = "init";
  }
  /**
   * The unique collection key derived from the class name.
   * @returns {string}
   */
  static get collection_key() {
    let name = this.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
  }
  /**
   * Instance-level init. Override in subclasses if necessary.
   * @returns {Promise<void>}
   */
  async init() {
  }
  /**
   * Creates or updates an item in the collection.
   * - If `data` includes a key that matches an existing item, that item is updated.
   * - Otherwise, a new item is created.
   * After updating or creating, the item is validated. If validation fails, the item is logged and returned without being saved.
   * If validation succeeds for a new item, it is added to the collection and marked for saving.
   *
   * If the item’s `init()` method is async, a promise is returned that resolves once init completes.
   * 
   * NOTE: wrapping in try/catch seems to fail to catch errors thrown in async init functions when awaiting create_or_update
   *
   * @param {Object} [data={}] - Data for creating/updating an item.
   * @returns {Promise<Item>|Item} The created or updated item. May return a promise if `init()` is async.
   */
  create_or_update(data = {}) {
    const existing_item = this.find_by(data);
    const item = existing_item ? existing_item : new this.item_type(this.env);
    item._queue_save = !existing_item;
    const data_changed = item.update_data(data);
    if (!existing_item && !item.validate_save()) {
      return item;
    }
    if (!existing_item) {
      this.set(item);
    }
    if (existing_item && !data_changed) return existing_item;
    if (item.init instanceof AsyncFunction2) {
      return new Promise((resolve) => {
        item.init(data).then(() => resolve(item));
      });
    }
    item.init(data);
    return item;
  }
  /**
   * Finds an item by partial data match (first checks key). If `data.key` provided,
   * returns the item with that key; otherwise attempts a match by merging data.
   *
   * @param {Object} data - Data to match against.
   * @returns {Item|null}
   */
  find_by(data) {
    if (data.key) return this.get(data.key);
    const temp = new this.item_type(this.env);
    const temp_data = JSON.parse(JSON.stringify(data, temp.sanitize_data(data)));
    deep_merge2(temp.data, temp_data);
    return temp.key ? this.get(temp.key) : null;
  }
  /**
   * Filters items based on provided filter options or a custom function.
   *
   * @param {Object|Function} [filter_opts={}] - Filter options or a predicate function.
   * @returns {Item[]} Array of filtered items.
   */
  filter(filter_opts = {}) {
    if (typeof filter_opts === "function") {
      return Object.values(this.items).filter(filter_opts);
    }
    const prepared_filter_opts = this.prepare_filter(filter_opts);
    const results = [];
    const { first_n } = prepared_filter_opts;
    for (const item of Object.values(this.items)) {
      if (first_n && results.length >= first_n) break;
      if (item.filter(prepared_filter_opts)) results.push(item);
    }
    return results;
  }
  /**
   * Alias for `filter()`
   * @param {Object|Function} filter_opts
   * @returns {Item[]}
   */
  list(filter_opts) {
    return this.filter(filter_opts);
  }
  /**
   * Prepares filter options. Can be overridden by subclasses to normalize filter options.
   *
   * @param {Object} filter_opts
   * @returns {Object} Prepared filter options.
   */
  prepare_filter(filter_opts) {
    return filter_opts;
  }
  /**
   * Retrieves an item by key.
   * @param {string} key
   * @returns {Item|undefined}
   */
  get(key) {
    return this.items[key];
  }
  /**
   * Retrieves multiple items by an array of keys.
   * @param {string[]} keys
   * @returns {Item[]}
   */
  get_many(keys = []) {
    if (!Array.isArray(keys)) {
      console.error("get_many called with non-array keys:", keys);
      return [];
    }
    return keys.map((key) => this.get(key)).filter(Boolean);
  }
  /**
   * Retrieves a random item from the collection, optionally filtered by options.
   * @param {Object} [opts]
   * @returns {Item|undefined}
   */
  get_rand(opts = null) {
    if (opts) {
      const filtered = this.filter(opts);
      return filtered[Math.floor(Math.random() * filtered.length)];
    }
    const keys = this.keys;
    return this.items[keys[Math.floor(Math.random() * keys.length)]];
  }
  /**
   * Adds or updates an item in the collection.
   * @param {Item} item
   */
  set(item) {
    if (!item.key) throw new Error("Item must have a key property");
    this.items[item.key] = item;
  }
  /**
   * Updates multiple items by their keys.
   * @param {string[]} keys
   * @param {Object} data
   */
  update_many(keys = [], data = {}) {
    this.get_many(keys).forEach((item) => item.update_data(data));
  }
  /**
   * Clears all items from the collection.
   */
  clear() {
    this.items = {};
  }
  /**
   * @returns {string} The collection key, can be overridden by opts.collection_key
   */
  get collection_key() {
    return this._collection_key ? this._collection_key : this.constructor.collection_key;
  }
  set collection_key(key) {
    this._collection_key = key;
  }
  /**
   * Lazily initializes and returns the data adapter instance for this collection.
   * @returns {Object} The data adapter instance.
   */
  get data_adapter() {
    if (!this._data_adapter) {
      const AdapterClass = this.get_adapter_class("data");
      this._data_adapter = new AdapterClass(this);
    }
    return this._data_adapter;
  }
  get_adapter_class(type) {
    const config = this.env.opts.collections?.[this.collection_key];
    const adapter_key = type + "_adapter";
    const adapter_module = config?.[adapter_key] ?? this.env.opts.collections?.smart_collections?.[adapter_key];
    if (typeof adapter_module === "function") return adapter_module;
    if (typeof adapter_module?.collection === "function") return adapter_module.collection;
    throw new Error(`No '${type}' adapter class found for ${this.collection_key} or smart_collections`);
  }
  /**
   * Data directory strategy for this collection. Defaults to 'multi'.
   * @returns {string}
   */
  get data_dir() {
    return this.collection_key;
  }
  /**
   * File system adapter from the environment.
   * @returns {Object}
   */
  get data_fs() {
    return this.env.data_fs;
  }
  /**
   * Derives the corresponding item class name based on this collection's class name.
   * @returns {string}
   */
  get item_class_name() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    if (name.endsWith("ies")) return name.slice(0, -3) + "y";
    else if (name.endsWith("s")) return name.slice(0, -1);
    return name + "Item";
  }
  /**
   * Derives a readable item name from the item class name.
   * @returns {string}
   */
  get item_name() {
    return this.item_class_name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
  }
  /**
   * Retrieves the item type (constructor) from the environment.
   * @returns {Function} Item constructor.
   */
  get item_type() {
    if (this.opts.item_type) return this.opts.item_type;
    return this.env.item_types[this.item_class_name];
  }
  /**
   * Returns an array of all keys in the collection.
   * @returns {string[]}
   */
  get keys() {
    return Object.keys(this.items);
  }
  /**
   * @deprecated use data_adapter instead (2024-09-14)
   */
  get adapter() {
    return this.data_adapter;
  }
  /**
   * @method process_save_queue
   * @description 
   * Saves items flagged for saving (_queue_save) back to AJSON or SQLite. This ensures persistent storage 
   * of any updates made since last load/import. This method also writes changes to disk (AJSON files or DB).
   */
  async process_save_queue(opts = {}) {
    if (opts.force) {
      Object.values(this.items).forEach((item) => item._queue_save = true);
    }
    await this.data_adapter.process_save_queue(opts);
  }
  /**
   * @alias process_save_queue
   * @returns {Promise<void>}
   */
  async save(opts = {}) {
    await this.process_save_queue(opts);
  }
  /**
   * @method process_load_queue
   * @description 
   * Loads items that have been flagged for loading (_queue_load). This may involve 
   * reading from AJSON/SQLite or re-importing from markdown if needed. 
   * Called once initial environment is ready and collections are known.
   */
  async process_load_queue() {
    await this.data_adapter.process_load_queue();
  }
  /**
   * Retrieves processed settings configuration.
   * @returns {Object}
   */
  get settings_config() {
    return this.process_settings_config({});
  }
  /**
   * Processes given settings config, adding prefixes and handling conditionals.
   *
   * @private
   * @param {Object} _settings_config
   * @param {string} [prefix='']
   * @returns {Object}
   */
  process_settings_config(_settings_config, prefix = "") {
    const add_prefix = (key) => prefix && !key.includes(`${prefix}.`) ? `${prefix}.${key}` : key;
    return Object.entries(_settings_config).reduce((acc, [key, val]) => {
      let new_val = { ...val };
      if (new_val.conditional) {
        if (!new_val.conditional(this)) return acc;
        delete new_val.conditional;
      }
      if (new_val.callback) new_val.callback = add_prefix(new_val.callback);
      if (new_val.btn_callback) new_val.btn_callback = add_prefix(new_val.btn_callback);
      if (new_val.options_callback) new_val.options_callback = add_prefix(new_val.options_callback);
      const new_key = add_prefix(this.process_setting_key(key));
      acc[new_key] = new_val;
      return acc;
    }, {});
  }
  /**
   * Processes an individual setting key. Override if needed.
   * @param {string} key
   * @returns {string}
   */
  process_setting_key(key) {
    return key;
  }
  /**
   * Default settings for this collection. Override in subclasses as needed.
   * @returns {Object}
   */
  get default_settings() {
    return {};
  }
  /**
   * Current settings for the collection.
   * Initializes with default settings if none exist.
   * @returns {Object}
   */
  get settings() {
    if (!this.env.settings[this.collection_key]) {
      this.env.settings[this.collection_key] = this.default_settings;
    }
    return this.env.settings[this.collection_key];
  }
  /**
   * @deprecated use env.smart_view instead
   * @returns {Object} smart_view instance
   */
  get smart_view() {
    if (!this._smart_view) this._smart_view = this.env.init_module("smart_view");
    return this._smart_view;
  }
  /**
   * Renders the settings for the collection into a given container.
   * @deprecated use env.render_component('collection_settings', this) instead (2025-05-25: decouple UI from collections)
   * @param {HTMLElement} [container=this.settings_container]
   * @param {Object} opts
   * @returns {Promise<HTMLElement>}
   */
  async render_settings(container = this.settings_container, opts = {}) {
    return await this.render_collection_settings(container, opts);
  }
  /**
   * Helper function to render collection settings.
   * @deprecated use env.render_component('collection_settings', this) instead (2025-05-25: decouple UI from collections)
   * @param {HTMLElement} [container=this.settings_container]
   * @param {Object} opts
   * @returns {Promise<HTMLElement>}
   */
  async render_collection_settings(container = this.settings_container, opts = {}) {
    if (container && (!this.settings_container || this.settings_container !== container)) {
      this.settings_container = container;
    } else if (!container) {
      container = this.env.smart_view.create_doc_fragment("<div></div>");
    }
    this.env.smart_view.safe_inner_html(container, `<div class="sc-loading">Loading ${this.collection_key} settings...</div>`);
    const frag = await this.env.render_component("settings", this, opts);
    this.env.smart_view.empty(container);
    container.appendChild(frag);
    return container;
  }
  /**
   * Unloads collection data from memory.
   */
  unload() {
    this.clear();
    this.unloaded = true;
    this.env.collections[this.collection_key] = null;
  }
  /**
   * Displays a process notice if the operation exceeds one second.
   *
   * @param {string} process - Identifier for the ongoing process.
   * @param {Object} [opts={}] - Additional options passed to the notice.
   */
  show_process_notice(process2, opts = {}) {
    if (!this.debounce_process_notice) this.debounce_process_notice = {};
    this.debounce_process_notice[process2] = setTimeout(() => {
      this.debounce_process_notice[process2] = null;
      this.env.notices?.show(process2, { collection_key: this.collection_key, ...opts });
    }, 1e3);
  }
  /**
   * Clears any pending process notice timers and removes active notices.
   *
   * @param {string} process - Identifier for the process notice to clear.
   */
  clear_process_notice(process2) {
    if (this.debounce_process_notice?.[process2]) {
      clearTimeout(this.debounce_process_notice[process2]);
      this.debounce_process_notice[process2] = null;
    } else {
      this.env.notices?.remove(process2);
    }
  }
  /**
   * Emits an event with collection metadata.
   *
   * @param {string} event_key
   * @param {Object} [payload={}]
   * @returns {void}
   */
  emit_event(event_key, payload = {}) {
    this.env.events?.emit(event_key, { collection_key: this.collection_key, ...payload });
  }
  /**
   * Lazily binds action functions to the collection instance.
   *
   * @returns {Object} Bound action functions keyed by name.
   */
  get actions() {
    if (!this._actions) {
      this._actions = Object.entries(this.opts.actions || {}).reduce((acc, [k, v]) => {
        acc[k] = v.bind(this);
        return acc;
      }, {});
    }
    return this._actions;
  }
};

// node_modules/smart-entities/adapters/_adapter.js
var EntitiesVectorAdapter2 = class {
  /**
   * @constructor
   * @param {Object} collection - The collection (SmartEntities or derived class) instance.
   */
  constructor(collection) {
    this.collection = collection;
  }
  /**
   * Find the nearest entities to the given vector.
   * @async
   * @param {number[]} vec - The reference vector.
   * @param {Object} [filter={}] - Optional filters (limit, exclude, etc.)
   * @returns {Promise<Array<{item:Object, score:number}>>} Array of results sorted by score descending.
   * @throws {Error} Not implemented by default.
   */
  async nearest(vec, filter = {}) {
    throw new Error("EntitiesVectorAdapter.nearest() not implemented");
  }
  /**
   * Find the furthest entities from the given vector.
   * @async
   * @param {number[]} vec - The reference vector.
   * @param {Object} [filter={}] - Optional filters (limit, exclude, etc.)
   * @returns {Promise<Array<{item:Object, score:number}>>} Array of results sorted by score ascending (furthest).
   * @throws {Error} Not implemented by default.
   */
  async furthest(vec, filter = {}) {
    throw new Error("EntitiesVectorAdapter.furthest() not implemented");
  }
  /**
   * Embed a batch of entities.
   * @async
   * @param {Object[]} entities - Array of entity instances to embed.
   * @returns {Promise<void>}
   * @throws {Error} Not implemented by default.
   */
  async embed_batch(entities) {
    throw new Error("EntitiesVectorAdapter.embed_batch() not implemented");
  }
  /**
   * Process a queue of entities waiting to be embedded.
   * Typically, this will call embed_batch in batches and update entities.
   * @async
   * @param {Object[]} embed_queue - Array of entities to embed.
   * @returns {Promise<void>}
   * @throws {Error} Not implemented by default.
   */
  async process_embed_queue(embed_queue) {
    throw new Error("EntitiesVectorAdapter.process_embed_queue() not implemented");
  }
};
var EntityVectorAdapter2 = class {
  /**
   * @constructor
   * @param {Object} item - The SmartEntity instance that this adapter is associated with.
   */
  constructor(item) {
    this.item = item;
  }
  /**
   * Retrieve the current vector embedding for this entity.
   * @async
   * @returns {Promise<number[]|undefined>} The entity's vector or undefined if not set.
   * @throws {Error} Not implemented by default.
   */
  async get_vec() {
    throw new Error("EntityVectorAdapter.get_vec() not implemented");
  }
  /**
   * Store/update the vector embedding for this entity.
   * @async
   * @param {number[]} vec - The vector to set.
   * @returns {Promise<void>}
   * @throws {Error} Not implemented by default.
   */
  async set_vec(vec) {
    throw new Error("EntityVectorAdapter.set_vec() not implemented");
  }
  /**
   * Delete/remove the vector embedding for this entity.
   * @async
   * @returns {Promise<void>}
   * @throws {Error} Not implemented by default.
   */
  async delete_vec() {
    throw new Error("EntityVectorAdapter.delete_vec() not implemented");
  }
};

// node_modules/smart-utils/results_acc.js
function results_acc2(_acc, result, ct = 10) {
  if (_acc.results.size < ct) {
    _acc.results.add(result);
    if (_acc.results.size === ct && _acc.min === Number.POSITIVE_INFINITY) {
      let { minScore, minObj } = find_min2(_acc.results);
      _acc.min = minScore;
      _acc.minResult = minObj;
    }
  } else if (result.score > _acc.min) {
    _acc.results.add(result);
    _acc.results.delete(_acc.minResult);
    let { minScore, minObj } = find_min2(_acc.results);
    _acc.min = minScore;
    _acc.minResult = minObj;
  }
}
function furthest_acc2(_acc, result, ct = 10) {
  if (_acc.results.size < ct) {
    _acc.results.add(result);
    if (_acc.results.size === ct && _acc.max === Number.NEGATIVE_INFINITY) {
      let { maxScore, maxObj } = find_max2(_acc.results);
      _acc.max = maxScore;
      _acc.maxResult = maxObj;
    }
  } else if (result.score < _acc.max) {
    _acc.results.add(result);
    _acc.results.delete(_acc.maxResult);
    let { maxScore, maxObj } = find_max2(_acc.results);
    _acc.max = maxScore;
    _acc.maxResult = maxObj;
  }
}
function find_min2(results) {
  let minScore = Number.POSITIVE_INFINITY;
  let minObj = null;
  for (const obj of results) {
    if (obj.score < minScore) {
      minScore = obj.score;
      minObj = obj;
    }
  }
  return { minScore, minObj };
}
function find_max2(results) {
  let maxScore = Number.NEGATIVE_INFINITY;
  let maxObj = null;
  for (const obj of results) {
    if (obj.score > maxScore) {
      maxScore = obj.score;
      maxObj = obj;
    }
  }
  return { maxScore, maxObj };
}

// node_modules/smart-utils/sort_by_score.js
function sort_by_score2(a, b) {
  const epsilon = 1e-9;
  const score_diff = a.score - b.score;
  if (Math.abs(score_diff) < epsilon) return 0;
  return score_diff > 0 ? -1 : 1;
}
function sort_by_score_descending2(a, b) {
  return sort_by_score2(a, b);
}
function sort_by_score_ascending2(a, b) {
  return sort_by_score2(a, b) * -1;
}

// node_modules/smart-entities/adapters/default.js
var DefaultEntitiesVectorAdapter2 = class extends EntitiesVectorAdapter2 {
  constructor(collection) {
    super(collection);
    this._is_processing_embed_queue = false;
    this._reset_embed_queue_stats();
  }
  /**
   * Find the nearest entities to the given vector.
   * @async
   * @param {number[]} vec - The reference vector.
   * @param {Object} [filter={}] - Optional filters (limit, exclude, etc.)
   * @returns {Promise<Array<{item:Object, score:number}>>} Array of results sorted by score descending.
   */
  async nearest(vec, filter = {}) {
    if (!vec || !Array.isArray(vec)) {
      throw new Error("Invalid vector input to nearest()");
    }
    const {
      limit = 50
      // TODO: default configured in settings
    } = filter;
    const nearest = this.collection.filter(filter).reduce((acc, item) => {
      if (!item.vec) return acc;
      const result = { item, score: cos_sim2(vec, item.vec) };
      results_acc2(acc, result, limit);
      return acc;
    }, { min: 0, results: /* @__PURE__ */ new Set() });
    return Array.from(nearest.results).sort(sort_by_score_descending2);
  }
  /**
   * Find the furthest entities from the given vector.
   * @async
   * @param {number[]} vec - The reference vector.
   * @param {Object} [filter={}] - Optional filters (limit, exclude, etc.)
   * @returns {Promise<Array<{item:Object, score:number}>>} Array of results sorted by score ascending (furthest).
   */
  async furthest(vec, filter = {}) {
    if (!vec || !Array.isArray(vec)) {
      throw new Error("Invalid vector input to furthest()");
    }
    const {
      limit = 50
      // TODO: default configured in settings
    } = filter;
    const furthest = this.collection.filter(filter).reduce((acc, item) => {
      if (!item.vec) return acc;
      const result = { item, score: cos_sim2(vec, item.vec) };
      furthest_acc2(acc, result, limit);
      return acc;
    }, { max: 0, results: /* @__PURE__ */ new Set() });
    return Array.from(furthest.results).sort(sort_by_score_ascending2);
  }
  /**
   * Embed a batch of entities.
   * @async
   * @param {Object[]} entities - Array of entity instances to embed.
   * @returns {Promise<void>}
   */
  async embed_batch(entities) {
    if (!this.collection.embed_model) {
      throw new Error("No embed_model found in collection for embedding");
    }
    await Promise.all(entities.map((e) => e.get_embed_input()));
    const embeddings = await this.collection.embed_model.embed_batch(entities);
    embeddings.forEach((emb, i) => {
      const entity = entities[i];
      entity.vec = emb.vec;
      entity.data.last_embed = entity.data.last_read;
      if (emb.tokens !== void 0) entity.tokens = emb.tokens;
    });
  }
  /**
   * Process a queue of entities waiting to be embedded.
   * Prevents multiple concurrent runs by using `_is_processing_embed_queue`.
   * @async
   * @returns {Promise<void>}
   */
  async process_embed_queue() {
    if (this._is_processing_embed_queue) {
      console.log("process_embed_queue is already running, skipping concurrent call.");
      return;
    }
    this._is_processing_embed_queue = true;
    try {
      if (!this.collection.embed_model.is_loaded) {
        await this.collection.embed_model.load();
      }
    } catch (e) {
      this.collection.emit_event("embed_model:load_failed");
      this.notices?.show("Failed to load embed_model");
      return;
    }
    try {
      const embed_queue = this.collection.embed_queue;
      this._reset_embed_queue_stats();
      if (this.collection.embed_model_key === "None") {
        console.log(`Smart Connections: No active embedding model for ${this.collection.collection_key}, skipping embedding`);
        return;
      }
      if (!this.collection.embed_model) {
        console.log(`Smart Connections: No active embedding model for ${this.collection.collection_key}, skipping embedding`);
        return;
      }
      const datetime_start = /* @__PURE__ */ new Date();
      if (!embed_queue.length) {
        console.log(`Smart Connections: No items in ${this.collection.collection_key} embed queue`);
        return;
      }
      console.log(`Time spent getting embed queue: ${(/* @__PURE__ */ new Date()).getTime() - datetime_start.getTime()}ms`);
      console.log(`Processing ${this.collection.collection_key} embed queue: ${embed_queue.length} items`);
      for (let i = 0; i < embed_queue.length; i += this.collection.embed_model.batch_size) {
        if (this.is_queue_halted) {
          this.is_queue_halted = false;
          break;
        }
        this._show_embed_progress_notice(embed_queue.length);
        const batch = embed_queue.slice(i, i + this.collection.embed_model.batch_size);
        await Promise.all(batch.map((item) => item.get_embed_input()));
        try {
          const start_time = Date.now();
          await this.embed_batch(batch);
          this.total_time += Date.now() - start_time;
        } catch (e) {
          if (e && e.message && e.message.includes("API key not set")) {
            this.halt_embed_queue_processing(`API key not set for ${this.collection.embed_model_key}
Please set the API key in the settings.`);
          }
          console.error(e);
          console.error(`Error processing ${this.collection.collection_key} embed queue: ` + JSON.stringify(e || {}, null, 2));
        }
        batch.forEach((item) => {
          item.embed_hash = item.read_hash;
          item._queue_save = true;
        });
        this.embedded_total += batch.length;
        this.total_tokens += batch.reduce((acc, item) => acc + (item.tokens || 0), 0);
        if (this.embedded_total - this.last_save_total > 1e3) {
          this.last_save_total = this.embedded_total;
          await this.collection.process_save_queue();
          if (this.collection.block_collection) {
            console.log(`Saving ${this.collection.block_collection.collection_key} block collection`);
            await this.collection.block_collection.process_save_queue();
          }
        }
      }
      this._show_embed_completion_notice(embed_queue.length);
      await this.collection.process_save_queue();
      if (this.collection.block_collection) {
        await this.collection.block_collection.process_save_queue();
      }
    } finally {
      this._is_processing_embed_queue = false;
    }
  }
  get should_show_embed_progress_notice() {
    if (Date.now() - (this.last_notice_time ?? 0) > 3e4) {
      return true;
    }
    return this.embedded_total - this.last_notice_embedded_total >= 100;
  }
  /**
   * Displays the embedding progress notice.
   * @private
   * @returns {void}
   */
  _show_embed_progress_notice(embed_queue_length) {
    if (embed_queue_length < 100) return;
    if (!this.should_show_embed_progress_notice) return;
    this.last_notice_time = Date.now();
    this.last_notice_embedded_total = this.embedded_total;
    this.collection.emit_event("embedding:progress_reported", {
      progress: this.embedded_total,
      total: embed_queue_length,
      tokens_per_second: this._calculate_embed_tokens_per_second(),
      model_name: this.collection.embed_model_key
    });
    this.notices?.show("embedding_progress", {
      progress: this.embedded_total,
      total: embed_queue_length,
      tokens_per_second: this._calculate_embed_tokens_per_second(),
      model_name: this.collection.embed_model_key
    });
  }
  /**
   * Displays the embedding completion notice.
   * @private
   * @returns {void}
   */
  _show_embed_completion_notice() {
    this.notices?.remove("embedding_progress");
    if (this.embedded_total > 100) {
      this.collection.emit_event("embedding:completed", {
        total_embeddings: this.embedded_total,
        tokens_per_second: this._calculate_embed_tokens_per_second(),
        model_name: this.collection.embed_model_key
      });
      this.notices?.show("embedding_complete", {
        total_embeddings: this.embedded_total,
        tokens_per_second: this._calculate_embed_tokens_per_second(),
        model_name: this.collection.embed_model_key
      });
    }
  }
  /**
   * Halts the embed queue processing.
   * @param {string|null} msg - Optional message.
   */
  halt_embed_queue_processing(msg = null) {
    this.is_queue_halted = true;
    console.log("Embed queue processing halted");
    this.notices?.remove("embedding_progress");
    this.collection.emit_event("embedding:paused", {
      progress: this.embedded_total,
      total: this.collection._embed_queue.length,
      tokens_per_second: this._calculate_embed_tokens_per_second(),
      model_name: this.collection.embed_model_key
    });
    this.notices?.show("embedding_paused", {
      progress: this.embedded_total,
      total: this.collection._embed_queue.length,
      tokens_per_second: this._calculate_embed_tokens_per_second(),
      model_name: this.collection.embed_model_key
    });
  }
  /**
   * Resumes the embed queue processing after a delay.
   * @param {number} [delay=0] - The delay in milliseconds before resuming.
   * @returns {void}
   */
  resume_embed_queue_processing(delay = 0) {
    console.log("resume_embed_queue_processing");
    this.notices?.remove("embedding_paused");
    setTimeout(() => {
      this.embedded_total = 0;
      this.process_embed_queue();
    }, delay);
  }
  /**
   * Calculates the number of tokens processed per second.
   * @private
   * @returns {number} Tokens per second.
   */
  _calculate_embed_tokens_per_second() {
    const elapsed_time = this.total_time / 1e3;
    return Math.round(this.total_tokens / (elapsed_time || 1));
  }
  /**
   * Resets the statistics related to embed queue processing.
   * @private
   * @returns {void}
   */
  _reset_embed_queue_stats() {
    this.collection._embed_queue = [];
    this.embedded_total = 0;
    this.is_queue_halted = false;
    this.last_save_total = 0;
    this.last_notice_embedded_total = 0;
    this.total_tokens = 0;
    this.total_time = 0;
  }
  get notices() {
    return this.collection.notices;
  }
};
var DefaultEntityVectorAdapter2 = class extends EntityVectorAdapter2 {
  get data() {
    return this.item.data;
  }
  /**
   * Retrieve the current vector embedding for this entity.
   * @async
   * @returns {Promise<number[]|undefined>} The entity's vector or undefined if not set.
   */
  async get_vec() {
    return this.vec;
  }
  /**
   * Store/update the vector embedding for this entity.
   * @async
   * @param {number[]} vec - The vector to set.
   * @returns {Promise<void>}
   */
  async set_vec(vec) {
    this.vec = vec;
  }
  /**
   * Delete/remove the vector embedding for this entity.
   * @async
   * @returns {Promise<void>}
   */
  async delete_vec() {
    if (this.item.data?.embeddings?.[this.item.embed_model_key]) {
      delete this.item.data.embeddings[this.item.embed_model_key].vec;
    }
  }
  // adds synchronous get/set for vec
  get vec() {
    return this.item.data?.embeddings?.[this.item.embed_model_key]?.vec;
  }
  set vec(vec) {
    if (!this.item.data.embeddings) {
      this.item.data.embeddings = {};
    }
    if (!this.item.data.embeddings[this.item.embed_model_key]) {
      this.item.data.embeddings[this.item.embed_model_key] = {};
    }
    this.item.data.embeddings[this.item.embed_model_key].vec = vec;
  }
};

// node_modules/smart-entities/actions/find_connections.js
async function find_connections3(params = {}) {
  const filter_opts = this.prepare_find_connections_filter_opts(params);
  const limit = params.filter?.limit || params.limit || this.env.settings.smart_view_filter?.results_limit || 10;
  const cache_key = this.key + murmur_hash_32_alphanumeric2(JSON.stringify({ ...filter_opts, entity: null }));
  if (!this.env.connections_cache) this.env.connections_cache = {};
  if (!this.env.connections_cache[cache_key]) {
    const connections = (await this.nearest(filter_opts)).sort(sort_by_score2).slice(0, limit);
    this.connections_to_cache(cache_key, connections);
  }
  return this.connections_from_cache(cache_key);
}
find_connections3.action_type = "connections";

// node_modules/smart-entities/smart_entity.js
var SmartEntity2 = class extends CollectionItem2 {
  /**
   * Creates an instance of SmartEntity.
   * @constructor
   * @param {Object} env - The environment instance.
   * @param {Object} [opts={}] - Configuration options.
   */
  constructor(env, opts = {}) {
    super(env, opts);
    this.entity_adapter = new DefaultEntityVectorAdapter2(this);
  }
  /**
   * Provides default values for a SmartEntity instance.
   * @static
   * @readonly
   * @returns {Object} The default values.
   */
  static get defaults() {
    return {
      data: {
        path: null,
        last_embed: {
          hash: null
        },
        embeddings: {}
      }
    };
  }
  get vector_adapter() {
    if (!this._vector_adapter) {
      this._vector_adapter = new this.collection.opts.vector_adapter.item(this);
    }
    return this._vector_adapter;
  }
  /**
   * Initializes the SmartEntity instance.
   * Checks if the entity has a vector and if it matches the model dimensions.
   * If not, it queues an embed.
   * Removes embeddings for inactive models.
   * @returns {void}
   */
  init() {
    super.init();
    if (!this.vec || !this.vec.length) {
      this.vec = null;
      this.queue_embed();
    }
    Object.entries(this.data.embeddings || {}).forEach(([model, embedding]) => {
      if (model !== this.embed_model_key) {
        this.data.embeddings[model] = null;
        delete this.data.embeddings[model];
      }
    });
  }
  /**
   * Queues the entity for embedding.
   * @returns {void}
   */
  queue_embed() {
    this._queue_embed = true;
  }
  /**
   * Finds the nearest entities to this entity.
   * @param {Object} [filter={}] - Optional filters to apply.
   * @returns {Array<{item:Object, score:number}>} An array of result objects with score and item.
   */
  async nearest(filter = {}) {
    return await this.collection.nearest_to(this, filter);
  }
  /**
   * Prepares the input for embedding.
   * @async
   * @param {string} [content=null] - Optional content to use instead of calling subsequent read()
   * @returns {Promise<void>} Should be overridden in child classes.
   */
  async get_embed_input(content = null) {
  }
  // override in child class
  /**
   * Retrieves the embed input, either from cache or by generating it.
   * @readonly
   * @returns {string|Promise<string>} The embed input string or a promise resolving to it.
   */
  get embed_input() {
    return this._embed_input ? this._embed_input : this.get_embed_input();
  }
  /**
   * Prepares filter options for finding connections based on parameters.
   * @param {Object} [params={}] - Parameters for finding connections.
   * @returns {Object} The prepared filter options.
   */
  prepare_find_connections_filter_opts(params = {}) {
    const opts = {
      ...this.env.settings.smart_view_filter || {},
      ...params,
      entity: this
    };
    if (opts.filter?.limit) delete opts.filter.limit;
    if (opts.limit) delete opts.limit;
    if (opts.exclude_frontmatter_blocks) {
      if (!opts.exclude_key_ends_with_any) opts.exclude_key_ends_with_any = [];
      opts.exclude_key_ends_with_any.push("---frontmatter---");
    }
    return opts;
  }
  /**
   * Finds connections relevant to this entity based on provided parameters.
   * @async
   * @param {Object} [params={}] - Parameters for finding connections.
   * @returns {Array<{item:Object, score:number}>} An array of result objects with score and item.
   */
  async find_connections(params = {}) {
    return await this.actions.find_connections(params);
  }
  /**
   * Retrieves connections from the cache based on the cache key.
   * @param {string} cache_key - The cache key.
   * @returns {Array<{item:Object, score:number}>} The cached connections.
   */
  connections_from_cache(cache_key) {
    return this.env.connections_cache[cache_key];
  }
  /**
   * Stores connections in the cache with the provided cache key.
   * @param {string} cache_key - The cache key.
   * @param {Array<{item:Object, score:number}>} connections - The connections to cache.
   * @returns {void}
   */
  connections_to_cache(cache_key, connections) {
    this.env.connections_cache[cache_key] = connections;
  }
  get read_hash() {
    return this.data.last_read?.hash;
  }
  set read_hash(hash) {
    if (!this.data.last_read) this.data.last_read = {};
    this.data.last_read.hash = hash;
  }
  get embedding_data() {
    if (!this.data.embeddings[this.embed_model_key]) {
      this.data.embeddings[this.embed_model_key] = {};
    }
    return this.data.embeddings[this.embed_model_key];
  }
  get last_embed() {
    if (!this.embedding_data.last_embed) {
      this.embedding_data.last_embed = {};
      if (this.data.last_embed) {
        this.embedding_data.last_embed = this.data.last_embed;
        delete this.data.last_embed;
        this.queue_save();
      }
    }
    return this.embedding_data.last_embed;
  }
  get embed_hash() {
    return this.last_embed?.hash;
  }
  set embed_hash(hash) {
    if (!this.embedding_data.last_embed) this.embedding_data.last_embed = {};
    this.embedding_data.last_embed.hash = hash;
  }
  /**
   * Gets the embed link for the entity.
   * @readonly
   * @returns {string} The embed link.
   */
  get embed_link() {
    return `![[${this.path}]]`;
  }
  /**
   * Gets the key of the embedding model.
   * @readonly
   * @returns {string} The embedding model key.
   */
  get embed_model_key() {
    return this.collection.embed_model_key;
  }
  /**
   * @deprecated Use embed_model instead.
   * @readonly
   * @returns {Object} The smart embedding model.
   */
  get smart_embed() {
    return this.embed_model;
  }
  /**
   * Gets the embedding model instance from the collection.
   * @readonly
   * @returns {Object} The embedding model instance.
   */
  get embed_model() {
    return this.collection.embed_model;
  }
  /**
   * Determines if the entity should be embedded if unembedded. NOT the same as is_unembedded.
   * @readonly
   * @returns {boolean} True if no vector is set, false otherwise.
   */
  get should_embed() {
    return this.size > (this.settings?.min_chars || 300);
  }
  /**
   * Sets the error for the embedding model.
   * @param {string} error - The error message.
   */
  set error(error) {
    this.data.embeddings[this.embed_model_key].error = error;
  }
  /**
   * Gets the number of tokens associated with the entity's embedding.
   * @readonly
   * @returns {number|undefined} The number of tokens, or undefined if not set.
   */
  get tokens() {
    return this.last_embed?.tokens;
  }
  /**
   * Sets the number of tokens for the embedding.
   * @param {number} tokens - The number of tokens.
   */
  set tokens(tokens) {
    this.last_embed.tokens = tokens;
  }
  /**
   * Gets the vector representation from the entity adapter.
   * @readonly
   * @returns {Array<number>|undefined} The vector or undefined if not set.
   */
  get vec() {
    return this.entity_adapter.vec;
  }
  /**
   * Sets the vector representation in the entity adapter.
   * @param {Array<number>} vec - The vector to set.
   */
  set vec(vec) {
    this.entity_adapter.vec = vec;
    this._queue_embed = false;
    this._embed_input = null;
    this.queue_save();
  }
  /**
   * Removes all embeddings from the entity.
   * @returns {void}
   */
  remove_embeddings() {
    this.data.embeddings = null;
    this.queue_save();
  }
  /**
   * Retrieves the key of the entity.
   * @returns {string} The entity key.
   */
  get_key() {
    return this.data.key || this.data.path;
  }
  /**
   * Retrieves the path of the entity.
   * @readonly
   * @returns {string|null} The entity path.
   */
  get path() {
    return this.data.path;
  }
  get is_unembedded() {
    if (!this.vec) return true;
    if (!this.embed_hash || this.embed_hash !== this.read_hash) return true;
    return false;
  }
};

// node_modules/smart-entities/smart_entities.js
var SmartEntities2 = class extends Collection2 {
  /**
   * Creates an instance of SmartEntities.
   * @constructor
   * @param {Object} env - The environment instance.
   * @param {Object} opts - Configuration options.
   */
  constructor(env, opts) {
    super(env, opts);
    this.entities_vector_adapter = new DefaultEntitiesVectorAdapter2(this);
    this.model_instance_id = null;
    this._embed_queue = [];
  }
  /**
   * Initializes the SmartEntities instance by loading embeddings.
   * @async
   * @returns {Promise<void>}
   */
  async init() {
    await super.init();
    await this.load_smart_embed();
    if (!this.embed_model) {
      console.log(`SmartEmbed not loaded for **${this.collection_key}**. Continuing without embedding capabilities.`);
    }
  }
  /**
   * Loads the smart embedding model.
   * @async
   * @returns {Promise<void>}
   */
  async load_smart_embed() {
    if (this.embed_model_key === "None") return;
    if (!this.embed_model) return;
    if (this.embed_model.is_loading) return console.log(`SmartEmbedModel already loading for ${this.embed_model_key}`);
    if (this.embed_model.is_loaded) return console.log(`SmartEmbedModel already loaded for ${this.embed_model_key}`);
    try {
      console.log(`Loading SmartEmbedModel in ${this.collection_key}, current state: ${this.embed_model.state}`);
      await this.embed_model.load();
    } catch (e) {
      console.error(`Error loading SmartEmbedModel for ${this.embed_model.model_key}`);
      console.error(e);
    }
  }
  /**
   * Unloads the smart embedding model.
   * @async
   * @returns {Promise<void>}
   */
  async unload() {
    if (typeof this.embed_model?.unload === "function") {
      this.embed_model.unload();
    }
    super.unload();
  }
  /**
   * Gets the key of the embedding model.
   * @readonly
   * @returns {string} The embedding model key.
   */
  get embed_model_key() {
    return this.embed_model?.model_key;
  }
  /**
   * Gets or creates the container for smart embeddings in the DOM.
   * @readonly
   * @returns {HTMLElement|undefined} The container element or undefined if not available.
   */
  get smart_embed_container() {
    if (!this.model_instance_id) return console.log("model_key not set");
    const id = this.model_instance_id.replace(/[^a-zA-Z0-9]/g, "_");
    if (!window.document) return console.log("window.document not available");
    if (window.document.querySelector(`#${id}`)) return window.document.querySelector(`#${id}`);
    const container = window.document.createElement("div");
    container.id = id;
    window.document.body.appendChild(container);
    return container;
  }
  /**
   * @deprecated Use embed_model instead.
   * @readonly
   * @returns {Object} The smart embedding model.
   */
  get smart_embed() {
    return this.embed_model;
  }
  /**
   * Gets the embedding model instance.
   * @readonly
   * @returns {Object|null} The embedding model instance or null if none.
   */
  get embed_model() {
    if (!this.env._embed_model && this.env.opts.modules.smart_embed_model?.class) this.env._embed_model = new this.env.opts.modules.smart_embed_model.class({
      settings: this.settings.embed_model,
      adapters: this.env.opts.modules.smart_embed_model?.adapters,
      re_render_settings: () => this.env.render_component("collection_settings", this, { settings_container: this.settings_container }),
      reload_model: this.reload_embed_model.bind(this)
    });
    return this.env._embed_model;
  }
  set embed_model(embed_model) {
    this.env._embed_model = embed_model;
  }
  reload_embed_model() {
    console.log("reload_embed_model");
    this.embed_model.unload();
    this.env._embed_model = null;
  }
  /**
   * Finds the nearest entities to a given entity.
   * @async
   * @param {Object} entity - The reference entity.
   * @param {Object} [filter={}] - Optional filters to apply.
   * @returns {Promise<Array<{item:Object, score:number}>>} An array of result objects with score and item.
   */
  async nearest_to(entity, filter = {}) {
    return await this.nearest(entity.vec, filter);
  }
  /**
   * Finds the nearest entities to a vector using the default adapter.
   * @async
   * @param {Array<number>} vec - The vector to compare against.
   * @param {Object} [filter={}] - Optional filters to apply.
   * @returns {Promise<Array<{item:Object, score:number}>>} An array of result objects with score and item.
   */
  async nearest(vec, filter = {}) {
    if (!vec) {
      console.warn("nearest: no vec");
      return [];
    }
    return await this.entities_vector_adapter.nearest(vec, filter);
  }
  /**
   * Finds the furthest entities from a vector using the default adapter.
   * @async
   * @param {Array<number>} vec - The vector to compare against.
   * @param {Object} [filter={}] - Optional filters to apply.
   * @returns {Promise<Array<{item:Object, score:number}>>} An array of result objects with score and item.
   */
  async furthest(vec, filter = {}) {
    if (!vec) return console.warn("furthest: no vec");
    return await this.entities_vector_adapter.furthest(vec, filter);
  }
  /**
   * Gets the file name based on collection key and embedding model key.
   * @readonly
   * @returns {string} The constructed file name.
   */
  get file_name() {
    return this.collection_key + "-" + this.embed_model_key.split("/").pop();
  }
  /**
   * Calculates the relevance of an item based on the search filter.
   * @param {Object} item - The item to calculate relevance for.
   * @param {Object} search_filter - The search filter containing keywords.
   * @returns {number} The relevance score:
   *                   1 if any keyword is found in the item's path,
   *                   0 otherwise (default relevance for keyword in content).
   */
  calculate_relevance(item, search_filter) {
    if (search_filter.keywords.some((keyword) => item.path?.includes(keyword))) return 1;
    return 0;
  }
  /**
   * Prepares the filter options by incorporating entity-based filters.
   * @param {Object} [opts={}] - The filter options.
   * @param {Object} [opts.entity] - The entity to base the filters on.
   * @param {string|string[]} [opts.exclude_filter] - Keys or prefixes to exclude.
   * @param {string|string[]} [opts.include_filter] - Keys or prefixes to include.
   * @param {boolean} [opts.exclude_inlinks] - Whether to exclude inlinks of the entity.
   * @param {boolean} [opts.exclude_outlinks] - Whether to exclude outlinks of the entity.
   * @returns {Object} The modified filter options.
   */
  prepare_filter(opts = {}) {
    const {
      entity,
      exclude_filter,
      include_filter,
      exclude_inlinks,
      exclude_outlinks
    } = opts;
    if (entity) {
      if (typeof opts.exclude_key_starts_with_any === "undefined") opts.exclude_key_starts_with_any = [];
      if (opts.exclude_key_starts_with) {
        opts.exclude_key_starts_with_any = [
          opts.exclude_key_starts_with
        ];
        delete opts.exclude_key_starts_with;
      }
      opts.exclude_key_starts_with_any.push(entity.source_key || entity.key);
      if (exclude_filter) {
        if (!Array.isArray(opts.exclude_key_includes_any)) opts.exclude_key_includes_any = [];
        if (typeof exclude_filter === "string") {
          if (exclude_filter.includes(",")) {
            opts.exclude_key_includes_any.push(...exclude_filter.split(","));
          } else {
            opts.exclude_key_includes_any.push(exclude_filter);
          }
        }
      }
      if (include_filter) {
        if (!Array.isArray(opts.key_includes_any)) opts.key_includes_any = [];
        if (typeof include_filter === "string") {
          if (include_filter.includes(",")) {
            opts.key_includes_any.push(...include_filter.split(","));
          } else {
            opts.key_includes_any.push(include_filter);
          }
        }
      }
      if (exclude_inlinks && entity?.inlinks?.length) {
        if (!Array.isArray(opts.exclude_key_starts_with_any)) opts.exclude_key_starts_with_any = [];
        opts.exclude_key_starts_with_any.push(...entity.inlinks);
      }
      if (exclude_outlinks && entity?.outlinks?.length) {
        if (!Array.isArray(opts.exclude_key_starts_with_any)) opts.exclude_key_starts_with_any = [];
        opts.exclude_key_starts_with_any.push(...entity.outlinks);
      }
    }
    return opts;
  }
  /**
   * Looks up entities based on hypothetical content.
   * @async
   * @param {Object} [params={}] - The parameters for the lookup.
   * @param {Array<string>} [params.hypotheticals=[]] - The hypothetical content to lookup.
   * @param {Object} [params.filter] - The filter to use for the lookup.
   * @param {number} [params.k] - Deprecated: Use `filter.limit` instead.
   * @returns {Promise<Array<Result>|Object>} The lookup results or an error object.
   */
  async lookup(params = {}) {
    const { hypotheticals = [] } = params;
    if (!hypotheticals?.length) return { error: "hypotheticals is required" };
    if (!this.embed_model) return { error: "Embedding search is not enabled." };
    const hyp_vecs = await this.embed_model.embed_batch(hypotheticals.map((h) => ({ embed_input: h })));
    const limit = params.filter?.limit || params.k || this.env.settings.lookup_k || 10;
    if (params.filter?.limit) delete params.filter.limit;
    const filter = {
      ...this.env.chats?.current?.scope || {},
      // DEPRECATED: since Smart Chat v1 (remove after removing legacy Smart Chat v0 from obsidian-smart-connections)
      ...params.filter || {}
    };
    const results = await hyp_vecs.reduce(async (acc_promise, embedding, i) => {
      const acc = await acc_promise;
      const results2 = await this.nearest(embedding.vec, filter);
      results2.forEach((result) => {
        if (!acc[result.item.path] || result.score > acc[result.item.path].score) {
          acc[result.item.path] = {
            key: result.item.key,
            score: result.score,
            item: result.item,
            hypothetical_i: i
          };
        } else {
          result.score = acc[result.item.path].score;
        }
      });
      return acc;
    }, Promise.resolve({}));
    const top_k = Object.values(results).sort(sort_by_score2).slice(0, limit);
    console.log(`Found and returned ${top_k.length} ${this.collection_key}.`);
    return top_k;
  }
  /**
   * Gets the configuration for settings.
   * @readonly
   * @returns {Object} The settings configuration.
   */
  get settings_config() {
    return settings_config3;
  }
  /**
   * @deprecated use env.render_component('collection_settings', this) instead (2025-05-25: decouple UI from collections)
   */
  async render_settings(container = this.settings_container, opts = {}) {
    container = await this.render_collection_settings(container, opts);
    const embed_model_settings_frag = await this.env.render_component("settings", this.embed_model, opts);
    container.appendChild(embed_model_settings_frag);
    return container;
  }
  /**
   * Gets the notices from the environment.
   * @readonly
   * @returns {Object} The notices object.
   */
  get notices() {
    return this.env.smart_connections_plugin?.notices || this.env.main?.notices;
  }
  /**
   * Gets the embed queue containing items to be embedded.
   * @readonly
   * @returns {Array<Object>} The embed queue.
   */
  get embed_queue() {
    if (!this._embed_queue?.length) {
      console.time(`Building embed queue`);
      this._embed_queue = Object.values(this.items).filter((item) => item._queue_embed || item.is_unembedded && item.should_embed);
      console.timeEnd(`Building embed queue`);
    }
    return this._embed_queue;
  }
  /**
   * Processes the embed queue by delegating to the default vector adapter.
   * @async
   * @returns {Promise<void>}
   */
  async process_embed_queue() {
    await this.entities_vector_adapter.process_embed_queue();
  }
  /**
   * Handles changes to the embedding model by reinitializing and processing the load queue.
   * @async
   * @returns {Promise<void>}
   */
  async embed_model_changed() {
    await this.unload();
    await this.init();
    this.render_settings();
    await this.process_load_queue();
  }
  get connections_filter_config() {
    return connections_filter_config2;
  }
};
var settings_config3 = {
  "min_chars": {
    name: "Minimum length",
    type: "number",
    description: "Minimum length of entity to embed (in characters).",
    placeholder: "Enter number ex. 300",
    default: 300
  }
};
var connections_filter_config2 = {
  "smart_view_filter.show_full_path": {
    "name": "Show full path",
    "type": "toggle",
    "description": "Turning on will include the folder path in the connections results."
  },
  "smart_view_filter.render_markdown": {
    "name": "Render markdown",
    "type": "toggle",
    "description": "Turn off to prevent rendering markdown and display connection results as plain text."
  },
  "smart_view_filter.results_limit": {
    "name": "Results limit",
    "type": "number",
    "description": "Adjust the number of connections displayed in the connections view (default 20).",
    "default": 20
  },
  "smart_view_filter.exclude_inlinks": {
    "name": "Exclude inlinks (backlinks)",
    "type": "toggle",
    "description": "Exclude notes that already link to the current note from the connections results."
  },
  "smart_view_filter.exclude_outlinks": {
    "name": "Exclude outlinks",
    "type": "toggle",
    "description": "Exclude notes that are already linked from within the current note from appearing in the connections results."
  },
  "smart_view_filter.include_filter": {
    "name": "Include filter",
    "type": "text",
    "description": "Notes must match this value in their file/folder path. Matching notes will be included in the connections results. Separate multiple values with commas."
  },
  "smart_view_filter.exclude_filter": {
    "name": "Exclude filter",
    "type": "text",
    "description": "Notes must *not* match this value in their file/folder path. Matching notes will be *excluded* from the connections results. Separate multiple values with commas."
  },
  // should be better scoped at source-level (leaving here for now since connections_filter_config needs larger refactor)
  "smart_view_filter.exclude_blocks_from_source_connections": {
    "name": "Hide blocks in results",
    "type": "toggle",
    "description": "Show only sources in the connections results (no blocks)."
  },
  // hide frontmatter blocks from connections results
  "smart_view_filter.exclude_frontmatter_blocks": {
    "name": "Hide frontmatter blocks in results",
    "type": "toggle",
    "description": "Show only sources in the connections results (no frontmatter blocks)."
  }
};

// node_modules/smart-sources/components/source.js
async function render19(entity, opts = {}) {
  let markdown;
  if (should_render_embed2(entity)) markdown = `${entity.embed_link}

${await entity.read()}`;
  else markdown = process_for_rendering2(await entity.read());
  let frag;
  if (source.env.settings.smart_view_filter.render_markdown) frag = await this.render_markdown(markdown, source);
  else frag = this.create_doc_fragment(`<span>${markdown}</span>`);
  return await post_process17.call(this, source, frag, opts);
}
function process_for_rendering2(content) {
  if (content.includes("```dataview")) content = content.replace(/```dataview/g, "```\\dataview");
  if (content.includes("![[")) content = content.replace(/\!\[\[/g, "! [[");
  return content;
}
async function post_process17(scope, frag, opts = {}) {
  return frag;
}
function should_render_embed2(entity) {
  if (!entity) return false;
  if (entity.is_media) return true;
  return false;
}

// node_modules/smart-sources/actions/find_connections.js
async function find_connections4(params = {}) {
  let connections;
  const filter_settings = this.env.settings.smart_view_filter;
  const exclude_blocks_from_source_connections = params.exclude_blocks_from_source_connections ?? filter_settings?.exclude_blocks_from_source_connections ?? false;
  if (this.block_collection.settings.embed_blocks && !exclude_blocks_from_source_connections) connections = [];
  else connections = await find_connections3.call(this, params);
  const filter_opts = this.prepare_find_connections_filter_opts(params);
  const limit = params.filter?.limit || params.limit || this.env.settings.smart_view_filter?.results_limit || 20;
  if (params.filter?.limit) delete params.filter.limit;
  if (params.limit) delete params.limit;
  if (!exclude_blocks_from_source_connections) {
    const cache_key = this.key + murmur_hash_32_alphanumeric2(JSON.stringify({ ...filter_opts, entity: null })) + "_blocks";
    if (!this.env.connections_cache) this.env.connections_cache = {};
    if (!this.env.connections_cache[cache_key]) {
      const nearest = (await this.env.smart_blocks.nearest(this.vec, filter_opts)).sort(sort_by_score2).slice(0, limit);
      this.connections_to_cache(cache_key, nearest);
    }
    connections = [
      ...connections,
      ...this.connections_from_cache(cache_key)
    ].sort(sort_by_score2).slice(0, limit);
  }
  return connections;
}
find_connections4.action_type = "connections";

// node_modules/smart-sources/smart_source.js
var SmartSource2 = class extends SmartEntity2 {
  /**
   * Provides default values for a SmartSource instance.
   * @static
   * @readonly
   * @returns {Object} The default values.
   */
  static get defaults() {
    return {
      data: {
        last_read: {
          hash: null,
          mtime: 0
        },
        embeddings: {}
      },
      _embed_input: null,
      // Stored temporarily
      _queue_load: true
    };
  }
  /**
   * Initializes the SmartSource instance by queuing an import if blocks are missing.
   * @returns {void}
   */
  init() {
    super.init();
    if (!this.data.blocks) this.queue_import();
  }
  /**
   * Queues the SmartSource for import.
   * @returns {void}
   */
  queue_import() {
    this._queue_import = true;
  }
  /**
   * Imports the SmartSource by checking for updates and parsing content.
   * @async
   * @returns {Promise<void>}
   */
  async import() {
    this._queue_import = false;
    try {
      await this.source_adapter?.import();
    } catch (err) {
      if (err.code === "ENOENT") {
        console.log(`Smart Connections: Deleting ${this.path} data because it no longer exists on disk`);
        this.delete();
      } else {
        console.warn("Smart Connections: Error during import: re-queueing import", err);
        this.queue_import();
      }
    }
  }
  /**
   * @deprecated likely extraneous
   */
  async parse_content(content = null) {
    const parse_fns = this.env?.opts?.collections?.smart_sources?.content_parsers || [];
    for (const fn of parse_fns) {
      await fn(this, content);
    }
    if (this.data.last_import?.hash === this.data.last_read?.hash) {
      if (this.data.blocks) return;
    }
  }
  /**
   * Finds connections relevant to this SmartSource based on provided parameters.
   * @async
   * @param {Object} [params={}] - Parameters for finding connections.
   * @param {boolean} [params.exclude_blocks_from_source_connections=false] - Whether to exclude block connections from source connections.
   * @param {Object} [params.exclude_frontmatter_blocks=true] - Whether to exclude frontmatter blocks from source connections.
   * @returns {Array<SmartSource>} An array of relevant SmartSource entities.
   */
  async find_connections(params = {}) {
    return await this.actions.find_connections(params);
  }
  /**
   * Prepares the embed input for the SmartSource by reading content and applying exclusions.
   * @async
   * @returns {Promise<string|false>} The embed input string or `false` if already embedded.
   */
  async get_embed_input(content = null) {
    if (typeof this._embed_input === "string" && this._embed_input.length) return this._embed_input;
    if (!content) content = await this.read();
    if (!content) {
      console.warn("SmartSource.get_embed_input: No content available for embedding: " + this.path);
      return "";
    }
    if (this.excluded_lines.length) {
      const content_lines = content.split("\n");
      this.excluded_lines.forEach((lines) => {
        const { start, end } = lines;
        for (let i = start; i <= end; i++) {
          content_lines[i] = "";
        }
      });
      content = content_lines.filter((line) => line.length).join("\n");
    }
    const breadcrumbs = this.path.split("/").join(" > ").replace(".md", "");
    const max_tokens = this.collection.embed_model.model_config.max_tokens || 500;
    const max_chars = Math.floor(max_tokens * 3.7);
    this._embed_input = `${breadcrumbs}:
${content}`.substring(0, max_chars);
    return this._embed_input;
  }
  /**
   * Opens the SmartSource note in the SmartConnections plugin.
   * @returns {void}
   */
  open() {
    this.env.smart_connections_plugin.open_note(this.path);
  }
  /**
   * Retrieves the block associated with a specific line number.
   * @param {number} line - The line number to search for.
   * @returns {SmartBlock|null} The corresponding SmartBlock or `null` if not found.
   */
  get_block_by_line(line) {
    return Object.entries(this.data.blocks || {}).reduce((acc, [sub_key, range]) => {
      if (acc) return acc;
      if (range[0] <= line && range[1] >= line) {
        const block = this.block_collection.get(this.key + sub_key);
        if (block?.vec) return block;
      }
      return acc;
    }, null);
  }
  /**
   * Checks if the source file exists in the file system.
   * @async
   * @returns {Promise<boolean>} A promise that resolves to `true` if the file exists, `false` otherwise.
   */
  async has_source_file() {
    return await this.fs.exists(this.path);
  }
  // CRUD
  /**
   * FILTER/SEARCH METHODS
   */
  /**
   * Searches for keywords within the entity's data and content.
   * @async
   * @param {Object} search_filter - The search filter object.
   * @param {string[]} search_filter.keywords - An array of keywords to search for.
   * @param {string} [search_filter.type='any'] - The type of search to perform. 'any' counts all matching keywords, 'all' counts only if all keywords match.
   * @returns {Promise<number>} A promise that resolves to the number of matching keywords.
   */
  async search(search_filter = {}) {
    const { keywords, type = "any", limit } = search_filter;
    if (!keywords || !Array.isArray(keywords)) {
      console.warn("Entity.search: keywords not set or is not an array");
      return 0;
    }
    if (limit && this.collection.search_results_ct >= limit) return 0;
    const lowercased_keywords = keywords.map((keyword) => keyword.toLowerCase());
    const content = await this.read();
    if (!content || typeof content !== "string" || !content.length) {
      if (content.mime_type) {
        console.warn(`Entity.search: No content available for searching: ${this.path}, mime_type: ${content.mime_type}`);
      } else {
        console.warn(`Entity.search: No content available for searching: ${this.path}, content: ${content ? JSON.stringify(content) : "empty"}`);
      }
      return 0;
    }
    const lowercased_content = content.toLowerCase();
    const lowercased_path = this.path.toLowerCase();
    const matching_keywords = lowercased_keywords.filter(
      (keyword) => lowercased_path.includes(keyword) || lowercased_content.includes(keyword)
    );
    if (type === "all") {
      return matching_keywords.length === lowercased_keywords.length ? matching_keywords.length : 0;
    } else {
      return matching_keywords.length;
    }
  }
  /**
   * ADAPTER METHODS
   */
  use_source_adapter(method, ...args) {
    if (!this.source_adapter) {
      console.warn(`No source adapter available for ${this.key}. Cannot use method ${method}.`);
      return;
    }
    if (typeof this.source_adapter[method] !== "function") {
      console.warn(`Source adapter for ${this.key} does not implement method ${method}.`);
      return;
    }
    return this.source_adapter[method](...args);
  }
  /**
   * Appends content to the end of the source file.
   * @async
   * @param {string} content - The content to append to the file.
   * @returns {Promise<void>} A promise that resolves when the operation is complete.
   */
  async append(content) {
    await this.use_source_adapter("append", content);
    await this.import();
  }
  /**
   * Updates the entire content of the source file.
   * @async
   * @param {string} full_content - The new content to write to the file.
   * @param {Object} [opts={}] - Additional options for the update.
   * @returns {Promise<void>} A promise that resolves when the operation is complete.
   */
  async update(full_content, opts = {}) {
    try {
      await this.use_source_adapter("update", full_content, opts);
      await this.import();
    } catch (error) {
      console.error(`Error during update for ${this.key}:`, error);
    }
  }
  /**
   * Reads the entire content of the source file.
   * @async
   * @param {Object} [opts={}] - Additional options for reading.
   * @returns {Promise<string>} A promise that resolves with the content of the file.
   */
  async read(opts = {}) {
    try {
      return await this.use_source_adapter("read", opts) || "";
    } catch (error) {
      console.error(`Error during reading ${this.key} (returning empty string)`, error);
      return "";
    }
  }
  /**
   * Removes the source file from the file system and deletes the entity.
   * This is different from `delete()` because it also removes the source file.
   * @async
   * @returns {Promise<void>} A promise that resolves when the operation is complete.
   */
  async remove() {
    try {
      await this.use_source_adapter("remove");
    } catch (error) {
      console.error(`Error during remove for ${this.key}:`, error);
    }
  }
  /**
   * Moves the current source to a new location.
   * Handles the destination as a string (new path) or entity (block or source).
   *
   * @async
   * @param {string|Object|SmartEntity} entity_ref - The destination path or entity to move to.
   * @throws {Error} If the entity reference is invalid.
   * @returns {Promise<void>} A promise that resolves when the move operation is complete.
   */
  async move_to(entity_ref) {
    try {
      await this.use_source_adapter("move_to", entity_ref);
    } catch (error) {
      console.error(`Error during move for ${this.key}:`, error);
    }
  }
  /**
   * Merges the given content into the current source.
   * Parses the content into blocks and either appends to existing blocks, replaces blocks, or replaces all content.
   *
   * @async
   * @param {string} content - The content to merge into the current source.
   * @param {Object} [opts={}] - Options object.
   * @param {string} [opts.mode='append'] - The merge mode: 'append', 'replace_blocks', or 'replace_all'.
   * @returns {Promise<void>}
   */
  async merge(content, opts = {}) {
    try {
      await this.use_source_adapter("merge", content, opts);
      await this.import();
    } catch (error) {
      console.error(`Error during merge for ${this.key}:`, error);
    }
  }
  /**
   * Handles errors during the load process.
   * @param {Error} err - The error encountered during load.
   * @returns {void}
   */
  on_load_error(err) {
    super.on_load_error(err);
    if (err.code === "ENOENT") {
      this._queue_load = false;
      this.queue_import();
    }
  }
  // GETTERS
  /**
   * Retrieves the block collection associated with SmartSources.
   * @readonly
   * @returns {SmartBlocks} The block collection instance.
   */
  get block_collection() {
    return this.env.smart_blocks;
  }
  /**
   * Retrieves the vector representations of all blocks within the SmartSource.
   * @readonly
   * @returns {Array<Array<number>>} An array of vectors.
   */
  get block_vecs() {
    return this.blocks.map((block) => block.vec).filter((vec) => vec);
  }
  /**
   * Retrieves all blocks associated with the SmartSource.
   * @readonly
   * @returns {Array<SmartBlock>} An array of SmartBlock instances.
   * @description
   * Uses block refs (Fastest) to get blocks without iterating over all blocks
   */
  get blocks() {
    if (this.data.blocks) return this.block_collection.get_many(Object.keys(this.data.blocks).map((key) => this.key + key));
    return [];
  }
  /**
   * Determines if the SmartSource is excluded from processing.
   * @readonly
   * @returns {boolean} `true` if excluded, `false` otherwise.
   */
  get excluded() {
    return this.fs.is_excluded(this.path);
  }
  /**
   * Retrieves the lines excluded from embedding.
   * @readonly
   * @returns {Array<Object>} An array of objects with `start` and `end` line numbers.
   */
  get excluded_lines() {
    return this.blocks.filter((block) => block.excluded).map((block) => block.lines);
  }
  /**
   * Retrieves the file system instance from the SmartSource's collection.
   * @readonly
   * @returns {SmartFS} The file system instance.
   */
  get fs() {
    return this.collection.fs;
  }
  /**
   * Retrieves the file object associated with the SmartSource.
   * @readonly
   * @returns {Object} The file object.
   */
  get file() {
    return this.fs.files[this.path];
  }
  /**
   * Retrieves the file name of the SmartSource.
   * @readonly
   * @returns {string} The file name.
   */
  get file_name() {
    return this.path.split("/").pop();
  }
  /**
   * Retrieves the file path of the SmartSource.
   * @readonly
   * @returns {string} The file path.
   */
  get file_path() {
    return this.path;
  }
  /**
   * Retrieves the file type based on the file extension.
   * @readonly
   * @returns {string} The file type in lowercase.
   */
  get file_type() {
    if (!this._ext) {
      this._ext = this.collection.get_extension_for_path(this.path) || "md";
    }
    return this._ext;
  }
  /**
   * Retrieves the modification time of the SmartSource.
   * @readonly
   * @returns {number} The modification time.
   */
  get mtime() {
    return this.file?.stat?.mtime || 0;
  }
  /**
   * Retrieves the size of the SmartSource.
   * @readonly
   * @returns {number} The size.
   */
  get size() {
    return this.source_adapter?.size || 0;
  }
  /**
   * Retrieves the last import stat of the SmartSource.
   * @readonly
   * @returns {Object} The last import stat.
   */
  get last_import() {
    return this.data?.last_import;
  }
  /**
   * Retrieves the last import modification time of the SmartSource.
   * @readonly
   * @returns {number} The last import modification time.
   */
  get last_import_mtime() {
    return this.last_import?.mtime || 0;
  }
  /**
   * Retrieves the last import size of the SmartSource.
   * @readonly
   * @returns {number} The last import size.
   */
  get last_import_size() {
    return this.last_import?.size || 0;
  }
  /**
   * Retrieves the paths of inlinks to this SmartSource.
   * @readonly
   * @returns {Array<string>} An array of inlink paths.
   */
  get inlinks() {
    return Object.keys(this.collection.links?.[this.path] || {});
  }
  get is_media() {
    return this.source_adapter.is_media || false;
  }
  /**
   * Determines if the SmartSource is gone (i.e., the file no longer exists).
   * @readonly
   * @returns {boolean} `true` if gone, `false` otherwise.
   */
  get is_gone() {
    return !this.file;
  }
  /**
   * Retrieves the last read hash of the SmartSource.
   * @readonly
   * @returns {string|undefined} The last read hash or `undefined` if not set.
   */
  get last_read() {
    return this.data.last_read;
  }
  get metadata() {
    return this.data.metadata;
  }
  get outdated() {
    return this.source_adapter.outdated;
  }
  /**
   * Retrieves the outlink paths from the SmartSource.
   * @readonly
   * @returns {Array<string>} An array of outlink paths.
   */
  get outlinks() {
    return (this.data.outlinks || []).map((link) => {
      const link_ref = link?.target || link;
      if (typeof link_ref !== "string") return null;
      if (link_ref.startsWith("http")) return null;
      const link_path = this.fs.get_link_target_path(link_ref, this.file_path);
      return link_path;
    }).filter((link_path) => link_path);
  }
  get path() {
    return this.data.path || this.data.key;
  }
  get source_adapters() {
    return this.collection.source_adapters;
  }
  get source_adapter() {
    if (this._source_adapter) return this._source_adapter;
    if (this.source_adapters[this.file_type]) this._source_adapter = new this.source_adapters[this.file_type](this);
    else {
      for (const Adapter of Object.values(this.source_adapters)) {
        if (typeof Adapter.detect_type !== "function") continue;
        if (Adapter.detect_type(this)) {
          this._source_adapter = new Adapter(this);
          break;
        }
      }
    }
    return this._source_adapter;
  }
  // COMPONENTS
  /**
   * Retrieves the component responsible for rendering the SmartSource.
   * @deprecated
   * @readonly
   * @returns {Function} The render function for the source component.
   */
  get component() {
    return render19;
  }
  // Currently unused, but useful for later
  /**
   * Calculates the mean vector of all blocks within the SmartSource.
   * @readonly
   * @returns {Array<number>|null} The mean vector or `null` if no vectors are present.
   */
  get mean_block_vec() {
    if (this._mean_block_vec) {
      this._mean_block_vec = compute_centroid2(this.block_vecs);
    }
    return this._mean_block_vec;
  }
  /**
   * Calculates the median vector of all blocks within the SmartSource.
   * @readonly
   * @returns {Array<number>|null} The median vector or `null` if no vectors are present.
   */
  get median_block_vec() {
    if (this._median_block_vec) {
      this._median_block_vec = compute_medoid2(this.block_vecs);
    }
    return this._median_block_vec;
  }
  // DEPRECATED methods
  /**
   * @async
   * @deprecated Use `read` instead.
   * @returns {Promise<string>} A promise that resolves with the content of the file.
   */
  async _read() {
    return await this.source_adapter._read();
  }
  /**
   * @async
   * @deprecated Use `remove` instead.
   * @returns {Promise<void>} A promise that resolves when the entity is destroyed.
   */
  async destroy() {
    await this.remove();
  }
  /**
   * @async
   * @deprecated Use `update` instead.
   * @param {string} content - The content to update.
   * @returns {Promise<void>}
   */
  async _update(content) {
    await this.source_adapter.update(content);
  }
  /**
   * @deprecated Use `source` instead.
   * @readonly
   * @returns {SmartSource} The associated SmartSource instance.
   */
  get t_file() {
    return this.fs.files[this.path];
  }
};
var smart_source_default2 = {
  class: SmartSource2,
  actions: {
    find_connections: find_connections4
  }
};

// node_modules/smart-sources/smart_sources.js
var SmartSources2 = class extends SmartEntities2 {
  /**
   * Creates an instance of SmartSources.
   * @constructor
   * @param {Object} env - The environment instance.
   * @param {Object} [opts={}] - Configuration options.
   */
  constructor(env, opts = {}) {
    super(env, opts);
    this.search_results_ct = 0;
    this._excluded_headings = null;
  }
  /**
   * Initializes the SmartSources instance by performing an initial scan of sources.
   * @async
   * @returns {Promise<void>}
   */
  async init() {
    await super.init();
    await this.init_items();
  }
  /**
   * Initializes items by letting each adapter do any necessary file-based scanning.
   * Adapters that do not rely on file scanning can skip or do nothing.
   * @async
   * @returns {Promise<void>}
   */
  async init_items() {
    this.emit_event("source:initial_scan_started");
    this.show_process_notice("initial_scan");
    for (const AdapterClass of Object.values(this.source_adapters)) {
      if (typeof AdapterClass.init_items === "function") {
        await AdapterClass.init_items(this);
      }
    }
    this.clear_process_notice("initial_scan");
    this.emit_event("source:initial_scan_completed");
    this.notices?.show("done_initial_scan", { collection_key: this.collection_key });
  }
  /**
   * Creates (or returns existing) a SmartSource for a given file path, if the extension is recognized.
   * @param {string} file_path - The path to the file or pseudo-file
   * @returns {SmartSource|undefined} The newly created or existing SmartSource, or undefined if no recognized extension
   */
  init_file_path(file_path) {
    const ext = this.get_extension_for_path(file_path);
    if (!ext) {
      return;
    }
    if (this.fs.is_excluded(file_path)) {
      console.warn(`File ${file_path} is excluded from processing.`);
      return;
    }
    if (!this.fs.files[file_path]) {
      this.fs.include_file(file_path);
    }
    if (this.items[file_path]) return this.items[file_path];
    const item = new this.item_type(this.env, { path: file_path });
    this.items[file_path] = item;
    item.queue_import();
    item.queue_load();
    return item;
  }
  /**
   * Looks for an extension in descending order:
   * e.g. split "my.file.name.github" -> ["my","file","name","github"]
   * Try 'file.name.github', 'name.github', 'github'
   * Return the first that is in 'source_adapters'
   * @param {string} file_path
   * @returns {string|undefined} recognized extension, or undefined if none
   */
  get_extension_for_path(file_path) {
    if (!file_path) return void 0;
    const pcs = file_path.split(".");
    if (pcs.length < 2) return void 0;
    let last_ext;
    pcs.shift();
    while (pcs.length) {
      const supported_ext = pcs.join(".").toLowerCase();
      if (this.source_adapters[supported_ext]) {
        return supported_ext;
      }
      last_ext = pcs.shift();
    }
    return last_ext;
    return void 0;
  }
  /**
   * Builds a map of links between sources.
   * @returns {Object} An object mapping link paths to source keys.
   */
  build_links_map() {
    const start_time = Date.now();
    this.links = {};
    for (const source2 of Object.values(this.items)) {
      for (const link of source2.outlinks) {
        if (!this.links[link]) this.links[link] = {};
        this.links[link][source2.key] = true;
      }
    }
    const end_time = Date.now();
    console.log(`Time spent building links: ${end_time - start_time}ms`);
    return this.links;
  }
  /**
   * Creates a new source with the given key and content.
   * @async
   * @param {string} key - The key (path) of the new source.
   * @param {string} content - The content to write to the new source.
   * @returns {Promise<SmartSource>} The created SmartSource instance.
   */
  async create(key, content) {
    await this.fs.write(key, content);
    await this.fs.refresh();
    const source2 = await this.create_or_update({ path: key });
    await source2.import();
    return source2;
  }
  /**
   * Performs a lexical search for matching SmartSource content.
   * @async
   * @param {Object} search_filter - The filter criteria for the search.
   * @param {string[]} search_filter.keywords - An array of keywords to search for.
   * @param {number} [search_filter.limit] - The maximum number of results to return.
   * @returns {Promise<Array<SmartSource>>} A promise that resolves to an array of matching SmartSource entities.
   */
  async search(search_filter = {}) {
    const {
      keywords,
      limit,
      ...filter_opts
    } = search_filter;
    if (!keywords) {
      console.warn("search_filter.keywords not set");
      return [];
    }
    this.search_results_ct = 0;
    const initial_results = this.filter(filter_opts);
    const search_results = [];
    for (let i = 0; i < initial_results.length; i += 10) {
      const batch = initial_results.slice(i, i + 10);
      const batch_results = await Promise.all(
        batch.map(async (item) => {
          try {
            const matches = await item.search(search_filter);
            if (matches) {
              this.search_results_ct++;
              return { item, score: matches };
            } else return null;
          } catch (error) {
            console.error(`Error searching item ${item.id || "unknown"}:`, error);
            return null;
          }
        })
      );
      search_results.push(...batch_results.filter(Boolean));
    }
    return search_results.sort((a, b) => b.score - a.score).map((result) => result.item);
  }
  /**
   * Looks up entities based on the provided parameters.
   * @async
   * @param {Object} [params={}] - Parameters for the lookup.
   * @param {Object} [params.filter] - Filter options.
   * @param {number} [params.k] - Deprecated. Use `params.filter.limit` instead.
   * @returns {Promise<Array<SmartSource>>} A promise that resolves to an array of matching SmartSource entities.
   */
  async lookup(params = {}) {
    const limit = params.filter?.limit || params.k || this.env.settings.lookup_k || 10;
    if (params.filter?.limit) delete params.filter.limit;
    if (params.collection) {
      const collection = this.env[params.collection];
      if (collection && collection.lookup) {
        delete params.collection;
        params.skip_blocks = true;
        const results2 = await collection.lookup(params);
        if (results2.error) {
          console.warn(results2.error);
          return [];
        }
        return results2.slice(0, limit);
      }
    }
    let results = await super.lookup(params);
    if (results.error) {
      console.warn(results.error);
      return [];
    }
    if (this.block_collection?.settings?.embed_blocks && !params.skip_blocks) {
      results = [
        ...results,
        ...await this.block_collection.lookup(params)
      ].sort(sort_by_score2);
    }
    return results.slice(0, limit);
  }
  /**
   * Processes the load queue by loading items and optionally importing them.
   * Called after a "re-load" from settings, or after environment init.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    await super.process_load_queue();
    if (this.collection_key === "smart_sources" && this.env.smart_blocks) {
      Object.values(this.env.smart_blocks.items).forEach((item) => item.init());
    }
    if (this.block_collection) {
      this.block_collection.loaded = Object.keys(this.block_collection.items).length;
    }
    if (!this.opts.prevent_import_on_load) {
      await this.process_source_import_queue(this.opts);
    }
    this.build_links_map();
  }
  /**
   * @method process_source_import_queue
   * @description 
   * Imports items (SmartSources or SmartBlocks) that have been flagged for import.
   */
  async process_source_import_queue(opts = {}) {
    const { process_embed_queue = true, force = false } = opts;
    if (force) Object.values(this.items).forEach((item) => item._queue_import = true);
    const import_queue = Object.values(this.items).filter((item) => item._queue_import);
    console.log("import_queue " + import_queue.length);
    if (import_queue.length) {
      const time_start = Date.now();
      for (let i = 0; i < import_queue.length; i += 100) {
        this.notices?.show("import_progress", {
          progress: i,
          total: import_queue.length
        });
        await Promise.all(import_queue.slice(i, i + 100).map((item) => item.import()));
      }
      setTimeout(() => {
        this.notices?.remove("import_progress");
      }, 1e3);
      this.notices?.show("done_import", {
        count: import_queue.length,
        time_in_seconds: (Date.now() - time_start) / 1e3
      });
    } else {
      this.notices?.show("no_import_queue");
    }
    this.build_links_map();
    if (process_embed_queue) await this.process_embed_queue();
    else console.log("skipping process_embed_queue");
    await this.process_save_queue();
    await this.block_collection?.process_save_queue();
  }
  /**
   * Retrieves the source adapters based on the collection configuration.
   * @readonly
   * @returns {Object} An object mapping file extensions to adapter constructors.
   */
  get source_adapters() {
    if (!this._source_adapters) {
      const source_adapters = Object.entries(this.env.opts.collections?.[this.collection_key]?.source_adapters || {});
      const _source_adapters = source_adapters.reduce((acc, [key, Adapter]) => {
        if (Adapter.extensions) Adapter.extensions?.forEach((ext) => acc[ext] = Adapter);
        else if (typeof Adapter.detect_type === "function") acc[key] = Adapter;
        return acc;
      }, {});
      if (Object.keys(_source_adapters).length) {
        this._source_adapters = _source_adapters;
      }
    }
    return this._source_adapters;
  }
  /**
   * Retrieves the notices system from the environment.
   * @readonly
   * @returns {Object} The notices object.
   */
  get notices() {
    return this.env.smart_connections_plugin?.notices || this.env.main?.notices;
  }
  /**
   * Retrieves the currently active note.
   * @readonly
   * @returns {SmartSource|null} The current SmartSource instance or null if none.
   */
  get current_note() {
    return this.get(this.env.smart_connections_plugin.app.workspace.getActiveFile().path);
  }
  /**
   * Retrieves the file system instance, initializing it if necessary.
   * @readonly
   * @returns {SmartFS} The file system instance.
   */
  get fs() {
    if (!this._fs) {
      this._fs = new this.env.opts.modules.smart_fs.class(this.env, {
        adapter: this.env.opts.modules.smart_fs.adapter,
        fs_path: this.env.opts.env_path || "",
        exclude_patterns: this.excluded_patterns || []
      });
    }
    return this._fs;
  }
  /**
   * Retrieves the settings configuration by combining superclass settings and adapter-specific settings.
   * @readonly
   * @returns {Object} The settings configuration object.
   */
  get settings_config() {
    const _settings_config = {
      ...super.settings_config,
      ...this.process_settings_config(settings_config4),
      ...this.process_settings_config(this.embed_model.settings_config, "embed_model"),
      ...Object.entries(this.source_adapters).reduce((acc, [file_extension, adapter_constructor]) => {
        if (acc[adapter_constructor]) return acc;
        const item = this.items[Object.keys(this.items).find((i) => i.endsWith(file_extension))];
        const adapter_instance = new adapter_constructor(item || new this.item_type(this.env, {}));
        if (adapter_instance.settings_config) {
          acc[adapter_constructor.name] = {
            type: "html",
            value: `<h4>${adapter_constructor.name} adapter</h4>`
          };
          acc = { ...acc, ...adapter_instance.settings_config };
        }
        return acc;
      }, {})
    };
    return _settings_config;
  }
  /**
   * Retrieves the block collection associated with SmartSources.
   * @readonly
   * @returns {SmartBlocks} The block collection instance.
   */
  get block_collection() {
    return this.env.smart_blocks;
  }
  /**
   * Retrieves the embed queue containing items and their blocks to be embedded.
   * @readonly
   * @returns {Array<Object>} The embed queue.
   */
  get embed_queue() {
    if (!this._embed_queue.length) {
      try {
        const embed_blocks = this.block_collection.settings.embed_blocks;
        this._embed_queue = Object.values(this.items).reduce((acc, item) => {
          if (item._queue_embed || item.should_embed && item.is_unembedded) acc.push(item);
          if (embed_blocks) item.blocks.forEach((block) => {
            if (block._queue_embed || block.should_embed && block.is_unembedded) acc.push(block);
          });
          return acc;
        }, []);
      } catch (e) {
        console.error(`Error getting embed queue:`, e);
      }
    }
    return this._embed_queue;
  }
  /**
   * Clears all data by removing sources and blocks, reinitializing the file system, and reimporting items.
   * @async
   * @returns {Promise<void>}
   */
  async run_clear_all() {
    this.notices?.show("clearing_all");
    await this.data_fs.remove_dir(this.data_dir, true);
    this.clear();
    this.block_collection.clear();
    this._fs = null;
    await this.init_fs();
    await this.init_items();
    this._excluded_headings = null;
    Object.values(this.items).forEach((item) => {
      item.queue_import();
      item.queue_embed();
      item.loaded_at = Date.now() + 9999999999;
    });
    this.notices?.remove("clearing_all");
    this.notices?.show("done_clearing_all");
    await this.process_source_import_queue();
  }
  async init_fs(opts = {}) {
    const { force_refresh = false } = opts;
    if (force_refresh) await this.env.fs.refresh();
    await this.fs.load_exclusions();
    this.fs.file_paths = this.fs.post_process(this.env.fs.file_paths);
    this.fs.files = this.fs.file_paths.reduce((acc, file_path) => {
      acc[file_path] = this.env.fs.files[file_path];
      return acc;
    }, {});
    this.fs.folder_paths = this.fs.post_process(this.env.fs.folder_paths);
    this.fs.folders = this.fs.folder_paths.reduce((acc, folder_path) => {
      acc[folder_path] = this.env.fs.folders[folder_path];
      return acc;
    }, {});
  }
  /**
   * Deletes all *.ajson files in the "multi/" data_dir, then re-saves all sources (opts.force=true).
   */
  async run_clean_up_data() {
    this.notices?.show("pruning_collection", { collection_key: this.block_collection.collection_key });
    const remove_smart_blocks = this.block_collection.filter((item) => {
      if (!item.vec) return false;
      if (item.is_gone) {
        item.reason = "is_gone";
        return true;
      }
      if (!item.should_embed) {
        item.reason = "should not embed";
        return true;
      }
      return false;
    });
    for (let i = 0; i < remove_smart_blocks.length; i++) {
      const item = remove_smart_blocks[i];
      if (item.is_gone) item.delete();
      else item.remove_embeddings();
    }
    this.notices?.remove("pruning_collection");
    this.notices?.show("done_pruning_collection", { collection_key: this.block_collection.collection_key, count: remove_smart_blocks.length });
    console.log(`Pruned ${remove_smart_blocks.length} blocks:
${remove_smart_blocks.map((item) => `${item.reason} - ${item.key}`).join("\n")}`);
    await this.data_fs.remove_dir(this.data_dir, true);
    await this.process_save_queue({ force: true });
  }
  /**
   * Retrieves patterns for excluding files/folders from processing.
   * @readonly
   * @returns {Array<string>}
   */
  get excluded_patterns() {
    return [
      ...this.file_exclusions?.map((file) => `${file}**`) || [],
      ...(this.folder_exclusions || []).map((folder) => `${folder}**`),
      this.env.env_data_dir + "/**"
    ];
  }
  /**
   * Retrieves the file exclusion patterns from settings.
   * @readonly
   * @returns {Array<string>} An array of file exclusion patterns.
   */
  get file_exclusions() {
    const csv = this.env.settings?.smart_sources?.file_exclusions;
    return csv?.length ? csv.split(",").map((file) => file.trim()) : [];
  }
  /**
   * Retrieves the folder exclusion patterns from settings.
   * @readonly
   * @returns {Array<string>} An array of folder exclusion patterns.
   */
  get folder_exclusions() {
    const csv = this.env.settings?.smart_sources?.folder_exclusions;
    return csv?.length ? csv.split(",").map((folder) => {
      folder = folder.trim();
      if (folder === "") return false;
      if (folder === "/") return false;
      if (!folder.endsWith("/")) return folder + "/";
      return folder;
    }).filter(Boolean) : [];
  }
  /**
   * Retrieves the excluded headings from settings.
   * @readonly
   * @returns {Array<string>} An array of excluded headings.
   */
  get excluded_headings() {
    if (!this._excluded_headings) {
      const csv = this.env.settings?.smart_sources?.excluded_headings;
      this._excluded_headings = csv?.length ? csv.split(",").map((heading) => heading.trim()) : [];
    }
    return this._excluded_headings;
  }
  /**
   * Retrieves the count of included files that are not excluded.
   * @readonly
   * @returns {number} The number of included files.
   */
  get included_files() {
    const extensions = Object.keys(this.source_adapters);
    return this.fs.file_paths.filter((file_path) => extensions.some((ext) => file_path.endsWith(ext)) && !this.fs.is_excluded(file_path)).length;
  }
  get excluded_file_paths() {
    return this.env.fs.file_paths.filter((file_path) => this.fs.is_excluded(file_path));
  }
  /**
   * Retrieves the total number of files, regardless of exclusion.
   * @readonly
   * @returns {number} The total number of files.
   */
  get total_files() {
    return this.fs.file_paths.filter((file) => file.endsWith(".md") || file.endsWith(".canvas")).length;
  }
  get data_dir() {
    return "multi";
  }
};
var settings_config4 = {
  file_exclusions: {
    name: "File Exclusions",
    description: "Comma-separated list of files to exclude.",
    type: "text",
    default: "",
    callback: "update_exclusions"
  },
  folder_exclusions: {
    name: "Folder Exclusions",
    description: "Comma-separated list of folders to exclude.",
    type: "text",
    default: "",
    callback: "update_exclusions"
  },
  excluded_headings: {
    name: "Excluded Headings",
    description: "Comma-separated list of headings to exclude.",
    type: "text",
    default: ""
  }
};

// node_modules/smart-chat-obsidian/src/utils/ScTranslations.json
var ScTranslations_default = {
  en: {
    name: "English",
    pronouns: ["my", "I", "me", "mine", "our", "ours", "us", "we"],
    context_prefix_prompt: "Context from lookup:",
    context_suffix_prompt: 'Use the provided context to respond like "Based on your notes..."',
    initial_message: "Hi there, welcome to the Smart Chat. Ask me a question about your notes and I'll try to answer it."
  },
  es: {
    name: "Espa\xF1ol",
    pronouns: ["mi", "yo", "m\xED", "t\xFA", "mis"],
    context_prefix_prompt: "Contexto de b\xFAsqueda:",
    context_suffix_prompt: 'Usa el contexto proporcionado para responder como "Bas\xE1ndote en tus notas..."',
    initial_message: "Hola, bienvenido al Smart Chat. Hazme una pregunta sobre tus apuntes y tratar\xE9 de responderla."
  },
  fr: {
    name: "Fran\xE7ais",
    pronouns: ["me", "mon", "ma", "mes", "moi", "nous", "notre", "nos", "je", "j'", "m'"],
    context_prefix_prompt: "Contexte de recherche :",
    context_suffix_prompt: `Utilisez le contexte fourni pour r\xE9pondre comme "D'apr\xE8s vos notes..."`,
    initial_message: "Bonjour, bienvenue dans le Smart Chat. Posez-moi une question sur vos notes et j'essaierai d'y r\xE9pondre."
  },
  de: {
    name: "Deutsch",
    pronouns: ["mein", "meine", "meinen", "meiner", "meines", "mir", "uns", "unser", "unseren", "unserer", "unseres"],
    context_prefix_prompt: "Kontext aus Suche:",
    context_suffix_prompt: 'Verwenden Sie den bereitgestellten Kontext, um zu antworten wie "Basierend auf Ihren Notizen..."',
    initial_message: "Hallo, willkommen beim Smart Chat. Stellen Sie mir eine Frage zu Ihren Notizen, und ich werde versuchen, sie zu beantworten."
  },
  it: {
    name: "Italiano",
    pronouns: ["mio", "mia", "miei", "mie", "noi", "nostro", "nostri", "nostra", "nostre"],
    context_prefix_prompt: "Contesto dalla ricerca:",
    context_suffix_prompt: 'Usa il contesto fornito per rispondere come "Basandoti sui tuoi appunti..."',
    initial_message: "Ciao, benvenuto al Smart Chat. Fai una domanda sui tuoi appunti e cercher\xF2 di risponderti."
  },
  pt: {
    name: "Portugu\xEAs",
    pronouns: ["meu", "eu", "mim", "minha", "nosso", "nossa", "n\xF3s"],
    context_prefix_prompt: "Contexto da pesquisa:",
    context_suffix_prompt: 'Use o contexto fornecido para responder como "Com base em suas anota\xE7\xF5es..."',
    initial_message: "Ol\xE1, bem-vindo ao Smart Chat. Fa\xE7a-me uma pergunta sobre suas anota\xE7\xF5es e tentarei respond\xEA-la."
  },
  "pt-br": {
    name: "Portugu\xEAs (Brasil)",
    pronouns: ["eu", "me", "mim", "meu", "meus", "minha", "minhas", "nosso", "nossos", "nossa", "nossas", "n\xF3s", "nos", "a gente"],
    context_prefix_prompt: "Contexto da pesquisa:",
    context_suffix_prompt: 'Use o contexto fornecido para responder como "Com base nas suas notas..."',
    initial_message: "Ol\xE1, bem-vindo ao Smart Chat. Fa\xE7a-me uma pergunta sobre suas notas e tentarei respond\xEA-la."
  },
  ja: {
    name: "\u65E5\u672C\u8A9E",
    pronouns: ["\u79C1", "\u81EA\u5206", "\u50D5", "\u4FFA", "\u79C1\u9054", "\u3053\u306E"],
    context_prefix_prompt: "\u691C\u7D22\u304B\u3089\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\uFF1A",
    context_suffix_prompt: "\u63D0\u4F9B\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u4F7F\u7528\u3057\u3066\u300C\u3053\u306E\u30CE\u30FC\u30C8\u306B\u57FA\u3065\u3044\u3066...\u300D\u306E\u3088\u3046\u306B\u5FDC\u7B54\u3057\u3066\u304F\u3060\u3055\u3044",
    initial_message: "\u3053\u3093\u306B\u3061\u306F\u3001Smart Chat\u3078\u3088\u3046\u3053\u305D\u3002\u3042\u306A\u305F\u306E\u30CE\u30FC\u30C8\u306B\u95A2\u3059\u308B\u8CEA\u554F\u3092\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u304A\u7B54\u3048\u3057\u307E\u3059\u3002"
  },
  ko: {
    name: "\uD55C\uAD6D\uC5B4",
    pronouns: ["\uB098", "\uB0B4", "\uB098\uC758", "\uC800", "\uC81C", "\uC6B0\uB9AC", "\uC800\uD76C"],
    context_prefix_prompt: "\uAC80\uC0C9\uC5D0\uC11C\uC758 \uCEE8\uD14D\uC2A4\uD2B8:",
    context_suffix_prompt: '\uC81C\uACF5\uB41C \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uC0AC\uC6A9\uD558\uC5EC "\uB2F9\uC2E0\uC758 \uB178\uD2B8\uC5D0 \uAE30\uBC18\uD558\uC5EC..."\uC640 \uAC19\uC774 \uB2F5\uBCC0\uD558\uC138\uC694',
    initial_message: "\uC548\uB155\uD558\uC138\uC694, Smart Chat\uC5D0 \uC624\uC2E0 \uAC83\uC744 \uD658\uC601\uD569\uB2C8\uB2E4. \uB178\uD2B8\uC5D0 \uAD00\uD55C \uC9C8\uBB38\uC774 \uC788\uC73C\uC2DC\uBA74 \uB9D0\uC500\uD574 \uC8FC\uC138\uC694. \uC81C\uAC00 \uB2F5\uBCC0\uD574 \uB4DC\uB9AC\uACA0\uC2B5\uB2C8\uB2E4."
  },
  zh: {
    name: "\u4E2D\u6587\uFF08\u7B80\u4F53\uFF09",
    pronouns: ["\u6211", "\u6211\u7684", "\u6211\u4EEC", "\u6211\u4EEC\u7684"],
    context_prefix_prompt: "\u67E5\u627E\u7684\u4E0A\u4E0B\u6587\uFF1A",
    context_suffix_prompt: "\u4F7F\u7528\u63D0\u4F9B\u7684\u4E0A\u4E0B\u6587\uFF0C\u4EE5\u201C\u6839\u636E\u4F60\u7684\u7B14\u8BB0...\u201D\u7684\u65B9\u5F0F\u56DE\u7B54",
    initial_message: "\u4F60\u597D\uFF0C\u6B22\u8FCE\u4F7F\u7528 Smart Chat\u3002\u8BF7\u95EE\u6211\u5173\u4E8E\u4F60\u7684\u7B14\u8BB0\u7684\u95EE\u9898\uFF0C\u6211\u4F1A\u5C3D\u529B\u56DE\u7B54\u3002"
  },
  "zh-TW": {
    name: "\u4E2D\u6587\uFF08\u7E41\u4F53\uFF09",
    pronouns: ["\u6211", "\u6211\u7684", "\u6211\u5011", "\u6211\u5011\u7684"],
    context_prefix_prompt: "\u67E5\u627E\u7684\u4E0A\u4E0B\u6587\uFF1A",
    context_suffix_prompt: "\u4F7F\u7528\u63D0\u4F9B\u7684\u4E0A\u4E0B\u6587\uFF0C\u4EE5\u300C\u6839\u64DA\u60A8\u7684\u7B46\u8A18...\u300D\u7684\u65B9\u5F0F\u56DE\u7B54",
    initial_message: "\u55E8\uFF0C\u6B61\u8FCE\u4F86\u5230 Smart Chat\u3002\u8ACB\u554F\u6211\u95DC\u65BC\u60A8\u7684\u7B46\u8A18\u7684\u554F\u984C\uFF0C\u6211\u6703\u76E1\u529B\u56DE\u7B54\u3002"
  },
  hi: {
    name: "\u0939\u093F\u0928\u094D\u0926\u0940",
    pronouns: ["\u092E\u0948\u0902", "\u092E\u0941\u091D\u0947", "\u092E\u0947\u0930\u093E", "\u092E\u0947\u0930\u0947", "\u092E\u0947\u0930\u0940", "\u0939\u092E", "\u0939\u092E\u0947\u0902", "\u0939\u092E\u093E\u0930\u093E", "\u0939\u092E\u093E\u0930\u0947", "\u0939\u092E\u093E\u0930\u0940"],
    context_prefix_prompt: "\u0916\u094B\u091C \u0938\u0947 \u0938\u0902\u0926\u0930\u094D\u092D:",
    context_suffix_prompt: '\u092A\u094D\u0930\u0926\u093E\u0928 \u0915\u093F\u090F \u0917\u090F \u0938\u0902\u0926\u0930\u094D\u092D \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u0930\u0915\u0947 "\u0906\u092A\u0915\u0947 \u0928\u094B\u091F\u094D\u0938 \u0915\u0947 \u0906\u0927\u093E\u0930 \u092A\u0930..." \u0915\u0940 \u0924\u0930\u0939 \u0909\u0924\u094D\u0924\u0930 \u0926\u0947\u0902',
    initial_message: "\u0928\u092E\u0938\u094D\u0924\u0947, Smart Chat \u092E\u0947\u0902 \u0906\u092A\u0915\u093E \u0938\u094D\u0935\u093E\u0917\u0924 \u0939\u0948\u0964 \u0905\u092A\u0928\u0947 \u0928\u094B\u091F\u094D\u0938 \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u092E\u0941\u091D\u0938\u0947 \u0915\u094B\u0908 \u092A\u094D\u0930\u0936\u094D\u0928 \u092A\u0942\u091B\u0947\u0902 \u0914\u0930 \u092E\u0948\u0902 \u0909\u0924\u094D\u0924\u0930 \u0926\u0947\u0928\u0947 \u0915\u093E \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0942\u0902\u0917\u093E\u0964"
  },
  ar: {
    name: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629",
    pronouns: ["\u0623\u0646\u0627", "\u0644\u064A", "\u0646\u062D\u0646", "\u0644\u0646\u0627", "\u064A", "\u0646\u0627"],
    context_prefix_prompt: "\u0633\u064A\u0627\u0642 \u0645\u0646 \u0627\u0644\u0628\u062D\u062B:",
    context_suffix_prompt: '\u0627\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0633\u064A\u0627\u0642 \u0627\u0644\u0645\u0642\u062F\u0645 \u0644\u0644\u0631\u062F \u0645\u062B\u0644 "\u0628\u0646\u0627\u0621\u064B \u0639\u0644\u0649 \u0645\u0644\u0627\u062D\u0638\u0627\u062A\u0643..."',
    initial_message: "\u0645\u0631\u062D\u0628\u0627\u064B \u0628\u0643 \u0641\u064A Smart Chat. \u0627\u0633\u0623\u0644\u0646\u064A \u0633\u0624\u0627\u0644\u0627\u064B \u062D\u0648\u0644 \u0645\u0644\u0627\u062D\u0638\u0627\u062A\u0643 \u0648\u0633\u0623\u062D\u0627\u0648\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629 \u0639\u0644\u064A\u0647."
  },
  bn: {
    name: "\u09AC\u09BE\u0982\u09B2\u09BE",
    pronouns: ["\u0986\u09AE\u09BF", "\u0986\u09AE\u09BE\u09B0", "\u0986\u09AE\u09BE\u0995\u09C7", "\u0986\u09AE\u09B0\u09BE", "\u0986\u09AE\u09BE\u09A6\u09C7\u09B0", "\u0986\u09AE\u09BE\u09A6\u09C7\u09B0\u0995\u09C7"],
    context_prefix_prompt: "\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u09A5\u09C7\u0995\u09C7 \u09AA\u09CD\u09B0\u09C7\u0995\u09CD\u09B7\u09BE\u09AA\u099F:",
    context_suffix_prompt: '\u09AA\u09CD\u09B0\u09A6\u09A4\u09CD\u09A4 \u09AA\u09CD\u09B0\u09B8\u0999\u09CD\u0997 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09C7 "\u0986\u09AA\u09A8\u09BE\u09B0 \u09A8\u09CB\u099F\u09C7\u09B0 \u09AD\u09BF\u09A4\u09CD\u09A4\u09BF\u09A4\u09C7..." \u098F\u09B0 \u09AE\u09A4\u09CB \u0995\u09B0\u09C7 \u0989\u09A4\u09CD\u09A4\u09B0 \u09A6\u09BF\u09A8',
    initial_message: "\u09B9\u09CD\u09AF\u09BE\u09B2\u09CB, Smart Chat-\u098F \u0986\u09AA\u09A8\u09BE\u0995\u09C7 \u09B8\u09CD\u09AC\u09BE\u0997\u09A4\u09AE\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 \u09A8\u09CB\u099F \u09B8\u09AE\u09CD\u09AA\u09B0\u09CD\u0995\u09C7 \u0986\u09AE\u09BE\u0995\u09C7 \u09AA\u09CD\u09B0\u09B6\u09CD\u09A8 \u0995\u09B0\u09C1\u09A8, \u0986\u09AE\u09BF \u0989\u09A4\u09CD\u09A4\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09AC\u0964"
  },
  ur: {
    name: "\u0627\u0631\u062F\u0648",
    pronouns: ["\u0645\u06CC\u06BA", "\u0645\u062C\u06BE\u06D2", "\u0645\u06CC\u0631\u0627", "\u06C1\u0645", "\u06C1\u0645\u06CC\u06BA", "\u06C1\u0645\u0627\u0631\u0627"],
    context_prefix_prompt: "\u062A\u0644\u0627\u0634 \u0938\u0947 \u0633\u06CC\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642:",
    context_suffix_prompt: '\u0641\u0631\u0627\u06C1\u0645 \u06A9\u0631\u062F\u06C1 \u0633\u06CC\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06A9\u0627 \u0627\u0633\u062A\u0639\u0645\u0627\u0644 \u06A9\u0631\u062A\u06D2 \u06C1\u0648\u0626\u06D2 \u0627\u06CC\u0633\u06D2 \u062C\u0648\u0627\u0628 \u062F\u06CC\u06BA \u062C\u06CC\u0633\u06D2 "\u0622\u067E \u06A9\u06D2 \u0646\u0648\u0679\u0633 \u0915\u0940 \u0628\u0646\u06CC\u0627\u062F \u067E\u0631..."',
    initial_message: "\u062E\u0648\u0634 \u0622\u0645\u062F\u06CC\u062F\u060C Smart Chat \u0645\u06CC\u06BA\u06D4 \u0627\u067E\u0646\u06D2 \u0646\u0648\u0679\u0633 \u06A9\u06D2 \u0628\u0627\u0631\u06D2 \u0645\u06CC\u06BA \u0645\u062C\u06BE \u0633\u06D2 \u06A9\u0648\u0626\u06CC \u0633\u0648\u0627\u0644 \u067E\u0648\u0686\u06BE\u06CC\u06BA \u0627\u0648\u0631 \u0645\u06CC\u06BA \u062C\u0648\u0627\u0628 \u062F\u06CC\u0646\u06D2 \u06A9\u06CC \u06A9\u0648\u0634\u0634 \u06A9\u0631\u0648\u06BA \u06AF\u0627\u06D4"
  },
  sw: {
    name: "Kiswahili",
    pronouns: ["mimi", "yangu", "sisi", "yetu"],
    context_prefix_prompt: "Muktadha kutoka utafutaji:",
    context_suffix_prompt: 'Tumia muktadha uliotolewa kujibu kama "Kulingana na maelezo yako..."',
    initial_message: "Hujambo, karibu kwenye Smart Chat. Niulize swali kuhusu maelezo yako na nitajaribu kujibu."
  },
  pl: {
    name: "Polski",
    pronouns: ["ja", "mnie", "m\xF3j", "moja", "moje", "my", "nas", "nasz", "nasza", "nasze"],
    context_prefix_prompt: "Kontekst z wyszukiwania:",
    context_suffix_prompt: 'U\u017Cyj podanego kontekstu, aby odpowiedzie\u0107 jak "Na podstawie twoich notatek..."',
    initial_message: "Cze\u015B\u0107, witaj w Smart Chat. Zadaj mi pytanie dotycz\u0105ce twoich notatek, a postaram si\u0119 odpowiedzie\u0107."
  },
  uk: {
    name: "\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430",
    pronouns: ["\u044F", "\u043C\u0435\u043D\u0456", "\u043C\u0456\u0439", "\u043C\u043E\u044F", "\u043C\u043E\u0454", "\u043C\u0438", "\u043D\u0430\u0441", "\u043D\u0430\u0448", "\u043D\u0430\u0448\u0430", "\u043D\u0430\u0448\u0435"],
    context_prefix_prompt: "\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0437 \u043F\u043E\u0448\u0443\u043A\u0443:",
    context_suffix_prompt: '\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u043D\u0430\u0434\u0430\u043D\u0438\u0439 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442, \u0449\u043E\u0431 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0441\u0442\u0438 \u044F\u043A "\u041D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 \u0432\u0430\u0448\u0438\u0445 \u043D\u043E\u0442\u0430\u0442\u043E\u043A..."',
    initial_message: "\u041F\u0440\u0438\u0432\u0456\u0442, \u043B\u0430\u0441\u043A\u0430\u0432\u043E \u043F\u0440\u043E\u0441\u0438\u043C\u043E \u0434\u043E Smart Chat. \u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u043C\u0435\u043D\u0456 \u043F\u0438\u0442\u0430\u043D\u043D\u044F \u043F\u0440\u043E \u0432\u0430\u0448\u0456 \u043D\u043E\u0442\u0430\u0442\u043A\u0438, \u0456 \u044F \u0441\u043F\u0440\u043E\u0431\u0443\u044E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0441\u0442\u0438."
  },
  nl: {
    name: "Nederlands",
    pronouns: ["ik", "mij", "me", "mijn", "wij", "we", "ons", "onze"],
    context_prefix_prompt: "Context van zoekopdracht:",
    context_suffix_prompt: 'Gebruik de verstrekte context om te reageren als "Gebaseerd op uw notities..."',
    initial_message: "Hallo, welkom bij Smart Chat. Stel me een vraag over uw notities en ik zal proberen deze te beantwoorden."
  },
  sv: {
    name: "Svenska",
    pronouns: ["jag", "mig", "min", "mitt", "mina", "vi", "oss", "v\xE5r", "v\xE5rt", "v\xE5ra"],
    context_prefix_prompt: "Kontext fr\xE5n s\xF6kning:",
    context_suffix_prompt: 'Anv\xE4nd den tillhandah\xE5llna kontexten f\xF6r att svara som "Baserat p\xE5 dina anteckningar..."',
    initial_message: "Hej, v\xE4lkommen till Smart Chat. St\xE4ll en fr\xE5ga om dina anteckningar s\xE5 ska jag f\xF6rs\xF6ka svara."
  },
  tr: {
    name: "T\xFCrk\xE7e",
    pronouns: ["ben", "bana", "benim", "biz", "bize", "bizim"],
    context_prefix_prompt: "Arama ba\u011Flam\u0131:",
    context_suffix_prompt: 'Verilen ba\u011Flam\u0131 kullanarak "Notlar\u0131n\u0131za dayanarak..." \u015Feklinde cevap verin',
    initial_message: "Merhaba, Smart Chat'e ho\u015F geldiniz. Notlar\u0131n\u0131z hakk\u0131nda bana bir soru sorun, yan\u0131tlamaya \xE7al\u0131\u015Faca\u011F\u0131m."
  },
  ru: {
    name: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439",
    pronouns: ["\u044F", "\u043C\u043E\u0451", "\u043C\u043E\u0435", "\u043C\u043E\u0439", "\u043C\u043D\u0435", "\u043C\u043E\u0438\u0445", "\u043C\u043E\u0438", "\u043C\u043E\u0451\u043C", "\u043C\u043E\u0435\u043C", "\u043D\u0430\u0448", "\u043D\u0430\u0448\u0435", "\u043D\u0430\u0448\u0435\u043C", "\u043D\u0430\u0448\u0435\u043C\u0443", "\u043D\u0430\u0448\u0438\u043C", "\u043D\u0430\u0448\u0438", "\u043C\u044B"],
    context_prefix_prompt: "\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0438\u0437 \u043F\u043E\u0438\u0441\u043A\u0430:",
    context_suffix_prompt: '\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u0432\u0435\u0442\u0438\u0442\u044C \u043A\u0430\u043A "\u041D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u043F\u0438\u0441\u0435\u0439..."',
    initial_message: "\u041F\u0440\u0438\u0432\u0435\u0442, \u0434\u043E\u0431\u0440\u043E \u043F\u043E\u0436\u0430\u043B\u043E\u0432\u0430\u0442\u044C \u0432 Smart Chat. \u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u043C\u043D\u0435 \u0432\u043E\u043F\u0440\u043E\u0441 \u043E \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u043F\u0438\u0441\u044F\u0445, \u0438 \u044F \u043F\u043E\u0441\u0442\u0430\u0440\u0430\u044E\u0441\u044C \u043E\u0442\u0432\u0435\u0442\u0438\u0442\u044C."
  }
};

// smart-chat-v0/utils/self_referential_keywords.js
function contains_self_referential_keywords(user_input, language) {
  const language_settings = ScTranslations_default[language];
  if (!language_settings) return false;
  let check_str = `${user_input}`;
  check_str = check_str.replace(/\[\[[^\]]+\]\]/g, "").replace(/\/[^/]*?\//g, "").replace(/@"[^"]+"/g, "");
  return new RegExp(`\\b(${language_settings.pronouns.join("|")})\\b`, "i").test(check_str);
}
function get_language_options() {
  return Object.entries(ScTranslations_default).map(([language, language_settings]) => ({ value: language, name: language_settings.name }));
}
function get_initial_message(language) {
  const language_settings = ScTranslations_default[language];
  return language_settings.initial_message;
}
function get_translated_context_suffix_prompt(language) {
  const language_settings = ScTranslations_default[language];
  return language_settings.context_suffix_prompt;
}
function get_translated_context_prefix_prompt(language) {
  const language_settings = ScTranslations_default[language];
  return language_settings.context_prefix_prompt;
}

// smart-chat-v0/smart_threads.js
var SmartThreads = class extends SmartSources2 {
  // /**
  //  * Initializes the file system and preloads chat models
  //  * @async
  //  */
  // async init() {
  //   await this.fs.init();
  // }
  /**
   * Initializes items by setting up the file system and loading sources.
   * @async
   * @returns {Promise<void>}
   */
  async init_items() {
    if (!await this.fs.exists(this.source_dir)) await this.fs.mkdir(this.source_dir);
    (await this.fs.list(this.source_dir)).filter((file) => this.source_adapters?.[file.extension]).forEach((file) => {
      const key = file.path.replace(this.source_dir + "/", "").replace("." + file.extension, "");
      this.items[key] = new this.item_type(this.env, { path: file.path, key });
      this.items[key].source_adapter.import();
    });
  }
  /**
   * Renders the chat interface
   * @async
   * @param {HTMLElement} [container] - Container element to render into
   * @param {Object} [opts={}] - Rendering options
   * @returns {DocumentFragment} Rendered chat interface
   */
  async render(container = this.container, opts = {}) {
    if (Object.keys(opts).length > 0) this.render_opts = opts;
    if (container && (!this.container || this.container !== container)) this.container = container;
    const frag = await this.env.render_component("smart_chat", this, this.render_opts);
    this.env.smart_view.empty(container);
    container.appendChild(frag);
    return frag;
  }
  get chat_model_settings() {
    if (!this.settings.chat_model) this.settings.chat_model = {};
    return this.settings.chat_model;
  }
  /**
   * @property {Object} chat_model - The AI chat model instance
   * @readonly
   */
  get chat_model() {
    if (!this._chat_model) {
      this._chat_model = this.env.init_module("smart_chat_model", {
        model_config: {},
        settings: this.chat_model_settings,
        env: this.env,
        reload_model: this.reload_chat_model.bind(this),
        re_render_settings: this.re_render_settings.bind(this)
      });
    }
    return this._chat_model;
  }
  reload_chat_model() {
    console.log("reload_chat_model");
    this.chat_model.unload();
    this._chat_model = null;
  }
  get container() {
    return this._container;
  }
  set container(container) {
    this._container = container;
  }
  /**
   * @property {Object} default_settings - Default configuration for models
   * @readonly
   * @returns {Object} settings - Default settings object containing:
   * @returns {Object} settings.chat_model - Chat model configuration
   * @returns {string} settings.chat_model.adapter - Default adapter
   * @returns {Object} settings.chat_model.openai - OpenAI-specific settings
   * @returns {Object} settings.embed_model - Embedding model configuration
   */
  get default_settings() {
    return {
      chat_model: {
        adapter: "openai",
        openai: {
          model_key: "gpt-4o"
        }
      },
      embed_model: {
        model_key: "None"
      }
    };
  }
  re_render_settings() {
    this.env.smart_view.empty(this.settings_container);
    this.render_settings();
  }
  async render_settings(container = this.settings_container, opts = {}) {
    container = await this.render_collection_settings(container, opts);
    const chat_model_frag = await this.env.render_component("settings", this.chat_model, opts);
    container.appendChild(chat_model_frag);
    return container;
  }
  /**
   * @property {Object} settings_config - Processed settings configuration
   * @readonly
   */
  get settings_config() {
    return {
      "language": {
        name: "Language",
        type: "dropdown",
        options_callback: "get_language_options",
        description: "The language to use for the chat.",
        default: "en"
      },
      "review_context": {
        name: "Review Context",
        type: "toggle",
        default: false,
        description: "Whether to review the retrieved context before the AI completes the message."
      },
      "lookup_limit": {
        name: "Lookup Limit",
        type: "number",
        default: 10,
        description: "The maximum number of context items to retrieve via lookup."
      },
      "send_tool_output_in_user_message": {
        name: "Send Tool Output in User Message",
        type: "toggle",
        default: false,
        description: "Whether to send tool output in the user message."
      }
    };
  }
  get_language_options() {
    return get_language_options();
  }
  get initial_message() {
    return get_initial_message(this.language);
  }
  get language() {
    return this.settings.language || "en";
  }
  /**
   * Gets the currently active thread based on the chat box data-thread-key
   * @returns {SmartThread} The active thread
   */
  get_active_thread() {
    const chat_box = this.container?.querySelector(".sc-thread");
    if (!chat_box) return null;
    const thread_key = chat_box.getAttribute("data-thread-key");
    if (!thread_key) return null;
    return this.get(thread_key);
  }
  queue_save() {
    if (this._queue_process_save) {
      clearTimeout(this._queue_process_save);
      this._queue_process_save = null;
    }
    this._queue_process_save = setTimeout(async () => {
      await this.process_save_queue();
      this._queue_process_save = null;
    }, 3e3);
  }
  /**
   * @property {string} data_folder - Path to chat history storage
   * @readonly
   */
  get data_folder() {
    return this.env.opts.env_path + (this.env.opts.env_path ? "/" : "") + ".smart-env";
  }
  get source_dir() {
    return this.data_folder + "/" + this.collection_key;
  }
  get fs() {
    if (!this._fs) {
      this._fs = super.fs;
      this._fs.excluded_patterns = [];
    }
    return this._fs;
  }
  // disable embed_model for SmartThreads
  get embed_model() {
    return null;
  }
  async process_embed_queue() {
    console.log("skipping embed queue processing for SmartThreads");
  }
  async process_load_queue() {
    console.log("skipping load queue processing for SmartThreads");
  }
};

// smart-chat-v0/components/thread.js
function build_html15(thread, opts = {}) {
  return `
    <div class="sc-thread" data-thread-key="${thread.key}">
      <div class="sc-message-container">
        ${opts.show_welcome && !thread.messages.length ? `
          <div class="sc-message assistant">
            <div class="sc-message-content">
              <span>${thread.collection.initial_message}</span>
            </div>
          </div>
        ` : ""}
      </div>
      <div class="sc-typing-indicator">
        <div class="sc-typing-dots">
          <div class="sc-typing-dot"></div>
          <div class="sc-typing-dot"></div>
          <div class="sc-typing-dot"></div>
        </div>
      </div>
      <div class="sc-config-error-notice" style="display: none;"></div>
      <div class="sc-chat-form">
        <textarea class="sc-chat-input" placeholder="Use @ to add context. Try &quot;Based on my notes&quot; or &quot;Summarize [[this note]]&quot; or &quot;Important tasks in /folder/&quot;"></textarea>
        <div class="sc-btn-container">
          <span id="sc-abort-button" style="display: none;">${this.get_icon_html("square")}</span>
          <button class="send-button" id="sc-send-button">
            <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="none" viewBox="0 0 32 32">
              <circle cx="16" cy="16" r="16" fill="currentColor" />
              <path fill="currentColor" fill-rule="evenodd" d="M15.192 8.906a1.143 1.143 0 0 1 1.616 0l5.143 5.143a1.143 1.143 0 0 1-1.616 1.616l-3.192-3.192v9.813a1.143 1.143 0 0 1-2.286 0v-9.813l-3.192 3.192a1.143 1.143 0 1 1-1.616-1.616z" clip-rule="evenodd" fill="#727272"></path>
            </svg>
          </button>
        </div>
      </div>
    </div>
  `;
}
async function render21(thread, opts = {}) {
  const html = build_html15.call(this, thread, {
    show_welcome: opts.show_welcome !== false
  });
  const frag = this.create_doc_fragment(html);
  return await post_process18.call(this, thread, frag, opts);
}
async function post_process18(thread, frag, opts) {
  const container = frag.querySelector(".sc-message-container");
  if (thread.messages.length) {
    thread.messages.forEach((msg) => {
      const msg_elm = document.createElement("div");
      msg_elm.id = msg.data.id;
      container.appendChild(msg_elm);
    });
    await Promise.all(
      thread.messages.map((msg) => msg.render(container))
    );
  }
  const chat_input = frag.querySelector(".sc-chat-form textarea");
  if (chat_input) {
    chat_input.addEventListener("keydown", async (e) => {
      const is_mod = this.adapter.is_mod_event(e);
      if (e.key === "Enter" && (is_mod || e.ctrlKey || e.metaKey)) {
        e.preventDefault();
        await send_message(chat_input, thread);
        return;
      }
    });
    chat_input.addEventListener("keyup", (e) => handle_chat_input_keyup.call(this, e, chat_input));
  }
  if (container.scrollHeight > container.clientHeight) {
    container.scrollTop = container.scrollHeight;
  }
  const send_button = frag.querySelector("#sc-send-button");
  send_button.addEventListener("click", async () => {
    await send_message(chat_input, thread);
  });
  const abort_button = frag.querySelector("#sc-abort-button");
  abort_button.addEventListener("click", () => {
    thread.chat_model.abort_current_response();
    thread.clear_streaming_ux();
  });
  const validation_result = thread.chat_model.validate_config();
  if (!validation_result.valid) {
    const notice = frag.querySelector(".sc-config-error-notice");
    const message = document.createElement("span");
    message.textContent = validation_result.message;
    notice.appendChild(message);
    notice.style.display = "";
    const hide_button = document.createElement("button");
    hide_button.textContent = "Hide";
    notice.appendChild(hide_button);
    hide_button.addEventListener("click", () => {
      notice.style.display = "none";
    });
  }
  const typing_indicator = frag.querySelector(".sc-typing-indicator");
  if (typing_indicator) {
    const is_dark = document.body.classList.contains("theme-dark");
    typing_indicator.style.setProperty("--text-muted", is_dark ? "rgba(255, 255, 255, 0.4)" : "rgba(0, 0, 0, 0.4)");
  }
  return frag;
}
async function send_message(chat_input, thread) {
  const message = chat_input.value;
  chat_input.value = "";
  await thread.handle_message_from_user(message);
  await thread.save();
}
function handle_chat_input_keyup(e, chat_input) {
  clearTimeout(this.resize_debounce);
  this.resize_debounce = setTimeout(() => {
    chat_input.style.height = "auto";
    chat_input.style.height = `${chat_input.scrollHeight}px`;
  }, 200);
}

// smart-chat-v0/utils/folder_references.js
function contains_folder_reference(user_input) {
  const first_slash = user_input.indexOf("/");
  if (first_slash === -1) return false;
  const last_slash = user_input.lastIndexOf("/");
  if (last_slash - first_slash <= 1) return false;
  const first_open_parentheses = user_input.indexOf("(");
  const first_close_parentheses = user_input.indexOf(")");
  if (first_open_parentheses > first_slash && first_close_parentheses < last_slash) return true;
  const first_wiki_open = user_input.indexOf("[[");
  const first_wiki_close = user_input.indexOf("]]");
  if (first_wiki_open !== -1 && first_wiki_close !== -1) {
    if (first_slash > first_wiki_open && last_slash < first_wiki_close) return false;
  }
  if (first_open_parentheses !== -1 && first_close_parentheses !== -1) {
    if (first_slash > first_open_parentheses && last_slash < first_close_parentheses) return false;
    const without_content_in_parentheses = user_input.slice(0, first_open_parentheses) + user_input.slice(first_close_parentheses + 1);
    if (without_content_in_parentheses.indexOf("/") !== -1) return false;
    if (without_content_in_parentheses.indexOf("/") === without_content_in_parentheses.lastIndexOf("/")) return false;
  }
  return true;
}
function extract_folder_references(folders, user_input) {
  folders = folders.slice();
  const matches = folders.sort((a, b) => b.length - a.length).map((folder) => {
    if (user_input.indexOf(folder) !== -1) {
      user_input = user_input.replace(folder, "");
      return folder;
    }
    return false;
  }).filter((folder) => folder && folder !== "/");
  if (matches) return matches;
  return false;
}

// smart-chat-v0/utils/internal_links.js
function contains_internal_link(user_input) {
  if (user_input.indexOf("[[") === -1) return false;
  if (user_input.indexOf("]]") === -1) return false;
  return true;
}
function extract_internal_links(user_input) {
  const matches = [];
  const regex = /\[\[(.*?)\]\]/g;
  let match;
  while ((match = regex.exec(user_input)) !== null) {
    matches.push(match[1]);
  }
  return matches;
}
function contains_internal_embedded_link(user_input) {
  if (user_input.indexOf("![") === -1) return false;
  if (user_input.indexOf("]") === -1) return false;
  return true;
}
function extract_internal_embedded_links(user_input) {
  const matches = [];
  const regex = /[!]\[\[(.*?)\]\]/g;
  let match;
  while ((match = regex.exec(user_input)) !== null) {
    matches.push(match);
  }
  return matches;
}

// smart-chat-v0/components/error.js
function build_html16(error, opts = {}) {
  const error_message = error?.error?.message || error?.message || "An unknown error occurred";
  const error_code = error?.error?.code || error?.code;
  const error_type = error?.error?.type || error?.type || "Error";
  return `
    <div class="sc-error-container" role="alert">
      <div class="sc-error-header">
        <span class="sc-error-icon">${this.get_icon_html("alert-triangle")}</span>
        <span class="sc-error-type">${error_type}</span>
        ${error_code ? `<span class="sc-error-code">(${error_code})</span>` : ""}
        <button class="sc-error-close" title="Dismiss">${this.get_icon_html("x")}</button>
      </div>
      <div class="sc-error-content">
        <p class="sc-error-message">${error_message}</p>
        ${error?.error?.details ? `
          <button class="sc-error-details-toggle" aria-expanded="false">
            Show Details ${this.get_icon_html("chevron-down")}
          </button>
          <div class="sc-error-details" hidden>
            <pre>${JSON.stringify(error.error.details, null, 2)}</pre>
          </div>
        ` : ""}
      </div>
      ${opts.retry ? `
        <div class="sc-error-actions">
          <button class="sc-error-retry">
            ${this.get_icon_html("refresh-cw")} Retry
          </button>
        </div>
      ` : ""}
    </div>
  `;
}
async function render22(error, opts = {}) {
  const html = build_html16.call(this, error, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process19.call(this, error, frag, opts);
}
async function post_process19(error, frag, opts) {
  const close_button = frag.querySelector(".sc-error-close");
  if (close_button) {
    close_button.addEventListener("click", () => {
      const container = close_button.closest(".sc-error-container");
      container.remove();
    });
  }
  const details_toggle = frag.querySelector(".sc-error-details-toggle");
  const details_content = frag.querySelector(".sc-error-details");
  if (details_toggle && details_content) {
    details_toggle.addEventListener("click", () => {
      const is_expanded = details_toggle.getAttribute("aria-expanded") === "true";
      details_toggle.setAttribute("aria-expanded", !is_expanded);
      details_content.hidden = is_expanded;
      this.safe_inner_html(details_toggle, `
        ${is_expanded ? "Show" : "Hide"} Details ${this.get_icon_html(is_expanded ? "chevron-down" : "chevron-up")}
      `);
    });
  }
  const retry_button = frag.querySelector(".sc-error-retry");
  if (retry_button && opts.retry && typeof opts.retry === "function") {
    retry_button.addEventListener("click", async () => {
      const container = retry_button.closest(".sc-error-container");
      container.classList.add("retrying");
      retry_button.disabled = true;
      this.safe_inner_html(retry_button, `${this.get_icon_html("loader")} Retrying...`);
      try {
        await opts.retry();
        container.remove();
      } catch (retry_error) {
        const new_error_frag = await render22.call(this, retry_error, opts);
        container.replaceWith(new_error_frag);
      }
    });
  }
  if (opts.auto_dismiss) {
    const dismiss_delay = typeof opts.auto_dismiss === "number" ? opts.auto_dismiss : 5e3;
    setTimeout(() => {
      const container = frag.querySelector(".sc-error-container");
      if (container) {
        container.classList.add("sc-error-fade-out");
        setTimeout(() => container.remove(), 300);
      }
    }, dismiss_delay);
  }
  return frag;
}

// smart-chat-v0/smart_thread.js
var SmartThread = class extends SmartSource2 {
  /**
   * @static
   * @property {Object} defaults - Default configuration for a new thread
   */
  static get defaults() {
    return {
      data: {
        created_at: null,
        responses: {},
        messages: {},
        branches: {},
        path: null
      }
    };
  }
  // Define available tools
  tools = {
    lookup: {
      type: "function",
      function: {
        name: "lookup",
        description: "Performs a semantic search of the user's data to surface relevant content.",
        parameters: {
          type: "object",
          properties: {
            hypotheticals: {
              type: "object",
              description: "Predicted relevant notes in markdown format. Provide at least three.",
              properties: {
                "1": { type: "string" },
                "2": { type: "string" },
                "3": { type: "string" }
              },
              required: ["1", "2", "3"]
            }
          },
          required: ["hypotheticals"]
        }
      }
    }
  };
  /**
   * Imports the SmartSource by checking for updates and parsing content.
   * @async
   */
  async import() {
    this._queue_import = false;
    try {
      await this.source_adapter.import();
    } catch (err) {
      this.queue_import();
      console.error(err, err.stack);
    }
  }
  /**
   * Renders the thread UI.
   * @async
   * @param {HTMLElement} [container=this.container] - The container element to render into.
   * @param {Object} [opts={}] - Additional rendering options.
   * @returns {Promise<DocumentFragment>} The rendered thread interface.
   */
  async render(container = this.container, opts = {}) {
    const frag = await this.env.render_component("thread", this, opts);
    if (container) {
      container.empty();
      if (container.classList.contains("sc-thread")) {
        container.replaceWith(frag);
      } else {
        container.appendChild(frag);
      }
    }
    return frag;
  }
  /**
   * Handles a new user message by creating a corresponding SmartMessage.
   * This involves parsing the message content for inline references, folder references,
   * and self-referential keywords.
   *
   * @async
   * @param {string} content - The raw text content of the user's message.
   */
  async handle_message_from_user(content) {
    try {
      const new_msg_data = this.#prepare_new_user_message_data(content);
      this.#process_inline_embedded_links(new_msg_data);
      this.#extract_context_from_message_content(new_msg_data);
      await this.env.smart_messages.create_or_update(new_msg_data);
    } catch (error) {
      console.error("Error in handle_message_from_user:", error);
    }
  }
  /**
   * Creates a new system message or updates the last existing system message.
   * Useful for adding guidance or instructions from the system to the user.
   *
   * @async
   * @param {string|Object} system_message - The system message as text or a content object.
   */
  async add_system_message(system_message) {
    if (typeof system_message === "string") {
      system_message = { type: "text", text: system_message };
    }
    if (!system_message.type) system_message.type = "text";
    const last_msg = this.messages[this.messages.length - 1];
    if (last_msg?.role === "system") {
      last_msg.content.push(system_message);
      last_msg.render();
    } else {
      await this.env.smart_messages.create_or_update({
        role: "system",
        content: [system_message],
        thread_key: this.key
      });
    }
  }
  /**
   * Processes and adds the AI model's response to the thread.
   * If the model's response includes tool calls, they are handled accordingly.
   *
   * @async
   * @param {Object} response - The raw response object from the AI model.
   * @param {Object} [opts={}] - Additional options.
   * @returns {Promise<Array>} Array of created or updated message objects.
   */
  async handle_message_from_chat_model(response, opts = {}) {
    const response_id = response.id;
    if (!response_id) return [];
    const new_messages = [];
    for (const choice of response.choices || []) {
      const msg_data = { ...choice?.message || choice, thread_key: this.key, response_id };
      const existing_msg = this.messages.find((m) => m.data.response_id === response_id);
      if (existing_msg) msg_data.key = existing_msg.key;
      const new_msg = await this.env.smart_messages.create_or_update(msg_data);
      new_messages.push(new_msg);
      if (msg_data.tool_calls?.length > 0) {
        await this.handle_tool_calls(msg_data.tool_calls, msg_data);
        await new_msg.init();
      }
    }
    return new_messages;
  }
  /**
   * Handles the execution of detected tool calls from a message.
   * This is a base implementation that should be overridden by subclasses
   * to provide specific tool handling logic.
   * 
   * @async
   * @param {Array<Object>} tool_calls - Array of tool call objects found in the message
   * @param {Object} msg_data - Data of the message that triggered these tool calls
   */
  async handle_tool_calls(tool_calls, msg_data) {
    console.warn("handle_tool_calls() not implemented in base class");
  }
  /**
   * Converts the entire thread state into a request payload for the AI model.
   * This involves collecting all messages and optionally adding tool definitions and choices.
   *
   * @async
   * @returns {Promise<Object>} The request object ready to be sent to the AI model.
   */
  async to_request() {
    const request = { messages: [] };
    for (let i = 0; i < this.messages.length; i++) {
      const msg = this.messages[i];
      if (this.settings.send_tool_output_in_user_message) {
        if (this.#should_include_tool_output(msg)) {
          const combined_msg = await this.#combine_user_and_tool_output(msg);
          request.messages.push(combined_msg);
          continue;
        }
        if (msg.role === "assistant" && msg.tool_calls?.length) {
          continue;
        }
        if (msg.role === "tool") {
          continue;
        }
      }
      request.messages.push(await msg.to_request());
      if (msg.context?.has_self_ref || msg.context?.folder_refs) {
        request.tools = [this.tools["lookup"]];
        if (msg.is_last_message && msg.role === "user") {
          request.tool_choice = { type: "function", function: { name: "lookup" } };
        }
      }
    }
    if (this.last_message_is_tool && this.settings.send_tool_output_in_user_message) {
      request.tools = null;
    }
    if (this.last_message_is_tool) {
      delete request.tool_choice;
    }
    request.temperature = 0.3;
    request.top_p = 1;
    request.presence_penalty = 0;
    request.frequency_penalty = 0;
    this.#reorder_last_user_message_if_needed(request);
    return request;
  }
  get last_message_is_tool() {
    const last_msg = this.messages[this.messages.length - 1];
    return last_msg?.role === "tool";
  }
  /**
   * Sends the current thread state to the AI model for completion.
   * Handles streaming and non-streaming responses, as well as errors.
   *
   * @async
   */
  async complete() {
    this.show_typing_indicator();
    const request = await this.to_request();
    const should_stream = this.chat_model.can_stream && (!request.tool_choice || request.tool_choice === "none");
    if (should_stream) {
      await this.chat_model.stream(request, {
        chunk: this.chunk_handler.bind(this),
        done: this.done_handler.bind(this),
        error: this.error_handler.bind(this)
      });
    } else {
      const response = await this.chat_model.complete(request);
      if (response.error) {
        return this.error_handler(response);
      }
      this.data.responses[response.id] = response;
      await this.handle_message_from_chat_model(response);
    }
    this.hide_typing_indicator();
  }
  /**
   * Handles partial chunks of a streaming response from the model.
   * @async
   * @param {Object} response - The partial response chunk from the model.
   */
  async chunk_handler(response) {
    const msg_items = await this.handle_message_from_chat_model(response);
    if (msg_items?.length > 0) await msg_items[0].render();
  }
  /**
   * Handles the final event of a streaming response from the model.
   * @async
   * @param {Object} response - The final response object from the model.
   */
  async done_handler(response) {
    const msg_items = await this.handle_message_from_chat_model(response);
    this.data.responses[response.id] = response;
    if (msg_items.length > 0) await msg_items[0].init();
  }
  /**
   * Handles error responses from the model, rendering an error message in the thread.
   * @param {Object} response - The error response object.
   */
  error_handler(response) {
    this.hide_typing_indicator();
    this.render_error(response);
    console.error("error_handler", response);
  }
  /**
   * Renders an error message in the UI.
   * @async
   * @param {Object} response - The error response object.
   * @param {HTMLElement} [container=this.messages_container] - Container element for the error.
   * @returns {Promise<DocumentFragment>}
   */
  async render_error(response, container = this.messages_container) {
    const frag = await render22.call(this.smart_view, response);
    if (container) container.appendChild(frag);
    return frag;
  }
  /**
   * @deprecated temp handling until SmartThreads/SmartChats v2
   */
  get file_type() {
    return "json";
  }
  /*** Private Helpers ***/
  /**
   * Prepares initial data for a new user message.
   * @private
   * @param {string} content - The raw user-provided content.
   * @returns {Object} The data object for the new message.
   */
  #prepare_new_user_message_data(content) {
    return {
      thread_key: this.key,
      role: "user",
      content: [{ type: "text", text: content.trim() }],
      context: {}
    };
  }
  /**
   * Processes inline embedded links (e.g., ![[link]]) within the user message.
   * Replaces them with separate message parts (text or images).
   * @private
   * @param {Object} new_msg_data - The message data object to modify.
   */
  #process_inline_embedded_links(new_msg_data) {
    for (let i = 0; i < new_msg_data.content.length; i++) {
      const part = new_msg_data.content[i];
      if (part.type !== "text" || !part.text) continue;
      if (contains_internal_embedded_link(part.text)) {
        const internal_links = extract_internal_embedded_links(part.text);
        for (const [full_match, link_path] of internal_links) {
          const [before, after] = part.text.split(full_match);
          const embedded_part = this.#create_embedded_part(link_path);
          part.text = after;
          if (before?.trim()?.length) {
            new_msg_data.content.splice(
              i,
              0,
              { type: "text", text: before },
              embedded_part
            );
          } else {
            new_msg_data.content.splice(i, 0, embedded_part);
          }
        }
      }
    }
  }
  /**
   * Creates an embedded part object (image or text) from an embedded link path.
   * @private
   * @param {string} link_path - The path to the embedded content.
   * @returns {Object} The embedded part object.
   */
  #create_embedded_part(link_path) {
    const is_image = ["png", "jpg", "jpeg"].some((ext) => link_path.endsWith(ext));
    if (is_image) {
      return { type: "image_url", input: { image_path: link_path } };
    } else {
      const resolved_path = this.env.smart_sources.fs.get_link_target_path(link_path, "/");
      return { type: "text", input: { key: resolved_path } };
    }
  }
  /**
   * Extracts and attaches relevant context from the message content.
   * @private
   * @param {Object} new_msg_data - The message data object to modify.
   */
  #extract_context_from_message_content(new_msg_data) {
    for (let i = 0; i < new_msg_data.content.length; i++) {
      const part = new_msg_data.content[i];
      if (part.type !== "text" || !part.text) continue;
      if (contains_internal_link(part.text)) {
        const internal_links = extract_internal_links(part.text);
        new_msg_data.context.internal_links = internal_links.map(
          (link) => this.env.smart_sources?.fs?.get_link_target_path(link, "/") || link
        );
      }
      if (contains_folder_reference(part.text)) {
        const folders = Object.keys(this.env.smart_sources.fs.folders);
        const folder_refs = extract_folder_references(folders, part.text);
        new_msg_data.context.folder_refs = folder_refs;
      }
      if (contains_self_referential_keywords(part.text, this.language)) {
        new_msg_data.context.has_self_ref = true;
      }
    }
  }
  /**
   * Determines if we should include tool output in the user message based on configuration.
   * @private
   * @param {SmartMessage} msg - The current message being processed.
   * @returns {boolean} True if tool output should be included, false otherwise.
   */
  #should_include_tool_output(msg) {
    return msg.role === "user" && msg.next_message?.tool_calls?.length && !msg.next_message.is_last_message && msg.next_message.next_message?.role === "tool";
  }
  /**
   * Combines the user message with the subsequent tool output, embedding the tool output
   * in the user message request.
   * @private
   * @param {SmartMessage} msg - The user message before the tool output.
   * @returns {Promise<Object>} A message object that includes the tool output followed by the user content.
   */
  async #combine_user_and_tool_output(msg) {
    const message = { role: "user", content: [] };
    const tool_output = await msg.next_message.next_message.tool_call_output_to_request();
    message.content.push({ type: "text", text: tool_output });
    const user_content = await msg.to_request();
    if (user_content.content) {
      message.content.push(...user_content.content);
    }
    return message;
  }
  /**
   * Ensures the last user message is placed at the end of the request if the last message is a tool output.
   * @private
   * @param {Object} request - The request object being built.
   */
  #reorder_last_user_message_if_needed(request) {
    if (request.messages[request.messages.length - 1]?.tool_call_id) {
      const last_user_msg_index = request.messages.findLastIndex((msg) => msg.role === "user");
      if (last_user_msg_index !== -1 && last_user_msg_index !== request.messages.length - 1) {
        const last_user_msg = request.messages.splice(last_user_msg_index, 1)[0];
        request.messages.push(last_user_msg);
        console.log("Moved last user message to the end of the request for better context handling.");
      }
    }
  }
  /**
   * Shows the typing indicator in the thread UI.
   */
  show_typing_indicator() {
    const indicator = this.container?.querySelector(".sc-typing-indicator");
    if (indicator) indicator.classList.add("visible");
  }
  /**
   * Hides the typing indicator in the thread UI.
   */
  hide_typing_indicator() {
    const indicator = this.container?.querySelector(".sc-typing-indicator");
    if (indicator) indicator.classList.remove("visible");
  }
  /*** Getters and Utility Properties ***/
  get chat_model() {
    return this.collection.chat_model;
  }
  get created_at() {
    if (!this.data.created_at) this.data.created_at = Date.now();
    return this.data.created_at;
  }
  /**
   * @property {HTMLElement} container - Container element for the thread UI
   */
  get container() {
    return this.collection.container?.querySelector(".sc-thread");
  }
  get messages_container() {
    return this.container?.querySelector(".sc-message-container");
  }
  /**
   * @property {Array<SmartMessage>} messages - All messages in the thread
   * @readonly
   */
  get messages() {
    return Object.entries(this.data.messages || {}).sort((a, b) => a[1] - b[1]).map(([key]) => this.env.smart_messages.get(this.key + "#" + key));
  }
  /**
   * @alias {Array<SmartMessage>} messages
   * @readonly
   */
  get blocks() {
    return this.messages;
  }
  get_key() {
    if (!this.data.key) this.data.key = "Untitled " + this.created_at;
    return this.data.key;
  }
  /**
   * @property {string} path - Path identifier for the thread
   * @readonly
   */
  get path() {
    if (!this.data.path) {
      this.data.path = this.collection.source_dir + "/" + this.key + "." + this.source_adapter.extension;
    }
    return this.data.path;
  }
  get language() {
    return this.settings.language || "en";
  }
  /**
   * Processes base64 encoding for image files
   * @async
   * @param {string} file_path - Path to the image file
   * @returns {string} Base64 encoded image data URL
   */
  async process_image_to_base64(file_path) {
    const file = this.env.smart_connections_plugin?.app.vault.getFileByPath(file_path);
    if (!file) return null;
    const base642 = await this.env.smart_sources.fs.read(file.path, "base64");
    return `data:image/${file.extension};base64,${base642}`;
  }
  /**
   * Queues the thread for saving via the collection.
   * @returns {void}
   */
  queue_save() {
    if (this.messages.length === 0) return;
    this._queue_save = true;
    this.collection?.queue_save();
  }
  async save() {
    await this.source_adapter.save();
  }
  async rename(new_name) {
    await this.source_adapter.rename(new_name);
  }
  /**
   * Get all branches for a specific message index
   * @param {number} msg_i - Message index to get branches for
   * @returns {Array<Object>} Array of branch message objects
   */
  get_branches(msg_i) {
    return this.data.branches?.[msg_i] || [];
  }
  /**
   * Get the latest branch for a specific message index
   * @param {number} msg_i - Message index to get latest branch for
   * @returns {Object|null} Latest branch message object or null if no branches exist
   */
  get_latest_branch(msg_i) {
    const branches = this.get_branches(msg_i);
    return branches.length > 0 ? branches[branches.length - 1] : null;
  }
  /**
   * Create a new branch from a specific message index
   * @param {number} msg_i - Message index to branch from
   * @param {Object} branch_messages - Messages to store in the branch
   */
  create_branch(msg_i, branch_messages) {
    if (!this.data.branches) this.data.branches = {};
    if (!this.data.branches[msg_i]) this.data.branches[msg_i] = [];
    this.data.branches[msg_i].push(branch_messages);
    this.queue_save();
  }
  move_to_branch(msg_i, branch_messages) {
    this.create_branch(msg_i, branch_messages);
    Object.keys(branch_messages).forEach((id) => delete this.data.messages[id]);
    this.queue_save();
  }
  /**
   * Cycles to the next branch for a given message index
   * @param {number} msg_i - Message index to cycle branches for
   * @returns {Promise<void>}
   */
  async cycle_branch(msg_i) {
    if (!this.data.branches) this.data.branches = {};
    if (!this.data.branches[msg_i]) this.data.branches[msg_i] = [];
    const current_msg = this.messages.find((msg) => this.data.messages[msg.id] === msg_i);
    if (!current_msg) return console.warn("no current message found for msg_i", msg_i);
    const current_messages = Object.entries(this.data.messages).filter(([_, _msg_i]) => _msg_i >= msg_i).reduce((acc, [id, _msg_i]) => ({ ...acc, [id]: _msg_i }), {});
    this.move_to_branch(msg_i, current_messages);
    const branch = this.data.branches?.[msg_i]?.shift();
    this.data.messages = {
      ...this.data.messages,
      ...branch
    };
    await this.render();
    this.queue_save();
  }
};

// node_modules/smart-blocks/utils/get_block_display_name.js
function get_block_display_name2(key, show_full_path) {
  const [source_key, ...path_parts] = key.split("#").filter(Boolean);
  const source_name = get_item_display_name2(source_key, show_full_path);
  if (show_full_path) return [source_name, ...path_parts].join(" > ");
  const last_heading = path_parts.findLast((part) => part && part[0] !== "{");
  return [source_name, last_heading].join(" > ");
}

// node_modules/smart-blocks/smart_block.js
var SmartBlock2 = class extends SmartEntity2 {
  /**
   * Provides default values for a SmartBlock instance.
   * @static
   * @readonly
   * @returns {Object} The default values.
   */
  static get defaults() {
    return {
      data: {
        text: null,
        length: 0,
        last_read: {
          hash: null,
          at: 0
        }
      },
      _embed_input: ""
      // Stored temporarily
    };
  }
  get block_adapter() {
    if (!this._block_adapter) {
      this._block_adapter = new this.collection.opts.block_adapters.md(this);
    }
    return this._block_adapter;
  }
  /**
   * Initializes the SmartBlock instance by queuing an embed if embedding is enabled.
   * @returns {void}
   */
  init() {
    if (this.settings.embed_blocks) super.init();
  }
  /**
   * Queues the entity for embedding.
   * @returns {void}
   */
  queue_embed() {
    this._queue_embed = this.should_embed;
    this.source?.queue_embed();
  }
  /**
   * Queues the block for import via the source.
   * @returns {void}
   */
  queue_import() {
    this.source?.queue_import();
  }
  /**
   * Updates the block's data, clearing embeddings if necessary and preparing embed input.
   * @param {Object} data - The new data to merge into the block.
   * @returns {boolean} `true` if data was updated successfully.
   */
  update_data(data) {
    if (this.should_clear_embeddings(data)) {
      this.data.embeddings = {};
    }
    super.update_data(data);
    return true;
  }
  /**
   * Determines whether to clear embeddings based on the new data.
   * @param {Object} data - The new data to evaluate.
   * @returns {boolean} `true` if embeddings should be cleared, `false` otherwise.
   */
  should_clear_embeddings(data) {
    if (this.is_new) return true;
    if (this.embed_model && this.vec?.length !== this.embed_model.model_config.dims) return true;
    return false;
  }
  /**
   * Prepares the embed input for the SmartBlock by reading content and generating a hash.
   * @async
   * @returns {Promise<string|false>} The embed input string or `false` if already embedded.
   */
  async get_embed_input(content = null) {
    if (typeof this._embed_input !== "string" || !this._embed_input.length) {
      if (!content) content = await this.read();
      this._embed_input = this.breadcrumbs + "\n" + content;
    }
    return this._embed_input;
  }
  // CRUD
  /**
   * @method read
   * @description Reads the block content by delegating to the block adapter.
   * @async
   * @returns {Promise<string>} The block content.
   */
  async read() {
    try {
      return await this.block_adapter.read();
    } catch (e) {
      if (e.message.includes("BLOCK NOT FOUND")) {
        return 'BLOCK NOT FOUND (run "Prune" to remove)';
      } else {
        throw e;
      }
    }
  }
  /**
   * @method append
   * @description Appends content to this block by delegating to the block adapter.
   * @async
   * @param {string} content
   * @returns {Promise<void>}
   */
  async append(content) {
    await this.block_adapter.append(content);
    this.queue_save();
  }
  /**
   * @method update
   * @description Updates the block content by delegating to the block adapter.
   * @async
   * @param {string} new_block_content
   * @param {Object} [opts={}]
   * @returns {Promise<void>}
   */
  async update(new_block_content, opts = {}) {
    await this.block_adapter.update(new_block_content, opts);
    this.queue_save();
  }
  /**
   * @method remove
   * @description Removes the block by delegating to the block adapter.
   * @async
   * @returns {Promise<void>}
   */
  async remove() {
    await this.block_adapter.remove();
    this.queue_save();
  }
  /**
   * @method move_to
   * @description Moves the block to another location by delegating to the block adapter.
   * @async
   * @param {string} to_key
   * @returns {Promise<void>}
   */
  async move_to(to_key) {
    await this.block_adapter.move_to(to_key);
    this.queue_save();
  }
  // Getters
  /**
   * Retrieves the breadcrumbs representing the block's path within the source.
   * @readonly
   * @returns {string} The breadcrumbs string.
   */
  get breadcrumbs() {
    return this.key.split("/").join(" > ").split("#").slice(0, -1).join(" > ").replace(".md", "");
  }
  /**
   * Determines if the block is excluded from embedding based on headings.
   * @readonly
   * @returns {boolean} `true` if excluded, `false` otherwise.
   */
  get excluded() {
    const block_headings = this.path.split("#").slice(1);
    if (this.source_collection.excluded_headings.some((heading) => block_headings.includes(heading))) return true;
    return this.source?.excluded;
  }
  /**
   * Retrieves the file path of the SmartSource associated with the block.
   * @readonly
   * @returns {string} The file path.
   */
  get file_path() {
    return this.source?.file_path;
  }
  /**
   * Retrieves the file type of the SmartSource associated with the block.
   * @readonly
   * @returns {string} The file type.
   */
  get file_type() {
    return this.source.file_type;
  }
  /**
   * Retrieves the folder path of the block.
   * @readonly
   * @returns {string} The folder path.
   */
  get folder() {
    return this.path.split("/").slice(0, -1).join("/");
  }
  /**
   * Retrieves the embed link for the block.
   * @readonly
   * @returns {string} The embed link.
   */
  get embed_link() {
    return `![[${this.link}]]`;
  }
  /**
   * Determines if the block has valid line range information.
   * @readonly
   * @returns {boolean} `true` if the block has both start and end lines, `false` otherwise.
   */
  get has_lines() {
    return this.lines && this.lines.length === 2;
  }
  /**
   * Determines if the entity is a block based on its key.
   * @readonly
   * @returns {boolean} `true` if it's a block, `false` otherwise.
   */
  get is_block() {
    return this.key.includes("#");
  }
  /**
   * Determines if the block is gone (i.e., the source file or block data no longer exists).
   * @readonly
   * @returns {boolean} `true` if gone, `false` otherwise.
   */
  get is_gone() {
    if (!this.source?.file) return true;
    if (!this.source?.data?.blocks?.[this.sub_key]) return true;
    return false;
  }
  get last_read() {
    return this.data.last_read;
  }
  /**
   * Retrieves the sub-key of the block.
   * @readonly
   * @returns {string} The sub-key.
   */
  get sub_key() {
    return "#" + this.key.split("#").slice(1).join("#");
  }
  /**
   * Retrieves the lines range of the block.
   * @readonly
   * @returns {Array<number>|undefined} An array containing the start and end lines or `undefined` if not set.
   */
  // get lines() { return this.source?.data?.blocks?.[this.sub_key]; }
  get lines() {
    return this.data.lines;
  }
  /**
   * Retrieves the starting line number of the block.
   * @readonly
   * @returns {number|undefined} The starting line number or `undefined` if not set.
   */
  get line_start() {
    return this.lines?.[0];
  }
  /**
   * Retrieves the ending line number of the block.
   * @readonly
   * @returns {number|undefined} The ending line number or `undefined` if not set.
   */
  get line_end() {
    return this.lines?.[1];
  }
  /**
   * Retrieves the link associated with the block, handling page numbers if present.
   * @readonly
   * @returns {string} The block link.
   */
  get link() {
    if (/^.*page\s*(\d+).*$/i.test(this.sub_key)) {
      const number = this.sub_key.match(/^.*page\s*(\d+).*$/i)[1];
      return `${this.source.path}#page=${number}`;
    } else {
      return this.source?.path || "MISSING SOURCE";
    }
  }
  // uses data.lines to get next block
  get next_block() {
    if (!this.data.lines) return null;
    const next_line = this.data.lines[1] + 1;
    return this.source.blocks?.find((block) => next_line === block.data?.lines?.[0]);
  }
  /**
   * Retrieves the paths of outlinks from the block.
   * @readonly
   * @returns {Array<string>} An array of outlink paths.
   */
  get outlinks() {
    return this.source.outlinks;
  }
  /**
   * Retrieves the path of the SmartBlock.
   * @readonly
   * @returns {string} The path of the SmartBlock.
   */
  get path() {
    return this.key;
  }
  /**
   * Determines if the block should be embedded based on its coverage and size.
   * @readonly
   * @returns {boolean} `true` if it should be embedded, `false` otherwise.
   */
  get should_embed() {
    try {
      if (this.settings?.min_chars && this.size < this.settings.min_chars) return false;
      const match_line_start = this.line_start + 1;
      const match_line_end = this.line_end;
      const { has_line_start, has_line_end } = Object.entries(this.source?.data?.blocks || {}).reduce((acc, [key, range]) => {
        if (!key.startsWith(this.sub_key + "#")) return acc;
        if (range[0] === match_line_start) acc.has_line_start = key;
        if (range[1] === match_line_end) acc.has_line_end = key;
        return acc;
      }, { has_line_start: null, has_line_end: null });
      if (has_line_start && has_line_end) {
        const start_block = this.collection.get(this.source_key + has_line_start);
        if (start_block?.should_embed) {
          const end_block = this.collection.get(this.source_key + has_line_end);
          if (end_block?.should_embed) return false;
        }
      }
      return true;
    } catch (e) {
      console.error(e, e.stack);
      console.error(`Error getting should_embed for ${this.key}: ` + JSON.stringify(e || {}, null, 2));
    }
  }
  /**
   * Retrieves the size of the SmartBlock.
   * @readonly
   * @returns {number} The size of the SmartBlock.
   */
  get size() {
    return this.data.size;
  }
  /**
   * Retrieves the SmartSource associated with the block.
   * @readonly
   * @returns {SmartSource} The associated SmartSource instance.
   */
  get source() {
    return this.source_collection.get(this.source_key);
  }
  /**
   * Retrieves the SmartSources collection instance.
   * @readonly
   * @returns {SmartSources} The SmartSources collection.
   */
  get source_collection() {
    return this.env.smart_sources;
  }
  get source_key() {
    return this.key.split("#")[0];
  }
  get sub_blocks() {
    return this.source?.blocks?.filter((block) => block.key.startsWith(this.key + "#") && block.line_start > this.line_start && block.line_end <= this.line_end) || [];
  }
  // source dependent
  get excluded_lines() {
    return this.source.excluded_lines;
  }
  get file() {
    return this.source.file;
  }
  get is_media() {
    return this.source.is_media;
  }
  get mtime() {
    return this.source.mtime;
  }
  // DEPRECATED
  /**
   * Retrieves the display name of the block.
   * @readonly
   * @returns {string} The display name.
   */
  get name() {
    return get_block_display_name2(
      this.key,
      this.env.settings.smart_view_filter?.show_full_path
    );
  }
  /**
   * @deprecated Use `source` instead. Removing after 2025-09-01.
   * @readonly
   * @returns {SmartSource} The associated SmartSource instance.
   */
  get note() {
    return this.source;
  }
  /**
   * @deprecated Use `source.key` instead. Removing after 2025-09-01.
   * @readonly
   * @returns {string} The source key.
   */
  get note_key() {
    return this.key.split("#")[0];
  }
};
var smart_block_default2 = {
  class: SmartBlock2,
  actions: {
    find_connections: find_connections3
  }
};

// node_modules/smart-blocks/smart_blocks.js
var SmartBlocks2 = class extends SmartEntities2 {
  /**
   * Initializes the SmartBlocks instance. Currently muted as processing is handled by SmartSources.
   * @returns {void}
   */
  init() {
  }
  get fs() {
    return this.env.smart_sources.fs;
  }
  /**
   * Retrieves the embedding model associated with the SmartSources collection.
   * @readonly
   * @returns {Object|undefined} The embedding model instance or `undefined` if not set.
   */
  get embed_model() {
    return this.source_collection?.embed_model;
  }
  /**
   * Retrieves the embedding model key from the SmartSources collection.
   * @readonly
   * @returns {string|undefined} The embedding model key or `undefined` if not set.
   */
  get embed_model_key() {
    return this.source_collection?.embed_model_key;
  }
  /**
   * Calculates the expected number of blocks based on the SmartSources collection.
   * @readonly
   * @returns {number} The expected count of blocks.
   */
  get expected_blocks_ct() {
    return Object.values(this.source_collection.items).reduce((acc, item) => acc += Object.keys(item.data.blocks || {}).length, 0);
  }
  /**
   * Retrieves the notices system from the environment.
   * @readonly
   * @returns {Object} The notices object.
   */
  get notices() {
    return this.env.smart_connections_plugin?.notices || this.env.main?.notices;
  }
  /**
   * Retrieves the settings configuration for SmartBlocks.
   * @readonly
   * @returns {Object} The settings configuration object.
   */
  get settings_config() {
    return this.process_settings_config({
      "embed_blocks": {
        name: "Utilize Smart Blocks",
        type: "toggle",
        description: "Creates more granular embeddings by splitting sources into smaller chunks. This may improve search results especially for large documents that have well-defined sections.",
        default: true
      },
      ...super.settings_config
    });
  }
  render_settings(container, opts = {}) {
    return this.render_collection_settings(container, opts);
  }
  get data_dir() {
    return "multi";
  }
  /**
   * Retrieves the SmartSources collection instance.
   * @readonly
   * @returns {SmartSources} The SmartSources collection.
   */
  get source_collection() {
    return this.env.smart_sources;
  }
  /**
   * Processes the embed queue. Currently handled by SmartSources, so this method is muted.
   * @async
   * @returns {Promise<void>}
   */
  async process_embed_queue() {
  }
  /**
   * Processes the load queue. Currently muted as processing is handled by SmartSources.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
  }
  // TEMP: Methods in sources not implemented in blocks
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async prune() {
    throw "Not implemented: prune";
  }
  /**
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {void}
   */
  build_links_map() {
    throw "Not implemented: build_links_map";
  }
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async refresh() {
    throw "Not implemented: refresh";
  }
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async search() {
    throw "Not implemented: search";
  }
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async run_refresh() {
    throw "Not implemented: run_refresh";
  }
  /**
   * @async
   * @throws {Error} Throws an error indicating the method is not implemented.
   * @returns {Promise<void>}
   */
  async run_force_refresh() {
    throw "Not implemented: run_force_refresh";
  }
};

// smart-chat-v0/smart_messages.js
var SmartMessages = class extends SmartBlocks2 {
  /**
   * Override for processing load queue
   * @override
   */
  process_load_queue() {
  }
  /**
   * Override for processing import queue
   * @override
   */
  process_source_import_queue() {
  }
  /**
   * @property {string} data_folder - Path to message storage
   * @readonly
   */
  get data_folder() {
    return this.env.opts.env_path + (this.env.opts.env_path ? "/" : "") + "multi/chats";
  }
  /**
   * Override for initialization
   * @override
   */
  init() {
  }
  // disable embed_model for SmartMessages
  get embed_model() {
    return null;
  }
  async process_embed_queue() {
    console.log("skipping embed queue processing for SmartMessages");
  }
};

// smart-chat-v0/components/message.js
function build_html17(message, opts = {}) {
  const content = Array.isArray(message.content) ? message.content.map((part) => {
    if (part.type === "image_url") {
      return " ![[" + part.input.image_path + "]] ";
    }
    if (part.type === "text" && part.input?.key?.length) return " ![[" + part.input.key + "]] ";
    if (part.type === "text" && part.text?.length) return part.text;
  }).join("\n") : message.content;
  const branches = message.thread.get_branches(message.msg_i);
  const has_branches = branches && branches.length > 0;
  let html = `
    <div class="sc-message ${message.role}" id="${message.data.id}">
      <div class="sc-message-content" data-content="${encodeURIComponent(content)}">
        <span>${content}</span>
        <div class="sc-msg-buttons">
          <span class="sc-msg-button" title="Copy message to clipboard">${this.get_icon_html("copy")}</span>
          ${has_branches ? `
            <span class="sc-msg-button cycle-branch" title="Cycle through message variations">${message.branch_i.split("-").pop()} / ${branches.length + 1} ${this.get_icon_html("chevron-right")}</span>
          ` : ""}
          ${message.role === "assistant" ? `
            <span class="sc-msg-button regenerate" title="Regenerate response">${this.get_icon_html("refresh-cw")}</span>
          ` : `
            <span class="sc-msg-button edit" title="Edit message">${this.get_icon_html("edit")}</span>
          `}
        </div>
      </div>
      ${message.role === "user" ? `<textarea class="sc-message-edit" style="display: none;">${content}</textarea>` : ""}
    </div>
  `;
  if (message.role === "user" && message.context?.has_self_ref === true) {
    html += `
      <div class="sc-tool-call-missing-indicator" style="font-style: italic; margin-top: 4px;">
        expecting lookup
      </div>
    `;
  }
  return html;
}
async function render23(message, opts = {}) {
  const html = build_html17.call(this, message, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process20.call(this, message, frag, opts);
}
async function post_process20(message, frag, opts) {
  const copy_button = frag.querySelector(".sc-msg-button:not(.regenerate)");
  if (copy_button) {
    copy_button.addEventListener("click", () => {
      navigator.clipboard.writeText(message.content).then(() => {
        console.log("Message copied to clipboard");
      }).catch((err) => {
        console.error("Failed to copy message: ", err);
      });
    });
  }
  const regenerate_button = frag.querySelector(".sc-msg-button.regenerate");
  if (regenerate_button) {
    regenerate_button.addEventListener("click", async () => {
      const thread = message.thread;
      const msg_i = thread.data.messages[message.data.id];
      if (!thread.data.branches) thread.data.branches = {};
      if (!thread.data.branches[msg_i]) thread.data.branches[msg_i] = [];
      const branch_messages = {};
      Object.entries(thread.data.messages).filter(([_, i]) => i >= msg_i).forEach(([key, i]) => {
        branch_messages[key] = i;
        delete thread.data.messages[key];
      });
      thread.data.branches[msg_i].push(branch_messages);
      await thread.render();
      await thread.complete();
    });
  }
  const cycle_branch_button = frag.querySelector(".sc-msg-button.cycle-branch");
  if (cycle_branch_button) {
    cycle_branch_button.addEventListener("click", async () => {
      await message.thread.cycle_branch(message.msg_i);
    });
  }
  const edit_button = frag.querySelector(".sc-msg-button.edit");
  if (edit_button) {
    const msg_content = frag.querySelector(".sc-message-content");
    const edit_textarea = frag.querySelector(".sc-message-edit");
    edit_button.addEventListener("click", async () => {
      const is_editing = edit_textarea.style.display === "block";
      if (is_editing) {
        const new_content = edit_textarea.value.trim();
        if (new_content !== message.content) {
          const thread = message.thread;
          const msg_i = thread.data.messages[message.data.id];
          const current_messages = Object.entries(thread.data.messages).filter(([_, i]) => i >= msg_i).reduce((acc, [id, i]) => ({ ...acc, [id]: i }), {});
          thread.move_to_branch(msg_i, current_messages);
          msg_content.querySelector("span").textContent = new_content;
          msg_content.setAttribute("data-content", encodeURIComponent(new_content));
          edit_textarea.style.display = "none";
          msg_content.style.display = "block";
          this.safe_inner_html(edit_button, this.get_icon_html("edit"));
          edit_button.title = "Edit message";
          await thread.handle_message_from_user(new_content);
          await thread.render();
        } else {
          edit_textarea.style.display = "none";
          msg_content.style.display = "block";
          this.safe_inner_html(edit_button, this.get_icon_html("edit"));
          edit_button.title = "Edit message";
        }
      } else {
        edit_textarea.style.display = "block";
        this.safe_inner_html(edit_button, this.get_icon_html("check"));
        edit_button.title = "Save changes";
        edit_textarea.focus();
      }
    });
    edit_textarea.addEventListener("keydown", async (e) => {
      if (e.key === "Enter" && (e.ctrlKey || e.metaKey)) {
        e.preventDefault();
        edit_button.click();
      }
    });
  }
  const msg_span = frag.querySelector(".sc-message-content > span:first-child");
  const markdown_rendered_frag = await this.render_markdown(msg_span.textContent, message);
  this.empty(msg_span);
  msg_span.appendChild(markdown_rendered_frag);
  return frag;
}

// smart-chat-v0/components/context.js
function build_html18(message, opts = {}) {
  const lookup_results = message.tool_call_output || [];
  if (lookup_results.length === 0) {
    return "";
  }
  const review_context = message.settings?.review_context === true;
  return `
    <div class="sc-context-container" id="${message.data.id}">
      <div class="sc-context-header" tabindex="0" role="button" aria-expanded="false" aria-controls="context-list-${message.data.id}">
        <span>${this.get_icon_html("info")} Context (${lookup_results.length})</span>
        <span class="sc-context-toggle-icon">${this.get_icon_html("chevron-down")}</span>
      </div>
      <ul class="sc-context-list" id="context-list-${message.data.id}" hidden>
        ${lookup_results.map((result, index) => `
          <li class="sc-context-item" data-index="${index}">
            ${review_context ? `<button class="sc-context-remove-btn" title="Remove">${this.get_icon_html("x")}</button>` : ""}
            <span class="sc-context-item-path">${result.key}</span>
            <span class="sc-context-item-score">Score: ${result.score.toFixed(2)}</span>
          </li>
        `).join("")}
        ${review_context ? `
          <li class="sc-context-submit">
            <button class="sc-context-submit-btn">Submit</button>
          </li>
        ` : ""}
      </ul>
    </div>
  `;
}
async function render24(message, opts = {}) {
  const html = build_html18.call(this, message, opts);
  if (!html) return document.createDocumentFragment();
  const frag = this.create_doc_fragment(html);
  return await post_process21.call(this, message, frag, opts);
}
async function post_process21(message, frag, opts) {
  const header = frag.querySelector(".sc-context-header");
  const list = frag.querySelector(".sc-context-list");
  const toggle_icon = frag.querySelector(".sc-context-toggle-icon");
  const review_context = message.settings?.review_context === true;
  if (header && list && toggle_icon) {
    if (review_context) header.setAttribute("aria-expanded", "true");
    else header.setAttribute("aria-expanded", "false");
    header.addEventListener("click", () => {
      const is_expanded = header.getAttribute("aria-expanded") === "true";
      if (is_expanded) {
        header.setAttribute("aria-expanded", "false");
      } else {
        header.setAttribute("aria-expanded", "true");
      }
    });
  }
  if (review_context) {
    const remove_buttons = frag.querySelectorAll(".sc-context-remove-btn");
    remove_buttons.forEach((btn) => {
      btn.addEventListener("click", (e) => {
        e.stopPropagation();
        const item = btn.closest(".sc-context-item");
        const index = parseInt(item.getAttribute("data-index"), 10);
        message.tool_call_output.splice(index, 1);
        message.render();
      });
    });
    const submit_button = frag.querySelector(".sc-context-submit-btn");
    if (submit_button) {
      submit_button.addEventListener("click", async (e) => {
        e.stopPropagation();
        const container = e.target.closest(".sc-context-container");
        container.querySelectorAll(".sc-context-remove-btn").forEach((btn) => btn.remove());
        const submit_container = submit_button.closest(".sc-context-submit");
        if (submit_container) {
          submit_container.remove();
        }
        header.setAttribute("aria-expanded", "false");
        await message.thread.complete();
      });
    }
  }
  return frag;
}

// smart-chat-v0/components/tool_calls.js
function build_html19(message, opts = {}) {
  const tool_calls = message.tool_calls || [];
  if (tool_calls.length === 0) {
    return "";
  }
  return `
    <div class="sc-tool-calls-container" id="${message.data.id}">
      ${tool_calls.map((tool_call, index) => `
        <div class="sc-tool-call">
          <div class="sc-tool-call-header" tabindex="0" role="button" aria-expanded="false" aria-controls="${message.data.id}-content">
            <span>${tool_call.function.name}</span>
            <span class="sc-tool-call-toggle-icon">${this.get_icon_html("chevron-down")}</span>
          </div>
          <div class="sc-tool-call-content" id="${message.data.id}-content" hidden>
            <pre><code class="language-json">${JSON.stringify(typeof tool_call.function.arguments === "string" ? JSON.parse(tool_call.function.arguments) : tool_call.function.arguments, null, 2)}</code></pre>
          </div>
        </div>
      `).join("")}
    </div>
  `;
}
async function render25(message, opts = {}) {
  const html = build_html19.call(this, message, opts);
  if (!html) return document.createDocumentFragment();
  const frag = this.create_doc_fragment(html);
  return await post_process22.call(this, message, frag, opts);
}
async function post_process22(message, frag, opts) {
  const tool_call_headers = frag.querySelectorAll(".sc-tool-call-header");
  tool_call_headers.forEach((header) => {
    const content = header.nextElementSibling;
    const toggle_icon = header.querySelector(".sc-tool-call-toggle-icon");
    header.addEventListener("click", () => {
      const is_expanded = header.getAttribute("aria-expanded") === "true";
      if (is_expanded) {
        header.setAttribute("aria-expanded", "false");
        content.hidden = true;
      } else {
        header.setAttribute("aria-expanded", "true");
        content.hidden = false;
      }
    });
    header.addEventListener("keydown", (e) => {
      if (e.key === "Enter" || e.key === " ") {
        e.preventDefault();
        header.click();
      }
    });
  });
  return frag;
}

// smart-chat-v0/components/system_message.js
function build_html20(message, opts = {}) {
  return `
    <div class="sc-system-message-container" id="${message.data.id}">
      <div class="sc-system-message-header" tabindex="0" role="button" aria-expanded="false" aria-controls="${message.data.id}-content">
        <span>${this.get_icon_html("settings")} System Message</span>
        <span class="sc-system-message-toggle-icon">${this.get_icon_html("chevron-down")}</span>
      </div>
      <div class="sc-system-message-content" id="${message.data.id}-content" hidden>
        <div class="sc-system-message-text">
          <pre>${message.content.map((part) => part.text || part.input?.key).join("\n")}</pre>
        </div>
        <button class="sc-system-message-copy" title="Copy system message">
          ${this.get_icon_html("copy")}
        </button>
      </div>
    </div>
  `;
}
async function render26(message, opts = {}) {
  const html = build_html20.call(this, message, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process23.call(this, message, frag, opts);
}
async function post_process23(message, frag, opts) {
  const header = frag.querySelector(".sc-system-message-header");
  const content = frag.querySelector(".sc-system-message-content");
  const toggle_icon = frag.querySelector(".sc-system-message-toggle-icon");
  const copy_button = frag.querySelector(".sc-system-message-copy");
  const text_container = frag.querySelector(".sc-system-message-text");
  if (header && content && toggle_icon) {
    header.addEventListener("click", () => {
      const is_expanded = header.getAttribute("aria-expanded") === "true";
      header.setAttribute("aria-expanded", !is_expanded);
      content.hidden = is_expanded;
      toggle_icon.style.transform = is_expanded ? "" : "rotate(180deg)";
    });
  }
  if (copy_button && text_container) {
    copy_button.addEventListener("click", () => {
      navigator.clipboard.writeText(text_container.textContent).then(() => {
        copy_button.classList.add("sc-copied");
        setTimeout(() => {
          copy_button.classList.remove("sc-copied");
        }, 1e3);
      }).catch((err) => {
        console.error("Failed to copy system message:", err);
      });
    });
  }
  if (text_container && typeof message.content === "string") {
    const markdown_rendered_frag = await this.render_markdown(message.content, message);
    this.empty(text_container);
    text_container.appendChild(markdown_rendered_frag);
  }
  return frag;
}

// smart-chat-v0/smart_message.js
var SmartMessage = class extends SmartBlock2 {
  /**
   * @static
   * @property {Object} defaults - Default data object for a new message
   * @returns {Object}
   */
  static get defaults() {
    return {
      data: {
        thread_key: null,
        content: null,
        role: null,
        tool_calls: null,
        tool_call_id: null,
        msg_i: null,
        id: null,
        context: {},
        tool_call_output: null
      }
    };
  }
  /**
   * Returns a unique message key based on the thread key and message ID.
   * @returns {string} Unique message identifier.
   */
  get_key() {
    return `${this.data.thread_key}#${this.id}`;
  }
  get msg_i() {
    if (!this.data.msg_i) {
      const msg_i = Object.keys(this.thread.data.messages || {}).length + 1;
      this.data.msg_i = msg_i;
    }
    return this.data.msg_i;
  }
  get branch_i() {
    if (!this.data.branch_i) {
      const branch_i = Date.now() + "-" + ((this.thread.data.branches?.[this.msg_i] || []).length + 1);
      this.data.branch_i = branch_i;
    }
    return this.data.branch_i;
  }
  get id() {
    if (!this.data.id) {
      this.data.id = `${this.role}-${this.msg_i}-${this.branch_i}`;
    }
    return this.data.id;
  }
  /**
   * Initializes the message. If the message is from the user, triggers thread completion.
   * If the message represents a tool output and no review is needed, triggers thread completion.
   *
   * @async
   */
  async init() {
    while (!this.thread) await new Promise((resolve) => setTimeout(resolve, 100));
    if (!this.thread.data.messages[this.id]) {
      this.thread.data.messages[this.id] = this.msg_i;
      await new Promise((resolve) => setTimeout(resolve, 30));
    }
    await this.render();
    if (this.role === "user") {
      await this.thread.complete();
    } else if (this.role === "tool" && !this.settings.review_context) {
      this.thread.complete();
    }
    this.queue_save();
  }
  /**
   * Queues the message for saving via the thread.
   */
  queue_save() {
    this._queue_save = true;
    this.thread?.queue_save();
  }
  /**
   * Renders the message interface in the thread UI.
   * Chooses different templates based on message role and presence of tool calls.
   *
   * @async
   * @param {HTMLElement} [container=this.thread.messages_container] - The container element.
   * @returns {Promise<DocumentFragment>} Rendered message fragment.
   */
  async render(container = this.thread.messages_container) {
    let frag;
    if (this.role === "system") {
      frag = await render26.call(this.smart_view, this);
    } else if (this.tool_calls?.length > 0) {
      frag = await render25.call(this.smart_view, this);
    } else if (this.role === "tool") {
      frag = await this.context_template.call(this.smart_view, this);
    } else {
      frag = await render23.call(this.smart_view, this);
    }
    if (container) {
      this.elm = container.querySelector(`#${this.data.id}`);
      if (this.elm) {
        this.elm.replaceWith(frag);
      } else {
        container.appendChild(frag);
        await new Promise((resolve) => setTimeout(resolve, 30));
      }
    }
    return frag;
  }
  get context_template() {
    return this.env.opts.components.lookup_context || render24;
  }
  /**
   * Converts the message into a request payload that can be sent to the AI model.
   * This involves reading and embedding any referenced content (text or images),
   * and including tool calls or tool call outputs as necessary.
   *
   * @async
   * @returns {Promise<Object>} A request-ready message object.
   */
  async to_request() {
    const this_message = { role: this.role, content: [] };
    await this.#append_internal_link_context(this_message);
    await this.#append_message_content(this_message);
    if (this.tool_calls?.length) {
      this_message.tool_calls = this.tool_calls;
      delete this_message.content;
    }
    if (this.tool_call_id) {
      this_message.tool_call_id = this.tool_call_id;
    }
    if (this.tool_call_output?.length) {
      const output_content = await this.tool_call_output_to_request();
      this_message.content = [{ type: "text", text: output_content }];
    }
    return this_message;
  }
  /**
   * Returns the tool call output as a request-ready string.
   * For the 'lookup' tool, it either returns JSON or formatted text depending on settings.
   *
   * @async
   * @returns {Promise<string>} The tool call output content as a string.
   */
  async tool_call_output_to_request() {
    if (this.tool_name === "lookup") {
      if (this.settings.tool_call_output_as_json) {
        const lookup_collection = this.tool_call_output[0]?.key.includes("#") ? this.env.smart_blocks : this.env.smart_sources;
        const detailed_results = await Promise.all(this.tool_call_output.map(async (result) => ({
          ...result,
          content: await lookup_collection.get(result.key).read()
        })));
        return JSON.stringify(detailed_results);
      }
      const prefix_prompt = get_translated_context_prefix_prompt(this.thread.language);
      let lookup_output = `${prefix_prompt}
`;
      const lookup_content = await this.fetch_content(this.tool_call_output.map((r) => r.key));
      this.tool_call_output.forEach((result, index) => {
        if (lookup_content[index]?.type === "text") {
          lookup_output += `-----------------------
`;
          lookup_output += `/${result.key} (relevance score: ${result.score})
`;
          lookup_output += `---
${lookup_content[index].content}
`;
          lookup_output += `-----------------------

`;
        }
      });
      const suffix_prompt = get_translated_context_suffix_prompt(this.thread.language);
      return lookup_output + suffix_prompt;
    }
    return "";
  }
  /**
   * Fetches and processes content referenced by internal links.
   * Can return text or base64 image data depending on the file type.
   *
   * @async
   * @param {Array<string>} paths - Array of paths to fetch content from
   * @returns {Array<Object>} contents - Array of content objects:
   * @returns {string} contents[].type - Content type ('text' or 'image')
   * @returns {string} [contents[].content] - Text content if type is 'text'
   * @returns {string} [contents[].image_url] - Base64 image URL if type is 'image'
   * @throws {Error} When unable to fetch or process content
   */
  async fetch_content(paths) {
    try {
      const image_extensions = ["png", "jpg", "jpeg", "gif", "svg", "webp", "heic", "heif", "ico"];
      const contents = await Promise.all(paths.map(async (path) => {
        if (path) {
          try {
            const item = this.env.smart_blocks.get(path) || this.env.smart_sources.get(path);
            const file_extension = path.split(".").pop().toLowerCase();
            if (image_extensions.includes(file_extension)) {
              const image_data = await this.env.smart_sources.fs.read(path, "base64");
              const base64_image = `data:image/${file_extension};base64,${image_data}`;
              return { type: "image", image_url: base64_image };
            } else {
              return { type: "text", content: await item.read() };
            }
          } catch (e) {
            console.warn(`Error fetching content for ${path}:`, e);
            return { type: "error", content: "Failed to fetch content" };
          }
        }
      }));
      return contents;
    } catch (error) {
      console.error(`Error fetching internal links content:`, error);
      return [];
    }
  }
  /*** Private Helpers ***/
  /**
   * Appends context content for internal links to the request message.
   * @private
   * @async
   * @param {Object} this_message - The message object being prepared for request.
   */
  async #append_internal_link_context(this_message) {
    if (this.context.internal_links?.length > 0) {
      const internal_links_content = await this.fetch_content(this.context.internal_links);
      let context_text = "";
      this.context.internal_links.forEach((link, index) => {
        const content_item = internal_links_content[index];
        if (content_item.type === "text") {
          if (!context_text.length) context_text += `Context specified in message:
`;
          context_text += `-----------------------
`;
          context_text += `/${link}
---
${content_item.content}
`;
          context_text += `-----------------------
`;
        } else if (content_item.type === "image") {
          this_message.content.push({
            type: "image_url",
            image_url: { url: content_item.image_url }
          });
        } else if (content_item.type === "unsupported") {
          context_text += `Unsupported content in link: ${link}
`;
        } else if (content_item.type === "error") {
          context_text += `Error retrieving content for: ${link}
`;
        }
      });
      if (context_text.length > 0) {
        this_message.content.push({ type: "text", text: context_text });
      }
    }
  }
  /**
   * Appends the main message content (user or assistant text and images) to the request message.
   * @private
   * @async
   * @param {Object} this_message - The message object being prepared for request.
   */
  async #append_message_content(this_message) {
    if (typeof this.content === "string") {
      this_message.content.push({ type: "text", text: this.content });
    } else if (Array.isArray(this.content)) {
      for (const part of this.content) {
        if (part.type === "text") {
          let text = part.text || "";
          if (!text && part.input?.key) {
            text = await this.#safe_read_content(part.input.key);
          }
          this_message.content.push({ type: "text", text });
        } else if (part.type === "image_url") {
          const base64_img = await this.#safe_read_image(part.input.image_path);
          if (base64_img) {
            this_message.content.push({
              type: "image_url",
              image_url: { url: base64_img }
            });
          } else {
            this_message.content.push({
              type: "text",
              text: `Image not found: ${part.input.image_path}`
            });
          }
        }
      }
    }
  }
  /**
   * Safely reads text content from a given key. Returns an empty string if not found.
   * @private
   * @async
   * @param {string} key - The key to read content from.
   * @returns {Promise<string>} The content read, or an empty string if not found.
   */
  async #safe_read_content(key) {
    let text = await this.env.smart_sources.get(key)?.read() || "";
    if (!text) {
      text = await this.env.smart_sources.fs.read(key) || "";
    }
    return text;
  }
  /**
   * Safely reads and base64-encodes an image from a given path.
   * @private
   * @async
   * @param {string} image_path - The path to the image file.
   * @returns {Promise<string|null>} The base64 data URI if successful, else null.
   */
  async #safe_read_image(image_path) {
    try {
      const extension = image_path.split(".").pop();
      const base64_img = await this.env.smart_sources.fs.read(image_path, "base64");
      return `data:image/${extension};base64,${base64_img}`;
    } catch {
      return null;
    }
  }
  /**
   * @property {string} content - Message content
   */
  get content() {
    return this.data.content;
  }
  set content(value) {
    this.data.content = value;
  }
  /**
   * @property {string} role - Message sender role ('user' or 'assistant')
   */
  get role() {
    return this.data.role;
  }
  set role(value) {
    this.data.role = value;
  }
  /**
   * @property {Object} tool_calls - Tool calls
   */
  get tool_calls() {
    return this.data.tool_calls;
  }
  set tool_calls(value) {
    this.data.tool_calls = value;
  }
  /**
   * @property {string} tool_call_id - Tool call ID
   */
  get tool_call_id() {
    return this.data.tool_call_id;
  }
  set tool_call_id(value) {
    this.data.tool_call_id = value;
  }
  /**
   * @property {Array<Object>} tool_call_output - Tool call output
   */
  get tool_call_output() {
    return this.data.tool_call_output;
  }
  set tool_call_output(value) {
    this.data.tool_call_output = value;
  }
  /**
   * @property {string} tool_name - Tool name
   */
  get tool_name() {
    return this.data.tool_name;
  }
  set tool_name(value) {
    this.data.tool_name = value;
  }
  /**
   * @property {Object} context - Message context data
   */
  get context() {
    return this.data.context;
  }
  set context(value) {
    this.data.context = value;
  }
  /**
   * @property {SmartThread} thread - Parent thread reference
   * @readonly
   */
  get thread() {
    return this.source;
  }
  /**
   * @property {SmartMessage} next_message - Next message reference
   * @readonly
   */
  get next_message() {
    return this.thread.messages[this.msg_i];
  }
  /**
   * @property {SmartMessage} previous_message - Previous message reference
   * @readonly
   */
  get previous_message() {
    return this.thread.messages[this.msg_i - 2];
  }
  /**
   * @property {boolean} is_last_message - Whether the message is the last message in the thread
   * @readonly
   */
  get is_last_message() {
    return this.msg_i === Object.keys(this.thread.messages).length;
  }
  /**
   * @property {string} source_key - Key for source reference
   * @readonly
   */
  get source_key() {
    return this.data.thread_key;
  }
  /**
   * @property {SmartThreads} source_collection - Collection reference
   * @readonly
   */
  get source_collection() {
    return this.env.smart_threads;
  }
  /**
   * @property {string} path - Path identifier for the message
   * @readonly
   */
  get path() {
    return this.data.thread_key;
  }
  get settings() {
    return this.thread.settings;
  }
  get has_image() {
    return Array.isArray(this.content) && this.content.some((part) => part.type === "image_url");
  }
};

// smart-chat-v0/sc_thread.js
var SmartThread2 = class extends SmartThread {
  /**
   * Handles the execution of detected tool calls from a message.
   * Currently supports 'lookup' tool calls. Additional tools can be integrated similarly.
   *
   * @async
   * @param {Array<Object>} tool_calls - Array of tool call objects found in the message.
   * @param {Object} msg_data - Data of the message that triggered these tool calls.
   */
  async handle_tool_calls(tool_calls, msg_data) {
    for (const tool_call of tool_calls) {
      try {
        switch (tool_call.function.name) {
          case "lookup":
            await this.handle_lookup_tool_call(tool_call, msg_data);
            break;
          default:
            console.warn(`Unhandled tool call: ${tool_call.function.name}`);
            await this.render_error({ message: `No handler for tool: ${tool_call.function.name}` });
        }
      } catch (error) {
        console.error(`Error handling tool call ${tool_call.function.name}:`, error);
        await this.render_error({ message: `Failed to execute tool: ${tool_call.function.name}`, error });
      }
    }
  }
  /**
   * Handles a 'lookup' tool call by performing a semantic search and storing the results.
   * The results are then added as a tool message in the thread.
   *
   * @async
   * @param {Object} tool_call - The tool call object with function name and arguments.
   * @param {Object} msg_data - The message data that triggered the tool call.
   */
  async handle_lookup_tool_call(tool_call, msg_data) {
    const previous_message = this.messages[this.messages.length - 2];
    const params = this.#build_lookup_params(tool_call.function.arguments, previous_message);
    const lookup_collection = this.env.smart_blocks.settings.embed_blocks ? this.env.smart_blocks : this.env.smart_sources;
    const lookup_results = (await lookup_collection.lookup(params)).map((result) => ({
      key: result.item.key,
      score: result.score
    }));
    const msg_i = Object.keys(this.data.messages || {}).length + 1;
    const branch_i = (this.data.branches?.[msg_i] || []).length + 1;
    await this.env.smart_messages.create_or_update({
      thread_key: this.key,
      tool_call_id: tool_call.id,
      tool_name: tool_call.function.name,
      tool_call_output: lookup_results,
      role: "tool",
      response_id: tool_call.id,
      id: `tool-${msg_i}-${branch_i}`
    });
  }
  /**
   * Builds parameters for the 'lookup' tool call.
   * @private
   * @param {Object|string} args - Tool call arguments, possibly JSON stringified.
   * @param {Object} previous_message - The previous message in the thread (if any).
   * @returns {Object} Formatted lookup parameters.
   */
  #build_lookup_params(args, previous_message) {
    args = typeof args === "string" ? JSON.parse(args) : args;
    const params = {};
    params.hypotheticals = this.#normalize_hypotheticals(args, previous_message);
    params.filter = this.#build_lookup_filter(previous_message);
    return params;
  }
  /**
   * Normalizes 'hypotheticals' argument into an array of strings.
   * @private
   * @param {Object} args - Tool call arguments.
   * @param {Object} previous_message - The previous message in the thread (if any).
   * @returns {Array<string>} Normalized hypotheticals.
   */
  #normalize_hypotheticals(args, previous_message) {
    let hypotheticals;
    if (Array.isArray(args.hypotheticals)) {
      hypotheticals = args.hypotheticals;
    } else if (typeof args.hypotheticals === "object" && args.hypotheticals !== null) {
      hypotheticals = Object.values(args.hypotheticals);
    } else if (typeof args.hypotheticals === "string") {
      hypotheticals = [args.hypotheticals];
    } else {
      console.warn("Invalid hypotheticals. Using fallback content.");
      const fallback_content = previous_message?.content || "No context";
      hypotheticals = [fallback_content];
    }
    return hypotheticals.map((h) => typeof h === "string" ? h : JSON.stringify(h));
  }
  /**
   * Builds a filter object for the lookup tool call based on the previous message context.
   * Uses 'key_starts_with' if there is exactly one folder reference.
   * Uses 'key_starts_with_any' if multiple folder references exist.
   * @private
   * @param {Object} previous_message - The previous message in the thread (if any).
   * @returns {Object} The filter object for the lookup.
   */
  #build_lookup_filter(previous_message) {
    const filter = { limit: this.settings.lookup_limit || 10 };
    const folder_refs = previous_message?.context?.folder_refs;
    if (folder_refs && folder_refs.length > 0) {
      if (folder_refs.length === 1) {
        filter.key_starts_with = folder_refs[0];
      } else {
        filter.key_starts_with_any = folder_refs;
      }
    }
    return filter;
  }
};

// smart-chat-v0/adapters/_adapter.js
var ThreadSourceAdapter = class {
  /**
   * @constructor
   * @param {SmartThread} item - The SmartThread instance this adapter is attached to
   */
  constructor(item) {
    this.item = item;
  }
  /**
   * @property {Object} data - The underlying data of the SmartThread
   * @readonly
   */
  get data() {
    return this.item.data;
  }
  get fs() {
    return this.item.collection.fs;
  }
  get created_at() {
    return this.item.created_at;
  }
  get file_path() {
    return this.item.path;
  }
  /**
   * @property {Object} env - The environment configuration
   * @readonly
   */
  get env() {
    return this.item.env;
  }
  /**
   * Converts adapter file format to `item.source_data{}` format
   * @abstract
   * @throws {Error} Must be implemented by subclasses
   */
  to_source_data() {
    throw new Error("to_source_data() not implemented");
  }
  /**
   * Converts `item.source_data{}` format to adapter file format
   * @abstract
   * @throws {Error} Must be implemented by subclasses
   */
  from_source_data(source_data) {
    throw new Error("from_source_data() not implemented");
  }
  async import() {
    const source_data = await this.read();
    if (!source_data) return console.warn("no source data found for", this);
    this.from_source_data(source_data);
  }
  async read() {
    return await this.fs.read(this.file_path);
  }
  async save() {
    if (Object.keys(this.data.messages).length) {
      this.fs.write(this.file_path, this.to_source_data());
    }
  }
  async rename(new_name) {
    const old_key = this.item.key;
    const old_file_path = this.file_path;
    this.item.messages.forEach((msg) => {
      msg.data.key = msg.key.replace(old_key, new_name);
      msg.data.thread_key = new_name;
      this.item.env.smart_messages.items[msg.key] = msg;
    });
    this.data.path = null;
    this.data.key = new_name;
    this.item.collection.items[new_name] = this.item;
    delete this.item.collection.items[old_key];
    await this.save();
    await this.fs.remove(old_file_path);
    this.item.render();
  }
};

// smart-chat-v0/adapters/json.js
var EnvJsonThreadSourceAdapter = class extends ThreadSourceAdapter {
  static extensions = ["json"];
  static extension = "json";
  extension = "json";
  to_source_data() {
    const all_block_keys = [...Object.keys(this.data.messages)];
    if (Object.keys(this.data.branches).length) {
      const branches = Object.values(this.data.branches);
      const branch_block_keys = {};
      branches.forEach((branch) => {
        branch.forEach((branch_messages) => {
          Object.keys(branch_messages).forEach((key) => {
            branch_block_keys[key] = true;
          });
        });
      });
      all_block_keys.push(...Object.keys(branch_block_keys));
    }
    const blocks = all_block_keys.map((sub_key) => {
      const block_key = this.item.key + "#" + sub_key;
      const block = this.item.env.smart_messages.get(block_key);
      if (!block) {
        console.warn("block not found", block_key);
        return null;
      }
      return {
        ...block.data,
        key: block_key
      };
    }).filter((block) => block);
    return JSON.stringify({
      ...this.item.data,
      blocks
    }, null, 2);
  }
  from_source_data(source_data) {
    const parsed_data = JSON.parse(source_data);
    this.item.data = { ...parsed_data, blocks: void 0 };
    parsed_data.blocks.forEach((block) => {
      this.item.env.smart_messages.items[block.key] = new this.item.env.smart_messages.item_type(
        this.item.env,
        block
      );
    });
  }
};

// src/smart_env.config.js
var smart_env_config3 = {
  env_path: "",
  // env_data_dir: '.smart-env', // added in Plugin class
  collections: {
    smart_sources: {
      process_embed_queue: true
      // trigger embedding on load
    },
    smart_collections: {
      data_adapter: AjsonMultiFileCollectionDataAdapter2
    },
    smart_threads: {
      class: SmartThreads,
      data_adapter: AjsonMultiFileCollectionDataAdapter2,
      // data_adapter: CollectionDataAdapter,
      source_adapters: {
        "json": EnvJsonThreadSourceAdapter,
        "default": EnvJsonThreadSourceAdapter
      }
    },
    smart_messages: {
      class: SmartMessages
    }
  },
  item_types: {
    SmartThread: SmartThread2,
    SmartMessage
  },
  items: {
    smart_block: smart_block_default2,
    smart_source: smart_source_default2
  },
  modules: {
    smart_chat_model: {
      class: SmartChatModel2,
      // DEPRECATED FORMAT: will be changed (requires SmartModel adapters getters update)
      adapters: {
        anthropic: SmartChatModelAnthropicAdapter2,
        azure: SmartChatModelAzureAdapter2,
        // cohere: SmartChatModelCohereAdapter,
        custom: SmartChatModelCustomAdapter2,
        google: SmartChatModelGoogleAdapter2,
        gemini: SmartChatModelGeminiAdapter2,
        groq: SmartChatModelGroqAdapter2,
        lm_studio: SmartChatModelLmStudioAdapter2,
        ollama: SmartChatModelOllamaAdapter2,
        open_router: SmartChatModelOpenRouterAdapter2,
        openai: SmartChatModelOpenaiAdapter2,
        deepseek: SmartChatModelDeepseekAdapter2
      },
      http_adapter: new SmartHttpRequest2({
        adapter: SmartHttpObsidianRequestAdapter2,
        obsidian_request_url: import_obsidian27.requestUrl
      })
    },
    smart_fs: {
      class: SmartFs2,
      adapter: SmartFsObsidianAdapter2
    },
    smart_view: {
      class: SmartView2,
      adapter: SmartViewObsidianAdapter2
    }
  },
  components: {
    lookup: render16,
    connections_results: render17,
    smart_chat: render18,
    connections: render15,
    source_inspector: render10,
    smart_sources: {
      // settings: source_settings_component,
      connections: render15
    },
    smart_blocks: {
      connections: render15
    },
    smart_threads: {
      settings: render13,
      thread: render21
    },
    smart_chat_model: {
      settings: render14
    }
  },
  default_settings: {
    is_obsidian_vault: true,
    smart_blocks: {
      embed_blocks: true,
      min_chars: 200
    },
    smart_sources: {
      single_file_data_path: ".smart-env/smart_sources.json",
      min_chars: 200,
      embed_model: {
        adapter: "transformers",
        transformers: {
          legacy_transformers: false,
          model_key: "TaylorAI/bge-micro-v2"
        }
      },
      excluded_headings: "",
      file_exclusions: "Untitled",
      folder_exclusions: ""
    },
    ribbon_icons: {
      connections: true,
      random_note: false
    },
    smart_view_filter: {
      render_markdown: true,
      show_full_path: false,
      exclude_blocks_from_source_connections: false,
      exclude_frontmatter_blocks: true
    }
  }
};

// src/components/connections_result.js
var import_obsidian29 = require("obsidian");

// node_modules/obsidian-smart-env/utils/register_block_hover_popover.js
var import_obsidian28 = require("obsidian");
function register_block_hover_popover(parent, target, env, block_key, plugin) {
  target.addEventListener("mouseover", async (ev) => {
    if (import_obsidian28.Keymap.isModEvent(ev)) {
      const block = env.smart_blocks.get(block_key);
      const markdown = await block?.read();
      if (markdown) {
        const popover = new import_obsidian28.HoverPopover(parent, target);
        const frag = env.smart_view.create_doc_fragment(`<div class="markdown-embed is-loaded">
                <div class="markdown-embed-content node-insert-event">
                  <div class="markdown-preview-view markdown-rendered node-insert-event show-indentation-guide allow-fold-headings allow-fold-lists">
                    <div class="markdown-preview-sizer markdown-preview-section">
                    </div>
                  </div>
                </div>
              </div>`);
        popover.hoverEl.classList.add("smart-block-popover");
        popover.hoverEl.appendChild(frag);
        const sizer = popover.hoverEl.querySelector(".markdown-preview-sizer");
        import_obsidian28.MarkdownRenderer.render(plugin.app, markdown, sizer, "/", popover);
      }
    }
  });
}

// src/utils/drag.js
function parse_key_to_link(key) {
  if (!key) return "";
  const [file_path, ...parts] = key.split("#");
  const file_name = file_path.split("/").pop().replace(/\.md$/, "");
  if (!parts.length) return `[[${file_name}]]`;
  const heading = parts.filter((part) => !part.startsWith("{")).pop();
  if (!heading) return `[[${file_name}]]`;
  return `[[${file_name}#${heading}]]`;
}
function handle_drag_result(app2, event, key) {
  const drag_manager = app2.dragManager;
  const link_text = parse_key_to_link(key);
  const drag_data = drag_manager.dragLink(event, link_text);
  drag_manager.onDragStart(event, drag_data);
}

// src/components/connections_result.js
async function build_html21(result, opts = {}) {
  const item = result.item;
  const score = result.score;
  const display_name = get_item_name(item, opts);
  return `<div class="temp-container">
    <div
      class="sc-result sc-collapsed"
      data-path="${item.path.replace(/"/g, "&quot;")}"
      data-link="${item.link?.replace(/"/g, "&quot;") || ""}"
      data-collection="${item.collection_key}"
      data-score="${score}"
      data-key="${item.key}"
      draggable="true"
    >
      <span class="header">
        ${this.get_icon_html("right-triangle")}
        <a class="sc-result-file-title" href="#" title="${item.path.replace(/"/g, "&quot;")}" draggable="true">
          <small>${[score?.toFixed(2), display_name].join(" | ")}</small>
        </a>
      </span>
      <ul draggable="true">
        <li class="sc-result-file-title" title="${item.path.replace(/"/g, "&quot;")}" data-collection="${item.collection_key}" data-key="${item.key}"></li>
      </ul>
    </div>
  </div>`;
}
async function render27(result_scope, opts = {}) {
  let html = await build_html21.call(this, result_scope, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process24.call(this, result_scope, frag, opts);
}
async function post_process24(result_scope, frag, opts = {}) {
  const { item } = result_scope;
  const env = item.env;
  const plugin = env.smart_connections_plugin;
  const app2 = plugin.app;
  const connections_settings = opts.connections_settings ?? env.settings.smart_view_filter;
  const result_elm = frag.querySelector(".sc-result");
  if (!connections_settings.render_markdown) result_elm.classList.add("sc-result-plaintext");
  const render_result = async (_result_elm) => {
    if (!_result_elm.querySelector("li").innerHTML) {
      const collection_key = _result_elm.dataset.collection;
      const entity = env[collection_key].get(_result_elm.dataset.path);
      let markdown;
      if (should_render_embed3(entity)) markdown = `${entity.embed_link}

${await entity.read()}`;
      else markdown = process_for_rendering3(await entity.read());
      let entity_frag;
      if (connections_settings.render_markdown) entity_frag = await this.render_markdown(markdown, entity);
      else entity_frag = this.create_doc_fragment(markdown);
      result_elm.querySelector("li").appendChild(entity_frag);
    }
  };
  const toggle_result = (_result_elm) => {
    _result_elm.classList.toggle("sc-collapsed");
  };
  const handle_result_click = (event) => {
    event.preventDefault();
    event.stopPropagation();
    const target = event.target;
    const _result_elm = target.closest(".sc-result");
    if (target.classList.contains("svg-icon")) {
      toggle_result(_result_elm);
      return;
    }
    const link = _result_elm.dataset.link || _result_elm.dataset.path;
    if (_result_elm.classList.contains("sc-collapsed")) {
      if (import_obsidian29.Keymap.isModEvent(event)) {
        plugin.open_note(link, event);
      } else {
        toggle_result(_result_elm);
      }
    } else {
      plugin.open_note(link, event);
    }
  };
  result_elm.addEventListener("click", handle_result_click.bind(plugin));
  const key = result_elm.querySelector("li").dataset.key;
  result_elm.addEventListener("dragstart", (event) => {
    handle_drag_result(app2, event, key);
  });
  if (key.indexOf("{") === -1) {
    result_elm.addEventListener("mouseover", (event) => {
      const linktext_path = key.replace(/#$/, "");
      app2.workspace.trigger("hover-link", {
        event,
        source: "smart-connections-view",
        hoverParent: result_elm.parentElement,
        targetEl: result_elm,
        linktext: linktext_path
      });
    });
  } else {
    register_block_hover_popover(result_elm.parentElement, result_elm, env, key, plugin);
  }
  const observer = new MutationObserver((mutations) => {
    const has_expansion_change = mutations.some((mutation) => {
      const target = mutation.target;
      return mutation.attributeName === "class" && mutation.oldValue?.includes("sc-collapsed") !== target.classList.contains("sc-collapsed");
    });
    if (has_expansion_change && !mutations[0].target.classList.contains("sc-collapsed")) {
      render_result(mutations[0].target);
    }
  });
  observer.observe(result_elm, {
    attributes: true,
    attributeOldValue: true,
    attributeFilter: ["class"]
  });
  plugin.registerDomEvent(result_elm, "contextmenu", (event) => {
    event.preventDefault();
    event.stopPropagation();
    const curr_key = result_elm.closest(".sc-list")?.dataset.key;
    if (!curr_key) {
      return;
    }
    const curr_collection = curr_key.includes("#") ? env.smart_blocks : env.smart_sources;
    const curr_item = curr_collection.get(curr_key);
    if (!curr_item) return;
    const menu = new import_obsidian29.Menu(app2);
    menu.addItem((menu_item) => {
      menu_item.setTitle(`Hide ${get_item_name(item, opts)}`).setIcon("eye-off").onClick(() => {
        try {
          if (!curr_item.data.hidden_connections) curr_item.data.hidden_connections = {};
          curr_item.data.hidden_connections[result_elm.dataset.key] = Date.now();
          curr_item.queue_save();
          result_elm.style.display = "none";
          curr_item.collection.save();
        } catch (err) {
          new import_obsidian29.Notice("Hide failed \u2013 check console");
          console.error(err);
        }
      });
    });
    menu.addSeparator();
    menu.addItem((menu_item) => {
      menu_item.setTitle(`Unhide All (${Object.keys(curr_item.data.hidden_connections || {}).length})`).setIcon("eye").onClick(() => {
        try {
          if (!curr_item.data.hidden_connections) return;
          delete curr_item.data.hidden_connections;
          curr_item.queue_save();
          result_elm.closest(".sc-connections-view")?.querySelector('[title="Refresh"]')?.click();
          curr_item.collection.save();
        } catch (err) {
          new import_obsidian29.Notice("Unhide failed \u2013 check console");
          console.error(err);
        }
      });
    });
    menu.showAtMouseEvent(event);
  });
  if (!connections_settings.expanded_view) return result_elm;
  toggle_result(result_elm);
  return result_elm;
}
function should_render_embed3(entity) {
  if (!entity) return false;
  if (entity.is_media) return true;
  return false;
}
function process_for_rendering3(content) {
  if (content.includes("```dataview")) content = content.replace(/```dataview/g, "```\\dataview");
  if (content.includes("```smart-context")) content = content.replace(/```smart-context/g, "```\\smart-context");
  if (content.includes("```smart-chatgpt")) content = content.replace(/```smart-chatgpt/g, "```\\smart-chatgpt");
  if (content.includes("![[")) content = content.replace(/\!\[\[/g, "! [[");
  return content;
}
function get_item_name(item, opts) {
  const get_display_name = item.key.includes("#") ? get_block_display_name2 : get_item_display_name2;
  const show_full_path = opts.connections_settings?.show_full_path ?? item.env.settings.smart_view_filter.show_full_path;
  return get_display_name(item.key, show_full_path);
}

// src/components/connections_v1.js
function build_top_bar_buttons2(view) {
  const expanded_view = view.env.settings.smart_view_filter.expanded_view ?? view.env.settings.expanded_view;
  const buttons = [
    { title: "Refresh", icon: "refresh-cw" },
    { title: "Fold all toggle", icon: expanded_view ? "fold-vertical" : "unfold-vertical" },
    { title: "Lookup", icon: "search" },
    { title: "Settings", icon: "settings" },
    { title: "Help", icon: "help-circle" }
  ];
  return buttons.map((btn) => `
    <button
      title="${btn.title}"
      aria-label="${btn.title} button"
    >
      ${this.get_icon_html(btn.icon)}
    </button>
  `).join("");
}
async function build_html22(view, opts = {}) {
  const top_bar_buttons = build_top_bar_buttons2.call(this, view);
  const html = `<div class="sc-connections-view">
    <div class="sc-top-bar">
      <p class="sc-context" data-key="">
        Loading...
      </p>
      ${top_bar_buttons}
    </div>
    <div class="sc-list">
    </div>
    <div class="sc-bottom-bar">
      <span class="sc-context" data-key="" title="Loading context...">
        Loading context...
      </span>
      ${opts.attribution || ""}
    </div>
  </div>`;
  return html;
}
async function render28(view, opts = {}) {
  const html = await build_html22.call(this, view, opts);
  const frag = this.create_doc_fragment(html);
  return await post_process25.call(this, view, frag, opts);
}
async function post_process25(view, frag, opts = {}) {
  const container = frag.querySelector(".sc-list");
  const toggle_button = frag.querySelector("[title='Fold all toggle']");
  toggle_button.addEventListener("click", () => {
    const expanded = view.env.settings.smart_view_filter.expanded_view ?? view.env.settings.expanded_view;
    if (!view.env.settings.smart_view_filter) view.env.settings.smart_view_filter = {};
    view.env.settings.smart_view_filter.expanded_view = !expanded;
    container.querySelectorAll(".sc-result").forEach(async (elm) => {
      if (expanded) {
        elm.classList.add("sc-collapsed");
      } else {
        elm.classList.remove("sc-collapsed");
      }
    });
    const updated_expanded_view = view.env.settings.smart_view_filter.expanded_view;
    this.safe_inner_html(toggle_button, this.get_icon_html(updated_expanded_view ? "fold-vertical" : "unfold-vertical"));
    toggle_button.setAttribute("aria-label", updated_expanded_view ? "Fold all" : "Unfold all");
  });
  const refresh_button = frag.querySelector("[title='Refresh']");
  refresh_button.addEventListener("click", () => {
    view.refresh();
  });
  const lookup_button = frag.querySelector("[title='Lookup']");
  lookup_button?.addEventListener("click", () => {
    view.plugin.open_lookup_view();
  });
  const help_button = frag.querySelector("[title='Help']");
  help_button?.addEventListener("click", () => {
    StoryModal.open(view.plugin, {
      title: "Getting Started With Smart Connections",
      url: "https://smartconnections.app/story/smart-connections-getting-started/?utm_source=connections-view-help"
    });
  });
  const settings_button = frag.querySelector("[title='Settings']");
  settings_button?.addEventListener("click", () => {
    view.open_settings();
  });
  if (typeof opts.post_process === "function") {
    await opts.post_process(view, frag, opts);
  }
  return frag;
}

// src/utils/toggle_plugin_ribbon_icon.js
async function toggle_plugin_ribbon_icon(plugin, icon_name, show_icon) {
  const icon = plugin.ribbon_icons[icon_name];
  icon.elm = plugin.addRibbonIcon(icon.icon_name, icon.description, icon.callback);
  const ribbon_icon_id = plugin.manifest.id + ":" + icon.description;
  const ribbon_item = plugin.app.workspace.leftRibbon.items.find((i) => i.id === ribbon_icon_id);
  await SmartEnv2.wait_for({ loaded: true });
  if (!plugin.env.settings.ribbon_icons) plugin.env.settings.ribbon_icons = {};
  if (typeof show_icon === "undefined") {
    if (ribbon_item.hidden) {
      plugin.env.settings.ribbon_icons[icon_name] = false;
    }
    show_icon = plugin.env.settings.ribbon_icons[icon_name];
  } else {
    plugin.env.settings.ribbon_icons[icon_name] = show_icon;
  }
  if (show_icon) {
    ribbon_item.hidden = false;
  } else {
    ribbon_item.hidden = true;
  }
  plugin.app.workspace.leftRibbon.load(plugin.app.workspace.leftRibbon.ribbonItemsEl);
  plugin.app.workspace.saveLayout();
}

// src/components/main_settings.js
async function build_html23(scope_plugin) {
  return `
    <div id="smart-connections-settings">
      <div data-user-agreement></div>

      <div id="smart-connections-getting-started-container">
        <button class="sc-getting-started-button">Getting started guide</button>
        <button class="sc-report-bug-button">Report a bug</button>
        <button class="sc-request-feature-button">Request a feature</button>
        <button class="sc-share-workflow-button">Share workflow \u2B50</button>
      </div>

      <div data-connections-settings-container>
        <h2>Connections view</h2>
      </div>

      <div data-ribbon-icons-settings>
        <h2>Ribbon icons</h2>
      </div>

      <div data-smart-settings="env"></div>
      <h2>More Smart Plugins</h2>
      <div class="sc-other-plugins">
        <button class="sc-smart-context-button">Quickly copy notes many notes to clipboard</button>
        <button class="sc-smart-chatgpt-button">Embed &amp; bookmark chat threads to notes</button>
        <button class="sc-smart-templates-button">Smart note generation with context + templates</button>
      </div>
    </div>
  `;
}
async function render29(scope_plugin) {
  if (!scope_plugin.env) {
    const load_frag = this.create_doc_fragment(`
      <div><button>Load Smart Environment</button></div>
    `);
    load_frag.querySelector("button").addEventListener("click", (e) => {
      scope_plugin.env.load(true);
      e.target.replaceWith(
        this.create_doc_fragment("<span>Reload settings after Smart Environment loads\u2026</span>")
      );
    });
    return load_frag;
  }
  const html = await build_html23.call(this, scope_plugin);
  const frag = this.create_doc_fragment(html);
  return await post_process26.call(this, scope_plugin, frag);
}
async function post_process26(scope_plugin, frag) {
  const user_agreement_container = frag.querySelector("[data-user-agreement]");
  if (user_agreement_container) {
    const user_agreement = await scope_plugin.env.render_component(
      "user_agreement_callout",
      scope_plugin
    );
    user_agreement_container.appendChild(user_agreement);
  }
  const env_settings_container = frag.querySelector('[data-smart-settings="env"]');
  if (env_settings_container) {
    const env_settings_frag = await scope_plugin.env.render_component(
      "env_settings",
      scope_plugin.env
    );
    env_settings_container.appendChild(env_settings_frag);
  }
  const connections_settings = frag.querySelector("[data-connections-settings-container]");
  if (connections_settings) {
    const connections_settings_frag = await this.render_settings(
      scope_plugin.env.smart_sources.connections_filter_config,
      { scope: { settings: scope_plugin.env.settings } }
    );
    connections_settings.appendChild(connections_settings_frag);
  }
  const ribbon_container = frag.querySelector("[data-ribbon-icons-settings]");
  if (ribbon_container) {
    if (!scope_plugin.env.settings.ribbon_icons) scope_plugin.env.settings.ribbon_icons = {};
    const ribbon_frag = await this.render_settings(
      {
        connections: {
          setting: "connections",
          name: "Open connections view",
          description: "Show the &quot;Open connections view&quot; icon.",
          type: "toggle",
          callback: "toggle_plugin_ribbon_icon"
        },
        random_note: {
          setting: "random_note",
          name: "Open random connection",
          description: "Show the &quot;Open random connection&quot; icon.",
          type: "toggle",
          callback: "toggle_plugin_ribbon_icon"
        }
      },
      {
        scope: {
          settings: scope_plugin.env.settings.ribbon_icons,
          toggle_plugin_ribbon_icon: (setting_path, value) => {
            toggle_plugin_ribbon_icon(scope_plugin, setting_path, value);
          }
        }
      }
    );
    ribbon_container.appendChild(ribbon_frag);
  }
  const header_link = frag.querySelector("#header-callout a");
  if (header_link) {
    header_link.addEventListener("click", (e) => {
      e.preventDefault();
      open_url_externally(scope_plugin, header_link.href);
    });
  }
  const supporter_callout = await scope_plugin.env.render_component(
    "supporter_callout",
    scope_plugin
  );
  frag.appendChild(supporter_callout);
  frag.querySelector(".sc-getting-started-button")?.addEventListener("click", () => {
    StoryModal.open(scope_plugin, {
      title: "Getting Started With Smart Connections",
      url: "https://smartconnections.app/story/smart-connections-getting-started/?utm_source=sc-op-settings"
    });
  });
  frag.querySelector(".sc-report-bug-button")?.addEventListener("click", () => {
    open_url_externally(
      scope_plugin,
      "https://github.com/brianpetro/obsidian-smart-connections/issues/new?template=bug_report.yml"
    );
  });
  frag.querySelector(".sc-request-feature-button")?.addEventListener("click", () => {
    open_url_externally(
      scope_plugin,
      "https://github.com/brianpetro/obsidian-smart-connections/issues/new?template=feature_request.yml"
    );
  });
  frag.querySelector(".sc-share-workflow-button")?.addEventListener("click", () => {
    open_url_externally(
      scope_plugin,
      "https://github.com/brianpetro/obsidian-smart-connections/discussions/new?category=showcase"
    );
  });
  frag.querySelector(".sc-smart-context-button")?.addEventListener("click", () => {
    open_url_externally(scope_plugin, "https://obsidian.md/plugins?id=smart-context");
  });
  frag.querySelector(".sc-smart-chatgpt-button")?.addEventListener("click", () => {
    open_url_externally(scope_plugin, "https://obsidian.md/plugins?id=smart-chatgpt");
  });
  frag.querySelector(".sc-smart-templates-button")?.addEventListener("click", () => {
    open_url_externally(scope_plugin, "https://obsidian.md/plugins?id=smart-templates");
  });
  return frag;
}

// smart_env.config.js
var smart_env_config4 = {
  collections: {},
  item_types: {},
  items: {},
  components: {
    connections: render15,
    connections_result: render27,
    connections_results: render17,
    connections_v1: render28,
    lookup: render16,
    main_settings: render29
  }
};

// src/views/smart_view.obsidian.js
var import_obsidian31 = require("obsidian");

// node_modules/obsidian-smart-env/utils/wait_for_env_to_load.js
var import_obsidian30 = require("obsidian");
async function wait_for_env_to_load(scope, opts = {}) {
  const { wait_for_states = ["loaded"] } = opts;
  const container = scope.container || scope.containerEl;
  if (!wait_for_states.includes(scope.env?.state)) {
    let clicked_load_env = false;
    while (scope.env.state === "init" && import_obsidian30.Platform.isMobile && !clicked_load_env) {
      if (container) {
        container.empty();
        scope.env.smart_view.safe_inner_html(container, "<button>Load Smart Environment</button>");
        container.querySelector("button").addEventListener("click", () => {
          scope.env.load(true);
          clicked_load_env = true;
        });
      } else {
        console.log("Waiting for env to load (mobile)...");
      }
      await new Promise((r) => setTimeout(r, 2e3));
    }
    while (!wait_for_states.includes(scope.env.state)) {
      if (container) {
        const loading_msg = scope.env?.obsidian_is_syncing ? "Waiting for Obsidian Sync to finish..." : "Loading Obsidian Smart Environment...";
        container.empty();
        scope.env.smart_view.safe_inner_html(container, loading_msg);
      } else {
        console.log("Waiting for env to load...");
      }
      await new Promise((r) => setTimeout(r, 2e3));
    }
  }
}

// src/views/smart_view.obsidian.js
var SmartObsidianView = class extends import_obsidian31.ItemView {
  /**
   * Creates an instance of SmartObsidianView.
   * @param {any} leaf
   * @param {any} plugin
   */
  constructor(leaf, plugin) {
    super(leaf);
    this.app = plugin.app;
    this.plugin = plugin;
  }
  /**
   * The unique view type. Must be implemented in subclasses.
   * @returns {string}
   */
  static get view_type() {
    throw new Error("view_type must be implemented in subclass");
  }
  /**
   * The display text for this view. Must be implemented in subclasses.
   * @returns {string}
   */
  static get display_text() {
    throw new Error("display_text must be implemented in subclass");
  }
  /**
   * The icon name for this view.
   * @returns {string}
   */
  static get icon_name() {
    return "smart-connections";
  }
  /**
   * Retrieves the Leaf instance for this view type if it exists.
   * @param {import("obsidian").Workspace} workspace
   * @returns {import("obsidian").WorkspaceLeaf | undefined}
   */
  static get_leaf(workspace) {
    return workspace.getLeavesOfType(this.view_type)[0];
  }
  /**
   * Retrieves the view instance if it exists.
   * @param {import("obsidian").Workspace} workspace
   * @returns {SmartObsidianView | undefined}
   */
  static get_view(workspace) {
    const leaf = this.get_leaf(workspace);
    return leaf ? leaf.view : void 0;
  }
  /**
   * Opens the view. If `this.default_open_location` is `'root'`,
   * it will open (or reveal) in a "root" leaf; otherwise, it will
   * open (or reveal) in the right leaf.
   *
   * @param {import("obsidian").Workspace} workspace
   * @param {boolean} [active=true] - Whether the view should be focused when opened.
   */
  static open(workspace, active = true) {
    const existing_leaf = this.get_leaf(workspace);
    if (this.default_open_location === "root") {
      if (existing_leaf) {
        existing_leaf.setViewState({ type: this.view_type, active });
      } else {
        workspace.getLeaf(false).setViewState({ type: this.view_type, active });
      }
    } else {
      if (existing_leaf) {
        existing_leaf.setViewState({ type: this.view_type, active });
      } else {
        workspace.getRightLeaf(false).setViewState({
          type: this.view_type,
          active
        });
      }
      if (workspace.rightSplit?.collapsed) {
        workspace.rightSplit.toggle();
      }
    }
    setTimeout(() => {
      this.get_view(workspace)?.render_view();
    }, 100);
  }
  static is_open(workspace) {
    return this.get_leaf(workspace)?.view instanceof this;
  }
  // instance
  getViewType() {
    return this.constructor.view_type;
  }
  getDisplayText() {
    return this.constructor.display_text;
  }
  getIcon() {
    return this.constructor.icon_name;
  }
  async onOpen() {
    this.app.workspace.onLayoutReady(this.initialize.bind(this));
  }
  async initialize() {
    await wait_for_env_to_load(this);
    this.container.empty();
    this.register_plugin_events();
    this.app.workspace.registerHoverLinkSource(this.constructor.view_type, { display: this.getDisplayText(), defaultMod: true });
    this.render_view();
  }
  register_plugin_events() {
  }
  render_view() {
    throw new Error("render_view must be implemented in subclass");
  }
  get container() {
    return this.containerEl.children[1];
  }
  get env() {
    return this.plugin.env;
  }
  get smart_view() {
    if (!this._smart_view) this._smart_view = this.env.init_module("smart_view");
    return this._smart_view;
  }
  get attribution() {
    return `
      <div class="sc-brand">
        <svg viewBox="0 0 100 100" class="svg-icon smart-connections">
          <path d="M50,20 L80,40 L80,60 L50,100" stroke="currentColor" stroke-width="4" fill="none"></path>
          <path d="M30,50 L55,70" stroke="currentColor" stroke-width="5" fill="none"></path>
          <circle cx="50" cy="20" r="9" fill="currentColor"></circle>
          <circle cx="80" cy="40" r="9" fill="currentColor"></circle>
          <circle cx="80" cy="70" r="9" fill="currentColor"></circle>
          <circle cx="50" cy="100" r="9" fill="currentColor"></circle>
          <circle cx="30" cy="50" r="9" fill="currentColor"></circle>
        </svg>
        <p><a style="font-weight: 700;" href="https://smartconnections.app/">Smart Connections</a></p>
      </div>
    `;
  }
};

// src/views/connections_view.js
var import_obsidian32 = require("obsidian");
var ConnectionsView = class extends SmartObsidianView {
  static get view_type() {
    return "smart-connections-view";
  }
  static get display_text() {
    return "Connections";
  }
  static get icon_name() {
    return "smart-connections";
  }
  register_plugin_events() {
    this.plugin.registerEvent(
      this.app.workspace.on("file-open", (file) => file && this.render_view(file.path))
    );
    this.plugin.registerEvent(this.app.workspace.on("active-leaf-change", (leaf) => {
      if (leaf.view instanceof this.constructor) {
        if (!this.container) return console.log("Connections view event: active-leaf-change: no container, skipping");
        if (typeof this.container.checkVisibility === "function" && this.container.checkVisibility() === false) {
          return console.log("Connections view event: active-leaf-change: not visible, skipping");
        }
        if (import_obsidian32.Platform.isMobile && this.plugin.app.workspace.activeLeaf.view.constructor.view_type === this.constructor.view_type) {
          this.render_view();
          return;
        }
      }
    }));
  }
  /* ------------------------------------------------------------------ */
  async render_view(target = null, container = this.container) {
    if (container.checkVisibility?.() === false) return;
    if (!target) target = this.app.workspace.getActiveFile()?.path;
    if (!target) {
      container.empty();
      container.createEl("p", { text: "No active file to render connections." });
      return;
    }
    const target_key = typeof target === "string" ? target : target.key ?? target.path;
    if (!target_key) {
      container.empty();
      let msg = "No valid target key provided.";
      if (target && typeof target === "object") {
        msg += ` Received target object: ${JSON.stringify(target)}`;
      }
      container.createEl("p", { text: msg });
      return;
    }
    let entity;
    const is_block = target_key.includes("#");
    if (is_block) {
      entity = this.env.smart_blocks.get(target_key);
      if (!entity) {
        console.warn("ConnectionsView: No entity found for block: " + target_key);
        const source_key = target_key.split("#")[0];
        const source2 = this.env.smart_sources.get(source_key);
        if (source2) {
          return this.render_view(source2, container);
        } else {
          container.empty();
          container.createEl("p", { text: 'No block or source found for "' + target_key + '".' });
          return;
        }
      }
    } else {
      entity = this.env.smart_sources.get(target_key);
      if (!entity) {
        console.warn("ConnectionsView: No entity found for source: " + target_key);
        const source2 = this.env.smart_sources.init_file_path(target_key);
        if (source2) {
          this.env.queue_source_re_import(source2);
          container.empty();
          container.createEl("p", { text: "Source not found, but initialized. Requires embedding." });
          container.createEl("button", {
            text: "Embed now"
          }).addEventListener("click", async () => {
            await this.env.run_re_import();
            this.render_view(source2, container);
          });
          return;
        } else {
          container.empty();
          container.createEl("p", { text: 'No source found for "' + target_key + '". Unable to import. Check Smart Environment exclusion settings.' });
          return;
        }
      }
    }
    if (!entity) {
      container.empty();
      container.createEl("p", { text: "No entity found for the current note." });
      return;
    }
    const frag = await this.env.render_component("connections", entity, {
      attribution: this.attribution,
      view: this
      /* hand back reference for heavy refresh */
    });
    container.empty();
    container.appendChild(frag);
  }
  /* ------------------------------------------------------------------ */
  async refresh() {
    const key = this.container.querySelector(".sc-list")?.dataset.key;
    if (!key) return;
    const entity = this.env.smart_sources.get(key);
    if (!entity) return;
    await entity.read();
    entity.queue_import();
    await entity.collection.process_source_import_queue();
    this.render_view(entity.key);
  }
};

// src/views/sc_lookup.obsidian.js
var ScLookupView = class extends SmartObsidianView {
  static get view_type() {
    return "smart-lookup-view";
  }
  static get display_text() {
    return "Smart Lookup";
  }
  static get icon_name() {
    return "search";
  }
  async render_view(query = "", container = this.container) {
    container.empty();
    container.createEl("span", { text: "Loading lookup..." });
    const frag = await this.env.render_component("lookup", this.env.smart_sources, {
      attribution: this.attribution,
      query
    });
    if (container) {
      container.empty();
      container.appendChild(frag);
    }
  }
};

// src/views/smart_chat.obsidian.js
var import_obsidian33 = require("obsidian");
var SmartChatsView = class extends SmartObsidianView {
  static get view_type() {
    return "smart-chat-v0";
  }
  static get display_text() {
    return "Smart Chat (v0 legacy)";
  }
  static get icon_name() {
    return "message-square";
  }
  /**
   * Registers plugin-specific events such as file opening and active leaf changes.
   */
  register_plugin_events() {
  }
  /**
   * Renders the chat view for a specific entity (chat thread).
   * @param {string|null} entity - The path or key of the chat thread to render.
   */
  async render_view(thread_key = null) {
    this.env.smart_view.safe_inner_html(this.container, "Loading...");
    const frag = await this.env.render_component("smart_chat", this, {
      thread_key
    });
    this.container.empty();
    this.container.appendChild(frag);
  }
  /**
   * Opens the chat history view.
   */
  async open_chat_history() {
    if (!this._chat_history_selector) this._chat_history_selector = new ScChatHistoryModal(this.plugin.app, this);
    this._chat_history_selector.open();
  }
  open_thread(thread_name) {
    const thread_key = Object.keys(this.env.smart_threads.items).find((key) => this.thread_key_to_name(key) === thread_name);
    this.render_view(thread_key);
  }
  thread_key_to_name(thread_key) {
    return thread_key.split("/").pop().split(".").shift();
  }
  /**
   * Handles click events on messages, such as copying to clipboard.
   * @param {Event} event - The click event.
   */
  handle_message_click(event) {
    event.preventDefault();
    event.stopPropagation();
    const message = event.target.classList.contains("sc-message-content") ? event.target : event.target.closest(".sc-message-content");
    if (event.target.classList.contains("sc-msg-button")) {
      this.copy_message_to_clipboard(message);
    }
  }
  handle_chat_input_keydown(event) {
    if (!["/", "@", "[", "!"].includes(event.key)) return;
    const chat_input = event.currentTarget;
    const pos = chat_input.selectionStart;
    if (event.key === "@" && (!pos || [" ", "\n"].includes(chat_input.value[pos - 1]))) {
      this.open_omni_modal();
      event.preventDefault();
      event.stopPropagation();
      return;
    } else if (event.key === "[" && chat_input.value[pos - 1] === "[") {
      setTimeout(() => this.open_file_suggestion_modal(), 10);
    } else if (event.key === "/" && (!pos || [" ", "\n"].includes(chat_input.value[pos - 1]))) {
      setTimeout(() => this.open_folder_suggestion_modal(), 10);
    } else if (event.key === "!" && (!pos || [" ", "\n"].includes(chat_input.value[pos - 1]))) {
      setTimeout(() => this.open_image_suggestion_modal(), 10);
    }
  }
  /**
   * Copies the message content to the clipboard.
   * @param {HTMLElement} message - The message element containing the content.
   */
  copy_message_to_clipboard(message) {
    const content = message.dataset.content;
    navigator.clipboard.writeText(content).then(() => {
      this.env.events?.emit("clipboard:copied");
      this.plugin.notices.show("copied_to_clipboard", { content });
    }).catch((err) => {
      console.error("Failed to copy message: ", err);
      this.env.events?.emit("clipboard:copy_failed", { error: err.message });
      this.plugin.notices.show("copy_failed");
    });
  }
  open_omni_modal() {
    if (!this.omni_selector) this.omni_selector = new ScOmniModal(this.plugin.app, this);
    this.omni_selector.open();
  }
  open_modal(item) {
    switch (item) {
      case "Files":
        this.open_file_suggestion_modal();
        break;
      case "Folders":
        this.open_folder_suggestion_modal();
        break;
      case "Notes":
        this.open_notes_suggestion_modal();
        break;
      case "Images":
        this.open_image_suggestion_modal();
        break;
    }
  }
  // open file suggestion modal
  open_file_suggestion_modal() {
    if (!this.file_selector) this.file_selector = new ScFileSelectModal(this.plugin.app, this);
    this.file_selector.open();
  }
  open_notes_suggestion_modal() {
    if (!this.notes_selector) this.notes_selector = new ScNotesSelectModal(this.plugin.app, this);
    this.notes_selector.open();
  }
  // open folder suggestion modal
  async open_folder_suggestion_modal() {
    if (!this.folder_selector) {
      const folders = this.env.fs.folder_paths;
      this.folder_selector = new ScFolderSelectModal(this.plugin.app, this, folders);
    }
    this.folder_selector.open();
  }
  async open_system_prompt_modal() {
    if (!this.system_prompt_selector) this.system_prompt_selector = new ScSystemPromptSelectModal(this.plugin.app, this);
    this.system_prompt_selector.open();
  }
  async open_image_suggestion_modal() {
    if (!this.image_selector) {
      this.image_selector = new ScImageSelectModal(this.plugin.app, this);
    }
    this.image_selector.open();
  }
  /**
   * Inserts selected text from a suggestion modal into the chat input.
   * @param {string} insert_text - The text to insert.
   */
  insert_selection(insert_text) {
    if (this.textarea.value.endsWith("[[")) this.textarea.value = this.textarea.value.slice(0, -2);
    if (this.textarea.value.endsWith("/")) this.textarea.value = this.textarea.value.slice(0, -1);
    let caret_pos = this.textarea.selectionStart;
    let text_before = this.textarea.value.substring(0, caret_pos);
    let text_after = this.textarea.value.substring(caret_pos, this.textarea.value.length);
    this.textarea.value = text_before + insert_text + text_after;
    this.textarea.selectionStart = caret_pos + insert_text.length;
    this.textarea.selectionEnd = caret_pos + insert_text.length;
    this.textarea.focus();
  }
  get textarea() {
    return this.container.querySelector(".sc-chat-form textarea");
  }
  insert_system_prompt(prompt_file) {
    const system_message = {
      input: {
        key: prompt_file.path
      }
    };
    this.env.smart_threads.get_active_thread().add_system_message(system_message);
    if (this.textarea.value.endsWith("[[")) this.textarea.value = this.textarea.value.slice(0, -2);
  }
};
var ScChatHistoryModal = class extends import_obsidian33.FuzzySuggestModal {
  constructor(app2, view) {
    super(app2);
    this.app = app2;
    this.view = view;
    this.setPlaceholder("Type the name of a chat session...");
  }
  // sort alphabetically & then by startsWith UNITITLED
  getItems() {
    return Object.keys(this.view.env.smart_threads.items).map((key) => this.view.thread_key_to_name(key)).sort((a, b) => a.localeCompare(b)).sort((a, b) => b.startsWith("UNTITLED") ? -1 : 1);
  }
  // if not UNTITLED, remove date after last em dash
  getItemText(item) {
    return item.indexOf("UNTITLED") === -1 ? item.replace(/—[^—]*$/, "") : item;
  }
  // onChooseItem(session) { this.view.open_chat(session); }
  onChooseItem(thread_name) {
    this.view.open_thread(thread_name);
  }
};
var ScOmniModal = class extends import_obsidian33.FuzzySuggestModal {
  constructor(app2, view) {
    super(app2);
    this.app = app2;
    this.view = view;
    this.setPlaceholder("Select input type...");
    this.inputEl.addEventListener("keydown", (e) => {
      if (e.key === "ArrowRight") this.selectActiveSuggestion(e);
    });
    this.setInstructions([
      {
        command: `Enter or \u2192`,
        purpose: "Select a context type"
      }
    ]);
  }
  getItems() {
    return [
      "Files",
      "Folders",
      "Notes",
      // "System Prompt",
      "Images"
    ];
  }
  getItemText(item) {
    return item;
  }
  onChooseItem(item) {
    this.view.open_modal(item);
  }
};
var ContextSelectModal = class extends import_obsidian33.FuzzySuggestModal {
  constructor(app2, view) {
    super(app2);
    this.app = app2;
    this.view = view;
    this.setPlaceholder("Find and select a context...");
    this.inputEl.addEventListener("keydown", (e) => {
      if (e.key === "Escape" || e.key === "ArrowLeft") {
        this.view.open_omni_modal();
        this.close();
      }
      if (e.key === "Enter") this.selectActiveSuggestion(e);
    });
  }
};
var ScFileSelectModal = class extends ContextSelectModal {
  constructor(app2, view) {
    super(app2, view);
    const mod_key = import_obsidian33.Platform.isMacOS ? `\u2318` : `ctrl`;
    this.setInstructions([
      {
        command: `\u2190`,
        purpose: "Go back"
      },
      {
        command: `\u21B5`,
        purpose: "Insert as linked context"
      },
      {
        command: `${mod_key} \u21B5`,
        purpose: "Insert as system prompt"
      },
      {
        command: `shift \u21B5`,
        purpose: "Insert content inline"
      }
    ]);
  }
  // get all markdown files
  getItems() {
    return this.app.vault.getFiles().sort((a, b) => a.basename.localeCompare(b.basename));
  }
  getItemText(item) {
    return item.basename;
  }
  selectSuggestion(item, evt) {
    if (import_obsidian33.Keymap.isModEvent(evt)) this.view.insert_system_prompt(item.item);
    else {
      const link = `[[${item.item.path}]] `;
      if (evt.shiftKey) this.view.insert_selection("!" + link);
      else this.view.insert_selection(link);
    }
    this.close();
  }
};
var ScNotesSelectModal = class extends ScFileSelectModal {
  getItems() {
    return this.app.vault.getMarkdownFiles().sort((a, b) => a.basename.localeCompare(b.basename));
  }
};
var ScFolderSelectModal = class extends ContextSelectModal {
  constructor(app2, view, folders) {
    super(app2, view);
    this.folders = folders;
    this.setPlaceholder("Type the name of a folder...");
    this.inputEl.addEventListener("keydown", (e) => {
      if (e.key === "Escape" || e.key === "ArrowLeft") {
        this.view.open_omni_modal();
        this.close();
      }
    });
  }
  getItems() {
    return this.folders;
  }
  getItemText(item) {
    return item;
  }
  onChooseItem(folder) {
    this.view.insert_selection("/" + folder + "/ ");
  }
};
var ScImageSelectModal = class extends ScFileSelectModal {
  constructor(app2, view) {
    super(app2, view);
    this.setPlaceholder("Type the name of an image...");
  }
  get image_extensions() {
    return [
      "gif",
      "heic",
      "heif",
      "jpeg",
      "jpg",
      "png",
      "webp"
    ];
  }
  getItems() {
    return this.app.vault.getFiles().filter((file) => this.image_extensions.includes(file.extension)).sort((a, b) => a.basename.localeCompare(b.basename));
  }
  getItemText(item) {
    return item.path;
  }
};

// src/views/sc_chatgpt.obsidian.js
var SmartChatGPTView = class extends SmartObsidianView {
  static get view_type() {
    return "smart-chatgpt-view";
  }
  static get display_text() {
    return "Smart ChatGPT";
  }
  static get icon_name() {
    return "bot";
  }
  getViewType() {
    return this.constructor.view_type;
  }
  getDisplayText() {
    return this.constructor.display_text;
  }
  getIcon() {
    return this.constructor.icon_name;
  }
  static get_leaf(workspace) {
    return workspace.getLeavesOfType(this.view_type)?.find((leaf) => leaf.view instanceof this);
  }
  static open(workspace, active = true) {
    if (this.get_leaf(workspace)) this.get_leaf(workspace).setViewState({ type: this.view_type, active });
    else workspace.getRightLeaf(false).setViewState({ type: this.view_type, active });
    if (workspace.rightSplit.collapsed) workspace.rightSplit.toggle();
  }
  onload() {
    console.log("loading view");
    this.initialize();
  }
  initialize() {
    this.containerEl.empty();
    const buttonContainer = this.containerEl.createEl("div", {
      cls: "button-container"
    });
    buttonContainer.style.display = "flex";
    buttonContainer.style.gap = "8px";
    buttonContainer.style.marginBottom = "8px";
    const refreshButton = buttonContainer.createEl("button", {
      text: "Refresh"
    });
    refreshButton.addEventListener("click", () => {
      this.initialize();
    });
    const copyUrlButton = buttonContainer.createEl("button", {
      text: "Copy URL"
    });
    copyUrlButton.addEventListener("click", () => {
      const current_url = this.frame?.getAttribute("src");
      if (current_url) {
        navigator.clipboard.writeText(current_url);
        if (this.plugin) {
          this.plugin.env.events?.emit("chatgpt:url_copied", { url: current_url });
          this.plugin.notices.show("copied_chatgpt_url_to_clipboard");
        }
      }
    });
    this.containerEl.appendChild(this.create());
  }
  create() {
    this.frame = document.createElement("webview", {});
    this.frame.setAttribute("allowpopups", "");
    this.frame.setAttribute("useragent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.191 Safari/537.36");
    this.frame.setAttribute("partition", this.plugin.app.getWebviewPartition());
    this.frame.style.width = "100%";
    this.frame.style.height = "100%";
    this.frame.setAttribute("src", "https://chatgpt.com/");
    return this.frame;
  }
};

// src/views/sc_private_chat.obsidian.js
var import_obsidian34 = require("obsidian");

// node_modules/smart-chat-obsidian/src/smart_chat.obsidian.js
var import_obsidian36 = require("obsidian");

// node_modules/smart-chat-obsidian/node_modules/obsidian-smart-env/utils/wait_for_env_to_load.js
var import_obsidian35 = require("obsidian");
async function wait_for_env_to_load2(scope, opts = {}) {
  const { wait_for_states = ["loaded"] } = opts;
  const container = scope.container || scope.containerEl;
  if (!wait_for_states.includes(scope.env?.state)) {
    let clicked_load_env = false;
    while (scope.env.state === "init" && import_obsidian35.Platform.isMobile && !clicked_load_env) {
      if (container) {
        container.empty();
        scope.env.smart_view.safe_inner_html(container, "<button>Load Smart Environment</button>");
        container.querySelector("button").addEventListener("click", () => {
          scope.env.load(true);
          clicked_load_env = true;
        });
      } else {
        console.log("Waiting for env to load (mobile)...");
      }
      await new Promise((r) => setTimeout(r, 2e3));
    }
    while (!wait_for_states.includes(scope.env.state)) {
      if (container) {
        const loading_msg = scope.env?.obsidian_is_syncing ? "Waiting for Obsidian Sync to finish..." : "Loading Obsidian Smart Environment...";
        container.empty();
        scope.env.smart_view.safe_inner_html(container, loading_msg);
      } else {
        console.log("Waiting for env to load...");
      }
      await new Promise((r) => setTimeout(r, 2e3));
    }
  }
}

// node_modules/smart-chat-obsidian/src/smart_chat.obsidian.js
var SmartChatView = class extends import_obsidian36.ItemView {
  /**
   * @param {WorkspaceLeaf} leaf
   * @param {Plugin} plugin
   */
  constructor(leaf, plugin) {
    super(leaf);
    this.plugin = plugin;
    this.plugin.env.create_env_getter(this);
  }
  static last_plugin = null;
  static view_type = "smart-chat-view";
  /**
   * Unique identifier for the view type.
   * @returns {string}
   */
  getViewType() {
    return this.constructor.view_type;
  }
  static view_name = "Smart Chat";
  /**
   * Display text for the workspace tab.
   * @returns {string}
   */
  getDisplayText() {
    return this.constructor.view_name;
  }
  static icon = "smart-chat";
  /**
   * Icon for the view.
   * @returns {string}
   */
  getIcon() {
    return this.constructor.icon;
  }
  /**
   * Called by Obsidian when the view is opened.
   */
  onOpen() {
    this.render();
  }
  get container() {
    return this.containerEl.children[1];
  }
  /**
   * Render the chat component into the view.
   */
  async render() {
    await wait_for_env_to_load2(this);
    this.containerEl.empty();
    const container = await this.env.render_component("chat", this.env.smart_chat_threads, {});
    this.containerEl.appendChild(container);
  }
  static open(plugin = this.last_plugin) {
    const existing = plugin.app.workspace.getLeavesOfType(this.view_type)[0];
    if (existing) {
      existing.setViewState({ type: this.view_type, active: true });
      existing.view?.render();
      return;
    }
    const root_leaf = plugin.app.workspace.getLeaf(true);
    root_leaf.setViewState({ type: this.view_type, active: true });
  }
  /**
   * Registers the Smart Chat view with the plugin.
   * @param {import('obsidian').Plugin} plugin - Obsidian plugin instance.
   */
  static register_view(plugin) {
    if (plugin.app.plugins.enabledPlugins.has("smart-chat") && plugin.manifest.id !== "smart-chat") return console.log(`Skipping Smart Chat registration for plugin ${plugin.manifest.id} since dedicated Smart Chat plugin is enabled.`);
    this.last_plugin = plugin;
    plugin.registerView(this.view_type, (leaf) => new this(leaf, plugin));
    plugin.addRibbonIcon(this.icon, "Open: " + this.view_name, () => {
      this.open(plugin);
    });
    plugin.addCommand({
      id: "open-" + this.view_type,
      name: "Open " + this.view_name,
      callback: () => this.open(plugin)
    });
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-collections/utils/collection_instance_name_from.js
function collection_instance_name_from3(class_name) {
  if (class_name.endsWith("Item")) {
    return class_name.replace(/Item$/, "").toLowerCase();
  }
  return class_name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase().replace(/y$/, "ie") + "s";
}

// node_modules/smart-chat-obsidian/node_modules/smart-utils/deep_merge.js
function deep_merge3(target = {}, source2 = {}) {
  for (const key in source2) {
    if (!Object.prototype.hasOwnProperty.call(source2, key)) continue;
    if (is_plain_object5(source2[key]) && is_plain_object5(target[key])) {
      deep_merge3(target[key], source2[key]);
    } else {
      target[key] = source2[key];
    }
  }
  return target;
}
function is_plain_object5(o) {
  return o && typeof o === "object" && !Array.isArray(o);
}

// node_modules/smart-chat-obsidian/node_modules/smart-collections/utils/helpers.js
function create_uid3(data) {
  const str = JSON.stringify(data);
  let hash = 0;
  if (str.length === 0) return hash;
  for (let i = 0; i < str.length; i++) {
    const char = str.charCodeAt(i);
    hash = (hash << 5) - hash + char;
    hash = hash & hash;
    if (hash < 0) hash = hash * -1;
  }
  return hash.toString() + str.length;
}

// node_modules/smart-chat-obsidian/node_modules/smart-utils/camel_case_to_snake_case.js
function camel_case_to_snake_case3(str = "") {
  return str.replace(/([A-Z])/g, (m) => `_${m.toLowerCase()}`).replace(/^_/, "").replace(/2$/, "");
}

// node_modules/smart-chat-obsidian/node_modules/smart-collections/utils/deep_equal.js
function deep_equal3(obj1, obj2, visited = /* @__PURE__ */ new WeakMap()) {
  if (obj1 === obj2) return true;
  if (obj1 === null || obj2 === null || obj1 === void 0 || obj2 === void 0) return false;
  if (typeof obj1 !== typeof obj2 || Array.isArray(obj1) !== Array.isArray(obj2)) return false;
  if (Array.isArray(obj1)) {
    if (obj1.length !== obj2.length) return false;
    return obj1.every((item, index) => deep_equal3(item, obj2[index], visited));
  }
  if (typeof obj1 === "object") {
    if (visited.has(obj1)) return visited.get(obj1) === obj2;
    visited.set(obj1, obj2);
    const keys1 = Object.keys(obj1);
    const keys2 = Object.keys(obj2);
    if (keys1.length !== keys2.length) return false;
    return keys1.every((key) => deep_equal3(obj1[key], obj2[key], visited));
  }
  return obj1 === obj2;
}

// node_modules/smart-chat-obsidian/node_modules/smart-collections/utils/get_item_display_name.js
function get_item_display_name3(key, show_full_path) {
  if (show_full_path) {
    return key.split("/").join(" > ").replace(".md", "");
  }
  return key.split("/").pop().replace(".md", "");
}

// node_modules/smart-chat-obsidian/node_modules/smart-collections/utils/compare.js
function compare3(item, to_item, params = {}) {
  const {
    algo = (a, b) => ({ is_equal: a === b })
  } = params;
  if (typeof algo !== "function") return { item, error: "Invalid comparison function" };
  return {
    item,
    ...algo(item, to_item) || { error: "Comparison function did not return a result" }
  };
}

// node_modules/smart-chat-obsidian/node_modules/smart-collections/item.js
var CollectionItem3 = class _CollectionItem {
  /**
   * Default properties for an instance of CollectionItem.
   * Override in subclasses to define different defaults.
   * @returns {Object}
   */
  static get defaults() {
    return {
      data: {}
    };
  }
  /**
   * @param {Object} env - The environment/context.
   * @param {Object|null} [data=null] - Initial data for the item.
   */
  constructor(env, data = null) {
    env.create_env_getter(this);
    this.config = this.env?.config;
    this.merge_defaults();
    if (data) deep_merge3(this.data, data);
    if (!this.data.class_name) this.data.class_name = this.collection.item_class_name;
  }
  /**
   * Loads an item from data and initializes it.
   * @param {Object} env
   * @param {Object} data
   * @returns {CollectionItem}
   */
  static load(env, data) {
    const item = new this(env, data);
    item.init();
    return item;
  }
  /**
   * Merge default properties from the entire inheritance chain.
   * @private
   */
  merge_defaults() {
    let current_class = this.constructor;
    while (current_class) {
      for (let key in current_class.defaults) {
        const default_val = current_class.defaults[key];
        if (typeof default_val === "object") {
          this[key] = { ...default_val, ...this[key] };
        } else {
          this[key] = this[key] === void 0 ? default_val : this[key];
        }
      }
      current_class = Object.getPrototypeOf(current_class);
    }
  }
  /**
   * Generates or retrieves a unique key for the item.
   * Key syntax supports:
   * - `[i]` for sequences
   * - `/` for super-sources (groups, directories, clusters)
   * - `#` for sub-sources (blocks)
   * @returns {string} The unique key
   */
  get_key() {
    return create_uid3(this.data);
  }
  /**
   * Updates the item data and returns true if changed.
   * @param {Object} data
   * @returns {boolean} True if data changed.
   */
  update_data(data) {
    const sanitized_data = this.sanitize_data(data);
    const current_data = { ...this.data };
    deep_merge3(current_data, sanitized_data);
    const changed = !deep_equal3(this.data, current_data);
    if (!changed) return false;
    this.data = current_data;
    return true;
  }
  /**
   * Sanitizes data for saving. Ensures no circular references.
   * @param {*} data
   * @returns {*} Sanitized data.
   */
  sanitize_data(data) {
    if (data instanceof _CollectionItem) return data.ref;
    if (Array.isArray(data)) return data.map((val) => this.sanitize_data(val));
    if (typeof data === "object" && data !== null) {
      return Object.keys(data).reduce((acc, key) => {
        acc[key] = this.sanitize_data(data[key]);
        return acc;
      }, {});
    }
    return data;
  }
  /**
   * Initializes the item. Override as needed.
   * @param {Object} [input_data] - Additional data that might be provided on creation.
   */
  init(input_data) {
  }
  /**
   * Queues this item for saving.
   */
  queue_save() {
    this._queue_save = true;
  }
  /**
   * Saves this item using its data adapter.
   * @returns {Promise<void>}
   */
  async save() {
    try {
      await this.data_adapter.save_item(this);
      this.init();
    } catch (err) {
      this._queue_save = true;
      console.error(err, err.stack);
    }
  }
  /**
   * Queues this item for loading.
   */
  queue_load() {
    this._queue_load = true;
  }
  /**
   * Loads this item using its data adapter.
   * @returns {Promise<void>}
   */
  async load() {
    try {
      await this.data_adapter.load_item(this);
      this.init();
    } catch (err) {
      this._load_error = err;
      this.on_load_error(err);
    }
  }
  /**
   * Handles load errors by re-queuing for load.
   * Override if needed.
   * @param {Error} err
   */
  on_load_error(err) {
    this.queue_load();
  }
  /**
   * Validates the item before saving. Checks for presence and validity of key.
   * @returns {boolean}
   */
  validate_save() {
    if (!this.key) return false;
    if (this.key.trim() === "") return false;
    if (this.key === "undefined") return false;
    return true;
  }
  /**
   * Marks this item as deleted. This does not immediately remove it from memory,
   * but queues a save that will result in the item being removed from persistent storage.
   */
  delete() {
    this.deleted = true;
    this.queue_save();
  }
  /**
   * Filters items in the collection based on provided options.
   * functional filter (returns true or false) for filtering items in collection; called by collection class
   * @param {Object} filter_opts - Filtering options.
   * @param {string} [filter_opts.exclude_key] - A single key to exclude.
   * @param {string[]} [filter_opts.exclude_keys] - An array of keys to exclude. If exclude_key is provided, it's added to this array.
   * @param {string} [filter_opts.exclude_key_starts_with] - Exclude keys starting with this string.
   * @param {string[]} [filter_opts.exclude_key_starts_with_any] - Exclude keys starting with any of these strings.
   * @param {string} [filter_opts.exclude_key_includes] - Exclude keys that include this string.
   * @param {string[]} [filter_opts.exclude_key_includes_any] - Exclude keys that include any of these strings.
   * @param {string} [filter_opts.exclude_key_ends_with] - Exclude keys ending with this string.
   * @param {string[]} [filter_opts.exclude_key_ends_with_any] - Exclude keys ending with any of these strings.
   * @param {string} [filter_opts.key_ends_with] - Include only keys ending with this string.
   * @param {string} [filter_opts.key_starts_with] - Include only keys starting with this string.
   * @param {string[]} [filter_opts.key_starts_with_any] - Include only keys starting with any of these strings.
   * @param {string} [filter_opts.key_includes] - Include only keys that include this string.
   * @returns {boolean} True if the item passes the filter, false otherwise.
   */
  filter(filter_opts = {}) {
    const {
      exclude_key,
      exclude_keys = exclude_key ? [exclude_key] : [],
      exclude_key_starts_with,
      exclude_key_starts_with_any,
      exclude_key_includes,
      exclude_key_includes_any,
      exclude_key_ends_with,
      exclude_key_ends_with_any,
      key_ends_with,
      key_starts_with,
      key_starts_with_any,
      key_includes,
      key_includes_any
    } = filter_opts;
    if (exclude_keys?.includes(this.key)) return false;
    if (exclude_key_starts_with && this.key.startsWith(exclude_key_starts_with)) return false;
    if (exclude_key_starts_with_any && exclude_key_starts_with_any.some((prefix) => this.key.startsWith(prefix))) return false;
    if (exclude_key_includes && this.key.includes(exclude_key_includes)) return false;
    if (exclude_key_includes_any && exclude_key_includes_any.some((include) => this.key.includes(include))) return false;
    if (exclude_key_ends_with && this.key.endsWith(exclude_key_ends_with)) return false;
    if (exclude_key_ends_with_any && exclude_key_ends_with_any.some((suffix) => this.key.endsWith(suffix))) return false;
    if (key_ends_with && !this.key.endsWith(key_ends_with)) return false;
    if (key_starts_with && !this.key.startsWith(key_starts_with)) return false;
    if (key_starts_with_any && !key_starts_with_any.some((prefix) => this.key.startsWith(prefix))) return false;
    if (key_includes && !this.key.includes(key_includes)) return false;
    if (key_includes_any && !key_includes_any.some((include) => this.key.includes(include))) return false;
    return true;
  }
  /**
   * Compares this item with another item using a custom comparison function.
   * @param {Item} to_item - The item to compare with.
   * @param {Object} [params={}] - Additional parameters for the comparison.
   * @returns {Object} An object containing the original item and the comparison results.
   */
  compare(to_item, params = {}) {
    return compare3(this, to_item, params);
  }
  /**
   * Parses item data for additional processing. Override as needed.
   * @deprecated is this used anywhere?
   */
  parse() {
  }
  get actions() {
    if (!this._actions) {
      this._actions = Object.entries(this.env.opts.items[this.item_type_key].actions || {}).reduce((acc, [k, v]) => {
        acc[k] = v.bind(this);
        return acc;
      }, {});
    }
    return this._actions;
  }
  /**
   * Derives the collection key from the class name.
   * @returns {string}
   */
  static get collection_key() {
    let name = this.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return collection_instance_name_from3(name);
  }
  /**
   * @returns {string} The collection key for this item.
   */
  get collection_key() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return collection_instance_name_from3(name);
  }
  /**
   * Retrieves the parent collection from the environment.
   * @returns {Collection}
   */
  get collection() {
    return this.env[this.collection_key];
  }
  /**
   * @returns {string} The item's key.
   */
  get key() {
    return this.data?.key || this.get_key();
  }
  get item_type_key() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return camel_case_to_snake_case3(name);
  }
  /**
   * A simple reference object for this item.
   * @returns {{collection_key: string, key: string}}
   */
  get ref() {
    return { collection_key: this.collection_key, key: this.key };
  }
  /**
   * Emits an event with item metadata.
   *
   * @param {string} event_key
   * @param {Object} [payload={}]
   * @returns {void}
   */
  emit_event(event_key, payload = {}) {
    this.env.events?.emit(event_key, { collection_key: this.collection_key, item_key: this.key, ...payload });
  }
  /**
   * @returns {Object} The data adapter for this item's collection.
   */
  get data_adapter() {
    return this.collection.data_adapter;
  }
  /**
   * @returns {Object} The filesystem adapter.
   */
  get data_fs() {
    return this.collection.data_fs;
  }
  /**
   * Access to collection-level settings.
   * @returns {Object}
   */
  get settings() {
    if (!this.env.settings[this.collection_key]) this.env.settings[this.collection_key] = {};
    return this.env.settings[this.collection_key];
  }
  set settings(settings) {
    this.env.settings[this.collection_key] = settings;
    this.env.smart_settings.save();
  }
  /**
   * @deprecated use env.smart_view
   * @returns {Object}
   */
  get smart_view() {
    if (!this._smart_view) this._smart_view = this.env.init_module("smart_view");
    return this._smart_view;
  }
  /**
   * Retrieves the display name of the collection item.
   * @readonly
   * @deprecated Use `get_item_display_name(key, show_full_path)` instead (keep UI logic out of collections).
   * @returns {string} The display name.
   */
  get name() {
    return get_item_display_name3(
      this.key,
      this.env.settings.smart_view_filter?.show_full_path
    );
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-collections/collection.js
var AsyncFunction3 = Object.getPrototypeOf(async function() {
}).constructor;
var Collection3 = class {
  /**
   * Constructs a new Collection instance.
   *
   * @param {Object} env - The environment context containing configurations and adapters.
   * @param {Object} [opts={}] - Optional configuration.
   * @param {string} [opts.collection_key] - Custom key to override default collection name.
   * @param {string} [opts.data_dir] - Custom data directory path.
   * @param {boolean} [opts.prevent_load_on_init] - Whether to prevent loading items on initialization.
   */
  constructor(env, opts = {}) {
    env.create_env_getter(this);
    this.opts = opts;
    if (opts.collection_key) this.collection_key = opts.collection_key;
    this.env[this.collection_key] = this;
    this.config = this.env.config;
    this.items = {};
    this.loaded = null;
    this._loading = false;
    this.load_time_ms = null;
    this.settings_container = null;
  }
  /**
   * Initializes a new collection in the environment. Override in subclass if needed.
   *
   * @param {Object} env
   * @param {Object} [opts={}]
   * @returns {Promise<void>}
   */
  static async init(env, opts = {}) {
    env[this.collection_key] = new this(env, opts);
    await env[this.collection_key].init();
    env.collections[this.collection_key] = "init";
  }
  /**
   * The unique collection key derived from the class name.
   * @returns {string}
   */
  static get collection_key() {
    let name = this.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    return name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
  }
  /**
   * Instance-level init. Override in subclasses if necessary.
   * @returns {Promise<void>}
   */
  async init() {
  }
  /**
   * Creates or updates an item in the collection.
   * - If `data` includes a key that matches an existing item, that item is updated.
   * - Otherwise, a new item is created.
   * After updating or creating, the item is validated. If validation fails, the item is logged and returned without being saved.
   * If validation succeeds for a new item, it is added to the collection and marked for saving.
   *
   * If the item’s `init()` method is async, a promise is returned that resolves once init completes.
   * 
   * NOTE: wrapping in try/catch seems to fail to catch errors thrown in async init functions when awaiting create_or_update
   *
   * @param {Object} [data={}] - Data for creating/updating an item.
   * @returns {Promise<Item>|Item} The created or updated item. May return a promise if `init()` is async.
   */
  create_or_update(data = {}) {
    const existing_item = this.find_by(data);
    const item = existing_item ? existing_item : new this.item_type(this.env);
    item._queue_save = !existing_item;
    const data_changed = item.update_data(data);
    if (!existing_item && !item.validate_save()) {
      return item;
    }
    if (!existing_item) {
      this.set(item);
    }
    if (existing_item && !data_changed) return existing_item;
    if (item.init instanceof AsyncFunction3) {
      return new Promise((resolve) => {
        item.init(data).then(() => resolve(item));
      });
    }
    item.init(data);
    return item;
  }
  /**
   * Finds an item by partial data match (first checks key). If `data.key` provided,
   * returns the item with that key; otherwise attempts a match by merging data.
   *
   * @param {Object} data - Data to match against.
   * @returns {Item|null}
   */
  find_by(data) {
    if (data.key) return this.get(data.key);
    const temp = new this.item_type(this.env);
    const temp_data = JSON.parse(JSON.stringify(data, temp.sanitize_data(data)));
    deep_merge3(temp.data, temp_data);
    return temp.key ? this.get(temp.key) : null;
  }
  /**
   * Filters items based on provided filter options or a custom function.
   *
   * @param {Object|Function} [filter_opts={}] - Filter options or a predicate function.
   * @returns {Item[]} Array of filtered items.
   */
  filter(filter_opts = {}) {
    if (typeof filter_opts === "function") {
      return Object.values(this.items).filter(filter_opts);
    }
    const prepared_filter_opts = this.prepare_filter(filter_opts);
    const results = [];
    const { first_n } = prepared_filter_opts;
    for (const item of Object.values(this.items)) {
      if (first_n && results.length >= first_n) break;
      if (item.filter(prepared_filter_opts)) results.push(item);
    }
    return results;
  }
  /**
   * Alias for `filter()`
   * @param {Object|Function} filter_opts
   * @returns {Item[]}
   */
  list(filter_opts) {
    return this.filter(filter_opts);
  }
  /**
   * Prepares filter options. Can be overridden by subclasses to normalize filter options.
   *
   * @param {Object} filter_opts
   * @returns {Object} Prepared filter options.
   */
  prepare_filter(filter_opts) {
    return filter_opts;
  }
  /**
   * Retrieves an item by key.
   * @param {string} key
   * @returns {Item|undefined}
   */
  get(key) {
    return this.items[key];
  }
  /**
   * Retrieves multiple items by an array of keys.
   * @param {string[]} keys
   * @returns {Item[]}
   */
  get_many(keys = []) {
    if (!Array.isArray(keys)) {
      console.error("get_many called with non-array keys:", keys);
      return [];
    }
    return keys.map((key) => this.get(key)).filter(Boolean);
  }
  /**
   * Retrieves a random item from the collection, optionally filtered by options.
   * @param {Object} [opts]
   * @returns {Item|undefined}
   */
  get_rand(opts = null) {
    if (opts) {
      const filtered = this.filter(opts);
      return filtered[Math.floor(Math.random() * filtered.length)];
    }
    const keys = this.keys;
    return this.items[keys[Math.floor(Math.random() * keys.length)]];
  }
  /**
   * Adds or updates an item in the collection.
   * @param {Item} item
   */
  set(item) {
    if (!item.key) throw new Error("Item must have a key property");
    this.items[item.key] = item;
  }
  /**
   * Updates multiple items by their keys.
   * @param {string[]} keys
   * @param {Object} data
   */
  update_many(keys = [], data = {}) {
    this.get_many(keys).forEach((item) => item.update_data(data));
  }
  /**
   * Clears all items from the collection.
   */
  clear() {
    this.items = {};
  }
  /**
   * @returns {string} The collection key, can be overridden by opts.collection_key
   */
  get collection_key() {
    return this._collection_key ? this._collection_key : this.constructor.collection_key;
  }
  set collection_key(key) {
    this._collection_key = key;
  }
  /**
   * Lazily initializes and returns the data adapter instance for this collection.
   * @returns {Object} The data adapter instance.
   */
  get data_adapter() {
    if (!this._data_adapter) {
      const AdapterClass = this.get_adapter_class("data");
      this._data_adapter = new AdapterClass(this);
    }
    return this._data_adapter;
  }
  get_adapter_class(type) {
    const config = this.env.opts.collections?.[this.collection_key];
    const adapter_key = type + "_adapter";
    const adapter_module = config?.[adapter_key] ?? this.env.opts.collections?.smart_collections?.[adapter_key];
    if (typeof adapter_module === "function") return adapter_module;
    if (typeof adapter_module?.collection === "function") return adapter_module.collection;
    throw new Error(`No '${type}' adapter class found for ${this.collection_key} or smart_collections`);
  }
  /**
   * Data directory strategy for this collection. Defaults to 'multi'.
   * @returns {string}
   */
  get data_dir() {
    return this.collection_key;
  }
  /**
   * File system adapter from the environment.
   * @returns {Object}
   */
  get data_fs() {
    return this.env.data_fs;
  }
  /**
   * Derives the corresponding item class name based on this collection's class name.
   * @returns {string}
   */
  get item_class_name() {
    let name = this.constructor.name;
    if (name.match(/\d$/)) name = name.slice(0, -1);
    if (name.endsWith("ies")) return name.slice(0, -3) + "y";
    else if (name.endsWith("s")) return name.slice(0, -1);
    return name + "Item";
  }
  /**
   * Derives a readable item name from the item class name.
   * @returns {string}
   */
  get item_name() {
    return this.item_class_name.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
  }
  /**
   * Retrieves the item type (constructor) from the environment.
   * @returns {Function} Item constructor.
   */
  get item_type() {
    if (this.opts.item_type) return this.opts.item_type;
    return this.env.item_types[this.item_class_name];
  }
  /**
   * Returns an array of all keys in the collection.
   * @returns {string[]}
   */
  get keys() {
    return Object.keys(this.items);
  }
  /**
   * @deprecated use data_adapter instead (2024-09-14)
   */
  get adapter() {
    return this.data_adapter;
  }
  /**
   * @method process_save_queue
   * @description 
   * Saves items flagged for saving (_queue_save) back to AJSON or SQLite. This ensures persistent storage 
   * of any updates made since last load/import. This method also writes changes to disk (AJSON files or DB).
   */
  async process_save_queue(opts = {}) {
    if (opts.force) {
      Object.values(this.items).forEach((item) => item._queue_save = true);
    }
    await this.data_adapter.process_save_queue(opts);
  }
  /**
   * @alias process_save_queue
   * @returns {Promise<void>}
   */
  async save(opts = {}) {
    await this.process_save_queue(opts);
  }
  /**
   * @method process_load_queue
   * @description 
   * Loads items that have been flagged for loading (_queue_load). This may involve 
   * reading from AJSON/SQLite or re-importing from markdown if needed. 
   * Called once initial environment is ready and collections are known.
   */
  async process_load_queue() {
    await this.data_adapter.process_load_queue();
  }
  /**
   * Retrieves processed settings configuration.
   * @returns {Object}
   */
  get settings_config() {
    return this.process_settings_config({});
  }
  /**
   * Processes given settings config, adding prefixes and handling conditionals.
   *
   * @private
   * @param {Object} _settings_config
   * @param {string} [prefix='']
   * @returns {Object}
   */
  process_settings_config(_settings_config, prefix = "") {
    const add_prefix = (key) => prefix && !key.includes(`${prefix}.`) ? `${prefix}.${key}` : key;
    return Object.entries(_settings_config).reduce((acc, [key, val]) => {
      let new_val = { ...val };
      if (new_val.conditional) {
        if (!new_val.conditional(this)) return acc;
        delete new_val.conditional;
      }
      if (new_val.callback) new_val.callback = add_prefix(new_val.callback);
      if (new_val.btn_callback) new_val.btn_callback = add_prefix(new_val.btn_callback);
      if (new_val.options_callback) new_val.options_callback = add_prefix(new_val.options_callback);
      const new_key = add_prefix(this.process_setting_key(key));
      acc[new_key] = new_val;
      return acc;
    }, {});
  }
  /**
   * Processes an individual setting key. Override if needed.
   * @param {string} key
   * @returns {string}
   */
  process_setting_key(key) {
    return key;
  }
  /**
   * Default settings for this collection. Override in subclasses as needed.
   * @returns {Object}
   */
  get default_settings() {
    return {};
  }
  /**
   * Current settings for the collection.
   * Initializes with default settings if none exist.
   * @returns {Object}
   */
  get settings() {
    if (!this.env.settings[this.collection_key]) {
      this.env.settings[this.collection_key] = this.default_settings;
    }
    return this.env.settings[this.collection_key];
  }
  /**
   * @deprecated use env.smart_view instead
   * @returns {Object} smart_view instance
   */
  get smart_view() {
    if (!this._smart_view) this._smart_view = this.env.init_module("smart_view");
    return this._smart_view;
  }
  /**
   * Renders the settings for the collection into a given container.
   * @deprecated use env.render_component('collection_settings', this) instead (2025-05-25: decouple UI from collections)
   * @param {HTMLElement} [container=this.settings_container]
   * @param {Object} opts
   * @returns {Promise<HTMLElement>}
   */
  async render_settings(container = this.settings_container, opts = {}) {
    return await this.render_collection_settings(container, opts);
  }
  /**
   * Helper function to render collection settings.
   * @deprecated use env.render_component('collection_settings', this) instead (2025-05-25: decouple UI from collections)
   * @param {HTMLElement} [container=this.settings_container]
   * @param {Object} opts
   * @returns {Promise<HTMLElement>}
   */
  async render_collection_settings(container = this.settings_container, opts = {}) {
    if (container && (!this.settings_container || this.settings_container !== container)) {
      this.settings_container = container;
    } else if (!container) {
      container = this.env.smart_view.create_doc_fragment("<div></div>");
    }
    this.env.smart_view.safe_inner_html(container, `<div class="sc-loading">Loading ${this.collection_key} settings...</div>`);
    const frag = await this.env.render_component("settings", this, opts);
    this.env.smart_view.empty(container);
    container.appendChild(frag);
    return container;
  }
  /**
   * Unloads collection data from memory.
   */
  unload() {
    this.clear();
    this.unloaded = true;
    this.env.collections[this.collection_key] = null;
  }
  /**
   * Displays a process notice if the operation exceeds one second.
   *
   * @param {string} process - Identifier for the ongoing process.
   * @param {Object} [opts={}] - Additional options passed to the notice.
   */
  show_process_notice(process2, opts = {}) {
    if (!this.debounce_process_notice) this.debounce_process_notice = {};
    this.debounce_process_notice[process2] = setTimeout(() => {
      this.debounce_process_notice[process2] = null;
      this.env.notices?.show(process2, { collection_key: this.collection_key, ...opts });
    }, 1e3);
  }
  /**
   * Clears any pending process notice timers and removes active notices.
   *
   * @param {string} process - Identifier for the process notice to clear.
   */
  clear_process_notice(process2) {
    if (this.debounce_process_notice?.[process2]) {
      clearTimeout(this.debounce_process_notice[process2]);
      this.debounce_process_notice[process2] = null;
    } else {
      this.env.notices?.remove(process2);
    }
  }
  /**
   * Emits an event with collection metadata.
   *
   * @param {string} event_key
   * @param {Object} [payload={}]
   * @returns {void}
   */
  emit_event(event_key, payload = {}) {
    this.env.events?.emit(event_key, { collection_key: this.collection_key, ...payload });
  }
  /**
   * Lazily binds action functions to the collection instance.
   *
   * @returns {Object} Bound action functions keyed by name.
   */
  get actions() {
    if (!this._actions) {
      this._actions = Object.entries(this.opts.actions || {}).reduce((acc, [k, v]) => {
        acc[k] = v.bind(this);
        return acc;
      }, {});
    }
    return this._actions;
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-actions/smart_action.js
var SmartAction = class extends CollectionItem3 {
  static collection_key = "smart_actions";
  collection_key = "smart_actions";
  async init() {
    if (!this.action_adapter) {
      delete this.collection.items[this.key];
      return;
    }
    await this.action_adapter.load();
  }
  async run_action(params = {}) {
    params = await this.pre_process(params);
    let result = await this.action_adapter.run(params);
    result = await this.post_process(params, result);
    return result;
  }
  async pre_process(params) {
    for (const pre_process of this.action_pre_processes) {
      params = await pre_process.call(this, params);
    }
    return params;
  }
  async post_process(params, result) {
    for (const post_process40 of this.action_post_processes) {
      result = await post_process40.call(this, params, result);
    }
    return result;
  }
  get action_adapters() {
    return this.collection.opts.action_adapters;
  }
  // Decide which adapter based on data.source_type:
  get action_adapter() {
    if (!this._action_adapter) {
      const adapter = this.action_adapters[this.source_type] || this.action_adapters.default;
      this._action_adapter = new adapter(this);
    }
    return this._action_adapter;
  }
  get action_post_processes() {
    return Object.values(this.module?.post_processes || {});
  }
  get action_pre_processes() {
    return Object.values(this.module?.pre_processes || {});
  }
  get active() {
    return this.data.active !== false;
  }
  set active(val) {
    this.data.active = !!val;
  }
  get endpoint() {
    return Object.keys(this.module.openapi?.paths || {})[0] || `/${this.key}`;
  }
  get module() {
    return this.action_adapter.module;
  }
  set module(module2) {
    this.action_adapter.module = module2;
  }
  get openapi() {
    return this.module.openapi;
  }
  get settings() {
    if (!this.env.settings.smart_actions) this.env.settings.smart_actions = {};
    if (!this.env.settings.smart_actions[this.key]) this.env.settings.smart_actions[this.key] = {};
    return this.env.settings.smart_actions[this.key];
  }
  get source_type() {
    return this.data.source_type;
  }
  /**
   * OpenAI tool definition for this action.
   * Delegates to the action adapter.
   * @returns {object|null}
   */
  get as_tool() {
    return this.action_adapter.as_tool;
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-collections/adapters/_adapter.js
var CollectionDataAdapter3 = class {
  /**
   * @constructor
   * @param {Object} collection - The collection instance that this adapter manages.
   */
  constructor(collection) {
    this.collection = collection;
    this.env = collection.env;
  }
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = ItemDataAdapter3;
  /**
   * Optional factory method to create item adapters.
   * If `this.item_adapter_class` is not null, it uses that; otherwise can be overridden by subclasses.
   * @param {Object} item - The item to create an adapter for.
   * @returns {ItemDataAdapter}
   */
  create_item_adapter(item) {
    if (!this.ItemDataAdapter) {
      throw new Error("No item_adapter_class specified and create_item_adapter not overridden.");
    }
    return new this.ItemDataAdapter(item);
  }
  /**
   * Load a single item by its key using an `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to load.
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Save a single item by its key using its associated `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to save.
   * @returns {Promise<void>} Resolves when the item is saved.
   */
  async save_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Delete a single item by its key. This may involve updating or removing its file,
   * as handled by the `ItemDataAdapter`.
   * @async
   * @param {string} key - The key of the item to delete.
   * @returns {Promise<void>} Resolves when the item is deleted.
   */
  async delete_item(key) {
    throw new Error("Not implemented");
  }
  /**
   * Process any queued load operations. Typically orchestrates calling `load_item()` 
   * on items that have been flagged for loading.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    throw new Error("Not implemented");
  }
  /**
   * Process any queued save operations. Typically orchestrates calling `save_item()` 
   * on items that have been flagged for saving.
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    throw new Error("Not implemented");
  }
  /**
   * Load the item's data from storage if it has been updated externally.
   * @async
   * @param {string} key - The key of the item to load.
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_item_if_updated(item) {
    const adapter = this.create_item_adapter(item);
    await adapter.load_if_updated();
  }
};
var ItemDataAdapter3 = class {
  /**
   * @constructor
   * @param {Object} item - The collection item instance that this adapter manages.
   */
  constructor(item) {
    this.item = item;
  }
  /**
   * Load the item's data from storage. May involve reading a file and parsing 
   * its contents, then updating `item.data`.
   * @async
   * @returns {Promise<void>} Resolves when the item is fully loaded.
   */
  async load() {
    throw new Error("Not implemented");
  }
  /**
   * Save the item's data to storage. May involve writing to a file or appending 
   * lines in an append-only format.
   * @async
   * @param {string|null} [ajson=null] - An optional serialized representation of the item’s data.
   *                                     If not provided, the adapter should derive it from the item.
   * @returns {Promise<void>} Resolves when the item is saved.
   */
  async save(ajson = null) {
    throw new Error("Not implemented");
  }
  /**
   * Delete the item's data from storage. May involve removing a file or writing 
   * a `null` entry in an append-only file to signify deletion.
   * @async
   * @returns {Promise<void>} Resolves when the item’s data is deleted.
   */
  async delete() {
    throw new Error("Not implemented");
  }
  /**
   * Returns the file path or unique identifier used by this adapter to locate and store 
   * the item's data. This may be a file name derived from the item's key.
   * @returns {string} The path or identifier for the item's data.
   */
  get data_path() {
    throw new Error("Not implemented");
  }
  /**
   * @returns {CollectionDataAdapter} The collection data adapter that this item data adapter belongs to.
   */
  get collection_adapter() {
    return this.item.collection.data_adapter;
  }
  get env() {
    return this.item.env;
  }
  /**
   * Load the item's data from storage if it has been updated externally.
   * @async
   * @returns {Promise<void>} Resolves when the item is loaded.
   */
  async load_if_updated() {
    throw new Error("Not implemented");
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-collections/adapters/_file.js
var FileCollectionDataAdapter3 = class extends CollectionDataAdapter3 {
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = FileItemDataAdapter3;
  /**
   * @returns {Object} Filesystem interface derived from environment or collection settings.
   */
  get fs() {
    return this.collection.data_fs || this.collection.env.data_fs;
  }
};
var FileItemDataAdapter3 = class extends ItemDataAdapter3 {
  /**
   * @returns {Object} Filesystem interface derived from environment or collection settings.
   */
  get fs() {
    return this.item.collection.data_fs || this.item.collection.env.data_fs;
  }
  get data_path() {
    throw new Error("Not implemented");
  }
  async load_if_updated() {
    const data_path = this.data_path;
    if (await this.fs.exists(data_path)) {
      const loaded_at = this.item.loaded_at || 0;
      const data_file_stat = await this.fs.stat(data_path);
      if (data_file_stat.mtime > loaded_at + 1 * 60 * 1e3) {
        console.log(`Smart Collections: Re-loading item ${this.item.key} because it has been updated on disk`);
        await this.load();
      }
    }
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-collections/adapters/ajson_multi_file.js
var class_to_collection_key4 = {
  "SmartSource": "smart_sources",
  "SmartNote": "smart_sources",
  // DEPRECATED
  "SmartBlock": "smart_blocks",
  "SmartDirectory": "smart_directories"
};
var AjsonMultiFileCollectionDataAdapter3 = class extends FileCollectionDataAdapter3 {
  /**
   * The class to use for item adapters.
   * @type {typeof ItemDataAdapter}
   */
  ItemDataAdapter = AjsonMultiFileItemDataAdapter3;
  /**
   * Load a single item by its key.
   * @async
   * @param {string} key
   * @returns {Promise<void>}
   */
  async load_item(key) {
    const item = this.collection.get(key);
    if (!item) return;
    const adapter = this.create_item_adapter(item);
    await adapter.load();
  }
  /**
   * Save a single item by its key.
   * @async
   * @param {string} key
   * @returns {Promise<void>}
   */
  async save_item(key) {
    const item = this.collection.get(key);
    if (!item) return;
    const adapter = this.create_item_adapter(item);
    await adapter.save();
  }
  /**
   * Process any queued load operations.
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    this.collection.emit_event("collection:load_started");
    this.collection.show_process_notice("loading_collection");
    if (!await this.fs.exists(this.collection.data_dir)) {
      await this.fs.mkdir(this.collection.data_dir);
    }
    const load_queue = Object.values(this.collection.items).filter((item) => item._queue_load);
    if (!load_queue.length) {
      this.collection.clear_process_notice("loading_collection");
      return;
    }
    console.log(`Loading ${this.collection.collection_key}: ${load_queue.length} items`);
    const batch_size = 100;
    for (let i = 0; i < load_queue.length; i += batch_size) {
      const batch = load_queue.slice(i, i + batch_size);
      await Promise.all(batch.map((item) => {
        const adapter = this.create_item_adapter(item);
        return adapter.load().catch((err) => {
          console.warn(`Error loading item ${item.key}`, err);
          item.queue_load();
        });
      }));
    }
    this.collection.loaded = load_queue.length;
    this.collection.clear_process_notice("loading_collection");
    this.collection.emit_event("collection:load_completed");
  }
  /**
   * Process any queued save operations.
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    this.collection.emit_event("collection:save_started");
    this.collection.show_process_notice("saving_collection");
    const save_queue = Object.values(this.collection.items).filter((item) => item._queue_save);
    console.log(`Saving ${this.collection.collection_key}: ${save_queue.length} items`);
    const time_start = Date.now();
    const batch_size = 50;
    for (let i = 0; i < save_queue.length; i += batch_size) {
      const batch = save_queue.slice(i, i + batch_size);
      await Promise.all(batch.map((item) => {
        const adapter = this.create_item_adapter(item);
        return adapter.save().catch((err) => {
          console.warn(`Error saving item ${item.key}`, err);
          item.queue_save();
        });
      }));
    }
    const deleted_items = Object.values(this.collection.items).filter((item) => item.deleted);
    if (deleted_items.length) {
      deleted_items.forEach((item) => {
        delete this.collection.items[item.key];
      });
    }
    console.log(`Saved ${this.collection.collection_key} in ${Date.now() - time_start}ms`);
    this.collection.clear_process_notice("saving_collection");
    this.collection.emit_event("collection:save_completed");
  }
  get_item_data_path(key) {
    return [
      this.collection.data_dir || "multi",
      this.fs?.sep || "/",
      this.get_data_file_name(key) + ".ajson"
    ].join("");
  }
  /**
   * Transforms the item key into a safe filename.
   * Replaces spaces, slashes, and dots with underscores.
   * @returns {string} safe file name
   */
  get_data_file_name(key) {
    return key.split("#")[0].replace(/[\s\/\.]/g, "_").replace(".md", "");
  }
  /**
   * Build a single AJSON line for the given item and data.
   * @param {Object} item 
   * @returns {string}
   */
  get_item_ajson(item) {
    const collection_key = item.collection_key;
    const key = item.key;
    const data_value = item.deleted ? "null" : JSON.stringify(item.data);
    return `${JSON.stringify(`${collection_key}:${key}`)}: ${data_value},`;
  }
};
var AjsonMultiFileItemDataAdapter3 = class extends FileItemDataAdapter3 {
  /**
   * Derives the `.ajson` file path from the collection's data_dir and item key.
   * @returns {string}
   */
  get data_path() {
    return this.collection_adapter.get_item_data_path(this.item.key);
  }
  /**
   * Load the item from its `.ajson` file.
   * @async
   * @returns {Promise<void>}
   */
  async load() {
    try {
      const raw_data = await this.fs.adapter.read(this.data_path, "utf-8", { no_cache: true });
      if (!raw_data) {
        this.item.queue_import();
        return;
      }
      const { rewrite, file_data } = this._parse(raw_data);
      if (rewrite) {
        if (file_data.length) await this.fs.write(this.data_path, file_data);
        else await this.fs.remove(this.data_path);
      }
      const last_import_mtime = this.item.data.last_import?.at || 0;
      if (last_import_mtime && this.item.init_file_mtime > last_import_mtime) {
        this.item.queue_import();
      }
    } catch (e) {
      this.item.queue_import();
    }
  }
  /**
   * Parse the entire AJSON content as a JSON object, handle legacy keys, and extract final state.
   * @private
   * @param {string} ajson 
   * @returns {boolean}
   */
  _parse(ajson) {
    try {
      let rewrite = false;
      if (!ajson.length) return false;
      ajson = ajson.trim();
      const original_line_count = ajson.split("\n").length;
      const json_str = "{" + ajson.slice(0, -1) + "}";
      const data = JSON.parse(json_str);
      const entries = Object.entries(data);
      for (let i = 0; i < entries.length; i++) {
        const [ajson_key, value] = entries[i];
        if (!value) {
          delete data[ajson_key];
          rewrite = true;
          continue;
        }
        const { collection_key, item_key, changed } = this._parse_ajson_key(ajson_key);
        if (changed) {
          rewrite = true;
          data[collection_key + ":" + item_key] = value;
          delete data[ajson_key];
        }
        const collection = this.env[collection_key];
        if (!collection) continue;
        const existing_item = collection.get(item_key);
        if (!value.key) value.key = item_key;
        if (existing_item) {
          existing_item.data = value;
          existing_item._queue_load = false;
          existing_item.loaded_at = Date.now();
        } else {
          const ItemClass = collection.item_type;
          const new_item = new ItemClass(this.env, value);
          new_item._queue_load = false;
          new_item.loaded_at = Date.now();
          collection.set(new_item);
        }
      }
      if (rewrite || original_line_count > entries.length) {
        rewrite = true;
      }
      return {
        rewrite,
        file_data: rewrite ? Object.entries(data).map(([key, value]) => `${JSON.stringify(key)}: ${JSON.stringify(value)},`).join("\n") : null
      };
    } catch (e) {
      if (ajson.split("\n").some((line) => !line.endsWith(","))) {
        console.warn("fixing trailing comma error");
        ajson = ajson.split("\n").map((line) => line.endsWith(",") ? line : line + ",").join("\n");
        return this._parse(ajson);
      }
      console.warn("Error parsing JSON:", e);
      return { rewrite: true, file_data: null };
    }
  }
  _parse_ajson_key(ajson_key) {
    let changed;
    let [collection_key, ...item_key] = ajson_key.split(":");
    if (class_to_collection_key4[collection_key]) {
      collection_key = class_to_collection_key4[collection_key];
      changed = true;
    }
    return {
      collection_key,
      item_key: item_key.join(":"),
      changed
    };
  }
  /**
   * Save the current state of the item by appending a new line to its `.ajson` file.
   * @async
   * @returns {Promise<void>}
   */
  async save(retries = 0) {
    try {
      const ajson_line = this.get_item_ajson();
      await this.fs.append(this.data_path, "\n" + ajson_line);
      this.item._queue_save = false;
    } catch (e) {
      if (e.code === "ENOENT" && retries < 1) {
        const dir = this.collection_adapter.collection.data_dir;
        if (!await this.fs.exists(dir)) {
          await this.fs.mkdir(dir);
        }
        return await this.save(retries + 1);
      }
      console.warn("Error saving item", this.data_path, this.item.key, e);
    }
  }
  /**
   * Build a single AJSON line for the given item and data.
   * @param {Object} item 
   * @returns {string}
   */
  get_item_ajson() {
    return this.collection_adapter.get_item_ajson(this.item);
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-collections/utils/ajson_merge.js
function ajson_merge2(existing, new_obj) {
  if (new_obj === null) return null;
  if (new_obj === void 0) return existing;
  if (typeof new_obj !== "object") return new_obj;
  if (typeof existing !== "object" || existing === null) existing = {};
  const keys = Object.keys(new_obj);
  const length = keys.length;
  for (let i = 0; i < length; i++) {
    const key = keys[i];
    const new_val = new_obj[key];
    const existing_val = existing[key];
    if (Array.isArray(new_val)) {
      existing[key] = new_val.slice();
    } else if (is_object2(new_val)) {
      existing[key] = ajson_merge2(is_object2(existing_val) ? existing_val : {}, new_val);
    } else if (new_val !== void 0) {
      existing[key] = new_val;
    }
  }
  return existing;
}
function is_object2(obj) {
  return obj !== null && typeof obj === "object" && !Array.isArray(obj);
}

// node_modules/smart-chat-obsidian/node_modules/smart-collections/adapters/ajson_single_file.js
var class_to_collection_key5 = {
  "SmartSource": "smart_sources",
  "SmartNote": "smart_sources",
  // DEPRECATED
  "SmartBlock": "smart_blocks",
  "SmartDirectory": "smart_directories"
};
function _parse_ajson_key2(ajson_key) {
  let changed = false;
  let [collection_key, ...item_key] = ajson_key.split(":");
  if (class_to_collection_key5[collection_key]) {
    collection_key = class_to_collection_key5[collection_key];
    changed = true;
  }
  return {
    collection_key,
    item_key: item_key.join(":"),
    changed
  };
}
var AjsonSingleFileCollectionDataAdapter2 = class extends AjsonMultiFileCollectionDataAdapter3 {
  /**
   * Returns the single shared `.ajson` file path for this collection.
   * @param {string} [key] - (unused) Item key, ignored in single-file mode.
   * @returns {string} The single .ajson file path for the entire collection.
   */
  get_item_data_path(key) {
    const file_name = (this.collection?.collection_key || "collection") + ".ajson";
    const sep = this.fs?.sep || "/";
    const dir = this.collection.data_dir || "data";
    return [dir, file_name].join(sep);
  }
  /**
   * Override process_load_queue to parse the entire single-file .ajson once,
   * distributing final states to items.
   *
   * @async
   * @returns {Promise<void>}
   */
  async process_load_queue() {
    this.collection.emit_event("collection:load_started");
    this.collection.show_process_notice("loading_collection");
    if (!await this.fs.exists(this.collection.data_dir)) {
      await this.fs.mkdir(this.collection.data_dir);
    }
    const path = this.get_item_data_path();
    if (!await this.fs.exists(path)) {
      for (const item of Object.values(this.collection.items)) {
        if (item._queue_load) {
          item.queue_import?.();
        }
      }
      this.collection.clear_process_notice("loading_collection");
      this.collection.emit_event("collection:load_halted");
      return;
    }
    const raw_data = await this.fs.read(path, "utf-8", { no_cache: true });
    if (!raw_data) {
      for (const item of Object.values(this.collection.items)) {
        if (item._queue_load) {
          item.queue_import?.();
        }
      }
      this.collection.clear_process_notice("loading_collection");
      this.collection.emit_event("collection:load_halted");
      return;
    }
    const { rewrite, file_data } = this.parse_single_file_ajson(raw_data);
    if (rewrite) {
      if (file_data.length) {
        await this.fs.write(path, file_data);
      } else {
        await this.fs.remove(path);
      }
    }
    for (const item of Object.values(this.collection.items)) {
      item._queue_load = false;
      item.loaded_at = Date.now();
    }
    this.collection.clear_process_notice("loading_collection");
    this.collection.emit_event("collection:load_completed");
  }
  /**
   * Helper to parse single-file .ajson content, distributing states to items.
   *
   * @param {string} raw
   * @returns {{ rewrite: boolean, file_data: string }}
   */
  parse_single_file_ajson(raw) {
    let rewrite = false;
    const lines = raw.trim().split("\n").filter(Boolean);
    let data_map = {};
    let line_count = 0;
    for (let i = 0; i < lines.length; i++) {
      const line = lines[i].trim();
      if (!line.endsWith(",")) {
        rewrite = true;
      }
      const trimmed = line.replace(/,$/, "");
      const combined = "{" + trimmed + "}";
      try {
        const obj = JSON.parse(combined);
        const [fullKey, value] = Object.entries(obj)[0];
        let { collection_key, item_key, changed } = _parse_ajson_key2(fullKey);
        const newKey = `${collection_key}:${item_key}`;
        if (!value) {
          delete data_map[newKey];
          if (changed || newKey !== fullKey) {
            delete data_map[fullKey];
          }
          rewrite = true;
        } else {
          data_map[newKey] = value;
          if (changed || newKey !== fullKey) {
            delete data_map[fullKey];
            rewrite = true;
          }
        }
      } catch (err) {
        console.warn("parse error for line: ", line, err);
        rewrite = true;
      }
      line_count++;
    }
    for (const [ajson_key, val] of Object.entries(data_map)) {
      const [collection_key, ...rest] = ajson_key.split(":");
      const item_key = rest.join(":");
      const collection = this.collection.env[collection_key];
      if (!collection) continue;
      let item = collection.get(item_key);
      if (!item) {
        const ItemClass = collection.item_type;
        item = new ItemClass(this.env, val);
        collection.set(item);
      } else {
        item.data = ajson_merge2(item.data, val);
      }
      item.loaded_at = Date.now();
      item._queue_load = false;
      if (!val.key) val.key = item_key;
    }
    if (line_count > Object.keys(data_map).length) {
      rewrite = true;
    }
    let minimal_lines = [];
    for (const [ajson_key, val] of Object.entries(data_map)) {
      minimal_lines.push(`${JSON.stringify(ajson_key)}: ${JSON.stringify(val)},`);
    }
    return {
      rewrite,
      file_data: minimal_lines.join("\n")
    };
  }
  /**
   * Override process_save_queue for single-file approach.
   * We'll simply call save_item for each queued item, which appends a line to the same `.ajson`.
   *
   * @async
   * @returns {Promise<void>}
   */
  async process_save_queue() {
    this.collection.emit_event("collection:save_started");
    this.collection.show_process_notice("saving_collection");
    const save_queue = Object.values(this.collection.items).filter((item) => item._queue_save);
    const time_start = Date.now();
    const batch_size = 50;
    for (let i = 0; i < save_queue.length; i += batch_size) {
      const batch = save_queue.slice(i, i + batch_size);
      await Promise.all(batch.map((item) => {
        const adapter = this.create_item_adapter(item);
        return adapter.save().catch((err) => {
          console.warn(`Error saving item ${item.key}`, err);
          item.queue_save();
        });
      }));
    }
    const deleted_items = Object.values(this.collection.items).filter((item) => item.deleted);
    if (deleted_items.length) {
      deleted_items.forEach((item) => {
        delete this.collection.items[item.key];
      });
    }
    console.log(`Saved (single-file) ${this.collection.collection_key} in ${Date.now() - time_start}ms`);
    this.collection.clear_process_notice("saving_collection");
    this.collection.emit_event("collection:save_completed");
  }
};
var AjsonSingleFileItemDataAdapter = class extends AjsonMultiFileItemDataAdapter3 {
  /**
   * Overridden to always return the single file path from the parent collection adapter.
   * @returns {string}
   */
  get data_path() {
    return this.collection_adapter.get_item_data_path(this.item.key);
  }
  /**
   * Load logic:
   * In single-file mode, we typically rely on the collection's `process_load_queue()`
   * to parse the entire file. This direct `load()` will do a naive re-parse as well
   * if used individually.
   */
  async load() {
    const path = this.data_path;
    if (!await this.fs.exists(path)) {
      this.item.queue_import?.();
      return;
    }
    try {
      const raw_data = await this.fs.read(path, "utf-8", { no_cache: true });
      if (!raw_data) {
        this.item.queue_import?.();
        return;
      }
      const { rewrite } = this.collection_adapter.parse_single_file_ajson(raw_data);
    } catch (err) {
      console.warn(`Error loading single-file item ${this.item.key}`, err);
      this.item.queue_import?.();
    }
  }
};
var ajson_single_file_default = {
  collection: AjsonSingleFileCollectionDataAdapter2,
  item: AjsonSingleFileItemDataAdapter
};

// node_modules/smart-chat-obsidian/node_modules/smart-actions/adapters/_adapter.js
var SmartActionAdapter = class {
  constructor(item) {
    this.item = item;
    this.module = null;
  }
  async load() {
  }
  /**
   * Run the loaded module’s default (or named) function with given params.
   * @param {Object} params
   * @returns {Promise<any>}
   */
  async run(params) {
    if (!this.module) {
      await this.load();
    }
    const fn = this.module.default || this.module[this.item.key];
    if (typeof fn !== "function") {
      throw new Error(`${this.constructor.name}: No callable export found for action ${this.item.key}`);
    }
    return await fn.call(this.item, params);
  }
  /**
   * Generate an OpenAI-style tool definition for this action.
   * By default it checks `module.tool` or converts `module.openapi`.
   * @returns {object|null}
   */
  get as_tool() {
    if (!this.module) return null;
    if (this.module.tool) return this.module.tool;
    if (this.module.openapi) {
      return convert_openapi_to_tools2(this.module.openapi)[0] || null;
    }
    return null;
  }
};
function convert_openapi_to_tools2(openapi_spec) {
  const tools = [];
  for (const path in openapi_spec.paths || {}) {
    const methods = openapi_spec.paths[path];
    for (const method in methods) {
      const endpoint = methods[method];
      const parameters = endpoint.parameters || [];
      const requestBody = endpoint.requestBody;
      const properties = {};
      const required = [];
      parameters.forEach((param) => {
        properties[param.name] = {
          type: param.schema.type,
          description: param.description || ""
        };
        if (param.required) required.push(param.name);
      });
      if (requestBody) {
        const schema = requestBody.content["application/json"].schema;
        Object.assign(properties, schema.properties);
        if (schema.required) required.push(...schema.required);
      }
      tools.push({
        type: "function",
        function: {
          name: endpoint.operationId || `${method}_${path.replace(/\//g, "_").replace(/[{}]/g, "")}`,
          description: endpoint.summary || endpoint.description || "",
          parameters: {
            type: "object",
            properties,
            required
          }
        }
      });
    }
  }
  return tools;
}

// node_modules/smart-chat-obsidian/node_modules/smart-actions/smart_actions.js
var SmartActions = class extends Collection3 {
  collection_key = "smart_actions";
  static collection_key = "smart_actions";
  data_dir = "smart_actions";
  async init() {
    Object.entries(this.opts.default_actions).forEach(async ([action_key, module2]) => {
      await this.register_included_module(action_key, module2);
    });
  }
  async register_included_module(action_key, module2) {
    const action = await this.create_or_update({
      key: action_key,
      source_type: "included"
    });
    action.module = module2;
    return action;
  }
};
var smart_actions_default = {
  class: SmartActions,
  item_type: SmartAction,
  data_adapter: ajson_single_file_default,
  action_adapters: {
    default: SmartActionAdapter
  }
};

// node_modules/smart-chat-obsidian/src/actions/lookup_context.js
var lookup_context_exports = {};
__export(lookup_context_exports, {
  lookup_context: () => lookup_context,
  render_output: () => render_output,
  tool: () => tool
});
async function lookup_context(params = {}) {
  const env = this.env;
  let {
    hypotheticals = [],
    hypothetical_1,
    hypothetical_2,
    hypothetical_3,
    in_folder,
    context_key,
    ...other_params
  } = params;
  if (typeof hypotheticals === "string") {
    if (hypotheticals.startsWith("[") && hypotheticals.endsWith("]")) {
      hypotheticals = JSON.parse(hypotheticals);
    } else if (hypotheticals.includes("\n")) {
      hypotheticals = hypotheticals.split("\n");
    } else {
      hypotheticals = [hypotheticals];
    }
  }
  if (hypothetical_1) hypotheticals.push(hypothetical_1);
  if (hypothetical_2) hypotheticals.push(hypothetical_2);
  if (hypothetical_3) hypotheticals.push(hypothetical_3);
  if (!hypotheticals?.length) return { error: "hypotheticals is required" };
  let existing_context = null;
  let existing_item_keys = [];
  if (context_key) {
    existing_context = env.smart_contexts.get(context_key);
    if (existing_context?.data?.context_items) {
      existing_item_keys = Object.keys(existing_context.data.context_items);
    }
  }
  if (!other_params.filter) other_params.filter = {};
  if (in_folder && in_folder !== "/") {
    if (env.smart_sources.fs.folders[in_folder]) {
      if (!other_params.filter.key_starts_with) {
        const folder_prefix = in_folder.endsWith("/") ? in_folder : `${in_folder}/`;
        other_params.filter.key_starts_with = folder_prefix;
      }
    } else {
      console.warn(`Folder "${in_folder}" does not exist in the vault. Skipping folder scoping.`);
    }
  }
  if (existing_item_keys.length) {
    if (!Array.isArray(other_params.filter.exclude_keys)) other_params.filter.exclude_keys = [];
    other_params.filter.exclude_keys.push(...existing_item_keys);
  }
  const collection = env.smart_blocks?.settings?.embed_blocks ? env.smart_blocks : env.smart_sources;
  const results = await collection.lookup({ ...other_params, hypotheticals });
  let context;
  if (existing_context) {
    existing_context.add_items(
      results.map((result) => ({ key: result.key, score: result.score }))
    );
    context = existing_context;
  } else {
    context = env.smart_contexts.new_context({
      context_items: results.reduce((acc, result) => {
        acc[result.key] = { d: 0, score: result.score };
        return acc;
      }, {})
    });
  }
  return context.key;
}
var tool = {
  type: "function",
  function: {
    name: "lookup_context",
    description: "Common, frequently used. Performs a semantic search of the user's data. Use to respond to 'Based on my notes...' or any other query that might require surfacing unspecified content. Minimum 3 hypothetical notes predicted to be semantically similar to the notes necessary to fulfill the user's request. Each hypothetical is a semantic representation of content that's likely relevant to the user's request. Hypothetical notes always begin with breadcrumbs containing the hypothetical folder(s) and file name (separated by ' > '). Example: HYPOTHETICAL FOLDER NAME > CHILD FOLDER NAME > FILE NAME: HYPOTHETICAL NOTE CONTENTS. Important: minimum 3.",
    parameters: {
      type: "object",
      properties: {
        hypothetical_1: {
          type: "string",
          description: "Always begin with breadcrumbs containing the hypothetical folder(s) and file name (separated by ' > '). Example: HYPOTHETICAL FOLDER NAME > CHILD FOLDER NAME > FILE NAME: HYPOTHETICAL NOTE CONTENTS. Important: minimum 3."
        },
        hypothetical_2: {
          type: "string",
          description: "Must be distinct from and not share any breadcrumbs with hypothetical_1."
        },
        hypothetical_3: {
          type: "string",
          description: "Must be distinct from hypothetical_1 and hypothetical_2."
        },
        in_folder: {
          type: "string",
          description: "Use only if absolutely required. Exclude unles asked for a specific folder. Limits the lookup to items in this folder."
        }
        // EXCLUDED because used internally and the model currently isn't aware of the current context key
        // context_key: {
        //   type: 'string',
        //   description:
        //     "Optional. The key of an existing SmartContext. When provided, lookup results are appended to this context instead of creating a new one."
        // }
      },
      required: ["hypothetical_1", "hypothetical_2"]
    }
  }
};
async function render_output(env, output, params) {
  const context = env.smart_contexts.get(output);
  if (!context) {
    return `No context found for key: ${output}`;
  }
  return await env.render_component("context_builder", context);
}

// node_modules/smart-chat-obsidian/src/collections/smart_actions.js
smart_actions_default.default_actions = {
  lookup_context: lookup_context_exports
};
var smart_actions_default2 = smart_actions_default;

// node_modules/smart-chat-obsidian/src/utils/add_thread_item.js
function add_thread_item(thread, new_key) {
  if (Object.keys(thread.data.items).length === 0) {
    thread.data.items[new_key] = { _active: true };
    thread.data.items._active = new_key;
  } else {
    let current_node = thread.data.items;
    const active_key_at_level = "_active";
    while (current_node[active_key_at_level] && current_node[current_node[active_key_at_level]]) {
      current_node = current_node[current_node[active_key_at_level]];
    }
    const parent_node = current_node;
    parent_node[new_key] = { _active: true };
    parent_node._active = new_key;
  }
}
function list_thread_items(thread) {
  const active_keys = [];
  let current_node = thread.data.items;
  while (current_node && current_node._active) {
    const active_key = current_node._active;
    if (typeof current_node[active_key] !== "object" || current_node[active_key] === null) break;
    active_keys.push(active_key);
    current_node = current_node[active_key];
  }
  return active_keys;
}

// node_modules/smart-chat-obsidian/src/utils/self_referential_keywords.js
function contains_self_referential_keywords2(user_input, language) {
  const language_settings = ScTranslations_default[language];
  if (!language_settings) return false;
  let check_str = `${user_input}`;
  if (check_str.match(new RegExp(`\\b(${language_settings.pronouns.join("|")})\\b`, "gi"))) return true;
  return false;
}
function get_language_options2() {
  return Object.entries(ScTranslations_default).map(([language, language_settings]) => ({ value: language, name: language_settings.name }));
}
function get_initial_message2(language) {
  const language_settings = ScTranslations_default[language];
  return language_settings.initial_message;
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/node_modules/smart-utils/file_tree.js
function build_file_tree_string2(paths = []) {
  if (!Array.isArray(paths) || paths.length === 0) return "";
  const root = {};
  for (const path of paths) {
    const isFolder = is_folder_path2(path);
    const parts = path.split("/").filter(Boolean);
    let node = root;
    for (let i = 0; i < parts.length; i++) {
      const part = parts[i];
      const isLast = i === parts.length - 1;
      if (isLast) {
        if (isFolder) {
          node[part] = node[part] ?? { __isExplicitFolder: true };
        } else {
          node[part] = null;
        }
      } else {
        node = node[part] ??= {};
      }
    }
  }
  compress_single_child_dirs2(root);
  return build_tree_string2(root).trimEnd();
}
function is_folder_path2(path) {
  return typeof path === "string" && path.endsWith("/");
}
function compress_single_child_dirs2(node) {
  if (!node || typeof node !== "object") return;
  for (const key of Object.keys(node)) {
    const child = node[key];
    if (child && typeof child === "object") {
      if (child.__isExplicitFolder) {
        delete child.__isExplicitFolder;
        compress_single_child_dirs2(child);
        continue;
      }
      const childKeys = Object.keys(child);
      if (childKeys.length === 1 && child[childKeys[0]] !== null && !child[childKeys[0]].__isExplicitFolder) {
        const mergedKey = `${key}/${childKeys[0]}`;
        node[mergedKey] = child[childKeys[0]];
        delete node[key];
        compress_single_child_dirs2(node[mergedKey]);
      } else {
        compress_single_child_dirs2(child);
      }
    }
  }
}
function build_tree_string2(node, prefix = "") {
  let output = "";
  const entries = Object.entries(node).sort((a, b) => {
    const aIsDir = a[1] !== null;
    const bIsDir = b[1] !== null;
    if (aIsDir && !bIsDir) return -1;
    if (!aIsDir && bIsDir) return 1;
    return a[0].localeCompare(b[0]);
  });
  entries.forEach(([name, child], idx) => {
    const isLast = idx === entries.length - 1;
    const connector = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
    if (child === null) {
      output += `${prefix}${connector}${name}
`;
    } else {
      output += `${prefix}${connector}${name}/
`;
      output += build_tree_string2(child, prefix + (isLast ? "    " : "\u2502   "));
    }
  });
  return output;
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/replace_folder_tree_var.js
function replace_folder_tree_var2(prompt) {
  let paths = smart_env.smart_sources?.fs?.folder_paths ?? [];
  paths = paths.map((p) => p.endsWith("/") ? p : p + "/");
  const tree = build_file_tree_string2([...new Set(paths)]);
  prompt = prompt.replace(/{{\s*folder_tree\s*}}/gi, tree);
  return prompt;
}

// node_modules/smart-chat-obsidian/src/items/smart_chat_thread.js
var SmartChatThread = class extends CollectionItem3 {
  static get defaults() {
    return {
      data: {
        name: "",
        system_prompt: "",
        items: {}
      }
    };
  }
  get_key() {
    if (!this.data.key) {
      const now = /* @__PURE__ */ new Date();
      const pad = (n) => n.toString().padStart(2, "0");
      const formatted = `Untitled Chat ${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(now.getHours())}-${pad(now.getMinutes())}-${pad(now.getSeconds())}`;
      this.data.key = formatted;
    }
    return this.data.key;
  }
  /**
   * @property {string} name - Friendly thread name; falls back to key if empty.
   */
  get name() {
    return this.data.name || this.data.key;
  }
  set name(val) {
    this.data.name = val;
  }
  get chat_model() {
    return this.collection.chat_model;
  }
  init_completion(data = {}) {
    const completion_data = {
      key: `${this.key}-${Date.now()}`,
      thread_key: this.key,
      stream: this.collection.settings.stream,
      ...data
    };
    if (this.has_default_system_prompt && !this.completions[0]?.data?.system_message) {
      completion_data.system_message = this.get_system_prompt(completion_data);
    }
    if (!completion_data.context_key) {
      const last_context_key = this.last_completion?.data?.context_key;
      completion_data.context_key = last_context_key || this.env.smart_contexts.new_context().key;
    }
    const completion = new this.env.smart_completions.item_type(this.env, completion_data);
    this.env.smart_completions.set(completion);
    completion.chat_model = this.chat_model;
    this._current_completion = completion;
    add_thread_item(this, completion.key);
    return completion;
  }
  /**
   * Updates the context for the current completion.
   * @param {object|null} context
   */
  update_current_context(context, opts = {}) {
    this.current_completion.data.context_key = context?.key || null;
  }
  get current_completion() {
    const most_recent_completion = this.completions.at(-1);
    if (most_recent_completion && most_recent_completion.data.completion.responses.length === 0) {
      this._current_completion = most_recent_completion;
    }
    if (!this._current_completion || this._current_completion && this._current_completion.data.completion.responses.length !== 0) {
      this._current_completion = this.init_completion();
    }
    return this._current_completion;
  }
  set current_completion(completion) {
    this._current_completion = completion;
  }
  get last_completion() {
    return this.completions.findLast((completion) => completion.response);
  }
  get completion_keys() {
    return list_thread_items(this);
  }
  get completions() {
    return this.completion_keys.map((key) => this.env.smart_completions.get(key)).filter(Boolean);
  }
  get has_default_system_prompt() {
    return this.settings.system_prompt.trim().length > 0;
  }
  /**
   * Build system-prompt text, expanding {{folder_tree}} if present.
   * @param {object} [opts={}]  optional { system_message }
   * @returns {string}
   */
  get_system_prompt(opts = {}) {
    let prompt = this.settings.system_prompt || "";
    if (opts.system_message) {
      prompt = prompt ? `${prompt}

${opts.system_message}` : opts.system_message;
    }
    if (prompt.includes("{{folder_tree}}")) {
      prompt = replace_folder_tree_var2(prompt);
    }
    return prompt;
  }
  get messages() {
    return this.completions.map((completion) => completion.messages).flat();
  }
  /**
   * Checks if the user_message contains self-referential pronouns
   * (only if user enabled the detection in settings).
   * @param {string} user_message 
   * @returns {boolean} 
   */
  has_self_referential_pronoun(user_message) {
    if (!user_message) return false;
    if (!this.collection.settings.detect_self_referential) return false;
    const lang = this.collection.settings.language || "en";
    return contains_self_referential_keywords2(user_message, lang);
  }
};

// node_modules/smart-chat-obsidian/src/collections/smart_chat_threads.js
var SmartChatThreads = class extends Collection3 {
  get chat_model() {
    const chat_model_opts = {
      model_config: {},
      settings: this.settings.chat_model,
      reload_model: () => console.log("no reload_model needed"),
      re_render_settings: this.open_settings?.bind(this)
    };
    return this.env.init_module("smart_chat_model", chat_model_opts);
  }
  async open_settings() {
    const plugin = this.env.smart_chat_plugin || this.env.smart_connections_plugin;
    await plugin.app.setting.open();
    await plugin.app.setting.openTabById("smart-chat");
  }
  /**
   * @property {string} settings.active_thread_key - The key of the currently active thread.
   * @returns {SmartChatThread|null}
   */
  get active_thread() {
    const key = this.settings.active_thread_key;
    if (!key) return null;
    const thread = this.get(key) || null;
    if (!thread || thread.deleted) {
      this.settings.active_thread_key = "";
      return null;
    }
    return thread;
  }
  set active_thread(thread) {
    if (!thread?.key) {
      this.settings.active_thread_key = "";
      return;
    }
    this.settings.active_thread_key = thread.key;
  }
  /**
   * Example default settings for chat threads collection:
   */
  static get default_settings() {
    return {
      active_thread_key: "",
      chat_model: {
        adapter: "ollama"
      },
      system_prompt: "",
      detect_self_referential: true,
      review_context: true,
      stream: true,
      language: "en",
      modifier_key_to_send: "shift",
      use_tool_calls: true
    };
  }
  get settings_config() {
    return {
      "language": {
        name: "Language",
        type: "dropdown",
        options_callback: "get_language_options",
        description: "The language for the chat.",
        default: "en"
      },
      "detect_self_referential": {
        name: "Detect Self-Referential Pronouns",
        type: "toggle",
        description: "Trigger lookup when user message references 'my notes', etc."
      },
      "review_context": {
        name: "Review Context",
        type: "toggle",
        description: "Show retrieved context for approval before sending to AI."
      },
      "system_prompt": {
        name: "System Prompt",
        type: "textarea",
        description: "Prepended to every thread as the system role message. Available variables: {{folder_tree}}, {{folders_top}}, {{tags}}, {{recent_N}}."
      },
      "stream": {
        name: "Stream",
        type: "toggle",
        description: "Whether to stream the response from the AI."
      },
      "modifier_key_to_send": {
        name: "Modifier key to send with Enter",
        type: "dropdown",
        "option-0": "none|Enter",
        "option-1": "shift|\u21E7 Shift + Enter",
        "option-2": "mod|\u2318/Ctrl + Enter",
        "option-3": "alt|Alt + Enter",
        "option-4": "meta|\u2318/\u229EWin + Enter",
        default: "shift",
        description: "Choose which modifier (if any) is required with Enter to send the chat."
      },
      "use_tool_calls": {
        name: "Use tool calling for actions",
        type: "toggle",
        description: "Reccommended if the model you're using supports it. Turn off to use more-compatible yet less-reliable format."
      }
    };
  }
  get_language_options() {
    return get_language_options2();
  }
  async process_save_queue() {
    await super.process_save_queue();
    await this.env.smart_completions.process_save_queue();
    await this.env.smart_contexts.process_save_queue();
  }
};
var smart_chat_threads_default = {
  class: SmartChatThreads,
  collection_key: "smart_chat_threads",
  data_adapter: AjsonSingleFileCollectionDataAdapter2,
  item_type: SmartChatThread
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/smart_completions.js
var SmartCompletions2 = class extends Collection3 {
  static version = 0.1;
  /**
   * Lazily instantiates and returns a chat_model. Similar to how
   * SmartEntities implements embed_model. You can adapt this
   * depending on how your environment is structured.
   *
   * @returns {Object|null} The chat model instance or null if not configured
   */
  get chat_model() {
    if (!this._chat_model) {
      this._chat_model = this.env.init_module("smart_chat_model", {
        model_config: {},
        settings: this.settings.chat_model ?? this.env.smart_chat_threads?.settings?.chat_model ?? {},
        reload_model: this.reload_chat_model.bind(this),
        re_render_settings: this.re_render_settings?.bind(this) ?? (() => {
          console.log("no re_render_settings");
        })
      });
    }
    return this._chat_model;
  }
  /**
   * Force unload & reload of chat model if user changes adapter or settings.
   */
  reload_chat_model() {
    if (this._chat_model?.unload) {
      this._chat_model.unload();
    }
    this._chat_model = null;
  }
  /**
   * In addition to base collection settings, merges `chat_model.settings_config`.
   * Allows the SmartCompletions UI to show chat-model relevant settings.
   * @returns {Object} Merged settings config
   */
  get settings_config() {
    return {};
  }
  /**
   * (Optional) An array of request adapter classes. SmartCompletion items will invoke these
   * in `run_completion_adapters()`. For example, we can list the context adapter or other custom ones.
   */
  get completion_adapters() {
    if (!this._completion_adapters) {
      this._completion_adapters = {};
      Object.entries(this.opts.completion_adapters).forEach(([key, adapter]) => {
        if (this._completion_adapters[adapter.property_name || key]) {
          const existing = this._completion_adapters[adapter.property_name || key];
          const existing_version = existing.version || 0;
          const new_version = adapter.version || 0;
          if (new_version < existing_version) return;
        }
        this._completion_adapters[adapter.property_name || key] = adapter;
      });
    }
    return this._completion_adapters;
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-utils/create_hash.js
function murmur_hash_323(input_string, seed = 0) {
  let remainder = input_string.length & 3;
  let bytes = input_string.length - remainder;
  let h1 = seed;
  let c1 = 3432918353;
  let c2 = 461845907;
  let i = 0;
  let k1 = 0;
  let chunk = 0;
  while (i < bytes) {
    chunk = input_string.charCodeAt(i) & 255 | (input_string.charCodeAt(i + 1) & 255) << 8 | (input_string.charCodeAt(i + 2) & 255) << 16 | (input_string.charCodeAt(i + 3) & 255) << 24;
    i += 4;
    k1 = chunk;
    k1 = multiply_323(k1, c1);
    k1 = rotate_left_323(k1, 15);
    k1 = multiply_323(k1, c2);
    h1 ^= k1;
    h1 = rotate_left_323(h1, 13);
    h1 = h1 * 5 + 3864292196 | 0;
  }
  k1 = 0;
  switch (remainder) {
    case 3:
      k1 ^= (input_string.charCodeAt(i + 2) & 255) << 16;
    // falls through
    case 2:
      k1 ^= (input_string.charCodeAt(i + 1) & 255) << 8;
    // falls through
    case 1:
      k1 ^= input_string.charCodeAt(i) & 255;
      k1 = multiply_323(k1, c1);
      k1 = rotate_left_323(k1, 15);
      k1 = multiply_323(k1, c2);
      h1 ^= k1;
      break;
  }
  h1 ^= input_string.length;
  h1 = fmix_323(h1);
  return h1 | 0;
}
function murmur_hash_32_alphanumeric3(input_string, seed = 0) {
  const signed_hash = murmur_hash_323(input_string, seed);
  const unsigned_hash = signed_hash >>> 0;
  return unsigned_hash.toString(36);
}
function multiply_323(a, b) {
  return (a & 65535) * b + ((a >>> 16) * b << 16) | 0;
}
function rotate_left_323(value, shift) {
  return value << shift | value >>> 32 - shift;
}
function fmix_323(h) {
  h ^= h >>> 16;
  h = multiply_323(h, 2246822507);
  h ^= h >>> 13;
  h = multiply_323(h, 3266489909);
  h ^= h >>> 16;
  return h | 0;
}

// node_modules/smart-chat-obsidian/node_modules/smart-utils/coerce_primitives.js
function coerce_primitives2(value) {
  if (typeof value !== "string") {
    return value;
  }
  const trimmed_value = value.trim();
  if (trimmed_value === "true") {
    return true;
  }
  if (trimmed_value === "false") {
    return false;
  }
  const float_pattern = /^-?\d+\.\d+$/;
  if (float_pattern.test(trimmed_value)) {
    const num = parseFloat(trimmed_value);
    if (num.toString() === trimmed_value) {
      return num;
    }
  }
  const int_pattern = /^-?(?:0|[1-9]\d*)$/;
  if (int_pattern.test(trimmed_value)) {
    return Number(trimmed_value);
  }
  return value;
}

// node_modules/smart-chat-obsidian/node_modules/smart-utils/parse_xml_fragments.js
function strip_code_fence2(raw_input) {
  const fence_re = /^\s*```[a-z]*\n([\s\S]*?)\n```\s*$/i;
  const m = fence_re.exec(raw_input);
  return m ? m[1] : raw_input;
}
function parse_xml_fragments2(xml_input) {
  if (typeof xml_input !== "string" || xml_input.trim() === "") {
    return null;
  }
  const stripped_input = strip_code_fence2(xml_input);
  const VERBATIM_TAGS = /* @__PURE__ */ new Set(["think"]);
  const compress_whitespace = (str) => str.replace(/\s+/g, " ").trim();
  const parse_attributes = (str) => {
    if (!str) return {};
    const attrs = {};
    const attr_re = /(\w[\w.\-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;
    let m;
    while ((m = attr_re.exec(str)) !== null) {
      const [, key, val_dq, val_sq] = m;
      const raw_val = val_dq ?? val_sq;
      attrs[key] = coerce_primitives2(raw_val);
    }
    return attrs;
  };
  const attach_child = (map, tag, node) => {
    if (tag in map) {
      const existing = map[tag];
      map[tag] = Array.isArray(existing) ? [...existing, node] : [existing, node];
    } else {
      map[tag] = node;
    }
  };
  const finalize_node = (ctx) => {
    const text_raw = ctx.verbatim ? ctx.text.replace(/^\s*\n/, "").replace(/\s+$/, "") : compress_whitespace(ctx.text);
    if (Object.keys(ctx.children_map).length) {
      ctx.node.contents = ctx.children_map;
    } else if (text_raw !== "") {
      ctx.node.contents = ctx.verbatim ? text_raw : coerce_primitives2(text_raw);
    } else {
      ctx.node.contents = null;
    }
  };
  const cleaned = stripped_input.replace(/<!--[\s\S]*?-->/g, "");
  const token_re = /<[^>]+>|[^<]+/g;
  const root_map = {};
  const stack = [];
  let match;
  while ((match = token_re.exec(cleaned)) !== null) {
    const token = match[0];
    if (stack.length) {
      const top = stack[stack.length - 1];
      if (top.verbatim) {
        if (token.startsWith(`</${top.tag_name}`)) {
          stack.pop();
          finalize_node(top);
          if (stack.length === 0) {
            attach_child(root_map, top.tag_name, top.node);
          } else {
            attach_child(stack[stack.length - 1].children_map, top.tag_name, top.node);
          }
          continue;
        }
        top.text += token;
        continue;
      }
    }
    if (token.startsWith("<")) {
      if (token.startsWith("</")) {
        const tag_name = token.slice(2, -1).trim();
        if (!stack.length) return null;
        const ctx = stack.pop();
        if (ctx.tag_name !== tag_name) return null;
        finalize_node(ctx);
        if (stack.length === 0) {
          attach_child(root_map, tag_name, ctx.node);
        } else {
          attach_child(stack[stack.length - 1].children_map, tag_name, ctx.node);
        }
      } else {
        const self_closing = token.endsWith("/>");
        const body = self_closing ? token.slice(1, -2) : token.slice(1, -1);
        const first_space = body.indexOf(" ");
        const tag_name = first_space === -1 ? body : body.slice(0, first_space);
        const attr_str = first_space === -1 ? "" : body.slice(first_space + 1);
        const attributes = parse_attributes(attr_str);
        const node = Object.keys(attributes).length ? { attributes } : {};
        if (self_closing) {
          node.contents = null;
          if (stack.length === 0) {
            attach_child(root_map, tag_name, node);
          } else {
            attach_child(stack[stack.length - 1].children_map, tag_name, node);
          }
        } else {
          stack.push({
            tag_name,
            node,
            text: "",
            children_map: {},
            verbatim: VERBATIM_TAGS.has(tag_name)
          });
        }
      }
    } else {
      if (stack.length) stack[stack.length - 1].text += token;
    }
  }
  while (stack.length) {
    const ctx = stack.pop();
    finalize_node(ctx);
    if (stack.length === 0) {
      attach_child(root_map, ctx.tag_name, ctx.node);
    } else {
      attach_child(stack[stack.length - 1].children_map, ctx.tag_name, ctx.node);
    }
  }
  return Object.keys(root_map).length ? root_map : null;
}

// node_modules/smart-chat-obsidian/node_modules/smart-completions/utils/insert_user_message.js
function insert_user_message2(request, user_message, opts = {}) {
  if (!user_message) return;
  const { position = "end", new_user_message = false } = opts;
  if (!request.messages) {
    request.messages = [];
  }
  const last_user_index = request.messages.findLastIndex((x) => x.role === "user");
  if (last_user_index === -1 || new_user_message) {
    const new_user_message2 = {
      role: "user",
      content: [{ type: "text", text: user_message }]
    };
    request.messages.push(new_user_message2);
    return;
  }
  const last_user_message = request.messages[last_user_index];
  if (!Array.isArray(last_user_message.content)) {
    last_user_message.content = [
      {
        type: "text",
        text: last_user_message.content
      }
    ];
  }
  if (position === "start") {
    last_user_message.content.unshift({
      type: "text",
      text: user_message
    });
  } else {
    last_user_message.content.push({
      type: "text",
      text: user_message
    });
  }
}

// node_modules/smart-chat-obsidian/node_modules/smart-completions/adapters/_adapter.js
var SmartCompletionAdapter2 = class {
  constructor(item) {
    this.item = item;
  }
  get data() {
    return this.item.data;
  }
  get env() {
    return this.item.env;
  }
  get completion() {
    return this.data.completion;
  }
  get request() {
    return this.item.data.completion.request;
  }
  get response() {
    return this.item.response;
  }
  insert_user_message(user_message, opts = {}) {
    insert_user_message2(this.request, user_message, opts);
  }
  // Override these methods in subclasses
  static get property_name() {
    return null;
  }
  /**
   * @returns {Promise<void>}
   */
  async to_request() {
  }
  /**
   * @returns {Promise<void>}
   */
  async from_response() {
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/utils/run_adapters.js
async function run_adapters2({ item, adapters, adapter_method }) {
  const data_keys = Object.keys(item.data);
  const entries = Object.entries(adapters).map(([key, AdapterClass]) => ({
    AdapterClass,
    property: AdapterClass.property_name === void 0 ? key : AdapterClass.property_name,
    order: AdapterClass.order || 0
  }));
  const applicable = entries.filter(({ property }) => property === null || data_keys.includes(property)).sort((a, b) => a.order - b.order);
  for (const { AdapterClass } of applicable) {
    if (!(AdapterClass.prototype instanceof SmartCompletionAdapter2)) {
      console.warn(`Adapter ${AdapterClass.name} does not extend SmartCompletionAdapter`);
    }
    const adapter = new AdapterClass(item);
    await adapter[adapter_method]?.();
  }
}

// node_modules/smart-chat-obsidian/node_modules/smart-completions/smart_completion.js
var SmartCompletion2 = class extends CollectionItem3 {
  constructor(env, data = null) {
    super(env, data);
    this.run_adapter_item_constructors();
  }
  run_adapter_item_constructors() {
    for (const [key, AdapterClass] of Object.entries(this.completion_adapters)) {
      AdapterClass.item_constructor?.(this);
    }
  }
  /**
   * Default data structure for a new SmartCompletion item.
   * @static
   * @returns {Object}
   */
  static get defaults() {
    return {
      response_i: 0,
      data: {
        completion: {
          request: {},
          responses: [],
          chat_model: null
        }
      }
    };
  }
  /**
   * get_key
   * Overridden to produce a unique key based on a hash of this.data plus the current timestamp.
   * @returns {string}
   */
  get_key() {
    const hash = murmur_hash_32_alphanumeric3(JSON.stringify(this.data));
    const ts = Date.now();
    return `${hash}-${ts}`;
  }
  /**
   * Called automatically in many cases (via create_or_update).
   * You can also call it manually if needed.
   */
  async init(completion_opts = {}) {
    if (this.data.chat_model_config) {
      this.chat_model = this.env.init_module("smart_chat_model", {
        settings: this.data.chat_model_config
      });
    }
    await this.build_request();
    await this.complete(completion_opts);
    await this.parse_response();
    this.queue_save();
    this.collection.process_save_queue();
  }
  /**
   * Collects or transforms data into a final `completion.request` structure
   * by running any applicable completion adapters.
   * @returns {Promise<void>}
   */
  async build_request() {
    this.data.completion.request = {};
    await run_adapters2({ item: this, adapters: this.completion_adapters, adapter_method: "to_request" });
    if (Object.keys(this.data.completion.request).length > 0) {
      this.data.completion.request.messages = this.data.completion.request.messages.map((msg) => {
        if (typeof msg.content === "string" && msg.content.trim().length === 0) return null;
        if (Array.isArray(msg.content)) {
          msg.content = msg.content.filter((part) => {
            if (part.type !== "text") return true;
            if (part.text && part.text.trim().length > 0) return true;
            return false;
          });
          if (msg.content.length === 0) return null;
        }
        return msg;
      }).filter((msg) => msg !== null);
      ;
    }
    return this.data.completion.request;
  }
  async parse_response() {
    await run_adapters2({ item: this, adapters: this.completion_adapters, adapter_method: "from_response" });
    return this.data.completion.responses;
  }
  /**
   * Calls the underlying chat model, stores the response in completion.responses.
   * @returns {Promise<void>}
   */
  async complete(opts = {}) {
    if (!this.data.completion || !this.data.completion.request) {
      console.warn("No completion.request found, skipping complete().");
      return;
    }
    const chat_model = this.get_chat_model(opts);
    this.data.completion.chat_model = {
      model_key: chat_model.model_key,
      platform_key: chat_model.adapter_name
    };
    if (!chat_model) {
      console.warn("No chat model available for SmartCompletion. Check environment config.");
      return;
    }
    try {
      const request_payload = this.data.completion.request;
      const stream = opts.stream;
      const result = stream ? await chat_model.stream(request_payload, this.stream_handlers(opts.stream_handlers)) : await chat_model.complete(request_payload);
      if (!stream) {
        this.data.completion.responses.push({
          timestamp: Date.now(),
          ...result
        });
      }
      const typing_indicator = this.container?.closest(".smart-chat-thread")?.querySelector(".smart-chat-typing-indicator");
      if (typing_indicator) typing_indicator.style.display = "none";
      this.queue_save();
    } catch (err) {
      console.error("Error in SmartCompletion.complete():", err);
    }
  }
  stream_handlers(stream_handlers = {}) {
    return {
      chunk: async (resp) => {
        this.data.completion.responses[0] = {
          timestamp: Date.now(),
          ...resp
        };
        await stream_handlers.chunk?.(this);
      },
      done: async (resp) => {
        this.data.completion.responses[0] = {
          timestamp: Date.now(),
          ...resp
        };
        await stream_handlers.done?.(this);
      },
      error: async (err) => {
        console.error("error", err);
        await stream_handlers.error?.(err);
      }
    };
  }
  /**
   * Access the completion adapters from the parent collection, if any.
   */
  get completion_adapters() {
    return this.collection?.completion_adapters || {};
  }
  /**
   * If a local chat_model config is present, creates a dedicated instance.
   * Otherwise, returns the collection-level chat_model or null.
   * @returns {Object|null}
   */
  get_chat_model() {
    if (this.chat_model) {
      return this.chat_model;
    } else {
      console.log("no chat_model, using collection chat_model");
      return this.collection?.chat_model || null;
    }
  }
  /**
   * @returns {Object|undefined} Currently selected response based on `response_i`.
   */
  get response() {
    return this.data.completion.responses[this.response_i];
  }
  /**
   * @method response_text
   * @returns {string} The best guess at the main text from the model's first response.
   */
  get response_text() {
    const resp = this.response;
    if (!resp) return "";
    if (Array.isArray(resp.choices) && resp.choices[0]) {
      const choice = resp.choices[0];
      if (choice.message && choice.message.content) {
        return choice.message.content;
      }
      if (choice.text) return choice.text;
    }
    if (resp.text) return resp.text;
    return "";
  }
  get response_structured_output() {
    if (!this.response) return null;
    if (this.action_call) {
      try {
        const parsed2 = JSON.parse(this.action_call);
        return parsed2;
      } catch (e) {
        console.log("failed to parse tool_call in response_structured_output");
      }
    }
    if (!this.response_text) return null;
    const parsed = parse_xml_fragments2(this.response_text);
    if (!parsed) return null;
    return parsed;
  }
  get action_call() {
    const resp = this.response;
    if (!resp) return null;
    return resp.choices?.[0]?.message?.tool_calls?.[0]?.function?.arguments;
  }
  get messages() {
    const messages = [];
    if (this.data.system_message) {
      messages.push({
        role: "system",
        content: this.data.system_message
      });
    }
    if (this.data.user_message) {
      messages.push({
        role: "user",
        content: this.data.user_message
      });
    }
    if (this.response_text) {
      messages.push({
        role: "assistant",
        content: this.response_text
      });
    }
    return messages;
  }
  get is_completed() {
    return this.data.completion.responses.length > 0;
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/utils/insert_image.js
async function insert_image2(request, image_path, fs) {
  const base64_image = await convert_image_to_base642(fs, image_path);
  if (!base64_image) return;
  const last_user_index = request.messages.findLastIndex((x) => x.role === "user");
  const image_content = {
    role: "user",
    content: [{ type: "image_url", image_url: { url: base64_image } }]
  };
  if (last_user_index === -1) {
    request.messages.unshift(image_content);
  }
  const last_user_message = request.messages[last_user_index];
  if (!last_user_message) return console.warn("insert_image: no last_user_message");
  if (!Array.isArray(last_user_message.content)) {
    last_user_message.content = [];
  }
  last_user_message.content.push(image_content.content[0]);
}
async function convert_image_to_base642(fs, image_path) {
  if (!image_path) return;
  const image_exts = ["png", "jpg", "jpeg", "gif", "webp", "svg", "bmp", "ico"];
  const ext = image_path.split(".").pop().toLowerCase();
  if (!image_exts.includes(ext)) return;
  try {
    const base64_data = await fs.read(image_path, "base64");
    const base64_url = `data:image/${ext};base64,${base64_data}`;
    return base64_url;
  } catch (err) {
    console.warn(`Failed to convert image ${image_path} to base64`, err);
  }
}

// node_modules/smart-chat-obsidian/node_modules/smart-completions/utils/insert_pdf.js
async function insert_pdf2(request, pdf_path, fs) {
  const base64_pdf = await convert_pdf_to_base642(fs, pdf_path);
  if (!base64_pdf) return;
  const last_user_index = request.messages.findLastIndex((x) => x.role === "user");
  const pdf_content = {
    role: "user",
    content: [{
      type: "file",
      file: {
        filename: pdf_path.split(/[\\/]/).pop(),
        file_data: `data:application/pdf;base64,${base64_pdf}`
        // <-- Prefix added
      }
    }]
  };
  if (last_user_index === -1) {
    request.messages.unshift(pdf_content);
    return;
  }
  const last_user_message = request.messages[last_user_index];
  if (!last_user_message) return console.warn("insert_pdf: no last_user_message");
  if (!Array.isArray(last_user_message.content)) {
    last_user_message.content = [];
  }
  last_user_message.content.push(pdf_content.content[0]);
}
async function convert_pdf_to_base642(fs, pdf_path) {
  if (!pdf_path) return;
  const ext = pdf_path.split(".").pop().toLowerCase();
  if (ext !== "pdf") return;
  try {
    const base64_data = await fs.read(pdf_path, "base64");
    return base64_data;
  } catch (err) {
    console.warn(`Failed to convert PDF ${pdf_path} to base64`, err);
  }
}

// node_modules/smart-chat-obsidian/node_modules/smart-completions/adapters/context.js
var SmartCompletionContextAdapter2 = class extends SmartCompletionAdapter2 {
  static order = 10;
  static get property_name() {
    return "context_key";
  }
  async to_request() {
    const context_key = this.data.context_key;
    if (!context_key) return;
    const context_opts = this.data.context_opts;
    const context_collection = this.item.env.smart_contexts;
    if (!context_collection) {
      console.warn("No 'smart_contexts' collection found; skipping context adapter.");
      return;
    }
    const completions = this.item.thread.completions;
    const last_context_completion = completions.findLast((comp) => comp.data.context_key === context_key);
    if (last_context_completion && last_context_completion.key !== this.item.key) {
      return;
    }
    const ctx_item = context_collection.get(context_key);
    if (!ctx_item) {
      console.warn(`SmartContext not found for key '${context_key}'`);
      return;
    }
    if (!ctx_item.has_context_items) {
      console.warn(`SmartContext '${context_key}' has no context items; skipping context adapter.`);
      return;
    }
    await ctx_item.save();
    let compiled;
    try {
      compiled = await ctx_item.compile(context_opts);
    } catch (err) {
      console.warn("Error compiling ephemeral context", err);
      return;
    }
    if (compiled.context) {
      this.insert_user_message(compiled.context);
      const last_user_message = this.data.user_message ?? completions.findLast((comp) => comp.data.user_message)?.data.user_message;
      if (last_user_message) {
        this.insert_user_message(last_user_message, { position: "end" });
      }
    }
    if (compiled.images?.length > 0) {
      await this.insert_images(compiled.images);
    }
    if (compiled.pdfs?.length > 0) {
      await this.insert_pdfs(compiled.pdfs);
    }
    this.data.completion.used_context = true;
  }
  async insert_images(image_paths) {
    if (!Array.isArray(image_paths) || !image_paths.length) return;
    for (const img_path of image_paths) {
      await insert_image2(this.request, img_path, this.item.env.fs);
    }
  }
  async insert_pdfs(pdf_paths) {
    if (!Array.isArray(pdf_paths) || !pdf_paths.length) return;
    for (const pdf_path of pdf_paths) {
      await insert_pdf2(this.request, pdf_path, this.item.env.fs);
    }
  }
  /**
   * No special post-processing after we get model response.
   */
  async from_response() {
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/adapters/user.js
var SmartCompletionUserAdapter2 = class extends SmartCompletionAdapter2 {
  static order = 1;
  /**
   * @returns {string}
   */
  static get property_name() {
    return "user_message";
  }
  get request() {
    return this.item.data.completion.request;
  }
  /**
   * to_request: Checks `data.user`, adds a user message to `request.messages`.
   * @returns {Promise<void>}
   */
  async to_request() {
    const user_message = this.data.user_message;
    const new_user_message = this.data.new_user_message;
    this.insert_user_message(user_message, {
      position: "start",
      // always at start so that other adapters may add again to end (e.g. context adapter)
      new_user_message
    });
  }
  /**
   * from_response: No post-processing needed for default user message.
   * @returns {Promise<void>}
   */
  async from_response() {
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/adapters/action.js
var ActionCompletionAdapter2 = class extends SmartCompletionAdapter2 {
  static get property_name() {
    return "action_key";
  }
  /**
   * @returns {Promise<void>}
   */
  async to_request() {
    const action_key = this.data.action_key;
    if (!action_key) return;
    const thread = this.item.thread;
    if (thread && thread.current_completion !== this.item) return console.log("ActionCompletionAdapter: skipping tools, not the current completion");
    const action_opts = this.data.action_opts;
    const action_collection = this.item.env.smart_actions;
    if (!action_collection) {
      console.warn("No 'smart_actions' collection found; skipping action adapter.");
      return;
    }
    const action_item = action_collection.get(action_key);
    if (!action_item) {
      console.warn(`SmartAction not found for key '${action_key}'`);
      return;
    }
    let tools;
    try {
      const tool2 = action_item.as_tool;
      tools = tool2 ? [tool2] : [];
    } catch (err) {
      console.warn("Error generating action tool", err);
      return;
    }
    if (!tools.length) return;
    if (!this.data.actions) this.data.actions = {};
    this.data.actions[action_key] = true;
    this.insert_tools(tools, { force: true });
  }
  get default_action_params() {
    return this.data.action_opts || {};
  }
  /**
   * @returns {Promise<void>}
   */
  async from_response() {
    console.log("ActionCompletionAdapter: from_response");
    const tool_call = this.response.choices[0].message?.tool_calls?.[0];
    if (!tool_call) return console.warn("No tool call found in response");
    const action_key = tool_call?.function?.name;
    const tool_arguments = tool_call?.function?.arguments;
    if (!action_key) return;
    const action_collection = this.item.env.smart_actions;
    if (!action_collection) return;
    const action_item = action_collection.get(action_key);
    if (!action_item) return;
    let parsed_args = tool_arguments;
    if (typeof parsed_args === "string") {
      try {
        parsed_args = JSON.parse(parsed_args);
      } catch (err) {
        console.warn("Could not parse tool_call arguments", err);
        return;
      }
    }
    const action_params = {
      ...this.default_action_params,
      ...parsed_args
    };
    const result = await action_item.run_action(action_params);
    if (result && typeof result === "object" && result.final) {
      if (!this.item.data.completion.responses[0]) {
        this.item.data.completion.responses[0] = { choices: [{ message: {} }] };
      } else if (!this.item.data.completion.responses[0].choices?.[0]) {
        this.item.data.completion.responses[0].choices = [{ message: {} }];
      }
      this.item.data.completion.responses[0].choices[0].message = {
        ...this.item.data.completion.responses[0].choices[0].message,
        role: "assistant",
        content: result.final
      };
    }
    if (!this.data.actions) this.data.actions = {};
    this.data.actions[action_key] = result;
  }
  /**
   * Insert the ephemeral tools into the request
   * @param {Array<object>} tools
   * @param {object} opts
   * @returns {void}
   */
  insert_tools(tools, opts = {}) {
    this.request.tools = tools;
    if (opts.force) {
      this.request.tool_choice = {
        type: "function",
        function: {
          name: tools[0].function.name
        }
      };
    }
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/adapters/action_xml.js
function scaffold_xml2(root_tag, root_desc, params) {
  return [
    `<${root_tag} instructions="${root_desc}">`,
    ...Object.entries(params).map(
      ([p, v]) => `  <${p} instructions="${v.description || ""}">VALUE</${p}>`
    ),
    `</${root_tag}>`
  ].join("\n");
}
function strip_instruction_attrs2(xml) {
  return xml.replace(/\s+instructions="[^"]*"/g, "");
}
var ActionXmlCompletionAdapter2 = class extends ActionCompletionAdapter2 {
  static get property_name() {
    return "action_xml_key";
  }
  /* ────────────────────────────────────────────────────────────────────────
     REQUEST CONSTRUCTION
     ────────────────────────────────────────────────────────────────────── */
  async to_request() {
    const action_key = this.data.action_xml_key;
    if (!action_key) return;
    const thread = this.item.thread;
    if (thread.current_completion !== this.item) return console.log("ActionXmlCompletionAdapter: skipping tools, not the current completion");
    const action_item = this.env.smart_actions?.get(action_key);
    if (!action_item) {
      return console.warn(`SmartAction '${action_key}' not found`);
    }
    let tools;
    try {
      const tool2 = action_item.as_tool;
      tools = tool2 ? [tool2] : [];
    } catch (err) {
      return console.warn("Unable to compile OpenAPI \u2192 tools", err);
    }
    if (!tools.length) return;
    const func_def = tools[0].function;
    const param_props = func_def.parameters?.properties || {};
    const required_params = func_def.parameters?.required || [];
    this._func_name = func_def.name;
    this._required_params = required_params;
    const action_instruction = [
      "Important Instructions:",
      `1. You must invoke the action '${func_def.name}' exactly once.`,
      "2. You must respond *only* with XML in the exact structure provided below.",
      "3. Replace VALUE with real arguments based on the property-specific instructions below.",
      "4. Do not include any other text or instructions.",
      "5. Follow these property-specific instructions for producing the XML response.",
      "Action Instructions:",
      `- ${func_def.description || ""}`,
      "Property-Specific Instructions:",
      ...Object.entries(param_props).map(
        ([p, v]) => `- ${p}: ${v.description || ""}`
      )
    ].join("\n");
    const xml_scaffold = scaffold_xml2(func_def.name, func_def.description, param_props);
    const xml_template = strip_instruction_attrs2(xml_scaffold);
    const action_instruction_msg = [
      action_instruction,
      `You are ready to invoke the action '${func_def.name}'.`
    ].join("\n");
    const xml_template_msg = [
      `To invoke the action '${func_def.name}', respond *only* with XML in this exact structure (replace VALUE with real arguments based on the action and property-specific instructions above):`,
      xml_template
    ].join("\n");
    this.insert_user_message(action_instruction_msg);
    this.insert_user_message(xml_template_msg);
    this.data.actions ??= {};
    this.data.actions[action_key] = true;
    this.data.action_key = action_key;
  }
  /* ────────────────────────────────────────────────────────────────────────
     RESPONSE PARSING
     ────────────────────────────────────────────────────────────────────── */
  async from_response() {
    const action_key = this.data.action_xml_key;
    if (!action_key) return;
    const assistant_msg = this.response?.choices?.[0]?.message;
    if (!assistant_msg) {
      return console.warn("ActionXmlCompletionAdapter: assistant message not found");
    }
    const func_name = this._func_name || action_key;
    let parsed_xml = this.item?.response_structured_output;
    let root_node = parsed_xml[func_name];
    if (!root_node) {
      const candidate = Object.keys(parsed_xml)[0];
      console.warn(`ActionXmlCompletionAdapter: expected root <${func_name}>, found <${candidate}> \u2013 using candidate`);
      root_node = parsed_xml[candidate];
    }
    if (!root_node) {
      return console.warn(`ActionXmlCompletionAdapter: root tag '${func_name}' not found`);
    }
    const node_to_value = (node) => {
      if (!node || typeof node !== "object") return node;
      const { attributes = {}, contents } = node;
      if (contents === null || typeof contents !== "object") {
        return Object.keys(attributes).length ? { ...attributes, value: contents } : contents;
      }
      const out = {};
      for (const [k, v] of Object.entries(contents)) {
        out[k] = Array.isArray(v) ? v.map(node_to_value) : node_to_value(v);
      }
      return Object.keys(attributes).length ? { ...attributes, ...out } : out;
    };
    const args = node_to_value(root_node);
    const missing = (this._required_params || []).filter(
      (p) => args[p] === void 0 || args[p] === "" || args[p] === null
    );
    if (missing.length) {
      return console.warn(`ActionXmlCompletionAdapter: missing ${missing.join(", ")}`);
    }
    assistant_msg.tool_calls = [
      { function: { name: action_key, arguments: args } }
    ];
    delete assistant_msg.content;
    await super.from_response();
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/adapters/system.js
var SmartCompletionSystemAdapter2 = class extends SmartCompletionAdapter2 {
  /**
   * Identifies the data property that triggers this adapter.
   * @returns {string}
   */
  static get property_name() {
    return "system_message";
  }
  /**
   * to_request: If `data.system_message` is present, prepends a system message to request.messages.
   * @returns {Promise<void>}
   */
  async to_request() {
    const sys_msg = this.data.system_message;
    if (!sys_msg) return;
    if (!this.request.messages) {
      this.request.messages = [];
    }
    this.request.messages.unshift({
      role: "system",
      content: sys_msg
    });
  }
  /**
   * from_response: No post-processing needed here.
   * @returns {Promise<void>}
   */
  async from_response() {
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/adapters/variable.js
var SmartCompletionVariableAdapter2 = class extends SmartCompletionAdapter2 {
  static order = 100;
  // Default order, can be overridden by specific adapters
  static registry = [];
  static register(matcher_fx, replacement_fx, var_example) {
    this.registry.push({ matcher_fx, replacement_fx, var_example });
  }
  static get available_vars() {
    return this.registry.map(({ var_example }) => var_example);
  }
  static async replace_vars(env, text) {
    for (const { matcher_fx, replacement_fx } of this.registry) {
      if (await matcher_fx.call(env, text)) {
        text = await replacement_fx.call(env, text);
      }
    }
    return text;
  }
  async to_request() {
    const messages = this.request.messages || [];
    for (const msg of messages) {
      if (typeof msg.content === "string") {
        msg.content = await this.constructor.replace_vars(this.env, msg.content);
      } else if (Array.isArray(msg.content)) {
        for (const part of msg.content) {
          if (part && typeof part.text === "string") {
            part.text = await this.constructor.replace_vars(this.env, part.text);
          }
        }
      }
    }
  }
  async from_response() {
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-completions/index.js
var smart_completions_default_config2 = {
  class: SmartCompletions2,
  data_adapter: AjsonSingleFileCollectionDataAdapter2,
  item_type: SmartCompletion2,
  completion_adapters: {
    // SmartCompletionTemplateAdapter,
    SmartCompletionContextAdapter: SmartCompletionContextAdapter2,
    SmartCompletionUserAdapter: SmartCompletionUserAdapter2,
    ActionCompletionAdapter: ActionCompletionAdapter2,
    ActionXmlCompletionAdapter: ActionXmlCompletionAdapter2,
    SmartCompletionSystemAdapter: SmartCompletionSystemAdapter2,
    SmartCompletionVariableAdapter: SmartCompletionVariableAdapter2
  }
};

// node_modules/smart-chat-obsidian/src/adapters/smart-completions/thread.js
var ThreadCompletionAdapter = class extends SmartCompletionAdapter2 {
  static version = 0.1;
  static order = -1;
  /**
   * @returns {string}
   */
  static get property_name() {
    return "thread_key";
  }
  static item_constructor(completion) {
    Object.defineProperty(completion, "thread", {
      get() {
        const thread_key = completion.data.thread_key;
        if (!thread_key) return null;
        return completion.env.smart_chat_threads.get(thread_key) || completion.env.smart_chat_threads.active_thread;
      }
    });
  }
  /**
   * to_request: Appends messages from the referenced thread.
   * @returns {Promise<void>}
   */
  async to_request() {
    const thread_key = this.data.thread_key;
    if (!thread_key) return;
    const thread = this.item.thread || this.item.env.smart_chat_threads.get(thread_key) || this.item.env.smart_chat_threads.active_thread;
    if (thread.current_completion.key !== this.item.key) return console.log("ThreadCompletionAdapter: skipping thread, not the current completion");
    const thread_collection = this.item.env.smart_chat_threads;
    if (!thread_collection) {
      console.warn("No 'smart_chat_threads' collection found in environment; skipping thread adapter.");
      return;
    }
    const thread_item = thread_collection.get(thread_key);
    if (!thread_item || !Array.isArray(thread_item.messages)) {
      console.warn(`Thread item '${thread_key}' not found or missing .data.messages array`);
      return;
    }
    if (!this.request.messages) {
      this.request.messages = [];
    }
    const prior_completions = thread_item.completions.slice(0, -1);
    for (let i = 0; i < prior_completions.length; i++) {
      const prior_completion = prior_completions[i];
      this.request.messages.push(...(await prior_completion.build_request()).messages || []);
      this.request.messages.push({ role: "assistant", content: prior_completion.response_text });
    }
    const seen = /* @__PURE__ */ new Set();
    this.request.messages = this.request.messages.filter((msg) => {
      const contentKey = Array.isArray(msg.content) ? JSON.stringify(msg.content) : msg.content;
      if (seen.has(contentKey)) return false;
      seen.add(contentKey);
      return true;
    });
  }
  /**
   * from_response: No post-processing needed for thread.
   * @returns {Promise<void>}
   */
  async from_response() {
    const thread = this.item.thread;
    if (!thread) return console.warn("No thread found");
    setTimeout(() => {
      thread.queue_save();
      thread.collection.process_save_queue();
    }, 1e3);
  }
};

// node_modules/smart-chat-obsidian/src/collections/smart_completions.js
smart_completions_default_config2.completion_adapters["ThreadCompletionAdapter"] = ThreadCompletionAdapter;
var smart_completions_default = smart_completions_default_config2;

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/smart_contexts.js
var SmartContexts = class extends Collection3 {
  static version = 0.1;
  /**
   * new_context
   * @param {object} data
   * @param {object} opts
   * @param {string[]} opts.add_items
   * @returns {SmartContext}
   */
  new_context(data = {}, opts = {}) {
    const item = new this.item_type(this.env, data);
    if (Array.isArray(opts.add_items)) item.add_items(opts.add_items);
    this.set(item);
    item.queue_save();
    return item;
  }
  /**
   * Default settings for all SmartContext items in this collection.
   * @readonly
   */
  get default_settings() {
    return {
      link_depth: 0,
      inlinks: false,
      follow_links_in_excluded: true,
      // NEW: toggle whether to follow outlinks from excluded headings
      excluded_headings: [],
      max_len: 0,
      // 0 => no enforced limit
      templates: {
        "-1": {
          before: `<context>
<file_tree>
{{FILE_TREE}}
</file_tree>`,
          after: `</context>`
        },
        "0": {
          before: `<context_primary path="{{ITEM_PATH}}" mtime="{{ITEM_TIME_AGO}}">`,
          after: `</context_primary>`
        },
        "1": {
          before: `<context_linked path="{{ITEM_PATH}}" mtime="{{ITEM_TIME_AGO}}">`,
          after: `</context_linked>`
        }
      }
    };
  }
  get compile_adapters() {
    if (!this._compile_adapters) {
      this._compile_adapters = {};
      Object.values(this.opts.compile_adapters || {}).forEach((cls) => {
        this._compile_adapters[cls.adapter_key] = cls;
      });
    }
    return this._compile_adapters;
  }
  get settings_config() {
    return {
      inlinks: {
        name: "In-links",
        description: "Include inbound links from other items?",
        type: "toggle"
      },
      excluded_headings: {
        name: "Excluded headings",
        description: "Headings/patterns to exclude; use newline to separate multiple patterns. Case-sensitive",
        type: "textarea_array"
      },
      follow_links_in_excluded: {
        name: "Follow links in excluded headings?",
        description: "If off, any links found inside excluded heading sections are ignored (not followed).",
        type: "toggle"
      },
      context_explanation: {
        type: "html",
        value: `
          <div class="setting-explanation">
            <h5>Context templates</h5>
            <span>Included once in the final output at the beginning (before_context) and end (after_context).</span>
            <br>
            <br>
            <span>Available variables:</span>
            <ul>
              <li><code>{{FILE_TREE}}</code> - Shows hierarchical view of all files</li>
            </ul>
          </div>
        `
      },
      before_context: {
        setting: "templates.-1.before",
        name: "Before context",
        description: "Text inserted at the top of the final output.",
        type: "textarea"
      },
      after_context: {
        setting: "templates.-1.after",
        name: "After context",
        description: "Text inserted at the bottom of the final output.",
        type: "textarea"
      },
      item_explanation: {
        type: "html",
        value: `
          <div class="setting-explanation">
            <h5>Item templates</h5>
            <span>Included once for each item (before_item and after_item).</span>
            <br>
            <br>
            <span>Available variables:</span>
            <ul>
              <li><code>{{ITEM_PATH}}</code> - Full path of the item</li>
              <li><code>{{ITEM_NAME}}</code> - Filename of the item</li>
              <li><code>{{ITEM_EXT}}</code> - File extension</li>
              <li><code>{{ITEM_DEPTH}}</code> - Depth level of the item</li>
              <li><code>{{ITEM_TIME_AGO}}</code> - Time since the item was last modified</li>
            </ul>
          </div>
        `
      },
      before_item: {
        setting: "templates.0.before",
        name: "Before each primary item",
        description: "Text inserted before each depth=0 item.",
        type: "textarea"
      },
      after_item: {
        setting: "templates.0.after",
        name: "After each primary item",
        description: "Text inserted after each depth=0 item.",
        type: "textarea"
      },
      link_explanation: {
        type: "html",
        value: `
          <div class="setting-explanation">
            <h5>Link templates</h5>
            <span>Inserted before/after each link-based item (depth=1,2,...). 
                  Typically used to separate these items from the primary content.
                  <i>Note: links are treated similar to items but are aggregated after all items.</i>
            </span>
            <br>
            <br>
            <span>Available variables:</span>
            <ul>
              <li><code>{{ITEM_PATH}}</code> - Full path of the linked file</li>
              <li><code>{{ITEM_NAME}}</code> - Filename of the linked file</li>
              <li><code>{{ITEM_EXT}}</code> - File extension</li>
              <li><code>{{ITEM_DEPTH}}</code> - Depth level of the link</li>
              <li><code>{{ITEM_TIME_AGO}}</code> - Time since the linked file was last modified</li>
            </ul>
          </div>
        `
      },
      before_link: {
        setting: "templates.1.before",
        name: "Before link item",
        description: "Text inserted before each depth=1 link item.",
        type: "textarea"
      },
      after_link: {
        setting: "templates.1.after",
        name: "After link item",
        description: "Text inserted after each depth=1 link item.",
        type: "textarea"
      }
    };
  }
  get_ref(key) {
    const collection = key.includes("#") ? this.env.smart_blocks : this.env.smart_sources;
    return collection.get(key);
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/utils/get_snapshot.js
async function get_snapshot(ctx, opts = {}) {
  const snapshot = {
    items: {},
    // depth ⇒ { path ⇒ item }
    truncated_items: [],
    skipped_items: [],
    missing_items: [],
    images: [],
    char_count: opts.items ? Object.values(opts.items).reduce((p, i) => p + i.char_count, 0) : 0
  };
  const seen = new Set(Object.keys(opts.items || {}));
  const keys_at_depth = { 0: ctx.get_item_keys_by_depth(0) };
  const max_depth = opts.link_depth ?? 0;
  for (let depth = 0; depth <= max_depth; depth++) {
    const depth_keys = keys_at_depth[depth] || [];
    if (!depth_keys.length) continue;
    const ctx_items = ctx.get_context_items(depth_keys);
    const curr_depth = snapshot.items[depth] = {};
    for (const item of ctx_items) {
      try {
        await item.add_to_snapshot(snapshot, { ...opts, depth });
        seen.add(item.path);
      } catch (err) {
        snapshot.missing_items.push(item.path);
      }
    }
    if (depth !== max_depth) {
      const accumulate = new Set(keys_at_depth[depth + 1] || []);
      for (const context_item of Object.values(curr_depth)) {
        if (!context_item) continue;
        if (opts.inlinks) {
          const inlinks = context_item.inlinks ?? context_item.ref?.inlinks ?? [];
          inlinks.forEach((p) => {
            if (!seen.has(p)) accumulate.add(p);
          });
        }
        const outlinks = context_item.outlinks ?? context_item.ref?.outlinks ?? [];
        outlinks.forEach((p) => {
          if (!seen.has(p)) accumulate.add(p);
        });
      }
      keys_at_depth[depth + 1] = Array.from(accumulate);
    }
  }
  if (opts.items) {
    snapshot.items[0] = { ...snapshot.items[0], ...opts.items };
  }
  return snapshot;
}

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/utils/merge_context_opts.js
function merge_context_opts(context_item, input_opts = {}) {
  const cset = context_item.collection.settings || {};
  const local_opts = context_item.data.context_opts || {};
  const merged_templates = {
    ...cset.templates ? JSON.parse(JSON.stringify(cset.templates)) : {},
    ...local_opts.templates && typeof local_opts.templates === "object" ? local_opts.templates : {},
    ...input_opts.templates && typeof input_opts.templates === "object" ? input_opts.templates : {}
  };
  return {
    ...input_opts,
    link_depth: input_opts.link_depth ?? local_opts.link_depth ?? cset.link_depth ?? 0,
    inlinks: input_opts.inlinks ?? local_opts.inlinks ?? Boolean(cset.inlinks),
    excluded_headings: input_opts.excluded_headings ?? local_opts.excluded_headings ?? (Array.isArray(cset.excluded_headings) ? [...cset.excluded_headings] : []),
    max_len: input_opts.max_len ?? local_opts.max_len ?? cset.max_len ?? 0,
    templates: merged_templates
  };
}

// node_modules/smart-chat-obsidian/node_modules/smart-blocks/parsers/markdown.js
function parse_markdown_blocks3(markdown, opts = {}) {
  const { start_index = 1, line_keys = false } = opts;
  const lines = markdown.split("\n");
  const result = {};
  const heading_stack = [];
  const heading_lines = {};
  const heading_counts = {};
  const sub_block_counts = {};
  const subheading_counts = {};
  const task_lines = [];
  let current_list_item = null;
  let current_content_block = null;
  let in_frontmatter = false;
  let frontmatter_started = false;
  const root_heading_key = "#";
  let in_code_block = false;
  sub_block_counts[root_heading_key] = 0;
  for (let i = 0; i < lines.length; i++) {
    const line_number = i + start_index;
    const line = lines[i];
    const trimmed_line = line.trim();
    if (trimmed_line === "---") {
      if (!frontmatter_started) {
        frontmatter_started = true;
        in_frontmatter = true;
        heading_lines["#---frontmatter---"] = [line_number, null];
        continue;
      } else if (in_frontmatter) {
        in_frontmatter = false;
        heading_lines["#---frontmatter---"][1] = line_number;
        continue;
      }
    }
    if (in_frontmatter) {
      continue;
    }
    if (!in_code_block && /^[-*+]\s+\[(?: |x|X)\]/.test(trimmed_line)) {
      task_lines.push(line_number);
    }
    if (trimmed_line.startsWith("```")) {
      in_code_block = !in_code_block;
      if (!current_content_block) {
        const parent_key = heading_stack.length > 0 ? heading_stack[heading_stack.length - 1].key : root_heading_key;
        if (parent_key === root_heading_key && !heading_lines[root_heading_key]) {
          heading_lines[root_heading_key] = [line_number, null];
        }
        if (parent_key === root_heading_key) {
          current_content_block = { key: root_heading_key, start_line: line_number };
          if (heading_lines[root_heading_key][1] === null || heading_lines[root_heading_key][1] < line_number) {
            heading_lines[root_heading_key][1] = null;
          }
        } else {
          if (sub_block_counts[parent_key] === void 0) {
            sub_block_counts[parent_key] = 0;
          }
          sub_block_counts[parent_key] += 1;
          const n = sub_block_counts[parent_key];
          const key = `${parent_key}#{${n}}`;
          heading_lines[key] = [line_number, null];
          current_content_block = { key, start_line: line_number };
        }
      }
      continue;
    }
    const heading_match = trimmed_line.match(/^(#{1,6})\s*(.+)$/);
    if (heading_match && !in_code_block) {
      const level = heading_match[1].length;
      let title = heading_match[2].trim();
      while (heading_stack.length > 0 && heading_stack[heading_stack.length - 1].level >= level) {
        const finished_heading = heading_stack.pop();
        if (heading_lines[finished_heading.key][1] === null) {
          heading_lines[finished_heading.key][1] = line_number - 1;
        }
      }
      if (heading_stack.length === 0 && heading_lines[root_heading_key] && heading_lines[root_heading_key][1] === null) {
        heading_lines[root_heading_key][1] = line_number - 1;
      }
      if (current_content_block) {
        if (heading_lines[current_content_block.key][1] === null) {
          heading_lines[current_content_block.key][1] = line_number - 1;
        }
        current_content_block = null;
      }
      if (current_list_item) {
        if (heading_lines[current_list_item.key][1] === null) {
          heading_lines[current_list_item.key][1] = line_number - 1;
        }
        current_list_item = null;
      }
      let parent_key = "";
      let parent_level = 0;
      if (heading_stack.length > 0) {
        parent_key = heading_stack[heading_stack.length - 1].key;
        parent_level = heading_stack[heading_stack.length - 1].level;
      } else {
        parent_key = "";
        parent_level = 0;
      }
      if (heading_stack.length === 0) {
        heading_counts[title] = (heading_counts[title] || 0) + 1;
        if (heading_counts[title] > 1) {
          title += `[${heading_counts[title]}]`;
        }
      } else {
        if (!subheading_counts[parent_key]) {
          subheading_counts[parent_key] = {};
        }
        subheading_counts[parent_key][title] = (subheading_counts[parent_key][title] || 0) + 1;
        const count = subheading_counts[parent_key][title];
        if (count > 1) {
          title += `#{${count}}`;
        }
      }
      const level_diff = level - parent_level;
      const hashes = "#".repeat(level_diff);
      const key = parent_key + hashes + title;
      heading_lines[key] = [line_number, null];
      sub_block_counts[key] = 0;
      heading_stack.push({ level, title, key });
      continue;
    }
    const list_match = line.match(/^(\s*)([-*]|\d+\.) (.+)$/);
    if (list_match && !in_code_block) {
      const indentation = list_match[1].length;
      if (indentation === 0) {
        if (current_list_item) {
          if (heading_lines[current_list_item.key][1] === null) {
            heading_lines[current_list_item.key][1] = line_number - 1;
          }
          current_list_item = null;
        }
        if (current_content_block && current_content_block.key !== root_heading_key) {
          if (heading_lines[current_content_block.key][1] === null) {
            heading_lines[current_content_block.key][1] = line_number - 1;
          }
          current_content_block = null;
        }
        let parent_key = heading_stack.length > 0 ? heading_stack[heading_stack.length - 1].key : root_heading_key;
        if (parent_key === root_heading_key && !heading_lines[root_heading_key]) {
          heading_lines[root_heading_key] = [line_number, null];
        }
        if (sub_block_counts[parent_key] === void 0) {
          sub_block_counts[parent_key] = 0;
        }
        sub_block_counts[parent_key] += 1;
        const n = sub_block_counts[parent_key];
        let key;
        if (line_keys) {
          const content_without_task = list_match[3].replace(/^\[(?: |x|X)\]\s*/, "");
          const words = get_longest_words_in_order2(content_without_task, 10);
          key = `${parent_key}#${words}`;
        } else {
          key = `${parent_key}#{${n}}`;
        }
        heading_lines[key] = [line_number, null];
        current_list_item = { key, start_line: line_number };
        continue;
      }
      if (current_list_item) {
        continue;
      }
    }
    if (trimmed_line === "") {
      continue;
    }
    if (!current_content_block) {
      if (current_list_item) {
        if (heading_lines[current_list_item.key][1] === null) {
          heading_lines[current_list_item.key][1] = line_number - 1;
        }
        current_list_item = null;
      }
      let parent_key = heading_stack.length > 0 ? heading_stack[heading_stack.length - 1].key : root_heading_key;
      if (parent_key === root_heading_key) {
        if (!heading_lines[root_heading_key]) {
          heading_lines[root_heading_key] = [line_number, null];
        }
        if (heading_lines[root_heading_key][1] === null || heading_lines[root_heading_key][1] < line_number) {
          heading_lines[root_heading_key][1] = null;
        }
        current_content_block = { key: root_heading_key, start_line: line_number };
      } else {
        if (sub_block_counts[parent_key] === void 0) {
          sub_block_counts[parent_key] = 0;
        }
        sub_block_counts[parent_key] += 1;
        const n = sub_block_counts[parent_key];
        const key = `${parent_key}#{${n}}`;
        heading_lines[key] = [line_number, null];
        current_content_block = { key, start_line: line_number };
      }
    }
  }
  const total_lines = lines.length;
  while (heading_stack.length > 0) {
    const finished_heading = heading_stack.pop();
    if (heading_lines[finished_heading.key][1] === null) {
      heading_lines[finished_heading.key][1] = total_lines + start_index - 1;
    }
  }
  if (current_list_item) {
    if (heading_lines[current_list_item.key][1] === null) {
      heading_lines[current_list_item.key][1] = total_lines + start_index - 1;
    }
    current_list_item = null;
  }
  if (current_content_block) {
    if (heading_lines[current_content_block.key][1] === null) {
      heading_lines[current_content_block.key][1] = total_lines + start_index - 1;
    }
    current_content_block = null;
  }
  if (heading_lines[root_heading_key] && heading_lines[root_heading_key][1] === null) {
    heading_lines[root_heading_key][1] = total_lines + start_index - 1;
  }
  for (const key in heading_lines) {
    result[key] = heading_lines[key];
  }
  return { blocks: result, task_lines };
}
function get_longest_words_in_order2(line, n = 3) {
  const words = line.split(/\s+/).sort((a, b) => b.length - a.length).slice(0, n);
  return words.sort((a, b) => line.indexOf(a) - line.indexOf(b)).join(" ");
}

// node_modules/smart-chat-obsidian/node_modules/smart-file-system/utils/glob_to_regex.js
function create_regex3(pattern, { case_sensitive, extended_glob, windows_paths }) {
  const regex_pattern = glob_to_regex_pattern3(pattern, extended_glob);
  const adjusted_pattern = adjust_for_windows_paths3(regex_pattern, windows_paths);
  const flags = case_sensitive ? "" : "i";
  return new RegExp(`^${adjusted_pattern}$`, flags);
}
function adjust_for_windows_paths3(pattern, windows_paths) {
  return windows_paths ? pattern.replace(/\\\//g, "[\\\\/]").replace(/\\\\\\/g, "[\\\\/]") : pattern;
}
function glob_to_regex_pattern3(pattern, extended_glob) {
  let in_class = false;
  let in_brace = 0;
  let result = "";
  for (let i = 0; i < pattern.length; i++) {
    const char = pattern[i];
    switch (char) {
      case "\\":
        if (i + 1 < pattern.length) {
          result += `\\${pattern[i + 1]}`;
          i++;
        } else {
          result += "\\\\";
        }
        break;
      case "/":
        result += "\\/";
        break;
      case "[":
        if (!in_class) {
          const closingIndex = pattern.indexOf("]", i + 1);
          if (closingIndex === -1) {
            result += "\\[";
          } else {
            in_class = true;
            if (pattern[i + 1] === "!") {
              result += "[^";
              i++;
            } else {
              result += "[";
            }
          }
        } else {
          result += "\\[";
        }
        break;
      case "]":
        if (in_class) {
          in_class = false;
          result += "]";
        } else {
          result += "\\]";
        }
        break;
      case "{":
        if (!in_class) {
          const closingIndex = pattern.indexOf("}", i + 1);
          if (closingIndex === -1) {
            result += "\\{";
          } else {
            in_brace++;
            result += "(";
          }
        } else {
          result += "\\{";
        }
        break;
      case "}":
        if (!in_class && in_brace > 0) {
          in_brace--;
          result += ")";
        } else {
          result += "\\}";
        }
        break;
      case ",":
        if (!in_class && in_brace > 0) {
          result += "|";
        } else {
          result += ",";
        }
        break;
      case "*":
        if (!in_class) {
          if (i + 1 < pattern.length && pattern[i + 1] === "*") {
            result += ".*";
            i++;
          } else {
            result += "[^/]*";
          }
        } else {
          result += "\\*";
        }
        break;
      case "?":
        if (!in_class) {
          result += "[^/]";
        } else {
          result += "\\?";
        }
        break;
      // We escape these to ensure they remain literal
      case "(":
      case ")":
      case "+":
      case "|":
      case "^":
      case "$":
      case ".":
        result += `\\${char}`;
        break;
      default:
        result += char;
        break;
    }
  }
  if (in_class) {
    result += "]";
    in_class = false;
  }
  if (extended_glob) {
    result = result.replace(/\\\+\\\((.*?)\\\)/g, "($1)+").replace(/\\\@\\\((.*?)\\\)/g, "($1)").replace(/\\\!\\\((.*?)\\\)/g, "(?!$1).*").replace(/\\\?\\\((.*?)\\\)/g, "($1)?").replace(/\\\*\\\((.*?)\\\)/g, "($1)*");
  }
  return result;
}
function glob_to_regex3(pattern, options = {}) {
  const default_options = {
    case_sensitive: true,
    extended_glob: false,
    windows_paths: false
  };
  const merged_options = { ...default_options, ...options };
  if (pattern === "") {
    return /^$/;
  }
  if (pattern === "*" && !merged_options.windows_paths) {
    return /^[^/]+$/;
  }
  if (pattern === "**" && !merged_options.windows_paths) {
    return /^.+$/;
  }
  return create_regex3(pattern, merged_options);
}

// node_modules/smart-chat-obsidian/node_modules/smart-file-system/utils/match_glob.js
function match_glob(pattern, str, options = {}) {
  const regex = glob_to_regex3(pattern, options);
  return regex.test(str);
}

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/utils/respect_exclusions.js
function normalise_heading(heading) {
  return heading.replace(/\[\d+\]$/, "").replace(/#\{\d+\}$/, "").trim();
}
function strip_excluded_headings(content, excluded_list) {
  const { blocks: blocks_map, task_lines } = parse_markdown_blocks3(content, { start_index: 0 });
  if (!Object.keys(blocks_map).length) return [content, [], 0];
  const exclusions = [];
  let lines = content.split("\n");
  for (const [block_key, line_range] of Object.entries(blocks_map)) {
    const parts = block_key.split("#").filter(Boolean);
    if (!parts.length) continue;
    const raw_heading = parts[parts.length - 1].trim();
    const heading = normalise_heading(raw_heading);
    for (const pattern of excluded_list) {
      if (match_glob(pattern, heading, { case_sensitive: false })) {
        for (let i = line_range[0]; i <= line_range[1]; i++) {
          lines[i] = null;
        }
        exclusions.push(pattern);
        break;
      }
    }
  }
  const new_content = lines.join("\n");
  const removed_char_count = content.length - new_content.length;
  return [new_content, exclusions, removed_char_count];
}

// node_modules/smart-chat-obsidian/node_modules/smart-sources/utils/get_markdown_links.js
function get_markdown_links3(content) {
  const result = [];
  const markdown_link_re = /\[([^\]]+?)\]\(([^)]+?)\)/g;
  const wikilink_re = /\[\[([^\|\]]+?)(?:\|([^\]]+?))?\]\]/g;
  const normalise_target = (raw) => {
    const trimmed = raw.trim();
    if (/^[a-zA-Z][\w+\-.]*:\/\//.test(trimmed)) return trimmed;
    try {
      return decodeURIComponent(trimmed);
    } catch (_) {
      return trimmed.replace(/%20/gi, " ");
    }
  };
  let m;
  while ((m = markdown_link_re.exec(content)) !== null) {
    const title = m[1];
    const target = normalise_target(m[2]);
    const line_no = content.slice(0, m.index).split("\n").length;
    result.push({ title, target, line: line_no });
  }
  while ((m = wikilink_re.exec(content)) !== null) {
    const target_raw = m[1];
    const title = m[2] || target_raw;
    const target = normalise_target(target_raw);
    const line_no = content.slice(0, m.index).split("\n").length;
    result.push({ title, target, line: line_no });
  }
  return result.sort(
    (a, b) => a.line - b.line || a.target.localeCompare(b.target)
  );
}

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/context_item.js
var BaseContextItem = class {
  constructor(ctx, key) {
    ctx.env.create_env_getter(this);
    this.ctx = ctx;
    this.key = key;
    const ctx_data = ctx.data?.context_items?.[key];
    if (ctx_data && typeof ctx_data === "object" && "content" in ctx_data) {
      this.content = String(ctx_data.content ?? "");
    }
  }
  get name() {
    return this.path.split("/").pop();
  }
  /**
   * @deprecated use key
   */
  get path() {
    return this.key;
  }
  get exists() {
    return true;
  }
  /* fallback empty link arrays so link‑depth traversal works */
  get inlinks() {
    return this._inlinks ?? [];
  }
  get outlinks() {
    return this._outlinks ?? [];
  }
  set inlinks(links) {
    this._inlinks = Array.isArray(links) ? links : [];
  }
  set outlinks(links) {
    links = links.map((link) => {
      const link_ref = link?.target || link;
      if (link_ref.startsWith("http")) return null;
      const link_path = this.env.smart_sources.fs.get_link_target_path(link_ref, this.key);
      return link_path;
    }).filter((link_path) => link_path);
    this._outlinks = Array.isArray(links) ? links : [];
  }
  async add_to_snapshot(snapshot, opts = {}) {
    if (typeof this.content !== "string") return;
    this.outlinks = get_markdown_links3(this.content);
    const [clean, exclusions, excluded_char_count] = strip_excluded_headings(this.content, opts.excluded_headings ?? []);
    const depth = opts.depth || 0;
    if (!snapshot.items[depth]) snapshot.items[depth] = {};
    snapshot.items[depth][this.key] = {
      path: this.key,
      content: clean,
      char_count: clean.length,
      mtime: Date.now(),
      // inline items have no mtime
      exclusions,
      excluded_char_count,
      inlinks: this.inlinks,
      outlinks: this.outlinks
    };
    snapshot.char_count += clean.length;
  }
  async find_connections(opts = {}) {
    return await this.env.smart_sources.lookup({ hypotheticals: [
      this.data.content
    ] });
  }
};
var SourceContextItem = class extends BaseContextItem {
  constructor(context, ref) {
    super(context, ref.key);
    this.ref = ref;
  }
  get inlinks() {
    return this.ref.inlinks || [];
  }
  get outlinks() {
    return this.ref.outlinks || [];
  }
  get exists() {
    return !!(this.ref && !this.ref?.is_gone);
  }
  async add_to_snapshot(snapshot, opts) {
    let raw = await this.ref.read();
    if (!opts.calculating && raw.split("\n").some((line) => line.startsWith("```dataview"))) {
      raw = await this.ref.read({ render_output: true });
      this.ref.data.outlinks = get_markdown_links3(raw);
    }
    const [content, exclusions, excluded_char_count] = strip_excluded_headings(raw, opts.excluded_headings ?? []);
    if (!snapshot.items) snapshot.items = [];
    if (!snapshot.items[0]) snapshot.items[0] = {};
    snapshot.items[0][this.path] = {
      ref: this.ref,
      path: this.path,
      mtime: this.ref.mtime,
      content,
      char_count: content.length,
      exclusions,
      excluded_char_count
    };
    snapshot.char_count += content.length;
  }
  async find_connections(opts = {}) {
    return await this.ref.find_connections(opts);
  }
};
var ImageContextItem = class extends BaseContextItem {
  async add_to_snapshot(snapshot) {
    if (!snapshot.images) snapshot.images = [];
    snapshot.images.push(this.path);
  }
};
var PdfContextItem = class extends BaseContextItem {
  async add_to_snapshot(snapshot) {
    if (!snapshot.pdfs) snapshot.pdfs = [];
    snapshot.pdfs.push(this.path);
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/utils/image_extension_regex.js
var image_extension_regex = /\.(png|jpe?g|gif|bmp|webp|svg|ico|mp4)$/i;

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/utils/filter_redundant_context_items.js
function filter_redundant_context_items(items = []) {
  const parents = /* @__PURE__ */ new Set();
  for (const { key } of items) {
    if (!key.includes("#")) parents.add(key);
  }
  return items.filter(({ key }) => {
    if (!key.includes("#")) return true;
    const base = key.split("#")[0];
    return !parents.has(base);
  });
}

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/smart_context.js
var SmartContext = class extends CollectionItem3 {
  static version = 1;
  static get defaults() {
    return {
      data: {
        key: "",
        context_items: {},
        context_opts: {}
      }
    };
  }
  /**
   * add_item
   * @param {string|object} item
   */
  add_item(item) {
    let key;
    if (typeof item === "object") {
      key = item.key || item.path;
    } else {
      key = item;
    }
    const context_item = {
      d: 0,
      ...typeof item === "object" ? item : {}
    };
    if (!key) return console.error("SmartContext: add_item called with invalid item", item);
    this.data.context_items[key] = context_item;
    this.queue_save();
  }
  /**
   * add_items
   * @param {string[]|object[]} items
   */
  add_items(items) {
    if (!Array.isArray(items)) {
      items = [items];
    }
    items.forEach((item) => this.add_item(item));
  }
  /**
   * Return *ContextItem* instances (any depth) for a given key array.
   * @param {string[]} keys
   */
  get_context_items(keys = this.context_item_keys) {
    return filter_redundant_context_items(
      keys.map((k) => this.get_context_item(k)).filter(Boolean)
    );
  }
  /** Map any key to ContextItem subclass */
  get_context_item(key) {
    const ctx_item = this.data?.context_items?.[key];
    if (ctx_item && typeof ctx_item === "object" && "content" in ctx_item) {
      return new BaseContextItem(this, key);
    }
    if (image_extension_regex.test(key)) return new ImageContextItem(this, key);
    if (key.endsWith(".pdf")) return new PdfContextItem(this, key);
    const src = this.env.smart_sources.get(key) || this.env.smart_blocks.get(key);
    return src ? new SourceContextItem(this, src) : null;
  }
  /**
   * get_snapshot
   * Gathers items at depth=0..link_depth, respects exclusions, and tracks truncated/skipped items.
   * @async
   * @param {object} opts
   * @returns {Promise<object>} context_snapshot - an object with .items[0], .items[1], etc.
   */
  async get_snapshot(opts = {}) {
    const merged_opts = merge_context_opts(this, opts);
    return await get_snapshot(this, merged_opts);
  }
  /**
   * compile
   * Delegates to a compile adapter from this.collection.compile_adapters.
   * By default uses the 'default' adapter unless opts.adapter_key is given.
   * @async
   * @param {object} [opts={}]
   * @returns {Promise<object|string>} Typically {context, stats} from the template adapter
   */
  async compile(opts = {}) {
    const adapter_key = opts.adapter_key || "default";
    const adapter_class = this.collection.compile_adapters[adapter_key];
    if (!adapter_class) {
      throw new Error(`SmartContext: Compile adapter not found: ${adapter_key}`);
    }
    const adapter = new adapter_class(this);
    return adapter.compile(opts);
  }
  /**
   * @method get_ref
   * @deprecated moving to using ContextItem instances
   * Looks up a reference in the environment. Distinguishes block vs source by '#' presence.
   */
  get_ref(key) {
    return this.collection.get_ref(key);
  }
  get_item_keys_by_depth(depth) {
    return Object.keys(this.data.context_items).filter((k) => {
      const item_depth = this.data.context_items[k].d;
      if (item_depth === depth) return true;
      if (typeof item_depth === "undefined" && depth === 0) return true;
      return false;
    });
  }
  get context_item_keys() {
    return Object.keys(this.data?.context_items || {});
  }
  /**
   * If no user-provided key, fallback to a stable hash of the context_items.
   */
  get key() {
    if (!this.data.key) {
      this.data.key = Date.now().toString();
    }
    return this.data.key;
  }
  get has_context_items() {
    return Object.keys(this.data.context_items || {}).length > 0;
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/adapters/_adapter.js
var ContextCompileAdapter = class {
  /**
   * @static
   * @type {string}
   * Identifies this adapter by a short, unique key. The collection
   * will store it in a map at `collection.compile_adapters[adapter_key]`.
   */
  static adapter_key = "raw";
  /**
   * @constructor
   * @param {SmartContext} context_item
   */
  constructor(context_item) {
    this.context_item = context_item;
  }
  /**
   * @method compile
   * Returns the snapshot as-is (no further transformations).
   * @param {object} [opts={}]
   * @returns {Promise<object>} The snapshot from get_snapshot().
   */
  async compile(opts = {}) {
    const snapshot = await this.context_item.get_snapshot(opts);
    return snapshot;
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-utils/file_tree.js
function build_file_tree_string3(paths = []) {
  if (!Array.isArray(paths) || paths.length === 0) return "";
  const root = {};
  for (const path of paths) {
    const isFolder = is_folder_path3(path);
    const parts = path.split("/").filter(Boolean);
    let node = root;
    for (let i = 0; i < parts.length; i++) {
      const part = parts[i];
      const isLast = i === parts.length - 1;
      if (isLast) {
        if (isFolder) {
          node[part] = node[part] ?? { __isExplicitFolder: true };
        } else {
          node[part] = null;
        }
      } else {
        node = node[part] ??= {};
      }
    }
  }
  compress_single_child_dirs3(root);
  return build_tree_string3(root).trimEnd();
}
function is_folder_path3(path) {
  return typeof path === "string" && path.endsWith("/");
}
function compress_single_child_dirs3(node) {
  if (!node || typeof node !== "object") return;
  for (const key of Object.keys(node)) {
    const child = node[key];
    if (child && typeof child === "object") {
      if (child.__isExplicitFolder) {
        delete child.__isExplicitFolder;
        compress_single_child_dirs3(child);
        continue;
      }
      const childKeys = Object.keys(child);
      if (childKeys.length === 1 && child[childKeys[0]] !== null && !child[childKeys[0]].__isExplicitFolder) {
        const mergedKey = `${key}/${childKeys[0]}`;
        node[mergedKey] = child[childKeys[0]];
        delete node[key];
        compress_single_child_dirs3(node[mergedKey]);
      } else {
        compress_single_child_dirs3(child);
      }
    }
  }
}
function build_tree_string3(node, prefix = "") {
  let output = "";
  const entries = Object.entries(node).sort((a, b) => {
    const aIsDir = a[1] !== null;
    const bIsDir = b[1] !== null;
    if (aIsDir && !bIsDir) return -1;
    if (!aIsDir && bIsDir) return 1;
    return a[0].localeCompare(b[0]);
  });
  entries.forEach(([name, child], idx) => {
    const isLast = idx === entries.length - 1;
    const connector = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
    if (child === null) {
      output += `${prefix}${connector}${name}
`;
    } else {
      output += `${prefix}${connector}${name}/
`;
      output += build_tree_string3(child, prefix + (isLast ? "    " : "\u2502   "));
    }
  });
  return output;
}

// node_modules/smart-chat-obsidian/node_modules/smart-utils/convert_to_time_ago.js
function convert_to_time_ago3(timestamp) {
  const now = Date.now();
  const ms = timestamp < 1e12 ? timestamp * 1e3 : timestamp;
  const diff_ms = now - ms;
  const seconds = Math.floor(diff_ms / 1e3);
  const intervals = [
    { label: "year", seconds: 31536e3 },
    { label: "month", seconds: 2592e3 },
    { label: "day", seconds: 86400 },
    { label: "hour", seconds: 3600 },
    { label: "minute", seconds: 60 },
    { label: "second", seconds: 1 }
  ];
  for (const interval of intervals) {
    const count = Math.floor(seconds / interval.seconds);
    if (count >= 1) {
      return `${count} ${interval.label}${count > 1 ? "s" : ""} ago`;
    }
  }
  return "just now";
}

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/utils/compiler.js
async function compile_snapshot(context_snapshot, merged_opts) {
  const depths = Object.keys(context_snapshot.items).map((d) => parseInt(d, 10)).sort((a, b) => a - b);
  const chunks = [];
  for (const depth of depths) {
    const items = context_snapshot.items[depth] || {};
    const { before_raw, after_raw } = get_templates_for_depth(depth, merged_opts);
    for (const [path, item] of Object.entries(items)) {
      const placeholders = build_item_placeholders(path, depth, item.mtime);
      chunks.push({
        path,
        mtime: item.mtime,
        before_tpl: replace_vars(before_raw, placeholders),
        item_text: item.content,
        after_tpl: replace_vars(after_raw, placeholders)
      });
    }
  }
  const skipped_items = new Set(context_snapshot.skipped_items || []);
  const truncated_items = new Set(context_snapshot.truncated_items || []);
  const max_len = merged_opts.max_len || 0;
  const result_pieces = [];
  for (const chunk of chunks) {
    if (!max_len) {
      const joined = [chunk.before_tpl, chunk.item_text, chunk.after_tpl].join("\n");
      result_pieces.push(joined);
      continue;
    }
    const template_len = chunk.before_tpl.length + chunk.after_tpl.length;
    const leftover_for_text = max_len - template_len;
    const text_len = chunk.item_text.length;
    if (text_len <= leftover_for_text) {
      const joined = [chunk.before_tpl, chunk.item_text, chunk.after_tpl].join("\n");
      result_pieces.push(joined);
    } else {
      truncated_items.add(chunk.path);
      const partial = chunk.item_text.slice(0, leftover_for_text);
      const joined = [chunk.before_tpl, partial, chunk.after_tpl].join("\n");
      result_pieces.push(joined);
    }
  }
  let raw_output = result_pieces.join("\n");
  const top_before_raw = merged_opts.templates?.["-1"]?.before || "";
  const top_after_raw = merged_opts.templates?.["-1"]?.after || "";
  const want_tree = top_before_raw.includes("{{FILE_TREE}}") || top_after_raw.includes("{{FILE_TREE}}");
  let file_tree_str = "";
  if (want_tree) {
    const all_paths = chunks.map((c) => c.path);
    file_tree_str = build_file_tree_string3(all_paths);
  }
  const wrap_before = replace_vars(top_before_raw, { FILE_TREE: file_tree_str });
  const wrap_after = replace_vars(top_after_raw, { FILE_TREE: file_tree_str });
  let final_context = "";
  const wrap_has_content = wrap_before.length > 0 || wrap_after.length > 0;
  if (!wrap_has_content) {
    final_context = raw_output + "\n";
  } else {
    final_context = wrap_before + "\n" + raw_output + "\n" + wrap_after + "\n";
  }
  const final_len = final_context.length;
  const stats = {
    char_count: final_len,
    depth_count: depths.length,
    truncated_items: Array.from(truncated_items),
    skipped_items: Array.from(skipped_items)
  };
  return {
    context: final_context.trim(),
    stats,
    images: context_snapshot.images,
    pdfs: context_snapshot.pdfs
  };
}
function get_templates_for_depth(depth, merged_opts) {
  let before_template_depth = depth;
  let before_raw = merged_opts.templates?.[before_template_depth]?.before;
  while (typeof before_raw !== "string" && before_template_depth > -1) {
    before_template_depth--;
    before_raw = merged_opts.templates?.[before_template_depth]?.before;
  }
  let after_template_depth = depth;
  let after_raw = merged_opts.templates?.[after_template_depth]?.after;
  while (typeof after_raw !== "string" && after_template_depth > -1) {
    after_template_depth--;
    after_raw = merged_opts.templates?.[after_template_depth]?.after;
  }
  return { before_raw, after_raw };
}
function build_item_placeholders(path, depth, mtime) {
  const name = path.substring(path.lastIndexOf("/") + 1);
  const dot_pos = name.lastIndexOf(".");
  const ext = dot_pos > 0 ? name.slice(dot_pos + 1) : "";
  return {
    ITEM_PATH: path.replace("external:", ""),
    ITEM_NAME: name,
    ITEM_EXT: ext,
    ITEM_DEPTH: depth,
    ITEM_TIME_AGO: convert_to_time_ago3(mtime)
  };
}
function replace_vars(template, replacements) {
  if (!template) return "";
  let out = template;
  for (const [k, v] of Object.entries(replacements)) {
    const safe_v = v !== void 0 && v !== null ? String(v) : "";
    out = out.replace(new RegExp(`\\{\\{${k}\\}\\}`, "g"), safe_v);
  }
  return out;
}

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/adapters/default.js
var DefaultContextCompileAdapter = class extends ContextCompileAdapter {
  static adapter_key = "default";
  /**
   * @method compile
   * Builds a snapshot via get_snapshot, then calls compile_snapshot.
   * @param {object} [opts={}]
   * @returns {Promise<{context: string, stats: object}>}
   */
  async compile(opts = {}) {
    const snapshot = await this.context_item.get_snapshot(opts);
    const merged_opts = merge_context_opts(this.context_item, opts);
    return compile_snapshot(snapshot, merged_opts);
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-contexts/index.js
var smart_contexts_default_config = {
  class: SmartContexts,
  data_adapter: AjsonSingleFileCollectionDataAdapter2,
  compile_adapters: {
    DefaultContextCompileAdapter
  },
  item_type: SmartContext
};

// node_modules/smart-chat-obsidian/src/collections/smart_contexts.js
var smart_contexts_default = smart_contexts_default_config;

// node_modules/smart-chat-obsidian/src/components/chat.css
var css_sheet4 = new CSSStyleSheet();
css_sheet4.replaceSync(`/**
 * chat.css
 *
 * Styles for top-level chat container, top bar, brand area, etc.
 * Note: No more body-level overrides.
 */

/* The main chat container */
.smart-chat-chat-container {
  display: flex;
  flex-direction: column;
  height: 100%;
  max-height: 100%;
  background: var(--background-primary);
  color: var(--text-normal);
  transition: background var(--anim-duration-moderate) var(--anim-motion-smooth);
  margin: 0;
  padding: 0;
}

/* The area that can contain multiple threads (currently just 1 in use) */
.smart-chat-threads-container {
  display: flex;
  flex: 1;
  overflow-y: auto;
  min-height: 0;
}

/* Top Bar */
.smart-chat-top-bar-container {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--size-4-2);
  padding: var(--size-4-3) var(--size-4-4);
  background: linear-gradient(
    135deg,
    var(--background-secondary-alt),
    var(--background-secondary)
  );
  border-bottom: var(--border-width) solid var(--background-modifier-border);
  position: sticky;
  top: 0;
  z-index: var(--layer-menu);
}
.smart-chat-top-bar-container button {
  background: none;
  border: none;
  color: var(--icon-color);
  cursor: pointer;
  display: flex;
  align-items: center;
  transition:
    color var(--anim-duration-fast) var(--anim-motion-smooth),
    opacity var(--anim-duration-fast) var(--anim-motion-smooth);
}
.smart-chat-top-bar-container button:hover {
  color: var(--icon-color-hover);
  opacity: var(--icon-opacity-hover);
}

.smart-chat-chat-name-input {
  flex: 1;
  background: var(--background-modifier-form-field);
  border: var(--border-width) solid var(--background-modifier-border);
  padding: var(--size-4-2) var(--size-4-3);
  border-radius: var(--radius-s);
  color: var(--text-normal);
  transition: border-color var(--anim-duration-fast) var(--anim-motion-smooth);
}
.smart-chat-chat-name-input:focus {
  outline: none;
  border-color: var(--interactive-accent-hover);
}

/* Brand area at bottom */
.smart-chat-brand {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  padding: var(--size-4-2);
  background-color: var(--background-secondary-alt);
  border-top: var(--border-width) solid var(--background-modifier-border);
  color: var(--text-muted);
  font-size: var(--font-ui-small);
  gap: var(--size-4-1);
  box-shadow: var(--shadow-s);
}
.smart-chat-brand svg.smart-connections {
  width: var(--size-4-6);
  height: var(--size-4-6);
  margin-bottom: var(--size-4-2);
  color: var(--text-normal);
}
.smart-chat-brand p {
  margin: 0;
  color: var(--text-faint);
}
.smart-chat-brand a {
  text-decoration: none;
  color: var(--text-accent);
  font-weight: 700;
}

@keyframes save_confirmation {
  0% { box-shadow: 0 0 0 0 rgba(46, 204, 113, 0.4); }
  70% { box-shadow: 0 0 0 10px rgba(46, 204, 113, 0); }
  100% { box-shadow: 0 0 0 0 rgba(46, 204, 113, 0); }
}

.smart-chat-name-saved {
  animation: save_confirmation 1s ease-out;
  background-color: rgba(46, 204, 113, 0.1);
  transition: background-color 1s ease;
}

.sc-tree-item .sc-tree-score {
  font-size: 0.8rem;
  cursor: pointer;
  font-weight: 500;
}`);
var chat_default = css_sheet4;

// node_modules/smart-chat-obsidian/src/chat_history_modal.js
var import_obsidian37 = require("obsidian");
var ChatHistoryModal = class extends import_obsidian37.FuzzySuggestModal {
  /**
   * @param {Object} plugin - Main plugin instance with `app` and `env`.
   */
  constructor(plugin) {
    super(plugin.app);
    this.plugin = plugin;
    this.env = this.plugin.env;
    this.shift_enter = false;
    this.setPlaceholder("Search existing chat threads...");
    this.setInstructions([
      { command: "Enter", purpose: "Open the selected thread" },
      { command: "Shift+Enter", purpose: "Delete the selected thread" }
    ]);
    this.inputEl.addEventListener("keydown", (e) => {
      if (e.key === "Enter" && e.shiftKey) {
        e.preventDefault();
        this.shift_enter = true;
        this.selectActiveSuggestion(e);
      }
    });
  }
  /**
   * Returns a list of thread items from `smart_chat_threads`.
   * @returns {Array<Object>}
   */
  getItems() {
    const threads = Object.values(this.env.smart_chat_threads.items);
    return threads.filter(
      (t) => !t.deleted && (t.completions.length > 1 || t.completions.length === 1 && t.completions[0].response || t.name && t.name !== t.key)
    );
  }
  /**
   * Called to get the display text for each thread in the suggestions list.
   * @param {Object} thread
   * @returns {string}
   */
  getItemText(thread) {
    return thread.name;
  }
  /**
   * Invoked when the user picks a suggestion.
   * If SHIFT+Enter was pressed, sets thread.confirm_deletion = true.
   * Then sets the chosen thread active and re-renders the chat UI.
   * @param {Object} thread
   */
  onChooseItem(thread) {
    if (this.shift_enter) {
      thread.confirm_deletion = true;
    }
    this.env.smart_chat_threads.active_thread = thread;
    SmartChatView.open(this.plugin);
  }
};

// node_modules/smart-chat-obsidian/node_modules/obsidian-smart-env/modals/story.js
var import_obsidian38 = require("obsidian");

// node_modules/smart-chat-obsidian/node_modules/obsidian-smart-env/utils/open_url_externally.js
function open_url_externally2(plugin, url) {
  const webviewer = plugin.app.internalPlugins?.plugins?.webviewer?.instance;
  window.open(url, webviewer ? "_external" : "_blank");
}

// node_modules/smart-chat-obsidian/node_modules/obsidian-smart-env/modals/story.js
var StoryModal2 = class _StoryModal extends import_obsidian38.Modal {
  constructor(plugin, { title, url }) {
    super(plugin.app);
    this.plugin = plugin;
    this.title = title;
    this.url = url;
  }
  static open(plugin, story_url) {
    const modal = new _StoryModal(plugin, story_url);
    modal.open();
  }
  onOpen() {
    this.titleEl.setText(this.title);
    this.modalEl.addClass("sc-story-modal");
    const container = this.contentEl.createEl("div", {
      cls: "sc-story-container"
    });
    if (import_obsidian38.Platform.isMobile) {
      const btn = container.createEl("button", { text: "Open in browser" });
      btn.addEventListener("click", () => {
        open_url_externally2(this.plugin, this.url);
        this.close();
      });
      return;
    } else {
      const webview = container.createEl("webview", {
        attr: { src: this.url, allowpopups: "" }
      });
      webview.style.width = "100%";
      webview.style.height = "100%";
      webview.addEventListener("did-navigate", (event) => {
        const new_url = event.url || webview.getAttribute("src");
        if (new_url && new_url !== this.url) {
          open_url_externally2(this.plugin, new_url);
          this.close();
        }
      });
    }
  }
  onClose() {
    this.contentEl.empty();
  }
};

// node_modules/smart-chat-obsidian/src/components/chat.js
function build_html24(chat_threads_collection, opts = {}) {
  return `<div>
    <div class="smart-chat-chat-container">
      <div class="smart-chat-top-bar-container">
        <input
          class="smart-chat-chat-name-input"
          type="text"
          value=""
          placeholder="Add name to save this chat"
        />
        <button title="New Chat" id="smart-chat-new-chat-button">
          ${this.get_icon_html("plus")}
        </button>
        <button title="Chat History" id="smart-chat-chat-history-button">
          ${this.get_icon_html("history")}
        </button>
        <button title="Chat Settings" id="smart-chat-chat-settings-button">
          ${this.get_icon_html("settings")}
        </button>
        <button title="Chat Help" id="smart-chat-help-button">
          ${this.get_icon_html("help-circle")}
        </button>
      </div>
      <div class="smart-chat-threads-container"></div>
      <div class="smart-chat-brand">
        ${this.get_icon_html("smart-chat")}
        <p>
          <a style="font-weight: 700;" href="https://smartconnections.app/">
            Smart Chat
          </a>
        </p>
      </div>
    </div>
  </div>`;
}
async function render30(chat_threads_collection, opts = {}) {
  const html = await build_html24.call(this, chat_threads_collection, opts);
  const frag = this.create_doc_fragment(html);
  chat_threads_collection.container = frag.querySelector(".smart-chat-chat-container");
  this.apply_style_sheet(chat_default);
  post_process27.call(this, chat_threads_collection, chat_threads_collection.container, opts);
  return chat_threads_collection.container;
}
async function post_process27(chat_threads_collection, container, opts = {}) {
  const env = chat_threads_collection.env;
  const threads_container = chat_threads_collection.container.querySelector(".smart-chat-threads-container");
  let active_thread = chat_threads_collection.active_thread;
  const plugin = env.smart_chat_plugin || env.smart_connections_plugin;
  if (!active_thread) {
    const all_threads = Object.values(chat_threads_collection.items).filter(
      (thread) => !thread.deleted
    );
    if (all_threads.length === 0) {
      console.log("No threads exist, creating a new thread...");
      active_thread = await chat_threads_collection.create_or_update();
      chat_threads_collection.active_thread = active_thread;
    } else {
      active_thread = all_threads[0];
      chat_threads_collection.active_thread = active_thread;
    }
  }
  if (threads_container && active_thread) {
    this.empty(threads_container);
    const thread_frag = await env.render_component("thread", active_thread, opts);
    threads_container.appendChild(thread_frag);
  }
  const thread_name_input = container.querySelector(".smart-chat-chat-name-input");
  if (thread_name_input) {
    thread_name_input.value = active_thread.name;
    const renameHandler = (current_thread) => {
      const new_val = thread_name_input.value.trim();
      if (!new_val || new_val === current_thread.name) {
        return;
      }
      rename_thread(chat_threads_collection, current_thread, new_val);
      thread_name_input.classList.add("smart-chat-name-saved");
      setTimeout(() => {
        thread_name_input.classList.remove("smart-chat-name-saved");
      }, 1e3);
    };
    const get_current_thread_from_event = (e) => {
      const chat_container = e.target.closest(".smart-chat-chat-container");
      const thread_key = chat_container.querySelector("[data-thread-key]").dataset.threadKey;
      return chat_threads_collection.get(thread_key);
    };
    thread_name_input.addEventListener("blur", (e) => {
      const current_thread = get_current_thread_from_event(e);
      renameHandler(current_thread);
    });
    thread_name_input.addEventListener("keydown", (e) => {
      if (e.key === "Enter") {
        const current_thread = get_current_thread_from_event(e);
        renameHandler(current_thread);
        thread_name_input.blur();
      }
    });
  }
  const new_chat_button = chat_threads_collection.container.querySelector("#smart-chat-new-chat-button");
  if (new_chat_button) {
    new_chat_button.addEventListener("click", async (e) => {
      e.preventDefault();
      const new_thread = await chat_threads_collection.create_or_update();
      chat_threads_collection.active_thread = new_thread;
      if (threads_container) {
        this.empty(threads_container);
      }
      const thread_frag = await env.render_component("thread", new_thread, opts);
      threads_container.appendChild(thread_frag);
      if (thread_name_input) {
        thread_name_input.value = new_thread.name;
      }
    });
  }
  const chat_settings_button = chat_threads_collection.container.querySelector("#smart-chat-chat-settings-button");
  if (chat_settings_button) {
    chat_settings_button.addEventListener("click", async (e) => {
      e.preventDefault();
      open_plugin_settings(plugin.app);
    });
  }
  const chat_history_button = chat_threads_collection.container.querySelector("#smart-chat-chat-history-button");
  if (chat_history_button) {
    chat_history_button.addEventListener("click", async (e) => {
      e.preventDefault();
      const chat_history_modal = new ChatHistoryModal(plugin);
      chat_history_modal.open();
    });
  }
  container.querySelector("#smart-chat-help-button")?.addEventListener(
    "click",
    () => StoryModal2.open(plugin, {
      title: "Getting Started With Smart Chat",
      url: "https://smartconnections.app/story/smart-connections-getting-started/?utm_source=smart-chat-help#page=chat-interface-1"
    })
  );
  return container;
}
async function open_plugin_settings(app2) {
  await app2.setting.open();
  await app2.setting.openTabById("smart-chat");
}
function rename_thread(collection, thread, new_name) {
  thread.data.name = new_name;
  thread.queue_save();
  collection.process_save_queue();
}

// node_modules/smart-chat-obsidian/src/utils/chat_context_utils.js
function thread_has_user_message(thread) {
  const last_two = thread?.completions?.slice(-2) || [];
  return last_two.some((c) => c?.data?.user_message);
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/views/context_selector_modal.js
var import_obsidian40 = require("obsidian");

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/node_modules/smart-file-system/utils/ignore.js
var TEXT_FILE_EXTENSIONS = [
  ".asm",
  ".bat",
  ".c",
  ".cfg",
  ".clj",
  ".conf",
  ".cpp",
  ".cs",
  ".css",
  ".csv",
  ".d",
  ".dart",
  ".ejs",
  ".elm",
  ".erl",
  ".f",
  ".go",
  ".gradle",
  ".groovy",
  ".h",
  ".hbs",
  ".hpp",
  ".hs",
  ".html",
  ".ini",
  ".jade",
  ".java",
  ".js",
  ".json",
  ".jsx",
  ".kt",
  ".less",
  ".lisp",
  ".log",
  ".lua",
  ".m",
  ".makefile",
  ".md",
  ".mdx",
  ".ml",
  ".mjs",
  ".mustache",
  ".pas",
  ".php",
  ".pl",
  ".properties",
  ".pug",
  ".py",
  ".r",
  ".rb",
  ".rs",
  ".sass",
  ".scala",
  ".scheme",
  ".scss",
  ".sh",
  ".sql",
  ".svelte",
  ".swift",
  ".tcl",
  ".tex",
  ".tpl",
  ".ts",
  ".tsx",
  ".twig",
  ".txt",
  ".vb",
  ".vue",
  ".xml",
  ".yaml",
  ".yml",
  ".canvas"
];
var NO_EXTENSION_TEXT_FILES = [
  "Dockerfile",
  "Appfile",
  "Matchfile",
  "Deliverfile",
  "Gymfile",
  "Fastfile",
  "Gemfile",
  "Guardfile",
  "Jenkinsfile",
  "Makefile",
  "Procfile",
  "Rakefile"
];
function is_text_file(file_path) {
  const last_dot_index = file_path.lastIndexOf(".");
  if (last_dot_index === -1) {
    if (NO_EXTENSION_TEXT_FILES.some((file) => file_path.endsWith(file))) {
      return true;
    }
    return false;
  }
  const ext = file_path.substring(last_dot_index).toLowerCase();
  return TEXT_FILE_EXTENSIONS.includes(ext);
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/get_all_leaves.js
function get_all_leaves(app2) {
  const leaves = [];
  const recurse = (container) => {
    if (container.children) {
      for (const child of container.children) {
        recurse(child);
      }
    }
    if (container.type === "leaf") {
      leaves.push(container);
    }
  };
  recurse(app2.workspace.rootSplit);
  return leaves;
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/get_all_open_file_paths.js
function get_all_open_file_paths(app2) {
  const leaves = get_all_leaves(app2);
  const files = /* @__PURE__ */ new Set();
  for (const leaf of leaves) {
    const file_path = leaf.view?.state?.file ?? leaf.view?.file?.path;
    if (file_path && is_text_file(file_path)) {
      files.add(file_path);
    }
  }
  return [...files];
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/is_leaf_visible.js
function is_leaf_visible(leaf) {
  const parent = leaf.parent;
  if (!parent) {
    return leaf.containerEl && leaf.containerEl.offsetParent !== null;
  }
  if ("activeTab" in parent) {
    return parent.activeTab === leaf && leaf.containerEl && leaf.containerEl.offsetParent !== null;
  }
  return leaf.containerEl && leaf.containerEl.offsetParent !== null;
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/get_visible_open_files.js
function get_visible_open_files(app2) {
  const leaves = get_all_leaves(app2);
  const visible_files = /* @__PURE__ */ new Set();
  for (const leaf of leaves) {
    if (!is_leaf_visible(leaf)) continue;
    const file = leaf.view?.file;
    if (file && is_text_file(file.path)) {
      visible_files.add(file);
    }
  }
  return [...visible_files].map((file) => file.path);
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/send_context_changed_event.js
function send_context_changed_event(container, next_ctx) {
  container.dispatchEvent(new CustomEvent("smart-env:context-changed", {
    detail: { context: next_ctx },
    bubbles: true,
    composed: true
  }));
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/get_selected_text.js
var import_obsidian39 = require("obsidian");

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/node_modules/obsidian-smart-env/utils/get_editor_selection.js
function get_editor_selection(editor) {
  if (editor && typeof editor.getSelection === "function") {
    return editor.getSelection();
  }
  return "";
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/get_selected_text.js
function get_selected_text(app2) {
  const view = app2.workspace.getActiveViewOfType(import_obsidian39.MarkdownView);
  return get_editor_selection(view?.editor);
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/node_modules/smart-collections/utils/get_item_display_name.js
function get_item_display_name4(key, show_full_path) {
  if (show_full_path) {
    return key.split("/").join(" > ").replace(".md", "");
  }
  return key.split("/").pop().replace(".md", "");
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/node_modules/smart-blocks/utils/get_block_display_name.js
function get_block_display_name3(key, show_full_path) {
  const [source_key, ...path_parts] = key.split("#").filter(Boolean);
  const source_name = get_item_display_name4(source_key, show_full_path);
  if (show_full_path) return [source_name, ...path_parts].join(" > ");
  const last_heading = path_parts.findLast((part) => part && part[0] !== "{");
  return [source_name, last_heading].join(" > ");
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/get_block_suggestions.js
function create_snippet(content, max = 100) {
  let truncated = content.replace(/\n/g, " ").replace(/[^A-Za-z0-9\.,]/g, " ");
  if (truncated.length > max) {
    const half = Math.floor((max - 3) / 2);
    truncated = truncated.slice(0, half) + "..." + truncated.slice(truncated.length - half);
  }
  return truncated;
}
function get_all_blocks(source2) {
  const entries = Object.entries(source2?.data?.blocks || {});
  const blocks = entries.map(([key, value]) => {
    key = source2.key + key;
    const existing = source2.env.smart_blocks.get(key);
    if (existing) return existing;
    const block = new source2.env.smart_blocks.item_type(source2.env, { key, lines: value });
    source2.env.smart_blocks.set(block);
    return block;
  });
  return blocks;
}
async function get_block_suggestions(source2) {
  const blocks = get_all_blocks(source2);
  const suggestions = [];
  for (const block of blocks) {
    let display_text = get_block_display_name3(block.key);
    const content = await block.read();
    const snippet = create_snippet(content);
    if (snippet) {
      display_text += (display_text.endsWith(" ") ? "" : ": ") + snippet + ` (${content.length} chars)`;
    }
    suggestions.push({
      item: block,
      path: display_text
    });
  }
  return suggestions;
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/get_all_tags.js
function get_all_tags(app2) {
  const tag_map = app2.metadataCache.getTags();
  return Object.keys(tag_map);
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/utils/get_files_with_tag.js
function get_files_with_tag(app2, tag) {
  const files = app2.vault.getMarkdownFiles();
  const result = [];
  for (const file of files) {
    const cache = app2.metadataCache.getFileCache(file);
    const tags = [
      ...cache?.tags?.map((t) => t.tag) || [],
      ...cache?.frontmatter?.tags || []
    ].map((t) => t.startsWith("#") ? t : `#${t}`);
    if (tags.includes(tag)) result.push(file.path);
  }
  return result;
}

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/views/context_selector_modal.js
var ContextSelectorModal = class extends import_obsidian40.FuzzySuggestModal {
  static open(env, opts) {
    const plugin = env.smart_context_plugin || env.smart_chat_plugin || env.smart_connections_plugin || env.plugin;
    if (!env.context_selector_modal) {
      if (env.smart_context_plugin?.ContextSelectorModal) {
        env.context_selector_modal = new env.smart_context_plugin.ContextSelectorModal(plugin, opts);
      } else env.context_selector_modal = new this(plugin, opts);
    }
    env.context_selector_modal.open(opts);
    return env.context_selector_modal;
  }
  static close(env) {
    env.context_selector_modal.close(true);
    env.context_selector_modal = null;
  }
  /**
   * @param {import('../../main.js').default} plugin
   * @param {Object} [opts={}]
   * @param {SmartContext} [opts.ctx]
   */
  constructor(plugin, opts = {}) {
    super(plugin.app);
    this.app = plugin.app;
    this.plugin = plugin;
    this.opts = opts;
    this.ctx = opts.ctx ?? null;
    this.setInstructions([
      { command: "Enter", purpose: "Add to context" },
      { command: "\u2318/Ctrl + Enter", purpose: "Open named context in builder" },
      { command: "Esc", purpose: "Close" }
    ]);
    this.plugin.env.create_env_getter(this);
    this.mod_key_was_held = false;
    this.containerEl.addEventListener("keydown", (e) => {
      if (e.key === "Escape") this.close(true);
    });
    this.modalEl.addEventListener("keydown", (e) => {
      if (e.key === "Enter") this.selectActiveSuggestion(e);
      if (e.key === "ArrowRight") {
        e.preventDefault();
        this.arrow_right = true;
        this.selectActiveSuggestion(e);
      }
    });
  }
  /* ───────────────────────────────────────────────────────────── */
  /**
   * Sort an array of context entries according to:
   *   – priority 0 → item has in/out‑links with the current active note
   *   – priority 1 → item modified within the last 24 h
   *   – priority 2 → all remaining items
   * Within each priority group items are ordered alphabetically.
   *
   * @param {Array<Object>} entries
   * @returns {Array<Object>} sorted copy
   */
  sort_context_entries(entries) {
    const active_file = this.app.workspace.getActiveFile();
    let active_src = null;
    if (active_file) {
      active_src = this.env.smart_sources.get(active_file.path);
    }
    const linked_keys = /* @__PURE__ */ new Set();
    if (active_src) {
      active_src.outlinks.forEach((k) => linked_keys.add(k));
      active_src.inlinks.forEach((k) => linked_keys.add(k));
    }
    const recent_cutoff = Date.now() - 24 * 60 * 60 * 1e3;
    const get_key = (entry) => entry?.item?.key || entry?.key || entry?.path || "";
    const get_src = (entry) => entry?.item || entry;
    const priority = (entry) => {
      const key = get_key(entry);
      const src = get_src(entry);
      if (linked_keys.has(key)) return 0;
      if (src?.mtime && src.mtime >= recent_cutoff) return 1;
      return 2;
    };
    return [...entries].sort((a, b) => {
      const pa = priority(a);
      const pb = priority(b);
      if (pa !== pb) return pa - pb;
      return get_key(a).localeCompare(get_key(b));
    });
  }
  /* ───────────────────────────────────────────────────────────── */
  ensure_ctx() {
    if (this.ctx) return this.ctx;
    this.ctx = this.env.smart_contexts.new_context({}, {
      add_items: this.opts.initial_context_items
    });
    return this.ctx;
  }
  async open(opts = this.opts) {
    if (opts.ctx) this.ctx = opts.ctx;
    if (opts.opener_container) this.add_opener_container(opts.opener_container);
    this.opts = opts;
    await this.render();
    super.open();
    this.focus_input();
  }
  async render() {
    this.modalEl.style.display = "flex";
    this.modalEl.style.flexDirection = "column";
    this.modalEl.style.height = "100%";
    const prompt_results = this.modalEl.querySelector(".prompt-results");
    if (prompt_results) {
      prompt_results.style.flex = "1 1 50%";
      prompt_results.style.minHeight = "0";
      prompt_results.style.overflowY = "auto";
    }
    const ctx = this.ensure_ctx();
    const selected = get_selected_text(this.app);
    if (selected) {
      const maxLen = 70;
      let truncated = selected.replace(/[^A-Za-z0-9]/gm, " ");
      if (selected.length > maxLen) {
        const half = Math.floor((maxLen - 3) / 2);
        truncated = selected.slice(0, half) + "..." + selected.slice(selected.length - half);
      }
      const key = `inline:${truncated}`;
      if (!this.ctx.data.context_items[key]) {
        this.ctx.data.context_items[key] = { content: selected };
      }
    }
    const builder_container = await this.env.render_component(
      "context_builder",
      ctx,
      {
        ...this.opts
      }
    );
    builder_container.addEventListener("smart-env:context-changed", (e) => {
      const updated_ctx = e.detail.context;
      this.ctx = updated_ctx;
      this.opts.ctx = updated_ctx;
      this.updateSuggestions();
      this.render();
    });
    builder_container.classList.add("modal");
    const actions_el = builder_container.querySelector(".sc-context-actions");
    if (ctx.has_context_items) {
      const clear_btn = document.createElement("button");
      clear_btn.textContent = "Clear";
      clear_btn.addEventListener("click", () => {
        ctx.data.context_items = {};
        ctx.queue_save();
        ctx.collection.process_save_queue();
        this.updateSuggestions();
        this.render();
      });
      actions_el.appendChild(clear_btn);
      const copy_btn = await this.env.render_component(
        "copy_to_clipboard_button",
        ctx
      );
      actions_el.appendChild(copy_btn);
    }
    if (!actions_el.querySelector('button[data-done="true"]')) {
      const done_btn = document.createElement("button");
      done_btn.dataset.done = "true";
      done_btn.textContent = "Done";
      done_btn.addEventListener("click", () => {
        this.close(true);
      });
      actions_el.appendChild(done_btn);
    }
    this.modalEl.querySelector(".sc-context-builder")?.remove();
    this.modalEl.prepend(builder_container);
    this.inputEl.focus();
  }
  get suggestions() {
    return this.opts.suggestions ?? [];
  }
  set suggestions(suggestions) {
    this.opts.suggestions = suggestions;
  }
  getItems() {
    const suggestions = this.suggestions?.filter(
      (s) => !s.item?.key || !this.ctx?.data?.context_items[s.item.key]
    );
    if (suggestions?.length) {
      const special_items2 = [];
      special_items2.push({
        name: "Back",
        items: {}
      });
      if (suggestions.some((s) => s.depth)) {
        const depth_1 = suggestions.filter((s) => s.depth <= 1);
        const depth_2 = suggestions.filter((s) => s.depth <= 2);
        const depth_3 = suggestions.filter((s) => s.depth <= 3);
        if (depth_1.length)
          special_items2.push({ name: `Add all to depth 1 (${depth_1.length})`, items: depth_1 });
        if (depth_2.length)
          special_items2.push({ name: `Add all to depth 2 (${depth_2.length})`, items: depth_2 });
        if (depth_3.length)
          special_items2.push({ name: `Add all to depth 3 (${depth_3.length})`, items: depth_3 });
      }
      if (suggestions.some((s) => s.score)) {
        const all_connections = suggestions.filter((s) => s.score);
        special_items2.push({
          name: `Add all connections (${all_connections.length})`,
          items: all_connections
        });
      }
      return [...special_items2, ...suggestions];
    }
    let special_items = this.opts.special_items ?? [];
    const visible_open_files = Array.from(get_visible_open_files(this.app)).map((f) => {
      return { item: this.env.smart_sources.get(f) };
    });
    if (visible_open_files.length) {
      special_items.push({
        name: "Visible open files",
        items: visible_open_files
      });
      const all_open_files = Array.from(get_all_open_file_paths(this.app)).map((f) => {
        return { item: this.env.smart_sources.get(f) };
      });
      if (all_open_files.length && visible_open_files.length !== all_open_files.length) special_items.push({
        name: "All open files",
        items: all_open_files
      });
    }
    special_items = special_items.map((i) => {
      if (i.items) {
        i.items = i.items.filter(
          (item) => item.item && !this.ctx?.data?.context_items[item.item.key]
        );
        i.name = `${i.name} (+${i.items.length})`;
      }
      return i;
    }).filter((i) => {
      if (i.items) return i.items.length > 0;
      return true;
    });
    const unselected = Object.values(this.env.smart_sources.items).filter(
      (src) => !this.ctx?.data?.context_items[src.key]
    );
    const folder_suggestions = (this.env.smart_sources.fs?.folder_paths || []).filter((p) => unselected.some((src) => src.key.startsWith(p))).map((p) => p.endsWith("/") ? p : p + "/").map((p) => ({ folder: p }));
    const tag_suggestions = get_all_tags(this.app).map((t) => ({ tag: t }));
    const sorted_unselected = this.sort_context_entries(unselected);
    return [...special_items, ...folder_suggestions, ...tag_suggestions, ...sorted_unselected];
  }
  getItemText(item) {
    if (item.score) {
      return `${item.score.toFixed(2)} | ${item.item.path}`;
    }
    if (item.depth) {
      return `${item.depth} | ${item.item.path}`;
    }
    if (item.items && item.name) {
      return item.name;
    }
    if (item.folder) {
      return item.folder;
    }
    if (item.tag) {
      return item.tag;
    }
    return item.path;
  }
  async onChooseSuggestion(selection, evt) {
    if (evt) this.mod_key_was_held = import_obsidian40.Keymap.isModifier(evt, "Mod");
    if (selection.item.name === "Back") {
      if (this.last_input_value) {
        this.inputEl.value = this.last_input_value;
        this.last_input_value = null;
      }
      this.suggestions = null;
      this.updateSuggestions();
      return;
    }
    this.ensure_ctx();
    if (this.arrow_right && selection.item.items) {
      this.arrow_right = false;
      this.load_suggestions(selection.item.items);
      return;
    }
    if (this.arrow_right && Object.keys(selection.item?.data?.blocks || {}).length) {
      this.arrow_right = false;
      const blocks = await get_block_suggestions(selection.item);
      this.load_suggestions(blocks);
      return;
    }
    if (selection.item.folder) {
      if (this.mod_key_was_held) {
        Object.keys(this.env.smart_sources.items).forEach((key) => {
          if (key.startsWith(selection.item.folder)) {
            this.ctx.data.context_items[key] = { d: 0 };
          }
        });
        this.mod_key_was_held = false;
        this.updateSuggestions();
        this.render();
        return;
      } else {
        this.arrow_right = false;
        const notes = Object.values(this.env.smart_sources.items).filter((src) => src.key.startsWith(selection.item.folder));
        this.load_suggestions(this.sort_context_entries(notes));
        return;
      }
    }
    if (selection.item.tag) {
      const paths = get_files_with_tag(this.app, selection.item.tag);
      if (this.mod_key_was_held) {
        paths.forEach((p) => {
          if (!this.ctx.data.context_items[p]) {
            this.ctx.data.context_items[p] = { d: 0 };
          }
        });
        this.mod_key_was_held = false;
        this.updateSuggestions();
        this.render();
        return;
      } else {
        this.arrow_right = false;
        const notes = paths.map((p) => this.env.smart_sources.get(p)).filter(Boolean);
        this.load_suggestions(this.sort_context_entries(notes));
        return;
      }
    }
    if (selection.item.items) {
      for (const special_item of selection.item.items) {
        if (!this.ctx.data.context_items[special_item.item.key]) {
          this.ctx.data.context_items[special_item.item.key] = { d: 0 };
        }
      }
      this.updateSuggestions();
      this.render();
      return;
    }
    const item = selection.item?.item ?? selection.item;
    if (item.key && !this.ctx.data.context_items[item.key]) {
      this.ctx.data.context_items[item.key] = { d: 0 };
      this.updateSuggestions();
      this.render();
    }
  }
  focus_input() {
    setTimeout(() => this.inputEl.focus(), 100);
  }
  close(should_close = false) {
    this.mod_key_was_held = false;
    if (should_close) super.close();
  }
  onClose(should_close = false) {
    while (this.opener_containers?.length) {
      const container = this.opener_containers.pop();
      if (container.isConnected) {
        send_context_changed_event(container, this.ctx);
      }
    }
  }
  /**
   * Add a container to the list of opener containers.
   * This is used to send context changed events when the modal is closed.
   * @param {HTMLElement|NodeList|Array<HTMLElement>|function} container - The container to add.
   * If a function is passed, it will be called to get the container(s).
   */
  add_opener_container(container) {
    if (!this.opener_containers) this.opener_containers = [];
    if (typeof container === "function") container = container();
    if (Array.isArray(container) || container instanceof NodeList) {
      container.forEach((c) => this.add_opener_container(c));
      return;
    }
    if (!(container instanceof HTMLElement)) {
      console.warn("ContextSelectorModal: opener_container must be an HTMLElement, received:", container);
      return;
    }
    if (!this.opener_containers.includes(container)) {
      this.opener_containers.push(container);
    }
  }
  load_suggestions(suggestions) {
    this.last_input_value = this.inputEl.value;
    this.inputEl.value = "";
    this.inputEl.focus();
    this.suggestions = suggestions;
    this.updateSuggestions();
    this.render();
  }
};

// node_modules/smart-chat-obsidian/node_modules/smart-context-obsidian/src/components/context_builder.css
var css_sheet5 = new CSSStyleSheet();
css_sheet5.replaceSync(`.sc-context-builder {
  padding: 6px 8px;
  display: flex;
  flex: 0 1 auto;
  flex-direction: column;
  width: 100%;
  overflow: auto;
  &.modal {
    max-height: 50%;
  }
  .sc-context-header {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    .sc-context-actions {
      display: flex;
      align-items: center;
      gap: 6px;
    }
  }
  .sc-context-body {
    flex: 1 1 auto;
    overflow: auto;
  }
  .sc-context-footer {
    flex: 0 1 auto;
    .sc-context-actions {
      display: flex;
      align-items: center;
      gap: 6px;
      justify-content: flex-end;
    }
  }
}


.sc-context-tree ul {
  list-style: none;
  margin: 0 0 0 .8em;
  padding: 0;
}
.sc-context-tree .sc-tree-item {
  gap: 4px;
  padding: 2px 0;
  overflow: auto;

  &.dir {
    &> span {
      opacity: 0.8;
    }
    &> span::after {
      content: '/';
    }
  }
  .sc-tree-label {
    cursor: pointer;
  }
}
.sc-context-tree .sc-tree-remove,
.sc-context-tree .sc-tree-connections,
.sc-context-tree .sc-tree-links {
  cursor: pointer;
  opacity: .8;
}
.sc-context-tree .sc-tree-remove:hover,
.sc-context-tree .sc-tree-connections:hover,
.sc-context-tree .sc-tree-links:hover {
  opacity: 1;
}`);
var context_builder_default = css_sheet5;

// node_modules/smart-chat-obsidian/src/components/chat_context_builder.js
function build_html25(ctx, opts = {}) {
  return `<div>
    <div class="sc-context-builder sc-chat-context-builder" data-context-key="${ctx.data.key}">
      <div class="sc-context-header"></div>
      <div class="sc-context-body">
        <div class="sc-context-tree"></div>
      </div>
      <div class="sc-context-footer">
        <div class="sc-context-stats"></div>
        <div class="sc-context-actions"></div>
      </div>
    </div>
  </div>`;
}
async function render31(ctx, opts = {}) {
  const html = build_html25.call(this, ctx, opts);
  const frag = this.create_doc_fragment(html);
  const ctx_container = frag.querySelector(".sc-context-builder");
  this.apply_style_sheet(context_builder_default);
  await post_process28.call(this, ctx, ctx_container, opts);
  return ctx_container;
}
async function post_process28(ctx, container, opts = {}) {
  const env = ctx?.env;
  const completion = opts.completion;
  const thread = completion.thread;
  const actions_el = container.querySelector(".sc-context-actions");
  this.empty(actions_el);
  completion.thread?.container?.querySelector(".smart-chat-add-context-button")?.remove();
  if (Object.keys(ctx.data.context_items || {}).length === 0) {
    const btn = document.createElement("button");
    btn.className = "smart-chat-add-context-button";
    btn.textContent = "Add context";
    btn.addEventListener("click", () => {
      ContextSelectorModal.open(completion.env, {
        ctx: null,
        opener_container: container
      });
    });
    const wrap = document.createElement("div");
    wrap.className = "smart-chat-add-context-container";
    wrap.appendChild(btn);
    container.appendChild(wrap);
    return container;
  }
  if (completion === thread?.current_completion) {
    const edit_btn = document.createElement("button");
    edit_btn.textContent = "Edit context";
    edit_btn.addEventListener(
      "click",
      () => ContextSelectorModal.open(env, {
        ctx,
        opener_container: container
      })
    );
    actions_el.appendChild(edit_btn);
  } else {
    console.log("Not current completion, skipping edit button");
    container.classList.add("sc-context-done");
  }
  if (thread_has_user_message(thread)) {
    const retrieve_btn = document.createElement("button");
    retrieve_btn.textContent = "Retrieve more";
    retrieve_btn.addEventListener("click", () => {
      const action_property = thread.collection.settings.use_tool_calls ? "action_key" : "action_xml_key";
      const next_completion = thread.init_completion({
        [action_property]: "lookup_context",
        // Preserve the last user question so the model knows *why*
        user_message: thread.last_completion.data.user_message ?? "",
        action_opts: {
          context_key: ctx.key
        }
      });
      env.render_component("completion", next_completion).then((next_container) => {
        thread.message_container.appendChild(next_container);
      });
      container.classList.add("sc-context-done");
    });
    actions_el.appendChild(retrieve_btn);
  }
  if (thread_has_user_message(thread)) {
    const send_btn = document.createElement("button");
    send_btn.textContent = "Send";
    send_btn.addEventListener("click", async () => {
      actions_el.innerHTML = "";
      const typing = completion.thread?.message_container?.closest(".smart-chat-thread")?.querySelector(".smart-chat-typing-indicator");
      if (typing) typing.style.display = "block";
      await completion.env.render_component("completion", completion, {
        should_complete: true
      });
    });
    actions_el.appendChild(send_btn);
  }
  const tree_el = container.querySelector(".sc-context-tree");
  const context_tree_container = await ctx.env.render_component("context_tree", ctx, {
    ...opts
  });
  const context_items_with_score = Object.entries(ctx.data.context_items).filter(([key, value]) => {
    return value?.score !== void 0 && value?.score !== null;
  }).forEach(([key, value]) => {
    const label = context_tree_container.querySelector(`.sc-tree-item[data-path="${key}"]`);
    if (label) {
      const score_span = this.create_doc_fragment(`<span class="sc-tree-score" title="Relevance score">${value.score.toFixed(2)}</span>`);
      label.insertAfter(score_span, label.querySelector(".sc-tree-remove"));
    }
  });
  ;
  tree_el.replaceWith(
    context_tree_container
  );
  const stats_el = container.querySelector(".sc-context-stats");
  stats_el.replaceWith(
    await ctx.env.render_component("context_stats", ctx, { ...opts })
  );
  return container;
}

// node_modules/smart-chat-obsidian/src/components/chat_model_settings.js
async function render32(env, opts = {}) {
  const smart_chat_model_settings_config = env.smart_chat_threads?.chat_model?.settings_config;
  return await this.render_settings(smart_chat_model_settings_config, {
    scope: env.smart_chat_threads?.chat_model
  });
}

// node_modules/smart-chat-obsidian/src/components/chat_thread_settings.js
async function render33(env, opts = {}) {
  return await this.render_settings(env.smart_chat_threads.settings_config, {
    scope: env.smart_chat_threads
  });
}

// node_modules/smart-chat-obsidian/src/components/completion.css
var css_sheet6 = new CSSStyleSheet();
css_sheet6.replaceSync(`/**
 * completion.css
 * 
 * Styles for the container that holds a single "completion" sequence (user + context + assistant).
 */

.smart-chat-completion-sequence {
  display: flex;
  flex-direction: column;
  gap: var(--size-4-3);
  user-select: text;
  container-type: inline-size;
  &:not(:has(.smart-chat-message)) {
    flex-grow: 1;
  }
}


@keyframes messageEntry {
  from {
    transform: translateY(10px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

/**
 * message_assistant.css
 * 
 * Styles for an assistant message bubble.
 */

.smart-chat-message.assistant {
  align-self: flex-start;
  background-color: var(--background-secondary);
  color: var(--text-normal);
  position: relative;
}

.smart-chat-message.assistant .smart-chat-message-actions {
  display: flex;
  align-items: center;
  height: 100%;
  justify-content: flex-end;
}

/* "Sexier" gradient button styling. */
.smart-chat-message-copy-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-on-accent);
  border: none;
  border-radius: var(--radius-s);
  padding: 0.35rem 0.6rem;
  font-size: var(--font-ui-smaller);
  font-weight: 600;
  transition: all 0.2s ease;
  cursor: pointer;
}

.smart-chat-message-copy-button:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-m);
  background-color: var(--interactive-accent-hover);
}

.smart-chat-message-copy-button:active {
  transform: translateY(0px);
  box-shadow: var(--shadow-xs);
}


/**
 * message_user.css
 * 
 * Styles for a user message bubble.
 */

.smart-chat-message.user {
  align-self: flex-end;
  background-color: var(--interactive-accent);
  color: var(--text-on-accent);
}

/**
 * message_system.css
 * 
 * Styles for a system (prompt) message. 
 * This is displayed in a smaller, dim style (not a bubble).
 */

.smart-chat-message{
  display: flex;
  flex-direction: column;
  position: relative;
  border-radius: var(--radius-m);
  padding: var(--size-4-3);
  line-height: var(--line-height-normal);
  font-size: var(--font-text-size);
  animation: messageEntry var(--anim-duration-fast) var(--anim-motion-smooth);
  box-shadow: var(--shadow-s);

  .smart-chat-message-content {
    &> p {
      margin: 0;
    }
  }

  &.system, &.action {
    display: block !important;
    background: none !important;
    box-shadow: none !important;
    border: none !important;
    margin: 0 0 var(--size-4-3) 0;
    padding: 0 !important;
    color: var(--text-faint);
    font-size: var(--font-ui-small);

    .smart-chat-message-content {
      background: none !important;
      padding: 0 !important;
      margin: 0;
      box-shadow: none !important;
      color: var(--text-faint);
      font-size: var(--font-ui-small);
    }
  }
  &.system::before {
    content: "System: ";
    font-weight: bold;
    font-size: var(--font-ui-smaller);
  }
  &.action::before {
    content: "Action: ";
    font-weight: bold;
    font-size: var(--font-ui-smaller);
  }
}

/**
 * Only apply max-width: 70% if container is > 600px */
@container (min-width: 600px) {
  .smart-chat-message {
    max-width: 70%;
  }
}

/**
 * context_builder.css
 * 
 * Styles for the in-between context-review block, letting user select or deselect context items.
 */

.sc-context-builder.smart-chat-message {
  align-self: center;
  background-color: var(--background-modifier-hover);
  color: var(--text-normal);
  flex-direction: column;
  gap: var(--size-4-2);
  max-width: 95%;
}

/* .smart-chat-completion-sequence:has(.smart-chat-message.user), */
.smart-chat-completion-sequence:has(.sc-context-done),
.smart-chat-completion-sequence:has(.smart-chat-message.assistant){
  .sc-tree-remove,
  .sc-tree-connections,
  .sc-tree-links,
  .sc-context-actions {
    display: none;
  }
}`);
var completion_default = css_sheet6;

// node_modules/smart-chat-obsidian/src/components/completion.js
function build_html26(completion, opts = {}) {
  return `<div>
    <div class="smart-chat-completion-sequence" data-completion-key="${completion.key}">
    </div>
  </div>`;
}
async function render34(completion, opts = {}) {
  if (!completion.container) {
    const html = await build_html26.call(this, completion, opts);
    const frag = this.create_doc_fragment(html);
    completion.container = frag.querySelector(".smart-chat-completion-sequence");
    this.apply_style_sheet(completion_default);
  }
  post_process29.call(this, completion, completion.container, opts);
  return completion.container;
}
async function post_process29(completion, sequence_container, opts = {}) {
  if (!completion.system_elm && completion.data.system_message) {
    completion.system_elm = true;
    completion.system_elm = await completion.env.render_component("message_system", completion);
    completion.container.appendChild(completion.system_elm);
  }
  const model_info_container = await completion.env.render_component("message_model_info", completion);
  if (model_info_container) {
    if (completion.model_info_elm) {
      completion.model_info_elm.replaceWith(model_info_container);
    } else {
      completion.container.appendChild(model_info_container);
    }
  }
  completion.model_info_elm = model_info_container;
  if (!completion.user_elm && completion.data.user_message) {
    completion.user_elm = await completion.env.render_component("message_user", completion);
    completion.container.appendChild(completion.user_elm);
    if (!completion.response) scroll();
  }
  if (!completion.action_elm && completion.data.action_key) {
    const action_frag = await completion.env.render_component("message_action", completion);
    completion.action_elm = action_frag.querySelector(".smart-chat-message.action");
    completion.container.appendChild(completion.action_elm);
  }
  if ((opts.should_complete || completion.data.user_message) && completion.data.completion.responses.length === 0) {
    const typing_indicator = completion.container.closest(".smart-chat-thread")?.querySelector(".smart-chat-typing-indicator");
    if (typing_indicator) typing_indicator.style.display = "block";
    scroll();
    await completion.init({
      stream: completion.env.smart_chat_threads.settings.stream,
      stream_handlers: {
        chunk: async (c) => {
          while (this.handling_chunk) {
            await new Promise((resolve) => setTimeout(resolve, 100));
          }
          this.handling_chunk = true;
          if (!c.response_elm && c.response_text) {
            c.response_elm = await c.env.render_component("message_assistant", c, { await_post_process: true });
            c.content_elm = c.response_elm.querySelector(".smart-chat-message-content");
            completion.container.appendChild(c.response_elm);
          } else if (c.response_text && c.content_elm) {
            this.empty(c.content_elm);
            const partialFrag = await c.env.render_component("message_assistant", c, { await_post_process: true });
            const partialMessage = partialFrag.querySelector(".smart-chat-message-content");
            if (partialMessage) {
              c.content_elm.append(...partialMessage.childNodes);
            }
          }
          await update_action_message.call(this, c);
          this.handling_chunk = false;
        },
        done: async (c) => {
          while (this.handling_chunk) {
            await new Promise((resolve) => setTimeout(resolve, 100));
          }
          this.handling_chunk = true;
          if (c.response_elm && c.content_elm) {
            this.empty(c.content_elm);
            const finalFrag = await c.env.render_component("message_assistant", c, { await_post_process: true });
            const finalMessage = finalFrag.querySelector(".smart-chat-message-content");
            if (finalMessage) {
              c.content_elm.append(...finalMessage.childNodes);
            }
          }
          await update_action_message.call(this, c);
          this.handling_chunk = false;
        },
        error: (err) => {
          console.error("stream error", err);
          this.handling_chunk = false;
        }
      }
    });
    completion.thread.queue_save();
    completion.queue_save();
    completion.thread.collection.process_save_queue();
    completion.collection.process_save_queue();
    completion.container.style.marginBottom = "";
  }
  const is_tool_call_only = Boolean(completion.data.action_key);
  if (!is_tool_call_only && !completion.context_elm && (!completion.response || completion.data.completion.used_context)) {
    await render_context_container();
  }
  if (!completion.response_elm && completion.response_text) {
    completion.response_elm = await completion.env.render_component("message_assistant", completion);
    completion.container.appendChild(completion.response_elm);
  }
  await update_action_message.call(this, completion);
  if (completion.data.actions?.lookup_context) {
    const typing_indicator = completion.container.closest(".smart-chat-thread")?.querySelector(".smart-chat-typing-indicator");
    if (typing_indicator) typing_indicator.style.display = "none";
  }
  if (completion.thread?.last_completion?.key === completion.key) {
    const next_completion = completion.thread.current_completion;
    completion.env.render_component("completion", next_completion).then((next_container) => {
      completion.thread.message_container.appendChild(next_container);
    });
  }
  async function render_context_container() {
    let context;
    context = completion.env.smart_contexts.get(completion.data.context_key || "");
    if (!context && completion.thread) {
      const last_context_key = completion.thread.last_completion?.data?.context_key || "";
      context = completion.env.smart_contexts.get(last_context_key);
    }
    if (!context) {
      context = completion.env.smart_contexts.new_context();
    }
    completion.data.context_key = context.key;
    if (context) {
      const context_container = await completion.env.render_component(
        "chat_context_builder",
        context,
        { completion }
      );
      completion.context_elm = context_container;
      completion.container.querySelector(".sc-context-builder")?.remove();
      completion.container.appendChild(completion.context_elm);
      context_container.addEventListener("smart-env:context-changed", (e) => {
        const updated_ctx = e.detail.context;
        completion.thread.update_current_context(updated_ctx);
        render_context_container();
      });
    }
  }
  function scroll() {
    const message_container = completion.container.closest(".smart-chat-message-container");
    const { top: container_top, height: container_height } = message_container.getBoundingClientRect();
    const { top: target_top, height: target_height } = completion.container.getBoundingClientRect();
    if (target_height < container_height - 100) {
      completion.container.style.marginBottom = `${container_height - 100}px`;
    } else {
      completion.container.style.marginBottom = "";
    }
    const should_scroll = target_top > container_top + 100;
    if (should_scroll) {
      message_container.scrollTo({
        top: message_container.scrollHeight,
        behavior: "smooth"
      });
    }
  }
  return sequence_container;
}
async function update_action_message(completion) {
  if (completion.action_elm && completion.action_call) {
    this.empty(completion.action_elm);
    const action_call_frag = await completion.env.render_component("message_action", completion, { await_post_process: true });
    const action_call_elm = action_call_frag.querySelector(".smart-chat-message.action");
    this.empty(completion.action_elm);
    completion.action_elm.append(...action_call_elm.childNodes);
  }
}

// node_modules/smart-chat-obsidian/src/components/confirm_delete.js
function build_html27(chat_thread, opts = {}) {
  return `
    <div class="smart-chat-confirm-delete-overlay" style="
      position: absolute;
      top: 0; left: 0; right: 0; bottom: 0;
      background-color: rgba(0,0,0,0.6);
      display: flex; flex-direction: column;
      align-items: center; justify-content: center;
      z-index: 9999;
    ">
      <div class="smart-chat-confirm-delete-dialog" style="
        background: var(--background-primary);
        border: 1px solid var(--background-modifier-border);
        padding: 16px;
        border-radius: 6px;
        max-width: 400px;
        text-align: center;
      ">
        <p style="margin-bottom: 12px; font-size: var(--font-ui-medium);">
          Are you sure you want to delete this chat thread?
        </p>
        <div style="display: flex; gap: 12px; justify-content: center;">
          <button class="smart-chat-confirm-delete-confirm">
            Confirm
          </button>
          <button class="smart-chat-confirm-delete-cancel">
            Cancel
          </button>
        </div>
      </div>
    </div>
  `;
}
async function render35(chat_thread, opts = {}) {
  const html = build_html27(chat_thread, opts);
  const frag = this.create_doc_fragment(html);
  post_process30.call(this, chat_thread, frag, opts);
  return frag;
}
function post_process30(chat_thread, frag, opts = {}) {
  const confirmOverlay = frag.querySelector(".smart-chat-confirm-delete-overlay");
  if (!confirmOverlay) return frag;
  const confirmBtn = confirmOverlay.querySelector(".smart-chat-confirm-delete-confirm");
  const cancelBtn = confirmOverlay.querySelector(".smart-chat-confirm-delete-cancel");
  confirmBtn?.addEventListener("click", async (e) => {
    e.preventDefault();
    chat_thread.delete();
    await chat_thread.collection.process_save_queue();
    SmartChatView.open();
  });
  cancelBtn?.addEventListener("click", (e) => {
    e.preventDefault();
    chat_thread.confirm_deletion = false;
    SmartChatView.open();
  });
  return frag;
}

// node_modules/smart-chat-obsidian/src/components/message_action.js
function build_html28(completion, opts = {}) {
  const action = completion.data.action_key;
  let action_data = completion.action_call;
  if (typeof action_data === "string") {
    if (action_data.endsWith('"}')) {
    } else if (action_data.endsWith('",')) {
      action_data = action_data.slice(0, -1) + "}";
    } else if (action_data.endsWith('","')) {
      action_data = action_data.slice(0, -2) + '"}';
    } else if (action_data.endsWith('"')) {
      action_data = action_data + "}";
    } else if (action_data.endsWith("{")) {
      action_data = action_data + "}";
    } else if (action_data.endsWith('":')) {
      action_data = action_data + '""}';
    } else if (!action_data.endsWith("]}")) {
      action_data = action_data + '"}';
    }
    if (action_data.includes("[") && !action_data.includes("]")) {
      action_data = action_data.slice(0, -1) + "]}";
    }
    try {
      const parsed = JSON.parse(action_data);
      if (parsed.final) delete parsed.final;
      action_data = JSON.stringify(parsed, null, 2);
    } catch (e) {
      console.warn("Failed to parse action_data as JSON:", e, completion.action_call, action_data);
      const last_good_i = action_data.lastIndexOf('",');
      if (last_good_i !== -1) {
        action_data = action_data.slice(0, last_good_i) + '"}';
        try {
          action_data = JSON.stringify(JSON.parse(action_data), null, 2);
        } catch (e2) {
          action_data = "Failed to parse action call.";
          console.warn("Failed to parse action_data as JSON:", e2, completion.action_call, action_data);
        }
      }
    }
  } else if (action_data && typeof action_data === "object") {
    action_data = JSON.stringify(action_data, null, 2);
  } else {
    action_data = "...";
  }
  return `<div>
    <div class="smart-chat-message action">
      <div class="smart-chat-message-content">${action}${action_data ? `<pre style="white-space: pre-wrap;">${action_data}</pre>` : ""}</div>
    </div>
  </div>`;
}
async function render36(completion, opts = {}) {
  const html = build_html28(completion, opts);
  const frag = this.create_doc_fragment(html);
  if (opts.await_post_process) {
    await post_process31.call(this, completion, frag, opts);
  } else {
    post_process31.call(this, completion, frag, opts);
  }
  return frag;
}
function post_process31(completion, frag, opts = {}) {
  return frag;
}

// node_modules/smart-chat-obsidian/src/components/message_assistant.js
var import_obsidian42 = require("obsidian");

// node_modules/smart-chat-obsidian/node_modules/obsidian-smart-env/utils/open_note.js
var import_obsidian41 = require("obsidian");
async function open_note(plugin, target_path, event = null, opts = {}) {
  const { new_tab = false } = opts;
  const env = plugin.env;
  if (target_path.includes(".pdf#page=")) {
    return plugin.app.workspace.openLinkText(target_path, "/");
  }
  if (target_path.endsWith("#")) target_path = target_path.slice(0, -1);
  let target_file;
  let block = null;
  if (target_path.includes("#")) {
    const [file_path] = target_path.split("#");
    target_file = plugin.app.metadataCache.getFirstLinkpathDest(file_path, "");
    block = env.smart_blocks.get(target_path);
  } else {
    target_file = plugin.app.metadataCache.getFirstLinkpathDest(target_path, "");
  }
  if (!target_file) {
    console.warn(`[open_note] Unable to resolve file for ${target_path}`);
    return;
  }
  let leaf;
  if (event) {
    const is_mod = import_obsidian41.Keymap.isModEvent(event);
    const is_alt = import_obsidian41.Keymap.isModifier(event, "Alt");
    if (is_mod && is_alt) {
      leaf = plugin.app.workspace.splitActiveLeaf("vertical");
    } else if (is_mod || new_tab) {
      leaf = plugin.app.workspace.getLeaf(true);
    } else {
      leaf = plugin.app.workspace.getMostRecentLeaf();
    }
  } else {
    leaf = plugin.app.workspace.getMostRecentLeaf();
  }
  await leaf.openFile(target_file);
  if (typeof block?.line_start === "number") {
    const { editor } = leaf.view;
    const pos = { line: block.line_start, ch: 0 };
    editor.setCursor(pos);
    editor.scrollIntoView({ to: pos, from: pos }, true);
  }
}

// node_modules/smart-chat-obsidian/src/components/message_assistant.js
async function build_html29(completion, opts = {}) {
  return `
    <div class="smart-chat-message assistant">
      <div class="smart-chat-message-content"></div>
      <div class="smart-chat-message-actions">
        <span 
          class="smart-chat-message-copy-button" 
          title="Copy raw markdown"
          aria-label="Copy raw markdown to clipboard"
        >
          <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
            viewBox="0 0 24 24" stroke="currentColor" fill="none" stroke-width="2"
            stroke-linecap="round" stroke-linejoin="round">
            <path d="M8 17L8 5C8 3.89543 8.89543 3 10 3H18C19.1046 3 20 3.89543 20 5V17"
              stroke="currentColor" />
            <rect x="4" y="7" width="14" height="14" rx="2" stroke="currentColor" />
          </svg>
        </span>
      </div>
    </div>
  `;
}
async function render37(completion, opts = {}) {
  const html = await build_html29.call(this, completion, opts);
  const frag = this.create_doc_fragment(html);
  if (opts.await_post_process) return await post_process32.call(this, completion, frag, opts);
  else post_process32.call(this, completion, frag, opts);
  return frag;
}
async function post_process32(completion, frag, opts = {}) {
  const container = frag.querySelector(".smart-chat-message-content");
  const copy_button = frag.querySelector(".smart-chat-message-copy-button");
  this.empty(container);
  const plugin = completion.env.smart_chat_plugin || completion.env.smart_connections_plugin;
  await import_obsidian42.MarkdownRenderer.render(
    plugin.app,
    completion.response_text,
    container,
    "",
    new import_obsidian42.Component()
  );
  copy_button?.addEventListener("click", async () => {
    try {
      if (!navigator?.clipboard?.writeText) {
        console.warn("Clipboard API not available.");
        return;
      }
      await navigator.clipboard.writeText(completion.response_text || "");
      new import_obsidian42.Notice("Copied to clipboard");
    } catch (err) {
      console.error("Failed to copy raw markdown:", err);
    }
  });
  container.querySelectorAll("a[href]").forEach((a) => {
    const href = a.getAttribute("href");
    if (!href) return;
    a.addEventListener("click", (e) => {
      e.preventDefault();
      if (/^(https?:|obsidian:)/i.test(href)) {
        if (href.startsWith("http")) {
          window.open(href, "external");
        } else {
          plugin.app.workspace.openLinkText(href, "/");
        }
        return;
      }
      open_note(plugin, href, e);
    });
    if (!href.includes("://")) {
      let file_path = a.getAttribute("href");
      if (!file_path.endsWith(".md")) file_path += ".md";
      const file = plugin?.app?.metadataCache?.getFirstLinkpathDest(file_path, "");
      if (!file) return;
      a.addEventListener("dragstart", (e) => {
        const drag_data = plugin?.app?.dragManager?.dragFile(e, file);
        plugin?.app?.dragManager?.onDragStart(e, drag_data);
      });
      a.addEventListener("mouseover", (e) => {
        const parent = a.parentElement;
        plugin.app.workspace.trigger("hover-link", {
          event: e,
          source: "smart-chat-view",
          hoverParent: parent,
          targetEl: a,
          linktext: file.path
        });
      });
    }
  });
  return frag;
}

// node_modules/smart-chat-obsidian/src/components/message_model_info.js
function build_html30(completion, opts = {}) {
  const model_key = completion.data.completion?.chat_model?.model_key ?? completion.chat_model?.model_key;
  const platform_key = completion.data.completion?.chat_model?.adapter_name ?? completion.data.completion?.chat_model?.platform_key ?? completion.chat_model?.adapter_name;
  return (
    /* html */
    `<div class="wrapper">
    <div class="model-info" data-model-key="${model_key}" data-platform-key="${platform_key}">
      <div class="smart-chat-message-content">
        Model: <code>${model_key}</code> (<code>${platform_key}</code>)
      </div>
    </div>
  </div>`
  );
}
async function render38(completion, opts = {}) {
  if (!should_show_model_info(completion)) return null;
  const html = build_html30(completion, opts);
  const frag = this.create_doc_fragment(html);
  const container = frag.querySelector(".model-info");
  return container;
}
function should_show_model_info(completion) {
  const thread = completion.thread;
  if (!thread) return true;
  const idx = thread.completions.findIndex((x) => x.key === completion.key);
  if (idx === 0) return true;
  const prev = thread.last_completion;
  const cm_prev = prev?.data?.completion?.chat_model;
  const cm_curr = completion === thread.current_completion && completion.chat_model ? {
    model_key: completion.chat_model.model_key,
    platform_key: completion.chat_model.adapter_name
  } : completion.data?.completion?.chat_model;
  if (!cm_prev) return true;
  if (!cm_curr) return true;
  return cm_prev.platform_key !== cm_curr.platform_key || cm_prev.model_key !== cm_curr.model_key;
}

// node_modules/smart-chat-obsidian/src/components/message_system.css
var css_sheet7 = new CSSStyleSheet();
css_sheet7.replaceSync(`.expandable-system-message {
  transition: max-height 0.2s cubic-bezier(.4,0,.2,1), background 0.15s;
}
.expandable-system-message.collapsed {
  cursor: pointer;
}
.expandable-system-message.collapsed:hover,
.expandable-system-message.collapsed:focus {
  background: var(--background-modifier-hover);
  /* Removed outline/border */
}
.expandable-system-message:focus {
  outline: 1.5px solid var(--background-modifier-border-focus, #888);
}

/* Gradient overlay and indicator bar for collapsed state */
.expand-indicator-bar {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 2.5em;
  pointer-events: none;
  background: linear-gradient(
    to bottom,
    /* Use background-primary with alpha for both stops */
    rgba(var(--background-primary), 0) 0%,
    rgba(var(--background-primary), 0.95) 80%
  );
  display: flex;
  align-items: flex-end;
  justify-content: center;
  z-index: 1;
}

.expand-indicator-bar .expand-indicator {
  pointer-events: auto;
  background: var(--background-primary, #fff);
  border-radius: 0.7em;
  font-size: 0.95em;
  padding: 0.1em 0.7em;
  margin-bottom: 0.3em;
  font-weight: 500;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04);
  cursor: pointer;
  border: none;
  transition: background 0.15s, color 0.15s;
}

.expandable-system-message.collapsed + .expand-indicator-bar .expand-indicator:hover,
.expandable-system-message.collapsed + .expand-indicator-bar .expand-indicator:focus {
  background: var(--background-modifier-hover, #f0f0f0);
  color: var(--text-normal, #333);
}
`);
var message_system_default = css_sheet7;

// node_modules/smart-chat-obsidian/src/components/message_system.js
function build_html31(completion, opts = {}) {
  const text = (completion.data.system_message || "(No system prompt set)").trim();
  const line_count = (text.match(/\n/g) || []).length + 1;
  const needs_collapse = line_count > 10;
  return `<div>
    <div class="smart-chat-message system">
      <div class="smart-chat-message-content" style="position:relative;">
        <pre class="expandable-system-message"${needs_collapse ? ' tabindex="0"' : ' style="max-height:none;overflow:visible;cursor:auto;"'}>
${text}
        </pre>
        ${needs_collapse ? `<div class="expand-indicator-bar"><span class="expand-indicator" style="user-select:none;">\u25BC More</span></div>` : ""}
      </div>
    </div>
  </div>`;
}
function set_collapsed(pre, indicator_bar, collapsed) {
  if (collapsed) {
    pre.classList.add("collapsed");
    pre.style.display = "-webkit-box";
    pre.style.webkitBoxOrient = "vertical";
    pre.style.webkitLineClamp = "10";
    pre.style.maxHeight = "calc(10 * 1.4em)";
    pre.style.overflow = "hidden";
    pre.style.cursor = "pointer";
    pre.title = "Click or press Enter/Space to expand";
    pre.style.lineHeight = "1.4em";
    if (indicator_bar) indicator_bar.style.display = "";
  } else {
    pre.classList.remove("collapsed");
    pre.style.display = "block";
    pre.style.webkitLineClamp = "";
    pre.style.maxHeight = "none";
    pre.style.overflow = "visible";
    pre.style.cursor = "auto";
    pre.title = "Click or press Enter/Space to collapse";
    pre.style.lineHeight = "1.4em";
    if (indicator_bar) indicator_bar.style.display = "none";
  }
}
async function render39(completion, opts = {}) {
  const html = build_html31(completion, opts);
  this.apply_style_sheet(message_system_default);
  const frag = this.create_doc_fragment(html);
  const container = frag.querySelector(".smart-chat-message.system");
  post_process33.call(this, completion, container, opts);
  return container;
}
function post_process33(completion, frag, opts = {}) {
  const pre = frag.querySelector(".expandable-system-message");
  const indicator_bar = frag.querySelector(".expand-indicator-bar");
  if (pre && indicator_bar) {
    set_collapsed(pre, indicator_bar, true);
    pre.addEventListener("click", function() {
      const collapsed = pre.style.maxHeight !== "none";
      set_collapsed(pre, indicator_bar, !collapsed);
    });
    pre.addEventListener("keydown", function(e) {
      if (e.key === "Enter" || e.key === " ") {
        e.preventDefault();
        const collapsed = pre.style.maxHeight !== "none";
        set_collapsed(pre, indicator_bar, !collapsed);
      }
    });
  }
  return frag;
}

// node_modules/smart-chat-obsidian/src/components/message_user.js
var import_obsidian43 = require("obsidian");
function build_html32(completion, opts = {}) {
  const text = completion.data.user_message || "";
  return `
    <div class="smart-chat-message user">
      <div class="smart-chat-message-content">
        ${text}
      </div>
    </div>
  `;
}
async function render40(completion, opts = {}) {
  const html = await build_html32.call(this, completion, opts);
  const frag = this.create_doc_fragment(html);
  post_process34.call(this, completion, frag, opts);
  return frag;
}
async function post_process34(completion, frag, opts = {}) {
  const content = frag.querySelector(".smart-chat-message-content");
  this.empty(content);
  const plugin = completion.env.smart_chat_plugin || completion.env.smart_connections_plugin;
  await import_obsidian43.MarkdownRenderer.render(
    plugin.app,
    completion.data.user_message,
    content,
    "",
    new import_obsidian43.Component()
  );
  return frag;
}

// node_modules/smart-chat-obsidian/src/components/overlay_requires_settings.js
function build_html33(opts = {}) {
  return `
    <div class="smart-chat-confirm-missing-config-overlay" style="
      position: absolute;
      top: 0; left: 0; right: 0; bottom: 0;
      background-color: rgba(0,0,0,0.6);
      display: flex; flex-direction: column;
      align-items: center; justify-content: center;
      z-index: 9999;
    ">
      <div class="smart-chat-confirm-missing-config-dialog" style="
        background: var(--background-primary);
        border: 1px solid var(--background-modifier-border);
        padding: 16px;
        border-radius: 6px;
        max-width: 420px;
        text-align: center;
      ">
        <p style="margin-bottom: 12px; font-size: var(--font-ui-medium);">
          ${opts?.message || "No chat model configured or missing API key. Please update your Smart Chat settings."}
        </p>
        <div style="display: flex; gap: 12px; justify-content: center;">
          <button class="smart-chat-open-settings">
            Open Settings
          </button>
        </div>
      </div>
    </div>
  `;
}
async function render41(chat_thread, opts = {}) {
  const html = build_html33.call(this, opts);
  const frag = this.create_doc_fragment(html);
  post_process35.call(this, chat_thread, frag, opts);
  return frag;
}
function post_process35(chat_thread, frag, opts = {}) {
  const overlayEl = frag.querySelector(".smart-chat-confirm-missing-config-overlay");
  if (!overlayEl) return frag;
  const openSettingsBtn = overlayEl.querySelector(".smart-chat-open-settings");
  if (openSettingsBtn) {
    openSettingsBtn.addEventListener("click", (e) => {
      e.preventDefault();
      chat_thread.collection.open_settings();
      overlayEl.remove();
    });
  }
  return frag;
}

// node_modules/smart-chat-obsidian/src/components/thread.css
var css_sheet8 = new CSSStyleSheet();
css_sheet8.replaceSync(`.smart-chat-thread {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  position: relative;
  overflow: hidden;
  max-height: 100%;
  /* watermark */
  /* background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='50' viewBox='0 0 300 50'%3E%3Ctext x='50%25' y='50%25' font-family='Arial, sans-serif' font-size='24' font-weight='bold' fill='rgba(255, 255, 255, 0.07)' text-anchor='middle' dominant-baseline='middle'%3ESmart Chat%3C/text%3E%3C/svg%3E"); */
  /* friendly chat icon watermark */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 24 24' fill='none' stroke='rgba(255, 255, 255, 0.07)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 4c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2v11c0 1.1-.9 2-2 2h-8l-5 4v-4H4c-1.1 0-2-.9-2-2Z'/%3E%3Cpath d='M7 8c.5.3 1.3.3 1.8 0'/%3E%3Cpath d='M15.2 8c.5.3 1.3.3 1.8 0'/%3E%3Cpath d='M8 11.5c1 .8 2.5 1.2 4 1.2s3-.4 4-1.2'/%3E%3C/svg%3E");
  
  background-repeat: no-repeat;
  background-position: center;
  background-size: 13% auto;
}

/* Thread message container area (scrollable) */
.smart-chat-message-container {
  display: flex;
  flex-direction: column;
  gap: var(--size-4-3);
  flex: 1 1 auto;
  overflow-y: auto;
  padding: var(--size-4-4);
  scroll-behavior: smooth;
}

.smart-chat-default-message {
  display: flex;
  align-items: center;
  flex-direction: column;
  color: var(--text-muted);
  font-size: var(--font-ui-medium);
  margin-top: auto;
  margin-bottom: auto;
  opacity: 0.7;
  text-align: center;
  padding: var(--size-4-6);
}


.smart-chat-config-error-notice {
  display: none;
}

/* The bottom input row */
.smart-chat-chat-form {
  max-height: 50vh;
  overflow-y: auto;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column; /* stacked: system prompt area, then user input row */
  gap: var(--size-4-2);
  border-top: var(--border-width) solid var(--background-modifier-border);
  padding: var(--size-4-3) var(--size-4-4);
  background: var(--background-secondary);
  position: sticky;
  bottom: 0;
  z-index: var(--layer-menu);

  &:has(.smart-chat-chat-input[data-has-content="false"]) {
    #smart-chat-send-button {
      background-color: var(--interactive-accent-disabled);
      color: var(--text-on-accent-disabled);
      cursor: not-allowed;
    }
  }
}

/* System message container & label. */
.smart-chat-system-message-container {
  display: flex;
  flex-direction: row;
  gap: var(--size-4-1);
  justify-content: space-between;

  [contenteditable]:empty::before {
    content: attr(placeholder);
    color: var(--text-muted);
    pointer-events: none;
    overflow: visible;
  }
  [contenteditable] {
    position: relative;
    flex-grow: 1;
  }
}
.smart-chat-system-message-label {
  cursor: pointer;
  color: var(--text-faint);
  font-size: var(--font-ui-smaller);
  user-select: none;
  /* hide/show controlled in JS */
}
.smart-chat-system-message {
  display: none; /* toggled visible by JS */
  color: var(--text-muted);
  font-size: var(--font-ui-small);
  background: none;
  border: 1px solid var(--background-modifier-border);
  padding: var(--size-4-2);
  border-radius: var(--radius-s);
  outline: none;
  min-height: 1.5em;
}
.smart-chat-add-variable {
  background: var(--background-modifier-form-field);
  border: var(--border-width) solid var(--background-modifier-border);
  border-radius: var(--radius-s);
  color: var(--text-muted);
  cursor: pointer;
  padding: 0 var(--size-4-2);
  height: var(--size-4-5);
}
.smart-chat-add-variable:hover {
  background: var(--interactive-accent-hover);
  color: var(--text-on-accent);
}

.smart-chat-chat-input-row {
  display: flex;
  align-items: flex-end;
  gap: var(--size-4-2);
}

.smart-chat-chat-input {
  width: 100%;
  min-height: var(--size-4-5);
  resize: none;
  background: var(--background-modifier-form-field);
  border: var(--border-width) solid var(--background-modifier-border);
  color: var(--text-normal);
  border-radius: var(--radius-s);
  padding: var(--size-4-3);
  transition: border-color var(--anim-duration-fast) var(--anim-motion-smooth);
  font-family: var(--font-text);
  font-size: var(--font-text-size);

  &:empty::before, &[data-has-content="false"]::before {
    content: attr(placeholder);
    color: var(--text-muted);
    pointer-events: none;
    font-size: var(--font-smaller);
  }

  &> span {
    white-space: normal;
  }
}
.smart-chat-chat-input:focus {
  outline: none;
  border-color: var(--interactive-accent-hover);
}

.smart-chat-btn-container {
  display: flex;
  align-items: center;
  gap: var(--size-4-2);
}

#smart-chat-abort-button {
  cursor: pointer;
  color: var(--icon-color);
  transition: color var(--anim-duration-fast) var(--anim-motion-smooth);
}
#smart-chat-abort-button:hover {
  color: var(--icon-color-hover);
}

#smart-chat-send-button {
  background-color: var(--interactive-accent);
  color: var(--text-on-accent);
  border: none;
  border-radius: 50%;
  width: var(--size-4-10);
  height: var(--size-4-10);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: var(--shadow-s);
  transition:
    transform var(--anim-duration-fast) var(--anim-motion-smooth),
    box-shadow var(--anim-duration-fast) var(--anim-motion-smooth);
}
#smart-chat-send-button:hover {
  transform: scale(1.1);
  box-shadow: var(--shadow-m);
}


/* Typing indicator */
.smart-chat-typing-indicator {
  display: none;
  align-items: center;
  height: 24px;
  padding: 0 var(--size-4-4);
  margin-bottom: var(--size-4-3);
  color: var(--text-muted);
}
.smart-chat-typing-dots {
  display: flex;
  gap: var(--size-2-2);
  justify-content: center;
  align-items: center;
}
.smart-chat-typing-dot {
  width: 6px;
  height: 6px;
  background-color: var(--text-muted);
  border-radius: 50%;
  animation: bounce var(--anim-duration-slow) infinite var(--anim-motion-swing);
}
.smart-chat-typing-dot:nth-child(2) {
  animation-delay: var(--anim-duration-fast);
}
.smart-chat-typing-dot:nth-child(3) {
  animation-delay: calc(var(--anim-duration-fast) * 2);
}
@keyframes bounce {
  0%, 80%, 100% {
    transform: scale(0);
  }
  40% {
    transform: scale(1);
  }
}`);
var thread_default = css_sheet8;

// node_modules/smart-chat-obsidian/src/components/thread.js
var import_obsidian44 = require("obsidian");

// node_modules/smart-chat-obsidian/src/utils/insert_text_in_chunks.js
function split_into_chunks(text, size = 1024) {
  const out = [];
  for (let i = 0; i < text.length; i += size) {
    out.push(text.slice(i, i + size));
  }
  return out;
}
function insert_text_in_chunks(el, text, opts = {}) {
  const { chunk_size = 1024 } = opts;
  const chunks = split_into_chunks(text, chunk_size);
  if (!chunks.length) return;
  const sel = window.getSelection();
  const base_range = sel && sel.rangeCount ? sel.getRangeAt(0).cloneRange() : null;
  let idx = 0;
  const step = () => {
    const chunk = chunks[idx++];
    if (!chunk) return;
    if (base_range) {
      const temp_container = document.createDocumentFragment();
      text_to_nodes(chunk).forEach((n) => temp_container.appendChild(n));
      base_range.insertNode(temp_container);
      base_range.collapse(false);
      sel.removeAllRanges();
      sel.addRange(base_range);
    } else {
      const temp_container = document.createDocumentFragment();
      text_to_nodes(chunk).forEach((n) => temp_container.appendChild(n));
      el.appendChild(temp_container);
    }
    window.requestAnimationFrame(step);
  };
  window.requestAnimationFrame(step);
}
function text_to_nodes(txt) {
  return txt.split("\n").flatMap((part, i, arr) => {
    const nodes = [document.createTextNode(part)];
    if (i < arr.length - 1) nodes.push(document.createElement("br"));
    return nodes;
  });
}

// node_modules/smart-chat-obsidian/src/utils/add_items_to_current_context.js
async function add_items_to_current_context(thread, paths = []) {
  const env = thread.env;
  if (!paths.length) return null;
  const completion = thread.current_completion;
  const ctx_key = completion.data.context_key;
  const ctx = ctx_key ? env.smart_contexts.get(ctx_key) : null;
  const items_obj = Object.fromEntries(
    [
      ...ctx ? Object.keys(ctx.data.context_items) : [],
      ...paths
    ].map((p) => [p, { d: 0 }])
  );
  const new_ctx = ctx ? (ctx.data.context_items = items_obj, ctx.queue_save(), ctx) : env.smart_contexts.new_context({ context_items: items_obj });
  completion.data.context_key = new_ctx.key;
  completion.queue_save();
  thread.queue_save();
  await env.smart_contexts.process_save_queue();
  return new_ctx;
}

// node_modules/smart-chat-obsidian/src/utils/parse_dropped_data.js
function parse_dropped_data(dt) {
  const out = /* @__PURE__ */ new Set();
  if (dt?.files?.length) {
    [...dt.files].forEach((f) => {
      const p = f.path || f.name;
      if (p) out.add(p);
    });
  }
  const split_lines = (str) => (str ?? "").split(/\r?\n/u).map((s) => s.trim()).filter(Boolean);
  let rows = [
    ...split_lines(dt?.getData("text/uri-list")),
    ...split_lines(dt?.getData("text/plain"))
  ];
  const flatten_obsidian_uris = (arr) => arr.flatMap((row) => {
    if (row.startsWith("obsidian://")) {
      return row.split(/(?=obsidian:\/\/)/g).map((s) => s.trim()).filter(Boolean);
    }
    return [row];
  });
  const mergedRows = [];
  for (let i = 0; i < rows.length; i++) {
    if (rows[i].startsWith("obsidian:") && !rows[i].startsWith("obsidian://") && i + 1 < rows.length && rows[i + 1].startsWith("/")) {
      mergedRows.push(rows[i] + rows[i + 1]);
      i++;
    } else {
      mergedRows.push(rows[i]);
    }
  }
  rows = flatten_obsidian_uris(mergedRows);
  rows.forEach((row) => {
    if (row.startsWith("obsidian://")) {
      try {
        const url = new URL(row);
        let file = url.searchParams.get("file");
        if (file) {
          if (!/\.[^./\\]+$/.test(file)) file += ".md";
          out.add(file);
          return;
        }
      } catch (_) {
      }
      const match = row.match(/file=([^&\s]+)/u);
      if (match) {
        let file = decodeURIComponent(match[1]);
        if (!/\.[^./\\]+$/.test(file)) file += ".md";
        out.add(file);
      }
      return;
    }
    let val = row;
    if (val && !/[./\\]/.test(val.slice(-4)) && // crude: no .ext or / at end
    !/\.[^./\\]+$/.test(val)) {
      val += ".md";
    }
    out.add(val);
  });
  return out;
}

// node_modules/smart-chat-obsidian/src/components/thread.js
var import_obsidian45 = require("obsidian");

// node_modules/smart-chat-obsidian/src/components/variable_utils.js
function insert_variable_at_cursor(input_el, variable) {
  const doc = input_el.ownerDocument;
  const win = doc.defaultView;
  const sel = win.getSelection();
  const range = sel && sel.rangeCount ? sel.getRangeAt(0) : null;
  if (range && input_el.contains(range.startContainer)) {
    const node = doc.createTextNode(variable);
    range.insertNode(node);
    range.setStartAfter(node);
    range.collapse(true);
    sel.removeAllRanges();
    sel.addRange(range);
  } else {
    input_el.appendChild(doc.createTextNode(variable));
  }
  input_el.dataset.hasContent = true;
  input_el.focus();
}
function create_variable_menu(MenuClass, app2, available_vars, on_select) {
  const menu = new MenuClass(app2);
  for (const v of available_vars) {
    menu.addItem(
      (item) => item.setTitle(v).onClick(() => on_select(v))
    );
  }
  return menu;
}

// node_modules/smart-chat-obsidian/src/components/thread.js
function should_send_message(e, requiredModifier) {
  const pressed_shift = import_obsidian44.Keymap.isModifier(e, "Shift");
  const pressed_mod = import_obsidian44.Keymap.isModifier(e, "Mod");
  const pressed_alt = import_obsidian44.Keymap.isModifier(e, "Alt");
  const pressed_meta = import_obsidian44.Keymap.isModifier(e, "Meta");
  if (requiredModifier === "none") {
    return !pressed_shift && !pressed_mod && !pressed_alt && !pressed_meta;
  }
  if (requiredModifier === "shift") return pressed_shift;
  if (requiredModifier === "mod") return pressed_mod;
  if (requiredModifier === "alt") return pressed_alt;
  if (requiredModifier === "meta") return pressed_meta;
  return false;
}
function build_html34(chat_thread, opts = {}) {
  return `<div>
    <div class="smart-chat-thread" data-thread-key="${chat_thread.key}">
      <div class="smart-chat-message-container"></div>
      <div class="smart-chat-typing-indicator">
        <div class="smart-chat-typing-dots">
          <div class="smart-chat-typing-dot"></div>
          <div class="smart-chat-typing-dot"></div>
          <div class="smart-chat-typing-dot"></div>
        </div>
      </div>
      <div class="smart-chat-action-bar">
      </div>
      <div class="smart-chat-chat-form">
        <div class="smart-chat-system-message-container">
          <small class="smart-chat-system-message-label">Edit system message</small>
          <div
            class="smart-chat-system-message"
            contenteditable="true"
            placeholder="Edit system message"
          ></div>
          <button class="smart-chat-add-variable" title="Add variable" type="button">+</button>
        </div>
        <div class="smart-chat-chat-input-row">
          <div
            contenteditable="true"
            class="smart-chat-chat-input"
            data-has-content="false"
            placeholder="Use @ to add context. eg Based on my notes"
          ></div>
          <div class="smart-chat-btn-container">
            <button class="send-button" id="smart-chat-send-button">
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
                fill="none" viewBox="0 0 24 24" stroke="currentColor"
                stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M22 2 11 13 3 9l19-7z"></path>
                <path d="M22 2 15 22l-4-9-8-4z"></path>
              </svg>
            </button>
          </div>
        </div>
      </div>
    </div>
  </div>`;
}
async function render42(chat_thread, opts = {}) {
  if (!chat_thread.container) {
    const html = build_html34.call(this, chat_thread, opts);
    const frag = this.create_doc_fragment(html);
    this.apply_style_sheet(thread_default);
    chat_thread.container = frag.querySelector(".smart-chat-thread");
  }
  post_process36.call(this, chat_thread, chat_thread.container, opts);
  return chat_thread.container;
}
async function post_process36(chat_thread, thread_container, opts = {}) {
  const env = chat_thread.env;
  const plugin = env.smart_chat_plugin || env.smart_connections_plugin;
  const message_container = chat_thread.container.querySelector(".smart-chat-message-container");
  chat_thread.message_container = message_container;
  if (chat_thread.completions?.length > 0) {
    for (const completion_item of chat_thread.completions) {
      const completion_frag = await completion_item.env.render_component("completion", completion_item, {});
      message_container.appendChild(completion_frag);
    }
  } else {
    const initial_message = get_initial_message2(chat_thread.settings.language);
    this.safe_inner_html(message_container, `
      <div class="smart-chat-default-message">${initial_message}</div>
    `);
    if (!chat_thread.current_completion.container) {
      const completion_container = await env.render_component("completion", chat_thread.current_completion);
      message_container.appendChild(completion_container);
    }
  }
  const send_button = chat_thread.container.querySelector("#smart-chat-send-button");
  const input_el = chat_thread.container.querySelector(".smart-chat-chat-input");
  const system_editor = chat_thread.container.querySelector(".smart-chat-system-message");
  const system_label = chat_thread.container.querySelector(".smart-chat-system-message-label");
  const variable_btn = chat_thread.container.querySelector(".smart-chat-add-variable");
  if (system_label && system_editor) {
    system_label.addEventListener("click", () => {
      system_editor.style.display = "block";
      system_label.style.display = "none";
    });
  }
  if (variable_btn) {
    variable_btn.addEventListener("click", (e) => {
      e.preventDefault();
      const vars = env.config.collections.smart_completions.completion_adapters.SmartCompletionVariableAdapter.available_vars;
      const menu = create_variable_menu(import_obsidian45.Menu, plugin.app, vars, (v) => {
        insert_variable_at_cursor(input_el, v);
      });
      menu.showAtMouseEvent(e);
    });
  }
  const do_send = () => {
    const user_text = input_el.textContent.trim();
    if (!user_text) return;
    const sys_msg = system_editor.textContent.trim();
    const data = { user_message: user_text, new_user_message: true };
    if (sys_msg) data.system_message = chat_thread.get_system_prompt({ system_message: sys_msg });
    if (chat_thread.has_self_referential_pronoun(user_text)) {
      const ctx_key = chat_thread.current_completion.data.context_key;
      const existing_ctx = env.smart_contexts.get(ctx_key);
      const has_manual_context = existing_ctx && Object.keys(existing_ctx.data?.context_items ?? {}).length > 0;
      if (!has_manual_context) {
        const action_property = chat_thread.collection.settings.use_tool_calls ? "action_key" : "action_xml_key";
        data[action_property] = "lookup_context";
        data.action_opts = { context_key: ctx_key };
      }
    }
    chat_thread.current_completion.data = { ...chat_thread.current_completion.data, ...data };
    env.render_component("completion", chat_thread.current_completion);
    this.safe_inner_html(input_el, "<br>");
    input_el.dataset.hasContent = false;
    system_editor.textContent = "";
    system_editor.style.display = "none";
    system_label.style.display = "inline";
  };
  send_button.addEventListener("click", (e) => {
    e.preventDefault();
    do_send();
  });
  input_el.addEventListener("keydown", (e) => {
    if (e.key === "@") {
      e.preventDefault();
      ContextSelectorModal.open(
        env,
        {
          ctx: chat_thread.current_completion ? env.smart_contexts.get(
            chat_thread.current_completion.data.context_key
          ) : null,
          opener_container: () => chat_thread.current_completion?.context_elm
        }
      );
      return;
    }
    if (e.key !== "Enter") return;
    const mod_key_setting = chat_thread.settings.modifier_key_to_send || "shift";
    if (should_send_message(e, mod_key_setting)) {
      e.preventDefault();
      do_send();
    } else {
      e.preventDefault();
      document.execCommand("insertHTML", false, "<br><br>");
    }
  });
  input_el.addEventListener("keyup", () => {
    input_el.dataset.hasContent = input_el.textContent.trim().length > 0;
  });
  function handle_paste(e) {
    e.preventDefault();
    const text = e.clipboardData?.getData("text/plain");
    if (text) {
      const target = e.currentTarget;
      insert_text_in_chunks(target, text, { chunk_size: 2048 });
      target.dataset.hasContent = true;
    }
  }
  if (!input_el._scPasteHandler) {
    input_el._scPasteHandler = handle_paste;
    input_el.addEventListener("paste", input_el._scPasteHandler);
  }
  const sc_thread_el = chat_thread.container;
  if (sc_thread_el) {
    sc_thread_el.addEventListener("dragover", (ev) => ev.preventDefault());
    sc_thread_el.addEventListener("drop", async (ev) => {
      ev.preventDefault();
      const paths = [...parse_dropped_data(ev.dataTransfer)];
      if (!paths.length) return;
      const updated_ctx = await add_items_to_current_context(chat_thread, paths);
      const target_elm = chat_thread.current_completion?.context_elm;
      if (target_elm) {
        send_context_changed_event(target_elm, updated_ctx);
      } else {
        console.warn("[smart-chat-obsidian] No current completion context element found for context update");
      }
    });
  }
  if (chat_thread.confirm_deletion) {
    const overlay_frag = await env.render_component("confirm_delete", chat_thread, opts);
    chat_thread.container.appendChild(overlay_frag);
  }
  const chat_model_config = env.smart_chat_threads?.settings?.chat_model;
  const platform_key = chat_model_config?.adapter;
  const model_config = chat_model_config?.[platform_key];
  const missing_api_key = (!model_config?.api_key || model_config.api_key.length === 0) && !["ollama", "lm_studio"].includes(platform_key);
  if (!platform_key || missing_api_key) {
    const missing_opts = {
      message: missing_api_key ? `No API key detected for ${platform_key}. Please update your Smart Chat settings.` : "No chat model selected. Please pick a model in the Smart Chat settings."
    };
    const overlay_frag = await env.render_component("overlay_requires_settings", chat_thread, missing_opts);
    chat_thread.container.appendChild(overlay_frag);
  }
  return thread_container;
}

// node_modules/smart-chat-obsidian/smart_env.config.js
var smart_env_config5 = {
  collections: {
    smart_actions: smart_actions_default2,
    smart_chat_threads: smart_chat_threads_default,
    smart_completions: smart_completions_default,
    smart_contexts: smart_contexts_default
  },
  item_types: {
    SmartAction,
    SmartChatThread
  },
  components: {
    chat: render30,
    chat_context_builder: render31,
    chat_model_settings: render32,
    chat_thread_settings: render33,
    completion: render34,
    confirm_delete: render35,
    message_action: render36,
    message_assistant: render37,
    message_model_info: render38,
    message_system: render39,
    message_user: render40,
    overlay_requires_settings: render41,
    thread: render42
  }
};

// node_modules/smart-context-obsidian/src/components/context_builder.css
var css_sheet9 = new CSSStyleSheet();
css_sheet9.replaceSync(`.sc-context-builder {
  padding: 6px 8px;
  display: flex;
  flex: 0 1 auto;
  flex-direction: column;
  width: 100%;
  overflow: auto;
  &.modal {
    max-height: 50%;
  }
  .sc-context-header {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    .sc-context-actions {
      display: flex;
      align-items: center;
      gap: 6px;
    }
  }
  .sc-context-body {
    flex: 1 1 auto;
    overflow: auto;
  }
  .sc-context-footer {
    flex: 0 1 auto;
    .sc-context-actions {
      display: flex;
      align-items: center;
      gap: 6px;
      justify-content: flex-end;
    }
  }
}


.sc-context-tree ul {
  list-style: none;
  margin: 0 0 0 .8em;
  padding: 0;
}
.sc-context-tree .sc-tree-item {
  gap: 4px;
  padding: 2px 0;
  overflow: auto;

  &.dir {
    &> span {
      opacity: 0.8;
    }
    &> span::after {
      content: '/';
    }
  }
  .sc-tree-label {
    cursor: pointer;
  }
}
.sc-context-tree .sc-tree-remove,
.sc-context-tree .sc-tree-connections,
.sc-context-tree .sc-tree-links {
  cursor: pointer;
  opacity: .8;
}
.sc-context-tree .sc-tree-remove:hover,
.sc-context-tree .sc-tree-connections:hover,
.sc-context-tree .sc-tree-links:hover {
  opacity: 1;
}`);
var context_builder_default2 = css_sheet9;

// node_modules/smart-context-obsidian/src/components/context_builder.js
function build_html35(ctx, opts = {}) {
  return `<div>
    <div class="sc-context-builder" data-context-key="${ctx.data.key}">
      <div class="sc-context-header">
        <div class="sc-context-actions"></div>
      </div>
      <div class="sc-context-body">
      </div>
      <div class="sc-context-footer">
        <div class="sc-context-stats"></div>
      </div>
    </div>
  </div>`;
}
async function render43(ctx, opts = {}) {
  const html = build_html35.call(this, ctx, opts);
  const frag = this.create_doc_fragment(html);
  const ctx_container = frag.querySelector(".sc-context-builder");
  this.apply_style_sheet(context_builder_default2);
  await post_process37.call(this, ctx, ctx_container, opts);
  return ctx_container;
}
async function post_process37(ctx, container, opts = {}) {
  const env = ctx.env;
  const body = container.querySelector(".sc-context-body");
  const footer = container.querySelector(".sc-context-footer");
  container.addEventListener("smart-env:context-updated", async (e) => {
    const new_tree = await env.render_component("context_tree", ctx, {
      ...opts
    });
    this.empty(body);
    body.appendChild(new_tree);
    const new_stats = await env.render_component("context_stats", ctx, opts);
    this.empty(footer);
    footer.appendChild(new_stats);
  });
  const tree_container = await env.render_component("context_tree", ctx, {
    ...opts
  });
  this.empty(body);
  body.appendChild(tree_container);
  const stats_container = await env.render_component("context_stats", ctx, opts);
  this.empty(footer);
  footer.appendChild(stats_container);
}

// node_modules/smart-context-obsidian/src/components/context_stats.js
function estimate_tokens(char_count) {
  return Math.ceil(char_count / 4);
}
function build_html36(ctx) {
  return `<div>
    <div class="sc-stats" aria-live="polite"></div>
  </div>`;
}
async function render44(ctx, opts = {}) {
  const html = build_html36(ctx);
  const frag = this.create_doc_fragment(html);
  const container = frag.querySelector(".sc-stats");
  post_process38.call(this, ctx, container, opts);
  return container;
}
async function post_process38(ctx, container, opts = {}) {
  const items = ctx.get_context_items();
  if (!items.length) {
    return;
  }
  const { stats } = await ctx.compile({ link_depth: 0, calculating: true });
  const total_chars = stats.char_count;
  const total_tokens = estimate_tokens(total_chars);
  container.textContent = `\u2248 ${total_chars.toLocaleString()} chars \xB7 ${total_tokens.toLocaleString()} tokens`;
  return container;
}

// node_modules/smart-context-obsidian/src/utils/build_context_item_li.js
function build_context_item_li(item, selected_paths, child_html = "") {
  let { key, path, name, is_file } = item;
  const has_children = child_html.trim() !== "";
  let remove_btn = "";
  let connections_btn = "";
  let links_btn = "";
  if (!key) key = path;
  if (selected_paths.has(key) || has_children) {
    remove_btn = `<span class="sc-tree-remove" data-path="${key}">\xD7</span>`;
  }
  if (selected_paths.has(key) && !key.startsWith("external:../")) {
    connections_btn = `<span class="sc-tree-connections" data-path="${key}" title="Connections for ${name}"></span>`;
    links_btn = `<span class="sc-tree-links" data-path="${key}" title="Links for ${name}"></span>`;
  }
  const label_classes = ["sc-tree-label"];
  if (item.exists === false) label_classes.push("missing");
  return `<li data-path="${key}" class="sc-tree-item ${is_file ? "file" : "dir"}${key.startsWith("external:") ? " sc-external" : ""}">
    ${remove_btn}
    <span class="${label_classes.join(" ")}">${name}</span>
    ${connections_btn}
    ${links_btn}
    ${child_html}
  </li>`;
}

// node_modules/smart-context-obsidian/src/utils/build_context_items_tree_html.js
function build_context_items_tree_html(items) {
  const tree_root = build_path_tree(items);
  const selected_set = new Set(items.map((it) => it.key || it.path));
  const tree_list_html = tree_to_html(tree_root, selected_set);
  return tree_list_html;
}
function build_path_tree(selected_items = []) {
  const split_path_segments = (item_path) => {
    const BLOCK_ID_RE = /#\{\d+\}$/u;
    let remainder = item_path;
    let block_id_seg = null;
    let block_key_seg = null;
    let has_block = false;
    const id_match = remainder.match(BLOCK_ID_RE);
    if (id_match) {
      block_id_seg = id_match[0];
      remainder = remainder.slice(0, -block_id_seg.length);
      has_block = true;
    }
    const key_idx = remainder.indexOf("##");
    if (key_idx !== -1) {
      block_key_seg = remainder.slice(key_idx);
      remainder = remainder.slice(0, key_idx);
      has_block = true;
    }
    const segments = [];
    if (remainder) {
      let seg = "";
      let in_wikilink = false;
      for (let i = 0; i < remainder.length; i++) {
        if (!in_wikilink && remainder.slice(i, i + 2) === "[[") {
          in_wikilink = true;
          seg += "[[";
          i++;
        } else if (in_wikilink && remainder.slice(i, i + 2) === "]]") {
          in_wikilink = false;
          seg += "]]";
          i++;
        } else if (!in_wikilink && remainder[i] === "/") {
          segments.push(seg);
          seg = "";
        } else {
          seg += remainder[i];
        }
      }
      if (seg) segments.push(seg);
    }
    if (block_key_seg) segments.push(block_key_seg);
    if (block_id_seg) segments.push(block_id_seg);
    return { segments, has_block };
  };
  const root = { name: "", children: {}, selected: false };
  const is_redundant = (p, selected_folders2) => selected_folders2.some((folder) => p.startsWith(`${folder}/`));
  const selected_folders = selected_items.filter((it) => {
    const for_ext_check = it.key.includes("#") ? it.key.split("#")[0] : it.key;
    return !for_ext_check.match(/\.[a-zA-Z0-9]+$/u);
  }).map((it) => it.key);
  for (const { key, exists } of selected_items) {
    if (is_redundant(key, selected_folders.filter((p) => p !== key))) continue;
    const { segments, has_block } = split_path_segments(key);
    let node = root;
    let running = "";
    segments.forEach((seg, idx) => {
      running = running ? `${running}/${seg}` : seg;
      if (seg.startsWith("external:..")) return;
      const is_last = idx === segments.length - 1;
      const is_block_leaf = is_last && has_block;
      if (!node.children[seg]) {
        node.children[seg] = {
          name: seg,
          path: is_block_leaf ? key : running,
          // For blocks we store an empty *array* so AVA can assert `children.length === 0`
          children: is_block_leaf ? [] : {},
          selected: false,
          is_file: is_block_leaf || is_last && seg.includes(".")
        };
      }
      node = node.children[seg];
      if (is_last) {
        node.selected = true;
        node.exists = exists;
      }
    });
  }
  return root;
}
function tree_to_html(node, selected_paths) {
  if (!node.children || !Object.keys(node.children).length) return "";
  const child_html = Object.values(node.children).sort((a, b) => {
    if (a.is_file !== b.is_file) return a.is_file ? 1 : -1;
    return a.name.localeCompare(b.name);
  }).map((child) => build_context_item_li(child, selected_paths, tree_to_html(child, selected_paths))).join("");
  return `<ul>${child_html}</ul>`;
}

// node_modules/smart-context-obsidian/src/components/context_tree.css
var css_sheet10 = new CSSStyleSheet();
css_sheet10.replaceSync(`.sc-context-tree ul {
  list-style: none;
  margin: 0 0 0 .8em;
  padding: 0;
}
.sc-context-tree .sc-tree-item {
  gap: 4px;
  padding: 2px 0;
  overflow: auto;
}

.sc-context-tree .sc-tree-item.expandable > .sc-tree-label::before {
  content: '\u25BE';
  display: inline-block;
  width: 1em;
  margin-right: 2px;
  cursor: pointer;
}

.sc-context-tree .sc-tree-item.collapsed > .sc-tree-label::before {
  content: '\u25B8';
}

.sc-context-tree .sc-tree-item.collapsed > ul {
  display: none;
}

.sc-context-tree .sc-tree-item.dir > span {
  opacity: 0.8;
}
.sc-context-tree .sc-tree-item.dir > span::after {
  content: '/';
}
.sc-context-tree .sc-tree-label {
  cursor: pointer;
}
.sc-context-tree .sc-tree-remove,
.sc-context-tree .sc-tree-connections,
.sc-context-tree .sc-tree-links {
  cursor: pointer;
  opacity: .8;
}
.sc-context-tree .sc-tree-remove:hover,
.sc-context-tree .sc-tree-connections:hover,
.sc-context-tree .sc-tree-links:hover {
  opacity: 1;
}

.sc-tree-remove, 
.sc-tree-connections, 
.sc-tree-links {
  display: inline-flex;
  width: 20px;
  justify-content: space-around;
  align-items: center;
  border-radius: 5px;
  border: 1px solid transparent;
  transition: all 0.2s ease; /* Smooth transition for hover effects */
}

.sc-tree-remove:hover,
.sc-tree-connections:hover,
.sc-tree-links:hover {
  border-color: var(--interactive-accent);
}


/* * Hover state for tree elements that should change text/icon color.
 * This includes the label and the connection/link icons.
 */
.sc-tree-label:hover,
.sc-tree-connections:hover,
.sc-tree-links:hover {
  color: var(--text-accent);
}

.smart-block-popover {
  z-index: 999999;
}

.sc-tree-thumb {
  max-width: 20px;
  max-height: 20px;
  margin-right: 4px;
  vertical-align: middle;
}

.missing.sc-tree-label {
  text-decoration: line-through;
  opacity: 0.6;

  &::before {
    content: 'Missing: ';
    color: var(--text-muted);
  }
}`);
var context_tree_default = css_sheet10;

// node_modules/smart-context-obsidian/node_modules/smart-sources/actions/get_links_to_depth.js
var LINK_DIRECTIONS = (
  /** @type {const} */
  {
    OUT: "out",
    IN: "in",
    BOTH: "both"
  }
);
function get_links_to_depth(target_source, max_depth = 1, {
  direction = LINK_DIRECTIONS.OUT,
  include_self = false
} = {}) {
  if (!target_source || typeof target_source !== "object" || !target_source.collection) {
    return [];
  }
  const collection = target_source.collection;
  const links_map = collection.links || {};
  const visited = /* @__PURE__ */ new Set();
  const results = [];
  const enqueue = (src, d) => {
    if (!src) return;
    if (visited.has(src.key)) return;
    visited.add(src.key);
    queue.push({ src, depth: d });
    results.push({ depth: d, item: src });
  };
  const queue = [{ src: target_source, depth: 0 }];
  if (include_self) {
    visited.add(target_source.key);
    results.push({ depth: 0, item: target_source });
  }
  while (queue.length) {
    const current = queue.shift();
    if (current.depth >= max_depth) continue;
    const nextDepth = current.depth + 1;
    if (direction === LINK_DIRECTIONS.OUT || direction === LINK_DIRECTIONS.BOTH) {
      for (const path of current.src.outlinks) {
        enqueue(collection.get(path), nextDepth);
      }
    }
    if (direction === LINK_DIRECTIONS.IN || direction === LINK_DIRECTIONS.BOTH) {
      const inlink_paths = Object.keys(links_map[current.src.path] || {});
      for (const p of inlink_paths) {
        enqueue(collection.get(p), nextDepth);
      }
    }
  }
  return results;
}

// node_modules/smart-context-obsidian/node_modules/obsidian-smart-env/utils/open_note.js
var import_obsidian46 = require("obsidian");
async function open_note2(plugin, target_path, event = null, opts = {}) {
  const { new_tab = false } = opts;
  const env = plugin.env;
  if (target_path.includes(".pdf#page=")) {
    return plugin.app.workspace.openLinkText(target_path, "/");
  }
  if (target_path.endsWith("#")) target_path = target_path.slice(0, -1);
  let target_file;
  let block = null;
  if (target_path.includes("#")) {
    const [file_path] = target_path.split("#");
    target_file = plugin.app.metadataCache.getFirstLinkpathDest(file_path, "");
    block = env.smart_blocks.get(target_path);
  } else {
    target_file = plugin.app.metadataCache.getFirstLinkpathDest(target_path, "");
  }
  if (!target_file) {
    console.warn(`[open_note] Unable to resolve file for ${target_path}`);
    return;
  }
  let leaf;
  if (event) {
    const is_mod = import_obsidian46.Keymap.isModEvent(event);
    const is_alt = import_obsidian46.Keymap.isModifier(event, "Alt");
    if (is_mod && is_alt) {
      leaf = plugin.app.workspace.splitActiveLeaf("vertical");
    } else if (is_mod || new_tab) {
      leaf = plugin.app.workspace.getLeaf(true);
    } else {
      leaf = plugin.app.workspace.getMostRecentLeaf();
    }
  } else {
    leaf = plugin.app.workspace.getMostRecentLeaf();
  }
  await leaf.openFile(target_file);
  if (typeof block?.line_start === "number") {
    const { editor } = leaf.view;
    const pos = { line: block.line_start, ch: 0 };
    editor.setCursor(pos);
    editor.scrollIntoView({ to: pos, from: pos }, true);
  }
}

// node_modules/smart-context-obsidian/src/components/context_tree.js
var import_obsidian50 = require("obsidian");

// node_modules/smart-context-obsidian/src/views/context_selector_modal.js
var import_obsidian48 = require("obsidian");

// node_modules/smart-context-obsidian/node_modules/smart-file-system/utils/ignore.js
var TEXT_FILE_EXTENSIONS2 = [
  ".asm",
  ".bat",
  ".c",
  ".cfg",
  ".clj",
  ".conf",
  ".cpp",
  ".cs",
  ".css",
  ".csv",
  ".d",
  ".dart",
  ".ejs",
  ".elm",
  ".erl",
  ".f",
  ".go",
  ".gradle",
  ".groovy",
  ".h",
  ".hbs",
  ".hpp",
  ".hs",
  ".html",
  ".ini",
  ".jade",
  ".java",
  ".js",
  ".json",
  ".jsx",
  ".kt",
  ".less",
  ".lisp",
  ".log",
  ".lua",
  ".m",
  ".makefile",
  ".md",
  ".mdx",
  ".ml",
  ".mjs",
  ".mustache",
  ".pas",
  ".php",
  ".pl",
  ".properties",
  ".pug",
  ".py",
  ".r",
  ".rb",
  ".rs",
  ".sass",
  ".scala",
  ".scheme",
  ".scss",
  ".sh",
  ".sql",
  ".svelte",
  ".swift",
  ".tcl",
  ".tex",
  ".tpl",
  ".ts",
  ".tsx",
  ".twig",
  ".txt",
  ".vb",
  ".vue",
  ".xml",
  ".yaml",
  ".yml",
  ".canvas"
];
var NO_EXTENSION_TEXT_FILES2 = [
  "Dockerfile",
  "Appfile",
  "Matchfile",
  "Deliverfile",
  "Gymfile",
  "Fastfile",
  "Gemfile",
  "Guardfile",
  "Jenkinsfile",
  "Makefile",
  "Procfile",
  "Rakefile"
];
function is_text_file2(file_path) {
  const last_dot_index = file_path.lastIndexOf(".");
  if (last_dot_index === -1) {
    if (NO_EXTENSION_TEXT_FILES2.some((file) => file_path.endsWith(file))) {
      return true;
    }
    return false;
  }
  const ext = file_path.substring(last_dot_index).toLowerCase();
  return TEXT_FILE_EXTENSIONS2.includes(ext);
}

// node_modules/smart-context-obsidian/src/utils/get_all_leaves.js
function get_all_leaves2(app2) {
  const leaves = [];
  const recurse = (container) => {
    if (container.children) {
      for (const child of container.children) {
        recurse(child);
      }
    }
    if (container.type === "leaf") {
      leaves.push(container);
    }
  };
  recurse(app2.workspace.rootSplit);
  return leaves;
}

// node_modules/smart-context-obsidian/src/utils/get_all_open_file_paths.js
function get_all_open_file_paths2(app2) {
  const leaves = get_all_leaves2(app2);
  const files = /* @__PURE__ */ new Set();
  for (const leaf of leaves) {
    const file_path = leaf.view?.state?.file ?? leaf.view?.file?.path;
    if (file_path && is_text_file2(file_path)) {
      files.add(file_path);
    }
  }
  return [...files];
}

// node_modules/smart-context-obsidian/src/utils/is_leaf_visible.js
function is_leaf_visible2(leaf) {
  const parent = leaf.parent;
  if (!parent) {
    return leaf.containerEl && leaf.containerEl.offsetParent !== null;
  }
  if ("activeTab" in parent) {
    return parent.activeTab === leaf && leaf.containerEl && leaf.containerEl.offsetParent !== null;
  }
  return leaf.containerEl && leaf.containerEl.offsetParent !== null;
}

// node_modules/smart-context-obsidian/src/utils/get_visible_open_files.js
function get_visible_open_files2(app2) {
  const leaves = get_all_leaves2(app2);
  const visible_files = /* @__PURE__ */ new Set();
  for (const leaf of leaves) {
    if (!is_leaf_visible2(leaf)) continue;
    const file = leaf.view?.file;
    if (file && is_text_file2(file.path)) {
      visible_files.add(file);
    }
  }
  return [...visible_files].map((file) => file.path);
}

// node_modules/smart-context-obsidian/src/utils/send_context_changed_event.js
function send_context_changed_event2(container, next_ctx) {
  container.dispatchEvent(new CustomEvent("smart-env:context-changed", {
    detail: { context: next_ctx },
    bubbles: true,
    composed: true
  }));
}

// node_modules/smart-context-obsidian/src/utils/get_selected_text.js
var import_obsidian47 = require("obsidian");

// node_modules/smart-context-obsidian/node_modules/obsidian-smart-env/utils/get_editor_selection.js
function get_editor_selection2(editor) {
  if (editor && typeof editor.getSelection === "function") {
    return editor.getSelection();
  }
  return "";
}

// node_modules/smart-context-obsidian/src/utils/get_selected_text.js
function get_selected_text2(app2) {
  const view = app2.workspace.getActiveViewOfType(import_obsidian47.MarkdownView);
  return get_editor_selection2(view?.editor);
}

// node_modules/smart-context-obsidian/node_modules/smart-collections/utils/get_item_display_name.js
function get_item_display_name5(key, show_full_path) {
  if (show_full_path) {
    return key.split("/").join(" > ").replace(".md", "");
  }
  return key.split("/").pop().replace(".md", "");
}

// node_modules/smart-context-obsidian/node_modules/smart-blocks/utils/get_block_display_name.js
function get_block_display_name4(key, show_full_path) {
  const [source_key, ...path_parts] = key.split("#").filter(Boolean);
  const source_name = get_item_display_name5(source_key, show_full_path);
  if (show_full_path) return [source_name, ...path_parts].join(" > ");
  const last_heading = path_parts.findLast((part) => part && part[0] !== "{");
  return [source_name, last_heading].join(" > ");
}

// node_modules/smart-context-obsidian/src/utils/get_block_suggestions.js
function create_snippet2(content, max = 100) {
  let truncated = content.replace(/\n/g, " ").replace(/[^A-Za-z0-9\.,]/g, " ");
  if (truncated.length > max) {
    const half = Math.floor((max - 3) / 2);
    truncated = truncated.slice(0, half) + "..." + truncated.slice(truncated.length - half);
  }
  return truncated;
}
function get_all_blocks2(source2) {
  const entries = Object.entries(source2?.data?.blocks || {});
  const blocks = entries.map(([key, value]) => {
    key = source2.key + key;
    const existing = source2.env.smart_blocks.get(key);
    if (existing) return existing;
    const block = new source2.env.smart_blocks.item_type(source2.env, { key, lines: value });
    source2.env.smart_blocks.set(block);
    return block;
  });
  return blocks;
}
async function get_block_suggestions2(source2) {
  const blocks = get_all_blocks2(source2);
  const suggestions = [];
  for (const block of blocks) {
    let display_text = get_block_display_name4(block.key);
    const content = await block.read();
    const snippet = create_snippet2(content);
    if (snippet) {
      display_text += (display_text.endsWith(" ") ? "" : ": ") + snippet + ` (${content.length} chars)`;
    }
    suggestions.push({
      item: block,
      path: display_text
    });
  }
  return suggestions;
}

// node_modules/smart-context-obsidian/src/utils/get_all_tags.js
function get_all_tags2(app2) {
  const tag_map = app2.metadataCache.getTags();
  return Object.keys(tag_map);
}

// node_modules/smart-context-obsidian/src/utils/get_files_with_tag.js
function get_files_with_tag2(app2, tag) {
  const files = app2.vault.getMarkdownFiles();
  const result = [];
  for (const file of files) {
    const cache = app2.metadataCache.getFileCache(file);
    const tags = [
      ...cache?.tags?.map((t) => t.tag) || [],
      ...cache?.frontmatter?.tags || []
    ].map((t) => t.startsWith("#") ? t : `#${t}`);
    if (tags.includes(tag)) result.push(file.path);
  }
  return result;
}

// node_modules/smart-context-obsidian/src/views/context_selector_modal.js
var ContextSelectorModal2 = class extends import_obsidian48.FuzzySuggestModal {
  static open(env, opts) {
    const plugin = env.smart_context_plugin || env.smart_chat_plugin || env.smart_connections_plugin || env.plugin;
    if (!env.context_selector_modal) {
      if (env.smart_context_plugin?.ContextSelectorModal) {
        env.context_selector_modal = new env.smart_context_plugin.ContextSelectorModal(plugin, opts);
      } else env.context_selector_modal = new this(plugin, opts);
    }
    env.context_selector_modal.open(opts);
    return env.context_selector_modal;
  }
  static close(env) {
    env.context_selector_modal.close(true);
    env.context_selector_modal = null;
  }
  /**
   * @param {import('../../main.js').default} plugin
   * @param {Object} [opts={}]
   * @param {SmartContext} [opts.ctx]
   */
  constructor(plugin, opts = {}) {
    super(plugin.app);
    this.app = plugin.app;
    this.plugin = plugin;
    this.opts = opts;
    this.ctx = opts.ctx ?? null;
    this.setInstructions([
      { command: "Enter", purpose: "Add to context" },
      { command: "\u2318/Ctrl + Enter", purpose: "Open named context in builder" },
      { command: "Esc", purpose: "Close" }
    ]);
    this.plugin.env.create_env_getter(this);
    this.mod_key_was_held = false;
    this.containerEl.addEventListener("keydown", (e) => {
      if (e.key === "Escape") this.close(true);
    });
    this.modalEl.addEventListener("keydown", (e) => {
      if (e.key === "Enter") this.selectActiveSuggestion(e);
      if (e.key === "ArrowRight") {
        e.preventDefault();
        this.arrow_right = true;
        this.selectActiveSuggestion(e);
      }
    });
  }
  /* ───────────────────────────────────────────────────────────── */
  /**
   * Sort an array of context entries according to:
   *   – priority 0 → item has in/out‑links with the current active note
   *   – priority 1 → item modified within the last 24 h
   *   – priority 2 → all remaining items
   * Within each priority group items are ordered alphabetically.
   *
   * @param {Array<Object>} entries
   * @returns {Array<Object>} sorted copy
   */
  sort_context_entries(entries) {
    const active_file = this.app.workspace.getActiveFile();
    let active_src = null;
    if (active_file) {
      active_src = this.env.smart_sources.get(active_file.path);
    }
    const linked_keys = /* @__PURE__ */ new Set();
    if (active_src) {
      active_src.outlinks.forEach((k) => linked_keys.add(k));
      active_src.inlinks.forEach((k) => linked_keys.add(k));
    }
    const recent_cutoff = Date.now() - 24 * 60 * 60 * 1e3;
    const get_key = (entry) => entry?.item?.key || entry?.key || entry?.path || "";
    const get_src = (entry) => entry?.item || entry;
    const priority = (entry) => {
      const key = get_key(entry);
      const src = get_src(entry);
      if (linked_keys.has(key)) return 0;
      if (src?.mtime && src.mtime >= recent_cutoff) return 1;
      return 2;
    };
    return [...entries].sort((a, b) => {
      const pa = priority(a);
      const pb = priority(b);
      if (pa !== pb) return pa - pb;
      return get_key(a).localeCompare(get_key(b));
    });
  }
  /* ───────────────────────────────────────────────────────────── */
  ensure_ctx() {
    if (this.ctx) return this.ctx;
    this.ctx = this.env.smart_contexts.new_context({}, {
      add_items: this.opts.initial_context_items
    });
    return this.ctx;
  }
  async open(opts = this.opts) {
    if (opts.ctx) this.ctx = opts.ctx;
    if (opts.opener_container) this.add_opener_container(opts.opener_container);
    this.opts = opts;
    await this.render();
    super.open();
    this.focus_input();
  }
  async render() {
    this.modalEl.style.display = "flex";
    this.modalEl.style.flexDirection = "column";
    this.modalEl.style.height = "100%";
    const prompt_results = this.modalEl.querySelector(".prompt-results");
    if (prompt_results) {
      prompt_results.style.flex = "1 1 50%";
      prompt_results.style.minHeight = "0";
      prompt_results.style.overflowY = "auto";
    }
    const ctx = this.ensure_ctx();
    const selected = get_selected_text2(this.app);
    if (selected) {
      const maxLen = 70;
      let truncated = selected.replace(/[^A-Za-z0-9]/gm, " ");
      if (selected.length > maxLen) {
        const half = Math.floor((maxLen - 3) / 2);
        truncated = selected.slice(0, half) + "..." + selected.slice(selected.length - half);
      }
      const key = `inline:${truncated}`;
      if (!this.ctx.data.context_items[key]) {
        this.ctx.data.context_items[key] = { content: selected };
      }
    }
    const builder_container = await this.env.render_component(
      "context_builder",
      ctx,
      {
        ...this.opts
      }
    );
    builder_container.addEventListener("smart-env:context-changed", (e) => {
      const updated_ctx = e.detail.context;
      this.ctx = updated_ctx;
      this.opts.ctx = updated_ctx;
      this.updateSuggestions();
      this.render();
    });
    builder_container.classList.add("modal");
    const actions_el = builder_container.querySelector(".sc-context-actions");
    if (ctx.has_context_items) {
      const clear_btn = document.createElement("button");
      clear_btn.textContent = "Clear";
      clear_btn.addEventListener("click", () => {
        ctx.data.context_items = {};
        ctx.queue_save();
        ctx.collection.process_save_queue();
        this.updateSuggestions();
        this.render();
      });
      actions_el.appendChild(clear_btn);
      const copy_btn = await this.env.render_component(
        "copy_to_clipboard_button",
        ctx
      );
      actions_el.appendChild(copy_btn);
    }
    if (!actions_el.querySelector('button[data-done="true"]')) {
      const done_btn = document.createElement("button");
      done_btn.dataset.done = "true";
      done_btn.textContent = "Done";
      done_btn.addEventListener("click", () => {
        this.close(true);
      });
      actions_el.appendChild(done_btn);
    }
    this.modalEl.querySelector(".sc-context-builder")?.remove();
    this.modalEl.prepend(builder_container);
    this.inputEl.focus();
  }
  get suggestions() {
    return this.opts.suggestions ?? [];
  }
  set suggestions(suggestions) {
    this.opts.suggestions = suggestions;
  }
  getItems() {
    const suggestions = this.suggestions?.filter(
      (s) => !s.item?.key || !this.ctx?.data?.context_items[s.item.key]
    );
    if (suggestions?.length) {
      const special_items2 = [];
      special_items2.push({
        name: "Back",
        items: {}
      });
      if (suggestions.some((s) => s.depth)) {
        const depth_1 = suggestions.filter((s) => s.depth <= 1);
        const depth_2 = suggestions.filter((s) => s.depth <= 2);
        const depth_3 = suggestions.filter((s) => s.depth <= 3);
        if (depth_1.length)
          special_items2.push({ name: `Add all to depth 1 (${depth_1.length})`, items: depth_1 });
        if (depth_2.length)
          special_items2.push({ name: `Add all to depth 2 (${depth_2.length})`, items: depth_2 });
        if (depth_3.length)
          special_items2.push({ name: `Add all to depth 3 (${depth_3.length})`, items: depth_3 });
      }
      if (suggestions.some((s) => s.score)) {
        const all_connections = suggestions.filter((s) => s.score);
        special_items2.push({
          name: `Add all connections (${all_connections.length})`,
          items: all_connections
        });
      }
      return [...special_items2, ...suggestions];
    }
    let special_items = this.opts.special_items ?? [];
    const visible_open_files = Array.from(get_visible_open_files2(this.app)).map((f) => {
      return { item: this.env.smart_sources.get(f) };
    });
    if (visible_open_files.length) {
      special_items.push({
        name: "Visible open files",
        items: visible_open_files
      });
      const all_open_files = Array.from(get_all_open_file_paths2(this.app)).map((f) => {
        return { item: this.env.smart_sources.get(f) };
      });
      if (all_open_files.length && visible_open_files.length !== all_open_files.length) special_items.push({
        name: "All open files",
        items: all_open_files
      });
    }
    special_items = special_items.map((i) => {
      if (i.items) {
        i.items = i.items.filter(
          (item) => item.item && !this.ctx?.data?.context_items[item.item.key]
        );
        i.name = `${i.name} (+${i.items.length})`;
      }
      return i;
    }).filter((i) => {
      if (i.items) return i.items.length > 0;
      return true;
    });
    const unselected = Object.values(this.env.smart_sources.items).filter(
      (src) => !this.ctx?.data?.context_items[src.key]
    );
    const folder_suggestions = (this.env.smart_sources.fs?.folder_paths || []).filter((p) => unselected.some((src) => src.key.startsWith(p))).map((p) => p.endsWith("/") ? p : p + "/").map((p) => ({ folder: p }));
    const tag_suggestions = get_all_tags2(this.app).map((t) => ({ tag: t }));
    const sorted_unselected = this.sort_context_entries(unselected);
    return [...special_items, ...folder_suggestions, ...tag_suggestions, ...sorted_unselected];
  }
  getItemText(item) {
    if (item.score) {
      return `${item.score.toFixed(2)} | ${item.item.path}`;
    }
    if (item.depth) {
      return `${item.depth} | ${item.item.path}`;
    }
    if (item.items && item.name) {
      return item.name;
    }
    if (item.folder) {
      return item.folder;
    }
    if (item.tag) {
      return item.tag;
    }
    return item.path;
  }
  async onChooseSuggestion(selection, evt) {
    if (evt) this.mod_key_was_held = import_obsidian48.Keymap.isModifier(evt, "Mod");
    if (selection.item.name === "Back") {
      if (this.last_input_value) {
        this.inputEl.value = this.last_input_value;
        this.last_input_value = null;
      }
      this.suggestions = null;
      this.updateSuggestions();
      return;
    }
    this.ensure_ctx();
    if (this.arrow_right && selection.item.items) {
      this.arrow_right = false;
      this.load_suggestions(selection.item.items);
      return;
    }
    if (this.arrow_right && Object.keys(selection.item?.data?.blocks || {}).length) {
      this.arrow_right = false;
      const blocks = await get_block_suggestions2(selection.item);
      this.load_suggestions(blocks);
      return;
    }
    if (selection.item.folder) {
      if (this.mod_key_was_held) {
        Object.keys(this.env.smart_sources.items).forEach((key) => {
          if (key.startsWith(selection.item.folder)) {
            this.ctx.data.context_items[key] = { d: 0 };
          }
        });
        this.mod_key_was_held = false;
        this.updateSuggestions();
        this.render();
        return;
      } else {
        this.arrow_right = false;
        const notes = Object.values(this.env.smart_sources.items).filter((src) => src.key.startsWith(selection.item.folder));
        this.load_suggestions(this.sort_context_entries(notes));
        return;
      }
    }
    if (selection.item.tag) {
      const paths = get_files_with_tag2(this.app, selection.item.tag);
      if (this.mod_key_was_held) {
        paths.forEach((p) => {
          if (!this.ctx.data.context_items[p]) {
            this.ctx.data.context_items[p] = { d: 0 };
          }
        });
        this.mod_key_was_held = false;
        this.updateSuggestions();
        this.render();
        return;
      } else {
        this.arrow_right = false;
        const notes = paths.map((p) => this.env.smart_sources.get(p)).filter(Boolean);
        this.load_suggestions(this.sort_context_entries(notes));
        return;
      }
    }
    if (selection.item.items) {
      for (const special_item of selection.item.items) {
        if (!this.ctx.data.context_items[special_item.item.key]) {
          this.ctx.data.context_items[special_item.item.key] = { d: 0 };
        }
      }
      this.updateSuggestions();
      this.render();
      return;
    }
    const item = selection.item?.item ?? selection.item;
    if (item.key && !this.ctx.data.context_items[item.key]) {
      this.ctx.data.context_items[item.key] = { d: 0 };
      this.updateSuggestions();
      this.render();
    }
  }
  focus_input() {
    setTimeout(() => this.inputEl.focus(), 100);
  }
  close(should_close = false) {
    this.mod_key_was_held = false;
    if (should_close) super.close();
  }
  onClose(should_close = false) {
    while (this.opener_containers?.length) {
      const container = this.opener_containers.pop();
      if (container.isConnected) {
        send_context_changed_event2(container, this.ctx);
      }
    }
  }
  /**
   * Add a container to the list of opener containers.
   * This is used to send context changed events when the modal is closed.
   * @param {HTMLElement|NodeList|Array<HTMLElement>|function} container - The container to add.
   * If a function is passed, it will be called to get the container(s).
   */
  add_opener_container(container) {
    if (!this.opener_containers) this.opener_containers = [];
    if (typeof container === "function") container = container();
    if (Array.isArray(container) || container instanceof NodeList) {
      container.forEach((c) => this.add_opener_container(c));
      return;
    }
    if (!(container instanceof HTMLElement)) {
      console.warn("ContextSelectorModal: opener_container must be an HTMLElement, received:", container);
      return;
    }
    if (!this.opener_containers.includes(container)) {
      this.opener_containers.push(container);
    }
  }
  load_suggestions(suggestions) {
    this.last_input_value = this.inputEl.value;
    this.inputEl.value = "";
    this.inputEl.focus();
    this.suggestions = suggestions;
    this.updateSuggestions();
    this.render();
  }
};

// node_modules/smart-context-obsidian/node_modules/obsidian-smart-env/utils/register_block_hover_popover.js
var import_obsidian49 = require("obsidian");
function register_block_hover_popover2(parent, target, env, block_key, plugin) {
  target.addEventListener("mouseover", async (ev) => {
    if (import_obsidian49.Keymap.isModEvent(ev)) {
      const block = env.smart_blocks.get(block_key);
      const markdown = await block?.read();
      if (markdown) {
        const popover = new import_obsidian49.HoverPopover(parent, target);
        const frag = env.smart_view.create_doc_fragment(`<div class="markdown-embed is-loaded">
                <div class="markdown-embed-content node-insert-event">
                  <div class="markdown-preview-view markdown-rendered node-insert-event show-indentation-guide allow-fold-headings allow-fold-lists">
                    <div class="markdown-preview-sizer markdown-preview-section">
                    </div>
                  </div>
                </div>
              </div>`);
        popover.hoverEl.classList.add("smart-block-popover");
        popover.hoverEl.appendChild(frag);
        const sizer = popover.hoverEl.querySelector(".markdown-preview-sizer");
        import_obsidian49.MarkdownRenderer.render(plugin.app, markdown, sizer, "/", popover);
      }
    }
  });
}

// node_modules/smart-context-obsidian/src/utils/send_context_updated_event.js
function send_context_updated_event(container) {
  container.dispatchEvent(new CustomEvent("smart-env:context-updated", {
    detail: { updated: true },
    bubbles: true,
    composed: true
  }));
}

// node_modules/smart-context-obsidian/src/utils/is_image_path.js
var is_image_path = (path) => /\.(png|jpe?g|gif|svg|webp)$/i.test(path);

// node_modules/smart-context-obsidian/src/utils/remove_context_path.js
var remove_context_path = (context_items = {}, path = "") => {
  const entries = Object.entries(context_items).filter(([key]) => {
    return !(key === path || key.startsWith(`${path}/`) || key.startsWith(`${path}#`));
  });
  return Object.fromEntries(entries);
};

// node_modules/smart-context-obsidian/src/components/context_tree.js
var test_has_children = (li) => !!li.querySelector(":scope > ul");
var toggle_collapsed = (li) => li.classList.toggle("collapsed");
var setup_collapse_handlers = (container) => {
  container.querySelectorAll(".sc-tree-item.dir").forEach((li) => {
    if (!test_has_children(li)) return;
    li.classList.add("expandable");
    const label = li.querySelector(":scope > .sc-tree-label");
    if (!label) return;
    label.addEventListener("click", (ev) => {
      if (ev.metaKey || ev.ctrlKey) return;
      ev.preventDefault();
      ev.stopPropagation();
      toggle_collapsed(li);
    });
  });
};
function build_html37(ctx) {
  const items = ctx.get_context_items();
  const tree_list_html = build_context_items_tree_html(items);
  return `<div>
    <div class="sc-context-tree">${tree_list_html || "<em>No items selected\u2026</em>"}</div>
  </div>`;
}
async function render45(ctx, opts = {}) {
  const html = build_html37(ctx);
  const frag = this.create_doc_fragment(html);
  this.apply_style_sheet(context_tree_default);
  const container = frag.querySelector(".sc-context-tree");
  await post_process39.call(this, ctx, container, opts);
  return container;
}
async function post_process39(ctx, container, opts = {}) {
  const env = ctx?.env;
  const plugin = env?.smart_context_plugin || // uses early-release version if available
  env?.smart_chat_plugin || env?.smart_connections_plugin || env?.plugin;
  const render_tree = () => {
    const items = ctx.get_context_items();
    const tree_list_html = build_context_items_tree_html(items);
    this.safe_inner_html(container, tree_list_html || "<em>No items selected\u2026</em>");
    attach_item_handlers();
    setup_collapse_handlers(container);
  };
  container.addEventListener("smart-env:context-updated", (e) => {
    render_tree();
  });
  const attach_item_handlers = () => {
    if (!opts.disable_context_changes) {
      container.querySelectorAll(".sc-tree-remove").forEach((btn) => {
        btn.title = `Remove ${btn.dataset.path}`;
        btn.addEventListener("click", (e) => {
          const p = e.currentTarget.dataset.path;
          ctx.data.context_items = remove_context_path(ctx.data.context_items, p);
          send_context_updated_event(container);
        });
      });
      container.querySelectorAll(".sc-tree-connections").forEach((btn) => {
        if (!btn.dataset.path) return;
        const target = ctx.get_ref(btn.dataset.path);
        if (!target) return;
        const icon = (0, import_obsidian50.getIcon)("smart-connections");
        btn.appendChild(icon);
        btn.addEventListener("click", async (e) => {
          const p = e.currentTarget.dataset.path;
          const target2 = ctx.get_ref(p);
          const connections = await target2.find_connections();
          const modal = ContextSelectorModal2.open(env, {
            ctx,
            opener_container: container
          });
          modal.load_suggestions(connections);
        });
      });
      container.querySelectorAll(".sc-tree-links").forEach((btn) => {
        if (!btn.dataset.path) return;
        const target = ctx.get_ref(btn.dataset.path);
        if (!target) return;
        const links = get_links_to_depth(target, 3);
        if (!links.length) return btn.style.display = "none";
        const icon = (0, import_obsidian50.getIcon)("link");
        btn.appendChild(icon);
        btn.addEventListener("click", () => {
          const p = btn.dataset.path;
          const target2 = ctx.get_ref(p);
          if (!target2) return;
          const links2 = get_links_to_depth(target2, 3);
          const modal = ContextSelectorModal2.open(env, {
            ctx,
            opener_container: container
          });
          modal.load_suggestions(links2);
        });
      });
    }
    container.querySelectorAll(".sc-tree-label").forEach((label) => {
      const li = label.closest(".sc-tree-item");
      if (!li) return;
      const item_path = li.dataset.path;
      if (!item_path) return;
      label.dataset.href = item_path;
      label.dataset.path = item_path;
      label.setAttribute("draggable", "true");
      label.title = item_path;
      li.querySelector("img.sc-tree-thumb")?.remove();
      if (is_image_path(item_path)) {
        const file = plugin?.app?.metadataCache?.getFirstLinkpathDest(
          item_path.split("#")[0],
          ""
        );
        if (file) {
          const thumb = document.createElement("img");
          thumb.className = "sc-tree-thumb";
          thumb.src = plugin.app.vault.getResourcePath(file);
          label.prepend(thumb);
        }
      }
      if (item_path.includes("{")) {
        register_block_hover_popover2(li, label, env, item_path, plugin);
      } else {
        label.addEventListener("mouseover", async (ev) => {
          plugin?.app?.workspace.trigger("hover-link", {
            event: ev,
            source: "smart-context-tree",
            hoverParent: label.parentElement,
            targetEl: label,
            linktext: item_path
          });
        });
      }
      label.addEventListener("dragstart", (ev) => {
        const file_path = item_path.split("#")[0];
        const file = plugin?.app?.metadataCache?.getFirstLinkpathDest(file_path, "");
        const drag_data = plugin?.app?.dragManager?.dragFile(ev, file);
        plugin?.app?.dragManager?.onDragStart(ev, drag_data);
      });
      if (!li.classList.contains("sc-external")) {
        label.addEventListener("click", (ev) => {
          if (!li.classList.contains("dir") || ev.metaKey || ev.ctrlKey) {
            ev.preventDefault();
            open_note2(plugin, item_path, ev, { new_tab: true });
          }
        });
      }
    });
  };
  render_tree();
  return container;
}

// node_modules/smart-context-obsidian/src/utils/show_stats_notice.js
var import_obsidian51 = require("obsidian");
function show_stats_notice(stats, contextMsg) {
  let noticeMsg = `Copied to clipboard! (${contextMsg})`;
  if (stats) {
    const char_count = stats.char_count < 1e5 ? stats.char_count : `~${Math.round(stats.char_count / 1e3)}k`;
    noticeMsg += `, ${char_count} chars`;
    if (stats.exclusions) {
      const total_excluded = Object.values(stats.exclusions).reduce(
        (p, c) => p + c,
        0
      );
      if (total_excluded > 0) {
        noticeMsg += `, ${total_excluded} section(s) excluded`;
      }
    }
  }
  new import_obsidian51.Notice(noticeMsg);
}

// node_modules/smart-context-obsidian/src/utils/copy_to_clipboard.js
var import_obsidian52 = require("obsidian");
async function copy_to_clipboard(text) {
  try {
    if (navigator?.clipboard?.writeText) {
      await navigator.clipboard.writeText(text);
    } else if (!import_obsidian52.Platform.isMobile) {
      const { clipboard } = require("electron");
      clipboard.writeText(text);
    } else {
      new import_obsidian52.Notice("Unable to copy text: no valid method found.");
    }
  } catch (err) {
    console.error("Failed to copy text:", err);
    new import_obsidian52.Notice("Failed to copy.");
  }
}

// node_modules/smart-context-obsidian/src/components/copy_to_clipboard_button.js
function build_html38() {
  return '<button class="sc-copy-clipboard" type="button">Copy to clipboard</button>';
}
async function render46(ctx) {
  const html = build_html38();
  const frag = this.create_doc_fragment(html);
  const btn = frag.querySelector("button");
  btn.addEventListener("click", async () => {
    const { context, stats, images } = await ctx.compile({ link_depth: 0 });
    await copy_to_clipboard(context, images);
    show_stats_notice(stats, `${Object.keys(ctx.data.context_items).length} file(s)`);
  });
  return frag;
}

// node_modules/smart-context-obsidian/smart_env.config.js
var smart_env_config6 = {
  collections: {},
  item_types: {},
  components: {
    context_builder: render43,
    context_stats: render44,
    context_tree: render45,
    copy_to_clipboard_button: render46
  }
};

// src/sc_settings_tab.js
var import_obsidian53 = require("obsidian");
var ScSettingsTab = class extends import_obsidian53.PluginSettingTab {
  constructor(app2, plugin) {
    super(app2, plugin);
    this.plugin = plugin;
    this.main_settings_container = null;
  }
  get env() {
    return this.plugin.env;
  }
  /**
   * Called by Obsidian to display the settings tab
   */
  display() {
    console.log("displaying settings tab");
    this.render();
  }
  get smart_view() {
    if (!this._smart_view) {
      this._smart_view = new this.plugin.smart_env_config.modules.smart_view.class({
        adapter: this.plugin.smart_env_config.modules.smart_view.adapter
      });
    }
    return this._smart_view;
  }
  async render() {
    await wait_for_env_to_load(this, { wait_for_states: ["loading", "loaded"] });
    this.smart_view.safe_inner_html(this.containerEl, '<div class="sc-loading">Loading main settings...</div>');
    this.plugin.env.render_component("main_settings", this.plugin).then((frag) => {
      this.containerEl.empty();
      this.containerEl.appendChild(frag);
    });
  }
};

// node_modules/obsidian-smart-env/utils/open_note.js
var import_obsidian54 = require("obsidian");
async function open_note3(plugin, target_path, event = null, opts = {}) {
  const { new_tab = false } = opts;
  const env = plugin.env;
  if (target_path.includes(".pdf#page=")) {
    return plugin.app.workspace.openLinkText(target_path, "/");
  }
  if (target_path.endsWith("#")) target_path = target_path.slice(0, -1);
  let target_file;
  let block = null;
  if (target_path.includes("#")) {
    const [file_path] = target_path.split("#");
    target_file = plugin.app.metadataCache.getFirstLinkpathDest(file_path, "");
    block = env.smart_blocks.get(target_path);
  } else {
    target_file = plugin.app.metadataCache.getFirstLinkpathDest(target_path, "");
  }
  if (!target_file) {
    console.warn(`[open_note] Unable to resolve file for ${target_path}`);
    return;
  }
  let leaf;
  if (event) {
    const is_mod = import_obsidian54.Keymap.isModEvent(event);
    const is_alt = import_obsidian54.Keymap.isModifier(event, "Alt");
    if (is_mod && is_alt) {
      leaf = plugin.app.workspace.splitActiveLeaf("vertical");
    } else if (is_mod || new_tab) {
      leaf = plugin.app.workspace.getLeaf(true);
    } else {
      leaf = plugin.app.workspace.getMostRecentLeaf();
    }
  } else {
    leaf = plugin.app.workspace.getMostRecentLeaf();
  }
  await leaf.openFile(target_file);
  if (typeof block?.line_start === "number") {
    const { editor } = leaf.view;
    const pos = { line: block.line_start, ch: 0 };
    editor.setCursor(pos);
    editor.scrollIntoView({ to: pos, from: pos }, true);
  }
}

// node_modules/smart-notices/smart_notices.js
var import_obsidian55 = require("obsidian");

// node_modules/smart-notices/notices.js
var NOTICES2 = {
  item_excluded: {
    en: "Cannot show Smart Connections for excluded entity: {{entity_key}}"
  },
  load_env: {
    en: "Mobile detected: to prevent performance issues, click to load Smart Environment when ready.",
    button: {
      en: `Load Smart Env`,
      callback: (env) => {
        env.load(true);
      }
    },
    timeout: 1e4
  },
  /** @deprecated in favor of in-component insctructions (2025-06-22) */
  missing_entity: {
    en: "No entity found for key: {{key}}"
  },
  notice_muted: {
    en: "Notice muted"
  },
  new_version_available: {
    en: "A new version is available! (v{{version}})",
    timeout: 15e3,
    button: {
      en: "Release notes",
      callback: (scope) => {
        window.open("https://github.com/brianpetro/obsidian-smart-connections/releases", "_blank");
      }
    }
  },
  new_early_access_version_available: {
    en: "A new early access version is available! (v{{version}})"
  },
  supporter_key_required: {
    en: "Supporter license key required for early access update"
  },
  revert_to_stable_release: {
    en: 'Click "Check for Updates" in the community plugins tab and complete the update for Smart Connections to finish reverting to the stable release.',
    timeout: 0
  },
  action_installed: {
    en: 'Installed action "{{name}}"'
  },
  action_install_error: {
    en: 'Error installing action "{{name}}": {{error}}',
    timeout: 0
  },
  embed_model_not_loaded: {
    en: "Embed model not loaded. Please wait for the model to load and try again."
  },
  embed_search_text_failed: {
    en: "Failed to embed search text."
  },
  error_in_embedding_search: {
    en: "Error in embedding search. See console for details."
  },
  copied_to_clipboard: {
    en: "Message: {{content}} copied successfully."
  },
  copy_failed: {
    en: "Unable to copy message to clipboard."
  },
  copied_chatgpt_url_to_clipboard: {
    en: "ChatGPT URL copied to clipboard."
  },
  loading_collection: {
    en: "Loading {{collection_key}}..."
  },
  done_loading_collection: {
    en: "{{collection_key}} loaded."
  },
  saving_collection: {
    en: "Saving {{collection_key}}..."
  },
  initial_scan: {
    en: "[{{collection_key}}] Starting initial scan...",
    timeout: 0
  },
  done_initial_scan: {
    en: "[{{collection_key}}] Initial scan complete.",
    timeout: 3e3
  },
  pruning_collection: {
    en: "Pruning {{collection_key}}..."
  },
  done_pruning_collection: {
    en: "Pruned {{count}} items from {{collection_key}}."
  },
  embedding_progress: {
    en: "Embedding progress: {{progress}} / {{total}}\n{{tokens_per_second}} tokens/sec using {{model_name}}",
    button: {
      en: "Pause",
      callback: (env) => {
        console.log("pausing");
        env.smart_sources.entities_vector_adapter.halt_embed_queue_processing();
      }
    },
    timeout: 0
  },
  embedding_complete: {
    en: "Embedding complete. {{total_embeddings}} embeddings created. {{tokens_per_second}} tokens/sec using {{model_name}}",
    timeout: 0
  },
  embedding_paused: {
    en: "Embedding paused. Progress: {{progress}} / {{total}}\n{{tokens_per_second}} tokens/sec using {{model_name}}",
    button: {
      en: "Resume",
      callback: (env) => {
        env.smart_sources.entities_vector_adapter.resume_embed_queue_processing(100);
      }
    },
    timeout: 0
  },
  embedding_error: {
    en: "Error embedding: {{error}}",
    timeout: 0
  },
  import_progress: {
    en: "Importing... {{progress}} / {{total}} sources",
    timeout: 0
  },
  done_import: {
    en: "Import complete. {{count}} sources imported in {{time_in_seconds}}s",
    timeout: 0
  },
  no_import_queue: {
    en: "No items in import queue"
  },
  clearing_all: {
    en: "Clearing all data...",
    timeout: 0
  },
  done_clearing_all: {
    en: "All data cleared and reimported",
    timeout: 3e3
  },
  image_extracting: {
    en: "Extracting text from Image(s)",
    timeout: 0
  },
  pdf_extracting: {
    en: "Extracting text from PDF(s)",
    timeout: 0
  },
  insufficient_settings: {
    en: "Insufficient settings for {{key}}, missing: {{missing}}",
    timeout: 0
  },
  unable_to_init_source: {
    en: "Unable to initialize source: {{key}}",
    timeout: 0
  },
  reload_sources: {
    en: "Reloaded sources in {{time_ms}}ms"
  }
};

// node_modules/smart-notices/smart_notices.js
function define_default_create_methods2(notices) {
  for (const key of Object.keys(notices)) {
    const notice_obj = notices[key];
    if (typeof notice_obj.create !== "function") {
      notice_obj.create = function(opts = {}) {
        let text = this.en ?? key;
        for (const [k, v] of Object.entries(opts)) {
          text = text.replace(new RegExp(`{{${k}}}`, "g"), String(v));
        }
        let button;
        if (!opts.button && this.button) {
          const btn_label = typeof this.button.en === "string" ? this.button.en : "OK";
          button = {
            text: btn_label,
            callback: typeof this.button.callback === "function" ? this.button.callback : () => {
            }
            // no-op
          };
        } else {
          button = opts.button;
        }
        let final_timeout = opts.timeout ?? this.timeout ?? 5e3;
        return {
          text,
          button,
          timeout: final_timeout,
          confirm: opts.confirm,
          // pass any user-provided confirm
          immutable: opts.immutable
          // pass any user-provided immutable
        };
      };
    }
  }
  return notices;
}
var SmartNotices2 = class {
  /**
   * @param {Object} scope - The main plugin instance
   */
  constructor(env, opts = {}) {
    env?.create_env_getter(this);
    this.active = {};
    this.adapter = opts.adapter || this.env.config.modules.smart_notices.adapter;
    define_default_create_methods2(NOTICES2);
  }
  /** plugin settings for notices (muted, etc.) */
  get settings() {
    if (!this.env?.settings?.smart_notices) {
      this.env.settings.smart_notices = {};
    }
    if (!this.env?.settings?.smart_notices?.muted) {
      this.env.settings.smart_notices.muted = {};
    }
    return this.env?.settings?.smart_notices;
  }
  /**
   * Displays a notice by key or custom message.
   * Usage:
   *   notices.show('load_env', { scope: this });
   *
   * @param {string} id - The notice key or custom ID
   * @param {object} opts - Additional user opts
   */
  show(id, opts = {}) {
    let message = null;
    if (typeof opts === "string") {
      message = opts;
    } else {
      opts = opts || {};
    }
    const normalized_id = this._normalize_notice_key(id);
    if (this.settings?.muted?.[normalized_id]) {
      if (opts.confirm?.callback) {
        opts.confirm.callback();
      }
      return;
    }
    const notice_entry = NOTICES2[id];
    let derived = {
      text: message || id,
      timeout: opts.timeout ?? 5e3,
      button: opts.button,
      immutable: opts.immutable,
      confirm: opts.confirm
    };
    if (notice_entry?.create) {
      const result = notice_entry.create({ ...opts });
      derived.text = message || result.text;
      derived.timeout = result.timeout;
      derived.button = result.button;
      derived.immutable = result.immutable;
      derived.confirm = result.confirm;
    }
    const content_fragment = this._build_fragment(normalized_id, derived.text, derived);
    if (this.active[normalized_id]?.noticeEl?.isConnected) {
      return this.active[normalized_id].setMessage(content_fragment, derived.timeout);
    }
    return this._render_notice(normalized_id, content_fragment, derived);
  }
  /**
   * Normalizes the notice key to a safe string.
   */
  _normalize_notice_key(key) {
    return key.replace(/[^a-zA-Z0-9_-]/g, "_");
  }
  /**
   * Creates and tracks the notice instance
   */
  _render_notice(normalized_id, content_fragment, { timeout }) {
    this.active[normalized_id] = new this.adapter(content_fragment, timeout);
    return this.active[normalized_id];
  }
  /**
   * Builds a DocumentFragment with notice text & possible buttons
   */
  _build_fragment(id, text, { button, confirm: confirm2, immutable }) {
    const frag = document.createDocumentFragment();
    frag.createEl("p", {
      cls: "sc-notice-head",
      text: `[Smart Env v${this.env.constructor.version}]`
    });
    const content = frag.createEl("p", { cls: "sc-notice-content", text });
    const actions = frag.createEl("div", { cls: "sc-notice-actions" });
    if (confirm2?.text && typeof confirm2.callback === "function") {
      this._add_button(confirm2, actions);
    }
    if (button?.text && typeof button.callback === "function") {
      this._add_button(button, actions);
    }
    if (!immutable) {
      this._add_mute_button(id, actions);
    }
    return frag;
  }
  /**
   * Creates a <button> appended to the container
   */
  _add_button(btnConfig, container) {
    const btn = document.createElement("button");
    this.env.smart_view.safe_inner_html(btn, btnConfig.text);
    btn.addEventListener("click", (e) => {
      if (btnConfig.stay_open) {
        e.preventDefault();
        e.stopPropagation();
      }
      btnConfig.callback?.(this.env);
    });
    container.appendChild(btn);
  }
  /**
   * Mute button
   */
  _add_mute_button(id, container) {
    const btn = document.createElement("button");
    (0, import_obsidian55.setIcon)(btn, "bell-off");
    btn.addEventListener("click", () => {
      if (!this.settings.muted) this.settings.muted = {};
      this.settings.muted[id] = true;
      if (NOTICES2["notice muted"]) {
        this.show("notice muted", null, { timeout: 2e3 });
      }
    });
    container.appendChild(btn);
  }
  /**
   * Hides & clears all active notices
   */
  unload() {
    for (const id in this.active) {
      this.remove(id);
    }
  }
  /**
   * Removes an active notice by key
   */
  remove(id) {
    const normalized_id = this._normalize_notice_key(id);
    this.active[normalized_id]?.hide();
    delete this.active[normalized_id];
  }
};

// src/views/connections_modal.js
var import_obsidian56 = require("obsidian");
var ConnectionsModal = class extends import_obsidian56.FuzzySuggestModal {
  constructor(plugin) {
    super(plugin.app);
    this.plugin = plugin;
    this.results = [];
    this.modalEl.addEventListener("keydown", (e) => {
      if (e.key === "Enter") {
        e.preventDefault();
        e.stopPropagation();
        this.selectActiveSuggestion(e);
      }
    });
  }
  getItems() {
    return this.results;
  }
  async onOpen() {
    const active = this.app.workspace.getActiveFile();
    if (!active) return;
    const env = this.plugin.env;
    let entity = env.smart_sources.get(active.path);
    if (!entity) {
      entity = env.smart_sources.init_file_path(active.path);
      if (!entity) return;
      await entity.import();
      await env.smart_sources.process_embed_queue();
    }
    if (!entity.vec && entity.should_embed) {
      entity.queue_embed();
      await entity.collection.process_embed_queue();
    }
    this.results = await entity.find_connections();
    this.setInstructions([
      { command: "Enter", purpose: "Open and close modal" },
      { command: "\u2318/Ctrl + Enter", purpose: "Open in new tab and keep open" },
      { command: "\u2318/Ctrl + Alt + Enter", purpose: "Open in split (right) and keep open" },
      { command: "Esc", purpose: "Close" }
    ]);
    this.updateSuggestions();
  }
  getItemText(connection) {
    const name = connection.item.name ?? connection.item.key;
    const score = connection.score?.toFixed(2) ?? "?";
    return `${score} | ${name}`;
  }
  onChooseItem(connection, evt) {
    const target_path = connection.item.path;
    this.plugin.open_note(target_path, evt);
    if (import_obsidian56.Keymap.isModifier(evt, "Mod")) {
      this.open();
    }
  }
};

// node_modules/smart-chat-obsidian/src/settings_tab.js
var import_obsidian57 = require("obsidian");

// node_modules/smart-chat-obsidian/src/settings_tab.css
var css_sheet11 = new CSSStyleSheet();
css_sheet11.replaceSync(`@media (max-width: 768px) {
  .smart-chat-model-settings-container {
    .setting-item{
      flex-direction: column;
      align-items: baseline;
    }
  }
}

`);
var settings_tab_default = css_sheet11;

// node_modules/smart-chat-obsidian/src/settings_tab.js
var SmartChatSettingTab = class extends import_obsidian57.PluginSettingTab {
  /**
   * @param {import('obsidian').App} app - The current Obsidian app instance
   * @param {import('./main.js').default} plugin - The main plugin object
   */
  constructor(app2, plugin) {
    super(app2, plugin);
    this.plugin = plugin;
    this.plugin.env.create_env_getter(this);
    this.name = "Smart Chat";
    this.id = "smart-chat";
  }
  /**
   * Called by Obsidian to render the settings page.
   */
  display() {
    this.containerEl.empty();
    if (!this.env) {
      this.containerEl.createEl("p", {
        text: "Smart Templates environment not yet initialized."
      });
      return;
    }
    this.containerEl.createEl("div", {
      cls: "smart-chat-settings-container"
    });
    this.containerEl.createEl("div", {
      cls: "smart-chat-model-settings-container"
    });
    this.containerEl.createEl("div", {
      cls: "smart-chat-env-settings-container"
    });
    this.containerEl.createEl("div", {
      cls: "smart-chat-supporter-callout-container"
    });
    this.env.render_component("chat_thread_settings", this.env).then((frag) => {
      const settings_container = this.containerEl.querySelector(".smart-chat-settings-container");
      settings_container.empty();
      settings_container.createEl("h3", {
        text: "Chat"
      });
      settings_container.appendChild(frag);
    });
    this.env.render_component("chat_model_settings", this.env).then((frag) => {
      const model_settings_container = this.containerEl.querySelector(".smart-chat-model-settings-container");
      model_settings_container.empty();
      model_settings_container.createEl("h3", {
        text: "Model"
      });
      model_settings_container.appendChild(frag);
      const chat_model_dropdown = model_settings_container.querySelector('[data-name="Chat Model"] select');
      chat_model_dropdown.addEventListener("change", (e) => {
        SmartChatView.open(this.plugin);
      });
    });
    this.env.smart_view.apply_style_sheet(settings_tab_default);
    this.env.render_component("env_settings", this.env).then((frag) => {
      const settings_container = this.containerEl.querySelector(".smart-chat-env-settings-container");
      settings_container.empty();
      settings_container.appendChild(frag);
    });
    this.env.render_component("supporter_callout", this.plugin, { plugin_name: "Smart Chat" }).then((frag) => {
      const supporter_callout_container = this.containerEl.querySelector(".smart-chat-supporter-callout-container");
      supporter_callout_container.appendChild(frag);
    });
  }
};

// src/views/release_notes_view.js
var import_obsidian58 = require("obsidian");

// releases/latest_release.md
var latest_release_default = '> [!NOTE] Patch v3.0.80\n> - Added: LM Studio embedding model adapter\n> 	- requires LM Studio to be running\n> 	- requires CORS to be enabled in LM Studio settings\n> - Fixed: Smart Chat: should work when experimental Smart Editor plugin is enabled\n> - Fixed: Smart Chat: Deepseek adapter model request should return models\n> - Fixed: Smart Chat: Prevented multiple instances of pasted text\n\n> [!NOTE]- Previous patches\n> > [!NOTE]- v3.0.79\n> > - Added: built-in local model: EmbeddingGemma-300M\n> > - Added: Export data: Status bar context menu can export Smart Env data\n> > - Added: Source inspector: toggle showing exact text used in embeddings (embed input)\n> > - Fixed: Smart Chat: re-opening thread should not create additional completions (appearing as additional context components)\n> \n> > [!NOTE]- v3.0.78\n> > - Fixed: Smart Chat: threads should save when renamed before the first message is sent\n> \n> > [!NOTE]- v3.0.77\n> > - Improved: Reduced/removed embedding progress notifications during real-time processing\n> > 	- Only shows if more than 100 items were embedded\n> > - Fixed: Lookup view: toggle expand/collapse all should work to collapse all results\n> \n> > [!NOTE]- v3.0.76\n> > - Fixed: Connections view: should update number of connections when setting is changed and refresh button is clicked\n> \n> > [!NOTE]- v3.0.75\n> > - Fixed: Connections codeblock: Exclude filter should work as expected\n> \n> > [!NOTE]- v3.0.74\n> > - Fix: Smart Chat: Ollama API endpoint\n> \n> > [!NOTE]- v3.0.73\n> > - Fixed: Smart Chat: LM Studio model loading in settings\n> \n> > [!NOTE]- v3.0.71\n> > - Added: Command: `Insert connections codeblock`\n> > - Added: Smart Chat: Ollama settings now includes host configuration\n> > - Added: Smart Chat: Deepseek API models\n> > - Added: Smart Chat: Enriched model data via models.dev\n> > - Improved: removed redundant command for opening connections views\n> >   - updated command names for clarity and adjust display text\n> > - Fixed: Lookup should include blocks in results when blocks are enabled\n> \n> > [!NOTE]- v3.0.70\n> > - Improved: Random connection logic to better handle when no connections are available\n> > - Fixed: Lookup should work with Gemini embeddings\n> \n> > [!NOTE]- v3.0.69\n> > - Improved: Smart Chat: Streaming UX should not prevent scrolling while streaming\n> > - Improved: Smart Random Note command weights selection by connection score\n> > - Improved: Simplified commands for connections view\n> \n> > [!NOTE]- v3.0.68\n> > - Added: Context selector: Folder support\n> > 	- folders included in suggestions\n> > 	- select all files in a folder using `\u2318/Ctrl + Click`\n> > 	- use `Enter` or `ArrowRight` scopes suggestions to files within a folder\n> > - Added: Context selector: Block-level scoping\n> > 	- allows selecting a specific block within a note\n> > 	- use `ArrowRight` to view blocks within a note\n> > - Added: Context selector: Tag support\n> > 	- tags included in suggestions\n> > 	- select all files with a tag using `\u2318/Ctrl + Click`\n> > 	- use `Enter` or `ArrowRight` scopes suggestions to files within a tag\n> > - Added: Google Gemini API as embedding model\n> > - Added: Smart Chat: Anthropic Claude Opus 4.1 model now available\n> > - Added: control display of ribbon icons in the settings\n> > - Added: "Open random connection" ribbon icon\n> > - Added: "Open connections view" command to replace two deprecated commands\n> > 	- "Removing soon" label added to deprecated commands\n> > - Improved: Context selector: UX more predictable when using `Ctrl/\u2318`\n> > 	- fixes some scenarios when `Ctrl/\u2318` was not being detected correctly\n> > - Fixed: Random note command\n> \n> > [!NOTE]- v3.0.67\n> > - Added: `smart-connections` codeblock: dedicated connections settings stored in codeblock\n> > - Smart Chat:\n> > 	- Improved: prevent redundant inclusion of context in subsequent completions\n> > 		- should only include a context once in the most recent completion\n> > 	- Fixed: Anthropic models failing after messages that utilize tool calling (context)\n> > 	- Fixed: user instruction should always be provided before and after compiled context\n> \n> > [!NOTE]- v3.0.65\n> > - Added: Smart Chat: button to insert variables into user message\n> > - Patched: Smart Chat: should handle chats that were saved with new name prior to improved thread name handling ([commit 542e1706](https://github.com/brianpetro/smart-chat-obsidian/commit/542e17064f5e3ff0fce7d30583ba472e09bd0b43))\n> \n> > [!NOTE]- v3.0.64\n> > - Added: Smart Chat: support for additional variables in messages\n> > 	- more details and UI coming soon\n> > - Fixed: Smart Chat: should not throw error when thread is missing\n> \n> > [!NOTE]- v3.0.63\n> > - Added: Connections view: handle dragging blocks\n> > 	- creates link to most block types\n> > 		- some exceptions including frontmatter blocks and line-specific blocks\n> \n> > [!NOTE]- v3.0.62\n> > - add option to exclude frontmatter blocks from source connections\n> > - move "Hide blocks from connections results" setting implementation into `find_connections` method instead of relying on passing parameters (respects setting across implementations)\n> > - fix: Ollama custom endpoint: should use custom endpoint when retrieving model-specific information ([commit 2a791aa](https://github.com/brianpetro/jsbrains/commit/2a791aa0df9bb8e130ac6246f8a583624c276b8a))\n> \n> > [!NOTE]- v3.0.61\n> > - Added: Status bar: context menu\n> > 	- inspect source and blocks for current note\n> > 	- view Smart Environment stats\n> > - Added: Connections view setting: to only show sources (notes) in connections results\n> \n> > [!NOTE]- v3.0.60\n> > - Smart Chat: bug fixes\n> > 	- improve chat thread name handling\n> > 	- prevent errors when chat is open onload\n> \n> > [!NOTE]- v3.0.59\n> > - Added: Smart Chat: xAI Grok adapter\n> > 	- allows using xAI Grok models in Smart Chat\n> > 	- requires xAI Grok API key to be set in the settings\n> > - Added: Excalidraw source adapter\n> > 	- allows Excalidraw files to be used as sources in Smart Connections\n> > 	- supports Excalidraw files with `.excalidraw.md` extension\n> > - Added: Source inspector: source-level information\n> > 	- shows whether the source should be embedded based on the settings and current content\n> > 	- shows whether the source has been embedded (vectorized)\n> > 	- added button to show the full surce data object\n> > - Improved: Connections view: improved messaging when connections results cannot be returned\n> > 	- added more detailed error messages for different failure scenarios\n> \n> > [!NOTE]- v3.0.58\n> > - Improved: Smart Connections dynamic codeblock:  filter options passed to connections and lookup components; adjust styles for better layout\n> > - Fixed: Smart Chat: should always have a `current_completion` instance (prevent failing to send subsequent messages)\n> \n> > [!NOTE]- v3.0.57\n> > - Improved: Smart Chat: date format in default thread name\n> > - Fixed: Smart Chat: message copy button should copy message to the clipboard\n> \n> > [!NOTE]- v3.0.56\n> > - Added: Smart Chat: Improved message link interactions\n> >   - hover-preview: hold cmd/ctrl while hovering to preview the link\n> > 	- drag: click and hold the link, dragging it to create a link in the active note, or dragging to the chat window to add as context\n> > 	- click: hold cmd/ctrl while clicking to open the link in a new tab, cmd/ctrl+alt click to open in split view\n> > - Fixed: Smart Chat: new threads should save after the first message\n> \n> > [!NOTE]- v3.0.55\n> > - Fixed: Smart Chat `@` should open context selector modal on subsequent messages\n> \n> > [!NOTE]- v3.0.54\n> > - Fixed: Smart Chat: Context selector: "Done" button should not cause crash\n> > - Added discussion template for Smart Connections workflows and button to open it\n> > 	- encourages users to share their workflows with the community\n> > 	- button opens the discussion template in a new tab\n> > 	- discussion template includes instructions for sharing workflows\n> \n> > [!NOTE]- v3.0.53\n> > - Improved: Smart Chat: opening logic (prevent splitting sidebar)\n> > 	- now opens in new tab in main workspace by default\n> > 	- tab may still be dragged to the sidebar\n> > - Fixed: Smart Chat: Context selector should open when Smart Context plugin is not installed\n> > 	- should now open the context selector modal instead of throwing an error\n> \n> > [!NOTE]- v3.0.52\n> > - Fixed: Initial import should not embed blocks where `should_embed` is false\n> >   - see #1077 for details\n> > 	- improves performance and decreases embedding time by reducing total number of blocks\n> > 	- may require "Clear sources data" and "Reload sources" to be run in the settings to take effect\n> \n> > [!NOTE]- v3.0.51\n> > - Fixed: Connections view: Include/Exclude filters should allow multiple comma-separated values\n> \n> > [!NOTE]- v3.0.50\n> > - Added: Smart Chat: Latest OpenAI chat models (removed incompatible models)\n> > 	- o3 and o4 class models now available in the settingsa\n> \n> > [!NOTE]- v3.0.47\n> > - Added: Hide connections in connections view\n> > 	- Right-click on a connection result to open the new context menu\n> > 	- Select "Hide" to hide the connection result\n> > 	- Select "Unhide All" to unhide all hidden connections for the current item\n> > - Updated: Smart Contexts to use new ContextItem architecture\n> > 	- The new architecture allows for more flexibility and better performance\n> \n> > [!NOTE]- v3.0.46\n> > - Added: Smart Chat: Include relevance score for item in context tree if retrieved from a lookup\n> > 	- allows users to see how relevant the item is to the current chat context\n> > - Added: Snowflake Arctic Embed models to the built-in embedding adapter (transformers)\n> > 	- Snowflake/snowflake-arctic-embed-xs\n> > 	- Snowflake/snowflake-arctic-embed-s\n> > 	- Snowflake/snowflake-arctic-embed-m\n> > - Added: Report a bug and Request a feature buttons to the settings\n> > - Fixed: Smart Context: Tree should not split paths with slashes or hashtags within wikilinks\n> > 	- ex. `[[some/path.md#subpath]]` should not be split into `some/path.md` and `subpath`\n> > - Improved: Smart Chat: Prevent trying to use folder scope in lookup when the folder provided by the AI does not exist\n> \n> > [!NOTE]- v3.0.45\n> > - Added: Status element for indicating embedding queue for changed notes\n> > 	- click to begin embedding otherwise waits until `re_import_wait_time` has passed\n> > - Fixed: Smart Environment: only changed blocks should re-embed when the note is modified\n> > 	- Adds block has check to parse_blocks to prevent `queue_embed` from being called on blocks that haven\'t changed\n> > - Fixed: Release notes should open in a new tab instead of relpacing the current tab\n> > - Moved: Smart Plugins access to the obsidian-smart-env module\n> \n> > [!NOTE]- v3.0.44\n> > - Improved: Settings descriptions for the Connections view\n> > - Changed: Moved "muted notices" settings to the obsidian-smart-env module\n> \n> > [!NOTE]- v3.0.43\n> > - Fixed: Smart Chat: Context tree connections icon should show connections in the suggestions when clicked\n> \n> > [!NOTE]- v3.0.42\n> > - Added: `re_import_wait_time` setting to Smart Environment settings\n> > 	- allows setting the time to wait before re-importing and embedding a note after it has been modified\n> > 	- WHY: improves real-time nature of the connections\n> > - Improved: Connections view: Handling when current note hasn\'t been imported\n> > 	- removed notification\n> > 	- added refresh instructions to the connections view\n> > - Improved: Connections view when no results are found\n> >  - added "No connections found" message\n> >  - added instructions for reloading sources from the settings\n> > - Reduced size of bundled plugin from ~6.5MB to ~1MB (>80% reduction)\n> >  - removed tokenizer that\'s only used by OpenAI embedding models\n> >  - removed sourcemap since it\'s removed by Obsidian anyway\n> >  - WHY: make the code easier to read (trust through transparency)\n> > - Fixed: Embeddings should update when file is changed\n> \n> > [!NOTE]- v3.0.41\n> > - Fix: Bug in outlinks parsing was preventing embedding processing in some cases\n> \n> > [!NOTE]- v3.0.40\n> > - Added: Smart Chat: Support for PDFs as context in compatible models\n> > 	- Currently works with Anthropic, Google Gemini, and OpenAI models\n> > 	- PDFs must be manually added to the chat context. The context lookup action will not surface the PDFs because they are not embedded.\n> > - Improved: Smart Chat: LM Studio settings\n> > 	- Added: Instructions for setting up LM Studio (CORS)\n> > 	- Removed: Unecessary API key setting\n> \n> > [!NOTE]- v3.0.39\n> > - Improved: Release notes user experience to use the same as the native Obsidian release notes\n> > 	- Now uses new tab instead of modal to display the release notes\n> > - Fixed: Reduced vector length OpenAI embedding models should be selectable in the settings\n> \n> > [!NOTE]- v3.0.38\n> > - Fixed: Smart Chat LM Studio models handling of `tool_choice` parameter\n> \n> > [!NOTE]- v3.0.37\n> > - Fixed: Ollama `max_tokens` parameter should accurately reflect the model\'s max tokens\n> > - Fixed: Getting Started slideshow should only show automatically for new users\n> \n> > [!NOTE]- v3.0.34\n> > - Added: Multi-modal support (images as context) using Ollama models\n> > 	- requires Ollama models that support multi-modal input like `gemma3:4b`\n> \n> > [!NOTE]- v3.0.33\n> > - Improved: Context Tree styles improved by samhiatt (PR #1091)\n> > - Improved: Smart Chat message should be full width if container is less than 600px\n> > - Fixed: Smart Chat model selection should handle when Ollama is available but no models are installed\n> \n> > [!NOTE]- v3.0.32\n> > - Added: Anthropic Claude Sonnet 4 & Opus 4 to Smart Chat\n> > - Improved: Smart Chat new note button no longer automatically addes open notes as context \n> > 	- Added: "Add visible" and "Add open" notes options to Smart Context selector \n> > 	- Added: "Add context" button above chat input on new chat for quick access to context selector\n> > - Fixed: Removing an item in the context selector updates the stats\n> > - Fixed: Smart Chat system message should render no more than once per turn\n> \n> > [!NOTE]- v3.0.31\n> > - Added: Smart Chat: "Retrieve more" button in lookup results\n> > 	- allows retrieving more results from the lookup\n> > 	- includes retrieved context in subsequent lookup to provide more context to the model\n> > - Improved: Smart Chat: prior message handling in subsequent completions\n> \n> > [!NOTE]- v3.0.30\n> > - Added: Drag multiple files into the Smart Chat window to add as context\n> > - Fixed: Smart Connections results remain stable when dragging connection from bottom of the list\n> \n> > [!NOTE]- v3.0.29\n> > - Fixed: prevented regex special characters from throwing error when excluded file/folder contains them\n> > - Fixed: Smart Chat should return lookup context results when Smart Blocks are disabled\n> \n> > [!NOTE]- v3.0.28\n> > Fixed: Getting Started slideshow UX on mobile.\n> \n> > [!NOTE]- v3.0.27\n> > - Added: Smart Chat lookup now supports folder-based filtering\n> > 	- mention a folder when requesting a lookup using self-referential pronoun (no special folder syntax required)\n> > 		- ex. "Summarize my thoughts on this topic based on notes in my Content folder"\n> > - Added: Smart Chat system prompt now allows `{{folder_tree}}` variable\n> > 	- this variable will be replaced with the folder tree of the current vault\n> > 	- useful for providing context about the vault structure to the model\n> > - Improved: Smart Chat system message UI\n> > 	- now collapses when longer than 10 lines\n> \n> > [!NOTE]- v3.0.26\n> > Temp disable bases integration since Obsidian changed how the integration works and there is currently no clear path to updating.\n> \n> > [!NOTE]- v3.0.25\n> > Fixed connections view help button failing to open\n> \n> > [!NOTE]- v3.0.24\n> > Fix Lookup tab not displaying.\n> \n> > [!NOTE]- v3.0.23\n> > - Added Getting Started guide\n> > 	- opens automatically for new users\n> > 	- can be opened manually via command `Show getting started`\n> > 	- can be opened from the connections view "Help" icon\n> > 	- can be opened from the main settings "Open getting started guide" button\n> \n> > [!NOTE]- v3.0.22\n> > - Improved connections view event handling\n> > 	- prevent throwing error when no view container is present on iOS\n> \n> > [!NOTE]- v3.0.21\n> > - Implemented Smart Completions fallback to Smart Chat configuration\n> > 	- WHY: enables use via global `smart_env` instance without requiring `chat_model` parameters in every request\n> \n> > [!NOTE]- v3.0.20\n> > - Fixed: Smart Environment settings tab should be visible during "loading" and "loaded" states\n> > - Fixed: Open URL externally should use window.open with "_external" if webviewer plugin is installed\n> \n> > [!NOTE]- v3.0.19\n> > - Added: model info to Smart Chat view\n> > 	- shows before the first message and anytime the model changes since the last message\n> > - Fixed: ChatGPT sign-in with Google account\n> > 	- should now work as expected\n> > 	- will require re-signing in to ChatGPT after update\n> > - Fixed: Smart Chat thread adapter should better handle past completions to prevent unexpected behavior\n> > 	- prevented `build_request` from outputting certain request content unless the completion is the current completion\n> > 		- logic is specific to completion adapters (actions, actions_xml, thread)\n> \n> > [!NOTE]- v3.0.18\n> > - Fixed: Smart Connections view rendering on mobile\n> > 	- should render when opening the view from the sidebar\n> > 	- should update the results to the currently active file\n> \n> > [!NOTE]- v3.0.17\n> > - Improved embedding processing UX\n> > 	- show notification immediately to allow pausing sooner\n> > 	- show notification every 30 seconds in addition to every 100 embeddings\n> > - Fixed: Smart Environment settings tab should be visible during "loading" state\n> > 	- prevents "Loading Obsidian Smart Environment..." message from appearing indefinitely in instances where the environment fails to load from errors related to specific embedding models\n> \n> > [!NOTE]- v3.0.16\n> > - Fixed: no models available in Ollama should no longer cause issues in the settings\n> \n> > [!NOTE]- v3.0.15\n> > - Fixed: some Ollama embedding models triggering re-embedding every restart\n> \n> > [!NOTE]- v3.0.14\n> > - Improved hover popover for blocks in connections results and context builder\n> > - Refactored `context_builder` component to extract `context_tree` component and prevent passing UI components\n> >   - these components are frequently re-used, the updated architecture should make it easier to maintain and extend\n> > - Fixed: should not embed blocks with size less than `min_chars`\n> > - Fixed: Smart Chat completion requests should have a properly ordered `messages` array\n> \n> > [!NOTE]- v3.0.13\n> > - Prevents trying to process embed queue if embed model is not loaded\n> > 	- Particularly for Ollama which may not be turned on when Obsidian starts\n> > 	- Re-checks for Ollama server in intervals of a minute\n> > 	- Embed queue can be restarted by clicking "Reload sources" in the Smart Environment settings\n> \n> > [!NOTE]- v3.0.12\n> > Fixes pasted text: should paste lines in correct order (no longer reversed)\n> \n> > [!NOTE]- v3.0.11\n> > Fixes unexpected scroll issue when dragging file from connections view (issue #1073)\n> \n> > [!NOTE]- v3.0.10\n> > Fixed Google Gemini integration in the new Smart Chat\n> \n> > [!NOTE]- v3.0.9\n> > - Reworked the context builder UX in Smart Chat to prevent confusion\n> > 	- Context is now added to the chat regardless of how the context selector modal is closed\n> > 	- Removed "Back" button in favor of "Back" suggestion item\n> > - Fixed using `@` to open context selector in Smart Chat\n> > 	- "Done" button now appears in the context selector modal when it is opened from the keyboard\n> \n> > [!NOTE]- v3.0.8\n> > - Improved bases integration UX\n> > 	- prevent throwing error on erroroneous input in `cos_sim` base function\n> > 	- gracefully handle when smart_env is not loaded yet\n> > - Reduced max size of markdown file that will be imported from 1MB to 300KB (prevent long initial import)\n> > 	- advanced configuration available via `smart_sources.obsidian_markdown_source_content_adapter.max_import_size` in `smart_env.json`\n> > - Removed deprecated Smart Search API registered to window since `smart_env` object is now globally accessible\n> > - Fixed bug causing expanded connections results to render twice\n> \n> > [!NOTE]- v3.0.7\n> > Added "current/dynamic" option in bases connection score modal to add score based on current file. Fixed issue causing Ollama to seemingly embed at 0 tokens/sec. Fixed bases integration modal failing on new bases.\n> \n> > [!NOTE]- v3.0.6\n> > Fixed release notes should only show once after update.\n> \n> > [!NOTE]- v3.0.5\n> > Fixes Ollama Embedding model loading issue in the settings.\n> \n> > [!NOTE]- v3.0.4\n> > Prevented frontmatter blocks from being included in connections results. Fixed toggle-fold-all logic.\n> \n> > [!NOTE]- v3.0.3\n> > Fixed issue where connections results would not render if expand-all results was toggled on.\n> \n> > [!NOTE]- v3.0.1\n> > Improved Mobile UX and cleaned up extraneous code.\n> \n> \n# Smart Connections `v3`\r\n## New Features\r\n\r\n### Smart Chat v1\r\n- Effectively utilizes the Smart Environment architecture to facilitate deeper integration and new features.\r\n#### Improved Smart Chat UI\r\n- New context builder\r\n	- makes managing conversation context easier\r\n- Drag images and notes into the chat window to add as context\r\n- Separate settings tab specifically for chat features\r\n#### *Improved Smart Chat compatibility with Local Models*\r\n- Note lookup (RAG) now compatible with models that don\'t support tool calling\r\n	- Disable tool calling in the settings\r\n### Ollama embedding adapter\r\n- use Ollama to create embeddings\r\n\r\n## Fixed\r\n- renders content in connections results when all result items are expanded by default\r\n## Housekeeping\r\n- Updated README\r\n	- Improved Getting Started section\r\n	- Removed extraneous details\r\n- Improved version release process\r\n- Smart Chat `v0` (legacy)\r\n	- Smart Chat `v0` will continue to be available for a short time and will be removed in `v3.1` unless unforeseen issues arise in which case it will be removed sooner.\r\n	- Smart Chat `v0` code was moved from `brianpetro/jsbrains` to the Smart Connections repo\n';

// src/views/release_notes_view.js
var ReleaseNotesView = class _ReleaseNotesView extends import_obsidian58.ItemView {
  static get view_type() {
    return "smart-release-notes-view";
  }
  static get display_text() {
    return "Release Notes";
  }
  static get icon_name() {
    return "file-text";
  }
  static open(workspace, version, active = true) {
    const leaf = workspace.getLeaf("tab");
    leaf.setViewState({ type: this.view_type, active, state: { version } });
  }
  /* ───────────────────────────── item-view API ───────────────────────────── */
  getViewType() {
    return _ReleaseNotesView.view_type;
  }
  getDisplayText() {
    return _ReleaseNotesView.display_text;
  }
  getIcon() {
    return _ReleaseNotesView.icon_name;
  }
  /**
   * Build the preview container & render markdown using core renderer so the
   * output styles match native note preview exactly.
   */
  onOpen() {
    this.titleEl.setText(`What\u2019s new in v${this.version}`);
    this.render();
  }
  get container() {
    const content = this.containerEl?.querySelector(".view-content");
    let preview = content?.querySelector(".markdown-preview-view");
    if (!preview) {
      const main = content?.createDiv("cm-scroller is-readable-line-width");
      preview = main?.createDiv("markdown-preview-view markdown-rendered");
    }
    return preview;
  }
  async render() {
    while (!this.container) {
      await new Promise((resolve) => setTimeout(resolve, 100));
      console.warn("Waiting for containerEl to be ready...", this.container);
    }
    import_obsidian58.MarkdownRenderer.render(
      this.app,
      latest_release_default,
      this.container,
      "",
      this
    );
    requestAnimationFrame(() => this.#scroll_to_version(this.container, this.version));
  }
  get version() {
    const version = this.leaf.viewState?.state?.version ?? this.app.plugins.getPlugin("smart-connections")?.manifest.version ?? "";
    return version;
  }
  #scroll_to_version(container, version) {
    if (!version) return;
    const safe = version.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
    const matcher = new RegExp(`\\bv?${safe}\\b`, "i");
    container.querySelectorAll("h1,h2,h3,h4,h5,h6").forEach((h) => {
      if (matcher.test(h.textContent ?? "")) {
        h.scrollIntoView({ behavior: "smooth", block: "start" });
      }
    });
  }
};

// src/utils/create_deep_proxy.js
function create_deep_proxy(obj, callback, _proxied = /* @__PURE__ */ new WeakSet()) {
  if (obj === null || typeof obj !== "object" || _proxied.has(obj)) return obj;
  _proxied.add(obj);
  return new Proxy(obj, {
    set(target, prop, value) {
      target[prop] = create_deep_proxy(value, callback, _proxied);
      callback(obj);
      return true;
    },
    get(target, prop) {
      const value = target[prop];
      return create_deep_proxy(value, callback, _proxied);
    }
  });
}

// src/utils/get_random_connection.js
async function get_random_connection(env, file_path, { rng = Math.random } = {}) {
  if (!env?.smart_sources || !file_path) return null;
  const entity = env.smart_sources.get(file_path);
  if (!entity?.should_embed) return null;
  const connections = await entity.find_connections({
    filter: { limit: 20 }
  });
  if (!Array.isArray(connections) || connections.length === 0) return null;
  const total_score = connections.reduce((sum, { score }) => sum + Math.max(0, score), 0);
  if (total_score === 0) return connections[0];
  const threshold = rng() * total_score;
  let cumulative = 0;
  for (const connection of connections) {
    cumulative += Math.max(0, connection.score);
    if (threshold < cumulative) return connection;
  }
  return connections.at(-1);
}

// src/utils/add_icons.js
var import_obsidian59 = require("obsidian");
function add_smart_dice_icon() {
  (0, import_obsidian59.addIcon)("smart-dice", `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <rect x="1" y="1" width="22" height="22" rx="2" fill="none"/>

  <g transform="translate(12 10) scale(0.18) translate(-50 -50)">
    <path d="M50 20 L80 40 L80 60 L50 100" fill="none" stroke="currentColor" stroke-width="4"/>
    <path d="M30 50 L55 70" fill="none" stroke="currentColor" stroke-width="5"/>
    <circle cx="50" cy="20" r="9" fill="currentColor"/>
    <circle cx="75" cy="40" r="9" fill="currentColor"/>
    <circle cx="75" cy="70" r="9" fill="currentColor"/>
    <circle cx="50" cy="100" r="9" fill="currentColor"/>
    <circle cx="25" cy="50" r="9" fill="currentColor"/>
  </g>
</svg>
`);
}

// src/utils/determine_installed_at.js
function determine_installed_at(current, data_file_ctime) {
  if (typeof data_file_ctime !== "number") return current ?? null;
  if (typeof current !== "number" || data_file_ctime < current) return data_file_ctime;
  return current;
}

// src/utils/build_connections_codeblock.js
function build_connections_codeblock(settings = {}) {
  const json = JSON.stringify(settings, null, 2);
  return `\`\`\`smart-connections
${json}
\`\`\`
`;
}

// src/index.js
var {
  Notice: Notice7,
  Plugin,
  requestUrl: requestUrl5,
  Platform: Platform9
} = import_obsidian60.default;
var SmartConnectionsPlugin = class extends Plugin {
  get item_views() {
    return {
      ConnectionsView,
      ScLookupView,
      SmartChatsView,
      SmartChatGPTView,
      // SmartPrivateChatView,
      ReleaseNotesView
    };
  }
  // GETTERS
  get obsidian() {
    return import_obsidian60.default;
  }
  get smart_env_config() {
    if (!this._smart_env_config) {
      const merged_env_config = merge_env_config(smart_env_config4, smart_env_config3);
      merge_env_config(merged_env_config, smart_env_config5);
      merge_env_config(merged_env_config, smart_env_config6);
      this._smart_env_config = {
        ...merged_env_config,
        env_path: "",
        // scope handled by Obsidian FS methods
        // DEPRECATED schema
        smart_env_settings: {
          // careful: overrides saved settings
          is_obsidian_vault: true
          // redundant with default_settings.is_obsidian_vault
        },
        request_adapter: this.obsidian.requestUrl
        // NEEDS BETTER HANDLING
      };
      if (Platform9.isMobile) {
        merge_env_config(this._smart_env_config, {
          collections: {
            smart_sources: { prevent_load_on_init: true }
          }
        });
      }
    }
    return this._smart_env_config;
  }
  get api() {
    return this._api;
  }
  onload() {
    this.app.workspace.onLayoutReady(this.initialize.bind(this));
    SmartEnv2.create(this);
    this.register_views();
    SmartChatView.register_view(this);
    this.addSettingTab(new ScSettingsTab(this.app, this));
    this.add_commands();
    this.register_code_blocks();
    this.add_ribbon_icons();
  }
  // async onload() { this.app.workspace.onLayoutReady(this.initialize.bind(this)); } // initialize when layout is ready
  onunload() {
    console.log("unloading plugin");
    this.env?.unload_main?.(this);
    this.notices?.unload();
  }
  async initialize() {
    await this.load_new_user_state();
    this.smart_connections_view = null;
    console.log("Smart Connections v3 loaded");
    if (this.is_new_user()) {
      setTimeout(() => {
        StoryModal.open(this, {
          title: "Getting Started With Smart Connections",
          url: "https://smartconnections.app/story/smart-connections-getting-started/?utm_source=sc-op-new-user"
        });
      }, 1e3);
    }
    await SmartEnv2.wait_for({ loaded: true });
    await this.migrate_last_version_from_localStorage();
    await this.check_for_updates();
    this.new_user();
    this.addSettingTab(new SmartChatSettingTab(this.app, this));
    this.register(() => {
      console.log("removing smart-chat setting tab");
      this.app.setting.removeSettingTab("smart-chat");
    });
    console.log("Smart Chat is registered");
  }
  /**
   * Initialize ribbon icons based on saved settings.
   */
  add_ribbon_icons() {
    add_smart_dice_icon();
    toggle_plugin_ribbon_icon(this, "connections");
    toggle_plugin_ribbon_icon(this, "random_note");
  }
  ribbon_icons = {
    connections: {
      icon_name: "smart-connections",
      description: "Smart Connections: Open connections view",
      callback: () => {
        this.open_connections_view();
      }
    },
    random_note: {
      icon_name: "smart-dice",
      description: "Smart Connections: Open random connection",
      callback: () => {
        this.open_random_connection();
      }
    }
  };
  register_code_blocks() {
    this.register_code_block("smart-connections", "render_code_block");
  }
  register_code_block(name, callback_name) {
    try {
      this.registerMarkdownCodeBlockProcessor(name, this[callback_name].bind(this));
    } catch (error) {
      console.warn(`Error registering code block: ${name}`, error);
    }
  }
  get settings() {
    return this.env?.settings || {};
  }
  async new_user() {
    if (!this.is_new_user()) return;
    await this.save_installed_at(Date.now());
    await this.set_last_known_version(this.manifest.version);
    setTimeout(() => {
      this.open_connections_view();
    }, 1e3);
    if (this.app.workspace.rightSplit.collapsed) this.app.workspace.rightSplit.toggle();
    this.add_to_gitignore("\n\n# Ignore Smart Environment folder\n.smart-env");
  }
  register_views() {
    Object.values(this.item_views).forEach((View) => {
      this.registerView(View.view_type, (leaf) => new View(leaf, this));
      this.addCommand({
        id: View.view_type,
        name: "Open: " + View.display_text + " view",
        callback: () => {
          View.open(this.app.workspace);
        }
      });
      const method_name = View.view_type.replace("smart-", "").replace(/-/g, "_");
      Object.defineProperty(this, method_name, { get: () => View.get_view(this.app.workspace) });
      this["open_" + method_name] = () => View.open(this.app.workspace);
    });
  }
  async check_for_updates() {
    if (await this.should_show_release_notes(this.manifest.version)) {
      console.log("opening release notes modal");
      try {
        ReleaseNotesView.open(this.app.workspace, this.manifest.version);
      } catch (e) {
        console.error("Failed to open ReleaseNotesView", e);
      }
      await this.set_last_known_version(this.manifest.version);
    }
    setTimeout(this.check_for_update.bind(this), 3e3);
    setInterval(this.check_for_update.bind(this), 108e5);
  }
  async check_for_update() {
    try {
      const { json: response } = await requestUrl5({
        url: "https://api.github.com/repos/brianpetro/obsidian-smart-connections/releases/latest",
        method: "GET",
        headers: {
          "Content-Type": "application/json"
        },
        contentType: "application/json"
      });
      const latest_release = response.tag_name;
      if (latest_release !== this.manifest.version) {
        this.env?.events?.emit("plugin:new_version_available", { version: latest_release });
        this.notices?.show("new_version_available", { version: latest_release });
        this.update_available = true;
      }
    } catch (error) {
      console.error(error);
    }
  }
  async restart_plugin() {
    this.env?.unload_main?.(this);
    await new Promise((r) => setTimeout(r, 3e3));
    window.restart_plugin = async (id) => {
      await window.app.plugins.disablePlugin(id);
      await window.app.plugins.enablePlugin(id);
    };
    await window.restart_plugin(this.manifest.id);
  }
  add_commands() {
    this.addCommand({
      id: "smart-connections-random",
      name: "Open: Random note from connections",
      callback: async () => {
        await this.open_random_connection();
      }
    });
    this.addCommand({
      id: "open-connections-modal",
      name: "Open: Connections modal",
      checkCallback: (checking) => {
        if (checking) return !!this.app.workspace.getActiveFile()?.path;
        const modal = new ConnectionsModal(this);
        modal.open();
      }
    });
    this.addCommand({
      id: "show-release-notes",
      name: "Show release notes",
      callback: () => ReleaseNotesView.open(this.app.workspace, this.manifest.version)
    });
    this.addCommand({
      id: "show-getting-started",
      name: "Show getting started slideshow",
      callback: () => {
        StoryModal.open(this, {
          title: "Getting Started With Smart Connections",
          url: "https://smartconnections.app/story/smart-connections-getting-started/?utm_source=sc-op-command"
        });
      }
    });
    this.addCommand({
      id: "insert-connections-codeblock",
      name: "Insert: Connections codeblock",
      editorCallback: (editor) => {
        const default_settings = this.env.settings.smart_view_filter;
        editor.replaceSelection(build_connections_codeblock(default_settings));
      }
    });
  }
  async open_random_connection() {
    const curr_file = this.app.workspace.getActiveFile();
    if (!curr_file) {
      new Notice7("No active file to find connections for");
      return;
    }
    const rand_entity = await get_random_connection(this.env, curr_file.path);
    if (!rand_entity) {
      new Notice7("Cannot open random connection for non-embedded source: " + curr_file.path);
      return;
    }
    this.open_note(rand_entity.item.path);
  }
  // We keep the old code
  async add_to_gitignore(ignore, message = null) {
    if (!await this.app.vault.adapter.exists(".gitignore")) return;
    let gitignore_file = await this.app.vault.adapter.read(".gitignore");
    if (gitignore_file.indexOf(ignore) < 0) {
      await this.app.vault.adapter.append(".gitignore", `

${message ? "# " + message + "\n" : ""}${ignore}`);
      console.log("Added to .gitignore: " + ignore);
    }
  }
  async open_note(target_path, event = null) {
    await open_note3(this, target_path, event);
  }
  async render_code_block(contents, container, ctx) {
    container.empty();
    container.createEl("span", { text: "Loading\u2026" });
    await SmartEnv2.wait_for({ loaded: true });
    const connections_settings = JSON.parse(contents.trim() || "{}");
    if (connections_settings?.results_limit && (!connections_settings?.limit || connections_settings?.limit !== connections_settings?.results_limit)) {
      connections_settings.limit = connections_settings.results_limit;
    }
    const observed_connections_settings = create_deep_proxy(connections_settings, (updated) => {
      if (typeof ctx.replaceCode === "function") ctx.replaceCode(JSON.stringify(connections_settings, null, 2));
      const { text, lineStart: line_start, lineEnd: line_end } = ctx.getSectionInfo(container) ?? {};
      contents = text.split("\n").slice(line_start + 1, line_end).join("\n");
      this.render_code_block(contents, container, ctx);
    });
    const entity = this.env.smart_sources.get(ctx.sourcePath) ?? this.env.smart_sources.init_file_path(ctx.sourcePath);
    if (!entity) {
      container.empty();
      container.createEl("p", { text: "Entity not found: " + ctx.sourcePath });
      return;
    }
    const connections_container = await this.env.render_component(
      "connections",
      entity,
      {
        attribution: this.attribution,
        filter: observed_connections_settings,
        codeblock: true,
        connections_settings: observed_connections_settings
      }
    );
    container.empty();
    container.appendChild(connections_container);
  }
  get plugin_is_enabled() {
    return this.app?.plugins?.enabledPlugins?.has("smart-connections");
  }
  // DEPRECATED
  /**
   * @deprecated use SmartEnv.notices instead
   */
  get notices() {
    if (this.env?.notices) return this.env.notices;
    if (!this._notices) this._notices = new SmartNotices2(this.env, Notice7);
    return this._notices;
  }
  async load_new_user_state() {
    this._installed_at = null;
    const data = await this.loadData();
    if (this.migrate_installed_at_from_localStorage()) {
      return;
    }
    if (data && typeof data.installed_at !== "undefined") {
      this._installed_at = data.installed_at;
    }
    const data_ctime = await this.get_data_json_created_at();
    const resolved = determine_installed_at(this._installed_at, data_ctime);
    if (resolved !== this._installed_at) {
      await this.save_installed_at(resolved);
    }
  }
  /**
   * Get creation time of the plugin's data.json file.
   *
   * @returns {Promise<number|null>} timestamp in ms or null
   */
  async get_data_json_created_at() {
    try {
      const path = `${this.app.vault.configDir}/plugins/${this.manifest.id}/data.json`;
      const stat = await this.app.vault.adapter.stat(path);
      return stat?.ctime ?? null;
    } catch (error) {
      console.warn("failed to stat data.json", error);
      return null;
    }
  }
  migrate_installed_at_from_localStorage() {
    const localStorageKey = "smart_connections_new_user";
    if (typeof localStorage !== "undefined" && localStorage.getItem(localStorageKey) !== null) {
      const oldValue = localStorage.getItem(localStorageKey) !== "false";
      if (!oldValue) {
        this._installed_at = Date.now();
        this.save_installed_at(this._installed_at);
      }
      localStorage.removeItem(localStorageKey);
      return true;
    }
    return false;
  }
  async save_installed_at(value) {
    this._installed_at = value;
    const data = await this.loadData() || {};
    data.installed_at = value;
    if ("new_user" in data) delete data.new_user;
    await this.saveData(data);
  }
  is_new_user() {
    return !this._installed_at;
  }
  /**
   * MIGRATION: Move last_version from localStorage to plugin data.
   */
  async migrate_last_version_from_localStorage() {
    const localStorageKey = "smart_connections_last_version";
    if (typeof localStorage !== "undefined" && localStorage.getItem(localStorageKey)) {
      const version = localStorage.getItem(localStorageKey);
      await this.set_last_known_version(version);
      localStorage.removeItem(localStorageKey);
    }
  }
  /**
   * Returns the last saved plugin version or an empty string.
   * @returns {Promise<string>}
   */
  async get_last_known_version() {
    const data = await this.loadData() || {};
    return data.last_version || "";
  }
  /**
   * Persists the provided plugin version as last shown.
   * @param {string} version
   * @returns {Promise<void>}
   */
  async set_last_known_version(version) {
    const data = await this.loadData() || {};
    data.last_version = version;
    await this.saveData(data);
  }
  /**
   * Determines if release notes should be shown for `current_version`.
   * @param {string} current_version
   * @returns {Promise<boolean>}
   */
  async should_show_release_notes(current_version) {
    return await this.get_last_known_version() !== current_version;
  }
};
