{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Get full page screenshots from archived web pages\n", "\n", "[View in GitHub](https://github.com/GLAM-Workbench/web-archives/blob/master/save_screenshot.ipynb) · [View in GLAM Workbench](https://glam-workbench.net/web-archives/#create-and-compare-full-page-screenshots-from-archived-web-pages)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# This notebook is designed to run in Voila as an app (with the code hidden).\n", "# To launch this notebook in Voila, just select 'View > Open with Voila in New Browser Tab'\n", "# Your browser might ask for permission to open the new tab as a popup." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%capture\n", "import base64\n", "import io\n", "import math\n", "import os\n", "import re\n", "import time\n", "from pathlib import Path\n", "from urllib.parse import urlparse\n", "\n", "import arrow\n", "import geckodriver_autoinstaller\n", "import ipywidgets as widgets\n", "import PIL\n", "import requests\n", "import selenium\n", "from IPython.display import HTML, display\n", "from PIL import Image\n", "from selenium import webdriver\n", "from selenium.webdriver.common.by import By\n", "from slugify import slugify\n", "\n", "geckodriver_autoinstaller.install()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "TIMEGATES = {\n", " \"nla\": \"https://web.archive.org.au/awa/\",\n", " \"nlnz\": \"https://ndhadeliver.natlib.govt.nz/webarchive/\",\n", " \"bl\": \"https://www.webarchive.org.uk/wayback/archive/\",\n", " \"ia\": \"https://web.archive.org/web/\",\n", " \"ukgwa\": \"https://webarchive.nationalarchives.gov.uk/ukgwa/\",\n", "}\n", "\n", "wayback = [\"web.archive.org\"]\n", "pywb = {\n", " \"web.archive.org.au\": \"replayFrame\",\n", " \"webarchive.nla.gov.au\": \"replayFrame\",\n", " \"webarchive.org.uk\": \"replay_iframe\",\n", " \"ndhadeliver.natlib.govt.nz\": \"replayFrame\",\n", " \"webarchive.nationalarchives.gov.uk\": \"replay_iframe\",\n", "}\n", "\n", "html_output = []\n", "\n", "\n", "def format_date_for_headers(iso_date, tz):\n", " \"\"\"\n", " Convert an ISO date (YYYY-MM-DD) to a datetime at noon in the specified timezone.\n", " Convert the datetime to UTC and format as required by Accet-Datetime headers:\n", " eg Fri, 23 Mar 2007 01:00:00 GMT\n", " \"\"\"\n", " local = arrow.get(f\"{iso_date} 12:00:00 {tz}\", \"YYYY-MM-DD HH:mm:ss ZZZ\")\n", " gmt = local.to(\"utc\")\n", " return f'{gmt.format(\"ddd, DD MMM YYYY HH:mm:ss\")} GMT'\n", "\n", "\n", "def format_date_from_timestamp(url):\n", " timestamp = re.search(r\"/(\\d{14}|\\d{12})(?:if_|mp_)*/\", url).group(1)\n", " return arrow.get(timestamp, \"YYYYMMDDHHmmss\").format(\"D MMMM YYYY\")\n", "\n", "\n", "def parse_links_from_headers(response):\n", " \"\"\"\n", " Extract original, timegate, timemap, and memento links from 'Link' header.\n", " \"\"\"\n", " links = response.links\n", " return {k: v[\"url\"] for k, v in links.items()}\n", "\n", "\n", "def query_timegate(timegate, url, date=None, tz=\"Australia/Canberra\"):\n", " headers = {}\n", " if date:\n", " formatted_date = format_date_for_headers(date, tz)\n", " headers[\"Accept-Datetime\"] = formatted_date\n", " # BL, NLNZ & UKGWA don't seem to default to latest date if no date supplied\n", " elif not date and timegate in [\"bl\", \"nlnz\", \"ukgwa\"]:\n", " formatted_date = format_date_for_headers(\n", " arrow.utcnow().format(\"YYYY-MM-DD\"), tz\n", " )\n", " headers[\"Accept-Datetime\"] = formatted_date\n", " # Note that you don't get a timegate response if you leave off the trailing slash, but extras don't hurt!\n", " tg_url = (\n", " f\"{TIMEGATES[timegate]}{url}/\"\n", " if not url.endswith(\"/\")\n", " else f\"{TIMEGATES[timegate]}{url}\"\n", " )\n", " # print(tg_url)\n", " # IA doesn't work with head, others don't work with get...\n", " if timegate == \"ia\":\n", " response = requests.get(tg_url, headers=headers)\n", " else:\n", " response = requests.head(tg_url, headers=headers)\n", " return parse_links_from_headers(response)\n", "\n", "\n", "def get_memento(timegate, url, date):\n", " links = query_timegate(timegate, url, date)\n", " # NLNZ doesn't always seem to return a Memento, so we'll build in some fuzziness\n", " if links:\n", " if \"memento\" in links:\n", " memento = links[\"memento\"]\n", " elif \"prev memento\" in links:\n", " memento = links[\"prev memento\"]\n", " elif \"next memento\" in links:\n", " memento = links[\"next memento\"]\n", " elif \"last memento\" in links:\n", " memento = links[\"last memento\"]\n", " else:\n", " memento = None\n", " return memento\n", "\n", "\n", "def get_full_page_screenshot(url, save_width=200):\n", " \"\"\"\n", " Gets a full page screenshot of the supplied url.\n", " By default resizes the screenshot to a maximum width of 200px.\n", " Provide a 'save_width' value to change this.\n", "\n", " NOTE the webdriver sometimes fails for unknown reasons. Just try again.\n", " \"\"\"\n", " global html_output\n", " domain = urlparse(url)[1].replace(\"www.\", \"\")\n", " # NZ and IA inject content into the page, so we use if_ to get the original page (with rewritten urls)\n", " if domain in wayback and \"if_\" not in url:\n", " url = re.sub(r\"/(\\d{14}|\\d{12})/http\", r\"/\\1if_/http\", url)\n", " try:\n", " date_str, site = re.search(\n", " r\"/(\\d{14}|\\d{12})(?:if_|mp_)*/https*://?(.+/)\", url\n", " ).groups()\n", " except AttributeError:\n", " # There's something wrong with the link...\n", " # print(url)\n", " show_error(f\"{url} isn't a Memento – did you forget to select an archive?\")\n", " else:\n", " output_dir = Path(\"screenshots\")\n", " output_dir.mkdir(parents=True, exist_ok=True)\n", " ss_file = Path(output_dir, f\"{slugify(site)}-{date_str}-{save_width}.png\")\n", " options = webdriver.FirefoxOptions()\n", " options.headless = True\n", " driver = webdriver.Firefox(options=options)\n", " driver.implicitly_wait(15)\n", " driver.get(url)\n", " # Give some time for everything to load\n", " time.sleep(30)\n", " driver.maximize_window()\n", " # UK and AU use pywb in framed replay mode, so we need to switch to the framed content\n", " if domain in pywb:\n", " try:\n", " driver.switch_to.frame(pywb[domain])\n", " except selenium.common.exceptions.NoSuchFrameException:\n", " # If we pass here we'll probably still get a ss, just not full page -- better than failing?\n", " pass\n", " ss = None\n", " for tag in [\"body\", \"html\", \"frameset\"]:\n", " try:\n", " elem = driver.find_element(By.TAG_NAME, tag)\n", " ss = elem.screenshot_as_base64\n", " break\n", " except (\n", " selenium.common.exceptions.NoSuchElementException,\n", " selenium.common.exceptions.WebDriverException,\n", " ):\n", " pass\n", " driver.quit()\n", " if not ss:\n", " show_error(f\"Couldn't get a screenshot of {url} – sorry...\")\n", " else:\n", " img = Image.open(io.BytesIO(base64.b64decode(ss)))\n", " ratio = save_width / img.width\n", " (width, height) = (save_width, math.ceil(img.height * ratio))\n", " resized_img = img.resize((width, height), PIL.Image.Resampling.LANCZOS)\n", " resized_img.save(ss_file)\n", " return ss_file\n", "\n", "\n", "def display_screenshot(ss_file, url):\n", " date = format_date_from_timestamp(url)\n", " try:\n", " display_url = re.search(r\"/(\\d{14}|\\d{12})(?:mp_|if_|id_)*/(.*)$\", url).group(1)\n", " except AttributeError:\n", " display_url = url\n", " status.clear_output()\n", " html_output.append(\n", " f'

{date}
{display_url}


[Download]

'\n", " )\n", " with out:\n", " display((HTML(\"\".join(html_output))))\n", "\n", "\n", "def show_error(message=None):\n", " status.clear_output()\n", " with status:\n", " print(f\"Something went wrong – {message}\")\n", "\n", "\n", "def start(e):\n", " status.clear_output()\n", " out.clear_output(wait=True)\n", " with status:\n", " print(\"Generating screenshot...\")\n", " if repository.value:\n", " memento = get_memento(repository.value, target_url.value, target_date.value)\n", " else:\n", " memento = target_url.value\n", " if memento:\n", " try:\n", " ss_file = get_full_page_screenshot(memento, save_width=width.value)\n", " if ss_file:\n", " display_screenshot(ss_file, memento)\n", " except selenium.common.exceptions.WebDriverException:\n", " show_error(f\"couldn't get a screenshot of {memento} – sorry...\")\n", " else:\n", " show_error(\"couldn't find a Memento – sorry...\")\n", "\n", "\n", "def clear(e):\n", " global html_output\n", " html_output = []\n", " status.clear_output()\n", " out.clear_output()\n", "\n", "\n", "def clear_last(e):\n", " global html_output\n", " html_output.pop()\n", " out.clear_output(wait=True)\n", " with out:\n", " display((HTML(\"\".join(html_output))))\n", "\n", "\n", "repository = widgets.Dropdown(\n", " options=[\n", " (\"---\", \"\"),\n", " (\"UK Web Archive\", \"bl\"),\n", " (\"UK Government Web Archive\", \"ukgwa\"),\n", " (\"National Library of Australia\", \"nla\"),\n", " (\"National Library of New Zealand\", \"nlnz\"),\n", " (\"Internet Archive\", \"ia\"),\n", " ],\n", " description=\"Archive:\",\n", " disabled=False,\n", ")\n", "\n", "target_url = widgets.Text(description=\"Target URL:\")\n", "\n", "target_date = widgets.DatePicker(description=\"Target date: \", disabled=False)\n", "\n", "width = widgets.IntSlider(\n", " value=7,\n", " min=200,\n", " max=1000,\n", " step=100,\n", " description=\"Width:\",\n", " disabled=False,\n", " continuous_update=False,\n", " orientation=\"horizontal\",\n", " readout=True,\n", " readout_format=\"d\",\n", ")\n", "\n", "out = widgets.Output()\n", "status = widgets.Output()\n", "ss_button = widgets.Button(description=\"Get screenshot\", button_style=\"primary\")\n", "ss_button.on_click(start)\n", "clear_button = widgets.Button(description=\"Clear all\")\n", "clear_button.on_click(clear)\n", "clear_last_button = widgets.Button(description=\"Clear last\")\n", "clear_last_button.on_click(clear_last)\n", "note = \"\"\"\n", " \n", " \"\"\"\n", "display(\n", " HTML(note),\n", " widgets.HBox(\n", " [widgets.VBox([repository, target_date]), widgets.VBox([target_url, width])],\n", " layout=widgets.Layout(padding=\"20px\"),\n", " ),\n", " widgets.HBox([ss_button, clear_button, clear_last_button]),\n", " status,\n", " out,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%capture\n", "%load_ext dotenv\n", "%dotenv" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Insert some values for automated testing\n", "\n", "if os.getenv(\"GW_STATUS\") == \"dev\":\n", " repository.value = \"nlnz\"\n", " target_url.value = \"http://digitalnz.org\"\n", " target_date.value = arrow.get(\"2015-01-01\").date()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# If values have been provided via url or above, then start automatically.\n", "# Note that Voila widgets don't load immediately, hence the polling to\n", "# make sure the start button exists.\n", "\n", "if target_url.value:\n", " script = \"\"\"\n", " \"\"\"\n", " display(HTML(script))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----\n", "Created by [Tim Sherratt](https://timsherratt.org) for the [GLAM Workbench](https://glam-workbench.github.io). Support me by becoming a [GitHub sponsor](https://github.com/sponsors/wragge)!\n", "\n", "Work on this notebook was supported by the [IIPC Discretionary Funding Programme 2019-2020](http://netpreserve.org/projects/).\n", "\n", "The Web Archives section of the GLAM Workbench is sponsored by the [British Library](https://www.bl.uk/)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "01192d472ee144bb8211701f25011537": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "06d06bcaf0114826a958c1c4daae20f7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "07c82a0dcab24e99af159f066dcda8b7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "08ff3117362e42d8b32f31b9dfcb17c7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "---", "UK Web Archive", "National Library of Australia", "National Library of New Zealand", "Internet Archive" ], "description": "Archive:", "index": 0, "layout": "IPY_MODEL_1c8ac438e0174b0d85f65d8d93bfb870", "style": "IPY_MODEL_8ef007ac7f394574ad9cefcfaf485dbc" } }, "0affec63c32a4d15b1fbeeaa6c3ab841": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "0c577b841b9a4729a33716d38a18cf3c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "11c90e8ac1df4f5790cf05c817b38d86": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_16b11f21caf54dbe92c2b5a3c6efd16c", "outputs": [ { "data": { "text/html": "

5 March 2020
http://pandora.nla.gov.au/pan/161756/20200306-0200/www.nla.gov.au/index.html


[Download]

", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "1315c905ba6f404a8ef78d07744db0a8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "13fc5068866e4f36880f76decdb2c9b9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "150a42c38b694c9abf1a14e591043133": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "16b11f21caf54dbe92c2b5a3c6efd16c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "17271a63f2594f0984194260ac069742": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "183477228900433f9b64e661c42506f6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "---", "UK Web Archive", "National Library of Australia", "National Library of New Zealand", "Internet Archive" ], "description": "Archive:", "index": 2, "layout": "IPY_MODEL_150a42c38b694c9abf1a14e591043133", "style": "IPY_MODEL_8ddba4353cb841f99e6a003f475b1193" } }, "1a7cadb8982d4732a0edcf91300a154b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "1c8ac438e0174b0d85f65d8d93bfb870": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "1cb0dd7cc24d4147bab83a2615986454": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "1fff5b06641b4380990ff334b90aa3e4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "21e94e2108b746feb2df80ea83bc76a1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "2311bd8cd6924d959b5d35d41f5ac09a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "continuous_update": false, "description": "Width:", "layout": "IPY_MODEL_34f230b772b8453683cc4f67206e425b", "max": 1000, "min": 200, "step": 100, "style": "IPY_MODEL_9b8d42ec02ee40f8bae2489413c20f88", "value": 200 } }, "25f1c0c8aa6847cca021b58638ad78ef": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "padding": "20px" } }, "26a95be7bbb94d3bb6e5b5208f76e166": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "26d1ebc851714729805297c0015934f5": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_95adb174dd3f461a9f18ecefc612ced6", "outputs": [ { "data": { "text/html": "

5 March 2020
http://pandora.nla.gov.au/pan/161756/20200306-0200/www.nla.gov.au/index.html


[Download]

", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "272babd19c1942bf9b9363a5de0018f3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "2a85c1b3df644e3fa3f5edca874d1ddd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "2c9272055b124385bff53e36c8b0cc1e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "2ffe1ad4d4aa4d40b20097c087b16667": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_c4c01dd07ea24887819e1de3b0847fb7", "IPY_MODEL_c7dfc4c720d5480ab9ba415e5e68fbf7" ], "layout": "IPY_MODEL_7805feaf75ac4ed8b30d9195bf9b2916" } }, "339e23d153d94daab55eb7fb1ef5e8a8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "padding": "20px" } }, "34f230b772b8453683cc4f67206e425b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "358409c8f26a4f4f8c305c9ec5eea4ab": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "3618ed1e623d448499b210a38ec322a6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "38f046935c1547eaa2a48e6df70e9299": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "39f24a1609d6483abb4852ae139af766": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_7b12a6ce3519413385657599b93e50a1", "IPY_MODEL_fdbaf7c831d647079afc9b1ed471523c", "IPY_MODEL_63d12044d5a04af5be20756115f834c6" ], "layout": "IPY_MODEL_1a7cadb8982d4732a0edcf91300a154b" } }, "3a2110911126431cbd244df5b0b67cf6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "3eb125c6c2f64187b156dd1b229dfc46": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_887f22b0ee87452fb3a3bb0622a66b1a", "IPY_MODEL_2ffe1ad4d4aa4d40b20097c087b16667" ], "layout": "IPY_MODEL_339e23d153d94daab55eb7fb1ef5e8a8" } }, "3f4766c2ae7643ee8aabbc127d213dd5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "4287dd0788a347c9afae658a2b276c3b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "43fb93d89b0b40de89c8e538349b960a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_bd5b6543732c4d00aef2636e8180eeea", "IPY_MODEL_8d2e4fad1b424d79b21baf9b5c8868e2" ], "layout": "IPY_MODEL_8e14ae9c7b97470bb463f12dd53c21eb" } }, "44ed9d91aa6643b982f5e75ae25d7330": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "470ea0a221a44850a34955babe9804c3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_7dba7b3ca4a9402b89c081f00ff6d50b", "IPY_MODEL_43fb93d89b0b40de89c8e538349b960a" ], "layout": "IPY_MODEL_774d652cefa045a9ac71e7fa5b415b2e" } }, "47fa5717661b456eb3ee5638910aa1ba": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_b8160cede0354b9b99adb42de2679686" } }, "4d4fa263f89340ba8dac35f224dba473": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "4fa5c29254b14604a45b1392b0cf4f3d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "503a154c39474269b1486ef1ffe6a9c9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_d624ddc316a844aa8b89f5970604b82f", "IPY_MODEL_a6ad26ba8e9d4ed3806189a45249eb94" ], "layout": "IPY_MODEL_9fbce28717b949cf8be0d55f843e9756" } }, "51951fdb68bb4f7a95eec8be52b6f969": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DatePickerModel", "state": { "description": "Target date: ", "disabled": false, "layout": "IPY_MODEL_26a95be7bbb94d3bb6e5b5208f76e166", "style": "IPY_MODEL_8006cfbab14c4399b82c532ef6aa7626" } }, "51975d62d3c649ab83d7b97ca6e85d39": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "5327aa2dbaa4406a987cf17835f5d94a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "5575ad63e52b41808802175cb2dd18fa": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "56f06c1e51aa45bda060e530083d289e": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_8cf68bcd213747cc964de20740e45dcb" } }, "591a18cfa7194ecca804e53ac6da27bf": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_183477228900433f9b64e661c42506f6", "IPY_MODEL_dc661c20f39e4156bc008343a2f682d5" ], "layout": "IPY_MODEL_65a22d7916d5480b904f36fb611a3606" } }, "5c0461cca92c4ad7b310167a7ea2d66f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "5f132965f170427583d04fcb215b2c2e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "60017244cf6349d3a2f3f5e556859ec7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Clear all", "layout": "IPY_MODEL_c063e4510f004caaa7ec54587d96bdca", "style": "IPY_MODEL_e5c2b0d302d14babb899da2544c5cc33" } }, "63d12044d5a04af5be20756115f834c6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Clear last", "layout": "IPY_MODEL_781de5774051477698759de2eef7e47b", "style": "IPY_MODEL_7ef00b249ac841c8805823375d71ff78" } }, "65a22d7916d5480b904f36fb611a3606": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "6d1bd40385194b1abbb8834604b66b2d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "739eff4cb1e5401da78ee6820eeb63b3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "774d652cefa045a9ac71e7fa5b415b2e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "padding": "20px" } }, "778417305185423c95a5cdd2742a29ef": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "7805feaf75ac4ed8b30d9195bf9b2916": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "781de5774051477698759de2eef7e47b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "7b12a6ce3519413385657599b93e50a1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "button_style": "primary", "description": "Get screenshot", "layout": "IPY_MODEL_778417305185423c95a5cdd2742a29ef", "style": "IPY_MODEL_7f381106b999470f8981511478cee4fe" } }, "7dba7b3ca4a9402b89c081f00ff6d50b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_08ff3117362e42d8b32f31b9dfcb17c7", "IPY_MODEL_ab97e39416c14798ac8dc4e1bf2852b3" ], "layout": "IPY_MODEL_d6c942493e8b40fe8fc990239f422639" } }, "7dc6f3c0451e4dae9bb1794b0f42d063": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "TextModel", "state": { "description": "Target URL:", "layout": "IPY_MODEL_6d1bd40385194b1abbb8834604b66b2d", "style": "IPY_MODEL_2c9272055b124385bff53e36c8b0cc1e", "value": "http://nla.gov.au" } }, "7ef00b249ac841c8805823375d71ff78": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "7f381106b999470f8981511478cee4fe": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "8006cfbab14c4399b82c532ef6aa7626": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "81cafbc94699435182f8dfc08543cec9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "button_style": "primary", "description": "Get screenshot", "layout": "IPY_MODEL_5327aa2dbaa4406a987cf17835f5d94a", "style": "IPY_MODEL_f946b878d67f43e2a98bdb2ad7dae8f5" } }, "887f22b0ee87452fb3a3bb0622a66b1a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_8cf689d8db9943b2b106b6bb94c1f90c", "IPY_MODEL_c9259377170e4848b71dde88f73ff7da" ], "layout": "IPY_MODEL_c1160f882c644d46ac57a7f1e35abbcd" } }, "893f5bc3b6214676a70809db405e3653": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_591a18cfa7194ecca804e53ac6da27bf", "IPY_MODEL_d2bde66216914af7bb1beb91bf85c503" ], "layout": "IPY_MODEL_25f1c0c8aa6847cca021b58638ad78ef" } }, "8cf689d8db9943b2b106b6bb94c1f90c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "---", "UK Web Archive", "National Library of Australia", "National Library of New Zealand", "Internet Archive" ], "description": "Archive:", "index": 0, "layout": "IPY_MODEL_4287dd0788a347c9afae658a2b276c3b", "style": "IPY_MODEL_3618ed1e623d448499b210a38ec322a6" } }, "8cf68bcd213747cc964de20740e45dcb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "8d2e4fad1b424d79b21baf9b5c8868e2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "continuous_update": false, "description": "Width:", "layout": "IPY_MODEL_739eff4cb1e5401da78ee6820eeb63b3", "max": 1000, "min": 200, "step": 100, "style": "IPY_MODEL_3f4766c2ae7643ee8aabbc127d213dd5", "value": 200 } }, "8ddba4353cb841f99e6a003f475b1193": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "8e14ae9c7b97470bb463f12dd53c21eb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "8e85f36f35bb42a58609160848ad59d3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "8ef007ac7f394574ad9cefcfaf485dbc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "8fa37a104d6b43fea948ad4c814f71ed": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Clear last", "layout": "IPY_MODEL_17271a63f2594f0984194260ac069742", "style": "IPY_MODEL_21e94e2108b746feb2df80ea83bc76a1" } }, "90b3923c7d624746bdf77aca34f2bf7a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "95253e8a76b14171b6fbc428d86c4509": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_c1f3becc842b43ccb77b3847ed587a22" } }, "95adb174dd3f461a9f18ecefc612ced6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "9818cb636b3a4f31961be7affa3e970a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "99110b2d147c443a965829f5437f5a09": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_bfd80ffb27934f4d86d1c12ad18e52eb", "IPY_MODEL_aeda2278a3a945ff8dae3de66159dffd", "IPY_MODEL_d54ee816b1fb4f458b7715c6194f87fb" ], "layout": "IPY_MODEL_a93b05d7748c4a98be1172bfa7654b55" } }, "9b8d42ec02ee40f8bae2489413c20f88": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "9fbce28717b949cf8be0d55f843e9756": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "padding": "20px" } }, "a6ad26ba8e9d4ed3806189a45249eb94": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_7dc6f3c0451e4dae9bb1794b0f42d063", "IPY_MODEL_2311bd8cd6924d959b5d35d41f5ac09a" ], "layout": "IPY_MODEL_d9a0e45f2f9b47d98be92e44cb595c74" } }, "a93b05d7748c4a98be1172bfa7654b55": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "ab97e39416c14798ac8dc4e1bf2852b3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DatePickerModel", "state": { "description": "Target date: ", "disabled": false, "layout": "IPY_MODEL_5c0461cca92c4ad7b310167a7ea2d66f", "style": "IPY_MODEL_90b3923c7d624746bdf77aca34f2bf7a" } }, "aeda2278a3a945ff8dae3de66159dffd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Clear all", "layout": "IPY_MODEL_5f132965f170427583d04fcb215b2c2e", "style": "IPY_MODEL_0c577b841b9a4729a33716d38a18cf3c" } }, "b68eef6164e04049b0d75150b950aa1a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "b6e1561b135e4b80a4bd3d5a8a94b4ba": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Clear all", "layout": "IPY_MODEL_51975d62d3c649ab83d7b97ca6e85d39", "style": "IPY_MODEL_2a85c1b3df644e3fa3f5edca874d1ddd" } }, "b8160cede0354b9b99adb42de2679686": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "ba6da3e483d148cf8fc0818f42f0ed5d": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_358409c8f26a4f4f8c305c9ec5eea4ab", "outputs": [ { "data": { "text/html": "

8 November 2019
https://www.awm.gov.au/articles/encyclopedia/anzac/spirit


[Download]

16 August 2017
https://www.awm.gov.au/articles/encyclopedia/anzac/spirit


[Download]

12 November 2017
https://www.awm.gov.au/articles/encyclopedia/anzac/spirit


[Download]

", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "bac0f6b7534e4381890ef3a9c04cfb48": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "bb6e4060561b484f9ea9f362922b3d88": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Clear last", "layout": "IPY_MODEL_38f046935c1547eaa2a48e6df70e9299", "style": "IPY_MODEL_13fc5068866e4f36880f76decdb2c9b9" } }, "bbb5039d993245439c29da6ee9455ba8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "bd5b6543732c4d00aef2636e8180eeea": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "TextModel", "state": { "description": "Target URL:", "layout": "IPY_MODEL_06d06bcaf0114826a958c1c4daae20f7", "style": "IPY_MODEL_3a2110911126431cbd244df5b0b67cf6", "value": "https://web.archive.org.au/awa/20171112232920/https://www.awm.gov.au/articles/encyclopedia/anzac/spirit" } }, "be0a76f36c114089b8b37c1837fb695d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "beb4ad96305742c7a8932d162cb461f4": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "bfd80ffb27934f4d86d1c12ad18e52eb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "button_style": "primary", "description": "Get screenshot", "layout": "IPY_MODEL_e0a2388196eb46b9b9c64bbac6f95bd3", "style": "IPY_MODEL_e4e9cd682554438690c1bf2db2300af4" } }, "c063e4510f004caaa7ec54587d96bdca": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c1160f882c644d46ac57a7f1e35abbcd": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c1f3becc842b43ccb77b3847ed587a22": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c2f0ce498bc14d9fb4bc5b236ae85125": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_ca27241d61714efa977d37c285436cdf", "IPY_MODEL_b6e1561b135e4b80a4bd3d5a8a94b4ba", "IPY_MODEL_bb6e4060561b484f9ea9f362922b3d88" ], "layout": "IPY_MODEL_07c82a0dcab24e99af159f066dcda8b7" } }, "c4c01dd07ea24887819e1de3b0847fb7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "TextModel", "state": { "description": "Target URL:", "layout": "IPY_MODEL_0affec63c32a4d15b1fbeeaa6c3ab841", "style": "IPY_MODEL_5575ad63e52b41808802175cb2dd18fa", "value": "https://ndhadeliver.natlib.govt.nz/webarchive/wayback/20151202074607/http://news.sheepdogandwolf.com/" } }, "c7dfc4c720d5480ab9ba415e5e68fbf7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "continuous_update": false, "description": "Width:", "layout": "IPY_MODEL_bac0f6b7534e4381890ef3a9c04cfb48", "max": 1000, "min": 200, "step": 100, "style": "IPY_MODEL_9818cb636b3a4f31961be7affa3e970a", "value": 200 } }, "c9259377170e4848b71dde88f73ff7da": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DatePickerModel", "state": { "description": "Target date: ", "disabled": false, "layout": "IPY_MODEL_01192d472ee144bb8211701f25011537", "style": "IPY_MODEL_d6cf526779e149d4adcdbac57fa31ea6" } }, "c9fdff03d0d648ceb4efbe778130978d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "ca27241d61714efa977d37c285436cdf": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "button_style": "primary", "description": "Get screenshot", "layout": "IPY_MODEL_be0a76f36c114089b8b37c1837fb695d", "style": "IPY_MODEL_272babd19c1942bf9b9363a5de0018f3" } }, "cc3466f3b3ab4683928202bda737e5fb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_81cafbc94699435182f8dfc08543cec9", "IPY_MODEL_60017244cf6349d3a2f3f5e556859ec7", "IPY_MODEL_8fa37a104d6b43fea948ad4c814f71ed" ], "layout": "IPY_MODEL_4d4fa263f89340ba8dac35f224dba473" } }, "cc879eca901f4256ac821647173accbe": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_beb4ad96305742c7a8932d162cb461f4", "outputs": [ { "data": { "text/html": "

3 December 2015
http://news.sheepdogandwolf.com/


[Download]

3 December 2015
http://news.sheepdogandwolf.com/


[Download]

3 December 2015
http://news.sheepdogandwolf.com/


[Download]

", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "cf208db499804f49a197624f745b130e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "TextModel", "state": { "description": "Target URL:", "layout": "IPY_MODEL_4fa5c29254b14604a45b1392b0cf4f3d", "style": "IPY_MODEL_1fff5b06641b4380990ff334b90aa3e4", "value": "https://nla.gov.au" } }, "cfd73c850ca84cad897d4290de91511e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "d2bde66216914af7bb1beb91bf85c503": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_cf208db499804f49a197624f745b130e", "IPY_MODEL_d8c91ada15334cd2a34862f4b52455f5" ], "layout": "IPY_MODEL_f0217b4bc0dd4d4da92ca678d6116bbc" } }, "d54ee816b1fb4f458b7715c6194f87fb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Clear last", "layout": "IPY_MODEL_b68eef6164e04049b0d75150b950aa1a", "style": "IPY_MODEL_1cb0dd7cc24d4147bab83a2615986454" } }, "d624ddc316a844aa8b89f5970604b82f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_e22f8fbfa8104b3eb4e882b02562ca15", "IPY_MODEL_51951fdb68bb4f7a95eec8be52b6f969" ], "layout": "IPY_MODEL_44ed9d91aa6643b982f5e75ae25d7330" } }, "d6c942493e8b40fe8fc990239f422639": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d6cf526779e149d4adcdbac57fa31ea6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "d8c91ada15334cd2a34862f4b52455f5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "continuous_update": false, "description": "Width:", "layout": "IPY_MODEL_1315c905ba6f404a8ef78d07744db0a8", "max": 1000, "min": 200, "step": 100, "style": "IPY_MODEL_cfd73c850ca84cad897d4290de91511e", "value": 200 } }, "d9a0e45f2f9b47d98be92e44cb595c74": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "dc661c20f39e4156bc008343a2f682d5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DatePickerModel", "state": { "description": "Target date: ", "disabled": false, "layout": "IPY_MODEL_8e85f36f35bb42a58609160848ad59d3", "style": "IPY_MODEL_c9fdff03d0d648ceb4efbe778130978d" } }, "e0a2388196eb46b9b9c64bbac6f95bd3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "e22f8fbfa8104b3eb4e882b02562ca15": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "---", "UK Web Archive", "National Library of Australia", "National Library of New Zealand", "Internet Archive" ], "description": "Archive:", "index": 2, "layout": "IPY_MODEL_bbb5039d993245439c29da6ee9455ba8", "style": "IPY_MODEL_ef6020128df34df08da6c92b2b254cda" } }, "e4e9cd682554438690c1bf2db2300af4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "e5c2b0d302d14babb899da2544c5cc33": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "ef6020128df34df08da6c92b2b254cda": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "f0217b4bc0dd4d4da92ca678d6116bbc": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f0a7a305e92b4a678c8ea76fa0ddce88": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f4813e87966841cb92cbb859d0fbcdb9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f946b878d67f43e2a98bdb2ad7dae8f5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "fa18796ee22646f1bda1c0829e9418da": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "fd3ef01cc5734d488f92eec272b89ecf": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_f0a7a305e92b4a678c8ea76fa0ddce88" } }, "fdbaf7c831d647079afc9b1ed471523c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Clear all", "layout": "IPY_MODEL_f4813e87966841cb92cbb859d0fbcdb9", "style": "IPY_MODEL_fa18796ee22646f1bda1c0829e9418da" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }