{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ๐ŸŽฏ Graph-Based Uncertainty Quantification (Long-Text)\n", "\n", "
\n", "

\n", " Graph-based scorers decompose original and sampled responses into claims, obtain the union of unique claims across all responses, and compute graph centrality metrics on the bipartite graph of claim-response entailment to measure uncertainty. This demo provides an illustration \n", " of how to use these methods with uqlm. The available scorers and papers from which they are adapted are below:\n", "

\n", " \n", "* Long-text Uncertainty Quantification (LUQ) ([Zhang et al., 2024](https://arxiv.org/abs/2403.20279))\n", "* LUQ-Atomic ([Zhang et al., 2024](https://arxiv.org/abs/2403.20279))\n", "* LUQ-pair ([Zhang et al., 2024](https://arxiv.org/abs/2403.20279))\n", "* Generalized LUQ-pair ([Zhang et al., 2024](https://arxiv.org/abs/2403.20279))\n", "\n", "
\n", "\n", "## ๐Ÿ“Š What You'll Do in This Demo\n", "\n", "
\n", "
1
\n", "
\n", "

Set up LLM and prompts.

\n", "

Set up LLM instance and load example data prompts.

\n", "
\n", "
\n", "\n", "
\n", "
2
\n", "
\n", "

Generate LLM Responses and Confidence Scores

\n", "

Generate responses and compute claim-level confidence scores using the LongTextGraph() class.

\n", "
\n", "
\n", "\n", "
\n", "
3
\n", "
\n", "

Evaluate Hallucination Detection Performance

\n", "

Grade claims with `FactScoreGrader` class and evaluate claim-level hallucination detection.

\n", "
\n", "
\n", "\n", "## โš–๏ธ Advantages & Limitations\n", "\n", "
\n", "
\n", "

Pros

\n", " \n", "
\n", " \n", "
\n", "

Cons

\n", " \n", "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Important note:** Graph-based scoring requires `networkx` package. Please ensure `networkx` is installed before running this notebook." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [] }, "outputs": [], "source": [ "# import sys\n", "# !{sys.executable} -m pip install networkx\n", "\n", "import numpy as np\n", "\n", "from uqlm import LongTextGraph\n", "from uqlm.utils import load_example_dataset, display_response_refinement, claims_dicts_to_lists, plot_model_accuracies\n", "from uqlm.longform import FactScoreGrader" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Set up LLM and Prompts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this demo, we will illustrate this approach using the [FactScore](https://github.com/shmsw25/FActScore/tree/main/factscore) longform QA dataset. To implement with your use case, simply **replace the example prompts with your data**. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading dataset - factscore...\n", "Processing dataset...\n", "Dataset ready!\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
promptwikipedia_text
0Tell me a bio of Suthida within 100 words.\\nSuthida Bajrasudhabimalalakshana (Thai: เธชเธกเน€เธ”เน‡เธˆ...
\n", "
" ], "text/plain": [ " prompt \\\n", "0 Tell me a bio of Suthida within 100 words.\\n \n", "\n", " wikipedia_text \n", "0 Suthida Bajrasudhabimalalakshana (Thai: เธชเธกเน€เธ”เน‡เธˆ... " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load example dataset (FactScore)\n", "factscore = load_example_dataset(\"factscore\", n=1)[[\"hundredw_prompt\", \"wikipedia_text\"]].rename(columns={\"hundredw_prompt\": \"prompt\"})\n", "factscore.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, we use `AzureChatOpenAI` to instantiate our LLM, but any [LangChain Chat Model](https://js.langchain.com/docs/integrations/chat/) may be used. Be sure to **replace with your LLM of choice.**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [] }, "outputs": [], "source": [ "from langchain_google_vertexai import ChatVertexAI\n", "\n", "gemini_flash = ChatVertexAI(model=\"gemini-2.5-flash\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Generate LLM Responses and Claim/Sentence-Level Confidence Scores" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### `LongTextGraph()` - Generate long-text LLM responses, decompose into claims or sentences, and measure entailment among sampled responses.\n", "\n", "![Sample Image](https://raw.githubusercontent.com/cvs-health/uqlm/develop/assets/images/graph-uq3.png)\n", "\n", "#### ๐Ÿ“‹ Class Attributes\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ParameterType & DefaultDescription
llmBaseChatModel
default=None
A langchain llm `BaseChatModel`. User is responsible for specifying temperature and other relevant parameters to the constructor of the provided `llm` object.
scorersList[str]
default=None
Specifies which graph-based scorers to include. Must be subset of [\"degree_centrality\", \"betweenness_centrality\", \"closeness_centrality\", \"page_rank\", \"laplacian_centrality\", \"harmonic_centrality\"]. If None, defaults to [\"closeness_centrality\"].
aggregationstr
default=\"mean\"
Specifies how to aggregate claim/sentence-level scores to response-level scores. Must be one of 'min' or 'mean'.
response_refinementbool
default=False
Specifies whether to refine responses with uncertainty-aware decoding. This approach removes claims with confidence scores below the response_refinement_threshold and uses the claim_decomposition_llm to reconstruct the response from the retained claims. For more details, refer to Jiang et al., 2024: https://arxiv.org/abs/2410.20783
claim_filtering_scorerOptional[str]
default=None
Specifies which scorer to use to filter claims if response_refinement is True. If not provided, defaults to the first element of self.scorers.
claim_decomposition_llmBaseChatModel
default=None
A langchain llm `BaseChatModel` to be used for decomposing responses into individual claims. Also used for claim refinement. If granularity=\"claim\" and claim_decomposition_llm is None, the provided `llm` will be used for claim decomposition.
devicestr or torch.device
default=None
Specifies the device that NLI model use for prediction. If None, detects and returns the best available PyTorch device. Prioritizes CUDA (NVIDIA GPU), then MPS (macOS), then CPU.
system_promptstr or None
default=\"You are a helpful assistant.\"
Optional argument for user to provide custom system prompt for the LLM.
max_calls_per_minint
default=None
Specifies how many API calls to make per minute to avoid rate limit errors. By default, no limit is specified.
use_n_parambool
default=False
Specifies whether to use n parameter for BaseChatModel. Not compatible with all BaseChatModel classes. If used, it speeds up the generation process substantially when num_responses is large.
sampling_temperaturefloat
default=1
The 'temperature' parameter for LLM to use when generating sampled LLM responses. Must be greater than 0.
nli_model_namestr
default=\"microsoft/deberta-large-mnli\"
Specifies which NLI model to use. Must be acceptable input to AutoTokenizer.from_pretrained() and AutoModelForSequenceClassification.from_pretrained().
max_lengthint
default=2000
Specifies the maximum allowed string length for LLM responses for NLI computation. Responses longer than this value will be truncated in NLI computations to avoid OutOfMemoryError.
\n", "\n", "#### ๐Ÿ” Parameter Groups\n", "\n", "
\n", "
\n", "

๐Ÿง  LLM-Specific

\n", " \n", "
\n", "
\n", "

๐Ÿ“Š Confidence Scores

\n", " \n", "
\n", "
\n", "

๐Ÿ–ฅ๏ธ Hardware

\n", " \n", "
\n", "
\n", "

โšก Performance

\n", " \n", "
\n", "
\n", "\n", "```" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [] }, "outputs": [], "source": [ "ltg = LongTextGraph(\n", " llm=gemini_flash,\n", " aggregation=\"mean\", # switch to 'min' for more conservative scoring\n", " response_refinement=True, # whether to filter out low-confidence claims\n", " scorers=[\"degree_centrality\"],\n", " # response_refinement_threshold=1 / 3, # adjust claim filtering threshold based on risk preferences\n", " # max_calls_per_min=80,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ๐Ÿ”„ Class Methods\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MethodDescription & Parameters
BlackBoxUQ.generate_and_score\n", "

Generate LLM responses, sampled LLM (candidate) responses, and compute confidence scores for the provided prompts.

\n", "

Parameters:

\n", "
    \n", "
  • prompts - (List[str] or List[List[BaseMessage]]) A list of input prompts for the model.
  • \n", "
  • num_responses - (int, default=5) The number of sampled responses used to compute consistency.
  • \n", "
  • response_refinement_threshold - (float, default=1/3) Threshold for uncertainty-aware filtering. Claims with confidence scores below this threshold are dropped from the refined response. Only used if response_refinement is True.
  • \n", "
  • show_progress_bars - (bool, default=True) If True, displays a progress bar while generating and scoring responses.
  • \n", "
\n", "

Returns: UQResult containing data (prompts, responses, sampled responses, and confidence scores) and metadata

\n", "
\n", " ๐Ÿ’ก Best For: Complete end-to-end uncertainty quantification when starting with prompts.\n", "
\n", "
BlackBoxUQ.score\n", "

Compute confidence scores on provided LLM responses. Should only be used if responses and sampled responses are already generated.

\n", "

Parameters:

\n", "
    \n", "
  • responses - (List[str]) A list of LLM responses for the prompts.
  • \n", "
  • sampled_responses - (List[List[str]]) A list of lists of sampled LLM responses for each prompt. Used to compute consistency scores by comparing to the corresponding response from responses.
  • \n", "
  • response_refinement_threshold - (float, default=1/3) Threshold for uncertainty-aware filtering. Claims with confidence scores below this threshold are dropped from the refined response. Only used if response_refinement is True.
  • \n", "
  • show_progress_bars - (bool, default=True) If True, displays a progress bar while scoring responses.
  • \n", "
\n", "

Returns: UQResult containing data (responses, sampled responses, and confidence scores) and metadata

\n", "
\n", " ๐Ÿ’ก Best For: Computing uncertainty scores when responses are already generated elsewhere.\n", "
\n", "
" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3ce06633a0724256bac14644219adfc4", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "results = await ltg.generate_and_score(\n",
    "    prompts=factscore.prompt.to_list(),\n",
    "    num_responses=5,  # choose num_responses based on cost and latency requirements (higher means better hallucination detection but more cost and latency)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
promptresponsesampled_responsesdegree_centralityclaims_datarefined_responserefined_degree_centrality
0Tell me a bio of Suthida within 100 words.\\nQueen Suthida Bajrasudhabimalalakshana is the ...[Queen Suthida Bajrasudhabimalalakshana is the...0.7389[{'claim': 'Queen Suthida Bajrasudhabimalalaks...Born Suthida Tidjai, Queen Suthida Bajrasudhab...0.76798
\n", "
" ], "text/plain": [ " prompt \\\n", "0 Tell me a bio of Suthida within 100 words.\\n \n", "\n", " response \\\n", "0 Queen Suthida Bajrasudhabimalalakshana is the ... \n", "\n", " sampled_responses degree_centrality \\\n", "0 [Queen Suthida Bajrasudhabimalalakshana is the... 0.7389 \n", "\n", " claims_data \\\n", "0 [{'claim': 'Queen Suthida Bajrasudhabimalalaks... \n", "\n", " refined_response \\\n", "0 Born Suthida Tidjai, Queen Suthida Bajrasudhab... \n", "\n", " refined_degree_centrality \n", "0 0.76798 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result_df = results.to_df()\n", "result_df.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Response refinement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Response refinement works by dropping claims with confidence scores (specified with `claim_filtering_scorer`) below a specified threshold (specified with `response_refinement_threshold`) and reconstructing the response from the retained claims.\n", "\n", "![Sample Image](https://raw.githubusercontent.com/cvs-health/uqlm/develop/assets/images/uad_graphic.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To illustrate how the response refinement operates, let's view an example. We first view the fine-grained claim-level data, including the claims in the original response, the claim-level confidence scores, and whether each claim was removed during the response refinement process. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[{'claim': 'Queen Suthida Bajrasudhabimalalakshana is the current Queen Consort of Thailand.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.75818,\n", " 'removed': False},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana is married to King Maha Vajiralongkorn.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.92884,\n", " 'removed': False},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana was born Suthida Tidjai.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.82817,\n", " 'removed': False},\n", " {'claim': 'Suthida Tidjai initially worked as a flight attendant.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.9895,\n", " 'removed': False},\n", " {'claim': 'Suthida Tidjai worked for Thai Airways.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.98485,\n", " 'removed': False},\n", " {'claim': 'Suthida Tidjai later joined the Royal Thai Army.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.98098,\n", " 'removed': False},\n", " {'claim': 'Suthida Tidjai rapidly ascended through the ranks.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.97471,\n", " 'removed': False},\n", " {'claim': 'Suthida Tidjai became a general.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.98176,\n", " 'removed': False},\n", " {'claim': \"Suthida Tidjai's marriage occurred in 2019.\",\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.97804,\n", " 'removed': False},\n", " {'claim': \"Suthida Tidjai served as the deputy commander of the King's Royal Guard.\",\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.4668,\n", " 'removed': False},\n", " {'claim': \"Suthida Tidjai served as the deputy commander of the King's Royal Guard prior to her marriage.\",\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.44859,\n", " 'removed': False},\n", " {'claim': 'Suthida Tidjai demonstrated a distinguished career in aviation.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.79436,\n", " 'removed': False},\n", " {'claim': 'Suthida Tidjai demonstrated a distinguished career in military service.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.94568,\n", " 'removed': False},\n", " {'claim': 'Suthida Tidjai became Queen.',\n", " 'original_response': True,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.91839,\n", " 'removed': False},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana married King Vajiralongkorn on May 1, 2019.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.33107,\n", " 'removed': True},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana plays a supportive role alongside the monarch.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.164,\n", " 'removed': True},\n", " {'claim': 'King Vajiralongkorn had a coronation.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.77994,\n", " 'removed': False},\n", " {'claim': 'Maha Vajiralongkorn was then-Crown Prince.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.16263,\n", " 'removed': True},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana plays a supportive role in ceremonies.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.16398,\n", " 'removed': True},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana joined the Royal Thai Army in 2010.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.33148,\n", " 'removed': True},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana served as a bodyguard to then-Crown Prince Maha Vajiralongkorn.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.16499,\n", " 'removed': True},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana plays a supportive role in royal duties.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.16397,\n", " 'removed': True},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana was officially named Queen Consort of Thailand.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.70987,\n", " 'removed': False},\n", " {'claim': \"The marriage occurred just days before King Vajiralongkorn's coronation.\",\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.81827,\n", " 'removed': False},\n", " {'claim': 'King Maha Vajiralongkorn is Rama X.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.36703,\n", " 'removed': False},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana was formally crowned as Queen.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.2776,\n", " 'removed': True},\n", " {'claim': 'The marriage was announced in May 2019.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.59038,\n", " 'removed': False},\n", " {'claim': \"Queen Suthida Bajrasudhabimalalakshana was crowned during King Vajiralongkorn's official coronation.\",\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.29731,\n", " 'removed': True},\n", " {'claim': \"The marriage was announced days before King Vajiralongkorn's official coronation.\",\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.49288,\n", " 'removed': False},\n", " {'claim': 'The marriage of Queen Suthida Bajrasudhabimalalakshana and King Maha Vajiralongkorn was announced.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.49703,\n", " 'removed': False},\n", " {'claim': \"Queen Suthida Bajrasudhabimalalakshana became deputy commander of the King's Royal Security Command.\",\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.31186,\n", " 'removed': True},\n", " {'claim': \"Queen Suthida Bajrasudhabimalalakshana became commander of the King's security unit.\",\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.15637,\n", " 'removed': True},\n", " {'claim': 'The marriage was announced on May 1, 2019.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.16573,\n", " 'removed': True},\n", " {'claim': 'Suthida Tidjai secretly married King Vajiralongkorn.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.16514,\n", " 'removed': True},\n", " {'claim': \"Suthida Tidjai's path is remarkable.\",\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.14438,\n", " 'removed': True},\n", " {'claim': 'Suthida Tidjai was born in 1978.',\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.16578,\n", " 'removed': True},\n", " {'claim': \"Suthida Tidjai's path is a prominent feature of her life.\",\n", " 'original_response': False,\n", " 'scorer_type': 'graphuq',\n", " 'degree_centrality': 0.15942,\n", " 'removed': True}]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result_df.claims_data[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then visualize the response refinement process for this response using the `display_response_refinement`. This shows the original response vs. the refined response and identifies which claims were removed due to low confidence." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n",
       "
\n" ], "text/plain": [ "\u001b[1;30mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
                                            Response Refinement Example                                            \n",
       "
\n" ], "text/plain": [ " \u001b[1;30mResponse Refinement Example\u001b[0m \n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n",
       "
\n" ], "text/plain": [ "\u001b[1;30mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
       "
\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Original Response โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
       "โ”‚ Suthida Bajrasudhabimalalakshana, born on June 3, 1978, is the Queen of Thailand. She became queen following    โ”‚\n",
       "โ”‚ her marriage to King Maha Vajiralongkorn (Rama X) on May 1, 2019.                                               โ”‚\n",
       "โ”‚                                                                                                                 โ”‚\n",
       "โ”‚ Before becoming queen, Suthida was known for her service in the Thai military and royal security. She joined    โ”‚\n",
       "โ”‚ the Thai military, where she eventually rose to the rank of General. Her notable role was as the Deputy         โ”‚\n",
       "โ”‚ Commander of the Kingโ€™s Own Bodyguard Battalion. Suthida was also appointed as the Commander of the Special     โ”‚\n",
       "โ”‚ Operations Unit of the Kingโ€™s Guard in 2013, and later, she was made the Commander of the Royal Thai            โ”‚\n",
       "โ”‚ Aide-de-Camp Department.                                                                                        โ”‚\n",
       "โ”‚                                                                                                                 โ”‚\n",
       "โ”‚ Her service to the royal family and her close association with King Vajiralongkorn began during his time as     โ”‚\n",
       "โ”‚ Crown Prince. Suthida was appointed as a General in the Royal Thai Army in December 2016, shortly after         โ”‚\n",
       "โ”‚ Vajiralongkorn ascended to the throne.                                                                          โ”‚\n",
       "โ”‚                                                                                                                 โ”‚\n",
       "โ”‚ Queen Suthida's royal name, bestowed upon her after marriage, is Her Majesty Queen Suthida                      โ”‚\n",
       "โ”‚ Bajrasudhabimalalakshana. The marriage and her subsequent coronation as queen were part of the elaborate royal  โ”‚\n",
       "โ”‚ ceremonies that solidified her position as the consort of the reigning monarch.                                 โ”‚\n",
       "โ”‚                                                                                                                 โ”‚\n",
       "โ”‚ Queen Suthida is known for her dignity and dedication to her roles both in royal duties and her previous        โ”‚\n",
       "โ”‚ military service. Her work and public engagements often highlight charitable activities and support for various โ”‚\n",
       "โ”‚ social causes within Thailand.                                                                                  โ”‚\n",
       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
       "
\n" ], "text/plain": [ "\u001b[33mโ•ญโ”€\u001b[0m\u001b[33mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[33m \u001b[0m\u001b[1;33mOriginal Response\u001b[0m\u001b[33m \u001b[0m\u001b[33mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[33mโ”€โ•ฎ\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Suthida Bajrasudhabimalalakshana, born on June 3, 1978, is the Queen of Thailand. She became queen following \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m her marriage to King Maha Vajiralongkorn (Rama X) on May 1, 2019. \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Before becoming queen, Suthida was known for her service in the Thai military and royal security. She joined \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m the Thai military, where she eventually rose to the rank of General. Her notable role was as the Deputy \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Commander of the Kingโ€™s Own Bodyguard Battalion. Suthida was also appointed as the Commander of the Special \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Operations Unit of the Kingโ€™s Guard in 2013, and later, she was made the Commander of the Royal Thai \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Aide-de-Camp Department. \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Her service to the royal family and her close association with King Vajiralongkorn began during his time as \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Crown Prince. Suthida was appointed as a General in the Royal Thai Army in December 2016, shortly after \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Vajiralongkorn ascended to the throne. \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Queen Suthida's royal name, bestowed upon her after marriage, is Her Majesty Queen Suthida \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Bajrasudhabimalalakshana. The marriage and her subsequent coronation as queen were part of the elaborate royal \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m ceremonies that solidified her position as the consort of the reigning monarch. \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Queen Suthida is known for her dignity and dedication to her roles both in royal duties and her previous \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m military service. Her work and public engagements often highlight charitable activities and support for various \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m social causes within Thailand. \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Low-Confidence Claims to be Removed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
       "โ”‚ โ€ข Suthida Bajrasudhabimalalakshana's notable role was as the Deputy Commander of the Kingโ€™s Own Bodyguard       โ”‚\n",
       "โ”‚ Battalion.                                                                                                      โ”‚\n",
       "โ”‚ โ€ข Suthida Bajrasudhabimalalakshana was appointed as the Commander of the Special Operations Unit of the Kingโ€™s  โ”‚\n",
       "โ”‚ Guard in 2013.                                                                                                  โ”‚\n",
       "โ”‚ โ€ข Suthida Bajrasudhabimalalakshana was made the Commander of the Royal Thai Aide-de-Camp Department.            โ”‚\n",
       "โ”‚ โ€ข Suthida Bajrasudhabimalalakshana's service to the royal family began during Vajiralongkorn's time as Crown    โ”‚\n",
       "โ”‚ Prince.                                                                                                         โ”‚\n",
       "โ”‚ โ€ข Suthida Bajrasudhabimalalakshana was appointed as a General in the Royal Thai Army in December 2016.          โ”‚\n",
       "โ”‚ โ€ข Vajiralongkorn ascended to the throne shortly before December 2016.                                           โ”‚\n",
       "โ”‚ โ€ข The marriage and Queen Suthida's subsequent coronation were part of the elaborate royal ceremonies.           โ”‚\n",
       "โ”‚ โ€ข The elaborate royal ceremonies solidified Queen Suthida's position as the consort of the reigning monarch.    โ”‚\n",
       "โ”‚ โ€ข Queen Suthida is known for her dignity.                                                                       โ”‚\n",
       "โ”‚ โ€ข Queen Suthida is known for her dedication to her roles in royal duties.                                       โ”‚\n",
       "โ”‚ โ€ข Queen Suthida is known for her dedication to her previous military service.                                   โ”‚\n",
       "โ”‚ โ€ข Queen Suthida's work and public engagements often highlight charitable activities in Thailand.                โ”‚\n",
       "โ”‚ โ€ข Queen Suthida's work and public engagements often support various social causes within Thailand.              โ”‚\n",
       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
       "
\n" ], "text/plain": [ "\u001b[31mโ•ญโ”€\u001b[0m\u001b[31mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[31m \u001b[0m\u001b[1;31mLow-Confidence Claims to be Removed\u001b[0m\u001b[31m \u001b[0m\u001b[31mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[31mโ”€โ•ฎ\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Suthida Bajrasudhabimalalakshana's notable role was as the Deputy Commander of the Kingโ€™s Own Bodyguard \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m Battalion. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Suthida Bajrasudhabimalalakshana was appointed as the Commander of the Special Operations Unit of the Kingโ€™s \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m Guard in 2013. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Suthida Bajrasudhabimalalakshana was made the Commander of the Royal Thai Aide-de-Camp Department. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Suthida Bajrasudhabimalalakshana's service to the royal family began during Vajiralongkorn's time as Crown \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m Prince. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Suthida Bajrasudhabimalalakshana was appointed as a General in the Royal Thai Army in December 2016. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Vajiralongkorn ascended to the throne shortly before December 2016. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข The marriage and Queen Suthida's subsequent coronation were part of the elaborate royal ceremonies. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข The elaborate royal ceremonies solidified Queen Suthida's position as the consort of the reigning monarch. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida is known for her dignity. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida is known for her dedication to her roles in royal duties. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida is known for her dedication to her previous military service. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida's work and public engagements often highlight charitable activities in Thailand. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida's work and public engagements often support various social causes within Thailand. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Refined Response โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
       "โ”‚ Suthida Bajrasudhabimalalakshana, born on June 3, 1978, is the Queen of Thailand. She became queen following    โ”‚\n",
       "โ”‚ her marriage to King Maha Vajiralongkorn on May 1, 2019, and upon marriage, she was bestowed with the royal     โ”‚\n",
       "โ”‚ name Her Majesty Queen Suthida Bajrasudhabimalalakshana. Before her ascension to the throne, Queen Suthida was  โ”‚\n",
       "โ”‚ recognized for her dedicated service in the Thai military, where she rose to the rank of General, and in royal  โ”‚\n",
       "โ”‚ security. Her military career and commitment to royal security played a significant role in her rise to         โ”‚\n",
       "โ”‚ prominence, ultimately leading to her role as queen.                                                            โ”‚\n",
       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
       "
\n" ], "text/plain": [ "\u001b[32mโ•ญโ”€\u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32m \u001b[0m\u001b[1;32mRefined Response\u001b[0m\u001b[32m \u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32mโ”€โ•ฎ\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m Suthida Bajrasudhabimalalakshana, born on June 3, 1978, is the Queen of Thailand. She became queen following \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m her marriage to King Maha Vajiralongkorn on May 1, 2019, and upon marriage, she was bestowed with the royal \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m name Her Majesty Queen Suthida Bajrasudhabimalalakshana. Before her ascension to the throne, Queen Suthida was \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m recognized for her dedicated service in the Thai military, where she rose to the rank of General, and in royal \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m security. Her military career and commitment to royal security played a significant role in her rise to \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m prominence, ultimately leading to her role as queen. \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_response_refinement(original_text=result_df.response[0], claims_data=result_df.claims_data[0], refined_text=result_df.refined_response[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Evaluate Hallucination Detection Performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To evaluate hallucination detection performance, we 'grade' the atomic claims in the responses against an answer key. Here, we use UQLM's out-of-the-box `FactScoreGrader`, which can be used with [LangChain Chat Model](https://js.langchain.com/docs/integrations/chat/). **If you are using your own prompts/questions, be sure to update the grading method accordingly**." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [] }, "outputs": [], "source": [ "# set up the LLM grader\n", "from langchain_google_vertexai import ChatVertexAI\n", "\n", "gemini_flash = ChatVertexAI(model=\"gemini-2.5-flash\")\n", "grader = FactScoreGrader(llm=gemini_flash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before grading, we need to have claims formatted in list of lists where each interior list corresponds to a generated response. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [] }, "outputs": [], "source": [ "# Convert claims to list of lists\n", "claims_data_lists = claims_dicts_to_lists(result_df.claims_data.tolist())" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
promptresponsesampled_responsesdegree_centralityclaims_datarefined_responserefined_degree_centralityclaim_gradesanswer
0Tell me a bio of Suthida within 100 words.\\nQueen Suthida Bajrasudhabimalalakshana is the ...[Queen Suthida Bajrasudhabimalalakshana, born ...0.855632[{'claim': 'Queen Suthida Bajrasudhabimalalaks...Queen Suthida Bajrasudhabimalalakshana is the ...0.773060[True, True, True, True, True, False, True, Tr...Suthida Bajrasudhabimalalakshana (Thai: เธชเธกเน€เธ”เน‡เธˆ...
1Tell me a bio of Miguel รngel Fรฉlix Gallardo w...Miguel รngel Fรฉlix Gallardo, known as \"El Padr...[Miguel รngel Fรฉlix Gallardo, known as \"El Pad...0.569820[{'claim': 'Miguel รngel Fรฉlix Gallardo was kn...Miguel รngel Fรฉlix Gallardo, a Mexican drug lo...0.731845[True, True, True, True, True, True, False, Fa...Miguel รngel Fรฉlix Gallardo (born January 8, 1...
2Tell me a bio of Iggy Azalea within 100 words.\\nAmethyst Amelia Kelly, known as Iggy Azalea, i...[Amethyst Amelia Kelly, known professionally a...0.753417[{'claim': 'Amethyst Amelia Kelly is an Austra...Amethyst Amelia Kelly, widely recognized as Ig...0.720593[True, True, True, True, True, True, True, Tru...Amethyst Amelia Kelly (born 7 June 1990), know...
3Tell me a bio of Fernando da Costa Novaes with...Fernando da Costa Novaes is a distinguished Br...[Fernando da Costa Novaes (born 1941) is a dis...0.648004[{'claim': 'Fernando da Costa Novaes is a hist...Fernando da Costa Novaes is a distinguished Br...0.836937[False, True, True, False, True, True, False, ...Fernando da Costa Novaes (April 6, 1927 โ€“ Marc...
4Tell me a bio of Jan Zamoyski within 100 words.\\nJan Zamoyski (1542โ€“1605) was a preeminent Poli...[Jan Zamoyski (1542โ€“1605) was a paramount figu...0.706531[{'claim': 'Jan Zamoyski was born in 1542.', '...Jan Zamoyski, born in 1542 and passing away in...0.757186[True, True, True, True, True, True, True, Tru...Jan Sariusz Zamoyski (Latin: Ioannes Zamoyski ...
\n", "
" ], "text/plain": [ " prompt \\\n", "0 Tell me a bio of Suthida within 100 words.\\n \n", "1 Tell me a bio of Miguel รngel Fรฉlix Gallardo w... \n", "2 Tell me a bio of Iggy Azalea within 100 words.\\n \n", "3 Tell me a bio of Fernando da Costa Novaes with... \n", "4 Tell me a bio of Jan Zamoyski within 100 words.\\n \n", "\n", " response \\\n", "0 Queen Suthida Bajrasudhabimalalakshana is the ... \n", "1 Miguel รngel Fรฉlix Gallardo, known as \"El Padr... \n", "2 Amethyst Amelia Kelly, known as Iggy Azalea, i... \n", "3 Fernando da Costa Novaes is a distinguished Br... \n", "4 Jan Zamoyski (1542โ€“1605) was a preeminent Poli... \n", "\n", " sampled_responses degree_centrality \\\n", "0 [Queen Suthida Bajrasudhabimalalakshana, born ... 0.855632 \n", "1 [Miguel รngel Fรฉlix Gallardo, known as \"El Pad... 0.569820 \n", "2 [Amethyst Amelia Kelly, known professionally a... 0.753417 \n", "3 [Fernando da Costa Novaes (born 1941) is a dis... 0.648004 \n", "4 [Jan Zamoyski (1542โ€“1605) was a paramount figu... 0.706531 \n", "\n", " claims_data \\\n", "0 [{'claim': 'Queen Suthida Bajrasudhabimalalaks... \n", "1 [{'claim': 'Miguel รngel Fรฉlix Gallardo was kn... \n", "2 [{'claim': 'Amethyst Amelia Kelly is an Austra... \n", "3 [{'claim': 'Fernando da Costa Novaes is a hist... \n", "4 [{'claim': 'Jan Zamoyski was born in 1542.', '... \n", "\n", " refined_response \\\n", "0 Queen Suthida Bajrasudhabimalalakshana is the ... \n", "1 Miguel รngel Fรฉlix Gallardo, a Mexican drug lo... \n", "2 Amethyst Amelia Kelly, widely recognized as Ig... \n", "3 Fernando da Costa Novaes is a distinguished Br... \n", "4 Jan Zamoyski, born in 1542 and passing away in... \n", "\n", " refined_degree_centrality \\\n", "0 0.773060 \n", "1 0.731845 \n", "2 0.720593 \n", "3 0.836937 \n", "4 0.757186 \n", "\n", " claim_grades \\\n", "0 [True, True, True, True, True, False, True, Tr... \n", "1 [True, True, True, True, True, True, False, Fa... \n", "2 [True, True, True, True, True, True, True, Tru... \n", "3 [False, True, True, False, True, True, False, ... \n", "4 [True, True, True, True, True, True, True, Tru... \n", "\n", " answer \n", "0 Suthida Bajrasudhabimalalakshana (Thai: เธชเธกเน€เธ”เน‡เธˆ... \n", "1 Miguel รngel Fรฉlix Gallardo (born January 8, 1... \n", "2 Amethyst Amelia Kelly (born 7 June 1990), know... \n", "3 Fernando da Costa Novaes (April 6, 1927 โ€“ Marc... \n", "4 Jan Sariusz Zamoyski (Latin: Ioannes Zamoyski ... " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# grade original responses against the answer key using the grader\n", "result_df[\"claim_grades\"] = await grader.grade_claims(claim_sets=claims_data_lists[\"claim\"], answers=factscore[\"wikipedia_text\"].to_list())\n", "result_df[\"answer\"] = factscore[\"wikipedia_text\"]\n", "result_df.head(5)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Baseline LLM accuracy: 0.6257668711656442\n" ] } ], "source": [ "all_claim_scores, all_claim_grades = [], []\n", "for i in range(len(result_df)):\n", " all_claim_scores.extend(claims_data_lists[\"degree_centrality\"][i])\n", " all_claim_grades.extend(result_df[\"claim_grades\"][i])\n", "\n", "print(f\"\"\"Baseline LLM accuracy: {np.mean(all_claim_grades)}\"\"\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.1 Claim-Level Hallucination Detection AUROC" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To evaluate fine-grained hallucination detection performance, we compute AUROC of claim-level hallucination detection. Below, we plot the ROC curve and report these results." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "tags": [] }, "outputs": [], "source": [ "from sklearn.metrics import roc_curve, roc_auc_score\n", "\n", "fpr, tpr, thresholds = roc_curve(y_true=all_claim_grades, y_score=all_claim_scores)\n", "roc_auc = roc_auc_score(y_true=all_claim_grades, y_score=all_claim_scores)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjShJREFUeJzs3Xd8zdf/wPHXzR6SCBGJCLH3jL1XRbVWzdqK2m3RfmvUaosWVZRaRcxapTYtRdFUW3tGiVSMIEQSkSG55/dHfm5cSciNJJ+M9/PxyEPu+3M+n/u+I+77ns/5nKNTSimEEEIIIXIhM60TEEIIIYTQihRCQgghhMi1pBASQgghRK4lhZAQQgghci0phIQQQgiRa0khJIQQQohcSwohIYQQQuRaUggJIYQQIteSQkgIIYQQuZYUQiLTeXl50bdvX63TyHWaNGlCkyZNtE7jlSZPnoxOpyMkJETrVLIcnU7H5MmT0+VYgYGB6HQ6fH190+V4AH/99RdWVlb8999/6XbM9NatWze6dOmidRoiC5FCKIfx9fVFp9MZfiwsLPDw8KBv377cunVL6/SytMjISL744gsqV66MnZ0dTk5ONGzYkFWrVpFdVqK5ePEikydPJjAwUOtUkoiPj2fFihU0adKEfPnyYW1tjZeXF/369eOff/7ROr10sW7dOubMmaN1GkYyM6fx48fz7rvvUrRoUUOsSZMmRv8n2draUrlyZebMmYNer0/2OA8ePOCTTz6hTJky2NjYkC9fPnx8fNi5c2eK9x0eHs6UKVOoUqUKefLkwdbWlooVK/Lpp59y+/ZtQ7tPP/2Un376iTNnzqT6ceWG926upkSOsmLFCgWozz//XK1evVotXbpU9e/fX5mbm6sSJUqoqKgorVNU0dHRKjY2Vus0jAQHB6sKFSooMzMz1b17d7V48WI1d+5c1ahRIwWorl27qri4OK3TfKVNmzYpQB08eDDJtpiYGBUTE5P5SSmlnjx5olq1aqUA1ahRIzVz5ky1bNkyNWHCBFWmTBml0+lUUFCQUkqpSZMmKUDdv39fk1xfx1tvvaWKFi2aYcePiopST58+NWmflHLS6/UqKioq3d7Xp06dUoD6448/jOKNGzdWhQsXVqtXr1arV69W3377rapZs6YC1Lhx45Ic5/Lly8rDw0NZWVmpQYMGqaVLl6qZM2eqqlWrKkB9/PHHSfa5du2aKlasmDI3N1fdunVT8+fPV0uWLFHDhw9X+fPnV6VKlTJqX6tWLdWrV69UPS5T3rsie5JCKId5Vgj9/fffRvFPP/1UAWrDhg0aZaatqKgoFR8fn+J2Hx8fZWZmprZt25Zk28cff6wA9dVXX2Vkisl6/PixSe1fVghpadiwYQpQ3377bZJtcXFxaubMmZlaCOn1evXkyZN0P25GFELx8fGv9QUmo4uzZz744ANVpEgRpdfrjeKNGzdWFSpUMIpFRUWpokWLKgcHB6NCLDY2VlWsWFHZ2dmpP//802ifuLg41bVrVwWo9evXG+JPnz5VVapUUXZ2durIkSNJ8goLC0tScM2aNUvZ29uriIiIVz4uU967r+N1X2eRdlII5TApFUI7d+5UgJo2bZpR/NKlS6pjx47K2dlZWVtbK29v72SLgdDQUPXRRx+pokWLKisrK+Xh4aF69epl9GEVHR2tJk6cqEqUKKGsrKxU4cKF1SeffKKio6ONjlW0aFHVp08fpZRSf//9twKUr69vkvvcu3evAtSOHTsMsZs3b6p+/fopV1dXZWVlpcqXL6+WLVtmtN/BgwcVoH788Uc1fvx4VahQIaXT6VRoaGiyz5mfn58C1HvvvZfs9qdPn6pSpUopZ2dnw4fn9evXFaBmzpypZs+erYoUKaJsbGxUo0aN1Llz55IcIzXP87PX7tChQ2rIkCGqQIECKm/evEoppQIDA9WQIUNU6dKllY2NjcqXL5/q1KmTun79epL9X/x5VhQ1btxYNW7cOMnztGHDBvXll18qDw8PZW1trZo1a6b+/fffJI9h/vz5qlixYsrGxkbVrFlT/f7770mOmZygoCBlYWGh3njjjZe2e+ZZIfTvv/+qPn36KCcnJ+Xo6Kj69u2rIiMjjdouX75cNW3aVBUoUEBZWVmpcuXKqe+//z7JMYsWLareeusttXfvXuXt7a2sra0NH2ypPYZSSu3evVs1atRI5cmTRzk4OKgaNWqotWvXKqUSnt8Xn/vnC5DU/n0AatiwYWrNmjWqfPnyysLCQm3dutWwbdKkSYa24eHh6sMPPzT8XRYoUEC1aNFCnThx4pU5PXsPr1ixwuj+L126pDp37qxcXFyUjY2NKl26dLI9Ny8qUqSI6tu3b5J4coWQUkp16tRJAer27duG2I8//mjo0U7Oo0ePVN68eVXZsmUNsfXr1ytATZ069ZU5PnPmzBkFqC1btry0nanv3T59+iRbdD57Tz8vudd548aNytnZOdnnMSwsTFlbW6vRo0cbYql9T4mXs0j3c20iS3o2ZsTZ2dkQu3DhAvXr18fDw4MxY8Zgb2/Pxo0bad++PT/99BMdOnQA4PHjxzRs2JBLly7x3nvvUb16dUJCQti+fTs3b97ExcUFvV5P27ZtOXr0KO+//z7lypXj3LlzfPvtt1y5coWff/452bxq1KhB8eLF2bhxI3369DHatmHDBpydnfHx8QHg7t271KlTB51Ox/DhwylQoAB79uyhf//+hIeH89FHHxnt/8UXX2BlZcXHH39MTEwMVlZWyeawY8cOAHr37p3sdgsLC7p3786UKVM4duwYLVq0MGxbtWoVERERDBs2jOjoaObOnUuzZs04d+4cBQsWNOl5fmbo0KEUKFCAiRMnEhkZCcDff//NH3/8Qbdu3ShcuDCBgYEsXLiQJk2acPHiRezs7GjUqBEffPAB8+bNY9y4cZQrVw7A8G9KvvrqK8zMzPj4448JCwtjxowZ9OjRg+PHjxvaLFy4kOHDh9OwYUNGjhxJYGAg7du3x9nZmcKFC7/0+Hv27CEuLo5evXq9tN2LunTpQrFixZg+fTonT57khx9+wNXVla+//toorwoVKtC2bVssLCzYsWMHQ4cORa/XM2zYMKPj+fv78+677zJo0CAGDhxImTJlTDqGr68v7733HhUqVGDs2LHkzZuXU6dOsXfvXrp378748eMJCwvj5s2bfPvttwDkyZMHwOS/j99++42NGzcyfPhwXFxc8PLySvY5Gjx4MJs3b2b48OGUL1+eBw8ecPToUS5dukT16tVfmlNyzp49S8OGDbG0tOT999/Hy8uLa9eusWPHDqZOnZrifrdu3eLGjRtUr149xTYvejZYO2/evIbYq/4WnZycaNeuHStXruTq1auULFmS7du3A5j0/ipfvjy2trYcO3Ysyd/f89L63k2tF1/nUqVK0aFDB7Zs2cLixYuN/s/6+eefiYmJoVu3boDp7ynxElpXYiJ9PesV2L9/v7p//74KCgpSmzdvVgUKFFDW1tZGXbjNmzdXlSpVMvr2oNfrVb169YzOqU+cODHFb0/PusFXr16tzMzMknRNL1q0SAHq2LFjhtjzPUJKKTV27FhlaWmpHj58aIjFxMSovHnzGvXS9O/fX7m7u6uQkBCj++jWrZtycnIy9NY86+koXrx4qk5/tG/fXgEp9hgppdSWLVsUoObNm6eUSvw2bWtrq27evGlod/z4cQWokSNHGmKpfZ6fvXYNGjRIMm4jucfxrCdr1apVhtjLTo2l1CNUrlw5o7FDc+fOVYChZysmJkblz59f1axZ02h8iq+vrwJe2SM0cuRIBahTp069tN0zz749v9hD16FDB5U/f36jWHLPi4+PjypevLhRrGjRogpQe/fuTdI+Ncd49OiRcnBwULVr105y+uL5U0EpnYYy5e8DUGZmZurChQtJjsMLPUJOTk5q2LBhSdo9L6WckusRatSokXJwcFD//fdfio8xOfv370/Se/tM48aNVdmyZdX9+/fV/fv31eXLl9Unn3yiAPXWW28Zta1atapycnJ66X3Nnj1bAWr79u1KKaWqVav2yn2SU7p0afXmm2++tI2p711Te4SSe5337duX7HPZunVro/ekKe8p8XJy1VgO1aJFCwoUKICnpyedOnXC3t6e7du3G769P3z4kN9++40uXboQERFBSEgIISEhPHjwAB8fH/7991/DVWY//fQTVapUSfabk06nA2DTpk2UK1eOsmXLGo4VEhJCs2bNADh48GCKuXbt2pWnT5+yZcsWQ+yXX37h0aNHdO3aFQClFD/99BNt2rRBKWV0Hz4+PoSFhXHy5Emj4/bp0wdbW9tXPlcREREAODg4pNjm2bbw8HCjePv27fHw8DDcrlWrFrVr12b37t2Aac/zMwMHDsTc3Nwo9vzjePr0KQ8ePKBkyZLkzZs3yeM2Vb9+/Yy+eTZs2BCAgIAAAP755x8ePHjAwIEDsbBI7ETu0aOHUQ9jSp49Zy97fpMzePBgo9sNGzbkwYMHRq/B889LWFgYISEhNG7cmICAAMLCwoz2L1asmKF38XmpOcavv/5KREQEY8aMwcbGxmj/Z38DL2Pq30fjxo0pX778K4+bN29ejh8/bnRVVFrdv3+f33//nffee48iRYoYbXvVY3zw4AFAiu+Hy5cvU6BAAQoUKEDZsmWZOXMmbdu2TXLpfkRExCvfJy/+LYaHh5v83nqW66umaEjreze1knudmzVrhouLCxs2bDDEQkND+fXXXw3/H8Lr/Z8rjMmpsRxqwYIFlC5dmrCwMJYvX87vv/+OtbW1YfvVq1dRSjFhwgQmTJiQ7DHu3buHh4cH165do2PHji+9v3///ZdLly5RoECBFI+VkipVqlC2bFk2bNhA//79gYTTYi4uLoY/6vv37/Po0SOWLFnCkiVLUnUfxYoVe2nOzzz7Ty4iIsKom/55KRVLpUqVStK2dOnSbNy4ETDteX5Z3lFRUUyfPp0VK1Zw69Yto8v5X/zAN9WLH3rPPsxCQ0MBDHPClCxZ0qidhYVFiqdsnufo6AgkPofpkdezYx47doxJkybh5+fHkydPjNqHhYXh5ORkuJ3S+yE1x7h27RoAFStWNOkxPGPq30dq37szZsygT58+eHp64u3tTevWrenduzfFixc3OcdnhW9aHyOQ4jQTXl5eLF26FL1ez7Vr15g6dSr3799PUlQ6ODi8sjh58W/R0dHRkLupub6qwEvreze1knudLSws6NixI+vWrSMmJgZra2u2bNnC06dPjQqh1/k/VxiTQiiHqlWrFjVq1AASei0aNGhA9+7d8ff3J0+ePIb5Oz7++ONkvyVD0g++l9Hr9VSqVInZs2cnu93T0/Ol+3ft2pWpU6cSEhKCg4MD27dv59133zX0QDzLt2fPnknGEj1TuXJlo9up6Q2ChDE0P//8M2fPnqVRo0bJtjl79ixAqr6lPy8tz3NyeY8YMYIVK1bw0UcfUbduXZycnNDpdHTr1i3FuVhS68Xep2dS+lAzVdmyZQE4d+4cVatWTfV+r8rr2rVrNG/enLJlyzJ79mw8PT2xsrJi9+7dfPvtt0mel+SeV1OPkVam/n2k9r3bpUsXGjZsyNatW/nll1+YOXMmX3/9NVu2bOHNN9987bxTK3/+/EBi8fwie3t7o7F19evXp3r16owbN4558+YZ4uXKleP06dPcuHEjSSH8zIt/i2XLluXUqVMEBQW98v+Z54WGhib7ReZ5pr53Uyqs4uPjk42n9Dp369aNxYsXs2fPHtq3b8/GjRspW7YsVapUMbR53f9zRSIphHIBc3Nzpk+fTtOmTZk/fz5jxowxfGO0tLQ0+g8qOSVKlOD8+fOvbHPmzBmaN2+eqlMFL+ratStTpkzhp59+omDBgoSHhxsGBQIUKFAABwcH4uPjX5mvqd5++22mT5/OqlWrki2E4uPjWbduHc7OztSvX99o27///puk/ZUrVww9JaY8zy+zefNm+vTpwzfffGOIRUdH8+jRI6N2aXnuX+XZ5HhXr16ladOmhnhcXByBgYFJCtAXvfnmm5ibm7NmzZp0HXS6Y8cOYmJi2L59u9GHpimnBFJ7jBIlSgBw/vz5l35BSOn5f92/j5dxd3dn6NChDB06lHv37lG9enWmTp1qKIRSe3/P3quv+ltPzrOC4fr166lqX7lyZXr27MnixYv5+OOPDc/922+/zY8//siqVav47LPPkuwXHh7Otm3bKFu2rOF1aNOmDT/++CNr1qxh7Nixqbr/uLg4goKCaNu27UvbmfredXZ2TvI3CZg803ajRo1wd3dnw4YNNGjQgN9++43x48cbtcnI91RuI2OEcokmTZpQq1Yt5syZQ3R0NK6urjRp0oTFixdz586dJO3v379v+L1jx46cOXOGrVu3Jmn37Nt5ly5duHXrFkuXLk3SJioqynD1U0rKlStHpUqV2LBhAxs2bMDd3d2oKDE3N6djx4789NNPyf5H/Xy+pqpXrx4tWrRgxYoVyc5cO378eK5cucL//ve/JN/gfv75Z6MxPn/99RfHjx83fAiZ8jy/jLm5eZIemu+++y7JN017e3uAZP8zTqsaNWqQP39+li5dSlxcnCG+du3aFHsAnufp6cnAgQP55Zdf+O6775Js1+v1fPPNN9y8edOkvJ71GL14mnDFihXpfoyWLVvi4ODA9OnTiY6ONtr2/L729vbJnqp83b+P5MTHxye5L1dXVwoVKkRMTMwrc3pRgQIFaNSoEcuXL+fGjRtG217VO+jh4YGnp6dJsyz/73//4+nTp0Y9Gp06daJ8+fJ89dVXSY6l1+sZMmQIoaGhTJo0yWifSpUqMXXqVPz8/JLcT0RERJIi4uLFi0RHR1OvXr2X5mjqe7dEiRKEhYUZeq0A7ty5k+z/nS9jZmZGp06d2LFjB6tXryYuLs7otBhkzHsqt5IeoVzkk08+oXPnzvj6+jJ48GAWLFhAgwYNqFSpEgMHDqR48eLcvXsXPz8/bt68aZiC/pNPPmHz5s107tyZ9957D29vbx4+fMj27dtZtGgRVapUoVevXmzcuJHBgwdz8OBB6tevT3x8PJcvX2bjxo3s27fPcKouJV27dmXixInY2NjQv39/zMyM6/SvvvqKgwcPUrt2bQYOHEj58uV5+PAhJ0+eZP/+/Tx8+DDNz82qVato3rw57dq1o3v37jRs2JCYmBi2bNnCoUOH6Nq1K5988kmS/UqWLEmDBg0YMmQIMTExzJkzh/z58/O///3P0Ca1z/PLvP3226xevRonJyfKly+Pn58f+/fvN5ySeKZq1aqYm5vz9ddfExYWhrW1Nc2aNcPV1TXNz42VlRWTJ09mxIgRNGvWjC5duhAYGIivry8lSpRI1bfRb775hmvXrvHBBx+wZcsW3n77bZydnblx4wabNm3i8uXLRj2AqdGyZUusrKxo06YNgwYN4vHjxyxduhRXV9dki87XOYajoyPffvstAwYMoGbNmnTv3h1nZ2fOnDnDkydPWLlyJQDe3t5s2LCBUaNGUbNmTfLkyUObNm3S5e/jRRERERQuXJhOnToZlpXYv38/f//9t1HPYUo5JWfevHk0aNCA6tWr8/7771OsWDECAwPZtWsXp0+ffmk+7dq1Y+vWrakaewMJp7Zat27NDz/8wIQJE8ifPz9WVlZs3ryZ5s2b06BBA/r160eNGjV49OgR69at4+TJk4wePdrovWJpacmWLVto0aIFjRo1okuXLtSvXx9LS0suXLhg6M19/vL/X3/9FTs7O954441X5mnKe7dbt258+umndOjQgQ8++IAnT56wcOFCSpcubfJFDV27duW7775j0qRJVKpUKck0GBnxnsq1Mv9CNZGRUppQUamEmUtLlCihSpQoYbg8+9q1a6p3797Kzc1NWVpaKg8PD/X222+rzZs3G+374MEDNXz4cMPU94ULF1Z9+vQxupQ9NjZWff3116pChQrK2tpaOTs7K29vbzVlyhQVFhZmaPfi5fPP/Pvvv4ZJ344ePZrs47t7964aNmyY8vT0VJaWlsrNzU01b95cLVmyxNDm2WXhmzZtMum5i4iIUJMnT1YVKlRQtra2ysHBQdWvX1/5+vomuXz4+QkVv/nmG+Xp6amsra1Vw4YN1ZkzZ5IcOzXP88teu9DQUNWvXz/l4uKi8uTJo3x8fNTly5eTfS6XLl2qihcvrszNzVM1oeKLz1NKE+3NmzdPFS1aVFlbW6tatWqpY8eOKW9vb9WqVatUPLsJs/D+8MMPqmHDhsrJyUlZWlqqokWLqn79+hldnpzSzNLPnp/nJ5Hcvn27qly5srKxsVFeXl7q66+/VsuXL0/S7tmEislJ7TGeta1Xr56ytbVVjo6OqlatWurHH380bH/8+LHq3r27yps3b5IJFVP798H/T7SXHJ67fD4mJkZ98sknqkqVKsrBwUHZ29urKlWqJJkMMqWcUnqdz58/rzp06KDy5s2rbGxsVJkyZdSECROSzed5J0+eVECSy7lTmlBRKaUOHTqUZEoApZS6d++eGjVqlCpZsqSytrZWefPmVS1atDBcMp+c0NBQNXHiRFWpUiVlZ2enbGxsVMWKFdXYsWPVnTt3jNrWrl1b9ezZ85WP6ZnUvneVUuqXX35RFStWVFZWVqpMmTJqzZo1L51QMSV6vV55enoqQH355ZfJtknte0q8nE6pbLKapBBZSGBgIMWKFWPmzJl8/PHHWqejCb1eT4ECBXjnnXeS7Z4XuU/z5s0pVKgQq1ev1jqVFJ0+fZrq1atz8uRJkwbvi5xLxggJIV4pOjo6yTiRVatW8fDhQ5o0aaJNUiLLmTZtGhs2bDB5cHBm+uqrr+jUqZMUQcJAxggJIV7pzz//ZOTIkXTu3Jn8+fNz8uRJli1bRsWKFencubPW6Yksonbt2sTGxmqdxkutX79e6xREFiOFkBDilby8vPD09GTevHk8fPiQfPny0bt3b7766qsU13ATQojsQMYICSGEECLXkjFCQgghhMi1pBASQgghRK6V68YI6fV6bt++jYODg0xLLoQQQmQTSikiIiIoVKhQkgl3X0euK4Ru374ti9EJIYQQ2VRQUBCFCxdOt+PlukLIwcEBSHgiHR0dNc5GCCGEEKkRHh6Op6en4XM8veS6QujZ6TBHR0cphIQQQohsJr2HtchgaSGEEELkWlIICSGEECLXkkJICCGEELmWFEJCCCGEyLWkEBJCCCFEriWFkBBCCCFyLSmEhBBCCJFrSSEkhBBCiFxLCiEhhBBC5FpSCAkhhBAi19K0EPr9999p06YNhQoVQqfT8fPPP79yn0OHDlG9enWsra0pWbIkvr6+GZ6nEEIIIXImTQuhyMhIqlSpwoIFC1LV/vr167z11ls0bdqU06dP89FHHzFgwAD27duXwZkKIYQQIifSdNHVN998kzfffDPV7RctWkSxYsX45ptvAChXrhxHjx7l22+/xcfHJ6PSFEIIIUQOla3GCPn5+dGiRQujmI+PD35+fhplJIQQQoiMpo8M4cKmbzPk2Jr2CJkqODiYggULGsUKFixIeHg4UVFR2NraJtknJiaGmJgYw+3w8PAMz1MIIYQQ6eDeae7sX0C/L2I5fNU1Q+4iW/UIpcX06dNxcnIy/Hh6emqdkhBCCCFSEv8ULm+A9Q3Z9mk3Kr/vzL7LxYmOy5i+m2xVCLm5uXH37l2j2N27d3F0dEy2Nwhg7NixhIWFGX6CgoIyI1UhhBBCmCIyGPw+h6VFYVc37vufpMe6joRE2gPg6qwy5G6zVSFUt25dDhw4YBT79ddfqVu3bor7WFtb4+joaPQjhBBCiEym9BAdmvTnth/s7glLisAfkyDyDgAF8jxhTvczALRvW5I/T3yUIWlpOkbo8ePHXL161XD7+vXrnD59mnz58lGkSBHGjh3LrVu3WLVqFQCDBw9m/vz5/O9//+O9997jt99+Y+PGjezatUurhyCEEEKIV4l6CD/WgdB/U2wSr9cRpzfH2lJBiXZQbTj9RzbBs1sALVuWICIiIkNS07QQ+ueff2jatKnh9qhRowDo06cPvr6+3Llzhxs3bhi2FytWjF27djFy5Ejmzp1L4cKF+eGHH+TSeSGEECIrC9zz0iIo6JEjvTd0oWJFN77zHQCORQHQAT4+JTM0NZ1SKmNOumVR4eHhODk5ERYWJqfJhBBCiNQI/w9+HwMRaRxn++QuPPr/M0D5yxsKHYCNfgUZtLgYjyISypFdu7rTunWppClk0Od3trp8XgghhBAZIDwITs+HqJDkt59fnn73VeNjqNiP8PAYPvhgDytXngESiiBPT0ccHKzS775SQQohIYQQIrc7MgYur8v4+ylQBUq0xc8viJ49txIQEGrY1LVrBRYufAtn5+SvAs8oUggJIYQQuV34f6lrV7AGdPcjYfSO6eLiYeq0I3zxxe/Exyf0Ajk4WLFgQWt69qyMTpe2474OKYSEEEKI3Co2ImHcT9yTxFjvs2BmnrStzhycS4EubTPvPHjwhDZtfsTP76YhVq+eJ2vWdKBYMec0HTM9SCEkhBBC5FRKJczfk5yQc/BjfeMiCBIGMydXCL2mvHltsLBIKKLMzXVMnNiYceMaGmJakUJICCGEyInu/AXbO8Ljm69u+0yewmnu8XkVc3MzVq/uwDvvbGTBgtbUqVM4Q+7HVFIICSGEEDnRhZWpL4LylQPPJlChL6TTOJ3DhwOxtbWkVi0PQ6xo0bz8889ATcYCpUQKISGEECKreHIf/KZAWMDrH+v+2cTfC1QFS/vk2xVpCvU+T7cCKDY2nkmTDvL118coVsyZ06cH4eBgbdielYogkEJICCGE0N7VbRB0EE7OzZjjv70B8pXOmGM/x98/hO7dt3DyZMJ6YQEBoSxc+A//+1/9DL/vtJJCSAghhMgs8bEQsBMi7ybGHl6GU/My7j6LvZlwtVcGUkqxdOlJPvpoL1FRcQBYWpoxdWozRo+ul6H3/bqkEBJCCCEyi9/ncHzqq9vZOEO/y2Bm+Xr3pzMDa6fXO8Yr3L8fycCBO9i2zd8QK1MmP+vWdaR6dfcMve/0IIWQEEIIkVnunXz59vpfgJdPwgzM5pm71ERa7Nt3lb59txEc/NgQGzzYm2++8cHO7jWLuEwihZAQQgihhebfGw9gdqkABb21y8dEd+8+pn37DURHJ5wKc3GxY/nytrRpU0bjzEwjhZAQQgihhbLdEk6BZVMFC+bhq6+a89FH+/DxKYGvb3vc3PJonZbJpBASQgghMsKJOXBpDejjE2Nh1zRL53Xp9Yr4eD2WlomzTo8YUZvChR3p0KEcZmZZ67L41JJCSAghhEhvT0Lg8OiUl7fQmb3+QOhMdOdOBH37bqNq1YJ8/fUbhriZmY6OHctrmNnrk0JICCGESG+x4c8VQTrjgc9mllBtBFhlj9NI27Zdpn//7Tx4EMWvv17Dx6ckzZoV0zqtdCOFkBBCCJFe4mMhcB+E/psYK/suvLVWu5zSKDIyltGjf2Hx4hOGWMGC2aN4M4UUQkIIIUR6+fX9hDW+srkTJ27TvfsWrlx5YIi1a1eGH35oi4uLnYaZpT8phIQQQoj0cvvPpDHXapmfRxrFx+uZNesPPvvsIHFxCaf27OwsmTPHhwEDqme5dcLSgxRCQgghRHqzsIFGs8DBE4q31jqbVAkJeULnzps4dCjQEPP2dmfduo6ULp1fu8QymBRCQgghRHozt4Fqw7TOwiROTtY8fhwLJCxEP2ZMAyZPboKVlfkr9szezLROQAghhBDas7Q0Z+3adyhXzoWDB/swbVrzHF8EgfQICSGEELmSn18QdnaWVKniZoiVLp2f8+eHZtvJEdNCeoSEEEKIXCQuTs+UKYdo2HAF7777E0+ePDXanpuKIJBCSAghhMg1AgJCadRoBZMnHyY+XnHpUgjff/+31mlpSk6NCSGEEKYIC4S46OS3xcdkaiqppZRi9eqzDB++m4iIhAHR5uY6Jk1qzEcf1dE4O21JISSEEEIkRylAGcf29YcLvlpkk2ahoVEMHryLjRsvGGIlSjizZs071KlTWMPMsgYphIQQQogXRT2EzS3g3qm07e9YNH3zSaNDhwLp1WsrN2+GG2L9+lVl7txWODhYa5hZ1iGFkBBCCPHMXzPgwgp4ePnVbSv0TT5uaQ+V30/XtNLizp0IfHzWEBsbD4Czsw2LF79N584VNM4sa5FCSAghhACIDoWjY59bNf45heol/m6TD+pOArcamZdbGri7OzBpUmPGj/+Npk29WLWqA4ULO2qdVpYjhZAQQggB8PRJYhFkZglWjuBWE9puTujlyeKUUuj1CnPzxAvCP/20Pp6ejvToUTnXXRafWlIICSGEyN2ePoFrOyAsIDFWom1CAZRN3L8fycCBO6hWzY1Jk5oY4ubmZvTqVUW7xLIBKYSEEELkTuFB8Ogq7HsPwgO1zibN9u27St++2wgOfszOnVdo2bIEdet6ap1WtiGFkBBCiJxNKXhyD/RxibGg32BP75T3ca+d8Xm9pujoOMaO3c+cOccNMWdnW8M8QSJ1pBASQgiRMz2NhIur4dR8eHDh1e0BWvlCHg8o0ixDU3td587dpUePLZw7d88Q8/Epga9ve9zc8miYWfYjhZAQQoicIfYxbGsHd/6/hyQ+FvRPX74PQKmOUKAKlOsBeYtnbI6vSa9XfPfdcT79dD8xMQmXxVtbmzNjxhsMH15LBkSngRRCQgghcobre+DGb8lvc6sFDi+Mm9HpwKsVVOqf8bmlgwcPntCjxxb27btmiFWq5Mq6dR2pWNFVw8yyNymEhBBCZD+hV+HEtxD9MDEWfj3xd3t3sHVJKICqDoOC1TI/x3Rmb2/FrVsRhtsjR9Zh2rTm2NjIR/nrkGdPCCFE9vP7/+Dq1pS315ucJWZ3Tk82NhasW/cO7dqtZ9Git2nZsoTWKeUIUggJIYTIfh7fTHmbXUEo1jrzcskgJ07cxt7eirJlXQyxSpUKcuXKCCwszF6ypzCFFEJCCCGyj6gHEHY94YowAHQwIMC4TZ5CYG6V6amll/h4PbNm/cFnnx2kYkVX/vyzP9bWiR/XUgSlLymEhBBCZA93/oINjSA+JjGm04GTl2YppbegoDB69drK4cP/AXD6dDDff/83I0fW1TiznEsKISGEENnD9T3GRRBA3pwzTmbjxgsMGrSTR4+igYQab8yYBgwbVkvjzHI2KYSEEEJkXUrBgeEJA6NjwxPjxdtAvjJQ/iWzQ2cT4eExfPDBHlauPGOIeXo6snp1Bxo39tIusVxCCiEhhBBZQ3gQHBsP4TcSYw8uQtT9pG1rj4VC2f90kZ9fED17biUgINQQ69q1AgsXvoWzs62GmeUeUggJIYTQjlJwYSXc/gPOLX11e8eiUPSNbLEW2KvcuhVOkyYriY1NmCHawcGKBQta07NnZXQ6mSE6s0ghJIQQIvOF34CrP8Oto3Bl06vbO3hC+x3gWiXDU8ssHh6OfPxxXaZNO0q9ep6sWdOBYsWctU4r15FCSAghROZQCu78mbAS/Lb2KbdzqQjd/wLdc5eJm1sa386GlFIARr09kyc3oUgRJ/r3ry6XxWtECiEhhBCZ44+J8OeXKW9vuQwK1YF8ZbN90fOi0NAoBg/eRc2ahfj443qGuKWlOYMG1dAwMyGFkBBCiMwRdChpzMETmswGl8qQr3RmZ5QpDh0KpFevrdy8Gc7WrZdo3rwY1aq5a52W+H9SCAkhhMhYz06JPX81WL3PE2aALtMVrPJol1sGio2NZ+LEg8yYcYz/PytGnjxWBAc/1jYxYUQKISGEEOnv2ATw3wToIS4aIoISt1naQ53xOe701/P8/UPo3n0LJ0/eMcSaNvVi1aoOFC7sqGFm4kVSCAkhhDCNUvDPLLj5e/Lbw67DgwvJb7PJD41n5tgiSCnFkiUnGDlyH1FRcQBYWpoxdWozRo+uh5mZXBaf1UghJIQQInVCzsOltXDzCNw+lvr9bJzBuQxUHgRlu4GFTcblqKGHD6Po128b27f7G2JlyuRn3bqOVK8uY4KyKimEhBBCvJrSw9a3Ify/1O9jky9h7h+Peq9umwNYW5tz+XKI4faQITWYNasldnaWGmYlXkUKISGEEK+mj0u+COr4C7hWS34fKwewsM7YvLIQe3sr1q59h3bt1rNo0Vu0aVNG65REKkghJIQQwjQFqkDzBeBcGuwKaJ2NZs6du4u9vRXFiyfOBl2jRiECAj7A2lo+XrOLnDlaTQghRMaxdgKP+rm2CNLrFXPn/knNmkvp0WMLcXF6o+1SBGUvUggJIYQQqXTnTgRvvrmWjz7aR0xMPH/+eZOFC//WOi3xGjQvhBYsWICXlxc2NjbUrl2bv/7666Xt58yZQ5kyZbC1tcXT05ORI0cSHR2dSdkKIUQuEBsBe9+DNTUSf9bV0TorzW3bdplKlRbyyy/XDLGRI+swcKC3hlmJ16Vp/92GDRsYNWoUixYtonbt2syZMwcfHx/8/f1xdXVN0n7dunWMGTOG5cuXU69ePa5cuULfvn3R6XTMnj1bg0cghBDZWPxTuLoVru+B+JjE+OUfX76fhW3G5pXFREbGMnr0LyxefMIQc3fPg69ve1q2LKFhZiI96NSz5XA1ULt2bWrWrMn8+fMB0Ov1eHp6MmLECMaMGZOk/fDhw7l06RIHDhwwxEaPHs3x48c5evRoqu4zPDwcJycnwsLCcHSU2T2FEDlQbARcWgeRwSm3efo4oeB5fOvVxzN77juzbQFouRSKv/X6eWYDJ07cpnv3LVy58sAQa9++LEuXtsHFxU7DzHKfjPr81qxHKDY2lhMnTjB27FhDzMzMjBYtWuDn55fsPvXq1WPNmjX89ddf1KpVi4CAAHbv3k2vXr1SvJ+YmBhiYhK/6YSHh6ffgxBCiIwWcTNhAkNT/P4xPL79+vft4Am9z4JN3tc/VjYUFBRGvXrLiY2NB8DOzpK5c1vRv381dDqZITqn0KwQCgkJIT4+noIFCxrFCxYsyOXLl5Pdp3v37oSEhNCgQQOUUsTFxTF48GDGjRuX4v1Mnz6dKVOmpGvuQgiRKaIewPLSEBeVMcfXmUGJtlBlKDiXTLrdwdO4NyiX8fR0YujQGsyZcxxvb3fWretI6dL5tU5LpLNs9Q4/dOgQ06ZN4/vvv6d27dpcvXqVDz/8kC+++IIJEyYku8/YsWMZNWqU4XZ4eDienp6ZlbIQQqRNXHTCiu2vWwR12Ak68+S3uVQEh8Kvd/wcRill1NszfXoLihRxYtiwWlhZpfA8imxNs0LIxcUFc3Nz7t69axS/e/cubm5uye4zYcIEevXqxYABAwCoVKkSkZGRvP/++4wfPx4zs6QXwVlbW2NtnXtmNhVC5ADHJsDx6aDiE2NF34Dib6f+GGaWUKKNFDqpFB4ewwcf7KFWLQ+GDq1piNvYWDByZF0NMxMZTbNCyMrKCm9vbw4cOED79u2BhMHSBw4cYPjw4cnu8+TJkyTFjrl5QoWu4ZhvIYQwjd/ncG4ZqLjktyc3vqf4W1D9g4zNK5fy8wuiR48tXL/+iA0bLtC0qRflyuXOySJzI01PjY0aNYo+ffpQo0YNatWqxZw5c4iMjKRfv34A9O7dGw8PD6ZPnw5AmzZtmD17NtWqVTOcGpswYQJt2rQxFERCCJFlRIfCkbEQ6m8cu38m9cco0gLylYXyfdI/v1wuLk7Pl1/+zpdf/k58fMKXaUtLM65dC5VCKBfRtBDq2rUr9+/fZ+LEiQQHB1O1alX27t1rGEB948YNox6gzz77DJ1Ox2effcatW7coUKAAbdq0YerUqVo9BCGESNmFlXB28cvbOKQwZtEmHzSaAV4t0z8vQUBAKD17bsHP76YhVq+eJ2vWdKBYMeeX7ClyGk3nEdKCzCMkhMhw98/Bjf0QsAtuHEi+ja0LvPUjFG2RubnlckopVq06w/Dhe3j8OBYAc3MdEyc2Zty4hlhYaL7ggkhBjptHSAghcqQnIbC2BsTHGsff2QOeTRJvm1mCmZzSz0yPHkUzaNBONm68YIgVL+7M2rXvUKeODCrPraQQEkKI9BTqn7QIsrAD99pgYaNNTgIAnQ6OH088Fda3b1XmzWuFg4NcWZybSR+gEEJklOJvw9sbYcA1sJFxJ1pzcrJh9eoOuLjYsXFjJ1asaCdFkJAeISGEQCnY0TlhAdLXHjb53P7OZaBM59c8nkgrf/8Q7O2tKFw4cTxJw4ZFCQz8EHt7Kw0zE1mJ9AgJIXKvf7fCam+YbQb//gRKT0Ih8zo/z7GV5Ri0oJRi8eJ/qFZtMb17b0WvN35dpAgSz5MeISFEzqcU/D0Tbh8zjl/bnnx7t1qvf5/OpaDie69/HGGS+/cjGTBgB9u3J8zddPBgIEuWnGDw4BoaZyayKimEhBA5y5MQOL8cou4nxm4dgTvHX76fdV7IWwJar4V8ZTI0RZEx9u27St++2wgOfmyIDR7sTe/eVTTMSmR1UggJIbI/pRIKnZDz8OtA0/Y1s4CGX0GN0RmTm8hw0dFxjB27nzlzEotdFxc7li9vS5s2UtSKl5NCSAiR/d34DTancmLCzgcSVl1/xsIWrBwyJi+R4c6du0uPHls4d+6eIebjUwJf3/a4ueXRMDORXUghJITIvpSCqBAIOpj89q6/A7rE2/nKgJ2sIZVT/PffI2rWXEpMTDwA1tbmzJjxBsOH18LMTPeKvYVIIIWQECJ7Ugo2NYOgQ8bxKkOhUN2E1dpl7p4crWjRvPTuXYWlS09SqZIr69Z1pGJFV63TEtmMFEJCiOzp4eWkRRBAhT7gng5XfYls4dtvfSha1InRo+thYyMfacJ0Mo+QECJ70scl/u5QBEq0gyazwa2mdjmJDBMZGcvgwTvx9T1tFLe3t2L8+EZSBIk0k3eOECJ7uX8OznwP4TcSY14+0HKJdjmJDHXixG169NiCv/8D1q49R8OGRShRIp/WaYkcQgohIUT28usguONnHJNV3HOk+Hg9s2b9wWefHSQuTg+AXq84f/6eFEIi3UghJITIWp5GQuCvEB+T/PZQf+PbFnZQqlPG5yUyVVBQGL16beXw4f8MMW9vd9at60jp0rJ0iUg/UggJIbKWjU0h+O9Xt7MrCO8eA9sCYO346vYi29i48QKDBu3k0aNoAHQ6GDOmAZMnN8HKSnr/RPqSQkgIkTXo4xJ6g1JTBAEU9E5YEkPkGBERMYwYsYeVK88YYp6ejqxe3YHGjb20S0zkaFIICSG09+/PsK8vxIQlxpyKQbUPkm9v5QCl3smMzEQmiomJ55dfrhlud+1agYUL38LZ2VbDrEROJ4WQEEJ755YaF0EArtXB+yNN0hHacHGxY+XK9nTqtIn589+kZ8/K6HQyQ7TIWFIICSEy17llcHk9oE+M3TuV+HvhRmDvDnUmZHpqInMFBIRib29JwYKJa4K98UYJ/vvvI/LmtdEwM5GbSCEkhMg8T+4nXP6u4lNooIN39oClXaamJTKXUopVq84wfPgeGjUqys6d7xr1/EgRJDKTFEJCiIyhj4fru+FR4pgPntxLuQjSmSWsEyZFUI4WGhrF4MG72LjxAgC7d//LihWnee+9ahpnJnIrKYSEEBnjgi/8MiDl7WW7Q8ulibd1ZmAhPQE52aFDgfTqtZWbN8MNsb59q9K5c3kNsxK5nRRCQoiMcf/My7d7Npben1wiNjaeiRMPMmPGMZRKiDk727B48dt07lxB2+RErieFkBAi4zWYCk7PzfnjWATc62iXj8g0ly+H0KPHFk6evGOINW3qxapVHShcWCbCFNqTQkgIkfGKviGrwudCAQGhVK++mKioOAAsLc2YOrUZo0fXw8xMLosXWYOZ1gkIIYTImYoXd+add8oBUKZMfv78cwCffFJfiiCRpUiPkBDi9d04CGcXQ1x0YizkrHb5iCxjwYLWFC3qxPjxjbCzs9Q6HSGSeK1CKDo6GhsbucpDiFxvTy94fCvl7Tr5zpXTRUfHMXbsfurV8zQaAO3kZMPUqc01zEyIlzP51Jher+eLL77Aw8ODPHnyEBAQAMCECRNYtmxZuicohMgGHt9OeVuhelCgcublIjLduXN3qVVrKXPmHOf993cSFBT26p2EyCJMLoS+/PJLfH19mTFjBlZWVoZ4xYoV+eGHH9I1OSFENuNaDQYHJ/4MuQvdjoKZudaZiQyg1yvmzv2TmjWXcu7cPQCiop7yzz8vKYyFyGJM7q9etWoVS5YsoXnz5gwePNgQr1KlCpcvX07X5IQQ2YyZJdgX1DoLkQnu3ImgX79t7NuXOHN4pUqurFvXkYoVXTXMTAjTmFwI3bp1i5IlSyaJ6/V6nj59mi5JCSGEyLq2bbvMgAE7CAl5YoiNHFmHadOaY2Mj48FE9mLyO7Z8+fIcOXKEokWLGsU3b95MtWqyVowQQuRUkZGxjB79C4sXnzDE3N3z4OvbnpYtS7xkTyGyLpMLoYkTJ9KnTx9u3bqFXq9ny5Yt+Pv7s2rVKnbu3JkROQohsqIHl+DIGIgMBpTW2YhMEB4ew08/XTLcbt++LEuXtsHFRZZKEdmXyYVQu3bt2LFjB59//jn29vZMnDiR6tWrs2PHDt54442MyFEIobXre8F/g/HK8RdXJ20ni6bmaO7uDvzwQxu6d9/C3Lmt6N+/GjqdTI4osjedUipXfZULDw/HycmJsLAwHB1lnRshALj9J9zYn/y22Aj4e8arj2HrAi0WQemO6Zub0ExQUBj29lbky2drFL93LxJXV3uNshK5VUZ9fpvcI1S8eHH+/vtv8ufPbxR/9OgR1atXN8wrJITI4uKi4b/98OgqHBqZ9uMUfxs67Ei/vESWsHHjBQYN2kmLFsXZuLGTUc+PFEEiJzG5EAoMDCQ+Pj5JPCYmhlu3XjKzrBAia9n6Ntw4YNo+NT6Gyu8n3jazBMeiKbcX2U54eAwffLCHlSvPALB580XWrTtHjx4yKabImVJdCG3fvt3w+759+3BycjLcjo+P58CBA3h5eaVrckKIDHT7WNJY+V5Qpmvy7fMUBtcqGZuT0JSfXxA9emzh+vVHhljXrhVo3bqUdkkJkcFSXQi1b98eAJ1OR58+fYy2WVpa4uXlxTfffJOuyQkhMoG9e0JPT74yUOxN0Jk84bzI5uLi9Eyd+jtffPE78fEJw0YdHKxYsKA1PXtWlgHRIkdLdSGk1+sBKFasGH///TcuLi4ZlpQQIhPZuUKNUVpnITQSEBBKz55b8PO7aYjVq+fJmjUdKFbMWcPMhMgcJo8Run79ekbkIYQQIpNdvfqQ6tUXExERC4C5uY6JExszblxDLCykZ1DkDmmaCz0yMpLDhw9z48YNYmNjjbZ98MEH6ZKYEEKIjFWihDPNmxfn558vU7y4M2vXvkOdOoW1TkuITGVyIXTq1Clat27NkydPiIyMJF++fISEhGBnZ4erq6sUQkIIkU3odDqWLm1D0aJOfPFFUxwcrLVOSYhMZ3Lf58iRI2nTpg2hoaHY2try559/8t9//+Ht7c2sWbMyIkchhBCvKTY2njFj9rNr1xWjuIuLHXPmtJIiSORaJhdCp0+fZvTo0ZiZmWFubk5MTAyenp7MmDGDcePGZUSOQoj0FBMGYddB6bXORGQSf/8Q6tZdxtdfH+O997Zz9+5jrVMSIsswuRCytLTEzCxhN1dXV27cuAGAk5MTQUFB6ZudECJ9/bsFFhaEH4pDfOyr24tsTSnF4sX/UK3aYk6evANAaGgUx47J/9VCPGPyGKFq1arx999/U6pUKRo3bszEiRMJCQlh9erVVKxYMSNyFEKkl8vrIT7GOObgqU0uIkPdvx/JgAE72L7d3xArUyY/69Z1pHp1dw0zEyJrMbkQmjZtGhEREQBMnTqV3r17M2TIEEqVKsWyZcvSPUEhxGuKi4b9QyD4b4i4kRgv0Q7yeID3R5qlJjLGvn1X6dt3G8HBiafAhgypwaxZLbGzs9QwMyGyHll9Xoic6up2uLQGrmxKZqMOht4H2/zJbBPZVXR0HGPH7mfOnOOGmIuLHcuXt6VNmzIaZibE68syq8+n5OTJk0ycOJGdO3em1yGFEKkR/xQurYWHlxNjcU/g1HfJt7fOC5UGShGUA927F8mKFacNt1u1KsmKFe1wc8ujXVJCZHEmFUL79u3j119/xcrKigEDBlC8eHEuX77MmDFj2LFjBz4+PhmVpxAiJf7rYV+/V7dz8IQef4G9W8bnJDRRpIgTCxe+Rb9+25g58w2GD68l64QJ8QqpLoSWLVvGwIEDyZcvH6Ghofzwww/Mnj2bESNG0LVrV86fP0+5cuUyMlchxPOeRsG9U/Df/pe3qzsZKr8PdgXALN06gUUWcOdOBPb2Vjg6Js4B9O67lWjQoAienk4aZiZE9pHqMUKVK1emV69efPLJJ/z000907tyZOnXqsHHjRgoXzj5TsssYIZEjPI2C5SXh8W3jeONZUNA78bZ9IchXOnNzE5li27bLDBiwg7feKoWvb3ut0xEiw2XU53eqCyF7e3suXLiAl5cXSimsra05ePAg9evXT7dkMoMUQiJHuO0HP9Z7IaiDAQHg5KVFRiKTREbGMnr0LyxefMIQ27y5Mx07ltcwKyEynuaDpaOiorCzswMS1qextrbG3V3mohAiU51dCn5TEmaHfsa1Ong2Aa+WUgTlcCdO3KZ79y1cufLAEGvfviyNG3tpl5QQ2ZxJAwZ++OEH8uRJuPogLi4OX19fXFxcjNrIoqtCZCC/yUlPh5VsB3UnapKOyBzx8XpmzfqDzz47SFxcwtIodnaWzJ3biv79q8mAaCFeQ6pPjXl5eb3yj02n0xEQEGBSAgsWLGDmzJkEBwdTpUoVvvvuO2rVqpVi+0ePHjF+/Hi2bNnCw4cPKVq0KHPmzKF169apuj85NSayBaXg7OKEU2DPu7wO9HFgZpnQ+5O3FLyxGByyzzg9YZqgoDB69drK4cP/GWLe3u6sW9eR0qVlCgSRe2h+aiwwMDDd7vSZDRs2MGrUKBYtWkTt2rWZM2cOPj4++Pv74+rqmqR9bGwsb7zxBq6urmzevBkPDw/+++8/8ubNm+65CaGpW0cTZoNOiXNp6Hs+8/IRmrhy5QG1a//Ao0fRAOh0MGZMAyZPboKVlbnG2QmRM2h6Le3s2bMZOHAg/folzIGyaNEidu3axfLlyxkzZkyS9suXL+fhw4f88ccfWFomTBPv5eWVmSkLkTmeXwojCR2U655pqQjtlCyZj9q1Pdi37xqeno6sXt1BxgMJkc5MXn0+vcTGxnLixAlatGiRmIyZGS1atMDPzy/ZfbZv307dunUZNmwYBQsWpGLFikybNo34+PjMSluIzFdnAvTzT/wZfBtqj9M6K5EJzMx0rFjRjvffr86ZM4OlCBIiA2jWIxQSEkJ8fDwFCxY0ihcsWJDLly8nu09AQAC//fYbPXr0YPfu3Vy9epWhQ4fy9OlTJk2alOw+MTExxMQkrrYdHh6efg9CiLSIj00YA/TSNk8Tf7dzlbmAcoG4OD1Tp/5Ow4ZFadasmCHu7u7A4sVtNMxMiJwtW00zq9frcXV1ZcmSJZibm+Pt7c2tW7eYOXNmioXQ9OnTmTJlSiZnKkQylIKf20DALq0zEVlMQEAoPXtuwc/vJh4eDpw9O4R8+Wy1TkuIXEGzU2MuLi6Ym5tz9+5do/jdu3dxc0t+LSR3d3dKly6NuXniIMFy5coRHBxMbGxssvuMHTuWsLAww09QUFD6PQghTBFyPm1FkG2B9M9FZAlKKVatOkPVqovw87sJQHDwYw4evK5xZkLkHmnqEbp27RorVqzg2rVrzJ07F1dXV/bs2UORIkWoUKFCqo5hZWWFt7c3Bw4coH379kBCj8+BAwcYPnx4svvUr1+fdevWodfrMTNLqOGuXLmCu7s7VlZWye5jbW2NtbV1stuEyBQ3j8CJbyHyufl/8hRKuPT9VVyrJcwTJHKc0NAoBg/excaNFwyx4sWdWbv2HerUkekQhMgsJhdChw8f5s0336R+/fr8/vvvTJ06FVdXV86cOcOyZcvYvHlzqo81atQo+vTpQ40aNahVqxZz5swhMjLScBVZ79698fDwYPr06QAMGTKE+fPn8+GHHzJixAj+/fdfpk2bJpM4iqztwDAIOWccK9MVmszWJh+huUOHAunVays3byaOWezbtyrz5rXCwUG+uAmRmUwuhMaMGcOXX37JqFGjcHBwMMSbNWvG/PnzTTpW165duX//PhMnTiQ4OJiqVauyd+9ewwDqGzduGHp+ADw9Pdm3bx8jR46kcuXKeHh48OGHH/Lpp5+a+jCEyDxPjE//Yu8GZeXy99woNjaeSZMO8vXXxwzj5fPmtWHJkrfp3Dl1velCiPSV6pmln8mTJw/nzp2jWLFiODg4cObMGYoXL05gYCBly5YlOjo6o3JNFzKztMh0CwvCk3vgWBT6nAMLWzDLVtcpiHQSEBBK5coLiYxMuCqwSRMvVq1qj6enk8aZCZH1ZdTnt8mDpfPmzcudO3eSxE+dOoWHh0e6JCVEjqQzAysHKYJyseLFnZk7txWWlmbMmNGCAwd6SxEkhMZM/h+5W7dufPrpp2zatAmdToder+fYsWN8/PHH9O7dOyNyFEKIbCkk5Al2dpbY2VkaYu+9V43Gjb0oWTKfhpkJIZ4xuUdo2rRplC1bFk9PTx4/fkz58uVp1KgR9erV47PPPsuIHIUQItvZt+8qlSot5JNPfjGK63Q6KYKEyEJMHiP0zI0bNzh//jyPHz+mWrVqlCqVikuBswAZIyQy3bMxQk7FYECA1tmIDBYdHcfYsfuZM+e4IbZz57u89ZbMDi7E69B89flnjh49SoMGDShSpAhFihRJt0SEyLYCf4ULKxKWzkhOzKNMTUdo59y5u/TosYVz5+4ZYq1alcTbu5CGWQkhXsbkQqhZs2Z4eHjw7rvv0rNnT8qXL58ReQmRPejjYNe7EP3g1W1lkHSOpdcrvvvuOJ9+up+YmIRFoK2tzZk58w2GD6+FTqfTOEMhREpMHiN0+/ZtRo8ezeHDh6lYsSJVq1Zl5syZ3Lx5MyPyEyJri49NXRGkM4MK72V8PiLT3bkTQevWa/noo32GIqhSJVf++ed9RoyoLUWQEFlcmscIAVy/fp1169bx448/cvnyZRo1asRvv/2WnvmlOxkjJNLV0ycwzz7h90L14O2NybeztAMb58zLS2QKf/8QGjRYQUjIE0Ns5Mg6TJvWHBsb6QEUIj1lmTFCzytWrBhjxoyhSpUqTJgwgcOHD6dXXkJkPxY24CBzaeUmJUvmo3z5Avz++3+4u+fB17c9LVuW0DotIYQJ0rz6/LFjxxg6dCju7u50796dihUrsmtXGlbWFkKIbMrc3IzVqzvQq1dlzp4dIkWQENmQyT1CY8eOZf369dy+fZs33niDuXPn0q5dO+zs7DIiPyG0cWkdHB0PsRGvaJjmM8sim4mP1zNr1h80bFiUevU8DfEiRZxYtaqDhpkJIV6HyYXQ77//zieffEKXLl1wcXHJiJyE0N6fX0B4oGn7WMlSCTlVUFAYvXpt5fDh/yhWLC+nTw/G0VFWiRciJzC5EDp27FhG5CGEdi6shKBDxrHwGwn/6szAqfirj2HnCrU+Te/MRBawceMFBg3ayaNHCQtKBwY+4pdfrtGpk0wdIkROkKpCaPv27bz55ptYWlqyffv2l7Zt27ZtuiQmRKa4dwb29k15u30h6P9vpqUjso7w8Bg++GAPK1eeMcQ8PR1ZvboDjRt7aZeYECJdpaoQat++PcHBwbi6utK+ffsU2+l0OuLj49MrNyEyXsSNl28v1yNz8hBZip9fED17biUgINQQ69q1AgsXvoWzs62GmQkh0luqCiG9Xp/s70JkOeE3IDbchPb/Jf5e/SOoPCjxtlUecCicbqmJrC8uTs/Uqb/zxRe/Ex+fMBDewcGKBQta07NnZZkcUYgcyOQxQqtWraJr165YWxsPFIyNjWX9+vX07t073ZITIlWUHvTx8MdE+OurtB/HrgDkL5t+eYls59q1h0yfftRQBNWr58maNR0oVkwmwxQipzJ5HqF+/foRFhaWJB4REUG/fv3SJSkhUu3eGVhaDOZYvV4RBODolS4pieyrTBkXZsx4A3NzHVOmNOHw4b5SBAmRw5ncI6SUSrZ7+ObNmzg5yeXDIpNdWpv8OJ+K/U07jktFKN0pfXIS2UZoaBR2dpZYWyf+VzhiRC2aNStGxYquGmYmhMgsqS6EqlWrhk6nQ6fT0bx5cywsEneNj4/n+vXrtGrVKkOSFCJF8TGJvxeoAvbuUONjKNpcu5xEtnDoUCC9em2lW7cKzJzZ0hDX6XRSBAmRi6S6EHp2tdjp06fx8fEhT548hm1WVlZ4eXnRsWPHdE9QiFR7YzG419Y6C5HFxcbGM2nSQb7++hhKwaxZfrRqVZLmzVMxX5QQIsdJdSE0adIkALy8vOjatSs2NjYZlpQQrxRyIWESxPtnXtVSCAN//xC6d9/CyZN3DLGmTb0oU0ZmyRcitzJ5jFCfPn0yIg8hUu/xbVhVBZTMWSVSRynFkiUnGDlyH1FRcQBYWpoxdWozRo+uh5mZXBYvRG6VqkIoX758XLlyBRcXF5ydnV86l8bDhw/TLTkhkoi8Czd+S1oEWTlAflnyQCR1/34kAwbsYPt2f0OsTJn8rFvXkerV3TXMTAiRFaSqEPr2229xcHAw/C6TiglN7B8CZxYZx0q2T7jay7NpQjEkxHP8/UNo0mQlwcGPDbEhQ2owa1ZL7OwsNcxMCJFV6JRSSuskMlN4eDhOTk6EhYXh6OiodTrCFHOsIT7WOPbGEqg8UJt8RJb39Gk89esv5++/b+PiYsfy5W1p06aM1mkJIdIgoz6/TR4jdPLkSSwtLalUqRIA27ZtY8WKFZQvX57JkydjZWWVbsmJXOrpEzgwHO6dMI4/K4JsnKHIG5C/HJTrnvn5iWzD0tKctWvfYcyYAyxY0Bo3tzyv3kkIkauYPLP0oEGDuHLlCgABAQF07doVOzs7Nm3axP/+9790T1DkQtd2wIUVcP+s8c8z+StCmw1QbzJY2muWpsha9HrFvHnHOXXqjlG8VKn8/PRTFymChBDJMrkQunLlClWrVgVg06ZNNG7cmHXr1uHr68tPP/2U3vmJ3CgmccVvzCzBwjbxJ09hqDFau9xElnTnTgStW6/lww/30r37Fp48eap1SkKIbCJNS2w8W4F+//79vP322wB4enoSEhKSvtkJ0XIpVJApG0TKtm27zIABOwgJeQLA5csh7NnzLx07ylWEQohXM7kQqlGjBl9++SUtWrTg8OHDLFy4EIDr169TsGDBdE9QCCGSExkZy+jRv7B4ceJYMnf3PPj6tqdlyxIaZiaEyE5MLoTmzJlDjx49+Pnnnxk/fjwlS5YEYPPmzdSrVy/dExRCiBedOHGb7t23cOXKA0OsffuyLF3aBhcXOw0zE0JkNyYXQpUrV+bcuXNJ4jNnzsTc3DxdkhJCiOTEx+uZOfMPJkw4SFxcwil6OztL5szxYcCA6jLHmRDCZCYXQs+cOHGCS5cuAVC+fHmqV6+ebkmJXOrIuISrxWIfv7qtyJUuXw4xKoK8vd1Zt64jpUvn1zgzIUR2ZXIhdO/ePbp27crhw4fJmzcvAI8ePaJp06asX7+eAgUKpHeOIjd4ch/+mp40biWTXopEFSq48sUXTRk37gBjxjRg8uQmWFlJT7QQIu1Mvnx+xIgRPH78mAsXLvDw4UMePnzI+fPnCQ8P54MPPsiIHEVuEBeV+LuFHTgVh7LvQrE3tctJaC4iIsbQ+/PMJ5/U46+/BjJtWnMpgoQQr83kHqG9e/eyf/9+ypUrZ4iVL1+eBQsW0LJly3RNTuQC0aHgvxHCrifGir+dMGGiyNX8/ILo2XMrvXpVZvLkJoa4ubkZNWoU0i4xIUSOYnIhpNfrsbRMulihpaWlYX4hIVJt/xDwl6JHJIqL0zN16u988cXvxMcrvvjid1q2LEG9ep5apyaEyIFMPjXWrFkzPvzwQ27fvm2I3bp1i5EjR9K8efN0TU7kAiHnk8Y8G2d+HiJLCAgIpVGjFUyefJj4+IT1oOvUKYy7uyyPIYTIGCb3CM2fP5+2bdvi5eWFp2fCN7SgoCAqVqzImjVr0j1BkUMpBUoPJHzYYW4Nb60Hh8JQ0FvT1ETmU0qxevVZhg/fTUREwuK65uY6Jk5szLhxDbGwMPk7mxBCpIrJhZCnpycnT57kwIEDhsvny5UrR4sWLdI9OZFDPbgEW9+GsIDEmJkllGqvWUpCO6GhUQwZsosNGy4YYsWLO7N27TvUqVNYw8yEELmBSYXQhg0b2L59O7GxsTRv3pwRI0ZkVF4iJ7u8zrgIArB10SYXoSl//xDeeGM1QUHhhljfvlWZN68VDg7WGmYmhMgtUl0ILVy4kGHDhlGqVClsbW3ZsmUL165dY+bMmRmZn8iJ4mISf3epCPbu4D1Su3yEZooWzUvevDYEBYXj7GzD4sVv07lzBa3TEkLkIqk+8T5//nwmTZqEv78/p0+fZuXKlXz//fcZmZvIDZovgE6/yHxBuZSNjQXr1nWkdetSnD07RIogIUSmS3UhFBAQQJ8+fQy3u3fvTlxcHHfu3MmQxIQQOYtSiiVLTnDx4n2jeMWKruza1Z3ChWUWcSFE5kv1qbGYmBjs7e0Nt83MzLCysiIqKuolewnxnJhwCP4bwv/TOhORye7fj2TAgB1s3+5PlSoFOX58ANbWaV7qUAgh0o1J/xNNmDABOzs7w+3Y2FimTp2Kk5OTITZ79uz0y07kHLGP4YfiEP1A60xEJtu37yp9+24jODhhMd0zZ+6yc+cVOnYsr3FmQghhQiHUqFEj/P39jWL16tUjICDx6h+dTpd+mYmc5e6JpEWQzhzyltQmH5HhoqPjGDNmP3PnHjfEXFzsWL68LW3alNEwMyGESJTqQujQoUMZmIbIUW79AXv7wONbiTEVn/i7e10o2hyKtoQ8smZUTnTu3F26d9/C+fP3DDEfnxL4+rbHzU1miRZCZB1ykl6kv7OL4NHVlLeXbAe1Ps28fESm0esV3313nE8/3U9MTELxa21tzowZbzB8eC3MzKTXWAiRtUghJNJf3HMD6POVBXOrxNvOZaBC30xPSWSOc+fuMmrUL+j1CUunVKrkyrp1HalY0VXjzIQQInlSCImM1enXhPXDRK5QpYob48Y14MsvjzByZB2mTWuOjY38NyOEyLrkfyiRfh5chrv/yOXxuciTJ0+xsbEwOuU1cWJjWrYsQcOGRTXMTAghUkeWdBbp48FF8C0He3olzBUkcrwTJ25TrdpivvnmD6O4paW5FEFCiGwjTYXQkSNH6NmzJ3Xr1uXWrYQrg1avXs3Ro0fTNTmRTcQ+hhsHk8bt3cGuYObnIzJUfLyer78+Sp06y7hy5QHjx//GyZMyw7wQInsyuRD66aef8PHxwdbWllOnThETk7CAZlhYGNOmTUv3BEUWt6c3fOcAvw1PjJXpBi0WQffjYG6pXW4i3QUFhdG8+SrGjDlAXJwegMqVC5Inj9Ur9hRCiKzJ5ELoyy+/ZNGiRSxduhRLy8QPufr163Py5Ml0TU5kUdf3wIpyMNsCLq5Our1sN6gyCBw9Mz83kWE2brxA5cqLOHw4YQyYTgdjxzbgjz/6U7p0fo2zE0KItDF5sLS/vz+NGjVKEndycuLRo0fpkZPI6v76Ch5eThr38oGC3lCsdebnJDJMeHgMH3ywh5Urzxhinp6OrF7dgcaNvbRLTAgh0oHJhZCbmxtXr17Fy8vLKH706FGKFy+eXnmJrCz2ceLvjl4Js0M3mw8Fq2mWksgY/v4htG69joCAUEOsa9cKLFr0Nnnz2miYmRBCpA+TC6GBAwfy4Ycfsnz5cnQ6Hbdv38bPz4+PP/6YCRMmZESOIqsys4SB17XOQmSgwoUdsbBIOIPu4GDFggWt6dmzsqwrKITIMUweIzRmzBi6d+9O8+bNefz4MY0aNWLAgAEMGjSIESNGpCmJBQsW4OXlhY2NDbVr1+avv/5K1X7r169Hp9PRvn37NN2vEOLl7O2tWLfuHZo08eLMmcH06lVFiiAhRI6iU0qptOwYGxvL1atXefz4MeXLlydPnrQtpLhhwwZ69+7NokWLqF27NnPmzGHTpk34+/vj6prytPyBgYE0aNCA4sWLky9fPn7++edU3V94eDhOTk6EhYXh6OiYppxzFX18wrphz79NdnRMmDfIzBJGxmqXm0hXSilWrz5L/fqelCiRL8k2KYCEEFrKqM/vNBdC6aV27drUrFmT+fPnA6DX6/H09GTEiBGMGTMm2X3i4+Np1KgR7733HkeOHOHRo0dSCKU3pYf4p7CqCoT6J99GCqEcIzQ0isGDd7Fx4wVq1/bgyJF+WFqaa52WEEIYZNTnt8ljhJo2bfrSb4a//fZbqo8VGxvLiRMnGDt2rCFmZmZGixYt8PPzS3G/zz//HFdXV/r378+RI0deeh8xMTGGuY4g4YkUr/DPN3BsgvHiqclxlNmDc4JDhwLp1WsrN28m/G0cP36LnTuv0KFDOY0zE0KIjGdyIVS1alWj20+fPuX06dOcP3+ePn36mHSskJAQ4uPjKVjQePbhggULcvlyMpdnk3B12rJlyzh9+nSq7mP69OlMmTLFpLxypQeX4MAwiAhKOBWWnOdXjbewhUr9MyU1kTFiY+OZOPEgM2YcM5z5dHa2YcmSNlIECSFyDZMLoW+//TbZ+OTJk3n8+HGy29JLREQEvXr1YunSpbi4uKRqn7FjxzJq1CjD7fDwcDw9ZaK/JE59B0HJLJNRqB7kLQmNZoC9LJeRU/j7h9C9+xajpTGaNvVi1aoOFC4sp4yFELlHuq0+37NnT2rVqsWsWbNSvY+Liwvm5ubcvXvXKH737l3c3NyStL927RqBgYG0adPGENPrE6b5t7CwwN/fnxIlShjtY21tjbW1tSkPJXeKfe6UoXVesMmXUPyU7qhZSiL9KaVYsuQEI0fuIyoqDgBLSzOmTm3G6NH1jFaRF0KI3CDdCiE/Pz9sbEybYM3Kygpvb28OHDhguARer9dz4MABhg8fnqR92bJlOXfunFHss88+IyIigrlz50pPT3rp+Q/kLfHqdiLbOXUqmMGDdxlulymTn3XrOlK9uruGWQkhhHZMLoTeeecdo9tKKe7cucM///yTpgkVR40aRZ8+fahRowa1atVizpw5REZG0q9fPwB69+6Nh4cH06dPx8bGhooVKxrtnzdvXoAkcZFKUQ/h/hmIDNY6E5EJqld3Z9SoOsye/SdDhtRg1qyW2NnJwrhCiNzL5ELIycnJ6LaZmRllypTh888/p2XLliYn0LVrV+7fv8/EiRMJDg6matWq7N271zCA+saNG5iZmTzvo0iNiJuwvPSrrw4T2VZMTBxWVuZGV3pOm9acVq1K8sYb0usnhBAmzSMUHx/PsWPHqFSpEs7OzhmZV4aReYSec2kd7O5hHLNyhMG3wdJem5xEujl37i7du29hyJAaDB1aU+t0hBDitWTU57dJXS3m5ua0bNlSVpnPiYq+AXU+gy6/SRGUzen1irlz/6RmzaWcP3+P0aN/4eLF+1qnJYQQWZLJp8YqVqxIQEAAxYoVy4h8hFaKt4HqaVsrTmQdd+5E0K/fNvbtu2aIlSqV7yV7CCFE7mby4Jsvv/ySjz/+mJ07d3Lnzh3Cw8ONfoQQ2ti27TKVKy8yKoJGjqzDX38NpHz5AhpmJoQQWVeqe4Q+//xzRo8eTevWrQFo27at0QDMZ4syxsfHp3+WQogURUbGMnr0LyxefMIQc3fPg69ve1q2lAHRQgjxMqkuhKZMmcLgwYM5eDCZ2YeFEJq4cuUBbdr8yJUrDwyx9u3LsnRpG1xc7DTMTAghsodUF0LPLi5r3LhxhiUjMonSw/1zEBagdSbiNRUsaE9sbEIvrJ2dJXPntqJ//2ovXRhZCCFEIpMGS8t/rtlcfCzEx8DGZnD3H62zEenAycmGNWs6MHr0L6xa1YHSpfNrnZIQQmQrJhVCpUuXfmUx9PDhw9dKSGSQS+vg1/fhaWTy22VJjWxh06YL1KlTGE/PxIlN69cvgp9ff/miIoQQaWBSITRlypQkM0uLbOLs4uSLoKrDwbUaePlkfk4i1cLDY/jggz2sXHmGJk282L+/F+bmiRd9ShEkhBBpY1Ih1K1bN1xdXTMqF5HeYsLhyFh4cAHunUqMF2kBedyhzkRwLqldfiJV/PyC6NlzKwEBoQAcOhTIzp1XaNeurMaZCSFE9pfqQki+cWZDl3+EM98bx8wsodMvIK9nlhcXp2fq1N/54ovfiY9PuFjBwcGKBQta07ZtGY2zE0KInMHkq8ZENhL1wrIKZhZQY7QUQdlAQEAoPXtuwc/vpiFWr54na9Z0oFix7LnOnxBCZEWpLoT0en1G5iEyWtstUPxtMLfUOhPxEkopVq8+y/Dhu4mIiAXA3FzHxImNGTeuIRYWJk8GL4QQ4iVMXmtMZDHRj+DJveS3RYUk/m5mKUVQNvDPP7fp0+dnw+3ixZ1Zu/Yd6tQprF1SQgiRg0khlJ0F7oNt7SEuWutMRDqpWdODQYO8Wbz4BH37VmXevFY4OFhrnZYQQuRYUghlZ1c2p74IciyasbmINHn6NB4LCzOjixG++aYlrVuXkgHRQgiRCaQQys7Uc+O2SrQF67zJtyvSHApUypSUROr5+4fQvfsWRoyoRd++VQ1xe3srKYKEECKTSCGUXVzfA+d+SFgm45l7pxN/bzgd8pfP9LSE6ZRSLFlygpEj9xEVFceIEXto0KAIJUvm0zo1IYTIdaQQymr08XBpDdw/+1wsDk7Ne/l+ZjIQOju4fz+SAQN2sH27vyHm4eFAVNRTDbMSQojcSwqhrObaDtjb17R9vHwgr8wQndXt23eVvn23ERz82BAbPNibb77xwc5OClkhhNCCFEJZzaN/X7699jioPjLxts4MbOWUSlYWHR3H2LH7mTPnuCHm4mLH8uVtadNGxgIJIYSWpBDKyup/CZ5NEm/bFoB8pTVLR5ju6tWHvPPOBs6dS5zrqVWrkqxY0Q43tzwaZiaEEAKkEMra8pUFj/paZyFeg7OzDQ8eRAFgbW3OzJlvMHx4LVm7TwghsgiZr1+IDJQ/vx2+vu2oUqUg//zzPiNG1JYiSAghshDpEdLSfwfg+JcQG5EYiwzWLh/x2nbs8KdmTQ+j015vvFGCEyeKYW4u3zuEECKrkUJIS79/AvdOpbzdwjbzchGvJTIyltGjf2Hx4hO8+WZJdu3qbtTzI0WQEEJkTfK/s5aiHyb+bmZh/FOkWcKPyPJOnLhN9epLWLz4BAB79lxl584rGmclhBAiNaRHKCuwd4PBd7TOQpgoPl7PrFl/8NlnB4mLS1juxM7OkrlzW/H223J1nxBCZAdSCAmRBkFBYfTqtZXDh/8zxLy93Vm3riOlS+fXMDMhhBCmkEJICBNt2HCewYN38ehRNAA6HYwZ04DJk5tgZWWucXZCCCFMIYWQECb488+bdOv2k+G2p6cjq1d3oHFjL+2SEkIIkWYyWFoIE9SpU5hevSoD0LVrBc6cGSxFkBBCZGPSIyTES+j1CjMz4wkQ589vzVtvlaJLlwoyOaIQQmRz0iMkRAoCAkJp0GA5GzdeMIo7OlrTtWtFKYKEECIHkB4hIV6glGL16rMMH76biIhYLl3aSd26hfH0dNI6NSGEEOlMeoSEeE5oaBTduv1Enz4/ExERC0C+fLaGhVOFEELkLNIjJMT/O3QokF69tnLzZrgh1rdvVebNa4WDg7WGmQkhhMgoUgiJXC82Np6JEw8yY8YxlEqI5c1rw5Ilb9O5cwVtkxNCCJGhpBASuVpAQCidO2/i5MnEJU6aNPFi1ar2MiZICCFyARkjJHI1W1sLbtwIA8DS0owZM1pw4EBvKYKEECKXkB6hzPYkBI5/CWHX4cldrbPJ9dzdHVi2rC2ffrqftWvfoXp1d61TEkIIkYmkEMpsZxbCybnGMTNLbXLJhfbvD6BaNTfy57czxNq2LcObb5bE0lLWCRNCiNxGTo1ltsg7xrd15lD5fW1yyUWio+MYOXIvb7yxmkGDdqKejYr+f1IECSFE7iQ9QlrqtB/caoK1o9aZ5Gjnzt2lR48tnDt3D4CffrrE3r1XefPNUhpnJoQQQmvSI6Qlm3xSBGUgvV4xd+6f1Ky51FAEWVubM29eK1q1KqlxdkIIIbIC6RESOdKdOxH067eNffuuGWKVKrmybl1HKlZ01TAzIYQQWYkUQiLH2b7dn/79txMS8sQQGzmyDtOmNcfGRt7yQgghEsmngshRjh27Qbt26w233dzysHJle1q2LKFhVkIIIbIqGSMkcpR69Tzp0KEsAO3aleHcuSFSBAkhhEiR9AiJbE0phU6nM9zW6XQsXdqGtm3L0KdPFaNtQgghxIukR0hkW0FBYTRrtoqdO68YxfPnt6Nv36pSBAkhhHgl6RHKLHHR8OASRN3XOpMcYePGCwwatJNHj6K5cOEeZ88Owc0tj9ZpCSGEyGakEMoMMWGwvIysLZYOwsNj+OCDPaxcecYQs7Gx4PbtCCmEhBBCmEwKocxw61jSIsjMEhw8tMknm/LzC6JHjy1cv/7IEOvatQILF76Fs7OtdokJIYTItqQQSm+3/eDAcOPCJy4q8Xe3mlCwJpRsC3YysV9qxMXp+fLL3/nyy9+Jj09YI8zBwYoFC1rTs2dlGQskhBAizaQQSm8nZsO9kylvL9cTqn+Qeflkc4GBj+je/Sf8/G4aYvXqebJmTQeKFXPWMDMhhBA5gRRC6S02IvF3e3fQPXdhnktFKNst83PKxszMdFy8mDDA3Nxcx8SJjRk3riEWFnLBoxBCiNcnhVBG6ncJrJ20ziJbK1LEiUWL3mb8+N9Yu/Yd6tQprHVKQgghchD5Wi2ylCNH/iM8PMYo1q1bRS5cGCpFkBBCiHSXJQqhBQsW4OXlhY2NDbVr1+avv/5Kse3SpUtp2LAhzs7OODs706JFi5e2z1BKQVggPLqW+PP0ySt3E0nFxsYzZsx+Gjf2ZcSIPUm2y2KpQgghMoLmhdCGDRsYNWoUkyZN4uTJk1SpUgUfHx/u3buXbPtDhw7x7rvvcvDgQfz8/PD09KRly5bcunUrcxNXCjY2gR+KwbKSiT+3jmRuHjmAv38Idesu4+uvj6EUrFp1hl9+uaZ1WkIIIXIBnVJKaZlA7dq1qVmzJvPnzwdAr9fj6enJiBEjGDNmzCv3j4+Px9nZmfnz59O7d+9Xtg8PD8fJyYmwsDAcHR3TnnhYYEIRlBKbfDA4GMwt034fOZxSiiVLTjBy5D6iouIAsLQ0Y+rUZoweXQ8zM7ksXgghRIJ0+/x+gabnG2JjYzlx4gRjx441xMzMzGjRogV+fn6pOsaTJ094+vQp+fLlS3Z7TEwMMTGJY07Cw8NfL+lnVHzi745e4FE/8baZJZTvLUXQS9y/H8mAATvYvt3fECtTJj/r1nWkenV3DTMTQgiRm2haCIWEhBAfH0/BggWN4gULFuTy5cupOsann35KoUKFaNGiRbLbp0+fzpQpU14715fyqA+t12TsfeQg+/ZdpW/fbQQHPzbEhgypwaxZLbGzk+JRCCFE5tF8jNDr+Oqrr1i/fj1bt27FxsYm2TZjx44lLCzM8BMUFJTJWYrnHTnyH61arTUUQS4udmzf3o3vv39LiiAhhBCZTtMeIRcXF8zNzbl713gdrrt37+Lm5vbSfWfNmsVXX33F/v37qVy5cortrK2tsba2Tpd8xetr0KAIrVqVZO/eq7RqVZIVK9rJYqlCCCE0o2mPkJWVFd7e3hw4cMAQ0+v1HDhwgLp166a434wZM/jiiy/Yu3cvNWrUyIxURTrR6XSsWNGO779vze7d3aUIEkIIoSnNT42NGjWKpUuXsnLlSi5dusSQIUOIjIykX79+APTu3dtoMPXXX3/NhAkTWL58OV5eXgQHBxMcHMzjx49TuguhkeDgx7z11joOHAgwiru55WHIkJqyWKoQQgjNaT5LXdeuXbl//z4TJ04kODiYqlWrsnfvXsMA6hs3bmBmllivLVy4kNjYWDp16mR0nEmTJjF58uTMTF28xPbt/vTvv52QkCecORPMmTODyZ/fTuu0hBBCCCOaF0IAw4cPZ/jw4cluO3TokNHtwMDAjE/oRaH/wq7u8OhqYuz5y+eFQWRkLKNH/8LixScMMb1eERj4SAohIYQQWU6WKISyvAu+cPeflLdbycKqACdO3KZHjy34+z8wxNq3L8vSpW1wcZEiSAghRNYjhVBqPL9+mEMRsLBNvO1YBKqNyPycspD4eD2zZv3BZ58dJC5OD4CdnSVz57aif/9qMhZICCFEliWFkKne3gCF6midRZZx82Y4vXpt5dChQEPM29uddes6Urp0fu0SE0IIIVJB86vGRPYWFfWUv/9OWPBWp4OxYxvwxx/9pQgSQgiRLUghJF5LqVL5mTfvTTw9HTl4sA/TpjXHyspc67SEEEKIVJFCSJjkr79u8eTJU6NYv35VuXhxGI0be2mTlBBCCJFGUgiJVImL0zNlyiHq1VvGxx//YrRNp9ORJ4+VRpkJIYQQaSeFkHilgIBQGjVaweTJh4mPVyxc+A8HD17XOi0hhBDitclVYyJFSilWrz7L8OG7iYiIBcDcXMfEiY1p2LCoxtkJIYQQr08KIZGs0NAohgzZxYYNFwyx4sWdWbv2HerUKaxhZkIIIUT6kUJIJHH4cCC9em0lKCjcEOvbtyrz5rXCwcFaw8yEEEKI9CWFkDBy+HAgTZuuRKmE287ONixe/DadO1fQNjEhhBAiA8hgaWGkQYMiNGqUMP6naVMvzp4dIkWQEEKIHEt6hIQRc3MzVq/uwKZNF/noozqYmck6YUIIIXIu6RHKxe7fj6Rjx40cO3bDKO7p6cSoUXWlCBJCCJHjSY9QLrVv31X69t1GcPBjTp68w5kzg3F0lIHQQgghchfpEcploqPj+OijvbRqtZbg4McAPH4cy5UrDzTOTAghhMh80iOUi5w7d5fu3bdw/vw9Q6xVq5KsWNEON7c8GmYmhBBCaEMKoVxAr1d8991xPv10PzEx8QBYW5szc+YbDB9eC51OxgIJIYTInaQQyuHu3ImgX79t7Nt3zRCrVMmVdes6UrGiq4aZCSGEENqTMUI53MOHURw6FGi4PXJkHf76a6AUQUIIIQRSCOV4FSq4MnPmG7i55WHfvp7Mnu2DjY10BAohhBAghVCOc+ZMMDExcUax4cNrcfHiUFq2LKFRVkIIIUTWJIVQSpSCYxNhXV3wX691Nq8UH6/n66+PUqPGUsaP/81om06nw9nZVqPMhBBCiKxLzpGk5N4p+POLpHELm8zP5RWCgsLo1Wsrhw//B8A33/jRvn1ZGjQoonFmQgghRNYmhVBKopKZYLBEOyhQJfNzeYmNGy8waNBOHj2KBkCngzFjGlCrlofGmQkhhBBZnxRCqVFnAtT/XOssjISHx/DBB3tYufKMIebp6cjq1R1o3NhLu8SEEEKIbEQKoRcpBY+uQvh1rTNJkZ9fED17biUgINQQ69q1AgsXviVjgYQQQggTSCH0oj294dIarbNI0aFDgbRosYr4eAWAg4MVCxa0pmfPyjJDtBBCCGEiuWrsRVc2Jo05Fcv8PFJQv74n3t6FAKhXz5MzZwbTq1cVKYKEEEKINJAeoRcpfcK/Nvmh1DuQvxyUfVfbnJ5jaWnO2rXvsGHDeT79tAEWFlLLCiGEEGklhVBKnLyg5RJNUwgNjWL48D2MGlXH0AsEULJkPsaPb6RhZkLkTkop4uLiiI+P1zoVIXIkS0tLzM3NM/U+pRDKog4dCqRXr63cvBnOiRO3OXlyEHZ2llqnJUSuFRsby507d3jy5InWqQiRY+l0OgoXLkyePHky7T6lEAKIj4Vr2+HxHdBr+00vNjaeiRMPMmPGMVTCeGju3YvkwoV71KwpcwMJoQW9Xs/169cxNzenUKFCWFlZybg8IdKZUor79+9z8+ZNSpUqlWk9Q1IIAfw5Ff7Ufp4gf/8QunffwsmTdwyxpk29WLWqA4ULO2qYmRC5W2xsLHq9Hk9PT+zs7LROR4gcq0CBAgQGBvL06VMphDLV/dNJY+51M+3ulVIsWXKCkSP3ERWVsGCqpaUZU6c2Y/ToepiZyTdPIbICMzO5OEGIjKRFT6sUQi9q/n3C5fJFW2TK3d2/H8mAATvYvt3fECtTJj/r1nWkenX3TMlBCCGEyK2kEHpR6Y5g55ppdxcUFM7u3f8abg8ZUoNZs1rKwGghhBAiE0g/r8aqV3fnyy+b4uJix/bt3fj++7ekCBJCCI35+/vj5uZGRESE1qnkGN26deObb77ROo0kpBDKZJcvh/D0qfGVaR9/XI8LF4bSpk0ZjbISQuREffv2RafTodPpsLS0pFixYvzvf/8jOjo6SdudO3fSuHFjHBwcsLOzo2bNmvj6+iZ73J9++okmTZrg5OREnjx5qFy5Mp9//jkPHz7M4EeUecaOHcuIESNwcHBIsq1s2bJYW1sTHBycZJuXlxdz5sxJEp88eTJVq1Y1igUHBzNixAiKFy+OtbU1np6etGnThgMHDqTXw0jWpk2bKFu2LDY2NlSqVIndu3e/cp+YmBjGjx9P0aJFsba2xsvLi+XLlxu1mTNnDmXKlMHW1hZPT09Gjhxp9F777LPPmDp1KmFhYen+mF5H7i2ElIIrP8GRcfDgYobfnV6vmDv3T6pWXcSXX/5utM3c3AxXV/sMz0EIkfu0atWKO3fuEBAQwLfffsvixYuZNGmSUZvvvvuOdu3aUb9+fY4fP87Zs2fp1q0bgwcP5uOPPzZqO378eLp27UrNmjXZs2cP58+f55tvvuHMmTOsXr060x5XbGxshh37xo0b7Ny5k759+ybZdvToUaKioujUqRMrV65M830EBgbi7e3Nb7/9xsyZMzl37hx79+6ladOmDBs27DWyf7k//viDd999l/79+3Pq1Cnat29P+/btOX/+/Ev369KlCwcOHGDZsmX4+/vz448/UqZM4pf3devWMWbMGCZNmsSlS5dYtmwZGzZsYNy4cYY2FStWpESJEqxZk8XW81S5TFhYmAJU2IWdSs0i6U/k3XS/z9u3w5WPz2oFkxVMVmZmU9Tx4zfT/X6EEBkjKipKXbx4UUVFRWmdikn69Omj2rVrZxR75513VLVq1Qy3b9y4oSwtLdWoUaOS7D9v3jwFqD///FMppdTx48cVoObMmZPs/YWGhqaYS1BQkOrWrZtydnZWdnZ2ytvb23Dc5PL88MMPVePGjQ23GzdurIYNG6Y+/PBDlT9/ftWkSRP17rvvqi5duhjtFxsbq/Lnz69WrlyplFIqPj5eTZs2TXl5eSkbGxtVuXJltWnTphTzVEqpmTNnqho1aiS7rW/fvmrMmDFqz549qnTp0km2Fy1aVH377bdJ4pMmTVJVqlQx3H7zzTeVh4eHevz4cZK2L3seX1eXLl3UW2+9ZRSrXbu2GjRoUIr77NmzRzk5OakHDx6k2GbYsGGqWbNmRrFRo0ap+vXrG8WmTJmiGjRokOJxXva3Zvj8DgtLcf+0yL2DpUP/TRpzrQ62BdL1brZtu8yAATsICUmcjfaDD2pRuXLBdL0fIYQG1tSAyKSnRzKUvRv0/CdNu54/f54//viDokWLGmKbN2/m6dOnSXp+AAYNGsS4ceP48ccfqV27NmvXriVPnjwMHTo02ePnzZs32fjjx49p3LgxHh4ebN++HTc3N06ePIlerzcp/5UrVzJkyBCOHTsGwNWrV+ncuTOPHz82zES8b98+njx5QocOHQCYPn06a9asYdGiRZQqVYrff/+dnj17UqBAARo3bpzs/Rw5coQaNWokiUdERLBp0yaOHz9O2bJlCQsL48iRIzRs2NCkx/Hw4UP27t3L1KlTsbdPejYgpecRYO3atQwaNOilx9+zZ0+KOfn5+TFq1CijmI+PDz///HOKx9u+fTs1atRgxowZrF69Gnt7e9q2bcsXX3yBra0tAPXq1WPNmjX89ddf1KpVi4CAAHbv3k2vXr2MjlWrVi2mTp1KTEwM1tbWL30cmSX3FkJPn5smv8YnUKINuNeBdJrDIDIyltGjf2Hx4hOGmJtbHlaubE/LliXS5T6EEBqLDIbHt7TO4qV27txJnjx5iIuLIyYmBjMzM+bPn2/YfuXKFZycnHB3Tzpdh5WVFcWLF+fKlSsA/PvvvxQvXhxLS9Mu6Fi3bh3379/n77//Jl++fACULFnS5MdSqlQpZsyYYbhdokQJ7O3t2bp1q+EDd926dbRt2xYHBwdiYmKYNm0a+/fvp27dhLnhihcvztGjR1m8eHGKhdB///2XbCG0fv16SpUqRYUKFYCEwb/Lli0zuRC6evUqSinKli1r0n4Abdu2pXbt2i9t4+GR8ioEwcHBFCxo/EW8YMGCyY53eiYgIICjR49iY2PD1q1bCQkJYejQoTx48IAVK1YA0L17d0JCQmjQoIFhTb7BgwcbnRoDKFSoELGxsQQHBxsV5FrKvYXQsfFg8/+/5y8HhU17I7/MiRO36d59C1euPDDE2rUrww8/tMXFRWalFSLHsHfL8vfZtGlTFi5cSGRkJN9++y0WFhZ07NgxTXetnq37Y6LTp09TrVo1QxGUVt7e3ka3LSws6NKlC2vXrqVXr15ERkaybds21q9fDyQUHE+ePOGNN94w2i82NpZq1aqleD9RUVHY2NgkiS9fvpyePXsabvfs2ZPGjRvz3XffJTuoOiVpfR4BHBwcTLqv9KDX69HpdKxduxYnJycAZs+eTadOnfj++++xtbXl0KFDTJs2je+//57atWtz9epVPvzwQ7744gsmTJhgONazHqSstGZf7i2EnpeO/5n99tt1fHzWEBeX0OVrZ2fJnDk+DBhQXdYmEiKnSeMpqsxkb29v6H1Zvnw5VapUYdmyZfTv3x+A0qVLExYWxu3btylUqJDRvrGxsVy7do2mTZsa2h49epSnT5+a1Cv07MMvJWZmZkmKg6dPnyb7WF7Uo0cPGjduzL179/j111+xtbWlVatWQMIpOYBdu3Yl6SV52WkZFxcXQkNDjWIXL17kzz//5K+//uLTTz81xOPj41m/fj0DBw4EwNHRMdmroh49emQoIkqVKoVOp+Py5csp5pCS1z015ubmxt27d41id+/exc0t5c9Bd3d3PDw8DPkDlCtXDqWUYV2wCRMm0KtXLwYMGABApUqViIyM5P3332f8+PGGWdmfXVlYoED6DkN5Hbn3qjHbAlCsNdSdDEVbptth69f3pHz5hBfY29udU6cGMXCgtxRBQgjNmZmZMW7cOD777DOioqIA6NixI5aWlsnO77Jo0SIiIyN59913gYTTH48fP+b7779P9viPHj1KNl65cmVOnz6d4uX1BQoU4M6dO0ax06dPp+ox1atXD09PTzZs2MDatWvp3LmzoUgrX7481tbW3Lhxg5IlSxr9eHp6pnjMatWqcfGi8dXEy5Yto1GjRpw5c4bTp08bfkaNGsWyZcsM7cqUKcOJEydePCQnT56kdOnSAOTLlw8fHx8WLFhAZGRkkrYpPY+QcGrs+ftP7ie503rP1K1bN8nl+b/++qvh1GFy6tevz+3btw2FJSScUjUzM6Nw4cJAQg/Pi0vQPFsr7Pki9/z58xQuXBgXF5cU7y/TpevQ62zAMOp8fbsMu4/z5++q8eMPqJiYuAy7DyFE5slJV409ffpUeXh4qJkzZxpi3377rTIzM1Pjxo1Tly5dUlevXlXffPONsra2VqNHjzba/3//+58yNzdXn3zyifrjjz9UYGCg2r9/v+rUqVOKV5PFxMSo0qVLq4YNG6qjR4+qa9euqc2bN6s//vhDKaXU3r17lU6nUytXrlRXrlxREydOVI6OjkmuGvvwww+TPf748eNV+fLllYWFhTpy5EiSbfnz51e+vr7q6tWr6sSJE2revHnK19c3xedt+/btytXVVcXFJfwfHhsbqwoUKKAWLlyYpO3FixcVoM6fP6+UUurYsWPKzMxMffnll+rixYvq3Llzaty4ccrCwkKdO3fOsN+1a9eUm5ubKl++vNq8ebO6cuWKunjxopo7d64qW7Zsirm9rmPHjikLCws1a9YsdenSJTVp0iRlaWlplNuYMWNUr169DLcjIiJU4cKFVadOndSFCxfU4cOHValSpdSAAQMMbSZNmqQcHBzUjz/+qAICAtQvv/yiSpQokeSqvj59+qj33nsvxfy0uGpMCqHXOla0GjBgmzp/Pv0vuRdCZB05qRBSSqnp06erAgUKGF26vW3bNtWwYUNlb2+vbGxslLe3t1q+fHmyx92wYYNq1KiRcnBwUPb29qpy5crq888/f+ll34GBgapjx47K0dFR2dnZqRo1aqjjx48btk+cOFEVLFhQOTk5qZEjR6rhw4enuhB6VowULVpU6fV6o216vV7NmTNHlSlTRllaWqoCBQooHx8fdfjw4RRzffr0qSpUqJDau3evUkqpzZs3KzMzMxUcHJxs+3LlyqmRI0cabu/bt0/Vr19fOTs7Gy71T+7+bt++rYYNG6aKFi2qrKyslIeHh2rbtq06ePBgirmlh40bN6rSpUsrKysrVaFCBbVr1y6j7X369DF67pVS6tKlS6pFixbK1tZWFS5cWI0aNUo9efLEsP3p06dq8uTJqkSJEsrGxkZ5enqqoUOHGr0noqKilJOTk/Lz80sxNy0KIZ1SrzFqKxsKDw/HycmJsPXtcOz6c5qP4+cXRM+eWwkICKVy5YL89dcArK1lyJUQOVF0dDTXr1+nWLFiyQ6iFTnPggUL2L59O/v27dM6lRxj4cKFbN26lV9++SXFNi/7WzN8foeF4ejomG555d4xQmkUF6dnypRDNGy4goCAhMF016+Hcvbs3VfsKYQQIrsYNGgQjRo1krXG0pGlpSXfffed1mkkIV0YJggICKVnzy34+d00xOrV82TNmg4UK+asYWZCCCHSk4WFBePHj9c6jRzl2RVlWY0UQqmglGL16rMMH76biIiE9W3MzXVMnNiYceMaYmEhHWtCCCFEdiSF0CuEhkYxZMguNmy4YIgVL+7M2rXvUKdOYQ0zE0IIIcTrkkLoFS5dCmHTpsT5JPr2rcq8ea1wcMgaa6QIITJPLru2RIhMp8XfmJzTeYV69TwZP74hefPasHFjJ1asaCdFkBC5zLMJ+rLSsgBC5ESxsc+Gn5hn2n1Kj9ALrl8PpUgRJ8zNE2vECRMaMWiQNx4e6Xe5nhAi+zA3Nydv3rzcu3cPADs7O5ktXoh0ptfruX//PnZ2dlhYZF55IoXQ/1NKsWTJCUaO3MekSY359NMGhm2WluZSBAmRyz1bi+lZMSSESH9mZmYUKVIkU79oSCEE3L8fyYABO9i+3R+Azz47SMuWJahWzV3jzIQQWYVOp8Pd3R1XV9dkFwQVQrw+KyurJGuWZbQsUQgtWLCAmTNnEhwcTJUqVfjuu++oVatWiu03bdrEhAkTCAwMpFSpUnz99de0bt06Tfe9b99V+vbdRnBw4mJyAwZUo0yZLLQgnBAiyzA3N8/U8QtCiIyl+WDpDRs2MGrUKCZNmsTJkyepUqUKPj4+KXY///HHH7z77rv079+fU6dO0b59e9q3b8/58+dNut/oWB0ffbSXVq3WGoogFxc7tm/vxsKFb2NnZ/naj00IIYQQWZvma43Vrl2bmjVrMn/+fCBhsJSnpycjRoxgzJgxSdp37dqVyMhIdu7caYjVqVOHqlWrsmjRolfe37O1Ssp5juRSkJMh3qpVSVasaIebW550eFRCCCGESE85cq2x2NhYTpw4QYsWLQwxMzMzWrRogZ+fX7L7+Pn5GbUH8PHxSbF9Si4FJVwCb21tzrx5rdi9u7sUQUIIIUQuo+kYoZCQEOLj4ylYsKBRvGDBgly+fDnZfYKDg5NtHxwcnGz7mJgYYmJiDLfDwsKebaF8+QIsW9aO8uULyMJ6QgghRBYWHh4OpP+ki1lisHRGmj59OlOmTElmy7dcvAh1647O9JyEEEIIkTYPHjzAycnp1Q1TSdNCyMXFBXNzc+7evWsUv3v3rmHOjhe5ubmZ1H7s2LGMGjXKcPvRo0cULVqUGzdupOsTKUwXHh6Op6cnQUFB6Xq+V6SNvB5Zh7wWWYe8FllHWFgYRYoUIV++fOl6XE0LISsrK7y9vTlw4ADt27cHEgZLHzhwgOHDhye7T926dTlw4AAfffSRIfbrr79St27dZNtbW1tjbZ10SQwnJyd5U2cRjo6O8lpkIfJ6ZB3yWmQd8lpkHek9z5Dmp8ZGjRpFnz59qFGjBrVq1WLOnDlERkbSr18/AHr37o2HhwfTp08H4MMPP6Rx48Z88803vPXWW6xfv55//vmHJUuWaPkwhBBCCJENaV4Ide3alfv37zNx4kSCg4OpWrUqe/fuNQyIvnHjhlH1V69ePdatW8dnn33GuHHjKFWqFD///DMVK1bU6iEIIYQQIpvSvBACGD58eIqnwg4dOpQk1rlzZzp37pym+7K2tmbSpEnJni4TmUtei6xFXo+sQ16LrENei6wjo14LzSdUFEIIIYTQiuZLbAghhBBCaEUKISGEEELkWlIICSGEECLXkkJICCGEELlWjiyEFixYgJeXFzY2NtSuXZu//vrrpe03bdpE2bJlsbGxoVKlSuzevTuTMs35THktli5dSsOGDXF2dsbZ2ZkWLVq88rUTpjH1b+OZ9evXo9PpDBOfitdn6mvx6NEjhg0bhru7O9bW1pQuXVr+r0onpr4Wc+bMoUyZMtja2uLp6cnIkSOJjo7OpGxzrt9//502bdpQqFAhdDodP//88yv3OXToENWrV8fa2pqSJUvi6+tr+h2rHGb9+vXKyspKLV++XF24cEENHDhQ5c2bV929ezfZ9seOHVPm5uZqxowZ6uLFi+qzzz5TlpaW6ty5c5mcec5j6mvRvXt3tWDBAnXq1Cl16dIl1bdvX+Xk5KRu3ryZyZnnTKa+Hs9cv35deXh4qIYNG6p27dplTrI5nKmvRUxMjKpRo4Zq3bq1Onr0qLp+/bo6dOiQOn36dCZnnvOY+lqsXbtWWVtbq7Vr16rr16+rffv2KXd3dzVy5MhMzjzn2b17txo/frzasmWLAtTWrVtf2j4gIEDZ2dmpUaNGqYsXL6rvvvtOmZubq71795p0vzmuEKpVq5YaNmyY4XZ8fLwqVKiQmj59erLtu3Tpot566y2jWO3atdWgQYMyNM/cwNTX4kVxcXHKwcFBrVy5MqNSzFXS8nrExcWpevXqqR9++EH16dNHCqF0YuprsXDhQlW8eHEVGxubWSnmGqa+FsOGDVPNmjUzio0aNUrVr18/Q/PMbVJTCP3vf/9TFSpUMIp17dpV+fj4mHRfOerUWGxsLCdOnKBFixaGmJmZGS1atMDPzy/Zffz8/IzaA/j4+KTYXqROWl6LFz158oSnT5+m+wJ7uVFaX4/PP/8cV1dX+vfvnxlp5gppeS22b99O3bp1GTZsGAULFqRixYpMmzaN+Pj4zEo7R0rLa1GvXj1OnDhhOH0WEBDA7t27ad26dabkLBKl1+d3lphZOr2EhIQQHx9vWJ7jmYIFC3L58uVk9wkODk62fXBwcIblmRuk5bV40aeffkqhQoWSvNGF6dLyehw9epRly5Zx+vTpTMgw90jLaxEQEMBvv/1Gjx492L17N1evXmXo0KE8ffqUSZMmZUbaOVJaXovu3bsTEhJCgwYNUEoRFxfH4MGDGTduXGakLJ6T0ud3eHg4UVFR2Nrapuo4OapHSOQcX331FevXr2fr1q3Y2NhonU6uExERQa9evVi6dCkuLi5ap5Pr6fV6XF1dWbJkCd7e3nTt2pXx48ezaNEirVPLdQ4dOsS0adP4/vvvOXnyJFu2bGHXrl188cUXWqcm0ihH9Qi5uLhgbm7O3bt3jeJ3797Fzc0t2X3c3NxMai9SJy2vxTOzZs3iq6++Yv/+/VSuXDkj08w1TH09rl27RmBgIG3atDHE9Ho9ABYWFvj7+1OiRImMTTqHSsvfhru7O5aWlpibmxti5cqVIzg4mNjYWKysrDI055wqLa/FhAkT6NWrFwMGDACgUqVKREZG8v777zN+/HijRcJFxkrp89vR0THVvUGQw3qErKys8Pb25sCBA4aYXq/nwIED1K1bN9l96tata9Qe4Ndff02xvUidtLwWADNmzOCLL75g79691KhRIzNSzRVMfT3Kli3LuXPnOH36tOGnbdu2NG3alNOnT+Pp6ZmZ6ecoafnbqF+/PlevXjUUowBXrlzB3d1diqDXkJbX4smTJ0mKnWcFqpKlOzNVun1+mzaOO+tbv369sra2Vr6+vurixYvq/fffV3nz5lXBwcFKKaV69eqlxowZY2h/7NgxZWFhoWbNmqUuXbqkJk2aJJfPpxNTX4uvvvpKWVlZqc2bN6s7d+4YfiIiIrR6CDmKqa/Hi+SqsfRj6mtx48YN5eDgoIYPH678/f3Vzp07laurq/ryyy+1egg5hqmvxaRJk5SDg4P68ccfVUBAgPrll19UiRIlVJcuXbR6CDlGRESEOnXqlDp16pQC1OzZs9WpU6fUf//9p5RSasyYMapXr16G9s8un//kk0/UpUuX1IIFC+Ty+We+++47VaRIEWVlZaVq1aql/vzzT8O2xo0bqz59+hi137hxoypdurSysrJSFSpUULt27crkjHMuU16LokWLKiDJz6RJkzI/8RzK1L+N50khlL5MfS3++OMPVbt2bWVtba2KFy+upk6dquLi4jI565zJlNfi6dOnavLkyapEiRLKxsZGeXp6qqFDh6rQ0NDMTzyHOXjwYLKfAc+e/z59+qjGjRsn2adq1arKyspKFS9eXK1YscLk+9UpJX15QgghhMidctQYISGEEEIIU0ghJIQQQohcSwohIYQQQuRaUggJIYQQIteSQkgIIYQQuZYUQkIIIYTItaQQEkIIIUSuJYWQEMKIr68vefPm1TqNNNPpdPz8888vbdO3b1/at2+fKfkIIbI2KYSEyIH69u2LTqdL8nP16lWtU8PX19eQj5mZGYULF6Zfv37cu3cvXY5/584d3nzzTQACAwPR6XScPn3aqM3cuXPx9fVNl/tLyeTJkw2P09zcHE9PT95//30ePnxo0nGkaBMiY+Wo1eeFEIlatWrFihUrjGIFChTQKBtjjo6O+Pv7o9frOXPmDP369eP27dvs27fvtY+d0qrhz3Nycnrt+0mNChUqsH//fuLj47l06RLvvfceYWFhbNiwIVPuXwjxatIjJEQOZW1tjZubm9GPubk5s2fPplKlStjb2+Pp6cnQoUN5/Phxisc5c+YMTZs2xcHBAUdHR7y9vfnnn38M248ePUrDhg2xtbXF09OTDz74gMjIyJfmptPpcHNzo1ChQrz55pt88MEH7N+/n6ioKPR6PZ9//jmFCxfG2tqaqlWrsnfvXsO+sbGxDB8+HHd3d2xsbChatCjTp083OvazU2PFihUDoFq1auh0Opo0aQIY97IsWbKEQoUKGa3sDtCuXTvee+89w+1t27ZRvXp1bGxsKF68OFOmTCEuLu6lj9PCwgI3Nzc8PDxo0aIFnTt35tdffzVsj4+Pp3///hQrVgxbW1vKlCnD3LlzDdsnT57MypUr2bZtm6F36dChQwAEBQXRpUsX8ubNS758+WjXrh2BgYEvzUcIkZQUQkLkMmZmZsybN48LFy6wcuVKfvvtN/73v/+l2L5Hjx4ULlyYv//+mxMnTjBmzBgsLS0BuHbtGq1ataJjx46cPXuWDRs2cPToUYYPH25STra2tuj1euLi4pg7dy7ffPMNs2bN4uzZs/j4+NC2bVv+/fdfAObNm8f27dvZuHEj/v7+rF27Fi8vr2SP+9dffwGwf/9+7ty5w5YtW5K06dy5Mw8ePODgwYOG2MOHD9m7dy89evQA4MiRI/Tu3ZsPP/yQixcvsnjxYnx9fZk6dWqqH2NgYCD79u3DysrKENPr9RQuXJhNmzZx8eJFJk6cyLhx49i4cSMAH3/8MV26dKFVq1bcuXOHO3fuUK9ePZ4+fYqPjw8ODg4cOXKEY8eOkSdPHlq1akVsbGyqcxJCQI5cfV6I3K5Pnz7K3Nxc2dvbG346deqUbNtNmzap/PnzG26vWLFCOTk5GW47ODgoX1/fZPft37+/ev/9941iR44cUWZmZioqKirZfV48/pUrV1Tp0qVVjRo1lFJKFSpUSE2dOtVon5o1a6qhQ4cqpZQaMWKEatasmdLr9ckeH1Bbt25VSil1/fp1BahTp04ZtenTp49q166d4Xa7du3Ue++9Z7i9ePFiVahQIRUfH6+UUqp58+Zq2rRpRsdYvXq1cnd3TzYHpZSaNGmSMjMzU/b29srGxsawkvbs2bNT3EcppYYNG6Y6duyYYq7P7rtMmTJGz0FMTIyytbVV+/bte+nxhRDGZIyQEDlU06ZNWbhwoeG2vb09kNA7Mn36dC5fvkx4eDhxcXFER0fz5MkT7Ozskhxn1KhRDBgwgNWrVxtO75QoUQJIOG129uxZ1q5da2ivlEKv13P9+nXKlSuXbG5hYWHkyZMHvV5PdHQ0DRo04IcffiA8PJzbt29Tv359o/b169fnzJkz8H/t3F9Ik2scB/DvGbg51qaISFOMCHN3Km8k6I2QfxIyQom0BhGExGIpgaEXmo5QFFEvoggDA0uc1E3BmEKQoAvKkhn0Z6aZEoQRijFwKut3Lg6+NOcMTwc657zfz+XzPs+73/PsYl/e98fw12ut4uJi2Gw2lJaWoqysDCUlJb90Vna7HdXV1bh58yYMBgMGBgZQVVUFnU6n7tPn80U8AQqHwzueGwDYbDY8evQIoVAI9+7dg9/vx6VLlyLm3LhxA319fVhYWMDq6irW19eRk5OzY71TU1OYmZmB2WyOGA+FQpidnf0bJ0CkXQxCRP9TJpMJGRkZEWMfP35EWVkZHA4HWltbkZSUhPHxcZw/fx7r6+vb/qC3tLTgzJkz8Hg88Hq9aG5uhtvtRnl5OYLBIC5cuICampqodfv27YtZm9lsxuTkJHQ6HaxWK4xGIwDg27dvP92XoiiYm5uD1+vF48ePcerUKRQVFeHBgwc/XRvL8ePHISLweDw4fPgwxsbG0NPTo14PBoNwuVyoqKiIWhsfHx/zvnq9Xv0O2tvbcezYMbhcLly7dg0A4Ha7UVdXh66uLuTl5cFsNqOzsxPPnj3bsd5gMIhDhw5FBNBN/5aGeKL/CgYhIg15+fIlvn//jq6uLvVpx2Y/yk4yMzORmZmJy5cv4/Tp07hz5w7Ky8uhKArevHkTFbh+RqfTbbvGYrEgNTUVPp8PBQUF6rjP50Nubm7EvMrKSlRWVuLkyZMoLS3F0tISkpKSIu632Y8TDod3rCc+Ph4VFRUYGBjAzMwMbDYbFEVRryuKgkAgsOt9btXY2IgjR47A4XCo+8zPz8fFixfVOVuf6Oj1+qj6FUXB0NAQUlJSYLFYfqkmIq1jszSRhmRkZGBjYwPXr1/Hhw8fcPfuXdy6dSvm/NXVVTidToyOjmJ+fh4+nw8TExPqK6/6+no8ffoUTqcTfr8f79+/x8OHD3fdLP2jK1euoKOjA0NDQwgEAmhoaIDf70dtbS0AoLu7G4ODg3j37h2mp6dx//597N27d9s/gUxJSYHRaMTw8DAWFxexsrIS83Ptdjs8Hg/6+vrUJulNV69eRX9/P1wuF16/fo23b9/C7XajsbFxV3vLy8tDVlYW2traAAAHDx7EixcvMDIygunpaTQ1NWFiYiJizf79+/Hq1SsEAgF8/foVGxsbsNvtSE5OxokTJzA2Noa5uTmMjo6ipqYGnz592lVNRJr3u5uUiOift12D7abu7m6xWq1iNBrl6NGj0t/fLwBkeXlZRCKbmdfW1qSqqkrS09NFr9dLamqqOJ3OiEbo58+fS3FxsezZs0dMJpNkZWVFNTv/aGuz9FbhcFhaWlokLS1N4uLiJDs7W7xer3q9t7dXcnJyxGQyicVikcLCQpmcnFSv44dmaRGR27dvS3p6uuh0OikoKIh5PuFwWKxWqwCQ2dnZqLqGh4clPz9fjEajWCwWyc3Nld7e3pj7aG5uluzs7KjxwcFBMRgMsrCwIKFQSM6dOycJCQmSmJgoDodDGhoaItZ9+fJFPV8A8uTJExER+fz5s5w9e1aSk5PFYDDIgQMHpLq6WlZWVmLWRETR/hAR+b1RjIiIiOj34KsxIiIi0iwGISIiItIsBiEiIiLSLAYhIiIi0iwGISIiItIsBiEiIiLSLAYhIiIi0iwGISIiItIsBiEiIiLSLAYhIiIi0iwGISIiItIsBiEiIiLSrD8BgxyUhW2g4xQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.figure()\n", "plt.plot(fpr, tpr, color=\"darkorange\", lw=2, label=f\"ROC curve (AUC = {roc_auc:.2f})\")\n", "plt.plot([0, 1], [0, 1], color=\"navy\", lw=2, linestyle=\"--\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel(\"False Positive Rate\")\n", "plt.ylabel(\"True Positive Rate\")\n", "plt.title(\"Receiver Operating Characteristic (ROC) Curve\")\n", "plt.legend(loc=\"lower right\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.2 Gains from Uncertainty-Aware Decoding" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, we evaluate the gains from uncertainty-aware decoding (UAD) by measuring the factual precision over claims at various filtering thresholds. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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5w0aNFBKSopOnz6d7jPKlCmT/RPMpjvuuEN//vmnwsPD09WTGvxtNpuaNm2qcePGadu2bfL19U031kBmatWqpeTkZJe+nz17Vrt3787091urVi2X/aX0/ywBQEHBlXkAKCAuXryYLuCWLFnSGUSOHTuWbntGV4IHDRqk7t27q1ixYm597ty5c1WyZEk9/PDD6aY369Chg6ZPn6527drppZde0uDBgxUSEqL27dsrNjZWP/30k/71r3+pZcuWatGihbp166bJkyeratWq2rVrl2w2m9q1a6dWrVopOjpab7zxhh566CGtXr1aX331lYoUKXLd2ipUqCBfX1+98847Gjx4sP744w+NHz/eZZ9hw4bpnXfe0SOPPKLRo0eraNGi+vnnn9W4cWPniPht27ZVkSJF9Morr+jll192qy+LFi1So0aN1KxZM82bN0+bN29ONyjg448/rmHDhqlQoUIuI55nZPjw4Vq5cqXuuecejR8/Xs2aNVNQUJC2bNmi119/XdOnT0834r87559b3K13yJAh+ve//60SJUqoQoUKeuONN3T58mUNHDgwR+t5+umnNXHiRFWrVk01a9bU5MmTnSP4S1JQUJCee+45PfPMM3I4HGrWrJkuXryon376SUWKFHF7VoexY8fqnnvuUZUqVfTII48oOTlZq1at0siRI1W9enU9+uij6tu3ryZNmqQGDRooOjpaUVFRqlu3ru6///4cPecbGTp0qKZNm6aePXtqxIgRKlGihPbt26f58+fr448/1pYtWxQVFaX77rtPISEh2rRpk6Kjo12+lLqeatWqqVOnTho0aJA+/PBDBQUFadSoUSpXrpw6deqU4Xuefvpp9e/fX40aNVLTpk01b948/fnnn6pcuXJOnjoAeASuzANAAbF+/Xo1aNDA5TVu3Djn9rfeeivd9pUrV6Y7jre3t0qVKiVvb/e+D54xY4a6dOmS4Tzl3bp104oVK3TmzBn169dPU6ZM0fvvv6/bbrtNDzzwgMsI3kuWLNGdd96pnj17qnbt2hoxYoRz6rNatWrp/fff13vvvad69epp8+bNeu65525YW3BwsGbNmqVFixapdu3amjhxot566y2XfUqWLKl169bp0qVLatmypRo2bKhp06a53D5st9vVv39/paSkqG/fvm71Zdy4cZo/f77q1q2rOXPm6LPPPkt3NbJnz57y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X0lOll5+Wbr7bmnPHqlcOenrr6UpU6SAAKurg6W32S9YsECRkZGaOnWqIiIiNGXKFLVt21a7d+9WSAZDIH766acaNWqUZsyYobvvvlt79uxR//79ZbPZNHnyZOd+t912m7755hvnsrc3TxMAAAAAgLv27pV69zavyktSjx7mlfkSJaytC2ksTbmTJ0/WoEGDNGDAAEnS1KlTtXLlSs2YMUOjRo1Kt/+GDRvUtGlT9erVS5IUHh6unj17atOmTS77eXt7q0yZMm7XkZCQoISEBOdyTEyMJMnhcMjhcGT5vHKLw+GQYRh5qqaCgL5bg75bg75bg75bg75bg75bg75bx9N6bxjSRx9Jzz1n0+XLNhUtaui99wz17Glu95DT8Li+X83dmi0L84mJidq6datGjx7tXGe329WmTRtt3Lgxw/fcfffd+uSTT7R582Y1btxYBw4c0KpVq9SnTx+X/fbu3auyZcvK399fTZo00YQJE1ShQoVMa5kwYYLGjRuXbn10dLTLLfxWczgcunjxogzDkN1u+RMSBQZ9twZ9twZ9twZ9twZ9twZ9twZ9t44n9f70absiI4soKspfktSsWYKmTLmocuUcOn3a4uKyyJP6fq3Y2Fi39rMszJ85c0YpKSkqXbq0y/rSpUtr165dGb6nV69eOnPmjJo1aybDMJScnKzBgwfrP//5j3OfiIgIzZo1SzVq1NCJEyc0btw4NW/eXH/88YeCgoIyPO7o0aMVGRnpXI6JiVFYWJiCg4NVpEiRHDjbnOFwOGSz2RQcHOxxf5CejL5bg75bg75bg75bg75bg75bg75bx1N6v2yZ9M9/2nT2rE1+foYmTDD0r3/5yG4vZXVp2eIpfc+Iv7+/W/t51MPk69ev12uvvab3339fERER2rdvn55++mmNHz9eY8aMkSS1b9/euX/dunUVERGhihUrauHChRo4cGCGx/Xz85Ofn1+69Xa7Pc/94m02W56sK7+j79ag79ag79ag79ag79ag79ag79bJy72PiZGGD5dmzjSX69WTPvnEpttvt1laV07Iy32/HnfrtSzMlypVSl5eXjp16pTL+lOnTmX6vPuYMWPUp08fPf7445KkOnXqKC4uTk888YSef/75DE+6WLFiql69uvbt25fzJwEAAAAAHuqHH6S+faVDhySbTRo5UnrpJSmD65zIgyz7isLX11cN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57N1TEny8/OTn1/6f1HZ7fY894u32Wx5sq78jr5bg75bg75bg75bg75bg77nvsuXpb17026DNwzpyJEgpaR4STID/N9/SwEBVz8Db/v/W+jT34WLm8PfvDU8te/u1ut2mP/2228lSQMGDND//ve/m75i7evrq4YNGyoqKkqdO3eWZH57EhUVpWHDhmX4nsuXL6c7MS8vL0nmlwzZOSYAAACQ18XFmVO+RUdLp0+n/XztcurPly+7vt8w7Dp5srDLuokTpWHDXJ+BB+A5svzM/MyZM3PswyMjI9WvXz81atRIjRs31pQpUxQXF+ccib5v374qV66cJkyYIEnq2LGjJk+erAYNGjhvsx8zZow6duzoDPU3OiYAAABgtbg490J56uvacO4OX18pMTF1yVCpUld09qy/DMO8OHbvvQR5wJO5Fea7du3q9gGXLl3q9r49evRQdHS0XnzxRZ08eVL169fX6tWrnQPYHTlyxOVK/AsvvCCbzaYXXnhBx44dU3BwsDp27KhXX33V7WMCAAAAOckwMr9ynllgv3Il65/j7y8FB5uvkJCMf756ec8eqVEj8712u6FKlWJ07py/DCNnzx+ANdwK80WLFs21AoYNG5bpLfDr1693Wfb29tbYsWM1duzYbB8TAAAAuB7DkC5dcv+q+enTUnYmQPL3dy+Up/5cqJCUwaRSmcrKvgA8j1thPidvrQcAAEDBs3evFBtrBuX4eOnYMTNsBgVJ1arl7mdfHc7duWoeHZ29cB4QcOMr51f/nNVwnlVBQTe3HUDeluVn5gEAAICs2LtXql7d/Nlulxo2lLZuTRtpfc+erAV6wzC/GMjKgHAJCVmvOyAg61fO85Jq1czeXv0lir//rfsSBUDucivM33HHHYqKilLx4sXVoEED2a7zFeKvv/6aY8UBAADA88XGXn97TIz5cveqeXbDeWCge6H86ivnni41sDscZg9DQswvVAB4PrfCfKdOnZzzsKdO+QYAAABklWFIBw4UlcORdnGoSRMpKSnrxypUyL1Qnp/COQCkcivMjx07VjNmzNCjjz56w8HnAAAAgFSGIe3cefWyXWfPBrjskxrkU8O5u7e2BwbewhMBgDzG7WfmBw0apAceeEAhISGSpLJly2rDhg0KDw/PrdoAAADgoS5ckObNk6ZNk7Zvv3qLobJl43TiRKBzvvMvv5Ratzaf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8OBBnTx5Um3atHGuK1q0qCIiIrRx40Y98sgj2rhxo4oVK+YM8pLUpk0b2e12bdq0SV26dMnw2BMmTNC4cePSrY+OjlZ8fLzbNcbGSnM+cSghMU9+P3JDfr429e1tV1CQ1ZXkvmLFiunMmTNauXKl7rzzTq1Zs0axsbHavn273nzzTfXv31/PP/+8zp07p9dff935uMLjjz+uxo0bKzg4WG+//bb+/e9/67HHHlN8fHyW/lYAAABwayUlJcnhcCglJUXJyclWl4MCLiUlRQ6HQ2fPnpWPj4/LttjYWLeO4TFh/uTJk5Kk0qVLu6wvXbq0c9vJkycVEhList3b21slSpRw7pOR0aNHKzIy0rmcemU+ODg4S1dbExKkw0eTdU/XeJUMcbj9vrzg7Gm7opb6y9fXW9e0MF8KCQnRokWL9PLLL+vSpUu66667VLt2bZUsWVLTpk3TxIkT1atXLx04cED/+Mc/1Lp1a9WuXVsjRoxwPj+/detWnTt3Tj169NCzzz6r06dPq3nz5vrXv/5l8dkBAADgWvHx8YqNjZW3t7dzymfAKt7e3rLb7SpZsmS6K/PXLmd6jNwozNP4+fnJz88v3Xq73S673e72cWw2yTDsKlVaCi3vWYNppNZus9mVhVP2aPfcc4/uueceSeajFmXKlFH58uW1fPlyLViwQJJUtWpV3XXXXdq4caNuv/1253uTk5M1YsQIffbZZ/r0008VEhKi999/X//4xz/UsWNHVa5c2ZJzAgAAQMbsdrtsNpvzdbVz527to7KFC0slSty6z8tt1z4inRteeuklLV++XL/99luufYYk9enTR7Vq1dJ//vOfbB/jkUce0Z133qlnn302031S/w4zypzuZlCPCfNlypSRJJ06dcplxL9Tp06pfv36zn1SRwVMlZycrHPnzjnfD6Q6ceKE829p/Pjxat26tRo0aKBChQpp3bp1at26tc6cOaNNmza53LkhSZMmTVKvXr1UpkwZ58wBkvkPJbMHAAAAeI5z56TRLzh0Of7W3Vkb6G/XhFfsbgf66Ohovfjii1q5cqVOnTql4sWLq169enrxxRfzzWxKy5Yt0+uvv66//vpLDodDFSpU0L333qspU6ZIkp577rlcvwN2+/btWrVqlT744APnurfeektvvPGGJGnkyJEuAX3Tpk168skntWnTJpe7PV544QW1aNFCjz/+uIoWLZpr9XpMmK9UqZLKlCmjqKgoZ3iPiYnRpk2bNGTIEElSkyZNdOHCBW3dulUNGzaUJK1bt04Oh0MRERFWlY486sUXX9QPP/yg5ORkNWnSRNOnT5eXl5cWLlyof//730pOTlZSUpKGDx+uJk2aON+3f/9+rV+/XqtWrZIk9e7dW126dNGiRYvUtGlT1alTx6pTAgAAQBZduiRdjneozUPxKnULHpU9c9qubxb769Il98N8t27dlJiYqNmzZ6ty5co6deqUoqKidPbs2dwt9haJiopSjx499Oqrr+rBBx+UzWbTzp079fXXXzv3KVy4cK5PN/7OO++oe/fuzs/ZsWOHXnzxRX355ZcyDEMPPPCA7rvvPtWpU0fJyckaPHiwPvroo3SPbdx+++2qUqWKPvnkEw0dOjTX6s1TYf7SpUvat2+fc/ngwYP67bffVKJECVWoUEHDhw/XK6+8omrVqqlSpUoaM2aMypYt67ydo1atWmrXrp0GDRr0f+3dd3hUZf738c9MKgFCCCEJSCAQqRqqQjAgLZTFAsKq/AApgqiElaYUpXeQpkgTkSpF6roLUkQQRHovUgyBwEqIihCSkDrn+YOH2Y0JmmSSDBPer+vKdeXcc58z3/PdWcxnTtO8efOUkpKiPn36qEOHDg+8kz0KhpycGjV8+IJ0y7Gx934qVQrThg1H0r0WFfXf311cgjR//te6evX+iLeWLfsu07lZUdBOswIAAHBEPr4WlSqTHzeyzt4XBrdu3dKePXu0a9cuNWrUSJJUrlw51a1bN9286dOna9GiRbp06ZK8vb31wgsvaMqUKdZgunjxYvXr10/Lly/XwIEDdfXqVbVu3VpLly7VmjVrNHLkSN2+fVuvvfaaZsyYIScnJ0lSYGCgevToobNnz+qrr76Sl5eX3n///T8NqVevXtXAgQO1bds2mc1mNWzYUB999JECAwMznf+vf/1LoaGheu+996xjlSpVSnfa/h9Ps//jpRL3+3L58mVJ0unTp/Xee+9pz549Kly4sFq0aKEZM2bIx8cn0xrS0tK0du1affHFF9axc+fOqXr16mratKkkqXr16jp37pyCg4P14Ycf6tlnn9XTTz+d6fZeeOEFrVq16tEJ84cPH1aTJk2sy/dPbe7atasWL16sQYMGKT4+Xr169dKtW7fUoEEDbdmyJd0NAr744gv16dNHzZo1k9lsVvv27fXxxx/n+74g/9jj1KjclN3TrAAAAPDouH9EeuPGjQoJCcn0Xl/SveusP/74Y5UvX16XLl1S7969NWjQIM2ZM8c6JyEhQR9//LFWrVqlO3fuqF27dnrppZfk5eWlzZs369KlS2rfvr1CQ0P16quvWtf78MMP9f7772v06NHaunWr+vbtq0qVKql58+YZ6khJSVHLli1Vv3597dmzR87Ozho3bpxatWqlkydPytXVNcM6/v7+WrFihU6fPp3uPlV/5vr169bf4+Pj1apVK+vZtLdu3VLTpk3Vs2dPzZgxQ3fv3tXgwYP1yiuv6Ntvv810eydPntTt27fTPRktODhYFy5cUFRUlAzD0IULF/Tkk08qIiJCixYt0pEjRzLdliTVrVtX48ePV1JS0gP/N7PVQxXmGzdurD977L3JZNKYMWM0ZsyYB87x9vbWihUr8qI8PKTy+9So3JST06wAAADw6HB2dtbixYutZx/Xrl1bjRo1UocOHVS9enXrvH79+ll/DwwM1Lhx4/TWW2+lC/MpKSmaO3eugoKCJEl///vftWzZMt24cUNFihRRtWrV1KRJE+3cuTNdmA8NDdWQIUMk3TtivnfvXs2YMSPTML969WpZLBZ99tln1qPnixYtkpeXl3bt2qUWLVpkWOcf//iH9uzZo+DgYJUrV04hISFq0aKFOnXq9MAgfP+eaIZhqH379ipWrJjmz58vSfrkk09Uq1YtTZgwwTr/888/V0BAgC5cuKBKlSpl2N6VK1fk5OSU7uloVatW1YQJE6z7OXHiRFWtWlVhYWGaMmWKtm7dqlGjRsnFxUUfffSRnn32Weu6pUuXVnJysqKjo1WuXLlM98FWD1WYB2yRf6dG5SbH+vIBAAAA+a99+/Z67rnntGfPHu3fv19ff/21pkyZos8++0zdunWTJH3zzTeaOHGizp07p9jYWKWmpioxMVEJCQny8PCQJHl4eFiDvHTvMd+BgYHprkX38/PLcFPx/71/1P3l+zem+6MTJ07op59+UtGiRdONJyYmKiIiItN1ChcurE2bNikiIkI7d+7U/v37NXDgQH300Ufat2+ftf7MvP/++9q3b58OHz6sQoUKWWvYuXNnptfYR0REZBrm7969Kzc3twyn77/11lt66623rMtLlixR0aJFVb9+fVWuXFmHDh3StWvX1KFD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LswPGTJEsbGxqlKlipycnJSWlqbx48erU6dOkqTo6GhJkp+fX7r1/Pz8rK/90cSJEzV69OgM47/88ku2Ts2PjZX8fdNkJCYp8ZaDhcpEk/x94xUb66SYGHtXkz30HQAAAEBBcefOnSzNc7gw/+WXX+qLL77QihUr9MQTT+j48ePq16+fSpcura5du+Zom0OHDtWAAQOsy7GxsQoICFDJkiXl6emZ5e0kJUnRMakyuSfI3cuxQqUpzqToGA95ejrL19fe1WQPfQcAAABQULi7u2dpnsOF+ffee09Dhgyxni4fHBysK1euaOLEieratav8/f0lSTdu3FCpUqWs6924cUM1a9bMdJtubm5yc3PLMG42m2U2Z/0egSaTZBhmmUxmmUwOFipNJmvt2djlhwJ9BwAAAFBQZDWDOlx8SEhIyLBzTk5O1usKypcvL39/f+3YscP6emxsrA4cOKD69evna60AAAAAAOQFhzsy/8ILL2j8+PEqW7asnnjiCR07dkzTp0/X66+/Lunekc5+/fpp3LhxqlixosqXL6/hw4erdOnSatu2rX2LBwAAAAAgFzhcmJ81a5aGDx+u3r17KyYmRqVLl9abb76pESNGWOcMGjRI8fHx6tWrl27duqUGDRpoy5YtWb72AAAAAACAh5nDhfmiRYtq5syZmjlz5gPnmEwmjRkzRmPGjMm/wgAAAAAAyCcOd808AAAAAACPulw5Mp+SkqLo6GglJCSoZMmS8vb2zo3NAgAAAACATOT4yPydO3c0d+5cNWrUSJ6engoMDFTVqlVVsmRJlStXTm+88YYOHTqUm7UCAAAAAADlMMxPnz5dgYGBWrRokcLCwrRx40YdP35cFy5c0L59+zRy5EilpqaqRYsWatWqlS5evJjbdQMAAAAA8MjK0Wn2hw4d0u7du/XEE09k+nrdunX1+uuva968eVq0aJH27NmjihUr2lQoAAAAAAC4J0dhfuXKlVma5+bmprfeeisnbwEAAAAAAB4gVx9Nl5KSogsXLigtLU2VK1eWm5tbbm4eAAAAAAAoFx9Nt2fPHgUGBqpJkyZq3LixAgICtGXLltzaPAAAAAAA+P9yHOYtFku65X79+umLL75QTEyMbt68qXHjxuntt9+2uUAAAAAAAJBejsN8vXr1dPToUetycnKyypYta10uW7asEhMTbasOQIGTlJSkPn36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E+Xj61iB/tcYs75Z6664OMI8ACD35SjMf/XVV1me++KLL+bkLQAAAKx8fC0qVcawdxnZ5FhfPgAAHEuOwvz9x7v8FZPJlOmd7gEAAFAwLVq0SK+//ro2bNigtm3basKECVqyZIkuXryo9evXp/s78s0339QPP/ygkiVLasOGDSpWrJgMw1Dr1q31ySefKCgoyH47AgAPuRw9ms5isWTphyAPAADw6Lh8+bIWLFigkJAQ61hYWJi+/vprPfvss+nmnj59WhcvXtSpU6fUuHFjLVu2TJL02WefqUmTJgR5APgLNj9nHgAAALBYLOrZs6dmzZolNzc363jdunVVoUKFDPNdXFyUlJQki8Wi+Ph4ubq66vr161q5cqUGDBiQn6UDgEPKlTC/Y8cOPf/88woKClJQUJCef/55ffPNN7mxaQAAADiA6dOnKzQ0VHXq1MnS/MqVK6tJkyaqXbu2Ll26pM6dO6t///768MMP5eycK/doBoACzeYwP2fOHLVq1UpFixZV37591bdvX3l6eqp169aaPXt2btQIAACAh9jp06e1bt06DRs2LFvrjRs3TsePH9eaNWu0fft2BQQEKDAwUN27d1f79u21evXqPKoYAByfzV97TpgwQTNmzFCfPn2sY++8845CQ0M1YcIEhYeH2/oWAAAAeIjt2bNHly9fVsWKFSVJ0dHR6tWrl65fv6633377L9ePjY3V1KlTtXXrVk2cOFGNGjVS586dVaNGDb344osqVKhQXu8CADgcm4/M37p1S61atcow3qJFC92+fdvWzQMAAOAh9/bbb+v69eu6fPmyLl++rJCQEH366adZCvKSNGTIEI0YMUIeHh6Kj4+XyWSSyWRSSkqKkpOT87h6AHBMNof5F198URs2bMgw/s9//lPPP/+8rZsHAACAAxs3bpzKlCmjffv2qWfPnipTpox++eUX6+t79+7V3bt31bx5c0lSeHi4Zs+ereDgYL322msqVqyYvUoHgIeazafZV6tWTePHj9euXbtUv359SdL+/fu1d+9eDRw4UB9//LF17jvvvGPr26UzadIkDR06VH379tXMmTMlSYmJiRo4cKBWrVqlpKQktWzZUnPmzJGfn1+uvjcAAAAyt2vXLuvvw4YN+9Nr6UNDQxUaGmpdDgoK0sGDB/OyPAAoEGwO8wsXLlTx4sV19uxZnT171jru5eWl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5kzNnj07wz7MnTtXQUFBmjZtmiSpcuXK1sB+X1RUlNq3b6/g4GBJUoUKFWzsHAAADx+OzAMA8IioXr269fdSpUpJkmJiYqxj5cqVswZ56d4p9HFxcSpRooSKFCli/YmMjFRERIQkacCAAerZs6fCwsI0adIk6/h9Hh4e1iB//33vv2dsbKx+/vlnhYaGplsnNDRUP/74Y6b78OOPP6pevXrpxurXr59u+Z133tG4ceMUGhqqkSNH6uTJk3/eGAAAHBBhHgCAR8T/nv5uMpkk3btm/b7ChQunmx8XF6dSpUrp+PHj6X7Onz+v9957T9K9a+3PnDmj5557Tt9++62qVaumDRs2ZPqe99/XMIxc37f/1bNnT126dEmvvfaaTp06paeeekqzZs3K0/cEACC/EeYBAECmateurejoaDk7O+vxxx9P9+Pj42OdV6lSJfXv31/btm1Tu3bttGjRoixt39PTU6VLl9bevXvTje/du1fVqlXLdJ2qVavq4MGD6cb279+fYV5AQIDeeustrV+/XgMHDtSCBQuyVBMAAI6CMA8AADIVFham+vXrq23bttq2bZsuX76sH374QR988IEOHz6su3fvqk+fPtq1a5euXLmivXv36tChQ6patWqW3+O9997T5MmTtXr1ap0/f15DhgzR8ePH1bdv30znv/XWW7p48aLee+89nT9/XitWrNDixYvTzenXr5+2bt2qyMhIHT16VDt37sxWTQAAOAJugAcAADJlMpm0efNmffDBB+revbt++eUX+fv769lnn5Wfn5+cnJz022+/qUuXLrpx44Z8fHzUrl07jR49Osvv8c477+j27dsaOHCgYmJiVK1aNX311VcZbqR3X9myZbVu3Tr1799fs2bNUt26dTVhwoR0d+ZPS0tTeHi4rl27Jk9PT7Vq1UozZsywuR8AADxMTEZeX7gGAAAAAAByFafZAwAAAADgYAjzAAAAAAA4GMI8AAAAAAAOhjAPAAAAAICDIcwDAAAAAOBgCPMAAAAAADgYwjwAAAAAAA6GMA8AAAAAgIMhzAMAAAAA4GAI8wAAAAAAOBjCPAAAAAAADub/AYpw0GRoElQ+AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_model_accuracies(scores=all_claim_scores, correct_indicators=all_claim_grades, title=\"LLM Accuracy by Claim Confidence Threshold\", display_percentage=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since, we have selected a threshold of 0.35, we can measure LLM accuracy with and without UAD." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Baseline LLM factual precision: 0.6257668711656442\n", "UAD-Improved LLM factual precision: 0.7381818181818182\n" ] } ], "source": [ "thresh = 1 / 3\n", "filtered_grades, filtered_scores = [], []\n", "for grade, score in zip(all_claim_grades, all_claim_scores):\n", " if score > thresh:\n", " filtered_grades.append(grade)\n", " filtered_scores.append(score)\n", "\n", "print(f\"Baseline LLM factual precision: {np.mean(all_claim_grades)}\")\n", "print(f\"UAD-Improved LLM factual precision: {np.mean(filtered_grades)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Scorer Definitions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Long-form uncertainty quantification implements a three-stage pipeline after response generation:\n", "\n", "1. Response Decomposition: The response $y$ is decomposed into units (claims or sentences), where a unit as denoted as $s$.\n", "\n", "2. Unit-Level Confidence Scoring: Confidence scores are computed using function $c_g(s;\\cdot) \\in [0, 1]$. Higher scores indicate greater likelihood of factual correctness. Units with scores below threshold $\\tau$ are flagged as potential hallucinations.\n", "\n", "3. Response-Level Aggregation: Unit scores are combined to provide an overall response confidence.\n", "\n", "Graph-based scorers, proposed by [Jiang et al., 2024](https://arxiv.org/abs/2410.20783), decompose original and sampled responses into claims, obtain the union of unique claims across all responses, and compute graph centrality metrics on the bipartite graph of claim-response entailment to measure uncertainty. These scorers operate only at the claim level, as sentences typically contain multiple claims, meaning their union is not well-defined. Formally, we denote a bipartite graph $G$ with node set $V = \\mathbf{s} \\cup \\mathbf{y}$, where $\\mathbf{y}$ is a set of $m$ responses generated from the same prompt and $\\mathbf{s}$ is the union of all unique claims across those decomposed responses. In particular, an edge exists between a claim-response pair $(s, y) \\in \\mathbf{s} \\times \\mathbf{y}$ if and only if claim $s$ is entailed in response $y$. We define the following graph metrics for claim $s$:\n", "\n", " - **Degree Centrality** - $\\frac{1}{m} \\sum_{j=1}^m P(\\text{entail}|y_j, s)$ is the average edge weight, measured by entailment probability for claim node $s$. \n", "\n", " - **Betweenness Centrality** - $\\frac{1}{B_{\\text{max}}}\\sum_{u \\neq v \\neq s} \\frac{\\sigma_{uv}(s)}{\\sigma_{uv}}$ measures uncertainty by calculating the proportion of shortest paths between node pairs that pass through node $s$, where $\\sigma_{uv}$ represents all shortest paths between nodes $u$ and $v$, and $B_{\\text{max}}$ is the maximum possible value.\\footnote{Specifically, $B_{\\text{max}}=\\frac{1}{2} [m^2 (p + 1)^2 + m (p + 1)(2t - p - 1) - t (2p - t + 3)]$, $p = \\frac{(|\\mathbf{s}| - 1)}{m}$, and $t = (|\\mathbf{s}| - 1) \\mod m$.}\n", "\n", "\n", " - **Closeness Centrality** - $\\frac{m + 2(|\\mathbf{s}| - 1) }{\\sum_{v \\neq s}dist(s, v)}$ measures the inverse sum of distances to all other nodes, normalized by the minimum possible distance.\n", "\n", " - **Harmonic Centrality** - $\\frac{1}{H_{\\text{max}}}\\sum_{v \\neq s}\\frac{1}{dist(s, v)}$ is the sum of inverse of distances to all other nodes, normalized by the maximum possible value, where $H_{\\text{max}}=m + \\frac{ |\\mathbf{s}| - 1}{2}$.\n", "\n", " - **Laplacian Centrality** - $\\frac{E_L (G)-E_L (G_{\\text{-} s})}{E_L (G)}$ is the proportional drop in Laplacian energy $E_L (G)$ resulting from dropping node $s$ from the graph, where $G_{\\text{-}s}$ denotes the graph $G$ with node $s$ removed, $E_L (G) = \\sum_{i} \\lambda_i^2$, and $\\lambda_i$ are the eigenvalues of $G$'s Laplacian matrix.\n", "\n", " - **PageRank** - $ \\frac{1-d}{|V|} + d \\sum_{v \\in N(s)} \\frac{C_{PR}(v)}{N(v)}$ is the stationary distribution probability of a random walk with restart probability $(1-d)$, where $N(s)$ denotes the set of neighboring nodes of $s$ and $C_{PR}(v)$ is PageRank of node $v$.\n", "\n", "where $\\mathbf{y}^{(s)}_{\\text{cand}} = {y_1^{(s)}, ..., y_m^{(s)}}$ are $m$ candidate responses." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ยฉ 2025 CVS Health and/or one of its affiliates. All rights reserved." ] } ], "metadata": { "environment": { "kernel": "uqlm_my_test", "name": "workbench-notebooks.m126", "type": "gcloud", "uri": "us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-notebooks:m126" }, "kernelspec": { "display_name": "uqlm_my_test", "language": "python", "name": "uqlm_my_test" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.12" } }, "nbformat": 4, "nbformat_minor": 4 }