{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Splink data linking demo (link only)\n", "\n", "In this demo we link two small datasets. \n", "\n", "The larger table contains duplicates, but in this notebook we use the `link_only` setting, so `splink` makes no attempt to deduplicate these records. \n", "\n", "Note it is possible to simultaneously link and dedupe using the `link_and_dedupe` setting.\n", "\n", "**Important** Where deduplication is not required, `link_only` can provide an important performance boost by dramatically reducing the number of records which need to be compared.\n", "\n", "For example, if you wanted to link 10 records to 1,000, then the maximum number of comparisons that need to be made (i.e. with no blocking rules) is 10,000. If you need to dedupe as well, that number would be n(n-1)/2 = 509,545.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 1: Imports and setup\n", "\n", "The following is just boilerplate code that sets up the Spark session and sets some other non-essential configuration options" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pandas as pd \n", "pd.options.display.max_columns = 500\n", "pd.options.display.max_rows = 100\n", "import altair as alt\n", "alt.renderers.enable('mimetype')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import logging \n", "logging.basicConfig() # Means logs will print in Jupyter Lab\n", "\n", "# Set to DEBUG if you want splink to log the SQL statements it's executing under the hood\n", "logging.getLogger(\"splink\").setLevel(logging.INFO)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from utility_functions.demo_utils import get_spark\n", "spark = get_spark()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 2: Read in the data\n", "\n", "In this example, we link two datasets, but you can link as many as you like.\n", "\n", "⚠️ Note that `splink` makes the following assumptions about your data:\n", "\n", "- There is a field containing a unique record identifier in each dataset. By default, this should be called `unique_id`, but you can change this in the settings\n", "- There is a field containing a dataset name in each dataset, to disambiguate the `unique_id` column if the same id values occur in more than one dataset. By default, this column is called `source_dataset`, but you can change this in the settings.\n", "- The two datasets being linked have common column names - e.g. date of birth is represented in both datasets in a field of the same name. In many cases, this means that the user needs to rename columns prior to using `splink`\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The count of rows in `df_1` is 181\n", "+---------+----------+-------+----------+------------+--------------------+-----+--------------+\n", "|unique_id|first_name|surname| dob| city| email|group|source_dataset|\n", "+---------+----------+-------+----------+------------+--------------------+-----+--------------+\n", "| 0| Julia | null|2015-10-29| London| hannah88@powers.com| 0| df_1|\n", "| 4| oNah| Watson|2008-03-23| Bolton|matthew78@ballard...| 1| df_1|\n", "| 13| Molly | Bell|2002-01-05|Peterborough| null| 2| df_1|\n", "| 15| Alexander|Amelia |1983-05-19| Glasgow|ic-mpbell@alleale...| 3| df_1|\n", "| 20| Ol vri|ynnollC|1972-03-08| Plymouth|derekwilliams@nor...| 4| df_1|\n", "+---------+----------+-------+----------+------------+--------------------+-----+--------------+\n", "only showing top 5 rows\n", "\n", "The count of rows in `df_2` is 819\n", "+---------+----------+-------+----------+------+--------------------+-----+--------------+\n", "|unique_id|first_name|surname| dob| city| email|group|source_dataset|\n", "+---------+----------+-------+----------+------+--------------------+-----+--------------+\n", "| 1| Julia | Taylor|2015-07-31|London| hannah88@powers.com| 0| df_2|\n", "| 2| Julia | Taylor|2016-01-27|London| hannah88@powers.com| 0| df_2|\n", "| 3| Julia | Taylor|2015-10-29| null| hannah88opowersc@m| 0| df_2|\n", "| 5| Noah | Watson|2008-03-23|Bolton|matthew78@ballard...| 1| df_2|\n", "| 6| Watson| Noah |2008-03-23| null|matthew78@ballard...| 1| df_2|\n", "+---------+----------+-------+----------+------+--------------------+-----+--------------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "from pyspark.sql.functions import lit \n", "df_1 = spark.read.parquet(\"data/fake_df_l.parquet\")\n", "df_1 = df_1.withColumn(\"source_dataset\", lit(\"df_1\"))\n", "df_2 = spark.read.parquet(\"data/fake_df_r.parquet\")\n", "df_2 = df_2.withColumn(\"source_dataset\", lit(\"df_2\"))\n", "print(f\"The count of rows in `df_1` is {df_1.count()}\")\n", "df_1.show(5)\n", "print(f\"The count of rows in `df_2` is {df_2.count()}\")\n", "df_2.show(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 3: Configure splink using the `settings` object\n", "\n", "Most of `splink` configuration options are stored in a settings dictionary. This dictionary allows significant customisation, and can therefore get quite complex. \n", "\n", "💥 We provide an tool for helping to author valid settings dictionaries, which includes tooltips and autocomplete, which you can find [here](http://robinlinacre.com/splink_settings_editor/).\n", "\n", "Customisation overrides default values built into splink. For the purposes of this demo, we will specify a simple settings dictionary, which means we will be relying on these sensible defaults.\n", "\n", "To help with authoring and validation of the settings dictionary, we have written a [json schema](https://json-schema.org/), which can be found [here](https://github.com/moj-analytical-services/splink/blob/master/splink/files/settings_jsonschema.json). \n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# The comparison expression allows for the case where a first name and surname have been inverted \n", "sql_case_expression = \"\"\"\n", "CASE \n", "WHEN first_name_l = first_name_r AND surname_l = surname_r THEN 4 \n", "WHEN first_name_l = surname_r AND surname_l = first_name_r THEN 3\n", "WHEN first_name_l = first_name_r THEN 2\n", "WHEN surname_l = surname_r THEN 1\n", "ELSE 0 \n", "END\n", "\"\"\"\n", "\n", "settings = {\n", " \"link_type\": \"link_only\", \n", " \"max_iterations\": 20,\n", " \"blocking_rules\": [\n", " ],\n", " \"comparison_columns\": [\n", " {\n", " \"custom_name\": \"name_inversion\",\n", " \"custom_columns_used\": [\"first_name\", \"surname\"],\n", " \"case_expression\": sql_case_expression,\n", " \"num_levels\": 5\n", " },\n", " {\n", " \"col_name\": \"city\",\n", " \"num_levels\": 3\n", " },\n", " {\n", " \"col_name\": \"email\",\n", " \"num_levels\": 3\n", " },\n", " {\n", " \"col_name\": \"dob\"\n", " }\n", " ],\n", " \"additional_columns_to_retain\": [\"group\"]\n", " \n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In words, this setting dictionary says:\n", "\n", "- We are performing a data linking task (the other options are `dedupe_only`, or `link_and_dedupe`)\n", "- Since the input datasets are so small, we do not specify any blocking rules and instead generate all possible comparisons.\n", "- When comparing records, we will use information from the `first_name`, `surname`, `city` and `email` columns to compute a match score.\n", "- For the comparisons on the `first_name` and `surname` column we allow the possibility that the names have been inputted in the wrong order. \n", " - The highest level of similarity is that both `first_name` and `surname` both match.\n", " - There are other levels of similarity for the names being inverted, and just first name, or just surname matching.\n", "- We will retain the `group` column in the results even though this is not used as part of comparisons. This is a labelled dataset and `group` contains the true match - i.e. where group matches, the records pertain to the same person" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 4: Estimate match scores using the Expectation Maximisation algorithm" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/robinlinacre/anaconda3/lib/python3.8/site-packages/splink/default_settings.py:199: UserWarning: You have not specified any blocking rules, meaning all comparisons between the input dataset(s) will be generated and blocking will not be used.For large input datasets, this will generally be computationally intractable because it will generate comparisons equal to the number of rows squared.\n", " warnings.warn(\n", "INFO:splink.iterate:Iteration 0 complete\n", "INFO:splink.model:The maximum change in parameters was 0.40568520724773405 for key name_inversion, level 4\n", "INFO:splink.iterate:Iteration 1 complete\n", "INFO:splink.model:The maximum change in parameters was 0.06933289766311646 for key email, level 1\n", "INFO:splink.iterate:Iteration 2 complete\n", "INFO:splink.model:The maximum change in parameters was 0.02503591775894165 for key dob, level 0\n", "INFO:splink.iterate:Iteration 3 complete\n", "INFO:splink.model:The maximum change in parameters was 0.009511321783065796 for key dob, level 0\n", "INFO:splink.iterate:Iteration 4 complete\n", "INFO:splink.model:The maximum change in parameters was 0.004227638244628906 for key dob, level 0\n", "INFO:splink.iterate:Iteration 5 complete\n", "INFO:splink.model:The maximum change in parameters was 0.0022344589233398438 for key dob, level 0\n", "INFO:splink.iterate:Iteration 6 complete\n", "INFO:splink.model:The maximum change in parameters was 0.001312553882598877 for key dob, level 1\n", "INFO:splink.iterate:Iteration 7 complete\n", "INFO:splink.model:The maximum change in parameters was 0.0008212625980377197 for key dob, level 0\n", "INFO:splink.iterate:Iteration 8 complete\n", "INFO:splink.model:The maximum change in parameters was 0.0005371570587158203 for key dob, level 0\n", "INFO:splink.iterate:Iteration 9 complete\n", "INFO:splink.model:The maximum change in parameters was 0.0003641173243522644 for key city, level 0\n", "INFO:splink.iterate:Iteration 10 complete\n", "INFO:splink.model:The maximum change in parameters was 0.0002571418881416321 for key city, level 0\n", "INFO:splink.iterate:Iteration 11 complete\n", "INFO:splink.model:The maximum change in parameters was 0.0001854151487350464 for key city, level 0\n", "INFO:splink.iterate:Iteration 12 complete\n", "INFO:splink.model:The maximum change in parameters was 0.0001360774040222168 for key city, level 0\n", "INFO:splink.iterate:Iteration 13 complete\n", "INFO:splink.model:The maximum change in parameters was 0.0001013725996017456 for key city, level 0\n", "INFO:splink.iterate:Iteration 14 complete\n", "INFO:splink.model:The maximum change in parameters was 7.649511098861694e-05 for key city, level 0\n", "INFO:splink.iterate:EM algorithm has converged\n" ] }, { "data": { "text/plain": [ "DataFrame[match_probability: double, source_dataset_l: string, unique_id_l: bigint, source_dataset_r: string, unique_id_r: bigint, first_name_l: string, first_name_r: string, surname_l: string, surname_r: string, gamma_name_inversion: int, city_l: string, city_r: string, gamma_city: int, email_l: string, email_r: string, gamma_email: int, dob_l: string, dob_r: string, gamma_dob: int, group_l: bigint, group_r: bigint]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from splink import Splink\n", "\n", "linker = Splink(settings, [df_1, df_2], spark)\n", "df_e = linker.get_scored_comparisons()\n", "\n", "# Later, we will make term frequency adjustments. \n", "# Persist caches these results in memory, preventing them having to be recomputed when we make these adjustments.\n", "df_e.persist() \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 5: Inspect results \n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "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", " \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", " \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", " \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", " \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", " \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", " \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", "
match_probabilitysource_dataset_lunique_id_lsource_dataset_runique_id_rfirst_name_lfirst_name_rsurname_lsurname_rgamma_name_inversioncity_lcity_rgamma_cityemail_lemail_rgamma_emaildob_ldob_rgamma_dobgroup_lgroup_r
584991.0df_1419df_2422EmilyBrownBrownEmily3LndonLondon1sarahbrown@mckinney.comsarahnron@mckinbey.com12005-07-152005-07-1517171
799301.0df_1581df_2585EleanorShawShawEleanor3BirminghamBirmingha1stephaniewebbhart.netstephaniewebb@hart.net11979-03-311979-03-3119797
931011.0df_1664df_2668IvyTaylorTaylorIvy3LononLondon1jonesjennmfer@pitt.coijonesjennifer@pitts.com11980-01-131980-01-131113113
931061.0df_1664df_2673IvyTaylorTaylorIvy3LononLondon1jonesjennmfer@pitt.coijonesjennifer@pitts.com11980-01-131980-01-131113113
24711.0df_115df_218AlexanderAmeliaAmeliaAlexander3GlasgowGlasgow2ic-mpbell@allealewis.orgicampbell@allen-lewis.org11983-05-191983-05-19133
1375311.0df_1924df_2926MillsThomasThomasMills3LondonLondon2hensondebbie@garcia.comhensondrbbie@gaeia.com11970-03-091970-03-091167167
791051.0df_1574df_2578GeorgeWilliamsWilliamsGeorge3LondonLondon2desek58gibbr.bizderek58@gibbs.biz11981-08-061981-08-0619696
791041.0df_1574df_2577GeorgeWilliamsWilliamsGeorge3LondonLondon2desek58gibbr.bizderek58@gibbs.biz11981-08-061981-08-0619696
1424791.0df_1960df_2966GabrielBartlettBartlettGabriel3WolverhamptonWolverhampton2ogomez@robinson-mckinney.comogomez@rob-nsonimcknney.com11973-12-091973-12-091173173
296571.0df_1209df_2210ThompsonFreddieFreddieThompson3PeterboroughPeterborough2scottsalinas@hughes-lopez.comscottsalinah@ughes-lopez.com11999-07-231999-07-2313636
733221.0df_1517df_2521BrownMarthaMarthaBrown3Southend-on-SeaSouthend-on-Sea2watsonthomas@jones-stuart.bizwatsonthomas@onesistuart.b-z12002-09-012002-09-0118989
733271.0df_1517df_2526BrownMarthaMarthaBrown3Southend-on-SeaSouthend-on-Sea2watsonthomas@jones-stuart.bizwatsonthomas@jones-s.urttbiz12002-09-012002-09-0118989
1029761.0df_1726df_2727HarryLawrenceLawrenceHarry3Stoke-on-TrentStoke-on-Trent2aarbarpace@mbnning.orgbarbarapace@manning.org12016-12-252016-12-251125125
931021.0df_1664df_2669IvyIvyTaylorTaylor4LononLodno1jonesjennmfer@pitt.coijonesjennifer@pitts.com11980-01-131980-01-131113113
791021.0df_1574df_2575GeorgeGeorgeWilliamsWilliams4LondonLndon1desek58gibbr.bizderek58@gibbs.biz11981-08-061981-08-0619696
931001.0df_1664df_2667IvyIvyTaylorTaylor4LononLondon1jonesjennmfer@pitt.coijonesjennifer@pitts.com11980-01-131980-01-131113113
1029791.0df_1726df_2730HarryHarryLawrenceLawrence4Stoke-on-TrentStoke-on-ernt1aarbarpace@mbnning.orgbarbarapace@manning.org12016-12-252016-12-251125125
1284901.0df_1879df_2883LeoLeoJonesJones4LdnonLondon1tcarr@lewis-kline.comtcarr@lweis-kine.com12019-06-152019-06-151156156
799341.0df_1581df_2589EleanorEleanorShawShaw4BirminghamBirmingham2stephaniewebbhart.netstephaniewebb@hart.net11979-03-311979-03-3119797
791031.0df_1574df_2576GeorgeGeorgeWilliamsWilliams4LondonLondon2desek58gibbr.bizderek58@gibbs.biz11981-08-061981-08-0619696
\n", "
" ], "text/plain": [ " match_probability source_dataset_l unique_id_l source_dataset_r \\\n", "58499 1.0 df_1 419 df_2 \n", "79930 1.0 df_1 581 df_2 \n", "93101 1.0 df_1 664 df_2 \n", "93106 1.0 df_1 664 df_2 \n", "2471 1.0 df_1 15 df_2 \n", "137531 1.0 df_1 924 df_2 \n", "79105 1.0 df_1 574 df_2 \n", "79104 1.0 df_1 574 df_2 \n", "142479 1.0 df_1 960 df_2 \n", "29657 1.0 df_1 209 df_2 \n", "73322 1.0 df_1 517 df_2 \n", "73327 1.0 df_1 517 df_2 \n", "102976 1.0 df_1 726 df_2 \n", "93102 1.0 df_1 664 df_2 \n", "79102 1.0 df_1 574 df_2 \n", "93100 1.0 df_1 664 df_2 \n", "102979 1.0 df_1 726 df_2 \n", "128490 1.0 df_1 879 df_2 \n", "79934 1.0 df_1 581 df_2 \n", "79103 1.0 df_1 574 df_2 \n", "\n", " unique_id_r first_name_l first_name_r surname_l surname_r \\\n", "58499 422 Emily Brown Brown Emily \n", "79930 585 Eleanor Shaw Shaw Eleanor \n", "93101 668 Ivy Taylor Taylor Ivy \n", "93106 673 Ivy Taylor Taylor Ivy \n", "2471 18 Alexander Amelia Amelia Alexander \n", "137531 926 Mills Thomas Thomas Mills \n", "79105 578 George Williams Williams George \n", "79104 577 George Williams Williams George \n", "142479 966 Gabriel Bartlett Bartlett Gabriel \n", "29657 210 Thompson Freddie Freddie Thompson \n", "73322 521 Brown Martha Martha Brown \n", "73327 526 Brown Martha Martha Brown \n", "102976 727 Harry Lawrence Lawrence Harry \n", "93102 669 Ivy Ivy Taylor Taylor \n", "79102 575 George George Williams Williams \n", "93100 667 Ivy Ivy Taylor Taylor \n", "102979 730 Harry Harry Lawrence Lawrence \n", "128490 883 Leo Leo Jones Jones \n", "79934 589 Eleanor Eleanor Shaw Shaw \n", "79103 576 George George Williams Williams \n", "\n", " gamma_name_inversion city_l city_r gamma_city \\\n", "58499 3 Lndon London 1 \n", "79930 3 Birmingham Birmingha 1 \n", "93101 3 Lonon London 1 \n", "93106 3 Lonon London 1 \n", "2471 3 Glasgow Glasgow 2 \n", "137531 3 London London 2 \n", "79105 3 London London 2 \n", "79104 3 London London 2 \n", "142479 3 Wolverhampton Wolverhampton 2 \n", "29657 3 Peterborough Peterborough 2 \n", "73322 3 Southend-on-Sea Southend-on-Sea 2 \n", "73327 3 Southend-on-Sea Southend-on-Sea 2 \n", "102976 3 Stoke-on-Trent Stoke-on-Trent 2 \n", "93102 4 Lonon Lodno 1 \n", "79102 4 London Lndon 1 \n", "93100 4 Lonon London 1 \n", "102979 4 Stoke-on-Trent Stoke-on-ernt 1 \n", "128490 4 Ldnon London 1 \n", "79934 4 Birmingham Birmingham 2 \n", "79103 4 London London 2 \n", "\n", " email_l email_r \\\n", "58499 sarahbrown@mckinney.com sarahnron@mckinbey.com \n", "79930 stephaniewebbhart.net stephaniewebb@hart.net \n", "93101 jonesjennmfer@pitt.coi jonesjennifer@pitts.com \n", "93106 jonesjennmfer@pitt.coi jonesjennifer@pitts.com \n", "2471 ic-mpbell@allealewis.org icampbell@allen-lewis.org \n", "137531 hensondebbie@garcia.com hensondrbbie@gaeia.com \n", "79105 desek58gibbr.biz derek58@gibbs.biz \n", "79104 desek58gibbr.biz derek58@gibbs.biz \n", "142479 ogomez@robinson-mckinney.com ogomez@rob-nsonimcknney.com \n", "29657 scottsalinas@hughes-lopez.com scottsalinah@ughes-lopez.com \n", "73322 watsonthomas@jones-stuart.biz watsonthomas@onesistuart.b-z \n", "73327 watsonthomas@jones-stuart.biz watsonthomas@jones-s.urttbiz \n", "102976 aarbarpace@mbnning.org barbarapace@manning.org \n", "93102 jonesjennmfer@pitt.coi jonesjennifer@pitts.com \n", "79102 desek58gibbr.biz derek58@gibbs.biz \n", "93100 jonesjennmfer@pitt.coi jonesjennifer@pitts.com \n", "102979 aarbarpace@mbnning.org barbarapace@manning.org \n", "128490 tcarr@lewis-kline.com tcarr@lweis-kine.com \n", "79934 stephaniewebbhart.net stephaniewebb@hart.net \n", "79103 desek58gibbr.biz derek58@gibbs.biz \n", "\n", " gamma_email dob_l dob_r gamma_dob group_l group_r \n", "58499 1 2005-07-15 2005-07-15 1 71 71 \n", "79930 1 1979-03-31 1979-03-31 1 97 97 \n", "93101 1 1980-01-13 1980-01-13 1 113 113 \n", "93106 1 1980-01-13 1980-01-13 1 113 113 \n", "2471 1 1983-05-19 1983-05-19 1 3 3 \n", "137531 1 1970-03-09 1970-03-09 1 167 167 \n", "79105 1 1981-08-06 1981-08-06 1 96 96 \n", "79104 1 1981-08-06 1981-08-06 1 96 96 \n", "142479 1 1973-12-09 1973-12-09 1 173 173 \n", "29657 1 1999-07-23 1999-07-23 1 36 36 \n", "73322 1 2002-09-01 2002-09-01 1 89 89 \n", "73327 1 2002-09-01 2002-09-01 1 89 89 \n", "102976 1 2016-12-25 2016-12-25 1 125 125 \n", "93102 1 1980-01-13 1980-01-13 1 113 113 \n", "79102 1 1981-08-06 1981-08-06 1 96 96 \n", "93100 1 1980-01-13 1980-01-13 1 113 113 \n", "102979 1 2016-12-25 2016-12-25 1 125 125 \n", "128490 1 2019-06-15 2019-06-15 1 156 156 \n", "79934 1 1979-03-31 1979-03-31 1 97 97 \n", "79103 1 1981-08-06 1981-08-06 1 96 96 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Inspect main dataframe that contains the match scores\n", "df_e.toPandas().sort_values(\"match_probability\", ascending=False).head(20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `params` property of the `linker` is an object that contains a lot of diagnostic information about how the match probability was computed. The following cells demonstrate some of its functionality" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v4+json": { "$schema": "https://vega.github.io/schema/vega-lite/v4.json", "config": { "header": { "title": null }, "title": { "anchor": "middle", "offset": 10 }, "view": { "continuousHeight": 300, "continuousWidth": 400, "height": 300, "width": 400 } }, "data": { "name": "data-ceab06ca9a4c907808588fc81343c76f" }, "datasets": { "data-ceab06ca9a4c907808588fc81343c76f": [ { "bayes_factor": 0.33746388159569507, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 0, "level_name": "level_0", "level_proportion": 0.9899958998803806, "log2_bayes_factor": -1.5671949945941157, "m_probability": 0.3353385925292969, "max_gamma_index": 4, "num_levels": 5, "u_probability": 0.9937021732330322 }, { "bayes_factor": 43.04556551790893, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 1, "level_name": "level_1", "level_proportion": 0.005140347579447535, "log2_bayes_factor": 5.42779271613676, "m_probability": 0.17891953885555267, "max_gamma_index": 4, "num_levels": 5, "u_probability": 0.004156515002250671 }, { "bayes_factor": 82.16842152983283, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 2, "level_name": "level_2", "level_proportion": 0.003082859391495617, "log2_bayes_factor": 6.360512147486598, "m_probability": 0.17386698722839355, "max_gamma_index": 4, "num_levels": 5, "u_probability": 0.002115983050316572 }, { "bayes_factor": 20406.02818466379, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 3, "level_name": "level_3", "level_proportion": 0.0008027577041464385, "log2_bayes_factor": 14.3167077840707, "m_probability": 0.14137406647205353, "max_gamma_index": 4, "num_levels": 5, "u_probability": 6.928054062882438e-06 }, { "bayes_factor": 9258.582412155205, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 4, "level_name": "level_4", "level_proportion": 0.0009781501351920944, "log2_bayes_factor": 13.176575603038243, "m_probability": 0.17050081491470337, "max_gamma_index": 4, "num_levels": 5, "u_probability": 1.8415434169583023e-05 }, { "bayes_factor": 0.09647031769622005, "column_name": "city", "gamma_column_name": "gamma_city", "gamma_index": 0, "level_name": "level_0", "level_proportion": 0.8747266775886633, "log2_bayes_factor": -3.37377107226111, "m_probability": 0.084816575050354, "max_gamma_index": 2, "num_levels": 3, "u_probability": 0.8791986703872681 }, { "bayes_factor": 7.848894447588318, "column_name": "city", "gamma_column_name": "gamma_city", "gamma_index": 1, "level_name": "level_1", "level_proportion": 0.03279609504851985, "log2_bayes_factor": 2.9724894581690755, "m_probability": 0.2478567212820053, "max_gamma_index": 2, "num_levels": 3, "u_probability": 0.03157855197787285 }, { "bayes_factor": 7.479329462081099, "column_name": "city", "gamma_column_name": "gamma_city", "gamma_index": 2, "level_name": "level_2", "level_proportion": 0.09247724580052386, "log2_bayes_factor": 2.902908935207437, "m_probability": 0.6673266887664795, "max_gamma_index": 2, "num_levels": 3, "u_probability": 0.08922279626131058 }, { "bayes_factor": 0.04449680027094667, "column_name": "email", "gamma_column_name": "gamma_email", "gamma_index": 0, "level_name": "level_0", "level_proportion": 0.9945923379461757, "log2_bayes_factor": -4.49015459300374, "m_probability": 0.04449551925063133, "max_gamma_index": 2, "num_levels": 3, "u_probability": 0.9999712109565735 }, { "bayes_factor": 10896992.968579952, "column_name": "email", "gamma_column_name": "gamma_email", "gamma_index": 1, "level_name": "level_1", "level_proportion": 0.0017372362928768847, "log2_bayes_factor": 23.377426741614574, "m_probability": 0.30858883261680603, "max_gamma_index": 2, "num_levels": 3, "u_probability": 2.831871448449874e-08 }, { "bayes_factor": 22489.264303527143, "column_name": "email", "gamma_column_name": "gamma_email", "gamma_index": 2, "level_name": "level_2", "level_proportion": 0.0036704306889567212, "log2_bayes_factor": 14.456948846222605, "m_probability": 0.6469156742095947, "max_gamma_index": 2, "num_levels": 3, "u_probability": 2.876553298847284e-05 }, { "bayes_factor": 0.4109166928436421, "column_name": "dob", "gamma_column_name": "gamma_dob", "gamma_index": 0, "level_name": "level_0", "level_proportion": 0.9966608104918419, "log2_bayes_factor": -1.2830821559768926, "m_probability": 0.41090723872184753, "max_gamma_index": 1, "num_levels": 2, "u_probability": 0.9999769926071167 }, { "bayes_factor": 25590.136849725804, "column_name": "dob", "gamma_column_name": "gamma_dob", "gamma_index": 1, "level_name": "level_1", "level_proportion": 0.003339202178888195, "log2_bayes_factor": 14.643300242123873, "m_probability": 0.5890927314758301, "max_gamma_index": 1, "num_levels": 2, "u_probability": 2.302030407008715e-05 } ] }, "hconcat": [ { "encoding": { "color": { "value": "red" }, "row": { "field": "column_name", "header": { "labelAlign": "left", "labelAnchor": "middle", "labelAngle": 0 }, "sort": { "field": "gamma_index" }, "type": "nominal" }, "tooltip": [ { "field": "column_name", "type": "nominal" }, { "field": "level_name", "type": "ordinal" }, { "field": "u_probability", "format": ".4f", "type": "quantitative" }, { "field": "bayes_factor", "format": ".4f", "type": "quantitative" }, { "field": "level_proportion", "format": ".2%", "title": "Percentage of record comparisons in this level", "type": "nominal" }, { "field": "log2_bayes_factor", "format": ".4f", "type": "quantitative" } ], "x": { "axis": { "title": "proportion" }, "field": "u_probability", "type": "quantitative" }, "y": { "axis": { "title": null }, "field": "level_name", "type": "nominal" } }, "height": 50, "mark": "bar", "resolve": { "scale": { "y": "independent" } }, "title": { "fontWeight": "normal", "text": "Non-matches" }, "transform": [ { "filter": "(datum.bayes_factor != 'unnecessary filter2 due to vega lite issue 4680')" } ], "width": 150 }, { "encoding": { "color": { "value": "green" }, "row": { "field": "column_name", "header": { "labels": false }, "sort": { "field": "gamma_index" }, "type": "nominal" }, "tooltip": [ { "field": "column_name", "type": "nominal" }, { "field": "level_name", "type": "ordinal" }, { "field": "m_probability", "format": ".4f", "type": "quantitative" }, { "field": "bayes_factor", "format": ".4f", "type": "quantitative" }, { "field": "level_proportion", "format": ".2%", "title": "Percentage of record comparisons in this level", "type": "nominal" }, { "field": "log2_bayes_factor", "format": ".4f", "type": "quantitative" } ], "x": { "axis": { "title": "proportion" }, "field": "m_probability", "type": "quantitative" }, "y": { "axis": { "title": null }, "field": "level_name", "type": "nominal" } }, "height": 50, "mark": "bar", "resolve": { "scale": { "y": "independent" } }, "title": { "fontWeight": "normal", "text": "Matches" }, "transform": [ { "filter": "(datum.bayes_factor != 'unnecessary filter due to vega lite issue 4680')" } ], "width": 150 } ], "title": { "subtitle": "Estimated proportion of matches λ = 0.00563", "text": "Probability distributions of non-matches and matches " }, "transform": [] }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe0AAAFzCAYAAAAT2FHIAAAgAElEQVR4XuydC9zNVfb/F+WSbqRcConISEOlopqaKeXWdJEIU5GkkKTkmS4qETWDJmQ0kZTRSInRjW5jSEiki0glcqlRKHKJ8X+992/28z+Oc/l+z/nezjlrv15eeJ59/ay99mevtfd3rxL79u3bJ5oUAUVAEVAEFAFFIPIIlFDSjryMtIOKgCKgCCgCioBBQElbJ4IioAgoAoqAIpAjCChp54igtJuKgCKgCCgCioCSts4BRUARUAQUAUUgRxBQ0s4RQWk3FQFFQBFQBBQBJW0P5kD8BfwSJUp4UKt/Vfz3v/+Vn376SQ4++GA59NBDxfbf9vvHH380PzvyyCP964SIxPfDi8b87Lsf/fVizLYOZLZ582YpV66clC1b1suqtS5FQBGICAJK2h4I4txzz5V58+YV13T44YdLmzZt5A9/+IM0a9YsoxbefPNNU/b666+XcePGuaojXdlly5ZJw4YN5Te/+Y3MmTNH2rdvL1OmTJF///vfwlgsee/atUu2bt0q06dPlxo1asjFF1/sqh+JMlPH7Nmz5YMPPpCDDjpov36kqvw///mPo37E9n3IkCFy//33y9NPPy3XXnut677HtxmPm+sKfSywePFi+d3vfmc2Y0899ZR07tzZx9aCrfq1116Tb775Rq644gqpWLFiysYff/xx6dmzpzz66KNy6623BtvRLFqL1YtTTz01i5pSFy0ELH0DLyIVK2l7IAhL2hdddJFUr15dvvzyS3nnnXdMze+//76cfvrprlt54403hPpYfFmE3aR0ZdeuXSsPPvig1KlTR/r161dM2hA4RN67d2/ZuXOnsAAuXbpUzjjjDLNgvvjii266kTDvhRdeKG+99ZYh7aOPPnq/fqSqHByd9CO274xx4MCBGZNYfJvxuGUNhocV9O3bV0aMGCHXXHON9O/fX04++WQPaw+3qksvvVT++c9/mjmTjtBGjhxp5u+f//xnuf3228PtuIvWY/Ui3RhdVHtA1kLAMht8cqGskrYHUrKk/frrrxdbo5dccom8/PLL8thjjxkLqEePHuZ33333nbz33nuycOFC+eyzz+SOO+4w1u4hhxwi559/vllssGot8bZu3dqQG9Zz3bp1BevxzDPPFKzgoUOHGiL94Ycf5KyzzjLke9VVV6Utu2rVKmPBN2rUyPTPWtqWtFu0aCE///yzIbvrrrvOeBHwHnTp0sUQPVY57dxyyy0GPYji66+/lrFjx8qvfvWr/RCl7D333CO02bx5c1myZIlZfPlDnbH9wLIdM2aMvPDCC2bTAB4QEG78Tp067dePbt26JcTU9p2NgSXtXr16yRdffCEfffSRnHfeeTJs2DCpUqWKGR9/GAfj2bRpk/GQsPF66KGHDmiTfLH93bNnjyHKCRMmyKeffiqnnXaadO/eXegbFv+9994rc+fONXU///zzRvaXXXaZDBgwwLivk423du3aB8xK3N533XWXzJw503g/kN3gwYPNJuuRRx4xY6L+Jk2ayN133y3Mv9jUqlUrKV26tBk/ngewZ0N4ww03mGyp6v/888/lxhtvNHNs+/bt8sorrxgPCeT429/+9oC+cowACVWqVMnkmzRpkvn3oEGDjE4gX45emHv0lzR58mQZPXq00BZlLrjgAqMbw4cPN+XwIJxzzjlmnGyC+fvvf/+7bNu2zegVc/Dss88WS9r096uvvpIPP/zQbPb4+QknnGCOZJinTz75pLHeqYv6kR3p1VdflWeffdboEOR5+eWXy0033XTAGFPpnxO8UulFPGmz+UBf2rZta3ACi9tuu83oBfMPDNAT5mYuYunBElxQVShpeyDueNJmMeZnK1euNK7tevXqmQXHpmrVqhnyqlWrllHAX//610bxsNBZ3Fhs3n33XWNpk8jPOSX1sdhC0iy8LLjUQd3PPPOMyQs5Uj5VWQgmkXvckrZ1MVMPhMdCS79uvvlmswFhoaZdiHD9+vVy3HHHmd/zb1zeNq1Zs0aOP/744jFANoyXlMg9zsYG0mYB/uWXX+S5554zJMdiDhnG9oOFOh5TLOFY9zikhqVNAmPGQ/uQKBsPfnffffcVu1LtWNgcQfrxbULosbg98MADxv1OYkPCpo2EhwKsWPA5WiBBCoyZNHXqVLnyyivNpiPReF966aX9ZiVn1WxgOL4AZzZO9jgGUpo/f74hHkiITR5WN6QXm2LvWcT2Zd26dVK1atWU9e/du7eY1Jh/xxxzjJmr4LRixYoDNIj8EAqJ/GxI2VDYxBj4P/OaOcK8RkfIi7xnzZplfs8cZ5MAxvz/97//vYA5mPI39TC/Fi1aZKresGGD2RyxmbCYQ6DIHH2gXus+py10FJImkY/7Hccee6yZ28gHggTTRN4y9DqZ/nGvwm4CEuGVTi/iSdta4fSTvoG9TbH/R/fZSOYalgdMIP1BSgSUtD2YILFn2iipJSaqXr16tbAwWoKBLHA1Y2Wwg2aRYpFmocOCZmFnp1+5cmWz0KCUH3/8sbGSWLhZrCHXLVu2yPLly83PUNSrr77aLDBYCCzyqcpi5TghbawJznFj3dL0s2bNmqYtyH/BggXGAseaxrKNTXgFsA5ZACFgFmfrtk1E2liYLEhsFFigWajLlCljyM9aTNZNz6YmHlOIIhFp4y3AGmYzRRvIBzLAq5GMtCGjePd47Jn222+/XUxMnCezSGMF02/IiA2EJW08IlhCWPVYQ2xKJk6caPqSbLylSpUqhtL2g7kFJljpd955p/zpT38yVv0TTzxhvAJYnv/617+MNR2fLC7MHyxSzvjZ6I0fP15OOeUUI+Nk9bMBYXyQ5CeffCLly5c3GzX6gkzxYECYNrHZsf0HczZyRx11VDE5QowQJInNKmTDhoe5we/wULBBQzYQdrxL94gjjjAyZP7h2SEP84m5BoFD2i1btjQeAXSkfv36pu/ffvutnHTSSabPeKjwVrBxY25QR4MGDYw1i85RF5sTdIDNCfoSm3DXJ9M/xpoKLzZtqfQiGWmzTjC/kBXjtXcX2EhzHAeGrBu5hqUHS3BBVaGk7YG4LWljzWG1cFmG3TEXyXB1W4KxF79okoXwr3/9qyFv62ZmYcfViRXBwgrx2gWeMixmWFS4bnF3tmvXzixAsYlLXqRUZbHGMiVt6mYxZbGDNHD14+5kYxF/joolgkUCqUAuJPKw2CYibUgk9sIYJMLiVlRUdACBJsKU+hORNn2wrsOmTZuaPuO25sghlrTZXEG41oJMRdoQJG50Ei5X2sXFbMmJxR75YBViCeMGxqqzcvvHP/5hSDPZeGNlyoanQ4cOxRs8fgep4QK3c8opabPpKlmypPzxj380xyvMQTZxqer/y1/+YkgIbwIXmUhsMCFI5M4my97h4Hccbdjb6/FfJtj/W+LF+0Kf6L+1eu3YOUZAF2JJG33iuIiUKGyCdY+zYWTeWJkwl9joxnqCYjFGz/B6sOGxHhF+z8aQ+QPZxyY2kcn0D/1PhRcu7VR6kYy07ebQbgbtBox+4GFgk8I8yzUsPViCC6oKJW0PxJ3oTDu2Wksw1qrmd5AvJNy1a1dzvkbiPJZdMiTH+RvEG+uCtIsXZMOZFpYfixQLDkSMEseSdrKyLHrZkDZn8Vg4bFLoAwsUC0p8YtF8+OGHjUcBqxaPAKSGlRRP2rgu6T+/YxGHBEaNGmWqpD1+HmvxJ8I0GWljeUE8se3jwoSwsFjZgNjzZ0jQCWmDsyUmrGXkZfsEQVC/XVzxRkBysaSN6zfVeGNJAs8KHhVrwTNOcAXfjh07mjNjp6RtiS6WtJFlqvo5W0bGzDG8CfGkjWwgR5uYt9bSTkfa4AQxc0bNGTt6gT5g+SYibaxjiBtPD21i9WNxMkcoj6cp9iJaLGnTFpYoHgLGgWVN39k48HOOZPCQsOnA+gdX5mnsxtmOEf1Jpn+WtJPhxWYtlV5kStrML8afa1h6sAQXVBVK2h6IOxPSxv3K2RMJ4t6xY4dxb5I4W8UNac+l+ZtFBbc5iUUFS5wFhTM6XIyQDwnSx5JKVZa2nZI2/WDBxmWIZc25buyizb/ZOGBtxSfOYK2rlotBLHJYuaR40oakcdNihUOiYEOdLLCcnbOwxvaDi2RYQbEboWSkzc9Z0KmHPlnXqXVnQ7JYmmyWSJa0uXcQ2+aJJ564H27UCfnifoWgcXlDJnhMsGJTkTbnpanGC942YbXTBpsD+g42WGskrCt+lg1pM45U9YN1KtKO97DEnmmnI21IE6KGxLjwhS7hheLn9siFOTdt2jTp06eP2ayymWMuMm42Q5A+yX7uloq08WpRnrnD3Qb0B28VHpHdu3ebn2Gt8tkYngQ8YcxdLq/FJi6wJdM/3Oqp8OJOSiq9yJS00X3uYuQalh4swQVVhZK2B+K2pI31lei7bIgKt2w8weBW5jzYnoFDHixOuNbtt9YoP0RgL/JA7BAM51u4VimLBQYBsNPGQqE/9CNZWXs2y4Uyzmbjv9O2rkvIgoSFSxksa9yCJFyJXKQicZ7Jwp4oWYuQ30FEWCEshrGkbfuBtc2iGuvyZ3HG0mNBje0Hi2giTGP7zjECCzr1W/ctZ5vIibGwUeK83bplsaiwgixpx7fJ79js2P5ixXFezvmmTdbNypmtJW2+FKDvuJYhGtyZuMdTjTceS86NOW+NxQaLiktnJEva9jJhfHl7bGBJlGMHXMh4GziDTlW/3bwksxyzIW02nMwfXO/2ghXeA+Y5xMoxBhscfkaCXJEBXifmJAm94ZyYy4nWPW6xwSVeoUKF4jNt2mO8doNMeWvVs9ngGMVe6uR3bGaQE2f4sSmV/tG3dJucVHoRT9r2G+507nFIGx3LNSw9WIILqgol7ZDFjcsWC5CzNlysic7cWGi5ccp5ORfSbIJU+DkXmpK9wpasrJth25e2uOgFKZJYyFgc4jciierFSuZCEgsKXoB0iQs+4MLNYNseZRL1I11d9ve4PvFgcA4d3wfr2mVxj09O2vz+++/NZUPctrhr3aZk403UFzZwuHmRudevnjFWP+tPhQttowfIPPYSni3DBovLg5y/83vy48rmZ9ymt7fVnWKPzNgsMCf5MiM2MR/YQHCMlGi+uNG/VP1xqxdOx5aLWDodm+bT0Jw6BzJAwJ5VU9S6ZzOoRosoAoqAIqAIuERALW2XgGn2/7vFjjuVz084j9ekCCgCioAiEAwCStrB4KytKAKKgCKgCCgCWSOgpJ01hFqBIqAIKAKKgCIQDAJK2sHgrK34hAAPm/DH7UUkn7oTuWq5VJXogl0QHeUyIZf+nFw+dNsfvmxA5skeS3Fbn+ZXBHIFASXtXJGUx/2MDydqq+fbaD6bSZb4JI3Ppbi9TB28euZFGEgCjvBpFN/Jukl8ssRNdi8ikLlp101ePvnjcyI+YeLzIp625elMPxNkzZ0DPovitrnXKXYeJKub+cG314So9TrxqSSXIMGWry68Trxl8Le//c08ssLDM3yKmGhjmCwfN7h5IpbPCflum2+97adcfC5mH6mx/aYtvgDZuHGjeS+ATzG5uc4DM7wPwKedfKLHp5J88sZzvjbYitdj1/qijYCSdrTl41vvWFB54ME+L2ob4hOrVDGLWTB49AJy5ftdvs/mU7RsE98683gGn/24SblA2nxnzidLBD4haAlWon1Yx81Y3eS1r6gRrY2AHV6n2HkQBmnjXbHR1OyLgl6NkQ0PG1NeiuObbr73R194VS82pcrHxpdoa7wTgOx5bAd9YbPL5U02cTyQZBOkjmfCPopELHC+JYfEkSXf9rNB4HEZdIQHaXikJSwvildYaz3uEVDSdo9ZXpRgEeKlKfs4R/ygsKR4DYoHHXgkxL5CxWLBYy48HUke3tLmMRg2ADzwgXXBYxdYCOThhSYiTvFzyANLgUWQl8l4cITXw6iPx2D4NpbHTngog8WKhYtHUSAIHqPAUmGxJjAJCxrf9PLoBd+7xlvaPK6BdUI8cN7+5lETxsOmhNeuIE0sHh5H4TEMXtHi/1hFfNIGIfCgDQ+agBOPyZColze/WXSxfHjkhe/lGTtRxRhjbP08lWnjobOI8+0vY+PfPPyRqF1evANPCIPQlPyfZ0dtGM1YWfGNN4/cICf7Upp9ApfX5ezrb7FlbHQqHvDhu2zqxtMB+YEpr7xBLnzLzCMs4MK30DaUp30D384DXgejD7yHbmXKgyDMMWRHP/jDAyk8Z4tLO5l86SeyZr6w4QADsEr0DoHdmIAj3297lXhchXHzHThpxowZ5j0CvgmP/aY7VT5kgOyYFyRw4BEj6gUX9Cg+rCnWNe3wpgGBchgXDzBRB/PKRhtjPvB/NrrxIVi9wkDriS4CStrRlY2vPWPhwP0GYcUmFltce5AXEcnYyfN2OOTGi1iQNP9mkYbMsRpYjHgBjNejcP/yNCRkC/FRhnwEvSAfb2qzWPE7fob7ELc4hProo4+a/0POxG7moRKeZ4VcsFSwbHhVDKsECwayhGBt5K/YcdiALGw2aJPFH4JkI2BDHVIPVjB9ZkHk9TUWZsiF16UYDxhBRPwONzwWFGSGextcIG5eo2NhhdTYUMTWD1ZYaFjXEBYLPdY2T55SJlG7yAY8eZmN9pADASaw2GIfVKFOXKe0DxnQZ9ri6Vk2MZArfY53o9qjEUiaTQ0Y8eY6WEAmkDCbFPBikwX2uPR57Y1HZNgMxc4DNimMiQ0N8uO1N15us1Hp2NhgRZKPKGS0lUy+WJPMSV4+o01kxHvaPFcan2zgGsaR6NNDNnNgEZ84Y0/lWmY+EKqTt8dJBEUBY34G3jYly2dfD2RDZT0qzH0Inw0cG0esbDCDdBkjcxQZE/iD99V5CQ6MOQbAkwV+uOfRFfBlQ8A8tAFqfF0stPJIIaCkHSlxBNcZFm4WIayl2ASZYCljcUEYEBFuOAiDhSXWLUodsaTN4gph2ehVnKVSF4swiy5udYiaxQjLiYUZIqBunha17nGsxsaNG5tFjTCgbCJww7MZoAwbCgiCZN9Cj7e0IW3K26hUtAt5YM3QR14vYwGlj1hpEB4bFhJkethhhxnSg7RtlC76waJNOQiOF+FsOFKIg40E1lls/dQX6x6HaOgXRJmsXd4Vh7TxUhB2EZJkoY8lAeq1z6JanPkZ+RgneBGulXCU8ck+cwvp4N3AqmZjhEeEjRMYgxPtgxMYYCnzNKfNZ+cBGDAO21fIBTlzBgxRgYV9G5zNAHJhU5ZMvnhScAXTDt4G2kXe8UcwtIOXhX5gkUJm8ckSX/zPsVIT4WLz8TwwY7J3O2zQETY4sSE6k+XDMmfOs8Eh1CgJjxL6hgeBjTBn/eANUTP38Hgwv/FC4R3BTc4cYbMQG1/dBjzhfgRySnWUFdxqoi0FiYCSdpBoR6itdO5xSBGyIWEtQyS4SFORtrVEsBYgBGvlsAjzPjWExcLEIo7rmSckIY140qY8ZeIT1h+WNwsfbmsS1ivRtRKRNpaNJXf7/juLPeQMoWHt00dc2Js2bSpeAOkn54/0FcKK/R0bDixFLGw2J7gzSfateIgdorL1JyNtFvFk7bLBgLRjLTs2OfGkATnjoYi1JpEr2CCnVKRtLxDytCvkB4nxLjsYY2FCeHhL8ExgObK5g1jiSRtvBOOIJSgrt/iLiuDCJot2kskXmbARxEXPhg9LE6zjnxrFomdTwEaGvvEmPufQXiQ2FlixeDhIFiMbVcy2kSwf8mC+gxukS2ITg0wZC5tgS7Z2Q2AjlXE0wPvo5LUWvpWNbZfLcWyg0AU2SJoKCwEl7cKSd/FoU5E2CxaLCYQFIUJi/JvFPBVp2xCVyUibW8RYqizINhYx9cWTtn3XnHNPFm4SFhfWP65wLsFBJiRci5BqItLmvXF7SYm/ORtlAYQ8CLoCcXFuygIZu+jTN6xCLG7GHWvxY4ER8xwXJeSIy5cE2WH5YP3G1p+MtLlAl6xdu8BbPKkjEWlzpot7FVlxTsyGgf7RB1znqUjb3uq2hMQmCovWkjZubLwcHG0QdY2jCurG6sNCtPMAqxAZ2WAWWMpsdsCGP7G3xy1ps/nDQk8kX+TBeS5/8NzwNQMu+/gLk8iIzQabSaxa6rQbtFhyS3RJjff7GVOyhLXLWbINN8sGhrsW8dZ5snzcD8Ca54Y4G14SY+eoBL3jyMFuOrkbgeVNBD/iCEDa9iyd9vCYsFFig0B/8ACR2LDQht9fIRTo8hjpYStpR1o8/nWOxQOXdfznWrhXsQQ4d8aywxqGtFkwWIQgM4iSM+J493g60maB5ywTqwxLA3LiUxfOkXHHEmGJ3+HuhEA4R+ZcFdc55ITlAaGzwEGaEBMEgqswEWmzyeC5VQJMsMgzFtz/8aQKMXFBzF5ew3qkP7giIW0uarHIYwHjzqcfEAr18zN7kQ4rEhd/fP2cu0P89Nm6x+lHsna5tQyhpyNtNiXgCE5Yp+DEYo78uOiXDWkzPixi3LcQFv3F6rWR7GLnAaSJvDhn5XIixwqMlzmUiLTpYzL50i5WNJG92CRQB5s05opNXNSib3hPmE9sEhk/Fig/twkrHE9MfIK07cXCRBpmo+DZew3MS/qLvNnEQsps+lLlg5Q5tgAPNjpsWLHAOYPG1c+8YQPK512MDR2AtJE9lyzx4GCV0wfisXNMgTseDw23x7kvwHxCpzQVFgJK2oUl7/0s7Xnz5h0went7G5JjMWQRxMrCfcflGRvSEdchl56wVskbSzKJLG1cqCzmfDvMLWMSBMcCxc1xiIezTtriMhILEqRjE1YN5ElkJvJjeZOwZLicxY3z2IRlwjmrDWWJO5HbtpwxQqpcNrOXl8CBxc+GSOXnuJ5pC9KmLNYRFiXuSNySWIlYizY8JJfV2NSAV3z9jJdNB1YjizaLPhZSsnbZjCQi7UQuYD4jo176Rv8hWUgG1zYbDGu1xWIT+/20tbQhQjYukBmEiRUPaSBv6kb2XODC6oSMYucBhMIZrA0Ty7k48yj+O21raeOdSCZfrEvOu3HF0y4ub86IYy9cMWY2CJA0HghuUzMn2Jyx2fIicfmO+UbiQiDjhrg59mEeWSs8WT5w5RjFhhvFI8B8J7GRYBNo5xtzjY0wiXz2iw7Gz2aUsTFf2DSR+DlWO3n1USEvpJ1bdShp55a8Au0t5MINbVyPsQlLDiso09eoIBIWYYiJBZc/kDXnzbjKrUsc6wOLDTdo7PeoNpwpBGzzxgMDaVMnn55BSBBLqkQfsGBwR9rzRogD0sby5yYyi3bsN8+4Nukflhv5koVHpV2Izrp9Y/uRqF23QqZ/9DVRmEm3dcXnR9ZY9HgdcL/jRuffpNh5gExs6NNUOMTWn0y+bFogO2SeLE57tuNyUt6Gzoy9MZ6oXLJ84MXGgnnKXI9NYMoYOfKJD7HKXAFLPhtjztgEyaM7bCKUrJ1IMD/zKGnnp1wLflSWtLEWM02WtFmUY+N6Z1qfllMEFAFFIFsElLSzRVDLRxIBzkWxYPhkKtOEZcOlKl6hwprWpAgoAopA2AgoaYctAW1fEVAEFAFFQBFwiICStkOgNJsioAgoAoqAIhA2AkraYUtA21cEFAFFQBFQBBwioKTtECjNpggoAoqAIqAIhI2AknbYEtD2FQFFQBFQBBQBhwgoaTsESrMpAoqAIqAIKAJhI6CkHbYEtH1FQBFQBBQBRcAhAkraDoHSbIqAIqAIKAKKQNgIKGmHLQFtXxFQBBQBRUARcIiAkrZDoMLIRnhE4joT3CI+ehHBMGxYyDD65kWbvK9M9Kjbb7/dBHvQpAgoAu4Q4P12IuXxJj6R92IT75sTXAXd8nKtIDQtAWFq167trrOa2xMElLQ9gdGfSu644w4TLpKIPrFxc4nCBJETkCCKiY0GoQiJhBQfDCG2vwsXLjShFXku1MYJjuJ4tE+KQFQRsFHa6N9nn30mJ510UnFXCXNK9DWSk7WCSGNEVSNqXKpEQBhChl588cVRhSWv+6WkHWHxWtKmi1jW9h3tqJM2IScJy4gVUK5cuaQIK2lHePJp13ICgVjSHjx4sAmZahOWN/G6nZI2JNykSRMTNlRJO7riV9KOrmwE0obYcG+tXr1aPvnkE2O5xpM2JElQi0WLFkn9+vVN3GobixryJL4yljpxqs855xwTczk21KWFYNKkScLunHCIzz77rJx88slmESDeLz+nbuJq16xZ04TQpB1iCxOWkQ3Fww8/bKxm4kwTx5o41K+88ooJn9m/f395+umnTXhL4m8PGjTIWOJY2sTSfuaZZ0yMauJz8zt284QoJKaxjadMfGhiDRPX+c0335SRI0eazUy9evVMfGXGqkkRKCQELGkTp57QsqwRJELqEh/9t7/9rdFRa2mjx4899piJtw5BszawVtx3332GrDmGYy1BXwmWg14R2had5feEGUU3+f2CBQuMDrdo0cK46AnX+9///lf+8pe/yJNPPmn0l34Rc5woeT///LPRbWKpb9u2zXgLH3roof3C3RaS7DIdq5J2psgFUA7SRilQCGJaozQQZSxpE/MaEuWMCUKDuPv06WNI9sILLzQKBmmy40ZRyAMR8ic+4YqnTZQYJb3nnnvk008/lW7duslll10mvXv3lmbNmhkSf+CBB8x5NApKbGzyoKAoP8TOGRp9+M1vfmP688ILLxhiJsxl165dzb+rVq1qSBtyp62PPvrIlGcTcvbZZ0urVq2E8T344IOmq507d5aioiLjvqtWrZopw2Zh/Pjx8uKLL5oYxJnG+A5AnNqEIuA5Apa00Sc2tR9//LHZbM+aNctsnlk70E1Ie/PmzUZXWQM4vpo9e7YhXzbLxGSHRClLDHrWHdYByJf1hfWCTTEkbtcU/k1cb9aFu+++29TFBhx9haipq1+/fmb9YZNNXXaDvmbNGrNGEDqXjYMm5wgoaTvHKvCclrTffvtt+fOf/2wUgHOrDz74oPhMGyLndygdFigJIqtVq5axqFEwLiilTNEAACAASURBVKP06NHD/O7aa681CozV++9//7t4TJxlQX60+e2335odN8R8//33F7u52TDQl7lz58q7775rdsgNGjQwZHnrrbcaQub3se5x+kQ+Fg+saBIEjqVet25dQ9pLly6Vhg0bmt+xIx8xYoQ0bdrUKD1nZ2w+SCg4G4L58+dL5cqV5ZZbbpE777zTWBRgcsYZZ+iFtsBnqTYYJgKWtN977z2jD5dccokhXXRt165d0rp1a+nQoYPRefQTMmcDztEVG3yInQuv5513njmjtu5x/l+9enXB+0bingoeLzbVrCmjRo0qvtzWqVMns/awcUB/WQtYN0isFVj769atM2X4M336dLMph7jZZLNWaXKOgJK2c6wCzxlL2rigIbjy5cubnSk7ZRQREsYN9dJLLxX37+abbzYWKq5pFIy/W7ZsaX7PrhhFRxljL4mx6/7www+N9czfJNzdECwuehI7aFxt/B/XGIsEis9OGmLGfR5P2rSFlwCiZUGITfZMmw0HrjUSN1KxBGrUqCGXXnppQswZN/0n33fffWfIn4XCbkwCF5Q2qAiEhEAsaaNPkOKyZcvMMRQ6Ajlb0mYNwVOF141jLDbq5E1E2myK+aqDTXF8il9TsJjZ6FNvxYoVEyLBxvz4448369bLL79s8lxxxRXy6KOPGl3X5BwBJW3nWAWeM5a0aZzdLq5kdq6cSUFenD9BypxX23TmmWca9zbl4296WtKeOnWqOYu2iR0v7i7OmyxJx5M2Vv3MmTOFXf2vfvUr8+evf/2rOQNHuSHweNKmXhYQrP6rrrrKNPfqq6+a8y128vG3xy1pN2rUyLjjsKBPOeUUU27Dhg3GlXfCCSfI2rVrhTyMm+MC+vb555/LiSeeGLictEFFICwEYkn7uOOOMzrF5prPstjQspm3pI3Oo4PoH8dcEDfu8kSkjcUOyeKlI3FW/tprrxkij19TLGmjh6VLlzZ3TW666SZTjk0DGwPWJI7aONbCWJgzZ45ZM9jIszZoco6AkrZzrALPGU/adICzJc6LSJA2u1YUDNc2bqr333/fXDazZ1upSDt+QJxpOyFtXOMsECgmbjA2E1jyfG6CMkLquLctiXKGzb9RTi7I8Dssei61JCNtPnODwDnXZgFiJ4+HAWue8zOsazYIuPFov3HjxmZRYCOhSREoFARiSRtdQh849kJX0LfnnnuumLQ5ouKzLi6W4RnD1Y3O2y9T0DV0ko04BMz6w3qATnHezRGWPdOO/eTLkjabArxjuMK5yMplV3QVl/xXX31l+sS345A6HkPOzMuUKVPsgi8UmWU7TiXtbBH0sTxKAyFxicMmLFQszy+//LL4RiguL6ximyB2bmWS4kkbNzIW65QpUw7oOQqM4uHKJkGW/D+Re5xLJVxwIXH+jWsaAqcMSmz7yLnVzp07zcaCG+UkSBxXGhsMFhouyB166KHmdxA1u3nqYwOAZYDFQGIzMm3aNGO542HAtYZrnoSrnk9eNCkChYSAJW2Oq7Bm0Ss+9cKa5lZ3LGlzjMZ9F7xXJAgcC5o7KJApF0y55MlmnHsyWOgch5H43psvUOzt8XjSZiPAmvLNN99ImzZtjNfNrg2cYWNRc+zG71i7SNxB4Y4Kd1c0OUdASds5VpHO+f3335uLHVzqsOfDfncY1xcbAIiWzQG3U9k582127G1V+sH/OWfHlZ7qwZX4PmOZY6VTb7zrG1c5ixYbBH1RzW9pa/35ggCfhrHRZsPLJ1roEWRMQoexwq2OsmHmhjhudKeJOrGs2azjfaO8TXv37jXkzZk53jpN7hFQ0naPmZZQBBQBRUARUARCQUBJOxTYtVFFQBFQBBQBRcA9Akra7jHTEoqAIqAIKAKKQCgIKGmHArs2qggoAoqAIqAIuEdASds9ZlpCEVAEFAFFQBEIBQEl7VBg10YVAUVAEVAEFAH3CChpu8dMSygCioAioAgoAqEgoKQdCuzaqCKgCCgCioAi4B4BJW33mGkJRUARUAQUAUUgFASUtEOBXRtVBBQBRUARUATcI6Ck7R4zLaEIKAKKgCKgCISCgJJ2KLBro4qAIqAIKAKKgHsElLTdY6YlFAFFQBFQBBSBUBBQ0vYZ9uXLl0vFihVNVJ1sEhFzli5dakLcpUpE3iJKT8mSJVPmW9mxoxyTZZ+yGY+WzT8Ettx0k+wrXdpEmvMjRVWXOj7RMWv99gOvqNTZ+9e9o9KVnOtHIl1S0vZZjMSsbd68uVx55ZVZtURYy4svvlhWrFiRsJ5NmzaZQPWEwSNvv379pHPnzsnbLFEiq/5oYUXgAAS2bpUvN23yjbSjqkslHlBdSqYNJx51onx+y+cZKQtxt/3aAGbUoRSF/OhrsjqVtL2WXlx9dqEh+PuQIUNkzJgxUq1aNRk9erSsW7dOZs6caYLPkwhe3759e6levboJUL9q1Srp1KmTDBo0yORNRdpDhw6Vn376SQYPHmzi41atWlWwuoltnTApafss+QKsPiDSjpouKWknn+tK2pmvA0ramWOXVUlL2nXq1JEOHTrIlClTZPbs2TJs2DBZuHChCT6/bds2ITg8ZA45d+nSRZo2bSrNmjWTbt26Sa9eveT8889PSdo33HCDyX/11VfLvn37jHucYPdJd6pK2lnJVQsnQCAg0o6aLilpK2mrpZ1HK6Il7ZUrV8q8efMEK4HUtWtXWbNmjfm7d+/esmvXLpk6daqMHz/eWMdY5KVLl5Y333xTjjjiCCkqKkpJ2u3atRP+tG3b1tRfuXJlWbBggdSsWVMt7TyaT5EeSkCkHTVdUtJW0lbSjvTK5K5zlrQh3/Xr1xuL2SbOnKdNmyaLFi0yrmzOvRs3bmws7uHDhxfnq1evntSvXz8laQ8cONCQe58+fYzVXqFCBdmyZYuxuOfOnWs2DLGpf1GRu4FobkUgHQIBkXbUdKlop+pSsqmh7vF0SpP89+oezxy7rEpa0i5TpoxMnDhRJk+ebFzgLVu2lCVLlsjWrVulQYMGpo3Vq1ebm98NGzaUCRMmSKNGjWTAgAHGhd6qVauUpD1jxgwZNWqUzJo1S55//nlD+vPnz0/ed3WPZyVXLRyeezxquqSWtlraamnn0YoIabdo0cL8wbJevHixIGAItmfPnmakEDIXx8aNG2f+P336dOnbt6/5d9myZWXOnDnm3DvVRbQdO3aYej799FPh35ybn3XWWUraeTSXIj+UACztKOqSkraStpJ25FenzDvIzW4sBdzXqdKePXvMmTdn0rHfXC9btkw404tPrVu3Nlb62rVrpUqVKlKqVKnUnVRLO3MhasnECPhM2vGNRkWXlLSVtJW0dVFMigDfYG/YsOGA35922mnm4prTNPeii+Tcc891mt2zfJs3b067YfGssZiKtF0/UI2rs6hIvly3Lme+rfVKly4afJGce07wupSJRDdv2SwVyqc2GDKpN1WZ+357X0ZV+kGEGXXEQSE/+qpn2g6A9yNL0K84YaHv3r07+ffZ/xvki9ddJ22eftqPIaes04/J7WQQ2q4TlLLP4yfOUdWlqJJ22/pt5eRKJ+8nVD/lk/3s2b+GQu+rkrbXM8phfUG94sSN8Y8//ticix900EEyYsSIlD2c16yZnPPGGw5H4V22sBRR2/VOhqlq8hPnqOpSVN3jz7V9Ttqf3F5JO4Cp78e8V9IOQHCJmgjqRTQuqnHT/P3335fTTz9dSTtOGH4olZMppe06QclZnqjqkpK2M/m5zRWW7rjtJ/n96KuSdiaS8KBMUC+i2a7yPCrPn6qlHQ1Xmx/K7GRa5mO7UdUlJW0nM9J9nrDmsPueKmlngllkywT1IpqSduopENYCoO16p5pR1SUlbe9kHFtTWLqTyWj86Kta2plIwoMyQb2Iloq0E72Idu7s2Xqm7YF801XhhzKna9Mvd13Y7UZVl6L6IpqeaTuZsd7k8UPPlbS9kY3rWoJ6EU0tbbW0o2Cl+LF42XFFVZfU0na9LDoq4OdcctQBF5n86KuStgsBeJk1qBfRYkmb6F6xb5cnGo/eHvdSysnr8kOZnfQ8H9uNqi4paTuZke7zhDWH3fdUz7QzwSxnyvj9ipNTIJS0nSKVXb6wFp5CaDcquqSknZ2OJCsd1hzOZDR+9FUt7UwkEcEyXr3ipI+rBCNcP5TZSc8LrV0nmMTn8UqX9HGVTNBPXyasOZy+Zwfm8KOvOUPahK/86aef5KSTTsoEO1dlPvnkEznmmGOkUqVKrsq5yRz0K04810mITh5YSZWevP12uWHYMDdD8SSvH5PbSce0XScoZZ/HT5yjqktRJO1rG10rJ5Q/4QCB+imf7GfP/jUUel9zhrTfffddE7ryqquu8noOHFAf4S8Jg3nqqaf61lZQrzgRXKR9+/ZmE3LwwQcLb5Hfc889Scc18ZZb5NqRI30bd9RcXmEtANqud1MsqroURff4m9e+KReccIGStnfTL2VNfui5a9K+8MILpUmTJvLkk0+aF7aee+45OfTQQ03IyBdffFFOOOEE+dOf/mTCP5KX2M9TpkyRtm3bSokSJWTSpEnSpk0befzxx01YyVtuuUVeffVV+c1vfiNjx46VihUrJgThn//8p3z++eemnt69e5vIVW+99Zb84Q9/MG1fccUVwidMBMegbz/88IPcfPPNB9S/a9cuU75cuXJyyimnmLCW/fr1kw8//FC6dOkiQ4cOlQceeEDOP/98EziD3/EEKOOif4w9EQZYsW5SUK84DRo0SH755Rczpp07dxrc2PwQiztRUtJ2I8XM8/qhzE56k4/tRlWXlLSdzEj3ecKaw+57GpGLaJUrV5ZOnToZMoRAsdqI7fzII48Ycn799dcNkc+cOVPIe+WVV0r37t0NeXfr1s2QIGT/0UcfmTxY0Pfff78MHjzYkPpTTz2VEBusX8JP9ujRQ+rUqWPaIjzlmWeeKd9++6387ne/M7Go+RuyffDBB00M6fj6aYtyRUVFhrxvvfVWQ/iUoa/0feDAgXL55ZcbdzL5Jk6cKC+//LK88sor8uabb5pxxWNAHW5SUK84EUMbXJGRjcfNy2j8TEnbH6VyMg/CWnjysd2o6pKSthNNcJ8nrDnsvqf+rC+uLW0Ia/HixVKtWjW56667jMV20003mZ998MEH8vbbbwufFvF/8r722mvGzcxZ9LPPPitnnHGGIchhw4bJvffea6zdk08+Wb755ht5+umnTdlEKZa0mzdvXpwP0sYCph3ObW+77TazQcCabNWq1QH1Y53TJnk532UMEDJW+e9//3s57rjjpHPnzoa058+fL3Xr1pWuXbuaLjEezrvpbzwGvXr1ciXTIF9xIrrXkCFDDOYvvfSSXHDBge4x23m1tF2JMePMYS08+dhuVHVJSTtj9Qjc5exPTyNE2p999pmJfXzffffJ0UcfbVzHEFufPn2MdTp+/Phi0rZ5ITosvRNPPLGYtDt27CiXXXaZVK9e3WCGyxqrPB1pYxHjziaxARg5cqQpC0nffffdJqoV3yPXrl37gPpbtGhhXOIrVqww5XGXT506VWbMmGGs97Vr1xrvAaQ9efJk6dChg/k3ibFhpUL68RjgeXCTgnrFCZd4u3btzLEBOFWtWrW4m4leRKv6zTd6pu1GkBnmzUfyTAWFn+ONqi5F8UU0PdPOUGEzLObHvM/I0o4nLIgM8sZyvv322+Wdd95xRNovvPCC1KhRQ7BSIU3IE1d0JqSNNc/lMc7JOTfn7PnOO+88oH7c5rGkzfn0M888YzwGuPu5tIXlDVFjjc+bN89Y8u+9955xzbNZwOL2irTLlCljxswGAe9Ay5YtZcmSJbJ161Zp0KCBgWL16tXmLJrx4XHAk0DkLvrMRiV2PPHYPfHEE+YYAnydJLW0naCUfR4/lNlJr/Kx3aBeRHOrS2ppO5mR7vOENYfd9zSCljbnw5A1N5I50z3++OON1c3FMgj4mmuuKSa3eEsbS/jwww+X6667zhDUhg0bZNasWYZsMyVtLsA99thjwneWJUuWFD4Fia8fSzOW5CBkztkhQqxS3Ps9e/Y0pH3OOecYDwIkivue825IPZa0LQaZuMex+vmDOx53O5ORc3naJ0HI9JeLcCR7Js2/OaOeM2eO2aSkIm0u10H0sWnlypXmXkCipKSdiWq6LxPWwpOP7Qb1IppbXVLSdq8XTkqENYed9C0+jx99dW1pJ+v4zz//bEjvqKOOEv7N50W4ZJ0kLMkqVaoYIuKyGaQSn1q3bm2szUxSbP2Jyn///ffGTZ7sRjXfiJcvX9644P1KUXnFSUnbLwnvX68fyuyk54XQblR0SUnbyYx0nyesOey+pxGxtDPpuJsyXr1G5KbNfMjrFW76uEowsyGshafQ2s1Eml7pkj6ukgn66cuENYfT9+zAHH701TNLO5MBFXKZMF5x4vJguvTwww9L//7902Xz/Pd+TG4nndR2naCUfR4/cY6qLoVF2h1O6SB1K9Z1JTQ/5eOqIw4yF3pflbQdTBI/sgT1ihMX5vimnJv0HFvwGM3VV1+ddEhK2n5IO5gduJOeh7Xg+dluVHUpLPf4zI4zpXWd1k6mQ3EeP+XjqiMOMhd6X5W0HUwSP7IE9YoTF/64zMana2+88Ya53W8/l0s0LiVtP6StpO3nQhtVXVLS9keX/JxLXvfYj74qaXstJYf1BfWKk+0Oz8ZyU54b/XfccYda2v9DwA+lcjIFtF0nKDnLE1VdUtJ2Jj+3ucLSHbf9JL8ffVXSzkQSHpQJ8hUnujtixAjhu3huwPNpXbKklrYHwnVQhR/K7KBZXxaRsNuNqi4paTuZGe7zhKU77nuqpJ0JZpEtE9QrTjxbylOvfM62ZcsW85KdDRiS6EU0ANOLaP5Pm7AWnnxsN6q6FNaLaHqm7b/+Om3BD31TS9sp+h7nC+oVJwKe8OoaT84SQIUX4PjuPFlcbbW0PRZ0kur8UGYnPc/HdqOqS2ppO5mR7vOENYfd91Qt7Uwwi2yZoF5xgqhpi7CmPHbz0EMPmXNtdY//HwJhLQDarneqGVVdUtL2TsaxNYWlO5mMxo++qqWdiSR8KOP3K048E8vzqzzvmiqppe2DcBNU6YcyO+l5IbQbFV1S0nYyI93nCWsOu++pP0aBknYmkohgGa9ecVLSDka4YS08hdZuJtL0Spf0cZVM0E9fJqw5nL5nB+bwo69K2plIwoMyQb/iRJd/+OEHOfTQQ80Zt7rH1T3uwTR2XIUfi5dtPKq6FBZppxLKfb+9L+Gv/ZSP40niMGOh91VJ2+FE8TpbUK842X5jPRAH/LXXXpOzzz5bSft/CIS1AGi73mlUVHUpLPd4MmT7n9NfhjYbqqTt3dRLW5Mfeq6knRZ2fzIE9YoTvd+9e7e0a9dOvvrqKxkzZoySdoxI/VAqJzNG23WCkrM8UdUlJW1n8nObKyzdcdtP8vvRVyXtTCThQZkgX3Hq27ev+dRr5MiRMmDAACVtJW0PZrC7KvxYvGwPoqpLStru5ojT3H7OJad9cJrPj74qaTtF3+N8Qb3ixCto06dPl4kTJ0qLFi2UtOPk6IdSOZkq2q4TlJzliaouKWk7k5/bXGHpjtt+qqWdCWIRLhPUK05NmzaV7777TipWrCiLFi2SunXryqRJk6Rx48aiL6L5475yMu3CWnjysd2o6lJYL6Ilm396pu1EM73N44e+qaXtrYwc1xbUK05r166VnTt3mn517dpVevToIZdeeql5gzxR0k++HIswq4x+KLOTDuVju1HVJbW0ncxI93nCmsPue+qPUaCknYkkPCgT1CtOsV295JJL5K677tIz7RhQwloAtF0PlOh/VURVl5S0vZNxbE1h6U4mo/Gjr0ramUjChzJ+v+LktMtqaTtFKrt8fiizkx4VQrtR0SUlbScz0n2esOaw+56qpZ0JZgVTxqtXnJS0g5kyYS08hdZuJtL0Spf0cZVM0E9fJqw5nL5nB+bwo69qaWciiTwuM3PmTKlfv34ej1CHFhYCtWrVCqvpUNpVXQoF9oJoNJEuldi3b9++ghi9DlIRUAQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yA2n1FQBFQBBSBwkFASbtwZK0jVQQUAUVAEchxBJS0c1yAmXb/X48/LrVr1860uJbLIwT2lSolv9Ss6dmIatWq5VlduVDR4897o0vHH368lD6odC4MWfsYEAKJdElJOyDwI9dMiRKR65J2KCQEjj9eZPVqTxr/8ssvpdBIu8QD3ujSspuXySmVTvFEDskqySX5FHpfk41fSdtXFYlw5UraERZOwF1T0s4KcCXtrOBLWlhJO/EGWEnbn/lWXOvy5culYsWKUqlSpaxa2rlzpyxdulSaNGmSsp7t27fLIYccIiVLlkzdnpJ2VvLIq8I5QtpR1SUlbX+0QUlbSdufmZWm1htvvFGaN28uV155ZVbtf/3113LxxRfLihUrEtazadMm6dixoxx88MFC3n79+knnzp2Tt6mknZU88qpwjpB2VHVJSdsfbVDSVtL2Z2Y5JO02bdrIkCFDZMyYMVKtWjUZPXq0rFu3TmbOnCljx441tXTv3l3at28v1atXFxaoVatWSadOnWTQoEEmbyrSHjp0qPz0008yePBg2bhxo1StWlWwusuVK5e4h0raocyHSDaaY6QdNV1S0vZnVitpK2n7M7McknadOnWkQ4cOMmXKFJk9e7YMGzZMFi5cKMcee6xs27ZN9u7da8gccu7SpYs0bdpUmjVrJt26dZNevXrJ+eefn5K0b7jhBpP/6quvln379hn3+BdffJH8UpCSdijzIZKN5hhpR02XlLT9mdVK2kra/swsh6S9cuVKmTdvnmAlkLp27Spr1qwxf/fu3Vt27dolU6dOlfHjxxvrGIu8dOnS8uabb8oRRxwhRUVFKUm7Xbt2wp+2bdua+itXriwLFiyQmsk+5VHSDmU+RLLRHCPtqOmSkrY/s1pJW0nbn5nlkLQh3/Xr1xuL2SbOnKdNmyaLFi0yrmzOvRs3bmws7uHDhxfnq1evntSvXz8laQ8cONCQe58+fYzVXqFCBdmyZYuxuOfOnWs2DLGpf1FRKHhooxFEIMdIO2q6VLTTG13ST7721w0lbSXtUFZLe3mmTJkyMnHiRJk8ebJxgbds2VKWLFkiW7dulQYNGpi+rV692tz8btiwoUyYMEEaNWokAwYMMC70Vq1apSTtGTNmyKhRo2TWrFny/PPPG9KfP39+8jGrpR3KfIhkozlG2lHTJbW0/ZnVStpK2v7MLAeWdosWLYQ/WNaLFy8WJiME27NnT1MaQubi2Lhx48z/p0+fLn379jX/Llu2rMyZM8ece6e6iLZjxw5Tz6effir8m3Pzs846S0k7FKnnWKM5RNpR1CUlbX/mu5K2krY/M8tlrdzsxlLAfZ0q7dmzx5x5cyYd+831smXLhDO9+NS6dWtjpa9du1aqVKkipUqVSt0ztbRdSi6Ps+cIacdLICq6pKTtj24oaStp+zOzAq6Vb7A3bNhwQKunnXaaubjmOClpO4Yq7zPmKGlnKxevdElJO1tJJC6vpK2k7c/MytValbRzVXLe97tASdsrIJW0vUJy/3qUtJW0/ZlZuVqrknauSs77fitpZ4WpknZW8CUtrKStpO3PzMrRWjdVqSJHH3104L3fvXu3Oze+Rz3UdtMA+fHHniCdSwutJwMWkSoDvdGlae2nSZ2KdbzqVsJ6ckk+hd5XjfLlqyrkXuUPP/yw9O/fP/COh6WI2m4wog4L52BGl7iVsHQpkzHnknwKva9K2pnM8DwuM/eii+Tcc8/df4T33ef7iMNSRG3Xd9GaBsLCOZjRJW7losEXybnnxOlSmB1K0fbmLZulQvnUX65Q/Lamt8kRZY4IdRS5NJf86KuSdqjTL4KNx59pX3ihyBtv+N5RPya3k05ru05Qyj5PWDhn3/PMa/DqTDvzHnhfcs1ta6T6EdW9r9hFjbk0l/zoq5K2i8lSEFmVtAMRsx/K7KTjhdauE0z8yqOk7Q+yYc3hTEbjR1+VtNNIgnfBCW150kknZSKzpGWWL18uFStWlEqVKmVV786dO2Xp0qXSpEmTlPXwKAuXrpKG5LSllbSzkofTwn4os5O287HdqOqSkraTGek+T1hz2H1P/TkWUtJOI4l3333XvAl+1VVXmbPef/3rX3LQQQdlIr/9yti3xwkGkk3iIYhUz5gSJOTjjz82T6HS7xEjRqRuTkk7G3E4LhvWwpOP7UZVl5S0HauDq4xhzWFXnfxfZj/6qqQdI4lffvnFvO399NNPy3nnnScjR440hPf555+bSFzEur7sssvM86GExDzzzDPl/fffl0ceecTEw3aT7EJDSM4hQ4aYkJtE8Ro9erTZJMycOVPGjh1rquzevbu0b99eqlevLpRbtWqVdOrUSQYNGmTypiJt3iYnuAj9PP3005W044Tkh1I5mQfarhOUnOWJqi4paTuTn9tcYemO236S34++KmnHSOKtt96S+++/38SvhkQJi0noS971fvDBB+Wwww6T77//3pA3afDgwYYQS5QoIQ888IArmdqFpk6dOtKhQwdD+gTzoO6FCxeayLNxKwAAIABJREFUCF4QLpYyZA45d+nSRZo2bSrNmjWTbt26Sa9evUxIz1SkbTvFZgCyV0t7fzH5oVROJoK26wQlZ3miqktK2s7k5zZXWLrjtp9K2pkg5rIM1nPdunXl+uuvl59//llwPS9YsMCQNiEtIWes8Q8//FA6duwoK1askJNPPlmeffZZOfXUU121ZhcagnwQ0xqLm9S1a1cTEIS/e/fuLbt27TKbiPHjx5vzaDYTvCVO7GDiZNNnJW1X0O+XOawFQNvNXGbxJaOqS0ra3sk4tqawdCeT0fjRV7W0YyTRrl07c3bNHy5ubdmyxbip40mbs+EaNWqYc2JLshC6m2QXGsgX1zsWs02E6pw2bZosWrTIWPucezdu3NhY3GwebKpXr57xBGRK2nPnzjUbhtjUv6ho/2HoJ19uxOo4rx/K7KTxfGw3qrpUtDNOl5wIKOJ59JMvdwLyQ9+UtGNkAAlz8eyJJ54wlu1HH30kRMmKJW1iUhPLGgv3+eefl6uvvtq4yd0mu9AQjnPixIkyefJk4wJv2bKlLFmyRLZu3SoNGjQw1a5evdqE12zYsKFMmDBBGjVqZNzyuNCJlZ0paSfss15EcyvKjPL7ocxOOpKP7UZVl9TSdjIj3ecJaw6776meaWeCmasymzZtkh49esj8+fONK/rll18WrFFL2twe51z7tddeM+fOZ511lvncCjJ1m1hoWrRoYf5gWS9evNhcWhg1apT07NnTVAchV61a1Vj0pOnTp5uLciQ2DnPmzDHn3k5J+4svvtjPUlfS9kepnMyFsBaefGw3qrqkpO1EE9znCWsOu++pP+uLWtoJJIFbvHz58gf8JvZb5w8++EBuuukmQ95epI0bNwpWd4UKqZ8SpA+cedesWdPcYreJjQXn4/GpdevWxkp3nNTSdgxVNhnDWngKod2o6JKSdjYakrxsWHM4k9H40Vcl7QwkMWnSJBk4cKD5JAwrNwqJS3MbNmw4oCu497m45jgpaTuGKpuMfiizk/4UWrtOMInP45UuKWlngn76MmHN4fQ9OzCHH31V0s5AEriksXLTvi6WQd2hF1HSDkQEfiizk44XWrtOMPErj5K2P8iGNYczGY0ffVXSzkQS+VxGSTsQ6fqhzE46XmjtOsHErzxK2v4gG9YczmQ0fvRVSTsTSeRxGQ3NGYxw/VBmJz0vtHadYOJXHg3N6Q+yYc3hTEbjR1+VtDORRB6Xefjhh6V///6Bj9CPye1kENquE5SyzxMWztn3PPMawtKlTHqcS/Ip9L4qaWcyw/O4zKYqVeToo492N8IHHxS54gp3ZeJyh6WI2m5WYnNcOCycHXfQh4xVBmagSz70w0mVu3/ZLaVLubiw6qRSn/IUQl8/7vFxUvSUtH2aWDlbrcuX3cw4+Y78+uuzGnJYi7q2m5XYHBcOC2fHHfQhYz6eafsAk1aZAIF99+1T0taZ4RABJW2HQGWXLSwSK7R2s5NSdqWVtLPDr5BLK2lHUPrLly+XihUrSqVKlbLq3c6dO82rbE2aNElZz+bNm02AkbSxwJW0s5KH08KFRp5+jjequqSk7VQbNF88AkraEZwT9r1kgoFkk3gIItUzpryeRizuY445Rg4++GDzlvo999yTvEkl7WzE4bisnySWqhP52G5UdUlJ27E6aMY4BJS0Izgl7EJDSM4hQ4aYkJtE8SLuNYFDiC42duxY0/Pu3bsb4q1evbpQjrjYnTp1kkGDBpm8qUibPIQTJd43VjlPmlKGYCMJk5J2ILMlH8kzrM1CVHVJSTsQVcrLRpS0IyhWu9DUqVNHOnToIFOmTJHZs2fLsGHDzHvmkCovr+3du9eQOUTbpUsXadq0qTRr1ky6desmvXr1MiE9U5E2UckIG0qAERtwBNJPGkpUSTuQ2aKk7R3MUdUlJW3vZFxoNSlpR1DidqEhyAcxrbG4STY+N3/37t1bdu3aJVOnTjWhQnk2FYuct8SJw80ZNSFC00X52r17t7Hm2RC89NJLcsEFF5i2HMXTdoKd3h53gtJ+eZS0XUOWtEBUdSkf42l7JzWtKRUCStoRnB92oYF8169fbyxmmwjVOW3aNFm0aJFs375dOPdu3LixsbiHDx9enK9evXpSv379lKSNS7xdu3aG6AlwQqjPlEkt7UBmi5K2dzBHVZfU0vZOxoVWk5J2BCVuFxrCcU6cOFEmT55sXOAtW7aUJUuWyNatW6VBgwam56tXrzZn0cTtnjBhgjRq1EgGDBhgXOjE3E5laT/xxBPmfHzGjBnOUFDSdoZTlrmUtLMEMKZ4VHVJSds7GRdaTUraEZQ4C02LFi3MHyzrxYsXCwv5qFGjpGfPnqbHEDKW8TjczyLFZ9L8mzPqOXPmmHPvVKTNOThEH5twyXOWnjApaQcyW5S0vYM5qrqkpO2djAutJiXtHJD4xo0bBau7QoUKKXu7Z88e4TOumjVrmvCgNi1btkwg4/jUunVrY6U7TkrajqHKJqOSdjbopS4bFV1S0vZPxvles5J2vktYRPhee8OGDQeMlO+yOc92nJS0HUOVTUYl7WzQ87esV7qkpO2vnPK5diXtfJau12NT0vYa0YT1KWkHAnOojShphwp/TjeupJ3T4gu480ragQCupB0IzKE2oqQdKvw53biSdk6LL9jOj+vb13wr7iodd5xI+fKuisRnVhLLCj7HhQsNZ8fA+JCx79AMdMmHfjip8pu130i16tWcZA09T773tYSUkPrH1E+Ks4bmDH0KRqsDfB7Gt9+aFAGvEahVq5bXVUa6PtWlSIsnpzuXSJdK7Nu3L3lAz5wernZeEVAEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLnjoaRUARUAQUgTxGQEk7j4WrQ1MEFAFFQBHILwSUtPNLno5H86/HH5fatWs7zq8ZFQEnCOyuU0dq1arlJGve5Hn8+fS6VKFsBTm67NF5M2YdSDAIJNIlJe1gsI9eKyVKRK9P2qPcRqBECfly1aqCI+0SD6TXpf7n9JehzYaGLt8vv/wyZ+RT6H1NNn4l7dDVKKQOKGmHBHweN6uknVS4Stru572SduINlpK2+7nkqsTy5culYsWKUqlSJVfl4jPv3LlTli5dKk2aNElZz/bt2+WQQw6RkiVLpm5PSTsreWjhBAj4TNpR1SW1tP3RBiVtJW1/ZlaaWm+88UZp3ry5XHnllVm1//XXX8vFF18sK1asSFjPpk2bpGPHjnLwwQcLefv16yedO3dO3qaSdlby0MLBk3ZUdUlJ2x9tUNJW0vZnZjkk7TZt2siQIUNkzJgxUq1aNRk9erSsW7dOZs6cKWPHjjW1dO/eXdq3by/Vq1cXFqhVq1ZJp06dZNCgQSZvKtIeOnSo/PTTTzJ48GDZuHGjVK1aVbC6y5Url7iHStqhzIe8btRnS9uSdtR0SUnbn1mtpK2k7c/MckjaderUkQ4dOsiUKVNk9uzZMmzYMFm4cKEce+yxsm3bNtm7d68hc8i5S5cu0rRpU2nWrJl069ZNevXqJeeff35K0r7hhhtM/quvvlr27dtn3ONffPFF8ksnStqhzIe8bjQg0o6aLilp+zOrlbSVtP2ZWQ5Je+XKlTJv3jzBSiB17dpV1qxZY/7u3bu37Nq1S6ZOnSrjx4831jEWeenSpeXNN9+UI444QoqKilKSdrt27YQ/bdu2NfVXrlxZFixYIDVr1lRLOxTJF2CjAZF21HRJSdufua6kraTtz8xySNqQ7/r1643FbBNnztOmTZNFixYZVzbn3o0bNzYW9/Dhw4vz1atXT+rXr5+StAcOHGjIvU+fPsZqr1ChgmzZssVY3HPnzjUbhtjUv6goFDy00TxGICDSjpouFe1Mr0t6e9z9vFfSVtJ2P2s8KGHP4cqUKSMTJ06UyZMnGxd4y5YtZcmSJbJ161Zp0KCBaWn16tXm5nfDhg1lwoQJ0qhRIxkwYIBxobdq1Solac+YMUNGjRols2bNkueff96Q/vz585OPQN3jHkhXq9gPgYBIO2q6pJa2P3qgpK2k7c/McmBpt2jRQviDZb148WJhMkKwPXv2NKUhZC6OjRs3zvx/+vTp0rdvX/PvsmXLypw5c8y5d6qLaDt27DD1fPrpp8K/OTc/66yzlLRDkXqBNhoAaUdRl5S0/ZnvStpK2v7MLJe1crMbSwH3daq0Z88ec+bNmXTsN9fLli0TzvTiU+vWrY2VvnbtWqlSpYqUKlUqdc/U0nYpOc2eFgGfSTu+/ajokpJ22pmRUQYlbSXtjCZO1ArxDfaGDRsO6NZpp51mLq45TkrajqHSjA4RCJi0HfYqaTavdElJO1tJJC6vpK2k7c/MytValbRzVXLR7XeOkbZXQCppe4Xk/vUoaStp+zOzcrVWJe1clVx0+62knVQ2envc/bRV0lbSdj9r8rjEpipV5Oijgw8VuHv3bndufI9koO16BGSaar6cMSNnokh5hUiVgel16ZK6l2iUL5eAK2krabucMvmd/eGHH5b+/fsHPsiwFFHbDUbUYeEczOgStxKWLmUy5lyST6H3VUNzZjLD87hMWAtNWIqo7QYzmcPCOZjRJW7losEXybnnnBtmFxy3vXnLZqlQPvWXK44ri8t4a5NbpXzZ8pkWP6BcLs0lP/qqpO3ZVMqPipS0g5GjH8rspOeF1q4TTPzK4+Qiml9tR6ner279SmqWT/JscgYdDWsOZ9BV8/ZGrVq1MimatIyStqdw5n5lStrByNAPZXbS80Jr1wkmfuVR0v4/ZJW0lbT90jFX9fJuNy+LESazYsWKUqlSJVflly9fnlG5+EZ27twpS5culSZNmqRsn0dZuHSVNCTn/0orabsSY8aZC408/RxvVHVJSVtJ2495r5Z2hsvuXXfdJfzhWdHmzZuboB5ukn173G25+DZ4CCLVM6YECfn444/NU6gHHXSQjBgxImU3lbTdSDHzvH4os5Pe5GO7UdUlJW0lbT/0rWBIm1jSQ4YMMaEtiZY1evRo4bWwu+++W3788UcTUKN27drCs59Dhw6VE088UV544QU58sgjDTG/+OKLcsIJJ8if/vQnY2HznvekSZPMTetsSJuQnPH9InDIzJkzZezYsWbWd+/eXdq3by/Vq1cXFiis+06dOsmgQYNMkJFUpM3b5AQXef/99+X0009X0o5jNj+UqlDJM9W4/cTZknbUdElJW0nbj3lfMKTN29wdOnSQKVOmmKAZw4YNE6zU66+/3gTTeOqpp+SGG24wLuS///3vcsstt8h1110nRx11lDzyyCOm3Ouvvy7PPfecIVTiUmPBQvrZkHadOnUO6NfChQtNBC8IF0uZTQbk3KVLF2natKk0a9ZMunXrJr169TIhPVORtl1I2aRA9mpp708tfiiVkvaBCPiJsyXtqOmSkraSth/zvmBIG2uW2NHsxkldu3Y1gTfuvfdeE6saArz11lvl+OOPN5b1/fffL4cddpiJQ00Erg8++EDefvtt+eKLL8z/vSJtgnwk6hf96927t+zatUumTp0q48ePN+fReAp4S5zYwcTJLioqUtJ2wpJJ8vihVE66o+06QclZHkvaUdMlJW0lbT/0vGBIu0ePHrJ+/XpjmdpESMzbbrtN2rZtK5dccokh61//+tcmVKYl7Xr16hmCh7whScjTS9KGfBP1a9q0abJo0SLZvn27OS9nY4HFTTxsm+hb/fr1MyZtLtOxYYhP+riKM7LIJpcfyuykP/nYriXtqOlS0c4iJyLJ+zx6e1xvj2c0yXFpT5w4USZPnmxczS1btpQlS5aYM+JUpE1IS571xCK//fbb5Z133vGUtAnHmahfW7dulQYNGpixrl692oTXbNiwoUyYMEEaNWpkzqlxoXO2ru7xjKaEKZSPJBbW2XJY7VrSjpouqaWtlrYf60vBWNo///yzsaCxkhn0qFGjpGfPnuZniUj7gQceMO5xzpCvuOIK4zbnItqrr75q3NXXXHNN8Zl2ixYtit3uTumDhYZy/EnUL+qBkKtWrWpufpOmT59uvAGksmXLypw5c8y5t1PSxrUfa6kn6qveHncqwezy+aHMTnqUj+1GVZeUtJW0/dC3giFtu6Bt3LhR2JFXqOD8yT4In++huZTGvw8++GDPg1s47RffW3MWX7NmTSlZsmTxOs1FO8704hO34bHSnSYlbadIZZfPD2V20qNCaDcquqSkraTth74VHGk7WdhyMQ834Tds2HBA1/msjYtrTpOStlOkssvnhzI76VGhtesEk/g8XumSkraSth/6pqSdiVbncRkl7WCE64cyO+l5obXrBBO/8ihpK2n7oW9K2n5pbI7Wq6QdjOD8UGYnPS+0dp1g4lceJW0lbT/0TUnbL43N0XqVtIMRnB/K7KTnhdauE0z8yqOhOf8PWQ3NqZ98+aVjWq+IKGkHMw0KjTzDGm8w0kzcSli6lMmYc0k+hd5XtbQzmeF5XCashSYsRdR2g5nMYeEczOgSt1JlYBXzxkMupN2/7JbSpZxfWA1zTPnW1zOOO0Oeuuwpx5AqaTuGqjAyKmkHI+ewSKzQ2g1Gmolb0TPtMNHPnbY7N+qspJ074opeT5W0g5FJoZFnWOMNRppK2mHinOttK2nniASXL18uFStWlEqVKmXVYx59Wbp0qTRp0iRlPZs3bzZvpxNTO1VS0s5KHI4Lh0Vi+dhuVHVJLW3H6lDQGZW0c0T89r1kgoFkk3gIItUzpryeRizuY445xrzkxmMr99xzT9ImlbSzkYbzsvlInqlG7+d4o6pLStrO9aGQcypp54j07UJDqFDChhJykyhexL0moAkBTsaOHWtG0717d0O81atXNwFOiIvdqVMnGTRokMmbirTJ88svvwhvqWOV86QpZQg2kigpaQczgfwksbDIM6x2o6pLStrB6FKut6KknSMStAtNnTp1pEOHDjJlyhSZPXu2DBs2TBYuXGhIlWAge/fuNWQO0Xbp0sUEMGnWrJl069bNxAAn1Ggq0t6xY4eUKFHCBBixAUcgfX6mpK1RvoJSFz83KVHVJSXtoGZXbrejpJ0j8rMLDUE+iGmNxU0idjcubf7u3bu37Nq1y0QVI453uXLljEXOW+LEDuaMuqioKG2Ur927dxtrng3BSy+9JBdccIFpS+NpK2kHpS5BkHbUdEnjaQc1u3K7HSXtHJGfJW3Id/369cZitolQndOmTZNFixbJ9u3bhXPvxo0bG4s7NrRmvXr1pH79+ilJG5d4u3btDNGPHDnShPpMldQ9HswE8pPEwnJTh9VuVHVJLe1gdCnXW1HSzhEJ2oWGMKETJ06UyZMnGxd4y5YtZcmSJbJ161Zp0KCBGc3q1avNWXTDhg1lwoQJ0qhRIxkwYIBxoRNzO5V7/IknnjDn4zNmzHCEjJK2I5iyzqSknTWExRVEVZeUtL2TcT7XpKSdI9JloWnRooX5g2W9ePFiYSEfNWqU9OzZ04wCQsYyHjdunPm/PZPm35xRz5kzx5x7pyJtzsEh+tiEG5Gz9ERJSTuYCaSk7R3OUdUlJW3vZJzPNSlp56h0N27cKFjdFSpUSDmCPXv2mDPvmjVrSsmSJYvzLlu2TCDj+NS6dWtjpTtNStpOkcoun5J2dvilKh0VXVLS9k/G+VSzknY+SdPFWPhee8OGDQeU4LtszrOdJiVtp0hll09JOzv8/CztlS4pafsppfypW0k7f2QZykiUtIOBXUk7GJzDbEVJO0z0c6dtJe3ckVUke6qkHYxYlLSDwTnMVpS0w0Q/d9pW0s4dWUWyp0rawYhFSTsYnMNspe/QvnJD1xvC7ILjttd+s1aqV6vuOH+YGfOtr0eWPVKOO/w4x5BqaE7HUBVGRj4P49tvTYqA1wjUqlXL6yojXZ/qUqTFk9OdS6RLJfbt27cvp0elnVcEFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhG0DlMRUAQUAUUg9xFQ0s59GeoIFAFFQBFQBAoEASXtAhF0/DBnzpwp9evXL9DR67D9RKBWrVp+Vh+5ulWXIieSvOlQIl1S0s4b8bobyJrataVGjRruCnmQe+eOHVL2kEM8qMldFdquO7wyzf3luHFSaKRd+8FwdCkTGe3YsUMOCUH/sunryx1flnKlymVSRWBlvvzyS8/nfbI6lbQDE2vEGipRImId0u7kPAIlSsiXq1Z5vnhFHZcSD6gu+SmjH//4oxxe+nA/m8i6biXtrCHUCtIioKSdFiLN4BIBJW2XgGl2Jwgoae+PklraTmZNPuZR0s5HqYY7JiXtcPHP09aVtJW083RquxyWkrZLwDR7WgSUtNNCpBncI6CkraTtftbkYwkl7XyUarhjUtIOF/88bV1JW0k7T6e2y2EpabsETLOnRUBJOy1EmsE9AkraStruZ00WJZYvXy4VK1aUSpUqZVGLyM6dO2Xp0qXSpEmTlPVs377dfNJRsmTJ1O0paWclDy2cAAGfSTuquqS3x/3VBiVtJW1/Z1hc7TfeeKM0b95crrzyyqza/frrr+Xiiy+WFStWJKxn06ZN0rFjRzn44IOFvP369ZPOnTsnb1NJOyt5aOHgSTuquqSk7a82KGkrafs7w5KQdps2bWTIkCEyZswYqVatmowePVrWrVsnvKY0duxYU6p79+7Svn17qV69urBArVq1Sjp16iSDBg0yeVOR9tChQ+Wnn36SwYMHy8aNG6Vq1aqC1V2uXJJHCZS0A50HBdGYz5a2Je2o6ZKStr+zW0lbSdvfGZaEtOvUqSMdOnSQKVOmyOzZs2XYsGGycOFCOfbYY2Xbtm2yd+9eQ+aQc5cuXaRp06bSrFkz6datm/Tq1UvOP//8lKR9ww03mPxXX3217Nu3z7jHv/jii+QPXShpBzoPCqKxgEg7arqkpO3v7FbSVtL2d4YlIe2VK1fKvHnzBCuB1LVrV1mzZo35u3fv3rJr1y6ZOnWqjB8/3ljHWOSlS5eWN998U4444ggpKipKSdrt2rUT/rRt29bUX7lyZVmwYIHUrFlT5s6da9qOTf2LigLFQRsrAAQCIu2o6VLRTtUlP2e3kraStp/z64C6rUsP8l2/fr2xmG3izHnatGmyaNEi48rm3Ltx48bG4h4+fHhxvnr16pngHqnc4wMHDjTk3qdPH2O1V6hQQbZs2ZL8Qppa2oHOg4JoLCDSjpouqaXt7+xW0lbS9neGJbG0y5QpIxMnTpTJkycbF3jLli1lyZIlsnXrVmnQoIEptXr1anPzu2HDhjJhwgRp1KiRDBgwwLjQW7VqlZK0Z8yYIaNGjZJZs2bJ888/b0h//vz5yceqpB3oPCiIxgIi7ajpkpK2v7NbSVtJ298ZloC0W7RoIfzBsl68eLHwuDwE27NnT5MbQubi2Lhx48z/p0+fLn379jX/Llu2rMyZM8ece6eytIneQz2ffvqp8G/Ozc866ywl7UClXeCNBUDaUdQlJW1/572StpK2vzMsTe3c7MZSwH2dKu3Zs8eceXMmHfvN9bJly4QzvfjUunVrY6WvXbtWqlSpIqVKlUrdE7W0Q50Hedm4z6Qdj1lUdElJ29/ZrKStpO3vDPO5dr7B3rBhwwGtnHbaaebimuOkpO0YKs3oEIGASdthr5Jm80qXlLSzlUTq8kraStr+zrBcqV1JO1cklTv9zDHS9gpYJW2vkExcj5K2kra/MyxXalfSzhVJ5U4/lbRzR1Y51FMlbSXtYgT41Oqkk04yn0olStzE5vJXXiYl7bwUa6iDUtIOFf58bVxJW0m7GAFuW/Ps56mnnppwvpcoUcK8LpaXSUk7L8Ua6qCUtEOFP18bV9IucNLmne9HHnnEWNhcRHn22WfllFNOMQE2+OTqhBNOMG+BE00L0r7++uvNd8/czub3Sd/yzjWNUdLONYlFv79K2tGXUQ72UEm7gEn7P//5j9SuXVtefPFFISoWb4F/8MEHsnnzZvNMKI+fvPzyy/LKK6+Y50Mh7f79+5vvq3nbG2K/7LLLcnDaH9jlNbVrS40aNQIfy84dO6TsIYdouz4jEBbOX44bl/y9e5/HHFb1tR8MR5cyGS9vOPBpaC4k29eXO74s5UolCXwUkYHw9katWrU87U2yOkvsy1v/74H4vfDCCyZgxz/+8Q/zSwic976fe+45qVu3rnkHnMS73Z988okcc8wx5ulRHj7hTXAeRiE6Vz6khx9+2GxIgk5+TG4nY9B2naCUfZ6wcM6+55nXEJb8CPVoAAATaklEQVQuZdLjXJJPofdVSVvEEO5nn30mI0eONPP99NNPlyeffFIIa4nVffnll5ufczGNsJiQ9+7du81DJZMmTTJBNx5//PFMdCVyZcJaaMJSRG03mCkYFs7BjC5xK2HpUiZjziX5FHpflbRFZMWKFXLppZeakJg//vijcQ/jHl+6dKkhZM6y33vvPenRo4d8+OGHxj3+xhtvmCAf11xzjYmgRVCPfEhhLTRhKaK2G8ysDQvnYEaXuBV1j/uDftRd+Y+1fExOqXSKGbwf815J+3/zCkLm8hnnOuXLlzeucaJq4RongMc333xjfta+fXtD2r/+9a+F5xLJ89Zbb8mRRx7pzwwNuFYl7WAA90OZnfS80Np1golfefRxFb+QjXa9/+7ybzm3xrlK2kGI6bvvvjMucIJxxCbOryHy2BviHPnzbCjn2pB4viQl7WAkWWjkGdZ4g5Fm4laUtMNEP7y2lbTDw74gW1bSDkbsYZFYobUbjDSVtMPEOWptK2lHTSJ53h8l7WAEXGjkGdZ4g5GmknaYOEetbSXtqEkkz/ujpB2MgMMisUJrNxhpKmmHiXPU2lbSjppE8rw/StrBCLjQyDOs8QYjTSXtMHGOWttK2lGTiEf9Wb58uVSsWFEqVaqUVY07d+40n6bxvGqqtGfPHvNtebrnVpW0sxKH48JhkVg+thtVXdKLaI7VIa8yKmnnlTj//2BuvPFGad68edbfd/NOOhHH+NY8Udq7d698/PHH5n30gw46SEaMGJESUSXtYCZcPpJnKuT8HG9UdUlJOxhdilorStpRk4hH/bELTZs2bWTIkCEyZswY8803r7OtW7dOZs6caR51IXXv3t18H169enWhHK+yderUSQYNGmTypiLtbdu2yYABA+T99983L70pae8vQD/JJCwSK7R2o6pLStoeLZY5Vo2Sdo4JzGl37UJTp04d81Qqb5/Pnj1bhg0bZl5mO/bYYwXCxVKGzCHnLl26SNOmTaVZs2bSrVs36dWrl3mVLRVp2/6wGYDslbSVtL0OYOBkzvu5OYqqLilpO5kZ+ZdHSTv/ZGpGZBealStXmqdSsbhJvMC2Zs0a83fv3r1l165dJngJgUk4j8YiL126tIk2xkMwRCHLlLTnzp1r2o5PGjDE/0nnJ4kVqqUdNV0q2lnk/0TSFiKHgJJ25ETiTYcsaUO+vLiGxWwTIT+nTZsmixYtku3bt5tz78aNGxuLe/jw4cX56tWrJ/Xr18+YtBONRM+0vZFvulqUtNMh5Pz3UdUltbSdyzCfcipp55M0Y8ZiF5oyZcqYeN2TJ082LvCWLVuat863bt0qDRo0MCVWr15t3kRv2LChTJgwQRo1amTOqXGht2rVSkk7izmi5JkFeC6K+olzVHVJSdvFBMmjrEraeSTM2KGw0LRo0cL8wbImJjcL26hRo6Rnz54mK4TM2+bc/CZNnz5d+vbta/7N++hz5swx595O3eNffPHFfpa6Wtr+ROFxMmX9JLFU7edju1HVJSVtJ5qQf3mUtPNPpglHRMQwrO4KFSqkHDHfW3PmXbNmTSlZsmRx3mXLlglnevGpdevWxkp3mtQ97hSp7PLlI3lGZbMQFV1S0s5OR3K1tJJ2rkou4H7zvTZRx+LTaaedZi6uOU1K2k6Ryi6fknZ2+PlZ2itdUtL2U0rRrVtJO7qyycueKWkHI1Yl7WBwDrMVJe0w0Q+vbSXt8LAvyJaVtIMRu5J2MDiH2YqSdpjoh9e2knZ42Bdky0rawYhdSTsYnMNsRUk7TPTDa1tJOzzsC7JlJe1gxK6kHQzOYbaipB0m+uG1raQdHvYF2bKSdjBiV9IOBucwW1HSDhP98NpW0g4P+4JsWUk7GLEraQeDc5it1H6wttSoUSPMLjhue8eOHa4+DXVcsQ8Zo97Xx1o+JqdUOsWM3A89T1ZniX379u3zAW+tMuIIKGkHIyA/lNlJzwutXSeY+JUnLF3KZDxhzQvtq3sElLTdY5bXJQgJynvmmhQBrxEII7qY12NwU5/qkhu0NK8bBBLpklrabhDMo7x///vfZe3atXk0Ih1KFBAgFnzHjh2j0JXA+qC6FBjUBdXQOeecI+eee+4BY1bSLqhp8P8HG5ZLT9sNZsIVGs7BoJq4lbCwzmTM2tdMUEtfJkhclbTTyyMvcwQ5yWIB1HaDmU6FhnMwqCppB4lzWHM4kzEG2Vcl7UwklAdlgpxkStr9A58xhSbfwAGOaTAsrDMZs/Y1E9TSlwkSVyXt9PLIyxxBTjIlbSXtvFSi/w0qLF3KBFPtayaopS8TJK5K2unlkZc55s6dm/CSg9+D1Xb9Rvj/6i80nINBNXErYWGdyZi1r5mglr5MkLgqaaeXh+ZQBBQBRUARUAQigYCSdiTEoJ1QBBQBRUARUATSI6CknR6jvM7x3//+V3gu8NBDD006zp9++kkOP/xw1zg4qXvz5s1yxBFHyEEHHeS6/mQFnLRL2R9++MGMu0yZMp607aTd7du3C/kywTOb8SLDww47TEqUKOF6rNu2bTM4JSvLmA455BApWbKk67rzqYAT+WeqS5ng5KQ/33//vVSsWDGT6j0ts2vXLjO/SpcunbTePXv2COvFMccc42nbbitLN995ZHTLli1SoUIFt1U7yq+k7Qim/Mz01FNPyaOPPirHHXecoBCTJk3aTyEWL14s119/vRx//PHy9ddfy7hx46Rx48aOwEhX95o1a6R9+/amvYMPPlhOO+00ueeeexzVnSpTunZtWcZzyimnyGuvvSZnn3227+3u3LlTunbtKlu3bjXkduqpp8oDDzzge7ssct26dTObhP/85z/Stm1b6dy5s6N2v/vuO1m2bJm0adNGVq1aJZUqVdqv3KZNm8xDKsgPPPv16+e4bkcdyKFM6eZdNrqUCQzp+vPWW2/JzTffbPQOErrhhhvk0ksvzaSprMqw7tx2222yZMkS2bt3r+nPyJEjE24Ab7/9dvnoo49k1qxZWbWZaWEn852+/fGPf5STTz5ZfvzxR+GC2kknnZRpkwnLKWl7CmfuVIaylCpVyuwIjzzySOndu7dUrVrVTDibLr74YrnjjjuEv1944QUZO3asI4VxUvegQYPkl19+McQFoWGprVu3To499tiMQXTSLpXv3r1b2rVrJ1999ZWMGTMma9J20u6ECRNk4cKF8vjjjws78WnTpslll12WlYfBabuvvPKKTJkyRd59913p0qWLrFixwhHGyHzevHkyYsQI+fbbbw8g7aFDhwqW4+DBg2Xjxo1m/kAA5cqVc1R/vmRyIodMdSkTjJz053e/+53cfffd0qxZM5kzZ47Z2DmdF5n0KVkZ5mSfPn2MbpAguPHjxwuvgcWmGTNmyF//+ldjXIRF2k7me+XKlYUNWrVq1WT58uXGqwaBe5mUtL1EM4fqgrBQ2C+++ML0mt3t0qVLjTVtE09SolT8zU64RYsWZvFOl5zUjUsed1jZsmVl+vTp0rdvX2PNZeK+tf1x0i55aevCCy80Yx4wYEDWpO2kXdp5//33ixWaTUvLli3TQZny907a3bBhgzRq1EguuOACc6OcBRKLxU1CJolIG+uMOXT11VebjQgeBOZTob097kQOmeqSGzm50QM2W2yuOJZCH9BHNrBBp2effdZsDG3bl19+uVx55ZVyzTXXFHeFwBk33XST8cShN2GRdrr5/vPPP5tjpCuuuELeeOMN+cMf/iCPPPKIOZbyMilpe4lmDtWF2/Oqq64q3l0/88wz8q9//UuefPLJ4lFw1szuGwsKxTn//PMdvVfupG4aweIdMmSIDBs2TF566SVDLNkkJ+1iPbJJmDhxotmEeEHaTtrFwsWiweplA4QrmSOCbDYpTtplgWMBvPHGG2XBggXmzJAAF25SMtLGW8EfXO4krAzaqFmzppvqcz6vEzlkqkuZgOOkP9TLRqxnz57y+eefC5Ysx2BBJzxPWKRsoEkcIeEFgPBIeOH4P8YEXsH7778/NNJON98xOurUqWNc4hwp9ejRQ6699trisXiFrZK2V0jmWD3srNlp475hUcYFSuJ8yabzzjvP/Pz00083VuLAgQONcqdLTupGGVECSASFZWOQbXLSbtOmTYWzWi7fLFq0SOrWrWvO8p2e1Sfqo5N2sWa48MYmxRIcFsaJJ56Y8bCdtMtmoV69etK/f3/jyoY8ElnNqTqRjLSZD9SH9c55JBdvWFgL7UKaEzlkqkuZTA4n/WHDCBlCKswNPF5hpHfeeUeGDx9evK5wrs5G2uojm87mzZvLGWecYe6DrFy50mxAOaoLOqWb75x5c0eHfqIXGAbcHeBozMukpO0lmjlWV8OGDc0ZKxeyUAzOl4kq88knnxglwY169NFHy5133mnOtnHzPPjgg45Gma7uJ554wlh8TjYBjhr8X6Z07RLZjA2D3dWzG2ahyPYcNl27eDL+9re/GbfZN998I2we1q9fn9WZNmNI1+6f//xn4yUZPXq0uSx21llnmbsDXB5zmuJJG2uaOcNYRo0aZSyf559/3iy+8+fPd1ptXuVLJ4dsdCkToNL1p0OHDkbH2UyGmbi9fsIJJ5i5ydccXNBER3E1c5GLYwXmK4njO+YYc40z46ATa1Wi+c4RFH3FAKhRo4awtuHF6969u9E3vAdeJiVtL9HMsbqYhNYN1bp1ayHEILczIW4mIeeT9mZ1+fLlzYJ81FFHORplurqxAON3oOyicS9lk9K1G1v3JZdcInfddVfWZ9rUma5dPmnhsh/ucTYIbJA4C842pWsXq/r3v/+9sLCQsGK4dOQmQdp4J+ynNlgR1g3eqlUr+fTTT82Z6OzZs80iVYgpnRyy0aVM8EzXH44ykKlNfBng5L5KJn1JV6aoqMgYD3iCIEVc9vwfTxReMJu4rMa5dlhn2szxRPM9tq9sZG+99VazfrJ2clbvdM1Mh5P9vZK2U6TyNB87Wtw5ydzT3NbEImTH6/b8NV3dfkEa5Xb9+C7dyXiRIaTLFwNeJyyjKlWq+FK31331s750cshGlzLpd7r+ZFKnX2VwLXNUxoYw6indfOdSJnruNVkraUd9Zmj/FAFFQBFQBBSBOATU0tYpoQgoAoqAIqAI5AgCSto5IijtpiKgCCgCioAioKStc0ARUAQUAUVAEcgRBJS0c0RQ2k1FQBFQBBQBRUBJW+eAIuAxArypzp9sv/32uFtanSKQcwioLh0oMiXtnJvG2uEoIsDjJXzL3qlTJ/PCFG8OE0SD72E1KQKKgHMEVJdSY6Wk7XwuaU5FICkCfMf+q1/9yjz88PLLL5vgHERR8jpYgIpAEch3BFSXlLTzfY4X5PiI9kMsbN50/sc//mGeIuXddJ4RJIAFb4vzghFhR7F6efmMF9/4GU8M8t45VjDleAQBNxzvqxPJh6dNidbDi0zUad8ov/fee80LcgQE+Oc//2leRyLQCS+r3XfffSZmNc9C8gY3Lzm9/vrr5k3nZG0TyIO330kEEyF8I/1St3pBTunQBq26FBr0GTWslnZGsGmhsBGAXIn8w/OLv/3tb0286Ouuu848jUpMXp5EhUQfeughQ5w83dmxY0dD1ARBgZhxw7Gr5y3wJk2amHfAIeqnnnrKRMaysb179eolU6dOFaInkZe4ujy3SILEO3fubMLx8aocTxpibVv3OOSerG3eh6ZOnhklkXfy5MmePG8atny0/dxBQHUpd2RFT5W0c0te2tv/IWAXGt7U5glNrF3c0ljSkCE/h2B5FpFoRgSmtxGosGjfe+894enE/9feGaMsDARROIg3sVREvIo3SJUmZU5hl8pbSCoP4AkEL5AmjW0KSfXzDY4EMT+KErPkbffL8s/6JpuXeRP3zWYzm3M6ncwTmqMU8bmmL83DwG63s4P/IXPOZM/z3B4IIG0+87PZ25Jeu6fN+eJdsTFswCSBYxFxXcIaEWMJTD40hEBfCGgv9YX0d+KItL+Do/5Lzwj4jcZtJrH5xP2H85ZXq5XJ4hgMMCBxJ0f+xut2v99HdV2bbSWkjbMZUjUvk1F1p2lq0jnuXFTTeGCv12tzOSMmpI0pANU8o4u0eUDoig3hY9fJOnnIoLIXafd8ISmctYRQrbSXwrgYRNph5EmrfEDAbzRJkpjfNxL0ZrMxGRt5nD6120RSuWZZZlI5VXkcxyZBI0W7PI5UTsXr0jdzkNJxHcMZC8m8KAojd5x7IG1In963kzbkj90o1bnL45B+V2weJkTaurR/jYD20q8z8F58kfZ7eGn2QBDwGw1VMVI3FS8vplG9PpL25XKxnjNyNgMv3sPhEC0WCyPtpmnsc6wKl8ul9aQhbPrjWIj6gHwhY6rwR9LGc3y73VociJ55VC44o3XFbpM2Pw+jJ65KeyAX2IiWob0UVrJF2mHlS6u9IeA3GvrQSMvYTk6n03/xYR6+1rxhPplM7hXyfD63fjgkC3G2LUiv12tUlqVJ1y6FdwVhLhL7s7e/n8VWMoXAEBDQXhpCFl5fg0j7daw0c0AItG80nyyLShvSpkrXEAJjREB7Kaysi7TDypdWe0PgfD5HVVXZb5s/Gcfj0Spj+uIaQmCMCGgvhZV1kXZY+dJqhYAQEAJCYMQIiLRHnHx9dSEgBISAEAgLAZF2WPnSaoWAEBACQmDECPwBhjKXSOVmN6UAAAAASUVORK5CYII=", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = linker.model\n", "model.probability_distribution_chart()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An alternative representation of the parameters displays them in terms of the effect different values in the comparison vectors have on the match probability:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v4+json": { "$schema": "https://vega.github.io/schema/vega-lite/v4.json", "config": { "header": { "title": null }, "mark": { "tooltip": null }, "title": { "anchor": "middle" }, "view": { "continuousHeight": 300, "continuousWidth": 400, "height": 300, "width": 400 } }, "data": { "name": "data-ceab06ca9a4c907808588fc81343c76f" }, "datasets": { "data-ceab06ca9a4c907808588fc81343c76f": [ { "bayes_factor": 0.33746388159569507, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 0, "level_name": "level_0", "level_proportion": 0.9899958998803806, "log2_bayes_factor": -1.5671949945941157, "m_probability": 0.3353385925292969, "max_gamma_index": 4, "num_levels": 5, "u_probability": 0.9937021732330322 }, { "bayes_factor": 43.04556551790893, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 1, "level_name": "level_1", "level_proportion": 0.005140347579447535, "log2_bayes_factor": 5.42779271613676, "m_probability": 0.17891953885555267, "max_gamma_index": 4, "num_levels": 5, "u_probability": 0.004156515002250671 }, { "bayes_factor": 82.16842152983283, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 2, "level_name": "level_2", "level_proportion": 0.003082859391495617, "log2_bayes_factor": 6.360512147486598, "m_probability": 0.17386698722839355, "max_gamma_index": 4, "num_levels": 5, "u_probability": 0.002115983050316572 }, { "bayes_factor": 20406.02818466379, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 3, "level_name": "level_3", "level_proportion": 0.0008027577041464385, "log2_bayes_factor": 14.3167077840707, "m_probability": 0.14137406647205353, "max_gamma_index": 4, "num_levels": 5, "u_probability": 6.928054062882438e-06 }, { "bayes_factor": 9258.582412155205, "column_name": "name_inversion", "gamma_column_name": "gamma_name_inversion", "gamma_index": 4, "level_name": "level_4", "level_proportion": 0.0009781501351920944, "log2_bayes_factor": 13.176575603038243, "m_probability": 0.17050081491470337, "max_gamma_index": 4, "num_levels": 5, "u_probability": 1.8415434169583023e-05 }, { "bayes_factor": 0.09647031769622005, "column_name": "city", "gamma_column_name": "gamma_city", "gamma_index": 0, "level_name": "level_0", "level_proportion": 0.8747266775886633, "log2_bayes_factor": -3.37377107226111, "m_probability": 0.084816575050354, "max_gamma_index": 2, "num_levels": 3, "u_probability": 0.8791986703872681 }, { "bayes_factor": 7.848894447588318, "column_name": "city", "gamma_column_name": "gamma_city", "gamma_index": 1, "level_name": "level_1", "level_proportion": 0.03279609504851985, "log2_bayes_factor": 2.9724894581690755, "m_probability": 0.2478567212820053, "max_gamma_index": 2, "num_levels": 3, "u_probability": 0.03157855197787285 }, { "bayes_factor": 7.479329462081099, "column_name": "city", "gamma_column_name": "gamma_city", "gamma_index": 2, "level_name": "level_2", "level_proportion": 0.09247724580052386, "log2_bayes_factor": 2.902908935207437, "m_probability": 0.6673266887664795, "max_gamma_index": 2, "num_levels": 3, "u_probability": 0.08922279626131058 }, { "bayes_factor": 0.04449680027094667, "column_name": "email", "gamma_column_name": "gamma_email", "gamma_index": 0, "level_name": "level_0", "level_proportion": 0.9945923379461757, "log2_bayes_factor": -4.49015459300374, "m_probability": 0.04449551925063133, "max_gamma_index": 2, "num_levels": 3, "u_probability": 0.9999712109565735 }, { "bayes_factor": 10896992.968579952, "column_name": "email", "gamma_column_name": "gamma_email", "gamma_index": 1, "level_name": "level_1", "level_proportion": 0.0017372362928768847, "log2_bayes_factor": 23.377426741614574, "m_probability": 0.30858883261680603, "max_gamma_index": 2, "num_levels": 3, "u_probability": 2.831871448449874e-08 }, { "bayes_factor": 22489.264303527143, "column_name": "email", "gamma_column_name": "gamma_email", "gamma_index": 2, "level_name": "level_2", "level_proportion": 0.0036704306889567212, "log2_bayes_factor": 14.456948846222605, "m_probability": 0.6469156742095947, "max_gamma_index": 2, "num_levels": 3, "u_probability": 2.876553298847284e-05 }, { "bayes_factor": 0.4109166928436421, "column_name": "dob", "gamma_column_name": "gamma_dob", "gamma_index": 0, "level_name": "level_0", "level_proportion": 0.9966608104918419, "log2_bayes_factor": -1.2830821559768926, "m_probability": 0.41090723872184753, "max_gamma_index": 1, "num_levels": 2, "u_probability": 0.9999769926071167 }, { "bayes_factor": 25590.136849725804, "column_name": "dob", "gamma_column_name": "gamma_dob", "gamma_index": 1, "level_name": "level_1", "level_proportion": 0.003339202178888195, "log2_bayes_factor": 14.643300242123873, "m_probability": 0.5890927314758301, "max_gamma_index": 1, "num_levels": 2, "u_probability": 2.302030407008715e-05 } ] }, "encoding": { "color": { "field": "log2_bayes_factor", "scale": { "domain": [ -10, 0, 10 ], "range": [ "red", "orange", "green" ] }, "type": "quantitative" }, "row": { "field": "column_name", "header": { "labelAlign": "left", "labelAnchor": "middle", "labelAngle": 0 }, "sort": { "field": "gamma_index" }, "type": "nominal" }, "tooltip": [ { "field": "column_name", "type": "nominal" }, { "field": "level_name", "type": "ordinal" }, { "field": "m_probability", "format": ".4f", "type": "quantitative" }, { "field": "bayes_factor", "format": ".4f", "type": "quantitative" }, { "field": "level_proportion", "format": ".2%", "title": "Percentage of record comparisons in this level", "type": "nominal" }, { "field": "log2_bayes_factor", "format": ".4f", "title": "log2(Bayes factor, K = m/u)", "type": "quantitative" } ], "x": { "axis": { "title": "log2(Bayes factor, K = m/u)", "values": [ -10, -5, 0, 5, 10 ] }, "field": "log2_bayes_factor", "scale": { "domain": [ -10, 10 ] }, "type": "quantitative" }, "y": { "axis": { "title": null }, "field": "level_name", "type": "nominal" } }, "height": 50, "mark": { "clip": true, "type": "bar" }, "resolve": { "scale": { "y": "independent" } }, "title": "Influence of comparison vector values on match probability" }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.bayes_factor_chart()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# If charts aren't displaying correctly in your notebook, you can write them to a file (by default splink_charts.html)\n", "model.all_charts_write_html_file(\"splink_charts.html\", overwrite=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also generate a report which explains how the match probability was computed for an individual comparison row. \n", "\n", "Note that you need to convert the row to a dictionary for this to work" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Initial probability of match (prior) = λ = 0.00563\n", "------\n", "Comparison of name_inversion. Values are: \n", "name_inversion_l: Ja k, Kirk\n", "name_inversion_r: Leo , Jones\n", "Comparison has: 5 levels\n", "Level for this comparison: gamma_name_inversion = 0\n", "m probability = P(level|match): 0.3353\n", "u probability = P(level|non-match): 0.9937\n", "Bayes factor = m/u: 0.3375\n", "New probability of match (updated belief): 0.001907\n", "\n", "------\n", "Comparison of city. Values are: \n", "city_l: London\n", "city_r: Manchester\n", "Comparison has: 3 levels\n", "Level for this comparison: gamma_city = 0\n", "m probability = P(level|match): 0.08482\n", "u probability = P(level|non-match): 0.8792\n", "Bayes factor = m/u: 0.09647\n", "New probability of match (updated belief): 0.0001843\n", "\n", "------\n", "Comparison of email. Values are: \n", "email_l: fphillips@young-trner.info\n", "email_r: None\n", "Comparison has: 3 levels\n", "Level for this comparison: gamma_email = -1\n", "m probability = P(level|match): 1\n", "u probability = P(level|non-match): 1\n", "Bayes factor = m/u: 1\n", "New probability of match (updated belief): 0.0001843\n", "\n", "------\n", "Comparison of dob. Values are: \n", "dob_l: 2008-02-17\n", "dob_r: 1983-07-01\n", "Comparison has: 2 levels\n", "Level for this comparison: gamma_dob = 0\n", "m probability = P(level|match): 0.4109\n", "u probability = P(level|non-match): 1\n", "Bayes factor = m/u: 0.4109\n", "New probability of match (updated belief): 7.573e-05\n", "\n", "\n", "Final probability of match = 7.573e-05\n", "\n", "Reminder:\n", "\n", "The m probability for a given level is the proportion of matches which are in this level.\n", "We would generally expect the highest similarity level to have the largest proportion of matches.\n", "For example, we would expect first name field to match exactly amongst most matching records, except where nicknames, aliases or typos have occurred.\n", "For a comparison column that changes through time, like address, we may expect a lower proportion of comparisons to be in the highest similarity level.\n", "\n", "The u probability for a given level is the proportion of non-matches which are in this level.\n", "We would generally expect the lowest similarity level to have the highest proportion of non-matches, but the magnitude depends on the cardinality of the field.\n", "For example, we would expect that in the vast majority of non-matching records, the date of birth field would not match. However, we would expect it to be common for gender to match amongst non-matches.\n", "\n" ] } ], "source": [ "from splink.intuition import intuition_report\n", "row_dict = df_e.toPandas().sample(1).to_dict(orient=\"records\")[0]\n", "print(intuition_report(row_dict, model))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v4+json": { "$schema": "https://vega.github.io/schema/vega-lite/v4.8.1.json", "config": { "title": { "fontSize": 14 }, "view": { "continuousHeight": 300, "continuousWidth": 400 } }, "data": { "name": "data-6916d61d602750fe23c53d3e64120973" }, "datasets": { "data-6916d61d602750fe23c53d3e64120973": [ { "binwidth": 0.01, "count_rows": 2687, "freqdensity": 268700, "normalised": 0.7174899866488653, "splink_score_bin_high": 0.01, "splink_score_bin_low": 0 }, { "binwidth": 0.01, "count_rows": 54, "freqdensity": 5400, "normalised": 0.014419225634178908, "splink_score_bin_high": 0.02, "splink_score_bin_low": 0.01 }, { "binwidth": 0.009999999999999998, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.03, "splink_score_bin_low": 0.02 }, { "binwidth": 0.010000000000000002, "count_rows": 113, "freqdensity": 11299.999999999998, "normalised": 0.030173564753004006, "splink_score_bin_high": 0.04, "splink_score_bin_low": 0.03 }, { "binwidth": 0.010000000000000002, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.05, "splink_score_bin_low": 0.04 }, { "binwidth": 0.009999999999999995, "count_rows": 25, "freqdensity": 2500.0000000000014, "normalised": 0.006675567423230979, "splink_score_bin_high": 0.06, "splink_score_bin_low": 0.05 }, { "binwidth": 0.010000000000000009, "count_rows": 1, "freqdensity": 99.99999999999991, "normalised": 0.0002670226969292388, "splink_score_bin_high": 0.07, "splink_score_bin_low": 0.06 }, { "binwidth": 0.009999999999999995, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.08, "splink_score_bin_low": 0.07 }, { "binwidth": 0.009999999999999995, "count_rows": 1, "freqdensity": 100.00000000000006, "normalised": 0.0002670226969292392, "splink_score_bin_high": 0.09, "splink_score_bin_low": 0.08 }, { "binwidth": 0.010000000000000009, "count_rows": 27, "freqdensity": 2699.9999999999977, "normalised": 0.007209612817089448, "splink_score_bin_high": 0.1, "splink_score_bin_low": 0.09 }, { "binwidth": 0.009999999999999995, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.11, "splink_score_bin_low": 0.1 }, { "binwidth": 0.009999999999999995, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.12, "splink_score_bin_low": 0.11 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.13, "splink_score_bin_low": 0.12 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.14, "splink_score_bin_low": 0.13 }, { "binwidth": 0.009999999999999981, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.15, "splink_score_bin_low": 0.14 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.16, "splink_score_bin_low": 0.15 }, { "binwidth": 0.010000000000000009, "count_rows": 11, "freqdensity": 1099.999999999999, "normalised": 0.0029372496662216268, "splink_score_bin_high": 0.17, "splink_score_bin_low": 0.16 }, { "binwidth": 0.009999999999999981, "count_rows": 3, "freqdensity": 300.00000000000057, "normalised": 0.0008010680907877186, "splink_score_bin_high": 0.18, "splink_score_bin_low": 0.17 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.19, "splink_score_bin_low": 0.18 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.2, "splink_score_bin_low": 0.19 }, { "binwidth": 0.009999999999999981, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.21, "splink_score_bin_low": 0.2 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.22, "splink_score_bin_low": 0.21 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.23, "splink_score_bin_low": 0.22 }, { "binwidth": 0.009999999999999981, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.24, "splink_score_bin_low": 0.23 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.25, "splink_score_bin_low": 0.24 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.26, "splink_score_bin_low": 0.25 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.27, "splink_score_bin_low": 0.26 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.28, "splink_score_bin_low": 0.27 }, { "binwidth": 0.009999999999999953, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.29, "splink_score_bin_low": 0.28 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.3, "splink_score_bin_low": 0.29 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.31, "splink_score_bin_low": 0.3 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.32, "splink_score_bin_low": 0.31 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.33, "splink_score_bin_low": 0.32 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.34, "splink_score_bin_low": 0.33 }, { "binwidth": 0.009999999999999953, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.35, "splink_score_bin_low": 0.34 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.36, "splink_score_bin_low": 0.35 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.37, "splink_score_bin_low": 0.36 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.38, "splink_score_bin_low": 0.37 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.39, "splink_score_bin_low": 0.38 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.4, "splink_score_bin_low": 0.39 }, { "binwidth": 0.009999999999999953, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.41, "splink_score_bin_low": 0.4 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.42, "splink_score_bin_low": 0.41 }, { "binwidth": 0.010000000000000009, "count_rows": 16, "freqdensity": 1599.9999999999986, "normalised": 0.004272363150867821, "splink_score_bin_high": 0.43, "splink_score_bin_low": 0.42 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.44, "splink_score_bin_low": 0.43 }, { "binwidth": 0.010000000000000009, "count_rows": 7, "freqdensity": 699.9999999999994, "normalised": 0.0018691588785046717, "splink_score_bin_high": 0.45, "splink_score_bin_low": 0.44 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.46, "splink_score_bin_low": 0.45 }, { "binwidth": 0.009999999999999953, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.47, "splink_score_bin_low": 0.46 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.48, "splink_score_bin_low": 0.47 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.49, "splink_score_bin_low": 0.48 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.5, "splink_score_bin_low": 0.49 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.51, "splink_score_bin_low": 0.5 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.52, "splink_score_bin_low": 0.51 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.53, "splink_score_bin_low": 0.52 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.54, "splink_score_bin_low": 0.53 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.55, "splink_score_bin_low": 0.54 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.56, "splink_score_bin_low": 0.55 }, { "binwidth": 0.009999999999999898, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.57, "splink_score_bin_low": 0.56 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.58, "splink_score_bin_low": 0.57 }, { "binwidth": 0.010000000000000009, "count_rows": 12, "freqdensity": 1199.9999999999989, "normalised": 0.0032042723631508655, "splink_score_bin_high": 0.59, "splink_score_bin_low": 0.58 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.6, "splink_score_bin_low": 0.59 }, { "binwidth": 0.010000000000000009, "count_rows": 2, "freqdensity": 199.99999999999983, "normalised": 0.0005340453938584777, "splink_score_bin_high": 0.61, "splink_score_bin_low": 0.6 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.62, "splink_score_bin_low": 0.61 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.63, "splink_score_bin_low": 0.62 }, { "binwidth": 0.010000000000000009, "count_rows": 7, "freqdensity": 699.9999999999994, "normalised": 0.0018691588785046717, "splink_score_bin_high": 0.64, "splink_score_bin_low": 0.63 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.65, "splink_score_bin_low": 0.64 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.66, "splink_score_bin_low": 0.65 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.67, "splink_score_bin_low": 0.66 }, { "binwidth": 0.010000000000000009, "count_rows": 6, "freqdensity": 599.9999999999994, "normalised": 0.0016021361815754327, "splink_score_bin_high": 0.68, "splink_score_bin_low": 0.67 }, { "binwidth": 0.009999999999999898, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.69, "splink_score_bin_low": 0.68 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.7, "splink_score_bin_low": 0.69 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.71, "splink_score_bin_low": 0.7 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.72, "splink_score_bin_low": 0.71 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.73, "splink_score_bin_low": 0.72 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.74, "splink_score_bin_low": 0.73 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.75, "splink_score_bin_low": 0.74 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.76, "splink_score_bin_low": 0.75 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.77, "splink_score_bin_low": 0.76 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.78, "splink_score_bin_low": 0.77 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.79, "splink_score_bin_low": 0.78 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.8, "splink_score_bin_low": 0.79 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.81, "splink_score_bin_low": 0.8 }, { "binwidth": 0.009999999999999898, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.82, "splink_score_bin_low": 0.81 }, { "binwidth": 0.010000000000000009, "count_rows": 5, "freqdensity": 499.99999999999955, "normalised": 0.001335113484646194, "splink_score_bin_high": 0.83, "splink_score_bin_low": 0.82 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.84, "splink_score_bin_low": 0.83 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.85, "splink_score_bin_low": 0.84 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.86, "splink_score_bin_low": 0.85 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.87, "splink_score_bin_low": 0.86 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.88, "splink_score_bin_low": 0.87 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.89, "splink_score_bin_low": 0.88 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.9, "splink_score_bin_low": 0.89 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.91, "splink_score_bin_low": 0.9 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.92, "splink_score_bin_low": 0.91 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.93, "splink_score_bin_low": 0.92 }, { "binwidth": 0.009999999999999898, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.94, "splink_score_bin_low": 0.93 }, { "binwidth": 0.010000000000000009, "count_rows": 13, "freqdensity": 1299.9999999999989, "normalised": 0.003471295060080104, "splink_score_bin_high": 0.95, "splink_score_bin_low": 0.94 }, { "binwidth": 0.010000000000000009, "count_rows": 3, "freqdensity": 299.9999999999997, "normalised": 0.0008010680907877164, "splink_score_bin_high": 0.96, "splink_score_bin_low": 0.95 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.97, "splink_score_bin_low": 0.96 }, { "binwidth": 0.010000000000000009, "count_rows": 9, "freqdensity": 899.9999999999992, "normalised": 0.0024032042723631493, "splink_score_bin_high": 0.98, "splink_score_bin_low": 0.97 }, { "binwidth": 0.010000000000000009, "count_rows": 0, "freqdensity": 0, "normalised": 0, "splink_score_bin_high": 0.99, "splink_score_bin_low": 0.98 }, { "binwidth": 0.010000000000000009, "count_rows": 743, "freqdensity": 74299.99999999993, "normalised": 0.1983978638184244, "splink_score_bin_high": 1, "splink_score_bin_low": 0.99 } ] }, "encoding": { "tooltip": [ { "field": "count_rows", "title": "count", "type": "quantitative" } ], "x": { "axis": { "title": "splink score" }, "bin": "binned", "field": "splink_score_bin_low", "type": "quantitative" }, "x2": { "field": "splink_score_bin_high" }, "y": { "axis": { "title": "probability density" }, "field": "normalised", "type": "quantitative" } }, "height": 200, "mark": "bar", "title": "Histogram of splink scores", "width": 700 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAusAAAEJCAYAAAAtnWkpAAAgAElEQVR4Xu3dC7hV0/7/8W933ZFKV0mUUhGd5BQhXRQd5+giIcLPcelUhFxKosJxql8JR50iO8oJXdzCUdqlCNUhQlKKRLVD97T/z2f8/3P/V7s199prrb3WnHt7j+fpqfZaa84xX2OstT9zrDHHLJadnZ1tFAQQQAABBBBAAAEEEAidQDHCeujahAohgAACCCCAAAIIIOAECOt0BAQQQAABBBBAAAEEQipAWA9pw1AtBBBAAAEEEEAAAQQI6/QBBBBAAAEEEEAAAQRCKkBYD2nDUC0EEPAX+Oyzz+znn3+24447zo499ticJ37++ee2Y8cOq1OnjtWsWdMyMzNtz5491rJlS6tcuTKkuQQOHDhgH330kf3444/2xz/+0Y488sgCNdq6dat99dVXbrsNGza0Tz/91L7//ns74YQT7Pjjj4+5L7XdF198YaVLl7ZGjRrFfD5PQAABBIqiAGG9KLYqx4RAERc4++yzbdGiRTZ27Fj729/+lnO0HTp0sDfffNMeeughu/32211o37hxo7333nt25plnxlS5++67bfv27XbPPfe4sF/US48ePeyFF15wh/n++++7k5qCLM8//7xddtlldtFFF9mcOXPs2muvtcmTJ9vDDz9sgwcPjrmrTz75xJo2bWq1a9e2b7/9NubzeQICCCBQFAUI60WxVTkmBIq4QH7D+qhRoywrK8tuvPFGNwofq1SvXt22bNli//3vf+2UU06J9fRC/fiuXbusfPny7hgmTJjgQvXRRx9doMeUO6zrxGD58uXWuXNna9euXcx9EdZjEvEEBBD4HQgQ1n8HjcwhIlDUBPIb1q+44gr74YcfbNy4cXbyySfb5s2bbdq0aaYQ+euvv1r79u3tyiuvtFatWuWM+sqqY8eOdtddd5n289prr5lC/4oVK6xq1aqm0Xv935sysnv3btOI/CuvvGJHHHGEjR492saMGeOmbsybN8/mzp1r48ePtz/96U9u/zNmzLCPP/7YTeMZMmSILVmyxDWPwqvq26ZNG/v666/t5ptvdicYOmn417/+ZWXLlrU777zT7ePBBx+0DRs2uLpr3yVLljysiQ8ePOjqMX36dDfVpVmzZnb55Zfbrbfe6qai6ARGdVPRCPvQoUOtSZMmh2wnLy89sWvX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5C4uHTNmjA0aNMg+/fRTa9y4ccqRGFlPOTE7QAABBBBAAAEEEAhQIOGwrjp36tTJfv31V1uwYIEVL17cHn/8cRsyZIht3brVSpUqFfWwDh48aLt377a85rVv377dXaAaazlIwnqAPYddI4AAAggggAACCKRcIKmw3qZNG1u8eLHVrl3bVXTjxo1WsWJFa9Sokfu/7m7avn37nIOYMmWKjR071mrVquXWZ8/IyLCqVavmPL5hwwY3710/06h9ixYt7J577vFFIKynvH+wAwQQQAABBBBAAIEABZIK6x06dLAffvjBt/qPPPKI6TkqCucabc/KyrLKlStb//79rUaNGm4k3isPPPCA7d+/34YPH2579uyxsmXL2qZNm6xmzZpR90FYD7DnsGsEEEAAAQQQQACBlAskFdbjqd26devcKPvatWvdy8aPH28rVqywyZMn52xG02M0910Xp86ePdvNf//qq69ybraUe3+E9XhagOcigAACCCCAAAIIFDaBtIX1VatWWffu3W3NmjXOaNq0abZw4UKbNGnSIWb79u2zUaNGme6C+vLLL9t5553nHs/MzHRTbnKXzKx6Uc3HXdeysLUF9UUAAQQQQAABBBD4nQrMyPwm6pH3bFPP6tevf9hjxbKj3e0oCTyNmpcrV850gam3cow2N3DgwJytaupLjx49rHTp0m7kXdNk8iqMrCfRILwUAQQQQAABBBBAIDQCFw2Z4TsAnZawrr03b97cJk6caE2bNrWOHTu6uema075s2TL3s2effdbmzZtnc+bMyRccYT1fTDwJAQQQQAABBBBAIOQCoQjrCuF9+vRxVF26dLHp06e7UXYt06jA/vDDD9vUqVMPofziiy/sxBNPjMpLWA95r6N6CCCAAAIIIIAAAvkSCEVYV0137dplO3bsiDnFJT9HRVjPjxLPQQABBBBAAAEEEAi7QGjCekFCEdYLUpNtIYAAAggggAACCAQlQFgPSp79IoAAAggggAACCCAQQ4CwThdBAAEEEEAAAQQQQCCkAoT1kDYM1UIAAQQQQAABBBBAgLBOH0AAAQQQQAABBBBAIKQChPWQNgzVQgABBBBAAAEEEECAsE4fQAABBBBAAAEEEEAgpAKE9ZA2DNVCAAEEEEAAAQQQQICwTh9AAAEEEEAAAQQQQCCkAoT1kDYM1UIAAQQQQAABBBBAgLBOH0AA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umg+fRD9Rdd96MRF11FpMFafL0H1l2h1SaS/+IV1vwzr9YncmVKzNnKXQjENRpXWxZsaMdBFYB07dnRzknWjpE8//dR9TauvlvRBoZFtfb2vK691QVS012m+WLTitw2dEWu/mus7YcIENyL5wgsvmObe6qxQ9bjllltcSH/44Yftm2++cXVNpsSqizenKXfn8HtdEHUJwuXZZ591HwC5A2cQLn51CcJFJ5oKGcOGDTONJGjax3fffefeL9HeN6nsL3510bdh6X4fKWDopEpFo4E33nijXXzxxXbvvfem3cWvLvq8SreLpr3ogjh9julraY0OagAiiPeRX12CeB/p24+nnnrK/S7YuHGjG0UO6n3kV5cg3kf6faT6aDQy8rM3iP7iV5cg+oveP/qmX7+ndSGlpnlokEThPd2fu351adeuXdo/X3RdhVz07bemM2umhL7dDKK/+NUlkf6SO4/p20iduOoajmhZVL97omXKaL9/C01Y1weArhZW6dKli7vw6b///a8LyvoqQb9INNdURTgK0UcffbT74Mj9utzLJ3kwftvQ2bACu76auPDCC13Y0ZnSm2++6d58+uDWWas+JE488UQX2Bs3bpxM3vE9Hq8uJ598stu+OofqrRMHFb9jSKYysVz86hKEi+x1IU1k0VdsOlON1j9S6eJXF31op7u/6BoLfRWri3n0rcPIkSNzAli6XfzqEkR/8fqu+oEubrrrrrtcPwnyfZS7LkG46DNUcyk1oq4/GhyRTxAufnUJwkVzSbXAgabB6PNeLvp2KggXv7oE4aL3kUb6NTVUQTTW79RUfu761SUIF2WQiy66yDRfXEXT7LQQRRD9xa8uQbjovaMspTyjk17lK33rG4SLX10Sccmdx/Qtv6ZHq82jZVGF9WiZslCHdVVeS87p6wpvakPuA9IVtxrl0MUbkYE81usit+O3jcjn6OsanSnpAgmv6KtirY0cuZxkMh9Iem1+6hJtH4m+Lq/6JrpNXKKrBuWiXxr6hRr5NVuibZtsf4lWl6BceB8duv6z56FVr/RZF+9nZLyfffnpg9HqElR/iXbvhPwcQypcotUlKBfeR9HfR8olygaRmSGo/hKtLkH1F2UpXagdmdeCcolWl4J28cui0TJl7vdSoRlZj/dDjucjgAACCCCAAAIIIFDYBQjrhb0FqT8CCCCAAAIIIIBAkRUgrBfZpuXAEEAAAQQQQAABBAq7AGG9sLcg9UcAAQQQQAABBBAosgKE9SLbtBwYAggggAACCCCAQGEXIKwX9hak/ggggICPgFYf0NKLWq6TggACCCBQOAUI64Wz3ag1AgggcJiA7jlRuXJlt+b1Pffc4+41oXXBx40b56v14osv2l/+8hfTnTi9NfehRQABBBAIjwBhPTxtQU0QQACBpAR0HwrdRGjgwIH24IMPmu4Wq7ts6q6sfkV3Y9bNO959911r27ZtUvvnxQgggAACBS9AWC94U7aIAAIIFIjABx98YI888oi9/vrrbtT77rvvdoFa4Vuj5vv377fly5fbtddeazfeeKO7kZoX1nV3zfPPP98Fcd1BT3fS0x2XdQdm3TVQd9G98847LTKs66Ytt912mzVr1szdHTnyZiXPP/+86Zbla9asMd2ifMyYMe6ugwr5umulbh+uu57qLrBNmjRx+1CdFixYYGXLlrVrrrnGnTzohEJ37evYsaNlZma6uqte2nZGRoY1bNjQxo4day1atCgQQzaCAAIIFHYBwnphb0HqjwACRVIgOzvbGjVq5I5NIXfkyJGm21N/+umndvzxx7swfOaZZ1qJEiXcFJYpU6bYJZdckhPW77333pxpMLrN+THHHOO25QVohfb169e7W30r0D/xxBM2ePBgd4doBXDd6dYrusNe3bp1rXv37i5oK+jfcMMNLmDr56rLgAEDbPLkydamTRt79dVX7fLLL7fp06e7IP/555/b7NmzbebMmfbHP/7RatWq5TZdv359mzRpkjs+1UffCDz11FP2448/ulu0ly9fvki2LQeFAAIIxCNAWI9Hi+cigAACaRTQKPMXX3zhRtM1St63b1877rjjrE6dOlapUiVbuXKlKdTrAtLOnTvbc889l2dY1wj7P//5T/e83r1725w5c9wJgMK6VzTarUAdWXSLci9gd+vWzTp06ODC+JdffmktW7a0f/3rXy7Aa5R/06ZNds4559hRRx3ltjtjxgzbvXu3lStXzvRaBXxtq0uXLvbyyy/bli1b3P914qHRf43EL1q0yF577TXr1KlTGrXZFQIIIBBOAcJ6ONuFWiGAAAK2YcMGe/LJJ+3f//63C+0VK1a0zZs3u6kiCusaZT948KAL6Aq7mtLiTYOJNrKuaS+jRo1y29MoeWRYr1atmgvOuthUj+cuCxcudCPnb7zxhnueTg7+53/+x/70pz+5/V566aWmEfjt27e7Ufljjz3W+vXr50bONT1H03ZOP/10N9VF4XzIkCHu2wJ9K6DReJ0gnHvuuTm77dmzp51yyin0AgQQQOB3L0BY/913AQAQQCCMAllZWW6KiUaxNf9cwVbTSjRdRD/T1BPNK1dAHj16tE2YMMH69OmTcFj/z3/+40bdNTdd01gUxr2i0W4FadVDo+UaFddUFY2i66RBc9zvu+8+t/KMdxKh6TIapddIuuqskwSdeHTt2tWFda1WM2LECNu2bZtVqVLFTjrpJDdCr/1rao6mRaAj6AAAAXxJREFUzWhKDgUBBBD4vQsQ1n/vPYDjRwCB0ApoyUWFdI1ka1Rd880VzDUNZt++fa7eekxhef78+e5CztxLN2ouuYKx5qx7o9mzZs1yI+GRI+uaeqLt1qtXz80lV8AuU6aM24em2vTq1cvNOVepXbu2/f3vfzeNfmvVGW1fRXXU9BWNkmtKjEK96qeiKS4agd+5c+chYV2PzZ0714X9jz76yD330UcfdctPUhBAAAEEzAjr9AIEEEAgxAIKypoOo4Csi0lVFKq14sorr7xiP/zwgxuBjly5JVWH89NPP7mwrXnzkUUrvGikXUFfN2Hyym+//eYuYtWFopEXrPrVT8epkwrNb6cggAACCPxfAcI6PQEBBBAoZAJeWNeSjhQEEEAAgaItQFgv2u3L0SGAQBEU0JQVjT7rgk0KAggggEDRFiCsF+325egQQAABBBBAAAEECrEAYb0QNx5VRwABBBBAAAEEECjaAoT1ot2+HB0CCCCAAAIIIIBAIRb4P+Sw+muzHrWKAAAAAElFTkSuQmCC", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from splink.diagnostics import splink_score_histogram\n", "from pyspark.sql.functions import expr \n", "splink_score_histogram(df_e.filter(expr('match_probability > 0.001')), spark)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }