UNPKG

@substrate-system/image

Version:
642 lines 110 kB
true&&(function polyfill() {
  const relList = document.createElement("link").relList;
  if (relList && relList.supports && relList.supports("modulepreload")) {
    return;
  }
  for (const link of document.querySelectorAll('link[rel="modulepreload"]')) {
    processPreload(link);
  }
  new MutationObserver((mutations) => {
    for (const mutation of mutations) {
      if (mutation.type !== "childList") {
        continue;
      }
      for (const node of mutation.addedNodes) {
        if (node.tagName === "LINK" && node.rel === "modulepreload")
          processPreload(node);
      }
    }
  }).observe(document, { childList: true, subtree: true });
  function getFetchOpts(link) {
    const fetchOpts = {};
    if (link.integrity) fetchOpts.integrity = link.integrity;
    if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy;
    if (link.crossOrigin === "use-credentials")
      fetchOpts.credentials = "include";
    else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit";
    else fetchOpts.credentials = "same-origin";
    return fetchOpts;
  }
  function processPreload(link) {
    if (link.ep)
      return;
    link.ep = true;
    const fetchOpts = getFetchOpts(link);
    fetch(link.href, fetchOpts);
  }
}());

var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
class TonicTemplate {
  static {
    __name(this, "TonicTemplate");
  }
  constructor(rawText, templateStrings, unsafe) {
    this.isTonicTemplate = true;
    this.unsafe = !!unsafe;
    this.rawText = rawText;
    this.templateStrings = templateStrings;
  }
  valueOf() {
    return this.rawText;
  }
  toString() {
    return this.rawText;
  }
}
class Tonic extends window.HTMLElement {
  constructor() {
    super();
    this._props = Tonic.getPropertyNames(this);
    const state = Tonic._states[super.id];
    delete Tonic._states[super.id];
    this._state = state || {};
    this.preventRenderOnReconnect = false;
    this.props = {};
    this.elements = [...this.children];
    this.elements.__children__ = true;
    this.nodes = [...this.childNodes];
    this.nodes.__children__ = true;
    this._events();
  }
  static {
    __name(this, "Tonic");
  }
  static {
    this._tags = "";
  }
  static {
    this._refIds = [];
  }
  static {
    this._data = {};
  }
  static {
    this._states = {};
  }
  static {
    this._children = {};
  }
  static {
    this._reg = {};
  }
  static {
    this._stylesheetRegistry = [];
  }
  static {
    this._index = 0;
  }
  // @ts-expect-error VERSION is injected during build
  static get version() {
    return "16.0.9";
  }
  static get SPREAD() {
    return /\.\.\.\s?(__\w+__\w+__)/g;
  }
  static get ESC() {
    return /["&'<>`/]/g;
  }
  static get AsyncFunctionGenerator() {
    return async function* () {
    }.constructor;
  }
  // eslint-disable-next-line
  static get AsyncFunction() {
    return async function() {
    }.constructor;
  }
  static get MAP() {
    return {
      '"': "&quot;",
      "&": "&amp;",
      "'": "&#x27;",
      "<": "&lt;",
      ">": "&gt;",
      "`": "&#x60;",
      "/": "&#x2F;"
    };
  }
  get isTonicComponent() {
    return true;
  }
  /**
   * Get a namespaced event name, given a non-namespaced string.
   *
   * @example
   * MyElement.event('example')  // => my-element:example
   *
   * @param {string} type The name of the event
   * @returns {string} The namespaced event name
   */
  static event(type) {
    return `${this.tag}:${type}`;
  }
  /**
   * Get the tag name of this component.
   */
  static get tag() {
    return Tonic.getTagName(this.name);
  }
  static _createId() {
    return `tonic${Tonic._index++}`;
  }
  static _normalizeAttrs(o, x = {}) {
    [...o].forEach((o2) => x[o2.name] = o2.value);
    return x;
  }
  _checkId() {
    const _id = super.id;
    if (!_id) {
      const html = this.outerHTML.replace(this.innerHTML, "...");
      throw new Error(`Component: ${html} has no id`);
    }
    return _id;
  }
  /**
   * Get the component state property.
   */
  get state() {
    return this._checkId(), this._state;
  }
  set state(newState) {
    this._state = (this._checkId(), newState);
  }
  _events() {
    const hp = Object.getOwnPropertyNames(window.HTMLElement.prototype);
    for (const p of this._props) {
      if (hp.indexOf("on" + p) === -1) continue;
      this.addEventListener(p, this);
    }
  }
  _prop(o) {
    const id = this._id;
    const p = `__${id}__${Tonic._createId()}__`;
    Tonic._data[id] = Tonic._data[id] || {};
    Tonic._data[id][p] = o;
    return p;
  }
  _placehold(r) {
    const id = this._id;
    const ref = `placehold:${id}:${Tonic._createId()}__`;
    Tonic._children[id] = Tonic._children[id] || {};
    Tonic._children[id][ref] = r;
    return ref;
  }
  static match(el, s) {
    if (!el.matches) el = el.parentElement;
    return el.matches(s) ? el : el.closest(s);
  }
  static getTagName(camelName) {
    return camelName.match(/[A-Z][a-z0-9]*/g).join("-").toLowerCase();
  }
  static getPropertyNames(proto) {
    const props = [];
    while (proto && proto !== Tonic.prototype) {
      props.push(...Object.getOwnPropertyNames(proto));
      proto = Object.getPrototypeOf(proto);
    }
    return props;
  }
  /**
   * Add a component. Calls `window.customElements.define` with the
   * component's name.
   *
   * @param {TonicComponent} c
   * @param {string} [htmlName] Name of the element, default to the class name
   * @returns {void}
   */
  static add(c, htmlName) {
    const hasValidName = htmlName || c.name && c.name.length > 1;
    if (!hasValidName) {
      throw Error("Mangling. https://bit.ly/2TkJ6zP");
    }
    if (!htmlName) htmlName = Tonic.getTagName(c.name);
    if (!Tonic.ssr && window.customElements.get(htmlName)) {
      throw new Error(`Cannot Tonic.add(${c.name}, '${htmlName}') twice`);
    }
    if (!c.prototype || !c.prototype.isTonicComponent) {
      const tmp = { [c.name]: class extends Tonic {
      } }[c.name];
      tmp.prototype.render = c;
      c = tmp;
    }
    c.prototype._props = Tonic.getPropertyNames(c.prototype);
    Tonic._reg[htmlName] = c;
    Tonic._tags = Object.keys(Tonic._reg).join();
    window.customElements.define(htmlName, c);
    if (typeof c.stylesheet === "function") {
      Tonic.registerStyles(c.stylesheet);
    }
    return c;
  }
  static registerStyles(stylesheetFn) {
    if (Tonic._stylesheetRegistry.includes(stylesheetFn)) return;
    Tonic._stylesheetRegistry.push(stylesheetFn);
    const styleNode = document.createElement("style");
    if (Tonic.nonce) styleNode.setAttribute("nonce", Tonic.nonce);
    styleNode.appendChild(document.createTextNode(stylesheetFn()));
    if (document.head) document.head.appendChild(styleNode);
  }
  static escape(s) {
    return s.replace(Tonic.ESC, (c) => Tonic.MAP[c]);
  }
  static unsafeRawString(s, templateStrings) {
    return new TonicTemplate(s, templateStrings, true);
  }
  /**
   * Emit a regular, non-namespaced event.
   *
   * @param {string} eventName Event name as a string.
   * @param {any} detail Any data to go with the event.
   */
  dispatch(eventName, detail = null) {
    const opts = { bubbles: true, detail };
    this.dispatchEvent(new window.CustomEvent(eventName, opts));
  }
  /**
   * Emit a namespaced event, using a convention for event names.
   *
   * @example
   * myComponent.emit('test')  // => `my-compnent:test`
   *
   * @param {string} type The event type, comes after `:` in event name.
   * @param {string|object|any[]} detail detail for Event constructor
   * @param {{ bubbles?:boolean, cancelable?:boolean }} opts `Cancelable` and
   * `bubbles`
   * @returns {boolean}
   */
  emit(type, detail = {}, opts = {}) {
    const namespace = Tonic.getTagName(this.constructor.name);
    const event = new CustomEvent(`${namespace}:${type}`, {
      bubbles: opts.bubbles === void 0 ? true : opts.bubbles,
      cancelable: opts.cancelable === void 0 ? true : opts.cancelable,
      detail
    });
    return this.dispatchEvent(event);
  }
  html(strings, ...values) {
    const refs = /* @__PURE__ */ __name((o) => {
      if (o && o.__children__) return this._placehold(o);
      if (o && o.isTonicTemplate) return o.rawText;
      switch (Object.prototype.toString.call(o)) {
        case "[object HTMLCollection]":
        case "[object NodeList]":
          return this._placehold([...o]);
        case "[object Array]": {
          if (o.every((x) => x.isTonicTemplate && !x.unsafe)) {
            return new TonicTemplate(o.join("\n"), null, false);
          }
          return this._prop(o);
        }
        case "[object Object]":
        case "[object Function]":
        case "[object AsyncFunction]":
        case "[object Set]":
        case "[object Map]":
        case "[object WeakMap]":
        case "[object File]":
          return this._prop(o);
        case "[object NamedNodeMap]":
          return this._prop(Tonic._normalizeAttrs(o));
        case "[object Number]":
          return `${o}__float`;
        case "[object String]":
          return Tonic.escape(o);
        case "[object Boolean]":
          return `${o}__boolean`;
        case "[object Null]":
          return `${o}__null`;
        case "[object HTMLElement]":
          return this._placehold([o]);
      }
      if (typeof o === "object" && o && o.nodeType === 1 && typeof o.cloneNode === "function") {
        return this._placehold([o]);
      }
      return o;
    }, "refs");
    const out = [];
    for (let i = 0; i < strings.length - 1; i++) {
      out.push(strings[i], refs(values[i]));
    }
    out.push(strings[strings.length - 1]);
    const htmlStr = out.join("").replace(Tonic.SPREAD, (_, p) => {
      const o = Tonic._data[p.split("__")[1]][p];
      return Object.entries(o).map(([key, value]) => {
        const k = key.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
        if (value === true) return k;
        else if (value) return `${k}="${Tonic.escape(String(value))}"`;
        else return "";
      }).filter(Boolean).join(" ");
    });
    return new TonicTemplate(htmlStr, strings, false);
  }
  scheduleReRender(oldProps) {
    if (this.pendingReRender) return this.pendingReRender;
    this.pendingReRender = new Promise((resolve) => setTimeout(() => {
      if (!this.isInDocument(this.shadowRoot || this)) return;
      const p = this._set(this.shadowRoot || this, this.render);
      this.pendingReRender = null;
      if (p && p.then) {
        return p.then(() => {
          this.updated && this.updated(oldProps);
          resolve(this);
        });
      }
      this.updated && this.updated(oldProps);
      resolve(this);
    }, 0));
    return this.pendingReRender;
  }
  /**
   * Update the view
   */
  reRender(o = this.props) {
    const oldProps = { ...this.props };
    this.props = typeof o === "function" ? o(oldProps) : o;
    return this.scheduleReRender(oldProps);
  }
  /**
   * If there is a method with the same name as the event type,
   * then call the method.
   * @see {@link https://gomakethings.com/the-handleevent-method-is-the-absolute-best-way-to-handle-events-in-web-components/#what-is-the-handleevent-method What is the handleEvent() method?}
   */
  handleEvent(ev) {
    this[ev.type] && this[ev.type](ev);
  }
  _drainIterator(target, iterator) {
    return iterator.next().then((result) => {
      this._set(target, null, result.value);
      if (result.done) return;
      return this._drainIterator(target, iterator);
    });
  }
  /**
   * _set
   * @param {Element|InstanceType<typeof Tonic>|ShadowRoot} target
   * @param {()=>any} render
   * @param {string} content
   * @returns {Promise<void>|void}
   * @private
   */
  _set(target, render, content = "") {
    this.willRender && this.willRender();
    for (const node of target.querySelectorAll(Tonic._tags)) {
      if (!node.isTonicComponent) continue;
      const id = node.getAttribute("id");
      if (!id || !Tonic._refIds.includes(id)) continue;
      Tonic._states[id] = node.state;
    }
    if (render instanceof Tonic.AsyncFunction) {
      return render.call(this, this.html, this.props).then((content2) => this._apply(target, content2));
    } else if (render instanceof Tonic.AsyncFunctionGenerator) {
      return this._drainIterator(target, render.call(this));
    } else if (render === null) {
      this._apply(target, content);
    } else if (render instanceof Function) {
      this._apply(target, render.call(this, this.html, this.props) || "");
    }
  }
  _apply(target, content) {
    if (content && content.isTonicTemplate) {
      content = content.rawText;
    } else if (typeof content === "string") {
      content = Tonic.escape(content);
    }
    if (typeof content === "string") {
      if (this.stylesheet) {
        content = `<style nonce=${Tonic.nonce || ""}>${this.stylesheet()}</style>${content}`;
      }
      target.innerHTML = content;
      if (this.styles) {
        const styles = this.styles();
        for (const node of target.querySelectorAll("[styles]")) {
          for (const s of node.getAttribute("styles").split(/\s+/)) {
            Object.assign(node.style, styles[s.trim()]);
          }
        }
      }
      const children = Tonic._children[this._id] || {};
      const walk = /* @__PURE__ */ __name((node, fn) => {
        if (node.nodeType === 3) {
          const id = node.textContent.trim();
          if (children[id]) fn(node, children[id], id);
        }
        const childNodes = node.childNodes;
        if (!childNodes) return;
        for (let i = 0; i < childNodes.length; i++) {
          walk(childNodes[i], fn);
        }
      }, "walk");
      walk(target, (node, children2, id) => {
        for (const child of children2) {
          node.parentNode.insertBefore(child, node);
        }
        delete Tonic._children[this._id][id];
        node.parentNode.removeChild(node);
      });
    } else {
      target.innerHTML = "";
      target.appendChild(content.cloneNode(true));
    }
  }
  connectedCallback() {
    this.root = this.shadowRoot || this;
    if (super.id && !Tonic._refIds.includes(super.id)) {
      Tonic._refIds.push(super.id);
    }
    const cc = /* @__PURE__ */ __name((s) => s.replace(/-(.)/g, (_, m) => m.toUpperCase()), "cc");
    for (const { name: _name, value } of this.attributes) {
      const name = cc(_name);
      const p = this.props[name] = value;
      if (/__\w+__\w+__/.test(p)) {
        const { 1: root } = p.split("__");
        this.props[name] = Tonic._data[root][p];
      } else if (/\d+__float/.test(p)) {
        this.props[name] = parseFloat(p);
      } else if (p === "null__null") {
        this.props[name] = null;
      } else if (/\w+__boolean/.test(p)) {
        this.props[name] = p.includes("true");
      } else if (/placehold:\w+:\w+__/.test(p)) {
        const { 1: root } = p.split(":");
        this.props[name] = Tonic._children[root][p][0];
      }
    }
    this.props = Object.assign(
      this.defaults ? this.defaults() : {},
      this.props
    );
    this._id = this._id || Tonic._createId();
    this.willConnect && this.willConnect();
    if (!this.isInDocument(this.root)) return;
    if (!this.preventRenderOnReconnect) {
      if (!this._source) {
        this._source = this.innerHTML;
      } else {
        this.innerHTML = this._source;
      }
      const p = this._set(this.root, this.render);
      if (p && p.then) return p.then(() => this.connected && this.connected());
    }
    this.connected && this.connected();
  }
  isInDocument(target) {
    const root = target.getRootNode();
    return root === document || root.toString() === "[object ShadowRoot]";
  }
  disconnectedCallback() {
    this.disconnected && this.disconnected();
    delete Tonic._data[this._id];
    delete Tonic._children[this._id];
  }
}

const defaultSizes = [1024, 768, 480];
function defaultSrcset(filename) {
    const URIs = getSrcset(filename, defaultSizes);
    return URIs;
}
function getSrcset(filename, sizes) {
    // return filenames like `file-480.jpg`
    return sizes.map(n => {
        return getSrcsetItem(filename, n);
    }).join(', ');
}
function getSrcsetItem(filename, n) {
    const fileParts = filename.split('.');
    const ext = fileParts.pop();
    const noExt = fileParts.join('.');
    return noExt + `-${n}.${ext} ${n}w`;
}

// @ts-check

/**
 * create an `img` component that uses locally hosted files
 */
class ImageTag extends Tonic {
    render () {
        const {
            className,
            filename,
            decoding,
            loading,
            fetchpriority,
            sources
        } = this.props;
        const sizes = this.props.sizes || ['100vw'];
        const _class = (this.props.class || className);

        const srcset = sources ?
            getSrcset(filename, sources) :
            defaultSrcset(filename);

        return this.html`<div class=${'image' + (_class ? ` ${_class}` : '')}>
            <img
                srcset="${srcset}"
                sizes="${sizes}"
                src="${filename}"
                decoding="${decoding || 'auto'}"
                loading="${loading || 'lazy'}"
                fetchpriority="${fetchpriority || 'low'}"
            />
        </div>`
    }
}

/**
 * A `tonic` component for images.
 * Be sure to pass an `id` in HTML to the component. Also takes a prop
 * `blurPlaceholder`, which is a base64 string to use inline as src,
 * and a prop `filename` -- the filename to fetch
 * @returns {HTMLElement} HTML element created with `tonic`
 * @description HTML element takes these props:
 *   * srcset -- an array of numbers for widths
 *   * filename -- the filename for src attribute
 */
class BlurredImage extends Tonic {
    constructor () {
        super();
        const imgLarge = new window.Image();
        imgLarge.classList.add('sharp');
        this.state = { blurry: true, imgLarge };

        imgLarge.onload = async () => {
            this.state.blurry = false;
            await this.reRender();
            const placeholder = this.querySelector('.placeholder');
            imgLarge.classList.add('loaded');
            if (placeholder) placeholder.appendChild(imgLarge);
        };
    }

