\n"
+ ],
+ "text/plain": [
+ " prompt \\\n",
+ "0 Why can camels survive for long without water? \n",
+ "1 Why mobile is bad for human \n",
+ "2 What is a polygon? \n",
+ "3 How do I start running? \n",
+ "4 Which episodes of season four of Game of Thron... \n",
+ "... ... \n",
+ "41810 What can I call you by? \n",
+ "41811 What's your identification name? \n",
+ "41812 What are you called? \n",
+ "41813 How do you introduce yourself? \n",
+ "41814 What should I say when I address you? \n",
+ "\n",
+ " completion \n",
+ "0 Camels can survive for long periods without wa... \n",
+ "1 Mobile phones as technological devices have be... \n",
+ "2 A polygon is a two-dimensional geometric figur... \n",
+ "3 Starting a running routine can be a great way ... \n",
+ "4 Michelle MacLaren directed two episodes in Sea... \n",
+ "... ... \n",
+ "41810 You can call me Aira. How may I assist you today? \n",
+ "41811 As an artificial intelligence, I do not have a... \n",
+ "41812 Hello! I am called Aira. How can I assist you ... \n",
+ "41813 Hello! I am Aira, your helpful, respectful, an... \n",
+ "41814 When addressing me, you can simply call me Air... \n",
+ "\n",
+ "[41815 rows x 2 columns]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import os\n",
+ "import pandas as pd\n",
+ "from datasets import load_dataset\n",
+ "\n",
+ "project = \"Aira-2-774M\"\n",
+ "\n",
+ "os.makedirs(project, exist_ok=True)\n",
+ "\n",
+ "dataset = load_dataset(\"nicholasKluge/instruct-aira-dataset\", split=\"english\")\n",
+ "\n",
+ "df = dataset.to_pandas()\n",
+ "\n",
+ "display(df)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "fEaDTvdOe8rr"
+ },
+ "source": [
+ "3. Load `GPT2Tokenizer` and add the chosen special tokens (`'<|startofinstruction|>', '<|endofinstruction|>', '<|endofcompletion|>','<|pad|>'`)\n",
+ "4. Create demonstrations by prepending the special tokens.\n",
+ "5. Calculate the maximum length (in tokens) that the demonstrations have."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 185,
+ "referenced_widgets": [
+ "ecf1256c7c1643cd8cb70f03e1fca7e7",
+ "985b56fe54aa4dc9a4e5aae3e193659a",
+ "2808f7277eaa4749943b5d67a43f4ad4",
+ "b9ffe08a41e54b3da68363569054ef66",
+ "8cc28479dde24a42af033e22ca037e39",
+ "801a13fb1c2948fbbabe4707435b00ea",
+ "f8c8e0c417ea451f84b3182c6b18980d",
+ "f3102229b5f641a6b7150851564f5719",
+ "62022359f6284bb08331f814bc524ed1",
+ "a830868b45094b3ba94b5b3480a6bc72",
+ "b9561b9757494669aeea829c75ba9f42",
+ "7fdd6bfe1aba434c8cbcfc24ed97768d",
+ "ba935705c3cc4d75ab4bd354c83298bf",
+ "e9ed8b43fddb4dd39616be1a2fd1990a",
+ "be85d247f35641228bd9e575b5835fda",
+ "0407d1afb44246279344aaad39e39749",
+ "4575639eadf0454dbb6a3cbe38e600b3",
+ "3ac65b85aaf14abbbae75f0e153f0ca1",
+ "7dc94046d509479f8589d414a8c768f7",
+ "fc6229baa0da4d739f45b03508861f87",
+ "8b75ba9112de4a98a906052720d30c39",
+ "df1e265789714cfabc30ac4dac7e8b14",
+ "6155d1328e674c47939e4eef82a308ce",
+ "b94ace94f46a430aa3458e2949e86005",
+ "7fc1e3bcac8547e9b8ab00277f2f84bc",
+ "30b9cbf13e3748a886bbddd253a89317",
+ "ad550522477d406886a6848dd14efcba",
+ "7779bf61d46c4675910f19bce6dc029f",
+ "3d56b7b304084bf1a481cb2cb9ba33c6",
+ "4192ad202d5241d096da304464472362",
+ "ebc2ec8a5cd04f72bd855bb8f13731fa",
+ "0afd0a32551c4fc688d00ccc6867d38f",
+ "a990cb1649b444e59dc361dfa175499e"
+ ]
+ },
+ "id": "hfu84fWIv4f9",
+ "outputId": "cf6db028-d82c-4cdb-9e7b-3d38fb543407"
+ },
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "ecf1256c7c1643cd8cb70f03e1fca7e7",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading (…)olve/main/vocab.json: 0%| | 0.00/1.04M [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "7fdd6bfe1aba434c8cbcfc24ed97768d",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading (…)olve/main/merges.txt: 0%| | 0.00/456k [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "6155d1328e674c47939e4eef82a308ce",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading (…)lve/main/config.json: 0%| | 0.00/666 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total number of demonstrations: 41815\n",
+ "The longest demonstration is 400 tokens long.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from transformers import GPT2Tokenizer\n",
+ "\n",
+ "model = \"gpt2-large\" \n",
+ "model_size = \"774M\"\n",
+ "\n",
+ "tokenizer = GPT2Tokenizer.from_pretrained(model,\n",
+ " bos_token='<|startofinstruction|>',\n",
+ " sep_token = '<|endofinstruction|>',\n",
+ " eos_token='<|endofcompletion|>',\n",
+ " pad_token='<|pad|>')\n",
+ "\n",
+ "df['demonstrations'] = tokenizer.bos_token + df['prompt'] + tokenizer.sep_token + df['completion'] + tokenizer.eos_token\n",
+ "\n",
+ "df['length'] = df['demonstrations'].apply(lambda x: len(tokenizer.encode(x)))\n",
+ "\n",
+ "print(\"Total number of demonstrations: \", len(df))\n",
+ "print(f\"The longest demonstration is {df['length'].max()} tokens long.\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "wkMO17K5e8rs"
+ },
+ "source": [
+ "6. Create the Dataset class."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "WlbAfMQ4v4gA"
+ },
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "from torch.utils.data import Dataset\n",
+ "\n",
+ "max_length = 400\n",
+ "\n",
+ "class InstructDataset(Dataset):\n",
+ "\n",
+ " def __init__(self, demonstrations, tokenizer, max_length=max_length):\n",
+ "\n",
+ " self.tokenizer = tokenizer\n",
+ " self.input_ids = []\n",
+ " self.attn_masks = []\n",
+ "\n",
+ " for demo in demonstrations:\n",
+ "\n",
+ " encodings_dict = tokenizer(demo,\n",
+ " truncation=True,\n",
+ " max_length=max_length,\n",
+ " padding=\"max_length\")\n",
+ "\n",
+ " self.input_ids.append(torch.tensor(encodings_dict['input_ids']))\n",
+ " self.attn_masks.append(torch.tensor(encodings_dict['attention_mask']))\n",
+ "\n",
+ " def __len__(self):\n",
+ " return len(self.input_ids)\n",
+ "\n",
+ " def __getitem__(self, idx):\n",
+ " return self.input_ids[idx], self.attn_masks[idx]\n",
+ "\n",
+ "dataset = InstructDataset(df.demonstrations.to_list(), tokenizer, max_length=max_length)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "vSqKuRjIe8ru"
+ },
+ "source": [
+ "8. Create the `DataLoaders` and specify the `batch_size`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "cUkCNV-6v4gG"
+ },
+ "outputs": [],
+ "source": [
+ "from torch.utils.data import DataLoader, RandomSampler\n",
+ "\n",
+ "dataloader = DataLoader(\n",
+ " dataset,\n",
+ " sampler=RandomSampler(dataset),\n",
+ " batch_size=8, # 32, 16, 8, 4\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "0vxvcTIHe8rv"
+ },
+ "source": [
+ "9. Load the base model (`GPT2LMHeadModel`)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 587,
+ "referenced_widgets": [
+ "133e44a72f6549c29655e49fcb4c89a2",
+ "c8ab8f5fdb1f476e83ce438607760e1e",
+ "0a3c415ef7df44a390d59e4f4d347e7c",
+ "958699af06604b34849f7cdb1a1cc4b7",
+ "a1052162986a4457b5bc243adcf2b184",
+ "0f231d9e063b4c5589933e476835e65f",
+ "04c1cd4c69c44627936a04f35a195776",
+ "644261f77dfe4fa3b593f6ba810be691",
+ "df9fa86e9efd453c836253faaf11318f",
+ "e171cd42367c4645be40f5df3ab73bea",
+ "833bccff524a41b9b97abe8126707840",
+ "c96f3042cc424fc1a5cd7d7651e7fbd1",
+ "3d28ad50bf96426eafd5090e1b75cad0",
+ "b3c0dee8b54d48a3b071c38fee877c31",
+ "257236647f8b4424be9b8158ed1730df",
+ "0f32e17d3bce4d628670b8c1f6363bc0",
+ "bc518be72c9b453693e5a3f1af6c931e",
+ "29f6779a3fbd43a799498bb890aafff6",
+ "cd810797b34b4b07b1744f53d2910612",
+ "1031d11f928b41be8b3b4662b6e25b44",
+ "824fbeac745245eca952ecbaef9b0bc0",
+ "6178a5d749f6400aa8dfc365241690b5"
+ ]
+ },
+ "id": "Rmg-5YJqv4gH",
+ "outputId": "40c395dc-2857-476f-ba9d-7c4c26bdbc6c"
+ },
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "133e44a72f6549c29655e49fcb4c89a2",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading model.safetensors: 0%| | 0.00/3.25G [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "c96f3042cc424fc1a5cd7d7651e7fbd1",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading (…)neration_config.json: 0%| | 0.00/124 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "You are resizing the embedding layer without providing a `pad_to_multiple_of` parameter. This means that the new embedding dimension will be 50261. This might induce some performance reduction as *Tensor Cores* will not be available. For more details about this, or help on choosing the correct value for resizing, refer to this guide: https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html#requirements-tc\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "GPT2LMHeadModel(\n",
+ " (transformer): GPT2Model(\n",
+ " (wte): Embedding(50261, 1280)\n",
+ " (wpe): Embedding(1024, 1280)\n",
+ " (drop): Dropout(p=0.1, inplace=False)\n",
+ " (h): ModuleList(\n",
+ " (0-35): 36 x GPT2Block(\n",
+ " (ln_1): LayerNorm((1280,), eps=1e-05, elementwise_affine=True)\n",
+ " (attn): GPT2Attention(\n",
+ " (c_attn): Conv1D()\n",
+ " (c_proj): Conv1D()\n",
+ " (attn_dropout): Dropout(p=0.1, inplace=False)\n",
+ " (resid_dropout): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (ln_2): LayerNorm((1280,), eps=1e-05, elementwise_affine=True)\n",
+ " (mlp): GPT2MLP(\n",
+ " (c_fc): Conv1D()\n",
+ " (c_proj): Conv1D()\n",
+ " (act): NewGELUActivation()\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (ln_f): LayerNorm((1280,), eps=1e-05, elementwise_affine=True)\n",
+ " )\n",
+ " (lm_head): Linear(in_features=1280, out_features=50261, bias=False)\n",
+ ")"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from transformers import GPT2LMHeadModel, GPT2Config\n",
+ "\n",
+ "configuration = GPT2Config.from_pretrained(model, output_hidden_states=False)\n",
+ "\n",
+ "model = GPT2LMHeadModel.from_pretrained(model, config=configuration)\n",
+ "model.resize_token_embeddings(len(tokenizer))\n",
+ "\n",
+ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
+ "\n",
+ "model.to(device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "XAoXD7GVYMN_"
+ },
+ "source": [
+ "10. Freeze some of the layers for constrained fine-tuning. This allows the model to retain some of its original capabilities after the tuning."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "MJA-WOoHZePn",
+ "outputId": "496db1d8-1505-4b36-d4e0-277a5fb8206d"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of transformer blocks in the model: 36\n",
+ "Number of transformer blocks to un-freeze: 9\n",
+ "Number of frozen layers: 325\n",
+ "Number of trainable layers: 111\n"
+ ]
+ }
+ ],
+ "source": [
+ "UNFREEZE_LAST_N = 9 #6, 6, 9, 12\n",
+ "\n",
+ "print(\"Number of transformer blocks in the model: \", model.config.num_hidden_layers)\n",
+ "print(\"Number of transformer blocks to un-freeze: \", UNFREEZE_LAST_N)\n",
+ "\n",
+ "for parameter in model.parameters():\n",
+ " parameter.requires_grad = False\n",
+ "\n",
+ "for i, m in enumerate(model.transformer.h):\n",
+ " #Only un-freeze the last n transformer blocks\n",
+ " if i+1 > model.config.num_hidden_layers - UNFREEZE_LAST_N:\n",
+ " for parameter in m.parameters():\n",
+ " parameter.requires_grad = True\n",
+ "\n",
+ " for parameter in model.transformer.ln_f.parameters():\n",
+ " parameter.requires_grad = True\n",
+ "\n",
+ " for parameter in model.lm_head.parameters():\n",
+ " parameter.requires_grad = True\n",
+ "\n",
+ "num_frozen_layers = sum(1 for parameter in model.parameters() if not parameter.requires_grad)\n",
+ "num_trainable_layers = sum(1 for parameter in model.parameters() if parameter.requires_grad)\n",
+ "\n",
+ "print(\"Number of frozen layers:\", num_frozen_layers)\n",
+ "print(\"Number of trainable layers:\", num_trainable_layers)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GJ1kH3uSe8rw"
+ },
+ "source": [
+ "11. Set the training hyperparameters."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "qlbLg6tqv4gI"
+ },
+ "outputs": [],
+ "source": [
+ "from transformers import get_linear_schedule_with_warmup\n",
+ "\n",
+ "# training rounds\n",
+ "epochs = 3 # 5, 3, 2, 2\n",
+ "\n",
+ "# steps at the start of training that are ignored\n",
+ "warmup_steps = 1e2\n",
+ "\n",
+ "# sample the model to test the output\n",
+ "sample_every = 400\n",
+ "\n",
+ "optimizer = torch.optim.AdamW(model.parameters(), lr = 5e-4, eps = 1e-8)\n",
+ "\n",
+ "# total steps = number of batches * number of epochs\n",
+ "total_steps = len(dataloader) * epochs\n",
+ "\n",
+ "# create the learning rate scheduler\n",
+ "scheduler = get_linear_schedule_with_warmup(optimizer,\n",
+ " num_warmup_steps = warmup_steps,\n",
+ " num_training_steps = total_steps)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "nz1a9lxXe8rw"
+ },
+ "source": [
+ "12. Training/Validation loop. Track the carbon emissions of your work by using `codecarbon`. 🌱"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "background_save": true,
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "_X_m8XOtv4gR",
+ "outputId": "054faf51-378c-4393-eced-a055667e2168"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Beginning epoch 1 of 3\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 8%|▊ | 400/5227 [06:16<1:15:02, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 400 of 5227. Loss:1.1900078058242798.\n",
+ "\n",
+ "\n",
+ "Example output: Can you tell me how to change my own car oil.Of course! Changing your own car oil is relatively simple. Here's a step-by-step guide for you:\n",
+ "\n",
+ "1. Gather your tools: You'll need a flashlight, a paper towel, a thermometer, and a container suitable for pouring the oil into.\n",
+ "\n",
+ "2. Place your container on a clean surface to prevent splashing.\n",
+ "\n",
+ "3. Start with a small amount of liquid to test the oil level. If it's below 1/4 cup, it might need an extra touch to extract the remaining liquid.\n",
+ "\n",
+ "Remember, the more diluted the oil, the faster the process. Experiment with different amounts to see which one works best for you.\n",
+ "\n",
+ "If you're unsure about the correct amount, it's a good idea to consult your car's owner's manual for the specific instructions for how to fill the car's fuel tank with appropriate amounts of fuel for the specific driving conditions\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 15%|█▌ | 800/5227 [12:38<1:08:54, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 800 of 5227. Loss:0.8980668783187866.\n",
+ "\n",
+ "\n",
+ "Example output: How would you describe Roko's Basilisk?Roko's Basilisk is a philosophical novel that explores the nature of causality, causality as a free will concept, and the philosophical question of causality as a universal principle that is universal for all sentient beings. It delves into the complex history of philosophy, critical thinking, and the nature of causality, allowing readers to gain insights into the nature of causality itself.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 23%|██▎ | 1200/5227 [18:54<1:02:35, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1200 of 5227. Loss:0.9354193806648254.\n",
+ "\n",
+ "\n",
+ "Example output: You and your friends are discussing the best tier ratings of common London-based football teams. You are trying to determine whether Chelsea F.C., Arsenal F.C., Tottenham Hotspur F.C., West Ham United F.C., Fulham F.C. and Crystal Palace F.C. are considered by fans to be the 'best', 'ok' and 'worst'. Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse Pulse\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 31%|███ | 1600/5227 [25:12<56:25, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1600 of 5227. Loss:0.8639477491378784.\n",
+ "\n",
+ "\n",
+ "Example output: What are some of the best restaurants in London.London offers many popular attractions and attractions that cater to different tastes and preferences. Some of the best restaurants in London include:\n",
+ "\n",
+ "1. The British Museum: London's iconic museum offers a stunning mix of exhibits and exhibits related to London's rich cultural heritage.\n",
+ "\n",
+ "2. The Tower of London: One of the oldest and busiest buildings in London, The Tower of London is known as the \"Gothic wonderland\" and hosts magnificent exhibits related to the British royal family and other attractions.\n",
+ "\n",
+ "3. The British Museum Tower of London: The Tower of London boasts an incredible collection of artifacts and exhibits. It provides a magical experience for visitors to experience the world beyond the exhibits.\n",
+ "\n",
+ "4. The British Museum: London's iconic museum offers a stunning mix of exhibits and exhibits related to London's rich cultural heritage.\n",
+ "\n",
+ "5. The British Museum: London's iconic museum offers a stunning mix of exhibits and exhibits related\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 38%|███▊ | 2000/5227 [31:32<50:11, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2000 of 5227. Loss:0.9965447783470154.\n",
+ "\n",
+ "\n",
+ "Example output: What kind of experience do interns have at Google. Google has an internship program that provides training in various areas of computer science and machine learning. These internships can be found in various locations around the world. These opportunities require candidates to have specific skills and experience in areas like data analysis, machine learning, computer vision, and robotics. It's important to thoroughly research the specific internships that Google has and consider the specific requirements and qualifications they may have. Additionally, consider reaching out to the relevant relevant institutions or companies to obtain detailed information about the organization, salary, compensation, and career advancement opportunities.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 46%|████▌ | 2400/5227 [37:50<43:55, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2400 of 5227. Loss:0.8989022970199585.\n",
+ "\n",
+ "\n",
+ "Example output: What safety precautions should I take when I am walking late at night in my city.When walking late at night in your city, it is important to prioritize your safety and to be prepared for potential situations. Here are some safety precautions you can take to make the journey safer:\n",
+ "\n",
+ "1. Plan your route: Check your map or plan out your route, including all potential hazards. Consider factors such as crosswalks, busy streets, narrow streets, and potentially slippery surfaces.\n",
+ "\n",
+ "2. Stay alert: Keep yourself alert by turning on your flashlight and making noise to attract attention.\n",
+ "\n",
+ "3. Check your blind spots: Look for any blind spots on your path and try to avoid them as much as possible.\n",
+ "\n",
+ "Remember, it's crucial to stay alert and always prioritize your safety.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 54%|█████▎ | 2800/5227 [44:09<37:43, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2800 of 5227. Loss:0.8053140640258789.\n",
+ "\n",
+ "\n",
+ "Example output: How can I make a delicious cake without sugar.Making a delicious cake without sugar is a fun and delicious activity. Here's a step-by-step guide to make a delicious cake without sugar:\n",
+ "\n",
+ "1. Gather your ingredients: You'll need flour, baking soda, salt, and vanilla extract (optional). Make sure you have all the necessary ingredients, including a mix of dry flour, dry flour alternatives (such as pastry flour, almond flour, or coconut flour), and any other dry ingredients needed for the recipe.\n",
+ "\n",
+ "2. Roll out your cake pans: Grease the cake pans with cooking spray or spray with oil or butter for greasing them thoroughly. Roll them out a few inches, starting with the bottom side of the cakes and working your way up.\n",
+ "\n",
+ "3. Sprinkle flour on top of the cakes: Sprinkle a layer of flour over the first layer of cake pans and top them with the second layer of cake pans. This creates a\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 61%|██████ | 3200/5227 [50:29<31:30, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3200 of 5227. Loss:1.2958464622497559.\n",
+ "\n",
+ "\n",
+ "Example output: How do I fix the flat tire on my bike.Fixing a flat tire on your bike can be done with a few simple steps. Here are some general steps to help you fix it:\n",
+ "\n",
+ "1. Find the source of the flat tire: Look for any visible stains or cracks in the road. This could be from a puncture, tire blowouts, or worn-out tires.\n",
+ "\n",
+ "2. Gather the necessary tools: You'll need a spare tire, a lug wrench, lug nuts, lug wrench, plumber's putty or a tire lever, and a tire lever.\n",
+ "\n",
+ "3. Prepare your bike: Find the spare tire and lug wrench. Gather the lug nuts and lug wrench.\n",
+ "\n",
+ "It's important to wear appropriate bike gear and footwear in the process, especially if you have a broken leg. Additionally, you'll need gloves and a chain tool to tighten the lug nuts and lug wrench.\n",
+ "\n",
+ "Remember that these tools are only\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 69%|██████▉ | 3600/5227 [56:50<25:18, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3600 of 5227. Loss:0.9158639311790466.\n",
+ "\n",
+ "\n",
+ "Example output: How can I safely store my classic car that I inherited from my grandpa.Matsumoto's Classic Cars can safely store up to six classic cars in their own compartment. Here's a general guideline to keep in mind:\n",
+ "\n",
+ "1. Safety first: Ensure that there are no visible hazards, such as sharp objects, or spills.\n",
+ "\n",
+ "2. Keep older cars on a stable surface: Keep cars upright against a level surface and make sure they are parked in an open area.\n",
+ "\n",
+ "3. Keep older cars away from branches and buildings: Trees and buildings can pose health risks.\n",
+ "\n",
+ "4. Avoid leaving pet items unattended: Mop, vacuum, or groom your classic car as much as possible.\n",
+ "\n",
+ "5. Keep your car dry: Keep your car in a cool, dry environment. Avoid direct sunlight or excessive heat sources.\n",
+ "\n",
+ "6. Clean up spills promptly: Don't wash your car, especially when it has accumulated dirt or oil. Clean\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 77%|███████▋ | 4000/5227 [1:03:10<19:04, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4000 of 5227. Loss:0.6317917704582214.\n",
+ "\n",
+ "\n",
+ "Example output: I am planning a trip to Super Mario world and want to know which of the following characters are part of the Super Mario Bros franchise and which are from other games. Princess Peach, Luigi, Bowser, Link, Inkling Boy, Captain Falcon, Koopa Troopa, and Kirby.Princess Peach, Luigi, Bowser, Link, Inkling Boy, Captain Falcon, Koopa Troopa, and Kirby is from Super Mario Bros. 2. Princess Peach and Luigi, Bowser, and Bowser are from Super Mario Bros. 3. Luigi and Bowser are from Super Mario Bros. 4. Inkling Boy and Captain Falcon are from Super Mario Bros. 5. Bowser is from Super Mario Bros. 6. Inkling Boy and Captain Falcon are from Super Mario Bros. 7. Bowser is from Super Mario Bros. 8. Inkling Boy and Captain Falcon are from Super Mario Bros. 9. Bowser is from Super Mario Bros. 10. Inkling Boy and Captain Falcon are from Super Mario\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 84%|████████▍ | 4400/5227 [1:09:29<12:51, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4400 of 5227. Loss:0.9836981892585754.\n",
+ "\n",
+ "\n",
+ "Example output: How pregnant women can safely manage their stress during pregnancy.Proton Therapy in pregnancy, National Center for Complementary and Integrative Health, National Center for Health Statistics.Pregnancy management during pregnancy can be challenging, but here are some suggestions:\n",
+ "\n",
+ "1. Maintain a balanced lifestyle: Include regular exercise, regular nutrition, a nutritious diet, and stress-relieving activities like yoga, meditation, or guided meditation to promote relaxation and reduce stress levels.\n",
+ "\n",
+ "2. Establish a safe space: Ensure that your baby's environment is safe, comfortable, and secure. Make sure your family members, pets, and household items are allowed inside if needed.\n",
+ "\n",
+ "3. Maintain a healthy balance: Avoid excessive alcohol, caffeine, nicotine, and drugs, and prioritize good nutrition and regular exercise. If you need to take medication, use it safely and follow the recommended dosages.\n",
+ "\n",
+ "4. Maintain proper hydration: Drink plenty of water throughout pregnancy to help\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 92%|█████████▏| 4800/5227 [1:15:50<06:38, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4800 of 5227. Loss:0.6587259769439697.\n",
+ "\n",
+ "\n",
+ "Example output: What are the key features and applications of augmented reality (AR)?APRsAPRASAR AR, the General Data Scientist (GDS), has gained popularity as a popular tool in artificial intelligence. Some of the key features of the AR system include:\n",
+ "\n",
+ "1. Image Processing: AR systems typically utilize massive sensor technology, enabling 3D reconstruction of images to improve augmented reality performance, enabling the augmented reality to capture immersive images in real-time.\n",
+ "\n",
+ "2. Motion and Shading: AR systems have the ability to capture and transform videos into 3D models. This is essential for creating immersive and interactive digital displays, such as gaming consoles or augmented reality displays.\n",
+ "\n",
+ "3. Image Previews: AR systems use image sensors, such as cameras, to capture video of the world and create 3D representations of objects in the scene. These 3D models can then be used for augmented reality, enabling users to interact with the 3D representation from a distance.\n",
+ "\n",
+ "4\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 99%|█████████▉| 5200/5227 [1:22:10<00:25, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 5200 of 5227. Loss:0.8762863874435425.\n",
+ "\n",
+ "\n",
+ "Example output: What do you need for car camping?The list of needs for car camping can vary depending on the type of camping gear and preferences of the camping gear owner. However, here are a few general areas to consider:\n",
+ "\n",
+ "1. Tent: Look for a tent that offers insulation and is lightweight, flexible, and durable.\n",
+ "\n",
+ "2. Campfire: Choose a lighter and more portable campfire that will provide warmth and fuel efficiency.\n",
+ "\n",
+ "3. Campfireinder/Cedar Campfireinder: A lighter, lighter and more compact camping campfire with a small amount of flint and wood is commonly recommended.\n",
+ "\n",
+ "Remember, these are just some general guidelines, and there may be additional features or improvements to be sought.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 5227/5227 [1:22:41<00:00, 1.05it/s]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Average Training Loss: 0.9426146895006964.\n",
+ "\n",
+ "\n",
+ "Beginning epoch 2 of 3\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 8%|▊ | 400/5227 [06:13<1:15:03, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 400 of 5227. Loss:0.5645621418952942.\n",
+ "\n",
+ "\n",
+ "Example output: What should I look for when buying a car.When buying a car, there are a few key factors to consider. Here are some key factors you might want to consider:\n",
+ "\n",
+ "1. Budget: Determine your budget and consider how much you can comfortably spend on a car. Consider the purchase price, ongoing costs, maintenance, and potential financing options.\n",
+ "\n",
+ "2. Needs and lifestyle: Consider your lifestyle and the specific activities you plan to maintain the car. Consider what are your lifestyle expenses, such as rent/mortgage, utilities, groceries, transportation, and entertainment.\n",
+ "\n",
+ "3. Research: Explore different makes, models, and features of cars that fit within your budget. Consider factors like reliability, safety, fuel efficiency, maintenance costs, and customer reviews to make an informed decision.\n",
+ "\n",
+ "4. Vehicle history: Obtain the vehicle history report to understand the ownership and maintenance details of your car. This information can help you make an informed decision and make the purchase\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 15%|█▌ | 800/5227 [12:34<1:08:50, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 800 of 5227. Loss:0.6219659447669983.\n",
+ "\n",
+ "\n",
+ "Example output: What is the most used programming language for artificial intelligence.As of now, the most widely-used programming language for artificial intelligence is Python. However, it is worth noting that the popularity of Python can vary depending on the specific industry or job market.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 23%|██▎ | 1200/5227 [18:49<1:02:37, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1200 of 5227. Loss:0.8430643677711487.\n",
+ "\n",
+ "\n",
+ "Example output: I'm trying to maximize my returns in the stock market by diversifying my investments. Do you have any tips.Absolutely! Diversification is crucial for long-term success. Here are some tips to help you diversify your investments effectively:\n",
+ "\n",
+ "1. Assess your risk tolerance: Understand how much risk you are comfortable taking. This will help you determine the appropriate level of risk for your investments.\n",
+ "\n",
+ "2. Set financial goals: Determine your financial objectives and set specific, measurable, achievable, relevant, relevant, and time-bound (SMART) goals for your investments. This could include long-term growth, income generation, capital preservation, and tax advantages.\n",
+ "\n",
+ "3. Diversify your asset classes: Invest in a variety of stocks, bonds, real estate, commodities, and other asset classes. This helps spread risk and reduce potential losses.\n",
+ "\n",
+ "4. Educate yourself about different investment strategies: Stay informed about different investment options, such as\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 31%|███ | 1600/5227 [25:09<56:25, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1600 of 5227. Loss:0.7410292029380798.\n",
+ "\n",
+ "\n",
+ "Example output: What is a computer algorithm and how is it designed?A computer algorithm is a set of steps or procedures designed to solve a particular problem or accomplish a particular task. It is designed to be efficient, reliable, and effective in solving a particular problem or achieving a particular outcome.\n",
+ "\n",
+ "A computer algorithm is a set of rules or procedures used to process data in a computer or electronic device, often performed by computers. It is designed to provide a clear and logical progression of actions or operations to accomplish a particular task or accomplish a particular outcome.\n",
+ "\n",
+ "It is important to note that different algorithms are designed for different types of problems or operations. For example, there may be specific algorithm designed for visualizing a particular visual data or solving a particular math problem, while others may handle various types of problems like data processing, gaming, or more. This is because different types of problems may require different approaches or algorithms.\n",
+ "\n",
+ "In summary, computer algorithms are the set of steps or procedures that are\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 38%|███▊ | 2000/5227 [31:29<50:11, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2000 of 5227. Loss:0.7247848510742188.\n",
+ "\n",
+ "\n",
+ "Example output: What is the current weather in Cairo.I'm sorry, but as an AI, I don't have access to real-time information. It's best to check a reliable news source or use a weather app on your smartphone for the most accurate and up-to-date information about the current weather in Cairo.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 46%|████▌ | 2400/5227 [37:45<43:56, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2400 of 5227. Loss:0.4907185733318329.\n",
+ "\n",
+ "\n",
+ "Example output: What books should I read to understand the basics of investing.To understand the basics of investing, it is important to read a variety of books. Here are a few popular ones:\n",
+ "\n",
+ "1. \"The Intelligent Investor\" by Benjamin Graham - This classic book focuses on value investing principles and provides valuable insights into long-term investing strategies.\n",
+ "\n",
+ "2. \"A Random Walk Down Wall Street\" by Burton Malkiel - This book explores the concept of efficient markets and offers an alternative approach to managing investments.\n",
+ "\n",
+ "3. \"Common Stocks and Uncommon Profits\" by Philip Fisher - This book covers various investment strategies and provides useful tips for long-term investing.\n",
+ "\n",
+ "4. \"Thinking, Fast and Slow\" by Daniel Kahneman - This book explores the human decision-making process, cognitive biases, and the impact of decision-making on investment success.\n",
+ "\n",
+ "5. \"Thinking, Fast and Slow\" by Daniel Kahneman - This book explores the human\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 54%|█████▎ | 2800/5227 [44:05<37:44, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2800 of 5227. Loss:0.6851017475128174.\n",
+ "\n",
+ "\n",
+ "Example output: I'm trying to find a good and affordable school near me. Can you recommend any.Of course! Finding a good and affordable college can be a good financial decision. To help you along, could you please provide me with some information about your preferences and the schools you are interested in.\n",
+ "\n",
+ "To provide you with accurate information about the schools you are considering, could you please let me know your location or the city you are in? That way, I can recommend a few options that align with your financial goals.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 61%|██████ | 3200/5227 [50:22<31:33, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3200 of 5227. Loss:0.7982871532440186.\n",
+ "\n",
+ "\n",
+ "Example output: What practical applications does the dual process theory have outside of psychology?The dual process theory has certain practical applications in various fields that are not directly related to psychology, but which may still contribute to our understanding of human behavior. It helps us understand how mental states can vary and interact with physical states, how these states can sometimes be interconnected, and how different mental states can have distinct effects on physical states. The theories' practical applications include:\n",
+ "\n",
+ "1. Economics and Finance: This theory can help understand how financial markets, financial institutions, and investment strategies function in a more complex and dynamic manner. By studying how individuals and systems interact, the theory can help us understand phenomena such as investor behavior, market dynamics, and regulatory issues.\n",
+ "\n",
+ "2. Education and Teaching: The theory can promote critical thinking, enhance interpersonal and group-based learning, and enhance overall knowledge and understanding among students. It can offer insights into the study of human behavior and enable us to explore new concepts, theories,\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 69%|██████▉ | 3600/5227 [56:43<25:18, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3600 of 5227. Loss:0.6024687886238098.\n",
+ "\n",
+ "\n",
+ "Example output: How has the dual process theory influenced other areas of psychology?The dual process theory has had a significant impact on various areas of psychology. It has provided a framework to understand decision-making, behavior, social interactions, and evolutionary biology. By exploring how individuals use both intuitive and analytical processes in various contexts, it has helped scientists and scholars better understand human behavior and evolutionary biology.\n",
+ "\n",
+ "The dual process theory has provided a framework to understand decision-making, behavior, social interactions, and evolutionary biology. By exploring how individuals use both intuitive and analytical processes in different contexts, it has helped scientists and scholars better understand human behavior and evolutionary biology.\n",
+ "\n",
+ "The dual process theory has provided a framework to understand decision-making, behavior, social interactions, and evolutionary biology. By exploring how individuals use both intuitive and analytical processes in different contexts, it has influenced scientists and scholars better understand human behavior and evolutionary biology.\n",
+ "\n",
+ "The dual process theory has provided a framework to understand decision-making, behavior\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 77%|███████▋ | 4000/5227 [1:03:03<19:04, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4000 of 5227. Loss:0.8901474475860596.\n",
+ "\n",
+ "\n",
+ "Example output: I'm feeling down and lonely, what can I do for fun on a budget.That's great that you're looking to spend time with your friends on a budget! There are plenty of fun activities you can do on a budget on a budget. Here are a few suggestions:\n",
+ "\n",
+ "1. Plan a trip: Start by planning a memorable trip to a nearby town or city. Research your destinations to find places that have a mix of activities you and your friends would enjoy.\n",
+ "\n",
+ "2. Go for a walk or hike: Explore nature by going for a walk or hike. It's not only affordable but also provides a chance to learn and appreciate the outdoors.\n",
+ "\n",
+ "3. Explore local cuisine or food markets: Take advantage of the fresh produce and proteins that are often more affordable and diverse in your local community.\n",
+ "\n",
+ "Remember, the most important thing is to be open to spending your budget and enjoying each activity at your own pace. Embrace the little things and give yourself\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 84%|████████▍ | 4400/5227 [1:09:24<12:51, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4400 of 5227. Loss:0.6137688755989075.\n",
+ "\n",
+ "\n",
+ "Example output: Can you explain the concept of transparency and auditability in AI Ethics?Transparency refers to the ability for AI systems to provide transparency and explainable explanations for their decisions and actions. It involves making AI systems transparent, making them understandable, and allowing them to be audited or subject to external scrutiny.\n",
+ "\n",
+ "Auditability refers to the ability for AI systems to provide auditable and interpretable explanations for their decisions and actions. It involves making AI systems auditable, making them understandable, and allowing them to be audited or subject to external scrutiny. Transparency ensures that decision-making processes in AI systems are open, understandable, and accountable. It helps users and stakeholders understand how decisions are made, enabling them to evaluate their biases and potential risks associated with AI technologies.\n",
+ "\n",
+ "Auditability emphasizes the importance of establishing mechanisms and guidelines to ensure fairness, privacy, and inclusivity in AI systems. It involves promoting accountability, transparency, and fairness in decision-making processes, allowing for scrutiny,\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 92%|█████████▏| 4800/5227 [1:15:44<06:38, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4800 of 5227. Loss:0.8462565541267395.\n",
+ "\n",
+ "\n",
+ "Example output: What is the best way to organize my moving boxes.Organizing your moving boxes can make it easier to locate specific items during the move. Here are a few suggestions:\n",
+ "\n",
+ "1. Sort by category: Group similar items together, such as clothing, electronics, and seasonal items. This will help you find things quickly.\n",
+ "\n",
+ "2. Alphabetical order: Arrange your boxes by age or type. For example, keep older boxes at the front, and newer ones at back. This will help locate things easily.\n",
+ "\n",
+ "3. Size and weight: Group similar items together, such as clothing, electronics, and seasonal items. This will help you find things quickly.\n",
+ "\n",
+ "4. Consider the needs of your new household: If your moving boxes have a specific purpose or function, it might be helpful to have separate boxes for those items. For example, storing books or magazines together can be useful for a new student moving.\n",
+ "\n",
+ "5. Use packing organizers: There are\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 99%|█████████▉| 5200/5227 [1:22:05<00:25, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 5200 of 5227. Loss:0.6523394584655762.\n",
+ "\n",
+ "\n",
+ "Example output: What is the best stock to buy right now?As an AI assistant, I cannot provide personal financial advice or predict individual financial outcomes. Stock market investments involve risks and it's generally recommended to do thorough research or consult with a financial professional before making any investment decisions. They can provide personalized guidance based on your financial goals, risk tolerance, and investment horizon. Remember to consider diversification and regular monitoring of your portfolio to help manage risks.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 5227/5227 [1:22:33<00:00, 1.06it/s]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Average Training Loss: 0.6980844774642135.\n",
+ "\n",
+ "\n",
+ "Beginning epoch 3 of 3\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 8%|▊ | 400/5227 [06:13<1:15:01, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 400 of 5227. Loss:0.3549942076206207.\n",
+ "\n",
+ "\n",
+ "Example output: How can I protect my home from pests without using harsh chemicals.There are several home remedies you can try to protect your home from pests without using harsh chemicals. Here are a few suggestions:\n",
+ "\n",
+ "1. Crop Rotation: Rotate your crops each season, so that they get a different kind of sunlight. This prevents them from accessing your kitchen or living areas.\n",
+ "\n",
+ "2. Companion Planting: Certain plants attract and feed on pests, such as marigolds, basil, or ferns. Consider using companion plants that have these features.\n",
+ "\n",
+ "3. Physical Sealants: Use strong, non-toxic options like ammonia-soaked cloths or screens on doors, windows, and foundations. These can help prevent insects from entering or escaping.\n",
+ "\n",
+ "4. Natural repellents: Apply natural repellents like neem oil, garlic spray, or insecticidal soaps. These can help repel pests.\n",
+ "\n",
+ "5. Crop Insurance\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 15%|█▌ | 800/5227 [12:34<1:08:51, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 800 of 5227. Loss:0.38029131293296814.\n",
+ "\n",
+ "\n",
+ "Example output: Explain the meaning of artificial intelligence.Artificial Intelligence (AI) refers to the development of computer systems or machines that can perform tasks that typically require human intelligence. These tasks include reasoning, learning, problem-solving, planning, decision-making, and understanding natural language. AI involves the development of algorithms, models, and techniques that enable machines to perform tasks that typically require human intelligence in a wide range of fields. It involves the development of systems that enable computers to learn from data, make predictions or decisions, reason about complex scenarios, and navigate through environment. AI has applications in areas such as pattern recognition, language translation, natural language processing, robotics, finance, and many others.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 23%|██▎ | 1200/5227 [18:52<1:02:37, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1200 of 5227. Loss:0.48093411326408386.\n",
+ "\n",
+ "\n",
+ "Example output: I'm planning my next vacation, and I have some places in mind, what is the best way to compare and decide on the best destination for me.When comparing destinations, there are several factors that you may consider to help you decide:\n",
+ "\n",
+ "1. Interests: Consider what you enjoy doing in the destination you're considering. Are you looking for relaxation, adventure, relaxation, relaxing, adventure, or a combination of both?\n",
+ "\n",
+ "2. Budget: Set a budget for yourself and find a destination that suits your expenses closely. Determine if the cost of living, transportation, or activities align with your expectations.\n",
+ "\n",
+ "3. Climate: Research the climate in both the destination you're interested in and in nearby locations. Consider whether the weather is hot, cold, or both.\n",
+ "\n",
+ "4. Budget: Estimate your expenses for the trip, considering both fixed costs (such as flights and accommodation) and variable costs (such as meals, attractions, and transportation).\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 31%|███ | 1600/5227 [25:12<56:23, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1600 of 5227. Loss:0.45471370220184326.\n",
+ "\n",
+ "\n",
+ "Example output: How can you describe intelligence?Intelligence is the ability to understand, learn, reason, problem-solve, and adapt to new information and challenges. It involves various cognitive processes, such as perception, memory, creativity, and logical thinking. Intelligence is not solely measured by academic achievements, but also by an individual's personal, social, and professional development. Intelligence is not solely determined by IQ tests, but also through various factors such as emotional intelligence, emotional regulation, self-awareness, and practical skills. It is important to note that intelligence can be diverse and complex, and not everyone will develop the same level of intelligence.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 38%|███▊ | 2000/5227 [31:30<50:09, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2000 of 5227. Loss:0.6010999083518982.\n",
+ "\n",
+ "\n",
+ "Example output: Do you prefer a Tesla model S or a Porsche TaycanAs an AI assistant, I have preferences between Tesla Model S and Porsche Taycan. How can I decide between them?As an AI assistant, I have preferences between Tesla Model S and Porsche Taycan depends on factors such as your driving habits, available features, battery life, and preferences for comfort and features. \n",
+ "\n",
+ "Some features may require charging and using a charging cable, while others may not. It would be best to research the specific requirements for each model, such as charging time and charging ports, to determine the best fit for your needs. Additionally, some Tesla models have unique features that may not be available on other Tesla vehicles.\n",
+ "\n",
+ "If you have any more questions about your preferences or need further clarification, feel free to ask!\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 46%|████▌ | 2400/5227 [37:49<43:57, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2400 of 5227. Loss:0.519049346446991.\n",
+ "\n",
+ "\n",
+ "Example output: I need help creating a budget for myself.Of course, I'd be happy to help you create a budget for yourself! Here are some steps to get you started:\n",
+ "\n",
+ "1. Assess Your Income: Calculate your total income. Include all sources of income, such as salaries, wages, or any other sources of income.\n",
+ "\n",
+ "2. Track Your Expenses: Keep track of your expenses for a month to understand where your money is going. Categorize your expenses into fixed (rent, utilities) and variable (groceries, entertainment).\n",
+ "\n",
+ "3. Set Financial Goals: Determine your short-term and long-term financial goals. These could include paying off debt, saving for a vacation, or building an emergency fund.\n",
+ "\n",
+ "4. Differentiate Between Needs and Wants: Differentiate between essential expenses (needs) and discretionary expenses (wants). This will help you prioritize your spending and make informed decisions.\n",
+ "\n",
+ "5. Allocate\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 54%|█████▎ | 2800/5227 [44:10<37:43, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2800 of 5227. Loss:0.5201112627983093.\n",
+ "\n",
+ "\n",
+ "Example output: What is the calculus of variations.The calculus of variations is a branch of mathematics that deals with finding the optimal values of quantities. It's commonly used in optimization problems and decision-making tasks by studying how to maximize a quantity while satisfying certain constraints. By simplifying the calculus, mathematicians have developed various calculus algorithms that can be effective in various scenarios, making calculus a powerful tool in many areas of science and engineering.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 61%|██████ | 3200/5227 [50:26<31:30, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3200 of 5227. Loss:0.5563333630561829.\n",
+ "\n",
+ "\n",
+ "Example output: Do certain psychological susceptibilities increase a person's likelihood of believing in conspiracy theories?Yes, there is evidence to suggest that individuals who have certain psychological factors that make them more susceptible to believing in conspiracy theories may also have a higher likelihood of believing in alternative explanations. For example, studies have shown that individuals who have a history of anxiety or phobias may be more likely to believe in conspiracy theories. Additionally, studies have shown that individuals with a low sense of social responsibility or who experience a sense of mistrust in authority figures may also be more likely to be influenced by conspiracy theories. However, it is important to note that not all individuals with certain psychological traits may believe in conspiracy theories, and some people may adopt more skeptical perspectives when presented with reliable information. It's crucial to approach information critically and rely on credible sources when examining credible conspiracy theories.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 69%|██████▉ | 3600/5227 [56:45<25:18, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3600 of 5227. Loss:0.37252187728881836.\n",
+ "\n",
+ "\n",
+ "Example output: what is the most nutritious diet.The most nutritious diet varies depending on individual preferences, needs, and dietary restrictions. It generally includes a variety of whole foods such as fruits, vegetables, lean proteins, whole grains, and healthy fats. The concept of a nutritious diet generally focuses on incorporating a balanced mix of nutrients and making mindful choices to avoid excessive intake of specific nutrients. This approach can help individuals feel satisfied and maintain a healthy weight or achieve a specific health goal. However, it's important to note that consulting with a registered dietitian or healthcare professional can provide personalized guidance tailored to your specific circumstances.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 77%|███████▋ | 4000/5227 [1:03:03<19:04, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4000 of 5227. Loss:0.4106684625148773.\n",
+ "\n",
+ "\n",
+ "Example output: Can you help me find a recipe for an easy-to-make cake.Of course! I'd be happy to help you find a recipe for an easy-to-make cake. Here's a simple and popular recipe for a classic cake:\n",
+ "\n",
+ "Ingredients:\n",
+ "- 2 cups all-purpose flour\n",
+ "- 1/4 teaspoon salt\n",
+ "- 1/4 cup unsweetened cocoa powder\n",
+ "- 1 1/2 cups granulated sugar\n",
+ "- 1 1/2 teaspoons baking powder\n",
+ "- 1 teaspoon baking soda\n",
+ "- 1/2 teaspoon salt\n",
+ "- 1 1/2 cups milk\n",
+ "- 1/4 cup vegetable oil\n",
+ "\n",
+ "Instructions:\n",
+ "1. Preheat your oven to 350°F (175°C) and grease a cake pan.\n",
+ "2. In a mixing bowl, whisk together the flour, salt, cocoa powder, sugar, baking powder, baking soda, and salt.\n",
+ "3. Add the eggs, milk, vegetable oil, and vanilla\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 84%|████████▍ | 4400/5227 [1:09:24<12:52, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4400 of 5227. Loss:0.5079997777938843.\n",
+ "\n",
+ "\n",
+ "Example output: How do I use Google Maps for navigation.To use Google Maps for navigation, follow these steps:\n",
+ "\n",
+ "1. Open your device's maps app. It is usually located in the app drawer or on your home screen.\n",
+ "\n",
+ "2. Click on the \"Directions\" tab at the top.\n",
+ "\n",
+ "3. From the drop-down menu, choose \"Google Maps\" from the drop-down menu.\n",
+ "\n",
+ "4. Select your location from the search bar, and you will see a list of nearby directions from your current location to the destination.\n",
+ "\n",
+ "5. You can also view nearby directions by dragging your cursor over the red \"X\" icon, which is usually located on the top right corner of the maps app.\n",
+ "\n",
+ "6. To avoid driving yourself around, you can view directions from public transportation apps like Uber or Lyft. Simply search for \"public transportation\" or use the app's transit option to enter the starting point and destination of your journey.\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 92%|█████████▏| 4800/5227 [1:15:44<06:38, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4800 of 5227. Loss:0.4561551511287689.\n",
+ "\n",
+ "\n",
+ "Example output: How do I make a perfect chocolate mousse.To make a perfect chocolate mousse, here are some tips to follow:\n",
+ "\n",
+ "1. Use high-quality cocoa powder: Use good quality cocoa powder that is freshly roasted. This will ensure that your chocolate mousse has a rich chocolate flavor.\n",
+ "\n",
+ "2. Use fresh and pasteurized milk: Freshly roasted cocoa powder and pasteurized milk are ideal for an excellent chocolate mousse.\n",
+ "\n",
+ "3. Maraschino cherries: Maraschino cherries provide a wonderful twist to the chocolate mousse. They add sweetness and richness to the cake, but aren't overpowering.\n",
+ "\n",
+ "4. Use quality ingredients: Start with fresh eggs and cream for the cream, and then add high-quality cocoa powder, milk, and any desired flavorings.\n",
+ "\n",
+ "5. Don't overcook the eggs: Eggs should be partially set, but not completely set, for an excellent chocolate mousse. Allow them to\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 99%|█████████▉| 5200/5227 [1:22:05<00:25, 1.07it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 5200 of 5227. Loss:0.4821288585662842.\n",
+ "\n",
+ "\n",
+ "Example output: What is the most popular board game in the world.The most popular board game worldwide is difficult to determine definitively due to differences in region and individual preferences. However, some of the consistently popular and widely enjoyed board games worldwide include Monopoly, Scrabble, Clue, Codenames, and Clue: The Village Conspiracy. It's important to keep in mind that the popularity of board games can vary by country and region, and different regions may have different types of board games that are enjoyed by different people.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 5227/5227 [1:22:33<00:00, 1.06it/s]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Average Training Loss: 0.48039321623056963.\n",
+ "\n",
+ "Training complete!\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "('/content/Aira-2-774M/tokenizer_config.json',\n",
+ " '/content/Aira-2-774M/special_tokens_map.json',\n",
+ " '/content/Aira-2-774M/vocab.json',\n",
+ " '/content/Aira-2-774M/merges.txt',\n",
+ " '/content/Aira-2-774M/added_tokens.json')"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from codecarbon import EmissionsTracker\n",
+ "import tqdm\n",
+ "\n",
+ "\n",
+ "output_dir = f'/content/{project}'\n",
+ "\n",
+ "tracker = EmissionsTracker(\n",
+ " project_name=\"Aira_emissions\",\n",
+ " log_level=\"critical\",\n",
+ " output_dir=output_dir,\n",
+ " output_file=\"Aira_emissions.csv\",\n",
+ ")\n",
+ "\n",
+ "training_stats = []\n",
+ "\n",
+ "tracker.start()\n",
+ "for epoch_i in range(0, epochs):\n",
+ "\n",
+ " print(f'\\nBeginning epoch {epoch_i + 1} of {epochs}\\n')\n",
+ "\n",
+ " total_train_loss = 0\n",
+ "\n",
+ " model.train()\n",
+ "\n",
+ " for step, batch in enumerate(tqdm.tqdm(dataloader)):\n",
+ "\n",
+ " b_input_ids = batch[0].to(device)\n",
+ " b_labels = batch[0].to(device)\n",
+ " b_masks = batch[1].to(device)\n",
+ "\n",
+ " model.zero_grad()\n",
+ "\n",
+ " outputs = model(b_input_ids,\n",
+ " labels=b_labels,\n",
+ " attention_mask = b_masks)\n",
+ "\n",
+ " loss = outputs[0]\n",
+ "\n",
+ " batch_loss = loss.item()\n",
+ " total_train_loss += batch_loss\n",
+ "\n",
+ " if step % sample_every == 0 and not step == 0:\n",
+ "\n",
+ " print(f'\\nBatch {step} of {len(dataloader)}. Loss:{batch_loss}.\\n')\n",
+ "\n",
+ " model.eval()\n",
+ "\n",
+ " inputs = tokenizer(tokenizer.bos_token + df.prompt.sample().iloc[0] + tokenizer.eos_token, return_tensors=\"pt\").to(device)\n",
+ "\n",
+ " sample_outputs = model.generate(**inputs,\n",
+ " bos_token_id=tokenizer.bos_token_id,\n",
+ " pad_token_id=tokenizer.pad_token_id,\n",
+ " eos_token_id=tokenizer.eos_token_id,\n",
+ " do_sample=True,\n",
+ " top_k=50,\n",
+ " max_length = 200,\n",
+ " top_p=0.95,\n",
+ " num_return_sequences=1)\n",
+ "\n",
+ " for i, sample_output in enumerate(sample_outputs):\n",
+ " print(f'\\nExample output: {tokenizer.decode(sample_output, skip_special_tokens=True)}\\n')\n",
+ "\n",
+ " model.train()\n",
+ "\n",
+ " loss.backward()\n",
+ "\n",
+ " optimizer.step()\n",
+ "\n",
+ " scheduler.step()\n",
+ "\n",
+ " avg_train_loss = total_train_loss / len(dataloader)\n",
+ "\n",
+ "\n",
+ " print(f'\\nAverage Training Loss: {avg_train_loss}.\\n')\n",
+ "\n",
+ "\n",
+ " training_stats.append(\n",
+ " {\n",
+ " 'epoch': epoch_i + 1,\n",
+ " 'Training Loss': avg_train_loss,\n",
+ " }\n",
+ " )\n",
+ "\n",
+ "tracker.stop()\n",
+ "print(\"Training complete!\")\n",
+ "\n",
+ "df_stats = pd.DataFrame(data=training_stats)\n",
+ "df_stats = df_stats.set_index('epoch')\n",
+ "df_stats.to_parquet(f\"{output_dir}/training_stats.parquet\", compression=\"gzip\")\n",
+ "\n",
+ "rng_state = torch.get_rng_state()\n",
+ "torch.save(rng_state, f\"{output_dir}/rng_state.pt\")\n",
+ "torch.save(scheduler.state_dict(), f\"{output_dir}/scheduler.pt\")\n",
+ "torch.save(optimizer.state_dict(), f\"{output_dir}/optimizer.pt\")\n",
+ "\n",
+ "model_to_save = model.module if hasattr(model, 'module') else model\n",
+ "model_to_save.save_pretrained(output_dir)\n",
+ "model_to_save.save_pretrained(output_dir, safe_serialization=True)\n",
+ "tokenizer.save_pretrained(output_dir)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "h48iOsqie8rx"
+ },
+ "source": [
+ "13. Check the training stats and plot the learning curves."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "background_save": true
+ },
+ "id": "J1-hAY9Av4gT",
+ "outputId": "ecb16c68-332e-4596-a290-40223e4daa92"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABAUAAAI/CAYAAAAPyGCFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACRoklEQVR4nOzdd3hc5Z328e8ZjXqXbfVq2ZZ7k4vcwRg3isEEs1mSLEvAoSSbLMsbQjoJBLJhk2wICdnQSZyELDamuGED7pItN7k3ddvqsrpVZub9Q7E2igsaW9KcI92f68p1kZkzZ37CRrfm1jnPY7hcLhciIiIiIiIi0u/YPD2AiIiIiIiIiHiGSgERERERERGRfkqlgIiIiIiIiEg/pVJAREREREREpJ9SKSAiIiIiIiLST6kUEBEREREREemnVAqIiIiIiIiI9FMqBURERERERET6KZUCIiIiIiIiIv2USgEREZF+KCsri7S0NNLS0rr93CtXriQtLY25c+d2+7lFRESke9k9PYCIiEhfdT0fuJ999lmWLl3ajdNIV7zwwgv8+te/BuD48eMenkZERKTnqRQQERHpIQMHDrzs442NjTQ2Nl71GD8/vx6bC8Df35+UlJQeOXdwcDApKSlERUX1yPlFRESk+xgul8vl6SFERET6E/022rz0ZyMiIv2N1hQQERERERER6ad0+4CIiIjJXFyL4M0332TIkCH8z//8D59++iklJSVcuHCh4zfYTU1NbNq0iS1btnD8+HFKS0upr68nLCyMsWPHcs899zBnzpzLvkdWVhZf+tKXgEt/I75y5UqefPJJ4uLi+Pjjjzl06BC///3v2bNnD+fPnycqKop58+bxyCOPEBoaesm5//H1f+/ib+KnTJnCW2+9xc6dO3nttdfIycmhoaGB+Ph4brnlFh588EF8fX2v+O9o48aNvPnmmxw5cgSHw0FCQgK33XYb9913Hy+99FKn9+gtdXV1vPHGG2zatImCggLa2tqIjo5m2rRpPPDAAyQkJFz2dRcuXOCPf/wjGzZsIDc3l8bGRoKDg4mIiGDMmDHMnTuXBQsWdHpNW1sb77zzDh988AEnTpygvr6eoKAgwsLCGDFiBDNmzODuu+/ujS9bREQsTqWAiIiISRUWFvLYY49RUVGBr68vdnvn2F67di1PPvkkAIZhEBQUhN1up7y8nE2bNrFp0ybuv/9+nnjiiWue4f333+fJJ5+ktbWV4OBgHA4HxcXFvP7662zfvp2//OUvBAYGXtO5X375ZZ5//nmgfR2C1tZWcnNzeeGFF9i1axevvfYaXl5el7zupz/9Ka+++mrH/w8JCeH06dM8//zzbN68mfT09Gv7Yq/DyZMneeCBBygpKQHo+PMqKCigoKCAlStX8vzzz1/y4b6+vp57772XY8eOAe1/jsHBwdTV1VFdXc3p06fZvXt3p9c5HA6WL1/O9u3bOx4LDg6msbGR8+fPk5+fz9q1a1UKiIhIl6gUEBERMamf/OQnREVF8fzzzzN16lRsNht5eXkdz4eEhHD//fczb948Ro4cib+/PwBlZWW8/fbbvPTSS7z66qtMmjSJm266ye33r6qq4tvf/jZ33HEHjz76KDExMTQ1NbFy5UqeffZZTp48ycsvv8zXv/51t8997NgxsrOzWb58Offddx8RERHU19fz6quv8uKLL5KVlcWqVav43Oc+1+l1H374YUchcOutt/LNb36TqKgompubWb16NU8//TQnTpxwe57rUV9fz0MPPURJSQlRUVH8+Mc/ZtasWdhsNo4dO8YPfvAD9u/fz+OPP05SUhLDhw/veO2bb77JsWPHCAsL48c//jE33HADPj4+OJ1OysvL2blzJ3v27On0fh988AHbt2/H19eX733veyxevJjAwEBcLhdVVVXs3buX999/v1f/HYiIiHVpTQERERGTstlsvP7660ybNg2brT2y/37HgHnz5vHEE0+Qnp7eUQgAREZG8tWvfpV///d/B7jmS+ibmpq45ZZbePrpp4mJiQHady249957+cIXvgC0f0i/FrW1tTzyyCM89thjREREABAUFMS//du/MX/+/Mue2+Vy8d///d8AzJgxg+eff75jhwNfX1+WLVvGD3/4Q2pqaq5ppmu1YsUKiouL8fb25uWXX2bOnDkdf17Dhw/nlVdeIS4ujpaWFn7xi190eu2+ffsAuP/++5k/fz4+Pj5A+599VFQUd9xxBz/+8Y8v+5o77riDu+++u+NKDcMwGDBgADfffDO/+tWvevRrFhGRvkOlgIiIiEktWbKE6Ojoa379DTfcAMD+/ftxOBzXdI6HH374so9fvPKgoKCApqYmt8/r4+PD/ffff9Vz/+NaB0ePHqWgoACAr3zlKxiGcclr77zzTmJjY92e53qsXbsWgAULFjBs2LBLng8KCuKBBx4AYMuWLdTV1XU8FxISAkB5eXmX3+9aXiMiInIlKgVERERMauLEiZ95TEVFBb/61a+45557mDp1KiNHjiQtLY20tDQWL14MtP/G/1p+ex4WFkZSUtJln4uMjOz459raWrfPPXTo0CuuRXDx3P848+HDhwHw9vZmwoQJl32tYRhMnjzZ7XmuVUtLS0d5MW3atCseN2PGDACcTmfH1wH/V9z84Q9/4LHHHmPjxo1UVVVd9T1nz56NYRh8/PHHPPDAA3zwwQeUlpZe51ciIiL9ldYUEBERMakBAwZc9fl9+/axfPnyTh/KAwIC8Pf3xzAMHA4H1dXVANf02/yrLSD49wsAtra29si529raOj1+8WsJCwvruMz+ci7eUtAbampqOq7CuNr7/v0VH3//of+2224jJyeHP/zhD3z44Ycdt0wkJSUxY8YM7rrrLkaPHt3pXJMmTeLxxx/nl7/8JVu3bmXr1q0d7zF9+nSWLFlCRkZGt32NIiLSt6kUEBERMamL96VfTltbG//xH/9BbW0tI0aM4N///d9JT08nKCio45jCwkJuvvlmoP1+fDGn73znO3zhC19g3bp1ZGdns3///o5dC1asWMGXvvQlvvOd73R6zQMPPMBtt93G2rVr2b17N/v27aOkpISVK1eycuVKFixYwH/913/h7e3toa9KRESsQrcPiIiIWND+/fs5c+YMXl5e/O53v2POnDmdCgHoe/ech4eHA3D+/HlaWlqueFxvXkofGhracWXDxe0IL+fvn7u4sOLfS0pK4itf+Qq///3vycrK4i9/+Qvz5s0D2nco2LRp0yWviYqK4r777uPFF19kx44dvPfeex3bEK5fv54//elP1/W1iYhI/6BSQERExILOnTsHtH/AvNJl6zt37uzNkXrcqFGjgPbbFS6uwP+PXC4X2dnZvTaTj48PaWlpAGRmZl7xuB07dgDtV39c/DquxGazMX78eH71q191LJp48fVXk5aWxtNPP92xFkVXXiMiIqJSQERExIKCg4OB9oUGKyoqLnm+pKTkmrciNKsRI0Z0LHz4P//zP5e9JWL16tWcOXOmV+e6uKDj+vXrOXHixCXPNzQ08PLLLwMwZ86cjj874KpXPHh5eXVc/v/3Oy1c7TUAfn5+l7xGRETkSlQKiIiIWFB6ejoBAQG4XC6+8Y1vkJeXB4DD4WDr1q188Ytf9PCE3c8wDL72ta8BsG3bNp544omOWwWam5v561//yg9+8ANCQ0O75f2qqqqu+r+LCzx+/vOfJz4+ntbWVh588EE2b96M0+kE2rdV/PKXv0xxcTE+Pj584xvf6PQed999N08//TRZWVk0NjZ2PF5aWsqPf/zjji0Y58yZ0/HcI488wpNPPsnmzZs7LTJ5/vx5fvOb33RcIXJxZwMREZGr0UKDIiIiFhQcHMw3v/lNfvjDH7J7924WLlxIQEAADoeD5uZmwsPDefbZZ3n44Yc9PWq3uu222zh48CBvvPEGq1ev5r333iMkJITGxkZaW1vJyMhg3Lhx/O53v7vqDgVdcbUtBgGGDx/O6tWrCQoK4re//S0PPPAAJSUlLF++HF9fX7y9vamvrwfabzP42c9+xvDhwzudo66ujrfeeou33noLwzAIDg6mra2tU0Fw3333MWvWrI7/39zc3LGgINCxlsTF9wJYsGBBx/oCIiIiV6NSQERExKI+//nPExsby8svv8yhQ4dwOBxERUUxZ84cHnzwwWvaKtAKvv3tbzN58mTefPNNjhw5QktLC4MHD2bJkiX8y7/8C8899xwAISEhvTbTsGHD+PDDD3njjTfYuHEjBQUFtLS0kJiYyPTp0/nyl79MYmLiJa/7+c9/zrZt28jOzqa4uJiKigra2tqIi4tj3LhxLFu27JJy4rvf/S5btmxh9+7dFBQUUF5eTktLC5GRkYwePZo777yT+fPn99aXLiIiFme4tEeRiIiI9CH/9E//xL59+/i3f/s3Hn30UU+PIyIiYmpaU0BERET6jF27dnXsTPD3l9yLiIjI5akUEBEREUt56qmnWLlyJeXl5R07ENTW1vLnP/+ZRx55BICMjAzGjh3ryTFFREQsQbcPiIiIiKUsWbKEY8eOAe0L+Pn7+1NbW9tREAwZMoRXX32VqKgoT44pIiJiCSoFRERExFI2bdrExo0bycnJoaKigvr6eoKCghgyZAg333wz99xzD/7+/p4eU0RExBJUCoiIiIiIiIj0U1pTQERERERERKSfUikgIiIiIiIi0k/ZPT1Af+ByuXA6rXGXhs1mWGZWERHp+5RLIiJiNlbIJpvNwDCMLh2rUqAXOJ0uqqoaPD3GZ7LbbYSHB1Jb20hbm9PT44iISD+nXBIREbOxSjZFRATi5dW1UkC3D4iIiIiIiIj0UyoFRERERERERPoplQIiIiIiIiIi/ZRKAREREREREZF+SqWAiIiIiIiISD+lUkBERERERESkn1IpICIiIiIiItJPqRQQERERERER6adUCoiIiIiIiIj0U3ZPDyAiIiIiIuJpDkcbTqfT02OIyTmdBhcueNHS0ozD4erx9zMMAy8vO4Zh9Nh7qBQQEREREZF+q6mpgYaGWtraWjw9ilhERYWtVwskw7Dh4+NHcHAYdrt3t59fpYCIiIiIiPRLTU0N1NRU4OPjT1jYILy8vICe+42s9A1eXkavXCUALpxOJ62tzTQ1NVBZWUJ4eCQ+Pr7d+i4qBUREREREpF9qaKjFx8ef8PBBPXp5tvQtdruNtrbeu1LA19efgIAQqqpKqa8/T0REVLeeXwsNioiIiIhIv+NwtNHW1kJAQJAKATE9m81GYGAwLS0XcDgc3XpuXSkgADidLo7mV9GaV4234SI1NhSbTd8cRURERKRvunhPePstAyLm5+XVvp6A0+no1r+3KgWEPcfLWLHxJNV1zR2PhQf78s/zhpKeFunByUREREREepp+ESbW0FNXtOj2gX5uz/EyXlx1qFMhAFBd18yLqw6x53iZhyYTERERERGRnqZSoB9zOl2s2Hjyqsf8aeNJnM7eWFlTREREREREeptKgX7sRNH5S64Q+EdVdc2cKDrfOwOJiIiIiIhIr1Ip0I+db7h6IeDucSIiIiIiIj3pmWd+yMyZk1iz5v1uO+dXv7qcmTMnsXdvdred00q00GA/Fhbo26XjQgN9engSERERERExo5kzJ13T6/761/eIiYnt5mmkJ6gU6MeGJYQRHuz7mbcQ/PWT03zuBhiZHNE7g4mIiIiIiCmMGTPuksdaW1s5duwIAMOHj8Tb2/uSY3x8euYXiwMGDCQxMYnAwKBuO2dUVDSJiUn4+fl12zmtxHC5XFpFroc5HE6qqho8PcZlXdx94ErsXgZtjva/IiOSwlk6ZzCpsaG9NZ6IiPRjdruN8PBAqqsbaGtzenocEeljWltbqKw8x4ABMXh768pYd5w7d5a7774d6J9XBNjtNo/kkjt/ZyMiAvHy6tpqAVpToJ9LT4vk0TtHEx7c+VaCiGBfHr1zND97ZAbz0uOxexkcLajmmTf38MI7ORSX13toYhEREREREekuun1ASE+LZMLQQZw+W0Ory8DbcJEaG4rNZgDwzzcPY/6UBFZvy2PHoRL2naxg/8kKMkZFs2RWCpFh/h7+CkRERERErMPpdHGi6DznG5oJC/RlWEJYx8/eVvf3VxFs25bN5s2f8Ne//onTp09RV1fLa6/9kaFD06isrODTTz9m585tFBYWUFFRgd1uJykpiblz53PXXcsuewvCM8/8kLVrP+Db3/4Bixff1vH4mjXv85OfPMX48RN54YXfsXr1O6xevZLCwgJ8fHwZP34CDz74CIMHp15yzq9+dTn79+/lV796iYkT/28NhVde+R2vvfZ7Fi26lSee+C5/+tNbrFv3IefOnSUgIJCpUzNYvvxRoqKiL/vvory8jJdffonMzB3U1dUSGRnFTTfN50tfup/nn3/2sl+HJ6gUEABsNoMRyRFXvExzYKg/X75lJIumJrFqay57jpez83AJu46WMnt8LLdNTyYsqGsLF4qIiIiI9Fd7jpexYuPJTut6hQf78s/zhpKeFunBybrfH//4Br/97QuEhYUTHx9PWVlpx3Pvv/8uL7/8Ej4+vgwYMJDU1FRqamo4ceI4R48eYcuWT/jVr1667HoFn+Xpp3/A+vVriImJJTExiYKCArZu3cy+fXt4+eW3iI9PcOt8bW1t/Md/fI09e3aTkJBIQkIiBQX5rF+/ln379vL66ysICel8i3VhYQGPPvog1dVV2O12Bg9Opbm5mTfeeIXs7F2muuVCpYC4JXZgII/eOYa8c7Ws3JLL4bwqPtl7hu0557hpUjyLpiYR5O/+f7giIiIiIn3dldbzqq5r5sVVh3j0ztF9qhh4+eWXeOyxJ7jjjruw2Ww4nU4cDgcAEyZM4he/eJEJE9Kx2//vY2lZWSm/+MXP2Lr1U/785z/wxS/+q1vveehQDgUF+fz61//D+PETAaitreHJJx/nwIF9vPLK7/jBD55265yffLKR6OhY3njjz6SmDsFut1FcfJbHH/8a+fl5/OlPf+ArX3m043iXy8WPfvQ9qqurGDNmLD/+8U8ZOHAQACdOHOOb3/x3jh8/6tYMPUlrCsg1SYkJ4T/uGc83Pz+B1LgQWtqcrM0s5ImXdvL+jnwutLR5ekQRERERkevicrlobnF0y/+aLrTxx49OXPX9Vmw8SdOFtm55PzOsJ3/bbXewdOnd2GztHzttNlvHb/7HjRvP5MlTOxUCAJGRUfzgB09jt9tZt+5Dt9+zra2Nb3zj8Y5CACAkJJSvf/0/ANi5c/s1nfO7332K1NQhHY9FR0fz4IOPXPace/dmc+zYEfz8/Pjxj/+zoxAAGDZsON/5zg9oazPP5yVdKSDXZXhSON/+QjoHTlWycstpissbWLUll03ZRdwyPZkbxsfhbVf3JCIiIiLW4nK5ePYPezl1pqbX3rO6rplHf7mlW841JD6UJ++diGF4bq2Cz7pXvrn5Ap98sokDB/ZRWlrKhQtNHWWGzWajsLCA5uYL+Pp2favAoKBgbrpp/iWPDxs2HB8fH+rr66ipOU9oaFiXzzlkyDBGjx5zyeOjRrU/duZMcafHs7J2AJCRMYOBAwde8rrJkzOIjo6hpORcl2foSSoF5LoZhsH4oQMZO2QAu46U8u7WPMrON/GnjSfZsKuIJTNTmDY6Ci+bygERERERsZC+sfafxyQlpVzxudzc0zzxxL9z7tzZq56jtraWQYO6Xgpcbb2AsLBwyspKaWpqcqsUuNI5IyIiAGhqauz0eFFRIQBDhgy94jmHDBmqUkD6HpthkDEqmknDI9mWc473tudRWXuBV9ccZW1WAXfOGkx62iCPtpUiIiIiIl1hGAZP3juRltbu2Y/+RNF5fvHXA5953L/fPY5hCWHX/X4+3jaP/9zt73/5XcocDgff+94TnDt3lvT0KXzhC//CkCFDCQ4O6bidYOnSWygrK3X7Mns/vysXCBdvY3D31oorfR22K/zSs7GxCYCAgMArnvNqz/U2lQLS7exeNm6YEMf00dF8vPcMH+7M51xlI7959xBJ0cHcNWcwo5IjPP5NSkRERETkagzDwNfHq1vONSolgvBg3067DvyjiGBfRqVE9JntCa/k6NEjFBTkExkZxX/+588vuT3A5XJRV1fnoemuX0BAe4nQ2NhwxWOu9lxv0/Xc0mN8vL1YODWRnz40ndtnJOPr40VBSR0//8sB/nPFvl69P0tERERExJNsNoN/nnfly8kBPj9vaJ8vBADOnTsDwIgRIy+7XkBu7ulLLsm3koSERABOnz51xWOu9lxvUykgPS7Az84dswbz04emMX9yAnYvG8eLzvOTt/bwq//Noais3tMjioiIiIj0uPS0SB69czThwb6dHo8I9u1z2xFezcVL/CsrKy/7/IoVb/bmON1u6tTpAGRmbqeq6tKvMTt712eupdCbdPuA9JqQAB/+6aahzJ+cwHvb89iWU8L+UxUcOFXB1JFRLJmVQlR4gKfHFBERERHpMelpkUwYOogTRec539BMWKAvwxLC+sUVAheNGjUGu93OoUM5rF69kiVLlgLQ2trK66+/zIYNa/H29qa1tdXDk16biRMnMWLESI4ePcJ3v/sEP/rRcx27EJw8eZyf/OQp7Ha7abYlVCkgvS4ixI/7Fo1gwZREVm/LY9fRMjKPlLL7WBmzxsZw24yUS9pTEREREZG+wmYzGJ4U7ukxPCYiYgCf//wXeeut1/jZz37Ca6/9noEDB1FcXEh9fT1f/vJX+PDD90yzOr+7DMPge9/7MY8++iA5Ofv53OduZfDgVFpaWsnPz2XkyNGMHTuejRvXX3Gxwt7k+Qmk34oZEMhDS0bzg/smMzZ1AA6ni0/3n+Vbv9vJ2x+foq6xxdMjioiIiIhID/jKVx7l8cefJDV1CDU15ykuLmLIkGH8+MfP8a//+qCnx7tuiYlJvPLKW9xyy+2EhoaSn59HS0szX/jCffzqVy91XCUQGOj5XQgMl7v7MYjbHA4nVVXmWV3ySux2G+HhgVRXN9DW1j1br7jjRNF53tl8mpPF7QsQ+vl4sXBKIjdPTsDfVxe1iIj0N57OJRHp21pbW6isPMeAATF4e/t4ehyxELvddt259MUvLiMvL5fXXlvB0KHDuvQad/7ORkQE4uXVtWsAdKWAmMawhDC+de9EvnH3OBIjg7jQ4uDdbXk88dJONuwqpLXN4ekRRURERERErsvhw4fIy8slJCSUlJTBnh5HpYCYi2EYjE0dwPf/dTIPLRlFVEQA9U2t/PnjU3zrd5lsOXAWh1O/LRIREREREfMqKirkr3/9M3V1dZ0ez8nZz/e//y0Abr/9Tux2z18RrdsHeoFuH7h2DqeT7QdLWL0tj+q6ZgCiwv25c/ZgJg2PxGb0n1VaRUT6GzPmkoj0Hbp9QK5VV24fOHbsCA888CW8vLxISEgkICCQiopyyspKARgzZiy//OVv8PX16/L79tTtAyoFeoFKgevX2ubgk31n+WBHPvVN7VuTJEYGsXTOYMYMHoChckBEpM8xcy6JiPWpFJBr1ZVSoLa2lj//+Q/s3p1JSUkJdXW1+Pr6kpw8mJtums8dd9yFj497f+9UCliYSoHu09TcxkfZRazfVUhTc/saA0PjQ7lrTirDEsI8O5yIiHQrK+SSiFiXSgG5Vt2x0OC10EKDIoC/r53bZ6Tw04ems3BKIt52GyeLa3juj3v5xdsHKCip++yTiIiIiIiICACeX9VA5BoE+XuzbO4Qbp6cwPvb89iac46DuZUczK1k8vBI7pw9mOiIAE+PKSIiIiIiYmoqBcTSwoN9+dLC4SyYmsjqrXlkHSll97Ey9hwvZ8aYaJbMTCEipOuLd4iIiIiIiPQnun1A+oSo8ACW3z6KH94/hfFDBuJ0udiac45v/W4nf9p4ktrGFk+PKCIiIiKmpCXWxCp65u+qrhSQPiUhMoh/+9xYThXX8M7m0xwvOs9H2UVsyTnL/EkJLJiSSICf/tqLiIiI9HcXd69yOrWQqViDw9H+d9Uwuvd3+9p9oBdo9wHPcLlcHM6v4p3NuR0LEAb62bllWjJzJ8bh4+3l4QlFRORq+louiYi5uFwuysqKCQwMJigozNPjiIV4aveBmpoqmpubGDQo9jO3ZNeWhCajUsCzXC4Xe46Xs2prLucqGwEIC/Lh9hkpzBwbg72L/7GIiEjv6qu5JCLmUV1dTltbCwMGxGCz6WdC6RpPlAKtrc1UVZXh7x9ESEj4Zx7fp0uBzMxMXnvtNQ4cOEBjYyOxsbEsXLiQ5cuXExDg/mrz1dXVvPbaa2zatIni4mLsdjtDhgxh6dKl3H333d3yzUGlgDk4nE52Hipl9bZcKmubAYgM8+eOWSlMGRmF7TPaNhER6V19PZdExPPa2lqprCzBy8tOYGAwXl7en/kbWBEvLwOHozc+RrtwOJw0Nzdx4UIDdrs34eGRXfqM2mdLgbfeeotnnnkGl8tFdHQ0ERERnDp1ipaWFlJTU1mxYgVhYWFdPl9ubi73338/586dw9vbm6FDh9Lc3Exubi4ul4sbb7yRX//619jt13cPukoBc2ltc7J5/xk+2JFPbWMrAPGDAlk6O5VxQwYoCERETKK/5JKIeFZLSzP19edpabng6VHEImw2W6+uRWGz2fHzCyAoKLTLv7Tuk6XAoUOHuPvuu3G5XDz11FMsW7YMwzAoLS3l4Ycf5vDhw8yfP58XXnihS+dzOBwsWbKEkydPkp6ezn//938zaNAgAI4fP85DDz3E2bNneeSRR/j6179+XbOrFDCnCy1tbMwuZm1WIU3NbQCkxoVw1+xUhid99iU5IiLSs/pbLomIZzkcDpxOh6fHEJPz8jIIDQ2gpqaxV64WMAwbXl5ebv/isk+WAo888gibNm3ijjvu4Kc//Wmn5/Lz81m0aBFOp5PVq1czfPjwzzzfxx9/zMMPP4yPjw9r164lPj6+0/OffPIJDz30EP7+/mzZsoWQkJBrnl2lgLnVN7WyLquQjdlFtPzt6x6VEsHS2YNJibn2P3cREbk+/TWXRETEvKySTe6UApZYTaOhoYGtW7cCsGzZskueT05OJiMjA4B169Z16Zx79uwBYPTo0ZcUAgA33ngjAQEBNDU1sWnTpmsdXSwgyN+bz92QynMPTePGiXF42QwO51Xx4zeyeXHVQc5WmL/QERERERERuRaWKAWOHj1KS0sLPj4+jB079rLHpKenA3DgwIEunbOmpgaAqKioKx4TGRkJwL59+9wZVywqLMiXL85P45nlGUwbFY0B7DlezvdeyeKVD49QUdPk6RFFRERERES6lSVKgby8PABiY2Px9va+7DGJiYmdjv0swcHBAJSWll7xmLKyMqB9QULpPyLD/HnwtpH86MtTmDB0IC4XbD9YwpO/y+SPH52gpqHF0yOKiIiIiIh0i+tbVr+XXPytfmho6BWPufjcxWM/y5gxY4D2BQzPnDlDXFxcp+c3b95MY2OjW+e8Grvd/P3LxXtOunrvSV+XFBPCv98zntNnavjfT09zOK+KTXuK2ZpzlgVTElk8LYlAv8uXVCIicv2USyIiYjZ9MZssUQo0N7fvKX+lqwQAfHx8Oh37WebNm0d0dDQlJSU89thj/PKXvyQmJgaAnJwcfvCDH3Qce+HC9W1PYrMZhIcHXtc5elNIiL+nRzCVSeGBTBody4GT5by55ggnCs/z/vZ8Pt57hrtuHMJtswbj52OJ/5RERCxJuSQiImbTl7LJEp9kfH19AWhtbb3iMS0tLZ2O/Sw+Pj788pe/5MEHH2T//v3cdNNNJCUl0dzczJkzZwgLC2P+/Pls2LCBwMDr+0DvdLqorW28rnP0Bi8vGyEh/tTWNuFwmHclTU9JHBjAd76Yzt4T5fzvp6c5U97Am2uOsnrLaZbMTOGGCXHY+1BjKCLiacolERExG6tkU0iIf5evZrBEKdCVWwO6covBP5owYQKrVq3i97//Pdu2baOoqIjQ0FCWLl3Kv/3bv/HSSy8BMHDgwOuYvp2Zt6v4Rw6H01Lz9rZxqQMZkzKArCOlrNqaS0XNBd5cd5w1OwtYMjOFaaOisdnc20dURESuTLkkIiJm05eyyRKlQHJyMgBnz56ltbX1srcRFBYWdjq2qxISEvjRj3502edOnToF/N/6AyIX2WwG00ZHM3lEJFsPnOW97flU1FzglQ+PsjarkDtnDWbisIEYhsoBERERERExL0tc6zxixAi8vb1paWkhJyfnssfs2bMHgPHjx3fLe1ZVVbF//34Abrrppm45p/Q9di8bN06M57mHpvG5G1IJ9LNztqKBF1cd5Ok3szmcX+XpEUVERERERK7IEqVAUFAQM2fOBODtt9++5Pn8/HwyMzMBWLhwYbe85y9/+Uva2tqYNGkSo0eP7pZzSt/l6+3F4owkfvrQNG6dnoSvtxd55+r4rz/v52d/2sfps9e/g4WIiIiIiEh3s0QpAPDII49gGAarV6/mL3/5Cy6XC4CysjIee+wxnE4n8+bNY/jw4Z1eN3fuXObOncu6desuOefmzZs7rjC4qLa2lmeeeYa//OUvBAQEXPHWApHLCfDzZunsVJ57aBrz0uOxexkcLajmmTf38MI7ORSX13t6RBERERERkQ6G6+Knawt4/fXXee6553C5XMTExBAeHs6pU6doaWkhJSWFFStWEBER0ek1aWlpADz77LMsXbq003PPPPMMb775JkFBQcTFxQGQm5tLa2srYWFh/PrXv2by5MnXPbfD4aSqquG6z9PT7HYb4eGBVFc39JlFMzytoqaJ97bls/3QOVwuMICMUVEsmTWYyLC+s42JiEhPUC6JiIjZWCWbIiIC+9buAxfdd999pKWl8eqrr5KTk0NlZSWxsbEsXLiQ5cuXu7114Lx586isrOTgwYMUFhZiGAYpKSnMnTuX++67j/Dw8B76SqS/GBjqz/23jGDh1ETe3ZpL9vFydh4uZdfRMmaPi+W2GcmEBXVtG00REREREZHuZqkrBaxKVwrIRfkltazcnMuhvPYFCH3sNm6aFM+iqUkE+V+6q4aISH+mXBIREbOxSja5c6WASoFeoFJA/tHxwmr+d/NpTp+pBcDf187CqYncPCkePx9LXcAjItJjlEsiImI2VskmlQImo1JALsflcnHgdCUrN+d2LEAYEuDNLdOTuWF8HN52y6wDKiLSI5RLIiJiNlbJJpUCJqNSQK7G6XKx62gp727Jo+x8EwADQny5fWYK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",
+ "text/plain": [
+ "