    getImg () {
        const { filename, sizes, sources } = this.props;
        const { imgLarge } = this.state;
        const srcset = sources ?
            getSrcset(filename, sources) :
            defaultSrcset(filename);

        imgLarge.setAttribute('srcset', srcset);
        imgLarge.setAttribute('sizes', sizes);
        imgLarge.src = filename;
    }

    render () {
        const { blurplaceholder, className } = this.props;
        const _class = (this.props.class || className);

        if (this.state.blurry) {
            this.getImg();
        }

        return this.html`<div
            class="${('image placeholder' + (_class ? ` ${_class}` : ''))}"
        >
            <img class="blurry" src=${blurplaceholder} />
        </div>`
    }
}

const placeholderImg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAgICAgJCAkKCgkNDgwODRMSEBASEx0VFhUWFR0sHCAcHCAcLCcvJiQmLydGNzExN0ZRREBEUWJYWGJ8dnyiotkBCAgICAkICQoKCQ0ODA4NExIQEBITHRUWFRYVHSwcIBwcIBwsJy8mJCYvJ0Y3MTE3RlFEQERRYlhYYnx2fKKi2f/AABEIADIAMgMBIgACEQEDEQH/xAB4AAACAwEBAQAAAAAAAAAAAAAABgQFBwIDARAAAgEEAQMBBQYHAAAAAAAAAQIDAAQFERIGEzFyBxQhQVEVIiNhsbIzNTZxdIGRAQEBAQEAAAAAAAAAAAAAAAACAQMAEQEBAQEBAQEBAAAAAAAAAAABAAJBMRESIf/aAAwDAQACEQMRAD8A1vLJuKL1VRzQco6ZMov4cPqNVipsaoPrLknTmCGPlPMsY3rbECki/wA52LqVYJEkj7Z4EEnRP1q7v+nZ8xlLuRsiqRQvwijC8iBoE7rsez661aFUnfveSQvq2KgFaPHl8UURHuwW0AWIIBNOPSsI+0pXHjsmk296Js4feBcXFzB2zsq3H4BqfuhcbJZ45OcolO3UP9VHioB9EaM68aK9uNFaxoWSH4cXqqBCu9VYZL+EnqqBEwVdmi+15U5tYIbi5lRdM7EtTxYzRnH2bsVLCFCPy+FZXL1NiffXtvel7nMrrR8iuhkcUH7e4OXILrQ8kbo/0fpLky5NIrq7yYcbUlV/4gq5w8EcOPt0QaGm/Ws9yGdx+Ogcc4g7LyEYIBan7AXSXWIspk8PEDVyRWttUV9op0q7IEdlf70hdR9SW+NtzCjBp28LTll45ZrN0il7bkHT63qsCsMI2b6kvsdHkhIYFLyzkedEAgVO1o2NiEj3Vzw+4geWQn5/PVNvRlxDm7+XuKAibdtj6DVJucu0wuUzOPtotxyRwopJ8aQbP+91dezq5t7RsrJNKFkeJEiG6eRULPaZytK6sxdvLeCKIBHHxQ/Xl4Wnv2b3ofECzL7kgLbH5E7pD6pmN1KX1w3GVX5HY8EVc9Av3stFfIw43NnLzUfKRCvOlr1jh/WS2jdFeW6KztZc6od4+n8o6OVZbWUgg6IPGsT9k/8APb7/AAH/AHrRRVul/rH+p8h6o/2CukVfszfEb2aKKePWz3yYevI0jx+FMaBSyNvQ1v7oq69kvi6/KT9VooocnbbRRRUrf//Z';
const sizes = ['50vw'];

const imgUrl = new URL("/image/assets/100-CR9fdtDl.jpg", import.meta.url).href;

class TheApp extends Tonic {
    render () {
        return this.html`<div class="the-app">
            <p>image</p>
            <image-tag
                id="tag-test"
                filename="/100.jpg"
                sizes=${sizes.join(', ')}
            ></image-tag>

            <p>blurred placeholder image</p>
            <blurred-image
                id="test"
                filename="${imgUrl}"
                blurplaceholder=${placeholderImg}
                sizes=${sizes.join(', ')}
            ></blurred-image>
        </div>`
    }
}

Tonic.add(ImageTag, 'image-tag');
Tonic.add(BlurredImage, 'blurred-image');
Tonic.add(TheApp, 'the-app');
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtekZ5STl0T3YuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ac3Vic3RyYXRlLXN5c3RlbS90b25pYy9kaXN0L3RvbmljLmpzIiwiLi4vLi4vLi4vZGlzdC9zcmNzZXQuanMiLCIuLi8uLi8uLi9kaXN0L3RvbmljLmpzIiwiLi4vLi4vdG9uaWMtbG9jYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmV4cG9ydCBjbGFzcyBUb25pY1RlbXBsYXRlIHtcbiAgc3RhdGljIHtcbiAgICBfX25hbWUodGhpcywgXCJUb25pY1RlbXBsYXRlXCIpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHJhd1RleHQsIHRlbXBsYXRlU3RyaW5ncywgdW5zYWZlKSB7XG4gICAgdGhpcy5pc1RvbmljVGVtcGxhdGUgPSB0cnVlO1xuICAgIHRoaXMudW5zYWZlID0gISF1bnNhZmU7XG4gICAgdGhpcy5yYXdUZXh0ID0gcmF3VGV4dDtcbiAgICB0aGlzLnRlbXBsYXRlU3RyaW5ncyA9IHRlbXBsYXRlU3RyaW5ncztcbiAgfVxuICB2YWx1ZU9mKCkge1xuICAgIHJldHVybiB0aGlzLnJhd1RleHQ7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMucmF3VGV4dDtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIFRvbmljIGV4dGVuZHMgd2luZG93LkhUTUxFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9wcm9wcyA9IFRvbmljLmdldFByb3BlcnR5TmFtZXModGhpcyk7XG4gICAgY29uc3Qgc3RhdGUgPSBUb25pYy5fc3RhdGVzW3N1cGVyLmlkXTtcbiAgICBkZWxldGUgVG9uaWMuX3N0YXRlc1tzdXBlci5pZF07XG4gICAgdGhpcy5fc3RhdGUgPSBzdGF0ZSB8fCB7fTtcbiAgICB0aGlzLnByZXZlbnRSZW5kZXJPblJlY29ubmVjdCA9IGZhbHNlO1xuICAgIHRoaXMucHJvcHMgPSB7fTtcbiAgICB0aGlzLmVsZW1lbnRzID0gWy4uLnRoaXMuY2hpbGRyZW5dO1xuICAgIHRoaXMuZWxlbWVudHMuX19jaGlsZHJlbl9fID0gdHJ1ZTtcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMuY2hpbGROb2Rlc107XG4gICAgdGhpcy5ub2Rlcy5fX2NoaWxkcmVuX18gPSB0cnVlO1xuICAgIHRoaXMuX2V2ZW50cygpO1xuICB9XG4gIHN0YXRpYyB7XG4gICAgX19uYW1lKHRoaXMsIFwiVG9uaWNcIik7XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLl90YWdzID0gXCJcIjtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuX3JlZklkcyA9IFtdO1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5fZGF0YSA9IHt9O1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5fc3RhdGVzID0ge307XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLl9jaGlsZHJlbiA9IHt9O1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5fcmVnID0ge307XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLl9zdHlsZXNoZWV0UmVnaXN0cnkgPSBbXTtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuX2luZGV4ID0gMDtcbiAgfVxuICAvLyBAdHMtZXhwZWN0LWVycm9yIFZFUlNJT04gaXMgaW5qZWN0ZWQgZHVyaW5nIGJ1aWxkXG4gIHN0YXRpYyBnZXQgdmVyc2lvbigpIHtcbiAgICByZXR1cm4gXCIxNi4wLjlcIjtcbiAgfVxuICBzdGF0aWMgZ2V0IFNQUkVBRCgpIHtcbiAgICByZXR1cm4gL1xcLlxcLlxcLlxccz8oX19cXHcrX19cXHcrX18pL2c7XG4gIH1cbiAgc3RhdGljIGdldCBFU0MoKSB7XG4gICAgcmV0dXJuIC9bXCImJzw+YC9dL2c7XG4gIH1cbiAgc3RhdGljIGdldCBBc3luY0Z1bmN0aW9uR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiogKCkge1xuICAgIH0uY29uc3RydWN0b3I7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHN0YXRpYyBnZXQgQXN5bmNGdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgfS5jb25zdHJ1Y3RvcjtcbiAgfVxuICBzdGF0aWMgZ2V0IE1BUCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ1wiJzogXCImcXVvdDtcIixcbiAgICAgIFwiJlwiOiBcIiZhbXA7XCIsXG4gICAgICBcIidcIjogXCImI3gyNztcIixcbiAgICAgIFwiPFwiOiBcIiZsdDtcIixcbiAgICAgIFwiPlwiOiBcIiZndDtcIixcbiAgICAgIFwiYFwiOiBcIiYjeDYwO1wiLFxuICAgICAgXCIvXCI6IFwiJiN4MkY7XCJcbiAgICB9O1xuICB9XG4gIGdldCBpc1RvbmljQ29tcG9uZW50KCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgYSBuYW1lc3BhY2VkIGV2ZW50IG5hbWUsIGdpdmVuIGEgbm9uLW5hbWVzcGFjZWQgc3RyaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBNeUVsZW1lbnQuZXZlbnQoJ2V4YW1wbGUnKSAgLy8gPT4gbXktZWxlbWVudDpleGFtcGxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIFRoZSBuYW1lIG9mIHRoZSBldmVudFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZXNwYWNlZCBldmVudCBuYW1lXG4gICAqL1xuICBzdGF0aWMgZXZlbnQodHlwZSkge1xuICAgIHJldHVybiBgJHt0aGlzLnRhZ306JHt0eXBlfWA7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgdGFnIG5hbWUgb2YgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBzdGF0aWMgZ2V0IHRhZygpIHtcbiAgICByZXR1cm4gVG9uaWMuZ2V0VGFnTmFtZSh0aGlzLm5hbWUpO1xuICB9XG4gIHN0YXRpYyBfY3JlYXRlSWQoKSB7XG4gICAgcmV0dXJuIGB0b25pYyR7VG9uaWMuX2luZGV4Kyt9YDtcbiAgfVxuICBzdGF0aWMgX25vcm1hbGl6ZUF0dHJzKG8sIHggPSB7fSkge1xuICAgIFsuLi5vXS5mb3JFYWNoKChvMikgPT4geFtvMi5uYW1lXSA9IG8yLnZhbHVlKTtcbiAgICByZXR1cm4geDtcbiAgfVxuICBfY2hlY2tJZCgpIHtcbiAgICBjb25zdCBfaWQgPSBzdXBlci5pZDtcbiAgICBpZiAoIV9pZCkge1xuICAgICAgY29uc3QgaHRtbCA9IHRoaXMub3V0ZXJIVE1MLnJlcGxhY2UodGhpcy5pbm5lckhUTUwsIFwiLi4uXCIpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQ6ICR7aHRtbH0gaGFzIG5vIGlkYCk7XG4gICAgfVxuICAgIHJldHVybiBfaWQ7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgY29tcG9uZW50IHN0YXRlIHByb3BlcnR5LlxuICAgKi9cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9jaGVja0lkKCksIHRoaXMuX3N0YXRlO1xuICB9XG4gIHNldCBzdGF0ZShuZXdTdGF0ZSkge1xuICAgIHRoaXMuX3N0YXRlID0gKHRoaXMuX2NoZWNrSWQoKSwgbmV3U3RhdGUpO1xuICB9XG4gIF9ldmVudHMoKSB7XG4gICAgY29uc3QgaHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlKTtcbiAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5fcHJvcHMpIHtcbiAgICAgIGlmIChocC5pbmRleE9mKFwib25cIiArIHApID09PSAtMSkgY29udGludWU7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIocCwgdGhpcyk7XG4gICAgfVxuICB9XG4gIF9wcm9wKG8pIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuX2lkO1xuICAgIGNvbnN0IHAgPSBgX18ke2lkfV9fJHtUb25pYy5fY3JlYXRlSWQoKX1fX2A7XG4gICAgVG9uaWMuX2RhdGFbaWRdID0gVG9uaWMuX2RhdGFbaWRdIHx8IHt9O1xuICAgIFRvbmljLl9kYXRhW2lkXVtwXSA9IG87XG4gICAgcmV0dXJuIHA7XG4gIH1cbiAgX3BsYWNlaG9sZChyKSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLl9pZDtcbiAgICBjb25zdCByZWYgPSBgcGxhY2Vob2xkOiR7aWR9OiR7VG9uaWMuX2NyZWF0ZUlkKCl9X19gO1xuICAgIFRvbmljLl9jaGlsZHJlbltpZF0gPSBUb25pYy5fY2hpbGRyZW5baWRdIHx8IHt9O1xuICAgIFRvbmljLl9jaGlsZHJlbltpZF1bcmVmXSA9IHI7XG4gICAgcmV0dXJuIHJlZjtcbiAgfVxuICBzdGF0aWMgbWF0Y2goZWwsIHMpIHtcbiAgICBpZiAoIWVsLm1hdGNoZXMpIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgICByZXR1cm4gZWwubWF0Y2hlcyhzKSA/IGVsIDogZWwuY2xvc2VzdChzKTtcbiAgfVxuICBzdGF0aWMgZ2V0VGFnTmFtZShjYW1lbE5hbWUpIHtcbiAgICByZXR1cm4gY2FtZWxOYW1lLm1hdGNoKC9bQS1aXVthLXowLTldKi9nKS5qb2luKFwiLVwiKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHN0YXRpYyBnZXRQcm9wZXJ0eU5hbWVzKHByb3RvKSB7XG4gICAgY29uc3QgcHJvcHMgPSBbXTtcbiAgICB3aGlsZSAocHJvdG8gJiYgcHJvdG8gIT09IFRvbmljLnByb3RvdHlwZSkge1xuICAgICAgcHJvcHMucHVzaCguLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykpO1xuICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cbiAgLyoqXG4gICAqIEFkZCBhIGNvbXBvbmVudC4gQ2FsbHMgYHdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmVgIHdpdGggdGhlXG4gICAqIGNvbXBvbmVudCdzIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7VG9uaWNDb21wb25lbnR9IGNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtodG1sTmFtZV0gTmFtZSBvZiB0aGUgZWxlbWVudCwgZGVmYXVsdCB0byB0aGUgY2xhc3MgbmFtZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBhZGQoYywgaHRtbE5hbWUpIHtcbiAgICBjb25zdCBoYXNWYWxpZE5hbWUgPSBodG1sTmFtZSB8fCBjLm5hbWUgJiYgYy5uYW1lLmxlbmd0aCA+IDE7XG4gICAgaWYgKCFoYXNWYWxpZE5hbWUpIHtcbiAgICAgIHRocm93IEVycm9yKFwiTWFuZ2xpbmcuIGh0dHBzOi8vYml0Lmx5LzJUa0o2elBcIik7XG4gICAgfVxuICAgIGlmICghaHRtbE5hbWUpIGh0bWxOYW1lID0gVG9uaWMuZ2V0VGFnTmFtZShjLm5hbWUpO1xuICAgIGlmICghVG9uaWMuc3NyICYmIHdpbmRvdy5jdXN0b21FbGVtZW50cy5nZXQoaHRtbE5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBUb25pYy5hZGQoJHtjLm5hbWV9LCAnJHtodG1sTmFtZX0nKSB0d2ljZWApO1xuICAgIH1cbiAgICBpZiAoIWMucHJvdG90eXBlIHx8ICFjLnByb3RvdHlwZS5pc1RvbmljQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCB0bXAgPSB7IFtjLm5hbWVdOiBjbGFzcyBleHRlbmRzIFRvbmljIHtcbiAgICAgIH0gfVtjLm5hbWVdO1xuICAgICAgdG1wLnByb3RvdHlwZS5yZW5kZXIgPSBjO1xuICAgICAgYyA9IHRtcDtcbiAgICB9XG4gICAgYy5wcm90b3R5cGUuX3Byb3BzID0gVG9uaWMuZ2V0UHJvcGVydHlOYW1lcyhjLnByb3RvdHlwZSk7XG4gICAgVG9uaWMuX3JlZ1todG1sTmFtZV0gPSBjO1xuICAgIFRvbmljLl90YWdzID0gT2JqZWN0LmtleXMoVG9uaWMuX3JlZykuam9pbigpO1xuICAgIHdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoaHRtbE5hbWUsIGMpO1xuICAgIGlmICh0eXBlb2YgYy5zdHlsZXNoZWV0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIFRvbmljLnJlZ2lzdGVyU3R5bGVzKGMuc3R5bGVzaGVldCk7XG4gICAgfVxuICAgIHJldHVybiBjO1xuICB9XG4gIHN0YXRpYyByZWdpc3RlclN0eWxlcyhzdHlsZXNoZWV0Rm4pIHtcbiAgICBpZiAoVG9uaWMuX3N0eWxlc2hlZXRSZWdpc3RyeS5pbmNsdWRlcyhzdHlsZXNoZWV0Rm4pKSByZXR1cm47XG4gICAgVG9uaWMuX3N0eWxlc2hlZXRSZWdpc3RyeS5wdXNoKHN0eWxlc2hlZXRGbik7XG4gICAgY29uc3Qgc3R5bGVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgIGlmIChUb25pYy5ub25jZSkgc3R5bGVOb2RlLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIFRvbmljLm5vbmNlKTtcbiAgICBzdHlsZU5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3R5bGVzaGVldEZuKCkpKTtcbiAgICBpZiAoZG9jdW1lbnQuaGVhZCkgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZU5vZGUpO1xuICB9XG4gIHN0YXRpYyBlc2NhcGUocykge1xuICAgIHJldHVybiBzLnJlcGxhY2UoVG9uaWMuRVNDLCAoYykgPT4gVG9uaWMuTUFQW2NdKTtcbiAgfVxuICBzdGF0aWMgdW5zYWZlUmF3U3RyaW5nKHMsIHRlbXBsYXRlU3RyaW5ncykge1xuICAgIHJldHVybiBuZXcgVG9uaWNUZW1wbGF0ZShzLCB0ZW1wbGF0ZVN0cmluZ3MsIHRydWUpO1xuICB9XG4gIC8qKlxuICAgKiBFbWl0IGEgcmVndWxhciwgbm9uLW5hbWVzcGFjZWQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgRXZlbnQgbmFtZSBhcyBhIHN0cmluZy5cbiAgICogQHBhcmFtIHthbnl9IGRldGFpbCBBbnkgZGF0YSB0byBnbyB3aXRoIHRoZSBldmVudC5cbiAgICovXG4gIGRpc3BhdGNoKGV2ZW50TmFtZSwgZGV0YWlsID0gbnVsbCkge1xuICAgIGNvbnN0IG9wdHMgPSB7IGJ1YmJsZXM6IHRydWUsIGRldGFpbCB9O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgd2luZG93LkN1c3RvbUV2ZW50KGV2ZW50TmFtZSwgb3B0cykpO1xuICB9XG4gIC8qKlxuICAgKiBFbWl0IGEgbmFtZXNwYWNlZCBldmVudCwgdXNpbmcgYSBjb252ZW50aW9uIGZvciBldmVudCBuYW1lcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbXlDb21wb25lbnQuZW1pdCgndGVzdCcpICAvLyA9PiBgbXktY29tcG5lbnQ6dGVzdGBcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgVGhlIGV2ZW50IHR5cGUsIGNvbWVzIGFmdGVyIGA6YCBpbiBldmVudCBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R8YW55W119IGRldGFpbCBkZXRhaWwgZm9yIEV2ZW50IGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7eyBidWJibGVzPzpib29sZWFuLCBjYW5jZWxhYmxlPzpib29sZWFuIH19IG9wdHMgYENhbmNlbGFibGVgIGFuZFxuICAgKiBgYnViYmxlc2BcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBlbWl0KHR5cGUsIGRldGFpbCA9IHt9LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBUb25pYy5nZXRUYWdOYW1lKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoYCR7bmFtZXNwYWNlfToke3R5cGV9YCwge1xuICAgICAgYnViYmxlczogb3B0cy5idWJibGVzID09PSB2b2lkIDAgPyB0cnVlIDogb3B0cy5idWJibGVzLFxuICAgICAgY2FuY2VsYWJsZTogb3B0cy5jYW5jZWxhYmxlID09PSB2b2lkIDAgPyB0cnVlIDogb3B0cy5jYW5jZWxhYmxlLFxuICAgICAgZGV0YWlsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH1cbiAgaHRtbChzdHJpbmdzLCAuLi52YWx1ZXMpIHtcbiAgICBjb25zdCByZWZzID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgobykgPT4ge1xuICAgICAgaWYgKG8gJiYgby5fX2NoaWxkcmVuX18pIHJldHVybiB0aGlzLl9wbGFjZWhvbGQobyk7XG4gICAgICBpZiAobyAmJiBvLmlzVG9uaWNUZW1wbGF0ZSkgcmV0dXJuIG8ucmF3VGV4dDtcbiAgICAgIHN3aXRjaCAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pKSB7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXVwiOlxuICAgICAgICBjYXNlIFwiW29iamVjdCBOb2RlTGlzdF1cIjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkKFsuLi5vXSk7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IEFycmF5XVwiOiB7XG4gICAgICAgICAgaWYgKG8uZXZlcnkoKHgpID0+IHguaXNUb25pY1RlbXBsYXRlICYmICF4LnVuc2FmZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVG9uaWNUZW1wbGF0ZShvLmpvaW4oXCJcXG5cIiksIG51bGwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3Aobyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIltvYmplY3QgT2JqZWN0XVwiOlxuICAgICAgICBjYXNlIFwiW29iamVjdCBGdW5jdGlvbl1cIjpcbiAgICAgICAgY2FzZSBcIltvYmplY3QgQXN5bmNGdW5jdGlvbl1cIjpcbiAgICAgICAgY2FzZSBcIltvYmplY3QgU2V0XVwiOlxuICAgICAgICBjYXNlIFwiW29iamVjdCBNYXBdXCI6XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IFdlYWtNYXBdXCI6XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IEZpbGVdXCI6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3Aobyk7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IE5hbWVkTm9kZU1hcF1cIjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvcChUb25pYy5fbm9ybWFsaXplQXR0cnMobykpO1xuICAgICAgICBjYXNlIFwiW29iamVjdCBOdW1iZXJdXCI6XG4gICAgICAgICAgcmV0dXJuIGAke299X19mbG9hdGA7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IFN0cmluZ11cIjpcbiAgICAgICAgICByZXR1cm4gVG9uaWMuZXNjYXBlKG8pO1xuICAgICAgICBjYXNlIFwiW29iamVjdCBCb29sZWFuXVwiOlxuICAgICAgICAgIHJldHVybiBgJHtvfV9fYm9vbGVhbmA7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IE51bGxdXCI6XG4gICAgICAgICAgcmV0dXJuIGAke299X19udWxsYDtcbiAgICAgICAgY2FzZSBcIltvYmplY3QgSFRNTEVsZW1lbnRdXCI6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZChbb10pO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBvID09PSBcIm9iamVjdFwiICYmIG8gJiYgby5ub2RlVHlwZSA9PT0gMSAmJiB0eXBlb2Ygby5jbG9uZU5vZGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkKFtvXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbztcbiAgICB9LCBcInJlZnNcIik7XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgb3V0LnB1c2goc3RyaW5nc1tpXSwgcmVmcyh2YWx1ZXNbaV0pKTtcbiAgICB9XG4gICAgb3V0LnB1c2goc3RyaW5nc1tzdHJpbmdzLmxlbmd0aCAtIDFdKTtcbiAgICBjb25zdCBodG1sU3RyID0gb3V0LmpvaW4oXCJcIikucmVwbGFjZShUb25pYy5TUFJFQUQsIChfLCBwKSA9PiB7XG4gICAgICBjb25zdCBvID0gVG9uaWMuX2RhdGFbcC5zcGxpdChcIl9fXCIpWzFdXVtwXTtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCBrID0ga2V5LnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIFwiJDEtJDJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSByZXR1cm4gaztcbiAgICAgICAgZWxzZSBpZiAodmFsdWUpIHJldHVybiBgJHtrfT1cIiR7VG9uaWMuZXNjYXBlKFN0cmluZyh2YWx1ZSkpfVwiYDtcbiAgICAgICAgZWxzZSByZXR1cm4gXCJcIjtcbiAgICAgIH0pLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFRvbmljVGVtcGxhdGUoaHRtbFN0ciwgc3RyaW5ncywgZmFsc2UpO1xuICB9XG4gIHNjaGVkdWxlUmVSZW5kZXIob2xkUHJvcHMpIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nUmVSZW5kZXIpIHJldHVybiB0aGlzLnBlbmRpbmdSZVJlbmRlcjtcbiAgICB0aGlzLnBlbmRpbmdSZVJlbmRlciA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pc0luRG9jdW1lbnQodGhpcy5zaGFkb3dSb290IHx8IHRoaXMpKSByZXR1cm47XG4gICAgICBjb25zdCBwID0gdGhpcy5fc2V0KHRoaXMuc2hhZG93Um9vdCB8fCB0aGlzLCB0aGlzLnJlbmRlcik7XG4gICAgICB0aGlzLnBlbmRpbmdSZVJlbmRlciA9IG51bGw7XG4gICAgICBpZiAocCAmJiBwLnRoZW4pIHtcbiAgICAgICAgcmV0dXJuIHAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVkICYmIHRoaXMudXBkYXRlZChvbGRQcm9wcyk7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZWQgJiYgdGhpcy51cGRhdGVkKG9sZFByb3BzKTtcbiAgICAgIHJlc29sdmUodGhpcyk7XG4gICAgfSwgMCkpO1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdSZVJlbmRlcjtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2aWV3XG4gICAqL1xuICByZVJlbmRlcihvID0gdGhpcy5wcm9wcykge1xuICAgIGNvbnN0IG9sZFByb3BzID0geyAuLi50aGlzLnByb3BzIH07XG4gICAgdGhpcy5wcm9wcyA9IHR5cGVvZiBvID09PSBcImZ1bmN0aW9uXCIgPyBvKG9sZFByb3BzKSA6IG87XG4gICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVSZVJlbmRlcihvbGRQcm9wcyk7XG4gIH1cbiAgLyoqXG4gICAqIElmIHRoZXJlIGlzIGEgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQgdHlwZSxcbiAgICogdGhlbiBjYWxsIHRoZSBtZXRob2QuXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ29tYWtldGhpbmdzLmNvbS90aGUtaGFuZGxlZXZlbnQtbWV0aG9kLWlzLXRoZS1hYnNvbHV0ZS1iZXN0LXdheS10by1oYW5kbGUtZXZlbnRzLWluLXdlYi1jb21wb25lbnRzLyN3aGF0LWlzLXRoZS1oYW5kbGVldmVudC1tZXRob2QgV2hhdCBpcyB0aGUgaGFuZGxlRXZlbnQoKSBtZXRob2Q/fVxuICAgKi9cbiAgaGFuZGxlRXZlbnQoZXYpIHtcbiAgICB0aGlzW2V2LnR5cGVdICYmIHRoaXNbZXYudHlwZV0oZXYpO1xuICB9XG4gIF9kcmFpbkl0ZXJhdG9yKHRhcmdldCwgaXRlcmF0b3IpIHtcbiAgICByZXR1cm4gaXRlcmF0b3IubmV4dCgpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5fc2V0KHRhcmdldCwgbnVsbCwgcmVzdWx0LnZhbHVlKTtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkgcmV0dXJuO1xuICAgICAgcmV0dXJuIHRoaXMuX2RyYWluSXRlcmF0b3IodGFyZ2V0LCBpdGVyYXRvcik7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIF9zZXRcbiAgICogQHBhcmFtIHtFbGVtZW50fEluc3RhbmNlVHlwZTx0eXBlb2YgVG9uaWM+fFNoYWRvd1Jvb3R9IHRhcmdldFxuICAgKiBAcGFyYW0geygpPT5hbnl9IHJlbmRlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPnx2b2lkfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3NldCh0YXJnZXQsIHJlbmRlciwgY29udGVudCA9IFwiXCIpIHtcbiAgICB0aGlzLndpbGxSZW5kZXIgJiYgdGhpcy53aWxsUmVuZGVyKCk7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKFRvbmljLl90YWdzKSkge1xuICAgICAgaWYgKCFub2RlLmlzVG9uaWNDb21wb25lbnQpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgaWQgPSBub2RlLmdldEF0dHJpYnV0ZShcImlkXCIpO1xuICAgICAgaWYgKCFpZCB8fCAhVG9uaWMuX3JlZklkcy5pbmNsdWRlcyhpZCkpIGNvbnRpbnVlO1xuICAgICAgVG9uaWMuX3N0YXRlc1tpZF0gPSBub2RlLnN0YXRlO1xuICAgIH1cbiAgICBpZiAocmVuZGVyIGluc3RhbmNlb2YgVG9uaWMuQXN5bmNGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIHRoaXMuaHRtbCwgdGhpcy5wcm9wcykudGhlbigoY29udGVudDIpID0+IHRoaXMuX2FwcGx5KHRhcmdldCwgY29udGVudDIpKTtcbiAgICB9IGVsc2UgaWYgKHJlbmRlciBpbnN0YW5jZW9mIFRvbmljLkFzeW5jRnVuY3Rpb25HZW5lcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kcmFpbkl0ZXJhdG9yKHRhcmdldCwgcmVuZGVyLmNhbGwodGhpcykpO1xuICAgIH0gZWxzZSBpZiAocmVuZGVyID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9hcHBseSh0YXJnZXQsIGNvbnRlbnQpO1xuICAgIH0gZWxzZSBpZiAocmVuZGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIHRoaXMuX2FwcGx5KHRhcmdldCwgcmVuZGVyLmNhbGwodGhpcywgdGhpcy5odG1sLCB0aGlzLnByb3BzKSB8fCBcIlwiKTtcbiAgICB9XG4gIH1cbiAgX2FwcGx5KHRhcmdldCwgY29udGVudCkge1xuICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQuaXNUb25pY1RlbXBsYXRlKSB7XG4gICAgICBjb250ZW50ID0gY29udGVudC5yYXdUZXh0O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnRlbnQgPSBUb25pYy5lc2NhcGUoY29udGVudCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKHRoaXMuc3R5bGVzaGVldCkge1xuICAgICAgICBjb250ZW50ID0gYDxzdHlsZSBub25jZT0ke1RvbmljLm5vbmNlIHx8IFwiXCJ9PiR7dGhpcy5zdHlsZXNoZWV0KCl9PC9zdHlsZT4ke2NvbnRlbnR9YDtcbiAgICAgIH1cbiAgICAgIHRhcmdldC5pbm5lckhUTUwgPSBjb250ZW50O1xuICAgICAgaWYgKHRoaXMuc3R5bGVzKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuc3R5bGVzKCk7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0YXJnZXQucXVlcnlTZWxlY3RvckFsbChcIltzdHlsZXNdXCIpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBzIG9mIG5vZGUuZ2V0QXR0cmlidXRlKFwic3R5bGVzXCIpLnNwbGl0KC9cXHMrLykpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obm9kZS5zdHlsZSwgc3R5bGVzW3MudHJpbSgpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IFRvbmljLl9jaGlsZHJlblt0aGlzLl9pZF0gfHwge307XG4gICAgICBjb25zdCB3YWxrID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgobm9kZSwgZm4pID0+IHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgICBjb25zdCBpZCA9IG5vZGUudGV4dENvbnRlbnQudHJpbSgpO1xuICAgICAgICAgIGlmIChjaGlsZHJlbltpZF0pIGZuKG5vZGUsIGNoaWxkcmVuW2lkXSwgaWQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub2RlLmNoaWxkTm9kZXM7XG4gICAgICAgIGlmICghY2hpbGROb2RlcykgcmV0dXJuO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB3YWxrKGNoaWxkTm9kZXNbaV0sIGZuKTtcbiAgICAgICAgfVxuICAgICAgfSwgXCJ3YWxrXCIpO1xuICAgICAgd2Fsayh0YXJnZXQsIChub2RlLCBjaGlsZHJlbjIsIGlkKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4yKSB7XG4gICAgICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjaGlsZCwgbm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIFRvbmljLl9jaGlsZHJlblt0aGlzLl9pZF1baWRdO1xuICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0LmlubmVySFRNTCA9IFwiXCI7XG4gICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIH1cbiAgfVxuICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICB0aGlzLnJvb3QgPSB0aGlzLnNoYWRvd1Jvb3QgfHwgdGhpcztcbiAgICBpZiAoc3VwZXIuaWQgJiYgIVRvbmljLl9yZWZJZHMuaW5jbHVkZXMoc3VwZXIuaWQpKSB7XG4gICAgICBUb25pYy5fcmVmSWRzLnB1c2goc3VwZXIuaWQpO1xuICAgIH1cbiAgICBjb25zdCBjYyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKHMpID0+IHMucmVwbGFjZSgvLSguKS9nLCAoXywgbSkgPT4gbS50b1VwcGVyQ2FzZSgpKSwgXCJjY1wiKTtcbiAgICBmb3IgKGNvbnN0IHsgbmFtZTogX25hbWUsIHZhbHVlIH0gb2YgdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBuYW1lID0gY2MoX25hbWUpO1xuICAgICAgY29uc3QgcCA9IHRoaXMucHJvcHNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIGlmICgvX19cXHcrX19cXHcrX18vLnRlc3QocCkpIHtcbiAgICAgICAgY29uc3QgeyAxOiByb290IH0gPSBwLnNwbGl0KFwiX19cIik7XG4gICAgICAgIHRoaXMucHJvcHNbbmFtZV0gPSBUb25pYy5fZGF0YVtyb290XVtwXTtcbiAgICAgIH0gZWxzZSBpZiAoL1xcZCtfX2Zsb2F0Ly50ZXN0KHApKSB7XG4gICAgICAgIHRoaXMucHJvcHNbbmFtZV0gPSBwYXJzZUZsb2F0KHApO1xuICAgICAgfSBlbHNlIGlmIChwID09PSBcIm51bGxfX251bGxcIikge1xuICAgICAgICB0aGlzLnByb3BzW25hbWVdID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoL1xcdytfX2Jvb2xlYW4vLnRlc3QocCkpIHtcbiAgICAgICAgdGhpcy5wcm9wc1tuYW1lXSA9IHAuaW5jbHVkZXMoXCJ0cnVlXCIpO1xuICAgICAgfSBlbHNlIGlmICgvcGxhY2Vob2xkOlxcdys6XFx3K19fLy50ZXN0KHApKSB7XG4gICAgICAgIGNvbnN0IHsgMTogcm9vdCB9ID0gcC5zcGxpdChcIjpcIik7XG4gICAgICAgIHRoaXMucHJvcHNbbmFtZV0gPSBUb25pYy5fY2hpbGRyZW5bcm9vdF1bcF1bMF07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJvcHMgPSBPYmplY3QuYXNzaWduKFxuICAgICAgdGhpcy5kZWZhdWx0cyA/IHRoaXMuZGVmYXVsdHMoKSA6IHt9LFxuICAgICAgdGhpcy5wcm9wc1xuICAgICk7XG4gICAgdGhpcy5faWQgPSB0aGlzLl9pZCB8fCBUb25pYy5fY3JlYXRlSWQoKTtcbiAgICB0aGlzLndpbGxDb25uZWN0ICYmIHRoaXMud2lsbENvbm5lY3QoKTtcbiAgICBpZiAoIXRoaXMuaXNJbkRvY3VtZW50KHRoaXMucm9vdCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMucHJldmVudFJlbmRlck9uUmVjb25uZWN0KSB7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZSkge1xuICAgICAgICB0aGlzLl9zb3VyY2UgPSB0aGlzLmlubmVySFRNTDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5uZXJIVE1MID0gdGhpcy5fc291cmNlO1xuICAgICAgfVxuICAgICAgY29uc3QgcCA9IHRoaXMuX3NldCh0aGlzLnJvb3QsIHRoaXMucmVuZGVyKTtcbiAgICAgIGlmIChwICYmIHAudGhlbikgcmV0dXJuIHAudGhlbigoKSA9PiB0aGlzLmNvbm5lY3RlZCAmJiB0aGlzLmNvbm5lY3RlZCgpKTtcbiAgICB9XG4gICAgdGhpcy5jb25uZWN0ZWQgJiYgdGhpcy5jb25uZWN0ZWQoKTtcbiAgfVxuICBpc0luRG9jdW1lbnQodGFyZ2V0KSB7XG4gICAgY29uc3Qgcm9vdCA9IHRhcmdldC5nZXRSb290Tm9kZSgpO1xuICAgIHJldHVybiByb290ID09PSBkb2N1bWVudCB8fCByb290LnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBTaGFkb3dSb290XVwiO1xuICB9XG4gIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgIHRoaXMuZGlzY29ubmVjdGVkICYmIHRoaXMuZGlzY29ubmVjdGVkKCk7XG4gICAgZGVsZXRlIFRvbmljLl9kYXRhW3RoaXMuX2lkXTtcbiAgICBkZWxldGUgVG9uaWMuX2NoaWxkcmVuW3RoaXMuX2lkXTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgVG9uaWM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b25pYy5qcy5tYXBcbiIsImV4cG9ydCBjb25zdCBkZWZhdWx0U2l6ZXMgPSBbMTAyNCwgNzY4LCA0ODBdO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRTcmNzZXQoZmlsZW5hbWUpIHtcbiAgICBjb25zdCBVUklzID0gZ2V0U3Jjc2V0KGZpbGVuYW1lLCBkZWZhdWx0U2l6ZXMpO1xuICAgIHJldHVybiBVUklzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNyY3NldChmaWxlbmFtZSwgc2l6ZXMpIHtcbiAgICAvLyByZXR1cm4gZmlsZW5hbWVzIGxpa2UgYGZpbGUtNDgwLmpwZ2BcbiAgICByZXR1cm4gc2l6ZXMubWFwKG4gPT4ge1xuICAgICAgICByZXR1cm4gZ2V0U3Jjc2V0SXRlbShmaWxlbmFtZSwgbik7XG4gICAgfSkuam9pbignLCAnKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcmNzZXRJdGVtKGZpbGVuYW1lLCBuKSB7XG4gICAgY29uc3QgZmlsZVBhcnRzID0gZmlsZW5hbWUuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBleHQgPSBmaWxlUGFydHMucG9wKCk7XG4gICAgY29uc3Qgbm9FeHQgPSBmaWxlUGFydHMuam9pbignLicpO1xuICAgIHJldHVybiBub0V4dCArIGAtJHtufS4ke2V4dH0gJHtufXdgO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3Jjc2V0LmpzLm1hcCIsIi8vIEB0cy1jaGVja1xuaW1wb3J0IFRvbmljIGZyb20gJ0BzdWJzdHJhdGUtc3lzdGVtL3RvbmljJ1xuaW1wb3J0IHsgZGVmYXVsdFNyY3NldCwgZ2V0U3Jjc2V0IH0gZnJvbSAnLi9zcmNzZXQuanMnXG5cbi8qKlxuICogY3JlYXRlIGFuIGBpbWdgIGNvbXBvbmVudCB0aGF0IHVzZXMgbG9jYWxseSBob3N0ZWQgZmlsZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEltYWdlVGFnIGV4dGVuZHMgVG9uaWMge1xuICAgIHJlbmRlciAoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgZGVjb2RpbmcsXG4gICAgICAgICAgICBsb2FkaW5nLFxuICAgICAgICAgICAgZmV0Y2hwcmlvcml0eSxcbiAgICAgICAgICAgIHNvdXJjZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHNcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSB0aGlzLnByb3BzLnNpemVzIHx8IFsnMTAwdncnXVxuICAgICAgICBjb25zdCBfY2xhc3MgPSAodGhpcy5wcm9wcy5jbGFzcyB8fCBjbGFzc05hbWUpXG5cbiAgICAgICAgY29uc3Qgc3Jjc2V0ID0gc291cmNlcyA/XG4gICAgICAgICAgICBnZXRTcmNzZXQoZmlsZW5hbWUsIHNvdXJjZXMpIDpcbiAgICAgICAgICAgIGRlZmF1bHRTcmNzZXQoZmlsZW5hbWUpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHRtbGA8ZGl2IGNsYXNzPSR7J2ltYWdlJyArIChfY2xhc3MgPyBgICR7X2NsYXNzfWAgOiAnJyl9PlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIHNyY3NldD1cIiR7c3Jjc2V0fVwiXG4gICAgICAgICAgICAgICAgc2l6ZXM9XCIke3NpemVzfVwiXG4gICAgICAgICAgICAgICAgc3JjPVwiJHtmaWxlbmFtZX1cIlxuICAgICAgICAgICAgICAgIGRlY29kaW5nPVwiJHtkZWNvZGluZyB8fCAnYXV0byd9XCJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwiJHtsb2FkaW5nIHx8ICdsYXp5J31cIlxuICAgICAgICAgICAgICAgIGZldGNocHJpb3JpdHk9XCIke2ZldGNocHJpb3JpdHkgfHwgJ2xvdyd9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PmBcbiAgICB9XG59XG5cbi8qKlxuICogQSBgdG9uaWNgIGNvbXBvbmVudCBmb3IgaW1hZ2VzLlxuICogQmUgc3VyZSB0byBwYXNzIGFuIGBpZGAgaW4gSFRNTCB0byB0aGUgY29tcG9uZW50LiBBbHNvIHRha2VzIGEgcHJvcFxuICogYGJsdXJQbGFjZWhvbGRlcmAsIHdoaWNoIGlzIGEgYmFzZTY0IHN0cmluZyB0byB1c2UgaW5saW5lIGFzIHNyYyxcbiAqIGFuZCBhIHByb3AgYGZpbGVuYW1lYCAtLSB0aGUgZmlsZW5hbWUgdG8gZmV0Y2hcbiAqIEByZXR1cm5zIHtIVE1MRWxlbWVudH0gSFRNTCBlbGVtZW50IGNyZWF0ZWQgd2l0aCBgdG9uaWNgXG4gKiBAZGVzY3JpcHRpb24gSFRNTCBlbGVtZW50IHRha2VzIHRoZXNlIHByb3BzOlxuICogICAqIHNyY3NldCAtLSBhbiBhcnJheSBvZiBudW1iZXJzIGZvciB3aWR0aHNcbiAqICAgKiBmaWxlbmFtZSAtLSB0aGUgZmlsZW5hbWUgZm9yIHNyYyBhdHRyaWJ1dGVcbiAqL1xuZXhwb3J0IGNsYXNzIEJsdXJyZWRJbWFnZSBleHRlbmRzIFRvbmljIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKClcbiAgICAgICAgY29uc3QgaW1nTGFyZ2UgPSBuZXcgd2luZG93LkltYWdlKClcbiAgICAgICAgaW1nTGFyZ2UuY2xhc3NMaXN0LmFkZCgnc2hhcnAnKVxuICAgICAgICB0aGlzLnN0YXRlID0geyBibHVycnk6IHRydWUsIGltZ0xhcmdlIH1cblxuICAgICAgICBpbWdMYXJnZS5vbmxvYWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmJsdXJyeSA9IGZhbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlUmVuZGVyKClcbiAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcucGxhY2Vob2xkZXInKVxuICAgICAgICAgICAgaW1nTGFyZ2UuY2xhc3NMaXN0LmFkZCgnbG9hZGVkJylcbiAgICAgICAgICAgIGlmIChwbGFjZWhvbGRlcikgcGxhY2Vob2xkZXIuYXBwZW5kQ2hpbGQoaW1nTGFyZ2UpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJbWcgKCkge1xuICAgICAgICBjb25zdCB7IGZpbGVuYW1lLCBzaXplcywgc291cmNlcyB9ID0gdGhpcy5wcm9wc1xuICAgICAgICBjb25zdCB7IGltZ0xhcmdlIH0gPSB0aGlzLnN0YXRlXG4gICAgICAgIGNvbnN0IHNyY3NldCA9IHNvdXJjZXMgP1xuICAgICAgICAgICAgZ2V0U3Jjc2V0KGZpbGVuYW1lLCBzb3VyY2VzKSA6XG4gICAgICAgICAgICBkZWZhdWx0U3Jjc2V0KGZpbGVuYW1lKVxuXG4gICAgICAgIGltZ0xhcmdlLnNldEF0dHJpYnV0ZSgnc3Jjc2V0Jywgc3Jjc2V0KVxuICAgICAgICBpbWdMYXJnZS5zZXRBdHRyaWJ1dGUoJ3NpemVzJywgc2l6ZXMpXG4gICAgICAgIGltZ0xhcmdlLnNyYyA9IGZpbGVuYW1lXG4gICAgfVxuXG4gICAgcmVuZGVyICgpIHtcbiAgICAgICAgY29uc3QgeyBibHVycGxhY2Vob2xkZXIsIGNsYXNzTmFtZSB9ID0gdGhpcy5wcm9wc1xuICAgICAgICBjb25zdCBfY2xhc3MgPSAodGhpcy5wcm9wcy5jbGFzcyB8fCBjbGFzc05hbWUpXG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuYmx1cnJ5KSB7XG4gICAgICAgICAgICB0aGlzLmdldEltZygpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odG1sYDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiJHsoJ2ltYWdlIHBsYWNlaG9sZGVyJyArIChfY2xhc3MgPyBgICR7X2NsYXNzfWAgOiAnJykpfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJibHVycnlcIiBzcmM9JHtibHVycGxhY2Vob2xkZXJ9IC8+XG4gICAgICAgIDwvZGl2PmBcbiAgICB9XG59XG4iLCJpbXBvcnQgVG9uaWMgZnJvbSAnQHN1YnN0cmF0ZS1zeXN0ZW0vdG9uaWMnXG5pbXBvcnQgeyBJbWFnZVRhZywgQmx1cnJlZEltYWdlIH0gZnJvbSAnLi4vZGlzdC90b25pYydcbmltcG9ydCAnLi4vZGlzdC9zdHlsZS5jc3MnXG5pbXBvcnQgJy4vbXktc3R5bGUuY3NzJ1xuXG5jb25zdCBwbGFjZWhvbGRlckltZyA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0NFQUFnSUNBZ0pDQWtLQ2drTkRnd09EUk1TRUJBU0V4MFZGaFVXRlIwc0hDQWNIQ0FjTENjdkppUW1MeWRHTnpFeE4wWlJSRUJFVVdKWVdHSjhkbnlpb3RrQkNBZ0lDQWtJQ1FvS0NRME9EQTRORXhJUUVCSVRIUlVXRlJZVkhTd2NJQndjSUJ3c0p5OG1KQ1l2SjBZM01URTNSbEZFUUVSUllsaFlZbngyZktLaTJmL0FBQkVJQURJQU1nTUJJZ0FDRVFFREVRSC94QUI0QUFBQ0F3RUJBUUFBQUFBQUFBQUFBQUFBQmdRRkJ3SURBUkFBQWdFRUFRTUJCUVlIQUFBQUFBQUFBUUlEQUFRRkVSSUdFekZ5QnhRaFFWRVZJaU5oc2JJek5UWnhkSUdSQVFFQkFRRUFBQUFBQUFBQUFBQUFBQUFDQVFNQUVRRUJBUUVCQVFFQkFBQUFBQUFBQUFBQkFBSkJNUkVTSWYvYUFBd0RBUUFDRVFNUkFEOEExdkxKdUtMMVZSelFjbzZaTW92NGNQcU5WaXBzYW9QckxrblRtQ0dQbFBNc1kzcmJFQ2tpL3dBNTJMcVZZSkVrajdaNEVFblJQMXE3dituWjh4bEx1UnNpcVJRdndpakM4aUJvRTdyc2V6NjYxYUZVbmZ2ZVNRdnEyS2dGYVBIbDhVVVJIdXdXMEFXSUlCTk9QU3NJKzBwWEhqc21rMjk2SnM0ZmVCY1hGekIyenNxM0g0QnFmdWhjYkpaNDVPY29sTzNVUDlWSGlvQjlFYU02OGFLOXVORmF4b1dTSDRjWHFxQkN1OVZZWkwrRW5xcUJFd1ZkbWkrMTVVNXRZSWJpNWxSZE03RXRUeFl6Um5IMmJzVkxDRkNQeStGWlhMMU5pZmZYdHZlbDduTXJyUjhpdWhrY1VIN2U0T1hJTHJROGtiby8wZnBMa3k1TklycTd5WWNiVWxWLzRncTV3OEVjT1B0MFFhR20vV3M5eUdkeCtPZ2NjNGc3THlFWUlCYW43QVhTWFdJc3BrOFBFRFZ5Uld0dFVWOW9wMHE3SUVkbGY3MGhkUjlTVytOdHpDakJwMjhMVGxsNDVack4waWw3YmtIVDYzcXNDc01JMmI2a3ZzZEhraElZRkx5emtlZEVBZ1ZPMW8yTmlFajNWencrNGdlV1FuNS9QVk52Umx4RG03K1h1S0FpYmR0ajZEVkp1Y3Uwd3VVek9QdG90eHlSd29wSjhhUWJQKzkxZGV6cTV0N1JzckpOS0ZrZUpFaUc2ZVJVTFBhWnl0SzZzeGR2TGVDS0lCSEh4US9YbDRXbnYyYjNvZkVDekw3a2dMYkg1RTdwRDZwbU4xS1gxdzNHVlg1SFk4RVZjOUF2M3N0RmZJdzQzTm5MelVmS1JDdk9scjFqaC9XUzJqZEZlVzZLenRaYzZvZDQrbjhvNk9WWmJXVWdnNklQR3NUOWsvOEFQYjcvQUFIL0FIclJSVnVsL3JIK3A4aDZvLzJDdWtWZnN6ZkViMmFLS2VQV3ozeVlldkkwangrRk1hQlN5TnZRMXY3b3E2OWt2aTYvS1Q5Vm9vb2NuYmJSUlJVcmYvL1onXG5jb25zdCBzaXplcyA9IFsnNTB2dyddXG5cbmNvbnN0IGltZ1VybCA9IG5ldyBVUkwoJy4vMTAwLmpwZycsIGltcG9ydC5tZXRhLnVybCkuaHJlZlxuXG5jbGFzcyBUaGVBcHAgZXh0ZW5kcyBUb25pYyB7XG4gICAgcmVuZGVyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHRtbGA8ZGl2IGNsYXNzPVwidGhlLWFwcFwiPlxuICAgICAgICAgICAgPHA+aW1hZ2U8L3A+XG4gICAgICAgICAgICA8aW1hZ2UtdGFnXG4gICAgICAgICAgICAgICAgaWQ9XCJ0YWctdGVzdFwiXG4gICAgICAgICAgICAgICAgZmlsZW5hbWU9XCIvMTAwLmpwZ1wiXG4gICAgICAgICAgICAgICAgc2l6ZXM9JHtzaXplcy5qb2luKCcsICcpfVxuICAgICAgICAgICAgPjwvaW1hZ2UtdGFnPlxuXG4gICAgICAgICAgICA8cD5ibHVycmVkIHBsYWNlaG9sZGVyIGltYWdlPC9wPlxuICAgICAgICAgICAgPGJsdXJyZWQtaW1hZ2VcbiAgICAgICAgICAgICAgICBpZD1cInRlc3RcIlxuICAgICAgICAgICAgICAgIGZpbGVuYW1lPVwiJHtpbWdVcmx9XCJcbiAgICAgICAgICAgICAgICBibHVycGxhY2Vob2xkZXI9JHtwbGFjZWhvbGRlckltZ31cbiAgICAgICAgICAgICAgICBzaXplcz0ke3NpemVzLmpvaW4oJywgJyl9XG4gICAgICAgICAgICA+PC9ibHVycmVkLWltYWdlPlxuICAgICAgICA8L2Rpdj5gXG4gICAgfVxufVxuXG5Ub25pYy5hZGQoSW1hZ2VUYWcsICdpbWFnZS10YWcnKVxuVG9uaWMuYWRkKEJsdXJyZWRJbWFnZSwgJ2JsdXJyZWQtaW1hZ2UnKVxuVG9uaWMuYWRkKFRoZUFwcCwgJ3RoZS1hcHAnKVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsR0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLGNBQWM7QUFDckMsR0FBSSxDQUFBLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQU0sSUFBQSxDQUFBLENBQUEsQ0FBRSxFQUFFLEtBQUssQ0FBQSxDQUFFLFlBQVksQ0FBRSxDQUFBLElBQUksRUFBRSxDQUFDO0FBQ2pGLEtBQUEsQ0FBTSxhQUFhLENBQUM7QUFDM0IsQ0FBRSxDQUFBLE1BQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLElBQUksQ0FBQSxDQUFFLGVBQWUsQ0FBQztBQUNqQyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxl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LENBQUEsQ0FBQSxDQUFBLFNBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLE9BQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxVQUFBLENBQUEsS0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxNQUFPLENBQUEsS0FBSyxDQUFDLElBQUksQ0FBRSxDQUFBO0FBQ3JCLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsR0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQSxTQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxNQUFBLENBQUEsR0FBQSxDQUFXLEdBQUcsQ0FBRyxDQUFBLENBQUE7QUFDbkIsQ0FBSSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3RDLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxNQUFBLENBQU8sU0FBUyxDQUFHLENBQUEsQ0FBQTtBQUNyQixDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQyxNQUFNLENBQUUsQ0FBQSxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBO0FBQ0EsQ0FBRSxDQUFBLE1BQUEsQ0FBTyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFFLENBQUE7QUFDcEMsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDO0FBQ1osQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLFFBQVEsQ0FBRyxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQU0sQ0FBQSxHQUFHLENBQUcsQ0FBQSxDQUFBLEtBQUssQ0FBQyxFQUFFO0FBQ3hCLENBQUksQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUUsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQU0sQ0FBQSxJQUFJLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDaEUsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLEdBQUksQ0FBQSxLQUFLLENBQUMsQ0FBQyxTQUFXLENBQUEsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQVUsR0FBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLENBQUMsQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLEdBQUc7QUFDZCxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxHQUFBLENBQUEsU0FBQSxDQUFBLEtBQUEsQ0FBQSxRQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxHQUFBLENBQUksS0FBSyxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBRSxDQUFBLElBQUksQ0FBQyxNQUFNO0FBQ3ZDLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxHQUFJLENBQUEsS0FBSyxDQUFDLFFBQVEsQ0FBRSxDQUFBO0FBQ3RCLENBQUksQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBSSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBRSxDQUFBLFFBQVEsQ0FBQztBQUM3QyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsT0FBTyxDQUFHLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBTSxDQUFBLEVBQUUsQ0FBRyxDQUFBLENBQUEsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxLQUFNLENBQUEsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUUsQ0FBQTtBQUNqQyxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUksRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUUsQ0FBQSxRQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQU0sQ0FBQSxFQUFFLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxHQUFHO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRSxLQUFLLENBQUMsU0FBUyxDQUFFLENBQUEsQ0FBQyxFQUFFLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUUsQ0FBQTtBQUMzQyxDQUFJLENBQUEsQ0FBQSxDQUFBLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUM7QUFDWixDQUFBLENBQUE7QUFDQSxDQUFFLENBQUEsVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBTSxDQUFBLEVBQUUsQ0FBRyxDQUFBLENBQUEsSUFBSSxDQUFDLEdBQUc7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxTQUFBLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBRSxDQUFBLENBQUMsRUFBRSxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFFLENBQUE7QUFDbkQsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxHQUFHO0FBQ2QsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBRSxDQUFBO0FBQ3RCLENBQUksQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLGFBQWE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFPLENBQUEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBRyxDQUFBLENBQUEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxNQUFPLENBQUEsVUFBVSxDQUFDLFNBQVMsQ0FBRSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTyxDQUFBLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsV0FBVyxDQUFFLENBQUE7QUFDckUsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLE1BQU8sQ0FBQSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUUsQ0FBQTtBQUNqQyxDQUFJLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUUsQ0FBQTtBQUNwQixDQUFJLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFLLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBRSxDQUFBO0FBQy9DLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBRyxDQUFBLENBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxLQUFLO0FBQ2hCLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsY0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxDQUFBLElBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLGNBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxLQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxJQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUUsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQU0sQ0FBQSxZQUFZLENBQUcsQ0FBQSxDQUFBLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7QUFDaEUsQ0FBSSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxDQUFDLFlBQVksQ0FBRSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQU0sQ0FBQSxLQUFLLENBQUMsQ0FBQSxRQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxFQUFBLENBQUEsT0FBQSxDQUFrQyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUksQ0FBQSxDQUFBLENBQUMsUUFBUSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFJLENBQUEsQ0FBQSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUUsQ0FBQTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLEdBQUksQ0FBQSxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBRSxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxLQUFRLENBQUMsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFJLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFFLENBQUE7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QUNwRCxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFBLENBQUUsZUFBZSxDQUFFLENBQUE7QUFDN0MsQ0FBSSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFFLENBQUEsZUFBZSxDQUFFLENBQUEsSUFBSSxDQUFDO0FBQ3RELENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsVUFBQSxDQUFBLEtBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLFNBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxLQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFFLENBQUE7QUFDckMsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sSUFBSSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFFLENBQUEsSUFBSSxDQUFFLENBQUEsTUFBTSxDQUFFLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUksQ0FBQSxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBRSxDQUFBLElBQUksQ0FBQyxDQUFDO0FBQy9ELENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxVQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxXQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsR0FBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsS0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLFVBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxVQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxPQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUEsTUFBTSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBRSxDQUFBLElBQUksQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUUsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQU0sQ0FBQSxTQUFTLENBQUcsQ0FBQSxDQUFBLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFNLENBQUEsS0FBSyxDQUFHLENBQUEsQ0FBQSxHQUFBLENBQUksV0FBVyxDQUFDLENBQUMsQ0FBRSxDQUFBLFNBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUE7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLE9BQU87QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLFVBQVU7QUFDckUsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUNwQyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBRSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFJLENBQUEsQ0FBQSxDQUFDLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQyxDQUFDLFlBQVksQ0FBRSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBRSxDQUFBLE1BQUEsQ0FBTyxDQUFDLENBQUMsT0FBTztBQUNsRCxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUF5QixDQUFBLE1BQUEsQ0FBQSxjQUFBLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFtQixDQUFBLE1BQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBSyxnQkFBZ0IsQ0FBRSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBRSxDQUFBO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU8sQ0FBQSxHQUFBLENBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFpQixDQUFBLE1BQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFtQixDQUFBLE1BQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUF3QixDQUFBLE1BQUEsQ0FBQSxhQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFjLENBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQWMsQ0FBQSxNQUFBLENBQUEsR0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBa0IsQ0FBQSxNQUFBLENBQUEsT0FBQSxDQUFBLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBZSxDQUFBLE1BQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBdUIsQ0FBQSxNQUFBLENBQUEsWUFBQSxDQUFBLENBQUE7QUFDcEMsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQWlCLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQWlCLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFrQixDQUFBLE1BQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE9BQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFlLENBQUEsTUFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQXNCLENBQUEsTUFBQSxDQUFBLFdBQUEsQ0FBQSxDQUFBO0FBQ25DLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQyxJQUFJLE1BQU8sQ0FBQSxDQUFDLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFFLENBQUE7QUFDL0YsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUM7QUFDZCxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNkLENBQUksQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBRSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxHQUFJLENBQUEsQ0FBQyxDQUFHLENBQUEsQ0FBQSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsTUFBTSxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUUsQ0FBQSxDQUFDLEVBQUUsQ0FBRSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUksQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLE9BQU8sQ0FBRyxDQUFBLENBQUEsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBLEVBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFFLENBQUEsS0FBSyxDQUFDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBTSxDQUFBLENBQUMsQ0FBRyxDQUFBLENBQUEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxXQUFXLENBQUUsQ0FBQTtBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDcEMsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxLQUFLLENBQUUsQ0FBQSxNQUFBLENBQU8sQ0FBQyxDQUFFLENBQUEsQ0FBQyxDQUFDLENBQUUsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBYSxPQUFPLENBQUUsQ0FBQTtBQUN0QixDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUUsQ0FBQSxPQUFPLENBQUUsQ0FBQSxLQUFLLENBQUM7QUFDckQsQ0FBQSxDQUFBO0FBQ0EsQ0FBRSxDQUFBLGdCQUFnQixDQUFDLFFBQVEsQ0FBRSxDQUFBO0FBQzdCLENBQUksQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFPLENBQUEsSUFBSSxDQUFDLGVBQWU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsZUFBZSxDQUFBLENBQUEsQ0FBRyxHQUFJLENBQUEsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUksQ0FBQSxDQUFBLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFFLENBQUEsTUFBQTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQSxDQUFBLENBQUcsSUFBSTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU8sQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNoRCxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUM1QyxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ25CLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsZUFBZTtBQUMvQixDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFBO0FBQzNCLENBQUksQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLFFBQVEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFVLFFBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztBQUMxQyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsS0FBQSxDQUFBLElBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLElBQUEsQ0FBQSxHQUFBLENBQUEsTUFBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUEsWUFBQSxDQUFBLEdBQUEsQ0FBQSxHQUFBLENBQUEsV0FBQSxDQUFBLE1BQUEsQ0FBQSxFQUFBLENBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBLENBQUEsR0FBQSxDQUFBLEVBQUEsQ0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsVUFBQSxDQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsV0FBQSxDQUFBLE1BQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxXQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFFLENBQUEsV0FBVyxDQUFDLEVBQUUsQ0FBRSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBRSxDQUFBO0FBQ25DLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUEsSUFBSSxDQUFFLENBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFJLENBQUEsQ0FBQSxNQUFNLENBQUMsSUFBSSxDQUFFLENBQUEsTUFBQTtBQUN2QixDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBLFlBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsVUFBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsSUFBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFBLENBQUUsTUFBTSxDQUFFLENBQUEsT0FBTyxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBRSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFFLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFLLENBQUEsQ0FBQSxLQUFBLENBQU0sSUFBSSxDQUFBLEVBQUEsQ0FBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFFLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBSSxDQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUUsQ0FBQSxRQUFBO0FBQ2xDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxFQUFFLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUksQ0FBQSxDQUFBLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQSxRQUFBO0FBQzlDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxLQUFLO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksTUFBTSxDQUFBLFVBQUEsQ0FBWSxLQUFLLENBQUMsYUFBYSxDQUFFLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTyxDQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUEsSUFBSSxDQUFDLElBQUksQ0FBRSxDQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBRSxDQUFBLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLEVBQUksQ0FBQSxDQUFBLE1BQU0sWUFBWSxLQUFLLENBQUMsc0JBQXNCLENBQUUsQ0FBQTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFPLENBQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUUsQ0FBQSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFNLElBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUUsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBTSxJQUFBLENBQUEsRUFBQSxDQUFBLENBQUksTUFBTSxDQUFBLFVBQUEsQ0FBWSxRQUFRLENBQUUsQ0FBQTtBQUMzQyxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBRSxDQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUUsQ0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxNQUFNLENBQUMsTUFBTSxDQUFBLENBQUUsT0FBTyxDQUFFLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsZUFBZSxDQUFFLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsT0FBTztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssTUFBTSxFQUFJLENBQUEsQ0FBQSxNQUFBLENBQU8sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFFLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFHLENBQUEsQ0FBQSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFJLENBQUEsQ0FBQSxNQUFBLENBQU8sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFFLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBSSxDQUFBLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFBO0FBQzNCLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFPLEdBQUcsQ0FBQyxDQUFBLEtBQUEsQ0FBQSxLQUFBLENBQWEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBRSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFDLENBQVEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUcsT0FBTztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFJLENBQUEsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUE7QUFDcEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFLLEtBQU0sQ0FBQSxJQUFJLENBQUksRUFBQSxDQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFVLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQyxDQUFFLENBQUE7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFLLENBQUEsQ0FBQSxLQUFBLENBQU0sQ0FBQyxDQUFBLEVBQUEsQ0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUEsTUFBQSxDQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBRSxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQU0sQ0FBQSxRQUFRLENBQUcsQ0FBQSxDQUFBLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUUsQ0FBQTtBQUN0RCxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sSUFBSSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUEsRUFBRSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBRSxDQUFBO0FBQ2pDLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLEVBQUUsQ0FBRyxDQUFBLENBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUUsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUEsQ0FBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQU0sQ0FBQSxVQUFVLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxVQUFVO0FBQzFDLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBRSxDQUFBLE1BQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUssQ0FBQSxDQUFBLEdBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBRSxDQUFBLENBQUMsQ0FBRyxDQUFBLENBQUEsVUFBVSxDQUFDLE1BQU0sQ0FBRSxDQUFBLENBQUMsRUFBRSxDQUFFLENBQUE7QUFDcEQsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNoQixDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUEsQ0FBQyxJQUFJLENBQUUsQ0FBQSxTQUFTLENBQUUsQ0FBQSxFQUFFLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBSyxDQUFBLENBQUEsS0FBQSxDQUFNLEtBQUssQ0FBQSxFQUFBLENBQUksU0FBUyxDQUFFLENBQUE7QUFDdkMsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUUsQ0FBQSxJQUFJLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBTSxJQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFFLENBQUE7QUFDM0IsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsaUJBQWlCLENBQUcsQ0FBQSxDQUFBO0FBQ3RCLENBQUksQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUE7QUFDdkQsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLFFBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBQSxDQUFDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFDLENBQUMsV0FBVyxDQUFFLENBQUEsQ0FBQyxDQUFFLENBQUEsQ0FBQSxFQUFBLENBQUksQ0FBQztBQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUssQ0FBQSxDQUFBLEtBQUEsQ0FBTSxDQUFFLENBQUEsSUFBSSxDQUFFLENBQUEsS0FBSyxDQUFFLENBQUEsS0FBSyxDQUFFLENBQUEsQ0FBQSxFQUFBLENBQUksSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFBO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQzVCLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFjLEVBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBTSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUEsRUFBQSxDQUFJLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQU0sSUFBSSxDQUFZLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFBO0FBQ3ZDLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFHLENBQUEsQ0FBQSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBTSxJQUFBLENBQUEsRUFBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssWUFBWSxDQUFFLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSTtBQUMvQixDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFNLElBQUksQ0FBYyxDQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBRyxDQUFBLENBQUEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBLElBQUEsQ0FBTSxDQUFDO0FBQzdDLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQU0sSUFBSSxDQUFxQixTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBTSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsS0FBSyxDQUFHLENBQUEsQ0FBQSxNQUFNLENBQUMsTUFBTTtBQUM5QixDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsUUFBUSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBRSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQztBQUNYLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNMLENBQUksQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBRyxDQUFBLENBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFLLENBQUMsU0FBUyxDQUFFLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUUsQ0FBQTtBQUMxQyxDQUFJLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQSxNQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBSSxDQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUUsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFJLENBQUEsQ0FBQSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUUsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBRyxDQUFBLENBQUEsSUFBSSxDQUFDLFNBQVM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFNLElBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsU0FBUyxDQUFHLENBQUEsQ0FBQSxJQUFJLENBQUMsT0FBTztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQU0sQ0FBQSxDQUFDLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDakQsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUksQ0FBQyxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FB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QUFBLENBQUEsU0FBQSxDQUFBLEdBQUEsQ0FBQSxNQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsZUFBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsUUFBQSxDQUFBLEVBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBLENBQUEsV0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLE9BQUEsQ0FBQSxPQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsS0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsV0FBQSxDQUFBLElBQUEsQ0FBQSxPQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxRQUFBLENBQUEsR0FBQSxDQUFBLEdBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNPLEtBQU0sQ0FBQSxZQUFZLENBQVMsT0FBQSxDQUFBLEtBQUssQ0FBQztBQUN4QyxDQUFJLENBQUEsQ0FBQSxDQUFBLFdBQVcsQ0FBQyxDQUFHLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLEdBQUksQ0FBQSxNQUFNLENBQUMsS0FBSyxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQU8sS0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLEVBQUUsTUFBTSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUE7O0FBRTdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxLQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUcsQ0FBQSxDQUFBLEtBQUE7QUFDaEMsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLElBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLFdBQVcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFjLENBQUEsV0FBQSxDQUFBLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBUSxNQUFBLENBQUEsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLFdBQVcsQ0FBQSxDQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFBO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQyxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sQ0FBRSxDQUFBLFFBQVEsQ0FBRSxDQUFBLEtBQUssRUFBRSxPQUFPLENBQUEsQ0FBRSxDQUFHLENBQUEsQ0FBQSxJQUFJLENBQUMsS0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFFLENBQUEsUUFBUSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLEtBQUE7QUFDbEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxTQUFTLENBQUMsUUFBUSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUE7QUFDeEMsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsYUFBYSxDQUFDLFFBQVEsQ0FBQTs7QUFFbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQSxNQUFBLENBQVEsRUFBRSxNQUFNLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQSxLQUFBLENBQU8sRUFBRSxLQUFLLENBQUE7QUFDNUMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLFFBQVEsQ0FBQyxHQUFHLENBQUcsQ0FBQSxDQUFBLFFBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQyxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sRUFBRSxlQUFlLENBQUEsQ0FBRSxTQUFTLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsS0FBQTtBQUNwRCxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLE1BQU0sQ0FBSSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUE7O0FBRXJELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFFLENBQUE7QUFDL0IsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTyxDQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBbUIsQ0FBRyxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsV0FBQSxDQUFtQixDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUUsQ0FBQTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUMsQ0FBQSxDQUFBO0FBQ3RELENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBOztBQ3BGQSxLQUFBLENBQU0sY0FBYyxDQUFHLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSx1QkFBQSxDQUFBLGtMQUFBLENBQUEsd0JBQUEsQ0FBQSxrS0FBQSxDQUFBLHFFQUFBLENBQUEsd0JBQUEsQ0FBQSxzRUFBQSxDQUFBLHFGQUFBLENBQUEsV0FBQSxDQUFBLGtDQUFBLENBQUEseUNBQUEsQ0FBQSxtQkFBQSxDQUFBLGdCQUFBLENBQUEsT0FBQSxDQUFBLHdEQUFBLENBQUEscUVBQUEsQ0FBQSxPQUFBLENBQUEsVUFBQSxDQUFBLHNDQUFBLENBQUEsZ0RBQUEsQ0FBQSwwRUFBQSxDQUFBLGtCQUFBLENBQUEsb0JBQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBQSxFQUFBLENBQUEsS0FBQSxDQUFBLDRCQUFBLENBQUEsb0JBQUEsQ0FBQSxpQkFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLEtBQU0sQ0FBQSxLQUFLLENBQUcsQ0FBQSxDQUFBLENBQUMsQ0FBTSxJQUFBLENBQUEsQ0FBQTs7QUFFckIsS0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsMERBQXFDLENBQUMsSUFBQTs7QUFFckQsS0FBTSxDQUFBLE1BQU0sQ0FBUyxPQUFBLENBQUEsS0FBSyxDQUFDO0FBQzNCLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBTSxDQUFDLENBQUcsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU8sQ0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsR0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxHQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsSUFBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsR0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFzQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxHQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxXQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxJQUFBO0FBQ0EsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLGVBQUEsQ0FBZ0MsRUFBRSxjQUFjO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFzQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxLQUFBO0FBQ0EsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0E7O0FBRUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBVyxLQUFBLENBQUEsR0FBQSxDQUFBLENBQUE7QUFDL0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBZSxPQUFBLENBQUEsS0FBQSxDQUFBLENBQUE7QUFDdkMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBUyxHQUFBLENBQUEsR0FBQSxDQUFBLENBQUEiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19