{"cells":[{"cell_type":"code","execution_count":1,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":5160,"status":"ok","timestamp":1736139804723,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"AEp-GngME9rE","outputId":"7611629e-2a50-4d0b-8b39-0d7df2e829bd"},"outputs":[{"output_type":"stream","name":"stdout","text":["Collecting ijson\n"," Downloading ijson-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (21 kB)\n","Downloading ijson-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB)\n","\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/114.5 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m114.5/114.5 kB\u001b[0m \u001b[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hInstalling collected packages: ijson\n","Successfully installed ijson-3.3.0\n"]}],"source":["!pip install ijson"]},{"cell_type":"code","execution_count":2,"metadata":{"id":"AeFl8khUG2Wz","executionInfo":{"status":"ok","timestamp":1736139807341,"user_tz":-420,"elapsed":5,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["import json\n","import gzip\n","import ast"]},{"cell_type":"code","execution_count":3,"metadata":{"id":"jFE65xXVXe6r","executionInfo":{"status":"ok","timestamp":1736139811683,"user_tz":-420,"elapsed":1048,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["file_path = \"/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Datasets\"\n","files = [\n"," \"australian_user_reviews.json.gz\",\n"," \"australian_users_items.json.gz\",\n"," \"bundle_data.json.gz\",\n"," \"steam_games.json.gz\"\n","]"]},{"cell_type":"markdown","metadata":{"id":"_T8fPo2P6CFY"},"source":["### Load Data"]},{"cell_type":"code","execution_count":4,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":7174,"status":"ok","timestamp":1736139822277,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"t_HB8JApYOZr","outputId":"c42891cb-f2bb-4393-af4d-9d5f1c1be5cd"},"outputs":[{"output_type":"stream","name":"stdout","text":["Number of user 25799\n","Number of reviews 59305\n","{'user_id': 'LydiaMorley', 'user_url': 'http://steamcommunity.com/id/LydiaMorley', 'reviews': [{'funny': '1 person found this review funny', 'posted': 'Posted July 3.', 'last_edited': '', 'item_id': '273110', 'helpful': '1 of 2 people (50%) found this review helpful', 'recommend': True, 'review': 'had so much fun plaing this and collecting resources xD we won on my first try and killed final boss!'}, {'funny': '', 'posted': 'Posted July 20.', 'last_edited': '', 'item_id': '730', 'helpful': 'No ratings yet', 'recommend': True, 'review': ':D'}, {'funny': '', 'posted': 'Posted July 2.', 'last_edited': '', 'item_id': '440', 'helpful': 'No ratings yet', 'recommend': True, 'review': 'so much fun :D'}]}\n"]}],"source":["# Open the gzipped file\n","data_dict = None\n","count = {\n"," \"users\": 0,\n"," \"reviews\": 0\n","}\n","with gzip.open(f\"{file_path}/{files[0]}\", 'rt', encoding='utf-8') as f: # 'rt' is for text mode\n"," for i, line in enumerate(f):\n"," # Remove the trailing newline character\n"," cleaned_string = line.strip()\n"," try:\n"," data_dict = ast.literal_eval(cleaned_string)\n"," count[\"reviews\"] += len(data_dict[\"reviews\"])\n"," except (ValueError, SyntaxError) as e:\n"," print(f\"Failed to convert string to dictionary: {e}\")\n"," count[\"users\"] += 1\n","\n","print(f\"Number of user {count['users']}\")\n","print(f\"Number of reviews {count['reviews']}\")\n","print(data_dict)"]},{"cell_type":"markdown","metadata":{"id":"FfPC2AIt6HbT"},"source":["#### User Item Interactions"]},{"cell_type":"code","execution_count":5,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":41904,"status":"ok","timestamp":1736139864179,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"-N_F4Z2JZVgZ","outputId":"d1876272-80cd-44fe-8543-819c3023bcf7"},"outputs":[{"output_type":"stream","name":"stdout","text":["Number of user 10000\n","Number of items 1132592\n","{'user_id': '76561198030000787', 'items_count': 314, 'steam_id': '76561198030000787', 'user_url': 'http://steamcommunity.com/profiles/76561198030000787', 'items': [{'item_id': '4000', 'item_name': \"Garry's Mod\", 'playtime_forever': 32, 'playtime_2weeks': 0}, {'item_id': '2600', 'item_name': 'Vampire: The Masquerade - Bloodlines', 'playtime_forever': 1, 'playtime_2weeks': 0}, {'item_id': '2200', 'item_name': 'Quake III Arena', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '2310', 'item_name': 'Quake', 'playtime_forever': 26, 'playtime_2weeks': 0}, {'item_id': '2320', 'item_name': 'Quake II', 'playtime_forever': 5, 'playtime_2weeks': 0}, {'item_id': '2330', 'item_name': 'Quake II: The Reckoning', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '2340', 'item_name': 'Quake II: Ground Zero', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '2350', 'item_name': 'Quake III: Team Arena', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '9030', 'item_name': 'Quake Mission Pack 2: Dissolution of Eternity', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '9040', 'item_name': 'Quake Mission Pack 1: Scourge of Armagon', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '4760', 'item_name': 'Rome: Total War', 'playtime_forever': 124, 'playtime_2weeks': 0}, {'item_id': '4770', 'item_name': 'Rome: Total War - Alexander', 'playtime_forever': 5, 'playtime_2weeks': 0}, {'item_id': '18500', 'item_name': 'Defense Grid: The Awakening', 'playtime_forever': 486, 'playtime_2weeks': 0}, {'item_id': '17460', 'item_name': 'Mass Effect', 'playtime_forever': 1896, 'playtime_2weeks': 0}, {'item_id': '1250', 'item_name': 'Killing Floor', 'playtime_forever': 949, 'playtime_2weeks': 0}, {'item_id': '35420', 'item_name': 'Killing Floor Mod: Defence Alliance 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21680', 'item_name': 'Bionic Commando Rearmed', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21670', 'item_name': 'Bionic Commando', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '38400', 'item_name': 'Fallout', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '38410', 'item_name': 'Fallout 2', 'playtime_forever': 1, 'playtime_2weeks': 0}, {'item_id': '38420', 'item_name': 'Fallout Tactics', 'playtime_forever': 48, 'playtime_2weeks': 0}, {'item_id': '20900', 'item_name': 'The Witcher: Enhanced Edition', 'playtime_forever': 38, 'playtime_2weeks': 0}, {'item_id': '17450', 'item_name': 'Dragon Age: Origins', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '10180', 'item_name': 'Call of Duty: Modern Warfare 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '10190', 'item_name': 'Call of Duty: Modern Warfare 2 - Multiplayer', 'playtime_forever': 835, 'playtime_2weeks': 0}, {'item_id': '550', 'item_name': 'Left 4 Dead 2', 'playtime_forever': 683, 'playtime_2weeks': 0}, {'item_id': '223530', 'item_name': 'Left 4 Dead 2 Beta', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '22370', 'item_name': 'Fallout 3 - Game of the Year Edition', 'playtime_forever': 3, 'playtime_2weeks': 0}, {'item_id': '24980', 'item_name': 'Mass Effect 2', 'playtime_forever': 1837, 'playtime_2weeks': 0}, {'item_id': '33910', 'item_name': 'Arma 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '33930', 'item_name': 'Arma 2: Operation Arrowhead', 'playtime_forever': 57, 'playtime_2weeks': 0}, {'item_id': '219540', 'item_name': 'Arma 2: Operation Arrowhead Beta (Obsolete)', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '22380', 'item_name': 'Fallout: New Vegas', 'playtime_forever': 5078, 'playtime_2weeks': 0}, {'item_id': '42700', 'item_name': 'Call of Duty: Black Ops', 'playtime_forever': 537, 'playtime_2weeks': 0}, {'item_id': '42710', 'item_name': 'Call of Duty: Black Ops - Multiplayer', 'playtime_forever': 2037, 'playtime_2weeks': 0}, {'item_id': '47810', 'item_name': 'Dragon Age: Origins - Ultimate Edition', 'playtime_forever': 1522, 'playtime_2weeks': 0}, {'item_id': '78000', 'item_name': 'Bejeweled 3', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '56400', 'item_name': 'Warhammer® 40,000™: Dawn of War® II – Retribution™', 'playtime_forever': 917, 'playtime_2weeks': 0}, {'item_id': '48720', 'item_name': 'Mount & Blade: With Fire and Sword', 'playtime_forever': 424, 'playtime_2weeks': 0}, {'item_id': '20920', 'item_name': 'The Witcher 2: Assassins of Kings Enhanced Edition', 'playtime_forever': 2141, 'playtime_2weeks': 0}, {'item_id': '105600', 'item_name': 'Terraria', 'playtime_forever': 1807, 'playtime_2weeks': 0}, {'item_id': '17430', 'item_name': 'Need for Speed: Undercover', 'playtime_forever': 2, 'playtime_2weeks': 0}, {'item_id': '24740', 'item_name': 'Burnout Paradise: The Ultimate Box', 'playtime_forever': 48, 'playtime_2weeks': 0}, {'item_id': '24870', 'item_name': 'Need for Speed: SHIFT', 'playtime_forever': 102, 'playtime_2weeks': 0}, {'item_id': '47870', 'item_name': 'Need for Speed: Hot Pursuit', 'playtime_forever': 211, 'playtime_2weeks': 0}, {'item_id': '47920', 'item_name': 'Shift 2 Unleashed', 'playtime_forever': 7, 'playtime_2weeks': 0}, {'item_id': '33440', 'item_name': 'Driver San Francisco', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '72850', 'item_name': 'The Elder Scrolls V: Skyrim', 'playtime_forever': 10060, 'playtime_2weeks': 0}, {'item_id': '91310', 'item_name': 'Dead Island', 'playtime_forever': 1853, 'playtime_2weeks': 0}, {'item_id': '111400', 'item_name': 'Bunch Of Heroes', 'playtime_forever': 167, 'playtime_2weeks': 0}, {'item_id': '45770', 'item_name': 'Dead Rising 2: Off the Record', 'playtime_forever': 206, 'playtime_2weeks': 0}, {'item_id': '102600', 'item_name': 'Orcs Must Die!', 'playtime_forever': 209, 'playtime_2weeks': 0}, {'item_id': '48220', 'item_name': 'Might & Magic: Heroes VI', 'playtime_forever': 1314, 'playtime_2weeks': 0}, {'item_id': '110800', 'item_name': 'L.A. Noire', 'playtime_forever': 243, 'playtime_2weeks': 0}, {'item_id': '16450', 'item_name': 'F.E.A.R. 2: Project Origin', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21000', 'item_name': 'LEGO Batman: The Videogame', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21010', 'item_name': 'Watchmen: The End Is Nigh', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21030', 'item_name': 'Watchmen: The End Is Nigh Part 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21070', 'item_name': 'Wanted: Weapons of Fate', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21080', 'item_name': 'Terminator Salvation', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21090', 'item_name': 'F.E.A.R.', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21100', 'item_name': 'F.E.A.R. 3', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21110', 'item_name': 'F.E.A.R.: Extraction Point', 'playtime_forever': 4, 'playtime_2weeks': 0}, {'item_id': '21120', 'item_name': 'F.E.A.R.: Perseus Mandate', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '21130', 'item_name': 'Lego Harry Potter', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32800', 'item_name': 'The Lord of the Rings: War in the North', 'playtime_forever': 64, 'playtime_2weeks': 0}, {'item_id': '35140', 'item_name': 'Batman: Arkham Asylum GOTY Edition', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '57400', 'item_name': 'Batman: Arkham City™', 'playtime_forever': 1924, 'playtime_2weeks': 0}, {'item_id': '107100', 'item_name': 'Bastion', 'playtime_forever': 36, 'playtime_2weeks': 0}, {'item_id': '200260', 'item_name': 'Batman: Arkham City GOTY', 'playtime_forever': 18, 'playtime_2weeks': 0}, {'item_id': '205790', 'item_name': 'Dota 2 Test', 'playtime_forever': 1, 'playtime_2weeks': 0}, {'item_id': '3900', 'item_name': \"Sid Meier's Civilization IV\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '3910', 'item_name': \"Sid Meier's Civilization III: Complete\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '3920', 'item_name': \"Sid Meier's Pirates!\", 'playtime_forever': 91, 'playtime_2weeks': 0}, {'item_id': '3990', 'item_name': \"Sid Meier's Civilization IV: Warlords\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '7650', 'item_name': 'X-COM: Terror from the Deep', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '7660', 'item_name': 'X-COM: Apocalypse', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '7670', 'item_name': 'BioShock', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '7730', 'item_name': 'X-COM: Interceptor', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '7760', 'item_name': 'X-COM: UFO Defense', 'playtime_forever': 27, 'playtime_2weeks': 0}, {'item_id': '7770', 'item_name': 'X-COM: Enforcer', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '8800', 'item_name': \"Sid Meier's Civilization IV: Beyond the Sword\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '8850', 'item_name': 'BioShock 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '8880', 'item_name': 'Freedom Force', 'playtime_forever': 98, 'playtime_2weeks': 0}, {'item_id': '8890', 'item_name': 'Freedom Force vs. the 3rd Reich', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '8930', 'item_name': \"Sid Meier's Civilization V\", 'playtime_forever': 1591, 'playtime_2weeks': 0}, {'item_id': '8970', 'item_name': 'Axel & Pixel', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '8980', 'item_name': 'Borderlands', 'playtime_forever': 12, 'playtime_2weeks': 0}, {'item_id': '16810', 'item_name': \"Sid Meier's Civilization IV: Colonization\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '34440', 'item_name': \"Sid Meier's Civilization IV\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '34450', 'item_name': \"Sid Meier's Civilization IV: Warlords\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '34460', 'item_name': \"Sid Meier's Civilization IV: Beyond the Sword\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '40920', 'item_name': 'NBA 2K10', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '40930', 'item_name': 'The Misadventures of P.B. Winterbottom', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '40990', 'item_name': 'Mafia', 'playtime_forever': 21, 'playtime_2weeks': 0}, {'item_id': '50130', 'item_name': 'Mafia II', 'playtime_forever': 300, 'playtime_2weeks': 0}, {'item_id': '50310', 'item_name': 'MLB 2K11', 'playtime_forever': 9, 'playtime_2weeks': 0}, {'item_id': '57900', 'item_name': 'Duke Nukem Forever', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '65950', 'item_name': 'NBA 2K11', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '201020', 'item_name': 'NBA 2K12', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '409710', 'item_name': 'BioShock Remastered', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '409720', 'item_name': 'BioShock 2 Remastered', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '67370', 'item_name': 'The Darkness II', 'playtime_forever': 146, 'playtime_2weeks': 0}, {'item_id': '207610', 'item_name': 'The Walking Dead', 'playtime_forever': 457, 'playtime_2weeks': 0}, {'item_id': '97330', 'item_name': 'Magic: The Gathering - Duels of the Planeswalkers 2013', 'playtime_forever': 300, 'playtime_2weeks': 0}, {'item_id': '65800', 'item_name': 'Dungeon Defenders', 'playtime_forever': 4376, 'playtime_2weeks': 0}, {'item_id': '211420', 'item_name': 'Dark Souls: Prepare to Die Edition', 'playtime_forever': 71, 'playtime_2weeks': 0}, {'item_id': '730', 'item_name': 'Counter-Strike: Global Offensive', 'playtime_forever': 1900, 'playtime_2weeks': 0}, {'item_id': '204300', 'item_name': 'Awesomenauts', 'playtime_forever': 584, 'playtime_2weeks': 0}, {'item_id': '200170', 'item_name': 'Worms Revolution', 'playtime_forever': 423, 'playtime_2weeks': 0}, {'item_id': '217200', 'item_name': 'Worms Armageddon', 'playtime_forever': 4, 'playtime_2weeks': 0}, {'item_id': '204360', 'item_name': 'Castle Crashers', 'playtime_forever': 614, 'playtime_2weeks': 0}, {'item_id': '49520', 'item_name': 'Borderlands 2', 'playtime_forever': 3393, 'playtime_2weeks': 0}, {'item_id': '216890', 'item_name': 'Blood Bowl: Chaos Edition', 'playtime_forever': 846, 'playtime_2weeks': 0}, {'item_id': '200510', 'item_name': 'XCOM: Enemy Unknown', 'playtime_forever': 715, 'playtime_2weeks': 0}, {'item_id': '4920', 'item_name': 'Natural Selection 2', 'playtime_forever': 10, 'playtime_2weeks': 0}, {'item_id': '220240', 'item_name': 'Far Cry® 3', 'playtime_forever': 1336, 'playtime_2weeks': 0}, {'item_id': '219740', 'item_name': \"Don't Starve\", 'playtime_forever': 4806, 'playtime_2weeks': 0}, {'item_id': '322330', 'item_name': \"Don't Starve Together\", 'playtime_forever': 2, 'playtime_2weeks': 0}, {'item_id': '220440', 'item_name': 'DmC Devil May Cry', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '226700', 'item_name': 'Infestation: Survivor Stories Classic', 'playtime_forever': 22, 'playtime_2weeks': 0}, {'item_id': '4540', 'item_name': 'Titan Quest', 'playtime_forever': 40, 'playtime_2weeks': 0}, {'item_id': '4550', 'item_name': 'Titan Quest: Immortal Throne', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '4560', 'item_name': 'Company of Heroes', 'playtime_forever': 136, 'playtime_2weeks': 0}, {'item_id': '9340', 'item_name': 'Company of Heroes: Opposing Fronts', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '9350', 'item_name': 'Supreme Commander', 'playtime_forever': 15, 'playtime_2weeks': 0}, {'item_id': '9420', 'item_name': 'Supreme Commander: Forged Alliance', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '9480', 'item_name': 'Saints Row 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '15620', 'item_name': 'Warhammer® 40,000™: Dawn of War® II', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '20530', 'item_name': 'Red Faction', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '20550', 'item_name': 'Red Faction II', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '20570', 'item_name': 'Warhammer® 40,000™: Dawn of War® II - Chaos Rising™', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '43110', 'item_name': 'Metro 2033', 'playtime_forever': 28, 'playtime_2weeks': 0}, {'item_id': '50620', 'item_name': 'Darksiders', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '50650', 'item_name': 'Darksiders II', 'playtime_forever': 1066, 'playtime_2weeks': 0}, {'item_id': '55100', 'item_name': 'Homefront', 'playtime_forever': 1, 'playtime_2weeks': 0}, {'item_id': '55110', 'item_name': 'Red Faction: Armageddon', 'playtime_forever': 15, 'playtime_2weeks': 0}, {'item_id': '55140', 'item_name': 'MX vs. ATV Reflex', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '55150', 'item_name': 'Warhammer 40,000 Space Marine', 'playtime_forever': 78, 'playtime_2weeks': 0}, {'item_id': '55230', 'item_name': 'Saints Row: The Third', 'playtime_forever': 1720, 'playtime_2weeks': 0}, {'item_id': '96800', 'item_name': 'Nexuiz', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '216370', 'item_name': 'Nexuiz Beta', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '225760', 'item_name': 'Nexuiz STUPID Mode', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '228200', 'item_name': 'Company of Heroes (New Steam Version)', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '475150', 'item_name': 'Titan Quest Anniversary Edition', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '228280', 'item_name': \"Baldur's Gate: Enhanced Edition\", 'playtime_forever': 481, 'playtime_2weeks': 0}, {'item_id': '11020', 'item_name': 'TrackMania Nations Forever', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '200210', 'item_name': 'Realm of the Mad God', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '205710', 'item_name': 'EverQuest Free-to-Play', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '207230', 'item_name': 'Archeblade', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '208090', 'item_name': 'Loadout', 'playtime_forever': 140, 'playtime_2weeks': 0}, {'item_id': '212500', 'item_name': 'The Lord of the Rings Online™', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '218230', 'item_name': 'PlanetSide 2', 'playtime_forever': 2808, 'playtime_2weeks': 0}, {'item_id': '230410', 'item_name': 'Warframe', 'playtime_forever': 252, 'playtime_2weeks': 0}, {'item_id': '236390', 'item_name': 'War Thunder', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '238960', 'item_name': 'Path of Exile', 'playtime_forever': 3579, 'playtime_2weeks': 0}, {'item_id': '243870', 'item_name': \"Tom Clancy's Ghost Recon Phantoms - NA\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '263500', 'item_name': 'Dragons and Titans', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '39120', 'item_name': 'RIFT', 'playtime_forever': 2866, 'playtime_2weeks': 0}, {'item_id': '242720', 'item_name': 'GunZ 2: The Second Duel', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '250420', 'item_name': '8BitMMO', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '262410', 'item_name': 'World of Guns: Gun Disassembly', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '265630', 'item_name': 'Fistful of Frags', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '272060', 'item_name': 'Serena', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '202090', 'item_name': 'Magicka: Wizard Wars', 'playtime_forever': 12, 'playtime_2weeks': 0}, {'item_id': '224260', 'item_name': 'No More Room in Hell', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '226320', 'item_name': 'Marvel Heroes 2016', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '239220', 'item_name': 'The Mighty Quest For Epic Loot', 'playtime_forever': 223, 'playtime_2weeks': 0}, {'item_id': '241640', 'item_name': 'Haunted Memories', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '245550', 'item_name': 'Free to Play', 'playtime_forever': 80, 'playtime_2weeks': 0}, {'item_id': '343450', 'item_name': 'Free To Play (Streaming)', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '231200', 'item_name': 'Kentucky Route Zero', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '224580', 'item_name': 'Arma 2: DayZ Mod', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '221040', 'item_name': 'Resident Evil 6 / Biohazard 6', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '6000', 'item_name': 'STAR WARS™ Republic Commando', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '6020', 'item_name': 'STAR WARS™ Jedi Knight: Jedi Academy™', 'playtime_forever': 4, 'playtime_2weeks': 0}, {'item_id': '6030', 'item_name': 'STAR WARS™ Jedi Knight II: Jedi Outcast™', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '6060', 'item_name': 'STAR WARS™ Battlefront™ II', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32350', 'item_name': 'STAR WARS™ Starfighter™', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32370', 'item_name': 'STAR WARS™: Knights of the Old Republic™', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32380', 'item_name': 'STAR WARS™ Jedi Knight: Dark Forces II', 'playtime_forever': 3, 'playtime_2weeks': 0}, {'item_id': '32390', 'item_name': 'STAR WARS™ Jedi Knight: Mysteries of the Sith™', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32400', 'item_name': 'STAR WARS™: Dark Forces', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32420', 'item_name': 'STAR WARS™: The Clone Wars - Republic Heroes™', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32430', 'item_name': 'STAR WARS™: The Force Unleashed™ Ultimate Sith Edition', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32470', 'item_name': 'STAR WARS™ Empire at War: Gold Pack', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '32500', 'item_name': 'STAR WARS™: The Force Unleashed™ II', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '208580', 'item_name': 'STAR WARS™ Knights of the Old Republic™ II: The Sith Lords™', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '225260', 'item_name': 'Brütal Legend', 'playtime_forever': 41, 'playtime_2weeks': 0}, {'item_id': '233450', 'item_name': 'Prison Architect', 'playtime_forever': 99, 'playtime_2weeks': 0}, {'item_id': '8870', 'item_name': 'BioShock Infinite', 'playtime_forever': 365, 'playtime_2weeks': 0}, {'item_id': '224600', 'item_name': 'Defiance', 'playtime_forever': 6899, 'playtime_2weeks': 0}, {'item_id': '216250', 'item_name': 'Dead Island Riptide', 'playtime_forever': 1342, 'playtime_2weeks': 0}, {'item_id': '222480', 'item_name': 'Resident Evil Revelations / Biohazard Revelations', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '228300', 'item_name': 'Remember Me', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '35720', 'item_name': 'Trine 2', 'playtime_forever': 53, 'playtime_2weeks': 0}, {'item_id': '242760', 'item_name': 'The Forest', 'playtime_forever': 1677, 'playtime_2weeks': 0}, {'item_id': '206420', 'item_name': 'Saints Row IV', 'playtime_forever': 2402, 'playtime_2weeks': 0}, {'item_id': '213850', 'item_name': 'Magic 2014 ', 'playtime_forever': 861, 'playtime_2weeks': 0}, {'item_id': '244810', 'item_name': 'Foul Play', 'playtime_forever': 19, 'playtime_2weeks': 0}, {'item_id': '244850', 'item_name': 'Space Engineers', 'playtime_forever': 60, 'playtime_2weeks': 0}, {'item_id': '6880', 'item_name': 'Just Cause', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '8190', 'item_name': 'Just Cause 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '239030', 'item_name': 'Papers, Please', 'playtime_forever': 98, 'playtime_2weeks': 0}, {'item_id': '218620', 'item_name': 'PAYDAY 2', 'playtime_forever': 2741, 'playtime_2weeks': 0}, {'item_id': '209000', 'item_name': 'Batman™: Arkham Origins', 'playtime_forever': 2369, 'playtime_2weeks': 0}, {'item_id': '239820', 'item_name': 'Game Dev Tycoon', 'playtime_forever': 448, 'playtime_2weeks': 0}, {'item_id': '250320', 'item_name': 'The Wolf Among Us', 'playtime_forever': 668, 'playtime_2weeks': 0}, {'item_id': '219640', 'item_name': 'Chivalry: Medieval Warfare', 'playtime_forever': 34, 'playtime_2weeks': 0}, {'item_id': '232210', 'item_name': 'Patch testing for Chivalry', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '208610', 'item_name': 'Skullgirls ∞Endless Beta∞', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '245170', 'item_name': 'Skullgirls', 'playtime_forever': 212, 'playtime_2weeks': 0}, {'item_id': '228560', 'item_name': 'Teenage Mutant Ninja Turtles: Out of the Shadows', 'playtime_forever': 1237, 'playtime_2weeks': 0}, {'item_id': '251570', 'item_name': '7 Days to Die', 'playtime_forever': 3034, 'playtime_2weeks': 0}, {'item_id': '252350', 'item_name': 'Double Dragon Neon', 'playtime_forever': 264, 'playtime_2weeks': 0}, {'item_id': '252490', 'item_name': 'Rust', 'playtime_forever': 3483, 'playtime_2weeks': 0}, {'item_id': '252950', 'item_name': 'Rocket League', 'playtime_forever': 915, 'playtime_2weeks': 0}, {'item_id': '241540', 'item_name': 'State of Decay', 'playtime_forever': 2099, 'playtime_2weeks': 0}, {'item_id': '237890', 'item_name': 'Agarest: Generations of War', 'playtime_forever': 135, 'playtime_2weeks': 0}, {'item_id': '242050', 'item_name': \"Assassin's Creed IV Black Flag\", 'playtime_forever': 6221, 'playtime_2weeks': 0}, {'item_id': '234530', 'item_name': 'War of the Vikings', 'playtime_forever': 2509, 'playtime_2weeks': 0}, {'item_id': '257350', 'item_name': \"Baldur's Gate II: Enhanced Edition\", 'playtime_forever': 1, 'playtime_2weeks': 0}, {'item_id': '243470', 'item_name': 'Watch_Dogs', 'playtime_forever': 2043, 'playtime_2weeks': 0}, {'item_id': '247730', 'item_name': 'Nether', 'playtime_forever': 3114, 'playtime_2weeks': 0}, {'item_id': '260730', 'item_name': 'Desperados - Wanted Dead or Alive', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '261030', 'item_name': 'The Walking Dead: Season Two', 'playtime_forever': 637, 'playtime_2weeks': 0}, {'item_id': '242700', 'item_name': 'Injustice: Gods Among Us Ultimate Edition', 'playtime_forever': 368, 'playtime_2weeks': 0}, {'item_id': '262060', 'item_name': 'Darkest Dungeon', 'playtime_forever': 332, 'playtime_2weeks': 0}, {'item_id': '263440', 'item_name': 'The Stomping Land', 'playtime_forever': 142, 'playtime_2weeks': 0}, {'item_id': '108600', 'item_name': 'Project Zomboid', 'playtime_forever': 160, 'playtime_2weeks': 0}, {'item_id': '211820', 'item_name': 'Starbound', 'playtime_forever': 137, 'playtime_2weeks': 0}, {'item_id': '367540', 'item_name': 'Starbound - Unstable', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '41900', 'item_name': \"The Bard's Tale\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '240760', 'item_name': 'Wasteland 2', 'playtime_forever': 710, 'playtime_2weeks': 0}, {'item_id': '259130', 'item_name': 'Wasteland 1 - The Original Classic', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '404730', 'item_name': \"Wasteland 2: Director's Cut\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '221100', 'item_name': 'DayZ', 'playtime_forever': 131, 'playtime_2weeks': 0}, {'item_id': '202170', 'item_name': 'Sleeping Dogs™', 'playtime_forever': 1322, 'playtime_2weeks': 0}, {'item_id': '268870', 'item_name': 'Satellite Reign', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '239840', 'item_name': 'Dead State', 'playtime_forever': 718, 'playtime_2weeks': 0}, {'item_id': '271590', 'item_name': 'Grand Theft Auto V', 'playtime_forever': 6740, 'playtime_2weeks': 0}, {'item_id': '273110', 'item_name': 'Counter-Strike Nexon: Zombies', 'playtime_forever': 6, 'playtime_2weeks': 0}, {'item_id': '274310', 'item_name': 'Always Sometimes Monsters', 'playtime_forever': 501, 'playtime_2weeks': 0}, {'item_id': '213670', 'item_name': 'South Park™: The Stick of Truth™', 'playtime_forever': 1105, 'playtime_2weeks': 0}, {'item_id': '278080', 'item_name': 'DYNASTY WARRIORS 8: Xtreme Legends Complete Edition', 'playtime_forever': 671, 'playtime_2weeks': 0}, {'item_id': '48700', 'item_name': 'Mount & Blade: Warband', 'playtime_forever': 871, 'playtime_2weeks': 0}, {'item_id': '254700', 'item_name': 'resident evil 4 / biohazard 4', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '235210', 'item_name': 'Strider', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '290140', 'item_name': 'Echo of Soul', 'playtime_forever': 44, 'playtime_2weeks': 0}, {'item_id': '290300', 'item_name': 'Rebel Galaxy', 'playtime_forever': 96, 'playtime_2weeks': 0}, {'item_id': '293780', 'item_name': 'Crawl', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '295110', 'item_name': 'H1Z1: Just Survive', 'playtime_forever': 4778, 'playtime_2weeks': 0}, {'item_id': '362300', 'item_name': 'H1Z1: Just Survive Test Server', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '433850', 'item_name': 'H1Z1: King of the Kill', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '439700', 'item_name': 'H1Z1: King of the Kill Test Server', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '222900', 'item_name': 'Dead Island: Epidemic', 'playtime_forever': 268, 'playtime_2weeks': 0}, {'item_id': '300550', 'item_name': \"Shadowrun: Dragonfall - Director's Cut\", 'playtime_forever': 1056, 'playtime_2weeks': 0}, {'item_id': '300570', 'item_name': 'Infinifactory', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '300580', 'item_name': 'GALAK-Z', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '301520', 'item_name': 'Robocraft', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '302270', 'item_name': 'Dungeon Defenders Eternity', 'playtime_forever': 551, 'playtime_2weeks': 0}, {'item_id': '304050', 'item_name': 'Trove', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '304030', 'item_name': 'ArcheAge', 'playtime_forever': 12249, 'playtime_2weeks': 0}, {'item_id': '304930', 'item_name': 'Unturned', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '244630', 'item_name': 'NEOTOKYO°', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '312990', 'item_name': 'The Expendabros', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '227940', 'item_name': 'Heroes & Generals', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '265590', 'item_name': 'The Red Solstice', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '241930', 'item_name': 'Middle-earth: Shadow of Mordor', 'playtime_forever': 1494, 'playtime_2weeks': 0}, {'item_id': '265550', 'item_name': 'Dead Rising 3', 'playtime_forever': 171, 'playtime_2weeks': 0}, {'item_id': '226720', 'item_name': 'Lost Planet 3', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '323370', 'item_name': 'TERA', 'playtime_forever': 1785, 'playtime_2weeks': 0}, {'item_id': '327510', 'item_name': 'WASTED', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '261640', 'item_name': 'Borderlands: The Pre-Sequel', 'playtime_forever': 2462, 'playtime_2weeks': 0}, {'item_id': '330840', 'item_name': 'Game of Thrones - A Telltale Games Series', 'playtime_forever': 719, 'playtime_2weeks': 0}, {'item_id': '17570', 'item_name': 'Pirates, Vikings, & Knights II', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '305620', 'item_name': 'The Long Dark', 'playtime_forever': 404, 'playtime_2weeks': 0}, {'item_id': '323470', 'item_name': 'DRAGON BALL XENOVERSE', 'playtime_forever': 920, 'playtime_2weeks': 0}, {'item_id': '333930', 'item_name': 'Dirty Bomb', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '249050', 'item_name': 'Dungeon of the Endless', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '236110', 'item_name': 'Dungeon Defenders II', 'playtime_forever': 88, 'playtime_2weeks': 0}, {'item_id': '337850', 'item_name': 'Avernum 2: Crystal Souls', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '339120', 'item_name': \"Fork Parker's Holiday Profit Hike\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '342200', 'item_name': 'MechWarrior Online', 'playtime_forever': 699, 'playtime_2weeks': 0}, {'item_id': '314660', 'item_name': \"Oddworld: New 'n' Tasty\", 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '345520', 'item_name': 'Infinite Crisis™', 'playtime_forever': 406, 'playtime_2weeks': 0}, {'item_id': '346110', 'item_name': 'ARK: Survival Evolved', 'playtime_forever': 23434, 'playtime_2weeks': 0}, {'item_id': '407530', 'item_name': 'ARK: Survival Of The Fittest', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '347160', 'item_name': 'Steredenn', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '287290', 'item_name': 'Resident Evil Revelations 2 / Biohazard Revelations 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '339280', 'item_name': 'Strife', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '351570', 'item_name': 'Killing Floor: Uncovered', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '232090', 'item_name': 'Killing Floor 2', 'playtime_forever': 1171, 'playtime_2weeks': 0}, {'item_id': '232150', 'item_name': 'Killing Floor 2 - SDK', 'playtime_forever': 2, 'playtime_2weeks': 0}, {'item_id': '362070', 'item_name': 'Metal Reaper Online', 'playtime_forever': 8, 'playtime_2weeks': 0}, {'item_id': '47780', 'item_name': 'Dead Space 2', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '362680', 'item_name': 'Fran Bow', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '329460', 'item_name': 'JumpJet Rex', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '365590', 'item_name': \"Tom Clancy's The Division\", 'playtime_forever': 10442, 'playtime_2weeks': 0}, {'item_id': '329050', 'item_name': 'Devil May Cry® 4 Special Edition', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '370360', 'item_name': 'TIS-100', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '292030', 'item_name': 'The Witcher 3: Wild Hunt', 'playtime_forever': 2140, 'playtime_2weeks': 0}, {'item_id': '373480', 'item_name': '1993 Space Machine', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '377160', 'item_name': 'Fallout 4', 'playtime_forever': 7194, 'playtime_2weeks': 0}, {'item_id': '386070', 'item_name': 'Planetary Annihilation: TITANS', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '386360', 'item_name': 'SMITE', 'playtime_forever': 498, 'playtime_2weeks': 0}, {'item_id': '234140', 'item_name': 'Mad Max', 'playtime_forever': 1123, 'playtime_2weeks': 0}, {'item_id': '393420', 'item_name': 'Hurtworld', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '445900', 'item_name': 'Hurtworld SDK', 'playtime_forever': 0, 'playtime_2weeks': 0}, {'item_id': '394310', 'item_name': 'Punch Club', 'playtime_forever': 416, 'playtime_2weeks': 0}, {'item_id': '413150', 'item_name': 'Stardew Valley', 'playtime_forever': 1321, 'playtime_2weeks': 0}, {'item_id': '268500', 'item_name': 'XCOM 2', 'playtime_forever': 620, 'playtime_2weeks': 0}, {'item_id': '444560', 'item_name': 'Agent Origins: Escape', 'playtime_forever': 9, 'playtime_2weeks': 0}, {'item_id': '275850', 'item_name': \"No Man's Sky\", 'playtime_forever': 564, 'playtime_2weeks': 0}]}\n"]}],"source":["# Open the gzipped file\n","user_item_interactions = []\n","data_dict = None\n","count = {\n"," \"users\": 0,\n"," \"items\": 0\n","}\n","with gzip.open(f\"{file_path}/{files[1]}\", 'rt', encoding='utf-8') as f: # 'rt' is for text mode\n"," for i, line in enumerate(f):\n"," # Remove the trailing newline character\n"," cleaned_string = line.strip()\n"," try:\n"," data_dict = ast.literal_eval(cleaned_string)\n"," if data_dict[\"items_count\"] > 0:\n"," count[\"items\"] += data_dict[\"items_count\"]\n"," count[\"users\"] += 1\n"," user_item_interactions.append(data_dict)\n"," except (ValueError, SyntaxError) as e:\n"," print(f\"Failed to convert string to dictionary: {e}\")\n","\n"," if count[\"users\"] == 10000:\n"," break\n","\n","print(f\"Number of user {count['users']}\")\n","print(f\"Number of items {count['items']}\")\n","print(data_dict)"]},{"cell_type":"code","execution_count":7,"metadata":{"id":"dpwRuG_JLs1R","executionInfo":{"status":"ok","timestamp":1736139956629,"user_tz":-420,"elapsed":291,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["user_item_interactions_dict = {}\n","for user in user_item_interactions:\n"," user_item_interactions_dict[user[\"user_id\"]] = user"]},{"cell_type":"markdown","metadata":{"id":"i9xjn3xt6KnA"},"source":["#### Bundle Data"]},{"cell_type":"code","execution_count":8,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":991,"status":"ok","timestamp":1736139962233,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"lymblLpNcrfu","outputId":"37be6571-65e6-4e5a-d2e3-dc56988b0320"},"outputs":[{"output_type":"stream","name":"stdout","text":["Number of bundle 615\n","Number of items 3525\n","{'bundle_final_price': '$4.77', 'bundle_url': 'http://store.steampowered.com/bundle/594/?utm_source=SteamDB&utm_medium=SteamDB&utm_campaign=SteamDB%20Bundles%20Page', 'bundle_price': '$5.97', 'bundle_name': 'The Ninjahtic Series', 'bundle_id': '594', 'items': [{'genre': 'Action, Adventure, Indie', 'item_id': '385230', 'discounted_price': '$1.99', 'item_url': 'http://store.steampowered.com/app/385230', 'item_name': 'Ninjahtic'}, {'genre': 'Action, Adventure, Indie', 'item_id': '387880', 'discounted_price': '$1.99', 'item_url': 'http://store.steampowered.com/app/387880', 'item_name': 'Ninjahtic Mind Tricks'}, {'genre': 'Action, Indie', 'item_id': '454130', 'discounted_price': '$1.99', 'item_url': 'http://store.steampowered.com/app/454130', 'item_name': 'Nil-Ninjahtic: Ronin'}], 'bundle_discount': '20%'}\n"]}],"source":["# Open the gzipped file\n","bundle_data = []\n","data_dict = None\n","count = {\n"," \"bundles\": 0,\n"," \"items\": 0\n","}\n","with gzip.open(f\"{file_path}/{files[2]}\", 'rt', encoding='utf-8') as f: # 'rt' is for text mode\n"," for i, line in enumerate(f):\n"," # Remove the trailing newline character\n"," cleaned_string = line.strip()\n"," try:\n"," data_dict = ast.literal_eval(cleaned_string)\n"," count[\"items\"] += len(data_dict[\"items\"])\n"," count[\"bundles\"] += 1\n"," bundle_data.append(data_dict)\n"," except (ValueError, SyntaxError) as e:\n"," print(f\"Failed to convert string to dictionary: {e}\")\n","\n","print(f\"Number of bundle {count['bundles']}\")\n","print(f\"Number of items {count['items']}\")\n","print(data_dict)"]},{"cell_type":"code","execution_count":9,"metadata":{"id":"_qeUSVyE4mNL","executionInfo":{"status":"ok","timestamp":1736139964129,"user_tz":-420,"elapsed":306,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["bundle_data_dict = {}\n","for bundle in bundle_data:\n"," bundle_data_dict[bundle[\"bundle_id\"]] = bundle"]},{"cell_type":"markdown","metadata":{"id":"gwgqwSLF6Mdr"},"source":["#### Item Dictionary"]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":5876,"status":"ok","timestamp":1736139971228,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"x1DG03kNdCEm","outputId":"1345cd79-fcc5-4e34-dae5-6b99ac0227ad"},"outputs":[{"output_type":"stream","name":"stdout","text":["Number of items 32133\n","{'app_name': 'Maze Run VR', 'sentiment': 'Positive', 'tags': ['Early Access', 'Adventure', 'Indie', 'Action', 'Simulation', 'VR'], 'url': 'http://store.steampowered.com/app/681550/Maze_Run_VR/', 'price': 4.99, 'reviews_url': 'http://steamcommunity.com/app/681550/reviews/?browsefilter=mostrecent&p=1', 'id': '681550', 'early_access': True, 'specs': ['Single-player', 'Stats', 'Steam Leaderboards', 'HTC Vive', 'Oculus Rift', 'Tracked Motion Controllers', 'Standing', 'Room-Scale']}\n"]}],"source":["# Open the gzipped file\n","items_dictionary = {}\n","data_dict = None\n","count = {\n"," \"items\": 0\n","}\n","with gzip.open(f\"{file_path}/{files[3]}\", 'rt', encoding='utf-8') as f: # 'rt' is for text mode\n"," for i, line in enumerate(f):\n"," # Remove the trailing newline character\n"," cleaned_string = line.strip()\n"," try:\n"," data_dict = ast.literal_eval(cleaned_string)\n"," if 'id' in data_dict:\n"," items_dictionary[data_dict['id']] = data_dict\n"," count[\"items\"] += 1\n"," except (ValueError, SyntaxError) as e:\n"," print(f\"Failed to convert string to dictionary: {e}\")\n","\n","print(f\"Number of items {count['items']}\")\n","print(data_dict)"]},{"cell_type":"code","execution_count":11,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":4,"status":"ok","timestamp":1736139971228,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"jp2NZYvQojiv","outputId":"df1d8be7-d360-42ab-aba9-4dfa59b36389"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'app_name': 'Maze Run VR',\n"," 'sentiment': 'Positive',\n"," 'tags': ['Early Access', 'Adventure', 'Indie', 'Action', 'Simulation', 'VR'],\n"," 'url': 'http://store.steampowered.com/app/681550/Maze_Run_VR/',\n"," 'price': 4.99,\n"," 'reviews_url': 'http://steamcommunity.com/app/681550/reviews/?browsefilter=mostrecent&p=1',\n"," 'id': '681550',\n"," 'early_access': True,\n"," 'specs': ['Single-player',\n"," 'Stats',\n"," 'Steam Leaderboards',\n"," 'HTC Vive',\n"," 'Oculus Rift',\n"," 'Tracked Motion Controllers',\n"," 'Standing',\n"," 'Room-Scale']}"]},"metadata":{},"execution_count":11}],"source":["data_dict"]},{"cell_type":"markdown","metadata":{"id":"9gZBAta66SW4"},"source":["#### Bundle Item IDS"]},{"cell_type":"code","execution_count":12,"metadata":{"id":"MC9PXLOSZAOj","executionInfo":{"status":"ok","timestamp":1736139971701,"user_tz":-420,"elapsed":475,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["# prompt: Give me list of item_id for each bundles with pairs like this {bundle_id: (item_id1, item_id2, ....)} dimana (item_id1, item_id2, ....) tipenya set\n","bundle_item_ids = {}\n","for bundle in bundle_data:\n"," set_item_id = []\n"," for item in bundle[\"items\"]:\n"," set_item_id.append(item[\"item_id\"])\n"," bundle_item_ids[bundle[\"bundle_id\"]] = set(set_item_id)"]},{"cell_type":"code","execution_count":null,"metadata":{"executionInfo":{"elapsed":9,"status":"aborted","timestamp":1736139864181,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"UfDaMcYRaNfM"},"outputs":[],"source":["bundle_item_ids['594']"]},{"cell_type":"markdown","metadata":{"id":"ZPirDD6r6Uqc"},"source":["#### User Item Interactions Item IDS"]},{"cell_type":"code","execution_count":13,"metadata":{"id":"I9xpS5bcahNI","executionInfo":{"status":"ok","timestamp":1736139976130,"user_tz":-420,"elapsed":605,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["# prompt: Give me list of item_id for each user_item_interactions with pairs like this {user_id: (item_id1, item_id2, ....)} dimana (item_id1, item_id2, ....) tipenya set\n","user_item_interactions_item_ids = {}\n","for user_id, user_data in user_item_interactions_dict.items():\n"," user_item_interactions_item_ids[user_id] = set(item[\"item_id\"] for item in user_data[\"items\"])"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true,"executionInfo":{"elapsed":9,"status":"aborted","timestamp":1736139864182,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"_DI-wC9Ya3xK"},"outputs":[],"source":["user_item_interactions_item_ids[\"76561198030000787\"]"]},{"cell_type":"markdown","metadata":{"id":"4C0l9VqZ6YO9"},"source":["#### Matching Bundles"]},{"cell_type":"code","execution_count":14,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"collapsed":true,"executionInfo":{"elapsed":4808,"status":"ok","timestamp":1736139983015,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"rKHK4Lm8a-1C","outputId":"ec16cb60-2b78-4f19-951b-fd1781d7af9c"},"outputs":[{"output_type":"stream","name":"stdout","text":["User 76561197970982479:\n"," Bundle 1482: ['38720', '38700']\n"," Bundle 1468: ['11450']\n"," Bundle 279: ['303390']\n"," Bundle 355: ['55140']\n"," Bundle 1418: ['3590']\n"," Bundle 803: ['263980']\n"," Bundle 396: ['263980']\n"," Bundle 1350: ['337000']\n"," Bundle 1351: ['337000']\n"," Bundle 1352: ['337000']\n"," Bundle 1100: ['222880']\n"," Bundle 1246: ['24980', '17460']\n"," Bundle 813: ['263980', '295690', '461640']\n"," Bundle 1243: ['24960']\n"," Bundle 951: ['47700']\n"," Bundle 1009: ['24740']\n"," Bundle 1229: ['11450']\n"," Bundle 384: ['35460']\n"," Bundle 1158: ['379720']\n"," Bundle 364: ['295690']\n"," Bundle 362: ['203160', '8190', '6910', '238010']\n"," Bundle 983: ['237930', '107100']\n"," Bundle 575: ['8930']\n"," Bundle 823: ['41070']\n"," Bundle 957: ['316790', '3830', '232790']\n"," Bundle 804: ['295690']\n"," Bundle 398: ['461640']\n"," Bundle 403: ['461640']\n"," Bundle 380: ['257350', '228280']\n"," Bundle 760: ['260230']\n"," Bundle 757: ['242050']\n"," Bundle 383: ['31230', '207610', '261030', '31270', '31240', '250320', '31250', '31220', '31280', '31260']\n"," Bundle 727: ['20920', '20900']\n"," Bundle 379: ['257350', '228280']\n"," Bundle 690: ['35700']\n"," Bundle 712: ['8980', '49520']\n"," Bundle 721: ['35700']\n"," Bundle 572: ['7670', '8870', '8850']\n"," Bundle 574: ['8930']\n"," Bundle 635: ['72850']\n"," Bundle 612: ['1250']\n"," Bundle 616: ['35460', '1250', '232090']\n"," Bundle 139: ['250900']\n"," Bundle 145: ['232790']\n"," Bundle 157: ['41070']\n"," Bundle 231: ['20', '220', '420', '50', '70', '130']\n"," Bundle 232: ['20', '550', '220', '70', '240', '500', '730', '620', '60', '420', '400', '300', '40', '50', '130', '30']\n"," Bundle 233: ['500', '550']\n"," Bundle 234: ['620', '400']\n"," Bundle 235: ['60', '30', '40']\n"," Bundle 236: ['730', '240']\n"," Bundle 237: ['20', '50', '70', '130']\n"," Bundle 240: ['300', '240', '320']\n"," Bundle 250: ['204300']\n"," Bundle 257: ['8980', '49520']\n"," Bundle 292: ['289130']\n"," Bundle 307: ['42910']\n"," Bundle 312: ['322330', '219740']\n"," Bundle 335: ['237990']\n"," Bundle 382: ['222730']\n"," Bundle 448: ['289130']\n"]}],"source":["# prompt: Tolong di cek saya ingin melihat list of user_item_interaction_item_ids dan bundle_item_ids berikan saya intersection untuk kombinasi bundle mana saja yang memiliki item_id yang sama pada user_item_interaction\n","\n","# Find the intersection of bundle_item_ids and user_item_interactions_item_ids\n","matching_bundles = {}\n","for user_id, user_items in user_item_interactions_item_ids.items():\n"," for bundle_id, bundle_items in bundle_item_ids.items():\n"," intersection = user_items.intersection(bundle_items)\n"," if intersection:\n"," if user_id not in matching_bundles:\n"," matching_bundles[user_id] = {}\n"," matching_bundles[user_id][bundle_id] = list(intersection)\n","\n","# Print the results\n","for user_id, bundles in matching_bundles.items():\n"," print(f\"User {user_id}:\")\n"," for bundle_id, common_items in bundles.items():\n"," print(f\" Bundle {bundle_id}: {common_items}\")\n"," break"]},{"cell_type":"code","execution_count":15,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"collapsed":true,"executionInfo":{"elapsed":501,"status":"ok","timestamp":1736139983514,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"4ryLWGRucnjo","outputId":"696fb061-aa82-4c76-b8d4-5a1feecfd380"},"outputs":[{"output_type":"stream","name":"stdout","text":["User 76561197970982479:\n"," Bundle 232: ['20', '550', '220', '70', '240', '500', '730', '620', '60', '420', '400', '300', '40', '50', '130', '30']\n"," Bundle 383: ['31230', '207610', '261030', '31270', '31240', '250320', '31250', '31220', '31280', '31260']\n"," Bundle 231: ['20', '220', '420', '50', '70', '130']\n"," Bundle 362: ['203160', '8190', '6910', '238010']\n"," Bundle 237: ['20', '50', '70', '130']\n"," Bundle 813: ['263980', '295690', '461640']\n"," Bundle 957: ['316790', '3830', '232790']\n"," Bundle 572: ['7670', '8870', '8850']\n"," Bundle 616: ['35460', '1250', '232090']\n"," Bundle 235: ['60', '30', '40']\n"," Bundle 240: ['300', '240', '320']\n"," Bundle 1482: ['38720', '38700']\n"," Bundle 1246: ['24980', '17460']\n"," Bundle 983: ['237930', '107100']\n"," Bundle 380: ['257350', '228280']\n"," Bundle 727: ['20920', '20900']\n"," Bundle 379: ['257350', '228280']\n"," Bundle 712: ['8980', '49520']\n"," Bundle 233: ['500', '550']\n"," Bundle 234: ['620', '400']\n"," Bundle 236: ['730', '240']\n"," Bundle 257: ['8980', '49520']\n"," Bundle 312: ['322330', '219740']\n"," Bundle 1468: ['11450']\n"," Bundle 279: ['303390']\n"," Bundle 355: ['55140']\n"," Bundle 1418: ['3590']\n"," Bundle 803: ['263980']\n"," Bundle 396: ['263980']\n"," Bundle 1350: ['337000']\n"," Bundle 1351: ['337000']\n"," Bundle 1352: ['337000']\n"," Bundle 1100: ['222880']\n"," Bundle 1243: ['24960']\n"," Bundle 951: ['47700']\n"," Bundle 1009: ['24740']\n"," Bundle 1229: ['11450']\n"," Bundle 384: ['35460']\n"," Bundle 1158: ['379720']\n"," Bundle 364: ['295690']\n"," Bundle 575: ['8930']\n"," Bundle 823: ['41070']\n"," Bundle 804: ['295690']\n"," Bundle 398: ['461640']\n"," Bundle 403: ['461640']\n"," Bundle 760: ['260230']\n"," Bundle 757: ['242050']\n"," Bundle 690: ['35700']\n"," Bundle 721: ['35700']\n"," Bundle 574: ['8930']\n"," Bundle 635: ['72850']\n"," Bundle 612: ['1250']\n"," Bundle 139: ['250900']\n"," Bundle 145: ['232790']\n"," Bundle 157: ['41070']\n"," Bundle 250: ['204300']\n"," Bundle 292: ['289130']\n"," Bundle 307: ['42910']\n"," Bundle 335: ['237990']\n"," Bundle 382: ['222730']\n"," Bundle 448: ['289130']\n"]}],"source":["# prompt: Sekarang sorting bundle yang memiliki jumlah intersection terbanyak pada matching_bundles untuk setiap user\n","\n","# Sort the bundles based on the number of intersections for each user\n","sorted_matching_bundles = {}\n","for user_id, bundles in matching_bundles.items():\n"," sorted_bundles = dict(sorted(bundles.items(), key=lambda item: len(item[1]), reverse=True))\n"," sorted_matching_bundles[user_id] = sorted_bundles\n","\n","# Print the sorted results\n","for user_id, bundles in sorted_matching_bundles.items():\n"," print(f\"User {user_id}:\")\n"," for bundle_id, common_items in bundles.items():\n"," print(f\" Bundle {bundle_id}: {common_items}\")\n"," break"]},{"cell_type":"markdown","metadata":{"id":"hwKhM8yzYnsW"},"source":["### Utilities"]},{"cell_type":"code","execution_count":16,"metadata":{"id":"XgcEyRkMYpj-","executionInfo":{"status":"ok","timestamp":1736139983515,"user_tz":-420,"elapsed":3,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["def get_real_price(price_str):\n"," if \"free\" in f\"{price_str}\".lower() or \"install\" in f\"{price_str}\".lower() or \"use\" in f\"{price_str}\".lower() or \"play\" in f\"{price_str}\".lower() or \"third\" in f\"{price_str}\".lower():\n"," price = 0.0\n"," else:\n"," price = float(price_str)\n"," return price"]},{"cell_type":"code","execution_count":17,"metadata":{"id":"ZhsHNsBjY3jE","executionInfo":{"status":"ok","timestamp":1736139983839,"user_tz":-420,"elapsed":1,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["import re\n","import numpy as np\n","\n","def remove_currency_symbol(price_str):\n"," \"\"\"Removes currency symbols ($, £, €, etc.) from a price string.\n","\n"," Args:\n"," price_str: The price string to clean.\n","\n"," Returns:\n"," The cleaned price string without currency symbols, or None if no numeric part is found.\n"," \"\"\"\n"," # Use a regular expression to find any numeric part of the string, allowing for decimal points\n"," match = re.search(r\"[-+]?\\d*\\.?\\d+\", price_str)\n"," if match:\n"," return float(match.group(0))\n"," else:\n"," return 0.0"]},{"cell_type":"markdown","metadata":{"id":"7npa4n706w4K"},"source":["#### Bundle Count"]},{"cell_type":"code","execution_count":18,"metadata":{"id":"Q162du8fie9w","executionInfo":{"status":"ok","timestamp":1736140031501,"user_tz":-420,"elapsed":638,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}}},"outputs":[],"source":["# prompt: Give me function that count how many number of items in each bundle on bundle_item_ids and sorted_matching_bundles for each users\n","\n","def count_bundle_items(bundle_item_ids, sorted_matching_bundles):\n"," \"\"\"\n"," Counts the number of items in each bundle for each user.\n","\n"," Args:\n"," bundle_item_ids (dict): A dictionary where keys are bundle IDs and values are sets of item IDs in the bundle.\n"," sorted_matching_bundles (dict): A dictionary where keys are user IDs and values are dictionaries of matching bundles.\n"," The inner dictionaries have bundle IDs as keys and lists of common item IDs as values.\n","\n"," Returns:\n"," dict: A dictionary where keys are user IDs, and values are dictionaries.\n"," The inner dictionaries have bundle IDs as keys and the number of items in that bundle as values.\n"," \"\"\"\n"," bundle_item_counts = {}\n"," for user_id, bundles in sorted_matching_bundles.items():\n"," bundle_item_counts[user_id] = {}\n"," for bundle_id, common_items in bundles.items():\n"," bundle_item_counts[user_id][bundle_id] = {\n"," 'intersection_item_count': len(common_items),\n"," 'original_item_count': len(bundle_item_ids.get(bundle_id, [])),\n"," 'item_ids': common_items\n"," }\n"," return bundle_item_counts\n","\n","# Example usage (assuming you have bundle_item_ids and sorted_matching_bundles from your previous code):\n","bundle_counts = count_bundle_items(bundle_item_ids, sorted_matching_bundles)"]},{"cell_type":"code","execution_count":19,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":282,"status":"ok","timestamp":1736140033827,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"1GhAKkqSkOPF","outputId":"fb4f6757-fc65-409c-b0fc-c0e63b42b646"},"outputs":[{"output_type":"stream","name":"stdout","text":["User 76561197970982479:\n"," Bundle 232: {'intersection_item_count': 16, 'original_item_count': 19, 'item_ids': ['20', '550', '220', '70', '240', '500', '730', '620', '60', '420', '400', '300', '40', '50', '130', '30']} items\n"," Bundle 383: {'intersection_item_count': 10, 'original_item_count': 48, 'item_ids': ['31230', '207610', '261030', '31270', '31240', '250320', '31250', '31220', '31280', '31260']} items\n"," Bundle 231: {'intersection_item_count': 6, 'original_item_count': 8, 'item_ids': ['20', '220', '420', '50', '70', '130']} items\n"," Bundle 362: {'intersection_item_count': 4, 'original_item_count': 89, 'item_ids': ['203160', '8190', '6910', '238010']} items\n"," Bundle 237: {'intersection_item_count': 4, 'original_item_count': 4, 'item_ids': ['20', '50', '70', '130']} items\n"," Bundle 813: {'intersection_item_count': 3, 'original_item_count': 24, 'item_ids': ['263980', '295690', '461640']} items\n"," Bundle 957: {'intersection_item_count': 3, 'original_item_count': 17, 'item_ids': ['316790', '3830', '232790']} items\n"," Bundle 572: {'intersection_item_count': 3, 'original_item_count': 3, 'item_ids': ['7670', '8870', '8850']} items\n"," Bundle 616: {'intersection_item_count': 3, 'original_item_count': 27, 'item_ids': ['35460', '1250', '232090']} items\n"," Bundle 235: {'intersection_item_count': 3, 'original_item_count': 4, 'item_ids': ['60', '30', '40']} items\n"," Bundle 240: {'intersection_item_count': 3, 'original_item_count': 3, 'item_ids': ['300', '240', '320']} items\n"," Bundle 1482: {'intersection_item_count': 2, 'original_item_count': 4, 'item_ids': ['38720', '38700']} items\n"," Bundle 1246: {'intersection_item_count': 2, 'original_item_count': 4, 'item_ids': ['24980', '17460']} items\n"," Bundle 983: {'intersection_item_count': 2, 'original_item_count': 4, 'item_ids': ['237930', '107100']} items\n"," Bundle 380: {'intersection_item_count': 2, 'original_item_count': 8, 'item_ids': ['257350', '228280']} items\n"," Bundle 727: {'intersection_item_count': 2, 'original_item_count': 3, 'item_ids': ['20920', '20900']} items\n"," Bundle 379: {'intersection_item_count': 2, 'original_item_count': 3, 'item_ids': ['257350', '228280']} items\n"," Bundle 712: {'intersection_item_count': 2, 'original_item_count': 8, 'item_ids': ['8980', '49520']} items\n"," Bundle 233: {'intersection_item_count': 2, 'original_item_count': 2, 'item_ids': ['500', '550']} items\n"," Bundle 234: {'intersection_item_count': 2, 'original_item_count': 2, 'item_ids': ['620', '400']} items\n"," Bundle 236: {'intersection_item_count': 2, 'original_item_count': 3, 'item_ids': ['730', '240']} items\n"," Bundle 257: {'intersection_item_count': 2, 'original_item_count': 7, 'item_ids': ['8980', '49520']} items\n"," Bundle 312: {'intersection_item_count': 2, 'original_item_count': 4, 'item_ids': ['322330', '219740']} items\n"," Bundle 1468: {'intersection_item_count': 1, 'original_item_count': 56, 'item_ids': ['11450']} items\n"," Bundle 279: {'intersection_item_count': 1, 'original_item_count': 6, 'item_ids': ['303390']} items\n"," Bundle 355: {'intersection_item_count': 1, 'original_item_count': 36, 'item_ids': ['55140']} items\n"," Bundle 1418: {'intersection_item_count': 1, 'original_item_count': 23, 'item_ids': ['3590']} items\n"," Bundle 803: {'intersection_item_count': 1, 'original_item_count': 9, 'item_ids': ['263980']} items\n"," Bundle 396: {'intersection_item_count': 1, 'original_item_count': 3, 'item_ids': ['263980']} items\n"," Bundle 1350: {'intersection_item_count': 1, 'original_item_count': 2, 'item_ids': ['337000']} items\n"," Bundle 1351: {'intersection_item_count': 1, 'original_item_count': 2, 'item_ids': ['337000']} items\n"," Bundle 1352: {'intersection_item_count': 1, 'original_item_count': 3, 'item_ids': ['337000']} items\n"," Bundle 1100: {'intersection_item_count': 1, 'original_item_count': 2, 'item_ids': ['222880']} items\n"," Bundle 1243: {'intersection_item_count': 1, 'original_item_count': 3, 'item_ids': ['24960']} items\n"," Bundle 951: {'intersection_item_count': 1, 'original_item_count': 5, 'item_ids': ['47700']} items\n"," Bundle 1009: {'intersection_item_count': 1, 'original_item_count': 5, 'item_ids': ['24740']} items\n"," Bundle 1229: {'intersection_item_count': 1, 'original_item_count': 4, 'item_ids': ['11450']} items\n"," Bundle 384: {'intersection_item_count': 1, 'original_item_count': 2, 'item_ids': ['35460']} items\n"," Bundle 1158: {'intersection_item_count': 1, 'original_item_count': 2, 'item_ids': ['379720']} items\n"," Bundle 364: {'intersection_item_count': 1, 'original_item_count': 4, 'item_ids': ['295690']} items\n"," Bundle 575: {'intersection_item_count': 1, 'original_item_count': 16, 'item_ids': ['8930']} items\n"," Bundle 823: {'intersection_item_count': 1, 'original_item_count': 3, 'item_ids': ['41070']} items\n"," Bundle 804: {'intersection_item_count': 1, 'original_item_count': 3, 'item_ids': ['295690']} items\n"," Bundle 398: {'intersection_item_count': 1, 'original_item_count': 6, 'item_ids': ['461640']} items\n"," Bundle 403: {'intersection_item_count': 1, 'original_item_count': 9, 'item_ids': ['461640']} items\n"," Bundle 760: {'intersection_item_count': 1, 'original_item_count': 7, 'item_ids': ['260230']} items\n"," Bundle 757: {'intersection_item_count': 1, 'original_item_count': 4, 'item_ids': ['242050']} items\n"," Bundle 690: {'intersection_item_count': 1, 'original_item_count': 6, 'item_ids': ['35700']} items\n"," Bundle 721: {'intersection_item_count': 1, 'original_item_count': 3, 'item_ids': ['35700']} items\n"," Bundle 574: {'intersection_item_count': 1, 'original_item_count': 5, 'item_ids': ['8930']} items\n"," Bundle 635: {'intersection_item_count': 1, 'original_item_count': 4, 'item_ids': ['72850']} items\n"," Bundle 612: {'intersection_item_count': 1, 'original_item_count': 22, 'item_ids': ['1250']} items\n"," Bundle 139: {'intersection_item_count': 1, 'original_item_count': 2, 'item_ids': ['250900']} items\n"," Bundle 145: {'intersection_item_count': 1, 'original_item_count': 3, 'item_ids': ['232790']} items\n"," Bundle 157: {'intersection_item_count': 1, 'original_item_count': 6, 'item_ids': ['41070']} items\n"," Bundle 250: {'intersection_item_count': 1, 'original_item_count': 68, 'item_ids': ['204300']} items\n"," Bundle 292: {'intersection_item_count': 1, 'original_item_count': 12, 'item_ids': ['289130']} items\n"," Bundle 307: {'intersection_item_count': 1, 'original_item_count': 28, 'item_ids': ['42910']} items\n"," Bundle 335: {'intersection_item_count': 1, 'original_item_count': 4, 'item_ids': ['237990']} items\n"," Bundle 382: {'intersection_item_count': 1, 'original_item_count': 3, 'item_ids': ['222730']} items\n"," Bundle 448: {'intersection_item_count': 1, 'original_item_count': 7, 'item_ids': ['289130']} items\n"]}],"source":["# Print the results\n","for user_id, bundle_counts_per_user in bundle_counts.items():\n"," print(f\"User {user_id}:\")\n"," for bundle_id, item_count in bundle_counts_per_user.items():\n"," print(f\" Bundle {bundle_id}: {item_count} items\")\n"," break"]},{"cell_type":"code","execution_count":20,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":564},"executionInfo":{"elapsed":2738,"status":"ok","timestamp":1736140060020,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"ytZ2X9cDkVmz","outputId":"03493d0d-d249-4bff-a384-f437a21362fd"},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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Nkny9PTUxIkT7dpycqxf73fztb8z8+t3zCeffKKaNWuqSJEi8vT0VHBwsGbNmnXD7QduN5xpA5An3bp108svv6zvvvtOzz33XJZjdu3apVatWun+++/XuHHj5OLiogMHDmjdunWSpMqVK2vcuHEaNWqUevXqpYYNG0qS6tWrZy7jr7/+0mOPPabOnTvr6aeflq+vb7Z1TZw4UTabTUOHDlVSUpJmzpyp0NBQbd26NVdnbXJS29UMw9Djjz+u1atXKyIiQjVq1NC3336rwYMH648//tCMGTPsxv/000/64osv9OKLL6pIkSKaPXu22rdvryNHjqh48eLXreuff/5RkyZNdODAAfXp00eBgYFasmSJevToobNnz6pfv36qXLmyPvjgAw0YMEClS5fWwIEDJSnTP65z4qOPPtK5c+fUu3dv2Ww2TZkyRe3atdPvv/8uJycn9e7dW8ePH1dsbKw++OCDTJ/v3bu3Fi5cqJ49e6pv3746ePCg5syZoy1btmjdunV2ZywTEhLUpUsX9e7dW88995wqVqx4w2NI+jcYPv744/rpp5/Uq1cvVa5cWTt27NCMGTO0b98+LV261Bw7duxYjRkzRvXq1dO4cePk7OysjRs3atWqVWrevLlmzpypl156SR4eHhoxYoQkZXvMZWxb7dq1NWnSJJ08eVKzZs3SunXrtGXLFnl7e5tj09LSFBYWpjp16uj111/X999/r2nTpql8+fJ64YUXsv05LFy4UB4eHoqKipKHh4dWrVqlUaNGKSUlRVOnTrUbe+bMGT366KNq166dOnbsqM8++0xDhw5VcHCwHnvsMUn/HkfNmjXTkSNH1LdvX/n7++uDDz7QqlWrsq0jw9dff62AgADze3GtRo0aKSAgQCtWrMjU9+STTyooKEivvvpqpv/QuFqPHj306aefqlu3bqpbt67WrFmjli1b5qg+STpw4IA6dOigiIgIhYeH65133lGPHj1Us2ZNVa1aVdK/lwcuXbpUTz75pAIDA3Xy5Em9+eabaty4sXbv3i1/f/8cry8r7dq10759+/Txxx9rxowZKlGihKT/+y5OnDhRI0eOVMeOHfXss8/q1KlTeuONN9SoUaNMx8+ZM2fUqlUrde7cWU8++aTmz5+vzp07a9GiRerfv7+ef/55PfXUU5o6dao6dOigo0ePqkiRItetbdmyZZKU7b2uV8vNsZ4bN/M7JjY2Vl26dFGzZs3Ms4J79uzRunXr1K9fvzzVA1iWAQBZePfddw1JxqZNm647xsvLy3jggQfM96NHjzau/rUyY8YMQ5Jx6tSp6y5j06ZNhiTj3XffzdTXuHFjQ5IRHR2dZV/jxo3N96tXrzYkGffcc4+RkpJitn/66aeGJGPWrFlmW7ly5Yzw8PAbLjO72sLDw41y5cqZ75cuXWpIMiZMmGA3rkOHDobNZjMOHDhgtkkynJ2d7dq2bdtmSDLeeOONTOu62syZMw1Jxocffmi2Xbp0yQgJCTE8PDzstr1cuXJGy5Yts13e9cYePHjQkGQUL17cOH36tNn+1VdfGZKMr7/+2myLjIw0svrr5McffzQkGYsWLbJrj4mJydRerlw5Q5IRExNjNzYnx9AHH3xgODg4GD/++KNde3R0tCHJWLdunWEYhrF//37DwcHBaNu2rZGWlmY3Nj093fxz1apV7Y6DDBnH2OrVqw3D+He/+/j4GNWqVTP++ecfc9zy5csNScaoUaPMtvDwcEOSMW7cOLtlPvDAA0bNmjWvu20Z/v7770xtvXv3NgoXLmxcuHDBbMv4zrz//vtm28WLFw0/Pz+jffv2ZlvGcfTpp5+abampqUaFChXstjErZ8+eNSQZTzzxRLY1P/7444Yk85jM+P3QpUuXTGOv/d0RHx9vSDL69+9vN65Hjx6GJGP06NFmW8bvqoMHD5ptGcfT2rVrzbakpCTDxcXFGDhwoNl24cKFTMfCwYMHDRcXF7ufVcb3IavfBVfLOEaWLFlitk2dOjVTfYZhGIcOHTIcHR2NiRMn2rXv2LHDKFSokF17xs/1o48+Mtv27t1rSDIcHByMn3/+2Wz/9ttvc1TrAw88YHh5eWU7JkNujvVrf49muPZ3Zn78junXr5/h6elpXLlyJUfbAdzOuDwSQJ55eHhkO4tkxv+8fvXVV0pPT8/TOlxcXNSzZ88cj+/evbvd/y536NBBpUqV0jfffJOn9efUN998I0dHR/Xt29eufeDAgTIMQytXrrRrDw0NVfny5c33999/vzw9PfX777/fcD1+fn7q0qWL2ebk5KS+ffvq/PnzWrNmTT5szf/p1KmTihYtar7POLNyozqlfy+l8vLy0iOPPKI///zTfNWsWVMeHh5avXq13fjAwECFhYXZteXkGFqyZIkqV66sSpUq2a3n4YcfliRzPUuXLlV6erpGjRolBwf7v/7yMt385s2blZSUpBdffNHuXreWLVuqUqVKWZ5lev755+3eN2zYMEf78uqzxOfOndOff/6phg0b6u+//9bevXvtxnp4eOjpp5823zs7O+uhhx6yW88333yjUqVKqUOHDmZb4cKF1atXrxvWkvGdz+4sztX9KSkpdu3X7oOsZFwq/OKLL9q1Z0yGlBNVqlSxOxNYsmRJVaxY0W4/uLi4mMdCWlqa/vrrL/MS3F9//TXH68qLL774Qunp6erYsaPdcevn56egoKBM3w8PDw917tzZfF+xYkV5e3urcuXKqlOnjtme8ecbHVcpKSk3/BlmyMuxnlM38zvG29tbqampio2NzfP6gdsFoQ1Anp0/fz7bv/Q7deqk+vXr69lnn5Wvr686d+6sTz/9NFcB7p577snVpCNBQUF27202mypUqHBLn+EkSYcPH5a/v3+m/VG5cmWz/2ply5bNtIyiRYtmutcrq/UEBQVlCh3XW8/NurbOjH9c3ahOSdq/f7+Sk5Pl4+OjkiVL2r3Onz+vpKQku/GBgYGZlpGTY2j//v3atWtXpnXcd999kmSu57fffpODg0O+Tc6Ssa8rVqyYqa9SpUqZfhaurq6ZLlHNyc9c+vdS47Zt28rLy0uenp4qWbKkGcySk5PtxpYuXTpTCL12PYcPH1aFChUyjctqW66VcYzf6LEf1wt3Wf2cr3X48GE5ODhkGluhQoUbfjZDTr5j6enpmjFjhoKCguTi4qISJUqoZMmS2r59e6b9mt/2798vwzAUFBSU6djds2dPpu9HVj9XLy8vlSlTJlObdOPvqKenZ44f3ZLbYz03buZ3zIsvvqj77rtPjz32mEqXLq1nnnkmx/cGA7cb7mkDkCfHjh1TcnJytv+IcnNz09q1a7V69WqtWLFCMTExWrx4sR5++GF99913OZrx7VbMHni9syppaWn/2Sx011uPkc09PgXhZupMT0+Xj4+PFi1alGX/tQEmq591To6h9PR0BQcHa/r06Vmu59p/1BaUvB5bZ8+eVePGjeXp6alx48apfPnycnV11a+//qqhQ4dm+k+QW31seXl5qVSpUpke+XGt7du365577pGnp6dd+381I2hO9sOrr76qkSNH6plnntH48eNVrFgxOTg4qH///nm+OiCn0tPTZbPZtHLlyixr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xo1VtmxZPfbYY/r+++/1xx9/aMSIEebYgIAAjR8/Xt27d5enp6d69eqlQ4cOyWazaevWrea4ZcuWKSgoSK6urmratKnee+89u7M4CxculLe3tzl+zJgxqlGjhj744AMFBATIy8tLnTt31rlz58wxMTExatCggby9vVW8eHG1atVKv/32W563u0mTJjp8+LAGDBggm80mm81m9v30009q2LCh3NzcVKZMGfXt21epqal2+2HChAnq3r27PDw8VK5cOS1btkynTp3SE088IQ8PD91///3avHnzddf/999/q2fPnmrRooWWLVum0NBQBQYGqk6dOnr99df15ptvmmPXrFmjhx56SC4uLipVqpSGDRumK1eu2NVz7RnDGjVqaMyYMeZ7m82mt99+W23btlXhwoUVFBSkZcuWSfr30tKmTZtKkooWLSqbzaYePXrkZbdaEqENAAAAt63Tp0/r22+/1Ysvvig3Nze7Pj8/P3Xt2lWLFy+WYRhm++uvv67q1atry5YtWZ4NOnjwoDp06KA2bdpo27Zt6t27t13wu57ffvtNS5cu1fLly7V8+XKtWbNGr732mtmfmpqqqKgobd68WXFxcXJwcFDbtm2Vnp6ep23/4osvVLp0aY0bN04nTpzQiRMnzDoeffRRtW/fXtu3b9fixYv1008/qU+fPnafnzFjhurXr68tW7aoZcuW6tatm7p3766nn35av/76q8qXL6/u3bvb7burffvtt/rzzz81ZMiQLPszQu0ff/yhFi1aqHbt2tq2bZvmz5+v//3vf5owYUKut3ns2LHq2LGjtm/frhYtWqhr1646ffq0ypQpo88//1ySlJCQoBMnTmjWrFm5Xr5VMREJAAAAblv79++XYRiqXLlylv2VK1fWmTNndOrUKfNyxocfflgDBw40xxw6dMjuM2+++aYqVqyoqVOnSpIqVqyonTt3auLEidnWkp6eroULF6pIkSKSpG7duikuLs78XPv27e3Gv/POOypZsqR2796dq/vpMhQrVkyOjo4qUqSI/Pz8zPZJkyapa9eu5r1vQUFBmj17tho3bqz58+fL1dVVktSiRQv17t1bkjRq1CjNnz9ftWvX1pNPPilJGjp0qEJCQnTy5Em75WfYv3+/JKlSpUrZ1jlv3jyVKVNGc+bMkc1mU6VKlXT8+HENHTpUo0aNkoNDzs8j9ejRQ126dJEkvfrqq5o9e7Z++eUXPfrooypWrJgkycfHx+4s6J2AM20AAAC47V3vbFBWatWqlW1/QkKCateubdf20EMP3XC5AQEBZmCTpFKlSikpKcl8v3//fnXp0kX33nuvPD09FRAQIEk6cuRIjmvPiW3btmnhwoXy8PAwX2FhYUpPT9fBgwfNcffff7/5Z19fX0lScHBwprart+FqOd3ne/bsUUhIiN3lm/Xr19f58+d17NixnG/YNTW7u7vL09PzuvXdSTjTBgAAgNtWhQoVZLPZtGfPHrVt2zZT/549e1S0aFGVLFnSbHN3d78ltTg5Odm9t9lsdpc+tm7dWuXKldNbb70lf39/paenq1q1arp06VK+1nH+/Hn17t1bffv2zdRXtmzZLOvNCFRZtV3v8s377rtPkrR3716FhITcVM0ODg6ZQuDly5czjbvRPr5TcaYNAAAAt63ixYvrkUce0bx58/TPP//Y9SUmJmrRokXq1KmT3VmeG6lYsWKmCTg2bdp0U3X+9ddfSkhI0CuvvKJmzZqZl23eLGdnZ6Wlpdm1Pfjgg9q9e7cqVKiQ6eXs7HzT68zQvHlzlShRQlOmTMmyP2PSlsqVK2vDhg12oWzdunUqUqSISpcuLUkqWbKkeU+eJKWkpNidFcyJjG27dn/cCQhtAAAAuK3NmTNHFy9eVFhYmNauXaujR48qJiZGjzzyiO65554b3ot2rd69e2vv3r0aOnSo9u3bp08//VQLFy6UpFyFv6sVLVpUxYsX14IFC3TgwAGtWrVKUVFReVrW1QICArR27Vr98ccf+vPPPyX9ey/a+vXr1adPH23dulX79+/XV199lWkikpvl7u6ut99+WytWrNDjjz+u77//XocOHdLmzZs1ZMgQPf/885KkF198UUePHtVLL72kvXv36quvvtLo0aMVFRVl3s/28MMP64MPPtCPP/6oHTt2KDw8XI6Ojrmqp1y5crLZbFq+fLlOnTql8+fP5+v2FiQujwQAAED2mg4v6AqyFRQUpM2bN2v06NHq2LGjTp8+LT8/P7Vp00ajR482J6jIqcDAQH322WcaOHCgZs2apZCQEI0YMUIvvPCCXFxc8lSjg4ODPvnkE/Xt21fVqlVTxYoVNXv2bDVp0iRPy8swbtw49e7dW+XLl9fFixdlGIbuv/9+rVmzRiNGjFDDhg1lGIbKly+vTp063dS6svLEE09o/fr1mjRpkp566imlpKSoTJkyevjhh83ZIe+55x598803Gjx4sKpXr65ixYopIiJCr7zyirmc4cOH6+DBg2rVqpW8vLw0fvz4XJ9pu+eeezR27FgNGzZMPXv2VPfu3c2wfbuzGbm5azOfrV27VlOnTlV8fLxOnDihL7/8Um3atLEbs2fPHg0dOlRr1qzRlStXVKVKFX3++efm9bgXLlzQwIED9cknn5j/wzJv3jzzxknp35s7X3jhBa1evVoeHh4KDw/XpEmT7B6g+MMPPygqKkq7du1SmTJl9Morr2R6tsPcuXM1depUJSYmqnr16nrjjTdydFNqhpSUFHl5eSk5OVmenp6532H5bEZs/jylfsAj9+XLcgAAQMG5cOGCDh48qMDAQHN2QfyfiRMnKjo6WkePHi3oUnAbye57lZtsUKCXR6ampqp69eqaO3dulv2//fabGjRooEqVKumHH37Q9u3bNXLkSLsNHjBggL7++mstWbJEa9as0fHjx9WuXTuzPy0tTS1bttSlS5e0fv16vffee1q4cKFGjRpljjl48KBatmyppk2bauvWrerfv7+effZZffvtt+aYxYsXKyoqSqNHj9avv/6q6tWrKyws7K6YrQYAAOBuM2/ePG3atEm///67PvjgA02dOlXh4eEFXRbuUgV6pu1qNpst05m2zp07y8nJSR988EGWn0lOTlbJkiX10UcfqUOHDpL+nb0m42bHunXrauXKlWrVqpWOHz9unn2Ljo7W0KFDderUKTk7O2vo0KFasWKFdu7cabfus2fPKiYmRpJUp04d1a5dW3PmzJH07yw6ZcqU0UsvvaRhw4blaBs50wYAAKyKM232BgwYoMWLF+v06dMqW7asunXrpuHDh9tdqQXcyB1xpi076enpWrFihe677z6FhYXJx8dHderU0dKlS80x8fHxunz5skJDQ822SpUqqWzZstqwYYMkacOGDQoODra7XDIsLEwpKSnatWuXOebqZWSMyVjGpUuXFB8fbzfGwcFBoaGh5pisXLx4USkpKXYvAAAAWN+MGTN0/PhxXbhwQfv27dPIkSMJbCgwlg1tSUlJOn/+vF577TU9+uij+u6779S2bVu1a9dOa9askfTvNK7Ozs6Znnju6+urxMREc8zVgS2jP6MvuzEpKSn6559/9OeffyotLS3LMRnLyMqk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kF577bVMZ+EAAAAAAHmXb6FN+ndykuPHj+fnIgEAAADgrpane9qWLVtm994wDJ04cUJz5sxR/fr186UwAAAAAEAeQ1ubNm3s3ttsNpUsWVIPP/ywpk2blh91AQAAAACUx9CWnp6e33UAAAAAALKQr/e0AQAAAADyV57OtEVFReV47PTp0/OyCgAAAACA8hjatmzZoi1btujy5cuqWLGiJGnfvn1ydHTUgw8+aI6z2Wz5UyUAAAAA3KXyFNpat26tIkWK6L333lPRokUl/fvA7Z49e6phw4YaOHBgvhYJAAAAAHerPN3TNm3aNE2aNMkMbJJUtGhRTZgwgdkjAQAAACAf5Sm0paSk6NSpU5naT506pXPnzt10UQAAAACAf+UptLVt21Y9e/bUF198oWPHjunYsWP6/PPPFRERoXbt2uV3jQAAAABw18rTPW3R0dEaNGiQnnrqKV2+fPnfBRUqpIiICE2dOjVfCwQAAACAu1meQlvhwoU1b948TZ06Vb/99pskqXz58nJ3d8/X4gAAAADgbndTD9c+ceKETpw4oaCgILm7u8swjPyqCwAAAACgPIa2v/76S82aNdN9992nFi1a6MSJE5KkiIgIpvsHAAAAgHyUp9A2YMAAOTk56ciRIypcuLDZ3qlTJ8XExORbcWlpaRo5cqQCAwPl5uam8uXLa/z48XZn9AzD0KhRo1SqVCm5ubkpNDRU+/fvt1vO6dOn1bVrV3l6esrb21sRERE6f/683Zjt27erYcOGcnV1VZkyZTRlypRM9SxZskSVKlWSq6urgoOD9c033+TbtgIAAABAVvIU2r777jtNnjxZpUuXtmsPCgrS4cOH86UwSZo8ebLmz5+vOXPmaM+ePZo8ebKmTJmiN954wxwzZcoUzZ49W9HR0dq4caPc3d0VFhamCxcumGO6du2qXbt2KTY2VsuXL9fatWvVq1cvsz8lJUXNmzdXuXLlFB8fr6lTp2rMmDFasGCBOWb9+vXq0qWLIiIitGXLFrVp00Zt2rTRzp078217AQAAAOBaeQptqampdmfYMpw+fVouLi43XVSG9evX64knnlDLli0VEBCgDh06qHnz5vrll18k/XuWbebMmXrllVf0xBNP6P7779f777+v48ePa+nSpZKkPXv2KCYmRm+//bbq1KmjBg0a6I033tAnn3yi48ePS5IWLVqkS5cu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\n"},"metadata":{}}],"source":["# prompt: Sekarang berikan saya distribusi dari intersection_item_count dan original_item_count dalam satu chart\n","\n","import matplotlib.pyplot as plt\n","\n","# Extract intersection and original item counts\n","intersection_counts = []\n","original_counts = []\n","\n","for user_id, bundle_counts_per_user in bundle_counts.items():\n"," for bundle_id, item_count in bundle_counts_per_user.items():\n"," intersection_counts.append(item_count['intersection_item_count'])\n"," original_counts.append(item_count['original_item_count'])\n","\n","# Create the plot\n","plt.figure(figsize=(10, 6))\n","plt.hist(intersection_counts, bins=20, alpha=0.5, label='Intersection Item Count')\n","plt.hist(original_counts, bins=20, alpha=0.5, label='Original Item Count')\n","plt.xlabel('Number of Items')\n","plt.ylabel('Frequency')\n","plt.title('Distribution of Intersection and Original Item Counts')\n","plt.legend(loc='upper right')\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"5sFp1ocn63tC"},"source":["#### Generate Persona"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":13639,"status":"ok","timestamp":1735296046250,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"c6uTIFQkk58e","outputId":"e28a2c0e-1052-4ff9-a777-3d00ec186a94"},"outputs":[{"output_type":"stream","name":"stdout","text":["Tag Frequencies:\n"," user_id tag frequency\n","808797 phrostb Indie 831\n","784206 mayshowganmore Indie 691\n","808678 phrostb Action 688\n","808681 phrostb Adventure 683\n","808903 phrostb Singleplayer 681\n","... ... ... ...\n","679256 crispymemesmantheyremyfavourite Dungeon Crawler 1\n","318953 76561198077199736 Dark 1\n","318952 76561198077199736 Cyberpunk 1\n","679259 crispymemesmantheyremyfavourite Exploration 1\n","275606 76561198068985504 God Game 1\n","\n","[874351 rows x 3 columns]\n","\n","Spec Frequencies:\n"]},{"output_type":"execute_result","data":{"text/plain":[" user_id spec frequency\n","163862 phrostb Single-player 1222\n","137678 chidvd Single-player 967\n","163894 piepai Single-player 964\n","159080 mayshowganmore Single-player 933\n","163868 phrostb Steam Trading Cards 863\n","... ... ... ...\n","24937 76561198041362390 Seated 1\n","24940 76561198041362390 Standing 1\n","24947 76561198041362390 Tracked Motion Controllers 1\n","137892 chocodude Oculus Rift 1\n","64482 76561198076069088 Single-player 1\n","\n","[176110 rows x 3 columns]"],"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
user_idspecfrequency
163862phrostbSingle-player1222
137678chidvdSingle-player967
163894piepaiSingle-player964
159080mayshowganmoreSingle-player933
163868phrostbSteam Trading Cards863
............
2493776561198041362390Seated1
2494076561198041362390Standing1
2494776561198041362390Tracked Motion Controllers1
137892chocodudeOculus Rift1
6448276561198076069088Single-player1
\n","

176110 rows × 3 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","\n","
\n"," \n"," \n"," \n","
\n","\n","
\n","
\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"spec_freq_df"}},"metadata":{},"execution_count":22}],"source":["# prompt: Dari sorted_matching_bundles hitung frequency tags dan specs dari setiap item pada bundle yang dimiliki user dan urutkan jumlah frequency tag dan spec secara desc sehingga saya bisa mengetahui persona pengguna terhadap tags dan specs tertentu pada bundle, catatan tag dan spec jangan digabung frekuensinya bedakan storage\n","\n","import pandas as pd\n","\n","def analyze_user_persona(sorted_matching_bundles, items_dictionary):\n"," \"\"\"\n"," Analyzes user personas based on the frequency of tags and specs in their matching bundles.\n","\n"," Args:\n"," sorted_matching_bundles (dict): A dictionary of sorted matching bundles for each user.\n"," items_dictionary (dict): A dictionary of items with their respective tags and specs.\n","\n"," Returns:\n"," tuple: Two pandas DataFrames, one for tag frequencies and one for spec frequencies.\n"," Each DataFrame has columns for 'user_id', 'tag/spec', and 'frequency'.\n"," \"\"\"\n","\n"," user_tag_frequencies = []\n"," user_spec_frequencies = []\n","\n"," for user_id, bundles in sorted_matching_bundles.items():\n"," for bundle_id, item_ids in bundles.items():\n"," for item_id in item_ids:\n"," if item_id in items_dictionary:\n"," item_data = items_dictionary[item_id]\n"," if 'tags' in item_data:\n"," for tag in item_data['tags']:\n"," user_tag_frequencies.append({'user_id': user_id, 'tag': tag, 'bundle_id': bundle_id})\n"," if 'specs' in item_data:\n"," for spec in item_data['specs']:\n"," user_spec_frequencies.append({'user_id': user_id, 'spec': spec, 'bundle_id': bundle_id})\n","\n"," tag_df = pd.DataFrame(user_tag_frequencies)\n"," spec_df = pd.DataFrame(user_spec_frequencies)\n","\n"," # Aggregate and sort frequencies\n"," tag_freq_df = tag_df.groupby(['user_id', 'tag']).size().reset_index(name='frequency').sort_values(by='frequency', ascending=False)\n"," spec_freq_df = spec_df.groupby(['user_id', 'spec']).size().reset_index(name='frequency').sort_values(by='frequency', ascending=False)\n","\n"," return tag_freq_df, spec_freq_df\n","\n","# Example usage\n","tag_freq_df, spec_freq_df = analyze_user_persona(sorted_matching_bundles, items_dictionary)\n","print(\"Tag Frequencies:\")\n","print(tag_freq_df)\n","\n","print(\"\\nSpec Frequencies:\")\n","spec_freq_df"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":47047,"status":"ok","timestamp":1735296093292,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"JWxKpld6swCx","outputId":"e1247dce-00e4-4f9f-d961-82212a60e154"},"outputs":[{"output_type":"stream","name":"stdout","text":["User 76561197970982479:\n"," Bundle 232:\n"," Max playtime item: 23532\n"," Average playtime: 3419.1\n"," 25th Quartile: 370.5\n"," 75th Quartile: 1758.25\n"," Bundle 383:\n"," Max playtime item: 798\n"," Average playtime: 428.4\n"," 25th Quartile: 206.0\n"," 75th Quartile: 567.0\n"," Bundle 231:\n"," Max playtime item: 696\n"," Average playtime: 509.5\n"," 25th Quartile: 416.25\n"," 75th Quartile: 602.75\n"," Bundle 362:\n"," Max playtime item: 3083\n"," Average playtime: 2648.0\n"," 25th Quartile: 2430.5\n"," 75th Quartile: 2884.0\n"," Bundle 957:\n"," Max playtime item: 333\n"," Average playtime: 197.0\n"," 25th Quartile: 129.0\n"," 75th Quartile: 274.5\n"," Bundle 572:\n"," Max playtime item: 2084\n"," Average playtime: 1407.0\n"," 25th Quartile: 1068.5\n"," 75th Quartile: 1794.0\n"," Bundle 616:\n"," Max playtime item: 10006\n"," Average playtime: 8250.0\n"," 25th Quartile: 7372.0\n"," 75th Quartile: 9128.0\n"," Bundle 235:\n"," Max playtime item: 7\n"," Average playtime: 7.0\n"," 25th Quartile: 7.0\n"," 75th Quartile: 7.0\n"," Bundle 240:\n"," Max playtime item: 4733\n"," Average playtime: 3293.0\n"," 25th Quartile: 2573.0\n"," 75th Quartile: 4013.0\n"," Bundle 1246:\n"," Max playtime item: 5001\n"," Average playtime: 3307.0\n"," 25th Quartile: 2460.0\n"," 75th Quartile: 4154.0\n"," Bundle 983:\n"," Max playtime item: 640\n"," Average playtime: 397.0\n"," 25th Quartile: 275.5\n"," 75th Quartile: 518.5\n"," Bundle 380:\n"," Max playtime item: 905\n"," Average playtime: 905.0\n"," 25th Quartile: 905.0\n"," 75th Quartile: 905.0\n"," Bundle 727:\n"," Max playtime item: 1343\n"," Average playtime: 741.0\n"," 25th Quartile: 440.0\n"," 75th Quartile: 1042.0\n"," Bundle 379:\n"," Max playtime item: 905\n"," Average playtime: 905.0\n"," 25th Quartile: 905.0\n"," 75th Quartile: 905.0\n"," Bundle 712:\n"," Max playtime item: 3061\n"," Average playtime: 2182.0\n"," 25th Quartile: 1742.5\n"," 75th Quartile: 2621.5\n"," Bundle 233:\n"," Max playtime item: 1474\n"," Average playtime: 993.5\n"," 25th Quartile: 753.25\n"," 75th Quartile: 1233.75\n"," Bundle 234:\n"," Max playtime item: 887\n"," Average playtime: 530.0\n"," 25th Quartile: 351.5\n"," 75th Quartile: 708.5\n"," Bundle 236:\n"," Max playtime item: 23532\n"," Average playtime: 12692.5\n"," 25th Quartile: 7272.75\n"," 75th Quartile: 18112.25\n"," Bundle 257:\n"," Max playtime item: 3061\n"," Average playtime: 2182.0\n"," 25th Quartile: 1742.5\n"," 75th Quartile: 2621.5\n"," Bundle 312:\n"," Max playtime item: 139\n"," Average playtime: 139.0\n"," 25th Quartile: 139.0\n"," 75th Quartile: 139.0\n"," Bundle 1418:\n"," Max playtime item: 4413\n"," Average playtime: 4413.0\n"," 25th Quartile: 4413.0\n"," 75th Quartile: 4413.0\n"," Bundle 1350:\n"," Max playtime item: 1159\n"," Average playtime: 1159.0\n"," 25th Quartile: 1159.0\n"," 75th Quartile: 1159.0\n"," Bundle 1351:\n"," Max playtime item: 1159\n"," Average playtime: 1159.0\n"," 25th Quartile: 1159.0\n"," 75th Quartile: 1159.0\n"," Bundle 1352:\n"," Max playtime item: 1159\n"," Average playtime: 1159.0\n"," 25th Quartile: 1159.0\n"," 75th Quartile: 1159.0\n"," Bundle 1100:\n"," Max playtime item: 3031\n"," Average playtime: 3031.0\n"," 25th Quartile: 3031.0\n"," 75th Quartile: 3031.0\n"," Bundle 1243:\n"," Max playtime item: 5716\n"," Average playtime: 5716.0\n"," 25th Quartile: 5716.0\n"," 75th Quartile: 5716.0\n"," Bundle 951:\n"," Max playtime item: 85\n"," Average playtime: 85.0\n"," 25th Quartile: 85.0\n"," 75th Quartile: 85.0\n"," Bundle 1158:\n"," Max playtime item: 793\n"," Average playtime: 793.0\n"," 25th Quartile: 793.0\n"," 75th Quartile: 793.0\n"," Bundle 575:\n"," Max playtime item: 10345\n"," Average playtime: 10345.0\n"," 25th Quartile: 10345.0\n"," 75th Quartile: 10345.0\n"," Bundle 823:\n"," Max playtime item: 716\n"," Average playtime: 716.0\n"," 25th Quartile: 716.0\n"," 75th Quartile: 716.0\n"," Bundle 760:\n"," Max playtime item: 467\n"," Average playtime: 467.0\n"," 25th Quartile: 467.0\n"," 75th Quartile: 467.0\n"," Bundle 757:\n"," Max playtime item: 1377\n"," Average playtime: 1377.0\n"," 25th Quartile: 1377.0\n"," 75th Quartile: 1377.0\n"," Bundle 690:\n"," Max playtime item: 199\n"," Average playtime: 199.0\n"," 25th Quartile: 199.0\n"," 75th Quartile: 199.0\n"," Bundle 721:\n"," Max playtime item: 199\n"," Average playtime: 199.0\n"," 25th Quartile: 199.0\n"," 75th Quartile: 199.0\n"," Bundle 574:\n"," Max playtime item: 10345\n"," Average playtime: 10345.0\n"," 25th Quartile: 10345.0\n"," 75th Quartile: 10345.0\n"," Bundle 635:\n"," Max playtime item: 2512\n"," Average playtime: 2512.0\n"," 25th Quartile: 2512.0\n"," 75th Quartile: 2512.0\n"," Bundle 612:\n"," Max playtime item: 10006\n"," Average playtime: 10006.0\n"," 25th Quartile: 10006.0\n"," 75th Quartile: 10006.0\n"," Bundle 139:\n"," Max playtime item: 329\n"," Average playtime: 329.0\n"," 25th Quartile: 329.0\n"," 75th Quartile: 329.0\n"," Bundle 145:\n"," Max playtime item: 216\n"," Average playtime: 216.0\n"," 25th Quartile: 216.0\n"," 75th Quartile: 216.0\n"," Bundle 157:\n"," Max playtime item: 716\n"," Average playtime: 716.0\n"," 25th Quartile: 716.0\n"," 75th Quartile: 716.0\n"," Bundle 292:\n"," Max playtime item: 593\n"," Average playtime: 593.0\n"," 25th Quartile: 593.0\n"," 75th Quartile: 593.0\n"," Bundle 307:\n"," Max playtime item: 588\n"," Average playtime: 588.0\n"," 25th Quartile: 588.0\n"," 75th Quartile: 588.0\n"," Bundle 335:\n"," Max playtime item: 19\n"," Average playtime: 19.0\n"," 25th Quartile: 19.0\n"," 75th Quartile: 19.0\n"," Bundle 382:\n"," Max playtime item: 319\n"," Average playtime: 319.0\n"," 25th Quartile: 319.0\n"," 75th Quartile: 319.0\n"," Bundle 448:\n"," Max playtime item: 593\n"," Average playtime: 593.0\n"," 25th Quartile: 593.0\n"," 75th Quartile: 593.0\n"]}],"source":["# prompt: Dari sorted_matching_bundles hitung distribusi playtime_forever dengan memanfaatkan user_item_interactions_dict saya ingin tau item mana untuk setiap user dari sorted_matching_bundles user mainkan terlama, berapa rata - rata waktu mainnya, dan apa batas quartile 25 dan 75 nya\n","\n","def analyze_playtime(sorted_matching_bundles, user_item_interactions_dict):\n"," \"\"\"\n"," Analyzes playtime for items in matching bundles.\n","\n"," Args:\n"," sorted_matching_bundles (dict): Dictionary of sorted matching bundles.\n"," user_item_interactions_dict (dict): Dictionary of user-item interactions.\n","\n"," Returns:\n"," dict: A dictionary containing playtime statistics for each user and bundle.\n"," \"\"\"\n"," playtime_stats = {}\n","\n"," for user_id, bundles in sorted_matching_bundles.items():\n"," playtime_stats[user_id] = {}\n"," if user_id in user_item_interactions_dict:\n"," user_items = user_item_interactions_dict[user_id]['items']\n"," user_items_dict = {item['item_id']: item['playtime_forever'] for item in user_items}\n"," for bundle_id, item_ids in bundles.items():\n"," playtimes = []\n"," for item_id in item_ids:\n"," if item_id in user_items_dict:\n"," if user_items_dict[item_id] > 0.0:\n"," playtimes.append(user_items_dict[item_id])\n","\n"," if len(playtimes) > 0:\n"," playtime_stats[user_id][bundle_id] = {\n"," 'max_playtime_item': max(playtimes) if playtimes else None,\n"," 'avg_playtime': np.mean(playtimes),\n"," 'quartile_25': np.percentile(playtimes, 25),\n"," 'quartile_75': np.percentile(playtimes, 75),\n"," }\n","\n"," return playtime_stats\n","\n","# Example usage\n","playtime_data = analyze_playtime(sorted_matching_bundles, user_item_interactions_dict)\n","\n","# Print or process the playtime_data as needed\n","for user_id, bundles in playtime_data.items():\n"," print(f\"User {user_id}:\")\n"," for bundle_id, stats in bundles.items():\n"," print(f\" Bundle {bundle_id}:\")\n"," print(f\" Max playtime item: {stats['max_playtime_item']}\")\n"," print(f\" Average playtime: {stats['avg_playtime']}\")\n"," print(f\" 25th Quartile: {stats['quartile_25']}\")\n"," print(f\" 75th Quartile: {stats['quartile_75']}\")\n"," break"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":2066,"status":"ok","timestamp":1735296095356,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"33K-pwRb0BPd","outputId":"f83fc3fd-e576-4c7f-bb92-e394e6cc6137"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" user_id bundle_id avg_item_price original_bundle_price \\\n","0 76561197970982479 232 10.802500 90.45 \n","1 76561197970982479 383 19.990000 253.07 \n","2 76561197970982479 231 7.156667 36.52 \n","3 76561197970982479 362 15.490000 224.61 \n","4 76561197970982479 237 6.240000 13.71 \n","... ... ... ... ... \n","171924 76561198030000787 233 19.990000 29.98 \n","171925 76561198030000787 236 14.990000 29.22 \n","171926 76561198030000787 264 39.990000 98.98 \n","171927 76561198030000787 265 39.990000 135.98 \n","171928 76561198030000787 292 11.990000 107.88 \n","\n"," original_avg_bundle_price preferer_bundle_price \n","0 4.760526 8.373062 \n","1 5.164694 12.659830 \n","2 4.565000 5.102934 \n","3 2.523708 14.500323 \n","4 3.427500 2.197115 \n","... ... ... \n","171924 14.990000 1.499750 \n","171925 9.740000 1.949300 \n","171926 49.490000 2.475119 \n","171927 67.990000 3.400350 \n","171928 8.990000 8.997498 \n","\n","[171929 rows x 6 columns]"],"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
user_idbundle_idavg_item_priceoriginal_bundle_priceoriginal_avg_bundle_pricepreferer_bundle_price
07656119797098247923210.80250090.454.7605268.373062
17656119797098247938319.990000253.075.16469412.659830
2765611979709824792317.15666736.524.5650005.102934
37656119797098247936215.490000224.612.52370814.500323
4765611979709824792376.24000013.713.4275002.197115
.....................
1719247656119803000078723319.99000029.9814.9900001.499750
1719257656119803000078723614.99000029.229.7400001.949300
1719267656119803000078726439.99000098.9849.4900002.475119
1719277656119803000078726539.990000135.9867.9900003.400350
1719287656119803000078729211.990000107.888.9900008.997498
\n","

171929 rows × 6 columns

\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","\n","
\n"," \n"," \n"," \n","
\n","\n","
\n","
\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"price_preference_df"}},"metadata":{},"execution_count":24}],"source":["# prompt: Dari sorted_matching_bundles hitung persona pengguna terhadap harga item, buatkan distribusi untuk tiap user mengenai average prefer item price, prefer bundle prices (original bundle price / sorted_matching_bundles price) based on bundle_id\n","\n","import pandas as pd\n","\n","def analyze_price_preference(sorted_matching_bundles, bundle_data, items_dictionary):\n"," \"\"\"\n"," Analyzes user price preferences based on sorted matching bundles.\n","\n"," Args:\n"," sorted_matching_bundles (dict): Sorted matching bundles for each user.\n"," bundle_data (list): List of bundle data.\n"," items_dictionary (dict): Dictionary of item data.\n","\n"," Returns:\n"," pd.DataFrame: DataFrame with user price preferences.\n"," \"\"\"\n","\n"," user_price_preferences = []\n"," for user_id, bundles in sorted_matching_bundles.items():\n"," for bundle_id, item_ids in bundles.items():\n"," bundle_raw_data = bundle_data_dict.get(bundle_id)\n"," original_bundle_price = 0.0\n"," if bundle_raw_data:\n"," original_bundle_price = remove_currency_symbol(bundle_raw_data['bundle_final_price'])\n","\n"," temp_bundle_item_price = []\n"," avg_item_price = 0.0\n"," for item_id in item_ids:\n"," if item_id in items_dictionary:\n"," item_info = items_dictionary[item_id]\n"," if item_info and 'price' in item_info:\n"," temp_bundle_item_price.append(get_real_price(item_info['price']))\n","\n"," if len(temp_bundle_item_price) > 0:\n"," avg_item_price = sum(temp_bundle_item_price) / len(temp_bundle_item_price)\n","\n"," if original_bundle_price == 0.0 or sum(temp_bundle_item_price) == 0.0:\n"," continue\n","\n"," user_price_preferences.append({\n"," 'user_id': user_id,\n"," 'bundle_id': bundle_id,\n"," 'avg_item_price': avg_item_price,\n"," 'original_bundle_price': original_bundle_price,\n"," 'original_avg_bundle_price': original_bundle_price / len(bundle_raw_data[\"items\"]),\n"," 'preferer_bundle_price': original_bundle_price / avg_item_price\n"," })\n","\n"," return pd.DataFrame(user_price_preferences)\n","\n","\n","# Example usage:\n","price_preference_df = analyze_price_preference(sorted_matching_bundles, bundle_data, items_dictionary)\n","price_preference_df\n","\n","#Further analysis or visualization can be performed on price_preference_df\n","#For example, group by 'user_id' and get the average 'avg_item_price' for each user\n","#Or create a histogram to see the distribution of prices."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"_uwyWZ7mwXjh"},"outputs":[],"source":["# prompt: Convert tag_freq_df to dictionary based group by user_id\n","\n","# Convert tag_freq_df to a dictionary based on groupby user_id\n","tag_freq_dict = {}\n","for user_id, group_df in tag_freq_df.groupby('user_id'):\n"," tag_freq_dict[user_id] = group_df.set_index('tag')['frequency'].to_dict()"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"sawaM081xKQC"},"outputs":[],"source":["# prompt: Convert spec_freq_df to dictionary based group by user_id\n","\n","# Convert spec_freq_df to a dictionary based on groupby user_id\n","spec_freq_dict = {}\n","for user_id, group_df in spec_freq_df.groupby('user_id'):\n"," spec_freq_dict[user_id] = group_df.set_index('spec')['frequency'].to_dict()"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"058DDLeYyAz4"},"outputs":[],"source":["# prompt: Convert price_preference_df to dictionary based group by user_id\n","\n","# Convert price_preference_df to a dictionary based on groupby user_id\n","price_preference_dict = {}\n","for user_id, group_df in price_preference_df.groupby('user_id'):\n"," price_preference_dict[user_id] = group_df.to_dict(orient='records')"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":5,"status":"ok","timestamp":1735296116407,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"P-DchoQbwpCX","outputId":"cf8a89ca-1271-429e-a1bc-c434f08580a6"},"outputs":[{"output_type":"stream","name":"stdout","text":["The average tag frequency for user 76561198030000787 is: 8.189655172413794\n","The max tag frequency for user 76561198030000787 is: 71\n","The median tag frequency for user 76561198030000787 is: 3.0\n","[71, 64, 61, 52, 49, 42, 36, 36, 33, 32, 32, 30, 29, 24, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 17, 15, 15, 14, 14, 13, 12, 12, 11, 11, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n","['Singleplayer', 'Action', 'Adventure', 'Atmospheric', 'Multiplayer', 'Co-op', 'Great Soundtrack', 'RPG', 'Shooter', 'Online Co-Op', 'Third Person', 'Open World', 'Story Rich', 'Funny', 'Horror', 'Comedy', 'Sci-fi', 'Gore', 'Strategy', 'Survival', 'Classic', 'First-Person', 'FPS', 'Zombies', 'Fantasy', 'Third-Person Shooter', 'Survival Horror', 'Female Protagonist', 'Action RPG', 'Moddable', 'Sandbox', 'Local Co-Op', 'Difficult', 'Controller', '2D', 'Simulation', 'Mature', 'Indie', 'Racing', 'Replay Value', 'Remake', 'Post-apocalyptic', 'Tactical', 'Casual', 'Quick-Time Events', 'Team-Based', 'Choices Matter', 'Platformer', 'Isometric', 'Hack and Slash', 'Driving', 'Turn-Based', 'Real-Time with Pause', 'Character Customization', 'CRPG', \"Beat 'em up\", 'Arcade', 'Magic', 'Fast-Paced', 'Loot', 'Exploration', 'Stylized', 'Turn-Based Strategy', 'Touch-Friendly', 'War', 'Space', 'Party-Based RPG', 'Medieval', 'Physics', 'Anime', 'Local Multiplayer', 'Episodic', 'Romance', 'Realistic', 'Spectacle fighter', '3D Vision', 'Character Action Game', 'Dark', 'Choose Your Own Adventure', 'Dark Fantasy', 'Nudity', 'Memes', 'Dark Humor', 'Point & Click', 'Historical', 'Puzzle', 'Rogue-like', 'Side Scroller', 'Split Screen', 'Sports', 'Steampunk', 'Multiple Endings', '4X', 'Based On A Novel', 'Cinematic', 'Co-op Campaign', 'Comic Book', 'Competitive', 'Crime', 'Dystopian', 'Grand Strategy', 'Military', 'Underwater', 'e-sports', 'Pixel Graphics', 'Political', 'PvP', 'Retro', 'Rogue-lite', 'Trading', 'Music', 'Cyberpunk', 'Demons', 'Crafting', 'Destruction', 'Diplomacy', 'Class-Based', '2.5D', 'Action-Adventure', 'Alternate History', 'Dragons', 'Futuristic', 'Hex Grid', 'Inventory Management', 'Linear', 'Massively Multiplayer', 'Free to Play', 'Drama', 'Dungeon Crawler', 'Economy', 'Education', \"1990's\", '2D Fighter', '4 Player Local', '1980s', 'Blood', 'Assassin', 'Aliens', 'Mechs', 'Metroidvania', 'Match 3', 'Kickstarter', 'Interactive Fiction', 'Management', 'MOBA', 'Noir', 'Nonlinear', 'Mystery', 'Narration', 'Naval', 'Ninja', 'Colorful', 'Cartoony', 'Cartoon', 'Detective', 'Fighting', 'Gothic', 'Dynamic Narration', 'Family Friendly', 'Resource Management', 'Relaxing', 'RTS', 'Procedural Generation', 'Twin Stick Shooter', 'Turn-Based Tactics', 'Tower Defense', 'Time Travel', 'Stealth', 'Perma Death', 'Parkour', 'Offroad', 'Philisophical', 'Pirates', 'Visual Novel']\n"]}],"source":["# prompt: Calculate average tag_freq_dict[\"76561198030000787\"]\n","\n","user_id = \"76561198030000787\"\n","\n","if user_id in tag_freq_dict:\n"," frequencies = list(tag_freq_dict[user_id].values())\n"," frequencies_keys = list(tag_freq_dict[user_id].keys())\n"," average_frequency = sum(frequencies) / len(frequencies) if frequencies else 0\n"," print(f\"The average tag frequency for user {user_id} is: {average_frequency}\")\n"," print(f\"The max tag frequency for user {user_id} is: {max(frequencies)}\")\n"," print(f\"The median tag frequency for user {user_id} is: {np.percentile(frequencies, 50)}\")\n"," print(frequencies)\n"," print(frequencies_keys)\n","else:\n"," print(f\"No tag frequency data found for user {user_id}\")"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":3,"status":"ok","timestamp":1735296116407,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"B0izaDFjB2g-","outputId":"9556606c-e6b1-419e-fc23-f46490c8e0b9"},"outputs":[{"output_type":"stream","name":"stdout","text":["Frequencies above average (8.189655172413794): [71, 64, 61, 52, 49, 42, 36, 36, 33, 32, 32, 30, 29, 24, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 17, 15, 15, 14, 14, 13, 12, 12, 11, 11, 11, 11, 10, 10, 10, 9, 9]\n"]}],"source":["# prompt: Give me frequencies that more than average_frequency\n","\n","# Assuming 'frequencies' list is already defined as in the provided code.\n","# Calculate the average frequency\n","if user_id in tag_freq_dict:\n"," frequencies = list(tag_freq_dict[user_id].values())\n"," average_frequency = sum(frequencies) / len(frequencies) if frequencies else 0\n","\n"," # Find frequencies greater than the average\n"," above_average_frequencies = [freq for freq in frequencies if freq > average_frequency]\n","\n"," print(f\"Frequencies above average ({average_frequency}): {above_average_frequencies}\")\n","else:\n"," print(f\"No tag frequency data found for user {user_id}\")"]},{"cell_type":"markdown","metadata":{"id":"tZyju0KqA_eK"},"source":["#### Get the most liked tags and specifications"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"BnrfrY5OA-aN"},"outputs":[],"source":["# Calculate the average tag frequency for the specified user ID\n","temp_tag_freq_dict = {}\n","for user_id, tag_freq in tag_freq_dict.items():\n"," frequencies = list(tag_freq.values())\n"," keys = list(tag_freq.keys())\n"," average_frequency = sum(frequencies) / len(frequencies) if frequencies else 0\n","\n"," # Find frequencies greater than the average\n"," above_average_frequencies = {}\n"," for i in range(len(frequencies)):\n"," if frequencies[i] > average_frequency:\n"," above_average_frequencies[keys[i]] = frequencies[i]\n","\n"," if len(above_average_frequencies) > 0:\n"," temp_tag_freq_dict[user_id] = above_average_frequencies\n","\n","tag_freq_dict = temp_tag_freq_dict"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":6,"status":"ok","timestamp":1735296116925,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"0wjwKjdYBKTk","outputId":"9546288c-266a-4cd3-fa5d-83174ad5dfb0"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'Singleplayer': 71,\n"," 'Action': 64,\n"," 'Adventure': 61,\n"," 'Atmospheric': 52,\n"," 'Multiplayer': 49,\n"," 'Co-op': 42,\n"," 'Great Soundtrack': 36,\n"," 'RPG': 36,\n"," 'Shooter': 33,\n"," 'Online Co-Op': 32,\n"," 'Third Person': 32,\n"," 'Open World': 30,\n"," 'Story Rich': 29,\n"," 'Funny': 24,\n"," 'Horror': 22,\n"," 'Comedy': 22,\n"," 'Sci-fi': 21,\n"," 'Gore': 21,\n"," 'Strategy': 20,\n"," 'Survival': 20,\n"," 'Classic': 19,\n"," 'First-Person': 19,\n"," 'FPS': 19,\n"," 'Zombies': 18,\n"," 'Fantasy': 18,\n"," 'Third-Person Shooter': 17,\n"," 'Survival Horror': 17,\n"," 'Female Protagonist': 17,\n"," 'Action RPG': 15,\n"," 'Moddable': 15,\n"," 'Sandbox': 14,\n"," 'Local Co-Op': 14,\n"," 'Difficult': 13,\n"," 'Controller': 12,\n"," '2D': 12,\n"," 'Simulation': 11,\n"," 'Mature': 11,\n"," 'Indie': 11,\n"," 'Racing': 11,\n"," 'Replay Value': 10,\n"," 'Remake': 10,\n"," 'Post-apocalyptic': 10,\n"," 'Tactical': 9,\n"," 'Casual': 9}"]},"metadata":{},"execution_count":31}],"source":["tag_freq_dict[\"76561198030000787\"]"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":5,"status":"ok","timestamp":1735296116925,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"xicuDlbyE2Yf","outputId":"421055b9-5568-406b-8ada-a9d39190a305"},"outputs":[{"output_type":"stream","name":"stdout","text":["['Stealth', 'Shooter', '3D Vision', 'Relaxing', 'Software']\n"]}],"source":["# prompt: Berikan saya daftar tag yang unik dari semua data pada tag_freq_dict tanpa adanya duplikasi tag\n","\n","unique_tags = set()\n","for user_id, tag_freq in tag_freq_dict.items():\n"," unique_tags.update(tag_freq.keys())\n","print(list(unique_tags)[:5])"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"7lDfoTQ4BnTO"},"outputs":[],"source":["# Calculate the average specs frequency for the specified user ID\n","temp_spec_freq_dict = {}\n","for user_id, spec_freq in spec_freq_dict.items():\n"," frequencies = list(spec_freq.values())\n"," keys = list(spec_freq.keys())\n"," average_frequency = sum(frequencies) / len(frequencies) if frequencies else 0\n","\n"," # Find frequencies greater than the average\n"," above_average_frequencies = {}\n"," for i in range(len(frequencies)):\n"," if frequencies[i] > average_frequency:\n"," above_average_frequencies[keys[i]] = frequencies[i]\n","\n"," if len(above_average_frequencies) > 0:\n"," temp_spec_freq_dict[user_id] = above_average_frequencies\n","\n","spec_freq_dict = temp_spec_freq_dict"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":5,"status":"ok","timestamp":1735296116925,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"b1eIO4WeB-Ly","outputId":"bed0fbf9-edfa-455c-b243-fd7bb4ef6623"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'Single-player': 75,\n"," 'Steam Achievements': 61,\n"," 'Steam Trading Cards': 50,\n"," 'Steam Cloud': 44,\n"," 'Multi-player': 40,\n"," 'Full controller support': 39,\n"," 'Co-op': 31}"]},"metadata":{},"execution_count":34}],"source":["spec_freq_dict[\"76561198030000787\"]"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":4,"status":"ok","timestamp":1735296116925,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"XTzZvEhcFMUa","outputId":"57a7e913-269b-4b97-823e-efe1f4681edf"},"outputs":[{"output_type":"stream","name":"stdout","text":["['Steam Cloud', 'Includes level editor', 'Cross-Platform Multiplayer', 'Local Multi-Player', 'Steam Workshop']\n"]}],"source":["# prompt: Berikan saya daftar specifications yang unik dari semua data pada spec_freq_dict tanpa adanya duplikasi specifications\n","\n","unique_specs = set()\n","for user_id, spec_freq in spec_freq_dict.items():\n"," unique_specs.update(spec_freq.keys())\n","print(list(unique_specs)[:5])"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":4,"status":"ok","timestamp":1735296116925,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"LlWGSfiUyQrF","outputId":"93f70669-d28a-4520-f81b-8ca20c3f23de"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["[{'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '232',\n"," 'avg_item_price': 13.823333333333332,\n"," 'original_bundle_price': 90.45,\n"," 'original_avg_bundle_price': 4.760526315789474,\n"," 'preferer_bundle_price': 6.543284301904992},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '362',\n"," 'avg_item_price': 11.99,\n"," 'original_bundle_price': 224.61,\n"," 'original_avg_bundle_price': 2.5237078651685394,\n"," 'preferer_bundle_price': 18.733110925771477},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '231',\n"," 'avg_item_price': 8.99,\n"," 'original_bundle_price': 36.52,\n"," 'original_avg_bundle_price': 4.565,\n"," 'preferer_bundle_price': 4.0622914349276975},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '234',\n"," 'avg_item_price': 14.989999999999998,\n"," 'original_bundle_price': 22.48,\n"," 'original_avg_bundle_price': 11.24,\n"," 'preferer_bundle_price': 1.4996664442961976},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '312',\n"," 'avg_item_price': 14.99,\n"," 'original_bundle_price': 26.76,\n"," 'original_avg_bundle_price': 6.69,\n"," 'preferer_bundle_price': 1.7851901267511676},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '1100',\n"," 'avg_item_price': 9.99,\n"," 'original_bundle_price': 21.23,\n"," 'original_avg_bundle_price': 10.615,\n"," 'preferer_bundle_price': 2.125125125125125},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '575',\n"," 'avg_item_price': 29.99,\n"," 'original_bundle_price': 49.33,\n"," 'original_avg_bundle_price': 3.083125,\n"," 'preferer_bundle_price': 1.6448816272090696},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '383',\n"," 'avg_item_price': 4.99,\n"," 'original_bundle_price': 253.07,\n"," 'original_avg_bundle_price': 5.16469387755102,\n"," 'preferer_bundle_price': 50.71543086172344},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '572',\n"," 'avg_item_price': 29.99,\n"," 'original_bundle_price': 69.97,\n"," 'original_avg_bundle_price': 23.323333333333334,\n"," 'preferer_bundle_price': 2.3331110370123374},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '574',\n"," 'avg_item_price': 29.99,\n"," 'original_bundle_price': 134.95,\n"," 'original_avg_bundle_price': 26.99,\n"," 'preferer_bundle_price': 4.499833277759253},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '233',\n"," 'avg_item_price': 19.99,\n"," 'original_bundle_price': 29.98,\n"," 'original_avg_bundle_price': 14.99,\n"," 'preferer_bundle_price': 1.499749874937469},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '236',\n"," 'avg_item_price': 14.99,\n"," 'original_bundle_price': 29.22,\n"," 'original_avg_bundle_price': 9.74,\n"," 'preferer_bundle_price': 1.9492995330220146},\n"," {'user_id': 'zyxwvutsrqponm',\n"," 'bundle_id': '240',\n"," 'avg_item_price': 4.99,\n"," 'original_bundle_price': 29.72,\n"," 'original_avg_bundle_price': 9.906666666666666,\n"," 'preferer_bundle_price': 5.955911823647294}]"]},"metadata":{},"execution_count":36}],"source":["price_preference_dict[user_id]"]},{"cell_type":"markdown","metadata":{"id":"-s3p5tlhopND"},"source":["## Recommendation"]},{"cell_type":"markdown","metadata":{"id":"lXW9_XiY4d4S"},"source":["#### With tags and specifications"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"3Juq5nY-7xGH"},"outputs":[],"source":["# prompt: Dari for user_id, bundle_counts_per_user in bundle_counts.items(): buatkan dictionary baru dengan keys adalah user_id dan valuesnya adalah bundle -bundle bundle_counts_per_user namun dengan tambahan label 0 / 1 dimana 0 berarti tidak direkomendasikan karena jumlah intersection_item_count kurang dari 3/4 dari original_item_count\n","\n","# Matrix Feature Tag\n","default_matrix_features_tags = {}\n","for tag in list(unique_tags):\n"," default_matrix_features_tags[tag] = 0\n","\n","# Matrix Feature Spec\n","default_matrix_features_specs = {}\n","for spec in list(unique_specs):\n"," default_matrix_features_specs[spec] = 0\n","\n","# Bundles Recommendation\n","new_bundle_recommendations = {}\n","for user_id, bundle_counts_per_user in bundle_counts.items():\n"," new_bundle_recommendations[user_id] = []\n"," for bundle_id, item_count in bundle_counts_per_user.items():\n"," # Tags feature matrix\n"," matrix_features_tags = default_matrix_features_tags.copy()\n"," matrix_features_specs = default_matrix_features_specs.copy()\n","\n"," label = 1 # Default to recommended\n"," if item_count['intersection_item_count'] < (0.75 * item_count['original_item_count']):\n"," label = 0\n","\n"," for item_id in item_count['item_ids']:\n"," if item_id in items_dictionary:\n"," item_info = items_dictionary[item_id]\n"," if 'tags' in item_info:\n"," for tag in item_info['tags']:\n"," if tag in matrix_features_tags:\n"," matrix_features_tags[tag] = 1\n"," if 'specs' in item_info:\n"," for spec in item_info['specs']:\n"," if spec in matrix_features_specs:\n"," matrix_features_specs[spec] = 1\n","\n"," number_of_tags_1 = sum(1 for value in matrix_features_tags.values() if value == 1)\n"," number_of_specs_1 = sum(1 for value in matrix_features_specs.values() if value == 1)\n"," if user_id in tag_freq_dict:\n"," if number_of_tags_1 >= len(tag_freq_dict[user_id]):\n"," label = 1\n"," if user_id in spec_freq_dict:\n"," if number_of_specs_1 >= len(spec_freq_dict[user_id]):\n"," label = 1\n"," else:\n"," for item_id in item_count['item_ids']:\n"," if item_id in items_dictionary:\n"," item_info = items_dictionary[item_id]\n"," if 'tags' in item_info:\n"," for tag in item_info['tags']:\n"," if tag in matrix_features_tags:\n"," matrix_features_tags[tag] = 1\n"," if 'specs' in item_info:\n"," for spec in item_info['specs']:\n"," if spec in matrix_features_specs:\n"," matrix_features_specs[spec] = 1\n","\n"," new_bundle_recommendations[user_id].append({\n"," 'bundle_id': bundle_id,\n"," 'matrix_features_tags': matrix_features_tags,\n"," 'matrix_features_specs': matrix_features_specs,\n"," 'label': label\n"," })"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":9,"status":"ok","timestamp":1734844966645,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"zTSz18rJ9Cmr","outputId":"8cc56b2b-809a-4e64-cca3-e8d59fa1486e"},"outputs":[{"name":"stdout","output_type":"stream","text":["Label Counts: {1: 90782, 0: 93176}\n"]}],"source":["# prompt: Perlihatkan ke saya berapa jumlah label == 1 dan 0 pada new_bundle_recommendations\n","\n","label_counts = {}\n","for user_id, recommendations in new_bundle_recommendations.items():\n"," for recommendation in recommendations:\n"," label = recommendation['label']\n"," label_counts[label] = label_counts.get(label, 0) + 1\n","\n","print(f\"Label Counts: {label_counts}\")"]},{"cell_type":"code","source":["# prompt: get distinct tags and specs from new_bundle_recommendations\n","\n","def get_distinct_tags_specs(new_bundle_recommendations):\n"," \"\"\"\n"," Extracts distinct tags and specs from the new_bundle_recommendations dictionary.\n","\n"," Args:\n"," new_bundle_recommendations (dict): The dictionary containing bundle recommendations.\n","\n"," Returns:\n"," tuple: A tuple containing two sets: distinct_tags and distinct_specs.\n"," \"\"\"\n"," distinct_tags = set()\n"," distinct_specs = set()\n","\n"," for user_id, recommendations in new_bundle_recommendations.items():\n"," for recommendation in recommendations:\n"," distinct_tags.update(recommendation['matrix_features_tags'].keys())\n"," distinct_specs.update(recommendation['matrix_features_specs'].keys())\n","\n"," return distinct_tags, distinct_specs\n","\n","distinct_tags, distinct_specs = get_distinct_tags_specs(new_bundle_recommendations)"],"metadata":{"id":"4AJDH3rI2WvL"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["distinct_tags"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"2BabVTYO23Sg","executionInfo":{"status":"ok","timestamp":1735281836333,"user_tz":-420,"elapsed":289,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"4fd1e769-2275-4165-fa9b-06ecc3f41639"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["{\"1990's\",\n"," '2D',\n"," '3D Vision',\n"," '4 Player Local',\n"," '4X',\n"," 'Abstract',\n"," 'Action',\n"," 'Action RPG',\n"," 'Action-Adventure',\n"," 'Adventure',\n"," 'Aliens',\n"," 'Alternate History',\n"," 'Animation & Modeling',\n"," 'Anime',\n"," 'Arcade',\n"," 'Assassin',\n"," 'Atmospheric',\n"," 'Base Building',\n"," 'Based On A Novel',\n"," \"Beat 'em up\",\n"," 'Bullet Hell',\n"," 'CRPG',\n"," 'Card Game',\n"," 'Casual',\n"," 'Character Customization',\n"," 'Choices Matter',\n"," 'Choose Your Own Adventure',\n"," 'Cinematic',\n"," 'City Builder',\n"," 'Class-Based',\n"," 'Classic',\n"," 'Co-op',\n"," 'Co-op Campaign',\n"," 'Colorful',\n"," 'Comedy',\n"," 'Comic Book',\n"," 'Competitive',\n"," 'Controller',\n"," 'Crafting',\n"," 'Crime',\n"," 'Cult Classic',\n"," 'Cute',\n"," 'Cyberpunk',\n"," 'Dark',\n"," 'Dark Fantasy',\n"," 'Dark Humor',\n"," 'Demons',\n"," 'Design & Illustration',\n"," 'Destruction',\n"," 'Detective',\n"," 'Difficult',\n"," 'Diplomacy',\n"," 'Dragons',\n"," 'Drama',\n"," 'Driving',\n"," 'Dungeon Crawler',\n"," 'Dystopian',\n"," 'Early Access',\n"," 'Economy',\n"," 'Education',\n"," 'Episodic',\n"," 'Exploration',\n"," 'FMV',\n"," 'FPS',\n"," 'Family Friendly',\n"," 'Fantasy',\n"," 'Fast-Paced',\n"," 'Female Protagonist',\n"," 'Fighting',\n"," 'First-Person',\n"," 'Free to Play',\n"," 'Funny',\n"," 'Futuristic',\n"," 'Gambling',\n"," 'Game Development',\n"," 'GameMaker',\n"," 'God Game',\n"," 'Gore',\n"," 'Grand Strategy',\n"," 'Great Soundtrack',\n"," 'Hack and Slash',\n"," 'Hand-drawn',\n"," 'Hex Grid',\n"," 'Hidden Object',\n"," 'Historical',\n"," 'Horror',\n"," 'Indie',\n"," 'Interactive Fiction',\n"," 'Inventory Management',\n"," 'Isometric',\n"," 'JRPG',\n"," 'Kickstarter',\n"," 'Lara Croft',\n"," 'Level Editor',\n"," 'Linear',\n"," 'Local Co-Op',\n"," 'Local Multiplayer',\n"," 'Loot',\n"," 'Magic',\n"," 'Management',\n"," 'Massively Multiplayer',\n"," 'Match 3',\n"," 'Mature',\n"," 'Mechs',\n"," 'Medieval',\n"," 'Memes',\n"," 'Metroidvania',\n"," 'Military',\n"," 'Moddable',\n"," 'Multiplayer',\n"," 'Multiple Endings',\n"," 'Mystery',\n"," 'Narration',\n"," 'Nudity',\n"," 'Online Co-Op',\n"," 'Open World',\n"," 'Parkour',\n"," 'Party-Based RPG',\n"," 'Physics',\n"," 'Pinball',\n"," 'Pirates',\n"," 'Pixel Graphics',\n"," 'Platformer',\n"," 'Point & Click',\n"," 'Political',\n"," 'Post-apocalyptic',\n"," 'Procedural Generation',\n"," 'Programming',\n"," 'Psychological Horror',\n"," 'Puzzle',\n"," 'Puzzle-Platformer',\n"," 'PvP',\n"," 'Quick-Time Events',\n"," 'RPG',\n"," 'RPGMaker',\n"," 'RTS',\n"," 'Racing',\n"," 'Real Time Tactics',\n"," 'Real-Time with Pause',\n"," 'Realistic',\n"," 'Relaxing',\n"," 'Remake',\n"," 'Replay Value',\n"," 'Resource Management',\n"," 'Retro',\n"," 'Robots',\n"," 'Rogue-like',\n"," 'Rogue-lite',\n"," 'Romance',\n"," 'Sandbox',\n"," 'Sci-fi',\n"," 'Science',\n"," 'Sexual Content',\n"," \"Shoot 'Em Up\",\n"," 'Shooter',\n"," 'Short',\n"," 'Side Scroller',\n"," 'Silent Protagonist',\n"," 'Simulation',\n"," 'Singleplayer',\n"," 'Sniper',\n"," 'Software',\n"," 'Software Training',\n"," 'Space',\n"," 'Spectacle fighter',\n"," 'Split Screen',\n"," 'Sports',\n"," 'Stealth',\n"," 'Steampunk',\n"," 'Story Rich',\n"," 'Strategy',\n"," 'Stylized',\n"," 'Superhero',\n"," 'Survival',\n"," 'Survival Horror',\n"," 'Tactical',\n"," 'Team-Based',\n"," 'Text-Based',\n"," 'Third Person',\n"," 'Third-Person Shooter',\n"," 'Time Travel',\n"," 'Top-Down',\n"," 'Top-Down Shooter',\n"," 'Touch-Friendly',\n"," 'Tower Defense',\n"," 'Trading',\n"," 'Transhumanism',\n"," 'Turn-Based',\n"," 'Turn-Based Combat',\n"," 'Turn-Based Strategy',\n"," 'Twin Stick Shooter',\n"," 'Underwater',\n"," 'Utilities',\n"," 'VR',\n"," 'Vampire',\n"," 'Villain Protagonist',\n"," 'Visual Novel',\n"," 'Voxel',\n"," 'Walking Simulator',\n"," 'War',\n"," 'Web Publishing',\n"," 'World War II',\n"," 'Zombies',\n"," 'e-sports'}"]},"metadata":{},"execution_count":40}]},{"cell_type":"code","source":["distinct_specs"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"XMDVD8k129FP","executionInfo":{"status":"ok","timestamp":1735281858973,"user_tz":-420,"elapsed":342,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"db7d4d20-4434-46ce-988b-bdceb40edcbc"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'Captions available',\n"," 'Co-op',\n"," 'Commentary available',\n"," 'Cross-Platform Multiplayer',\n"," 'Full controller support',\n"," 'In-App Purchases',\n"," 'Includes Source SDK',\n"," 'Includes level editor',\n"," 'Local Multi-Player',\n"," 'Multi-player',\n"," 'Online Multi-Player',\n"," 'Partial Controller Support',\n"," 'Shared/Split Screen',\n"," 'Single-player',\n"," 'Stats',\n"," 'Steam Achievements',\n"," 'Steam Cloud',\n"," 'Steam Leaderboards',\n"," 'Steam Trading Cards',\n"," 'Steam Workshop',\n"," 'Valve Anti-Cheat enabled'}"]},"metadata":{},"execution_count":41}]},{"cell_type":"code","source":["print(f\"Size of tags {len(distinct_tags)}\")\n","print(f\"Size of specs {len(distinct_specs)}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"V3yN-QtD3LJT","executionInfo":{"status":"ok","timestamp":1735282014875,"user_tz":-420,"elapsed":299,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"9b772e16-02e7-4b0d-be3d-ce2651c6bfa5"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Size of tags 204\n","Size of specs 21\n"]}]},{"cell_type":"code","source":["# prompt: Please check for each bundle in users from new_bundle_recommendations please set frequestion distinct_tags from tags based on bundle\n","\n","def set_frequent_distinct_tags_and_specs(new_bundle_recommendations, tag_freq_dict, spec_freq_dict):\n"," \"\"\"\n"," Sets the frequent distinct tags for each bundle in the recommendations.\n","\n"," Args:\n"," new_bundle_recommendations (dict): The bundle recommendations.\n"," tag_freq_dict (dict): User tag frequencies.\n"," \"\"\"\n"," default_frequent_distinct_tags = {}\n"," for tag in list(distinct_tags):\n"," default_frequent_distinct_tags[tag] = 0\n","\n"," default_frequent_distinct_specs = {}\n"," for spec in list(distinct_specs):\n"," default_frequent_distinct_specs[spec] = 0\n","\n"," user_bundle_data = {}\n"," for user_id, recommendations in new_bundle_recommendations.items():\n"," user_bundle_data[user_id] = {}\n"," for recommendation in recommendations:\n"," bundle_id = recommendation['bundle_id']\n"," matrix_features_tags = recommendation['matrix_features_tags']\n"," frequent_distinct_tags = default_frequent_distinct_tags.copy()\n","\n"," if bundle_id not in user_bundle_data[user_id]:\n"," user_bundle_data[user_id][bundle_id] = {}\n","\n"," if user_id in tag_freq_dict:\n"," for tag, freq in tag_freq_dict[user_id].items():\n","\n"," if tag not in frequent_distinct_tags:\n"," frequent_distinct_tags[tag] = 0\n","\n"," if tag in matrix_features_tags:\n"," frequent_distinct_tags[tag] += freq\n","\n"," user_bundle_data[user_id][bundle_id]['frequent_distinct_tags'] = frequent_distinct_tags\n","\n"," matrix_features_specs = recommendation['matrix_features_specs']\n"," frequent_distinct_specs = default_frequent_distinct_specs.copy()\n","\n"," if user_id in spec_freq_dict:\n"," for spec, freq in spec_freq_dict[user_id].items():\n","\n"," if spec not in frequent_distinct_specs:\n"," frequent_distinct_specs[spec] = 0\n","\n"," if spec in matrix_features_specs:\n"," frequent_distinct_specs[spec] += freq\n","\n"," user_bundle_data[user_id][bundle_id]['frequent_distinct_specs'] = frequent_distinct_specs\n"," user_bundle_data[user_id][bundle_id]['label'] = recommendation['label']\n","\n"," return user_bundle_data\n","\n","user_bundle_data = set_frequent_distinct_tags_and_specs(new_bundle_recommendations, tag_freq_dict, spec_freq_dict)\n","#Example Access\n","#print(new_bundle_recommendations['76561198030000787'][0]['frequent_distinct_tags'])"],"metadata":{"id":"KwvjOumd4xyg"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["# prompt: Apakah ada frequency tags yang lebih dari 1 nilainya? user_bundle_data\n","\n","def check_frequency_tags(user_bundle_data):\n"," \"\"\"\n"," Checks if there are any frequency tags with a value greater than 1 in the user_bundle_data.\n","\n"," Args:\n"," user_bundle_data (dict): A dictionary containing user bundle data.\n","\n"," Returns:\n"," bool: True if any frequency tag has a value greater than 1, False otherwise.\n"," list: A list of user IDs with frequency tags greater than 1.\n"," \"\"\"\n"," users_with_high_frequency_tags = []\n"," for user_id, bundle_data in user_bundle_data.items():\n"," for bundle_id, data in bundle_data.items():\n"," for tag, freq in data['frequent_distinct_tags'].items():\n"," if freq > 1:\n"," users_with_high_frequency_tags.append(user_id)\n"," break # Exit inner loop once a frequency tag > 1 is found for a bundle\n"," else:\n"," continue # Continue to next bundle if no frequency tag > 1 is found\n"," break #Exit the bundle loop once we've found a frequency > 1 for the bundle\n"," return len(users_with_high_frequency_tags) > 0, users_with_high_frequency_tags\n","\n","has_high_frequency, users = check_frequency_tags(user_bundle_data)\n","\n","if has_high_frequency:\n"," print(\"Yes, there are frequency tags with values greater than 1.\")\n"," print(\"Users with frequency tags greater than 1:\", users)\n","else:\n"," print(\"No frequency tags with values greater than 1 found.\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":211},"id":"HZiTzq7a8i_X","executionInfo":{"status":"error","timestamp":1735286147969,"user_tz":-420,"elapsed":369,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"b6164a87-6127-4243-94d9-f0d9f40df491"},"execution_count":null,"outputs":[{"output_type":"error","ename":"NameError","evalue":"name 'user_bundle_data' is not defined","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)","\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0musers_with_high_frequency_tags\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0musers_with_high_frequency_tags\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mhas_high_frequency\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0musers\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcheck_frequency_tags\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muser_bundle_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhas_high_frequency\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mNameError\u001b[0m: name 'user_bundle_data' is not defined"]}]},{"cell_type":"code","source":["# prompt: Check freeuncy of label in user_bundle_data\n","\n","def analyze_label_frequency(user_bundle_data):\n"," \"\"\"\n"," Analyzes the frequency of labels in the user_bundle_data.\n","\n"," Args:\n"," user_bundle_data (dict): A dictionary containing user data, bundles, and labels.\n","\n"," Returns:\n"," dict: A dictionary with label frequencies.\n"," \"\"\"\n"," label_counts = {}\n"," for user_id, bundles in user_bundle_data.items():\n"," for bundle_id, bundle_info in bundles.items():\n"," label = bundle_info['label']\n"," label_counts[label] = label_counts.get(label, 0) + 1\n"," return label_counts\n","\n","label_frequencies = analyze_label_frequency(user_bundle_data)\n","label_frequencies"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"qViaXjunARLm","executionInfo":{"status":"ok","timestamp":1735284321101,"user_tz":-420,"elapsed":312,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"26f09e48-7059-4d53-92c2-1fc320069511"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["{1: 90782, 0: 93176}"]},"metadata":{},"execution_count":60}]},{"cell_type":"code","execution_count":null,"metadata":{"id":"hnRTUGdExdM8"},"outputs":[],"source":["# prompt:\n","\n","from sklearn.model_selection import train_test_split, GridSearchCV, cross_val_score\n","from sklearn.metrics import classification_report\n","\n","# Assuming 'new_bundle_recommendations' is defined as in the previous code\n","\n","# Prepare the data for SVM\n","data = { \"features\": [], \"label\": [] }\n","for user_id, recommendations in user_bundle_data.items():\n"," for recommendation in recommendations:\n"," features = list(recommendation['matrix_features_tags'].values()) + list(recommendation['matrix_features_specs'].values())\n"," label = recommendation['label']\n"," data[\"features\"].append(features)\n"," data[\"label\"].append(label)\n","\n","X = np.array(data[\"features\"])\n","y = np.array(data[\"label\"])\n","\n","# Split data into training and testing sets\n","# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n"]},{"cell_type":"markdown","metadata":{"id":"BvNcVTvH4y1J"},"source":["#### With price pattern"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":7917,"status":"ok","timestamp":1735296132810,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"hO7GCvhT4y1K","outputId":"b1d85671-4983-4c2e-f982-fb7bcceaf895"},"outputs":[{"output_type":"stream","name":"stdout","text":["User 76561197970982479:\n"," Average Price: 14.88830434782609\n"," Price Range 0-25: Start = 0.0, End = 9.99, Count = 109\n"," Price Range 26-50: Start = 9.99, End = 14.99, Count = 32\n"," Price Range 51-75: Start = 14.99, End = 19.99, Count = 61\n"," Price Range 76-100: Start = 19.99, End = 59.99, Count = 28\n"]}],"source":["# prompt: Dari user user_item_interactions_dict, hitung price rata - rata item yang di beli oleh pengguna, kemudian kelompokkan user interaction berdasarkan range price (sorting dahulu, lalu gunakan quartile 0-25, 26-50, 51-75, 76-100) namun selain quartile berapa kasih juga daftar harga start dan end untuk masing - masing quartile\n","# , lalu Hitung frekuensi interaction pengguna terhadap range price\n","\n","import pandas as pd\n","import numpy as np\n","\n","def analyze_price_interaction(user_item_interactions_dict):\n"," \"\"\"\n"," Analyzes user price interaction based on user_item_interactions_dict.\n","\n"," Args:\n"," user_item_interactions_dict (dict): Dictionary of user-item interactions.\n","\n"," Returns:\n"," dict: A dictionary containing user price interaction data.\n"," \"\"\"\n","\n"," user_price_interactions = {}\n"," for user_id, user_data in user_item_interactions_dict.items():\n"," prices = []\n"," for item in user_data['items']:\n"," if item[\"item_id\"] in items_dictionary and 'price' in items_dictionary[item[\"item_id\"]]:\n"," prices.append(get_real_price(f\"{items_dictionary[item['item_id']]['price']}\"))\n","\n"," if not prices:\n"," continue\n","\n"," avg_price = np.mean(prices)\n"," sorted_prices = np.sort(prices)\n","\n"," quartiles = np.percentile(sorted_prices, [0, 25, 50, 75, 100])\n","\n"," price_ranges = {\n"," '0-25': {'start': quartiles[0], 'end': quartiles[1], 'count': 0},\n"," '26-50': {'start': quartiles[1], 'end': quartiles[2], 'count': 0},\n"," '51-75': {'start': quartiles[2], 'end': quartiles[3], 'count': 0},\n"," '76-100': {'start': quartiles[3], 'end': quartiles[4], 'count': 0}\n"," }\n","\n"," for price in sorted_prices:\n"," if quartiles[0] <= price <= quartiles[1]:\n"," price_ranges['0-25']['count'] += 1\n"," elif quartiles[1] < price <= quartiles[2]:\n"," price_ranges['26-50']['count'] += 1\n"," elif quartiles[2] < price <= quartiles[3]:\n"," price_ranges['51-75']['count'] += 1\n"," elif quartiles[3] < price <= quartiles[4]:\n"," price_ranges['76-100']['count'] += 1\n","\n"," user_price_interactions[user_id] = {\n"," 'avg_price': avg_price,\n"," 'price_ranges': price_ranges,\n"," }\n","\n"," return user_price_interactions\n","\n","# Example usage\n","user_price_data = analyze_price_interaction(user_item_interactions_dict)\n","\n","#Print the result\n","for user_id, user_data in user_price_data.items():\n"," print(f\"User {user_id}:\")\n"," print(f\" Average Price: {user_data['avg_price']}\")\n"," for range_name, range_data in user_data['price_ranges'].items():\n"," print(f\" Price Range {range_name}: Start = {range_data['start']}, End = {range_data['end']}, Count = {range_data['count']}\")\n"," break"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":3,"status":"ok","timestamp":1735296132810,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"_4tajHfz_R03","outputId":"f1c85f37-3273-4474-a621-86bb69c3388c"},"outputs":[{"output_type":"stream","name":"stdout","text":["User 76561197970982479:\n"," Average Price: 14.88830434782609\n"," Price Range 0-25: Start = 0.0, End = 9.99, Count = 109\n"," Price Range 51-75: Start = 14.99, End = 19.99, Count = 61\n"," Price Range 26-50: Start = 9.99, End = 14.99, Count = 32\n"," Price Range 76-100: Start = 19.99, End = 59.99, Count = 28\n"]}],"source":["# prompt: now sort user_price_data based on their count in price range and do not change the dictionary format\n","\n","# Sort price ranges within each user's data based on count\n","for user_id, user_data in user_price_data.items():\n"," sorted_price_ranges = dict(sorted(user_data['price_ranges'].items(), key=lambda item: item[1]['count'], reverse=True))\n"," user_data['price_ranges'] = sorted_price_ranges\n","\n","#Print the result\n","for user_id, user_data in user_price_data.items():\n"," print(f\"User {user_id}:\")\n"," print(f\" Average Price: {user_data['avg_price']}\")\n"," for range_name, range_data in user_data['price_ranges'].items():\n"," print(f\" Price Range {range_name}: Start = {range_data['start']}, End = {range_data['end']}, Count = {range_data['count']}\")\n"," break"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"IqypixNcCB7x"},"outputs":[],"source":["# prompt: - Untuk setiap user pada user_price_data lakukan loop terhadap bundle_data\n","# - Untuk setiap bundle pada bundle_data lakukan loop pada items\n","# - Hitung average price pada items bundle data\n","# - Bandingkan average price pada bundle items terhadap average price pada user_price_data\n","# - Semua bundle dengan average price item dibawah atau sama dengan user_price_data maka di labelkan 1\n","# - Selain itu maka labelnya 0\n","# - Pada section else yang berlabel 0 maka lakukan :\n","# - pengecekkan berdasarkan range price\n","# - Kelompokkan item pada bundle berdasarkan range price pada user_price_data\n","# - Hitung frekuensi item pada bundle untuk setiap range price\n","# - Lakukan perbandingan jika terdapat 2 range price lebih yang frekuensinya melebihi threshold range price user_price_data maka labelkan jadi 1\n","# - Kemudian simpan data dalam bentuk dictionary dengan isi berikut\n","# \t- user_id\n","# \t- bundle_id\n","# \t- average_price_interaction\n","# \t- average_price_bundle\n","# \t- i_price_range_q1\n","# \t- i_price_range_q2\n","# \t- i_price_range_q3\n","# \t- i_price_range_q4\n","# \t- b_price_range_q1\n","# \t- b_price_range_q2\n","# \t- b_price_range_q3\n","# \t- b_price_range_q4\n","# \t- label\n","# Jangan dalam function\n","\n","# Create an empty list to store the results\n","result_data = {}\n","\n","# Loop through each user in user_price_data\n","for user_id, user_data in user_price_data.items():\n"," # Loop through each bundle in bundle_data\n"," for bundle_id, bundle_data in bundle_data_dict.items(): # Assuming bundle_data_dict exists\n"," # Extract items from the bundle\n"," items = bundle_data.get(\"items\", [])\n","\n"," # Calculate average price for items in the bundle\n"," item_prices = []\n"," for item in items:\n"," if item['item_id'] in items_dictionary and 'price' in items_dictionary[item['item_id']]:\n"," item_prices.append(get_real_price(items_dictionary[item['item_id']]['price']))\n"," avg_bundle_price = np.mean(item_prices) if item_prices else 0\n","\n","\n"," # Compare average bundle price with user's average price\n","\n"," # Group items by price range and count frequencies\n"," bundle_price_ranges = {\n"," '0-25': 0,\n"," '26-50': 0,\n"," '51-75': 0,\n"," '76-100': 0,\n"," }\n"," for price in item_prices:\n"," if user_data['price_ranges']['0-25']['start'] <= price <= user_data['price_ranges']['0-25']['end']:\n"," bundle_price_ranges['0-25'] += 1\n"," elif user_data['price_ranges']['26-50']['start'] < price <= user_data['price_ranges']['26-50']['end']:\n"," bundle_price_ranges['26-50'] += 1\n"," elif user_data['price_ranges']['51-75']['start'] < price <= user_data['price_ranges']['51-75']['end']:\n"," bundle_price_ranges['51-75'] += 1\n"," elif user_data['price_ranges']['76-100']['start'] < price <= user_data['price_ranges']['76-100']['end']:\n"," bundle_price_ranges['76-100'] += 1\n","\n"," # if avg_bundle_price <= user_data['avg_price']:\n"," # label = 1\n"," # else:\n"," label = 0\n","\n"," # Check if two or more price ranges exceed the threshold\n"," ranges_above_threshold = 0\n"," for range_name, count in bundle_price_ranges.items():\n"," if count > (0.15 * user_data['price_ranges'][range_name]['count']):\n"," ranges_above_threshold +=1\n","\n"," if ranges_above_threshold >= 1:\n"," label = 1\n","\n"," # Append the results\n"," if user_id not in result_data:\n"," result_data[user_id] = {}\n","\n"," result_data[user_id][bundle_id] = {\n"," 'user_id': user_id,\n"," 'bundle_id': bundle_id,\n"," 'average_price_interaction': user_data['avg_price'],\n"," 'average_price_bundle': avg_bundle_price,\n"," 'i_price_range_q1': user_data['price_ranges']['0-25']['count'],\n"," 'i_price_range_q2': user_data['price_ranges']['26-50']['count'],\n"," 'i_price_range_q3': user_data['price_ranges']['51-75']['count'],\n"," 'i_price_range_q4': user_data['price_ranges']['76-100']['count'],\n"," 'b_price_range_q1': bundle_price_ranges['0-25'],\n"," 'b_price_range_q2': bundle_price_ranges['26-50'],\n"," 'b_price_range_q3': bundle_price_ranges['51-75'],\n"," 'b_price_range_q4': bundle_price_ranges['76-100'],\n"," 'label': label\n"," }"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":3769,"status":"ok","timestamp":1735296464673,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"hg5fhBdx4y1L","outputId":"f25941aa-772d-4943-9622-31731eea16b9"},"outputs":[{"output_type":"stream","name":"stdout","text":["Label Counts in result_data: {0: 3010764, 1: 3062976}\n"]}],"source":["# prompt: Perlihatkan ke saya berapa jumlah label == 1 dan 0 pada result_data\n","\n","label_counts = {}\n","for user_id, user_recommendations in result_data.items():\n"," for bundle_id, recommendation_data in user_recommendations.items():\n"," label = recommendation_data['label']\n"," label_counts[label] = label_counts.get(label, 0) + 1\n","\n","print(f\"Label Counts in result_data: {label_counts}\")"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":564},"executionInfo":{"elapsed":5165,"status":"ok","timestamp":1735296469833,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"yzuLFSOZcgdb","outputId":"73dae906-dc33-4a2c-ac12-0fecf02f05a7"},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"iVBORw0KGgoAAAANSUhEUgAAArMAAAIjCAYAAAAQgZNYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHP0lEQVR4nO3deVyVZf7/8fdBZREENQVEEUnM3CHNtVwSNTPT6VuZ0wxi5jil49Zk0qKpFW0qmZU1lWiNk7nWWKLmWmqZC6lkrgimghkKggbCuX9/9PNMJxbP0QOHW1/Px+N+PLqv+7rv+3MfOPT2Otd9H4thGIYAAAAAE/JwdwEAAADAlSLMAgAAwLQIswAAADAtwiwAAABMizALAAAA0yLMAgAAwLQIswAAADAtwiwAAABMizALAAAA0yLMAib03HPPyWKxVMi5unfvru7du9vWN2zYIIvFosWLF1fI+WNjY9WoUaMKOdeVys3N1SOPPKLg4GBZLBaNHTu2Qs4bGxsrPz8/lx7zjz/vK3X06FFZLBYlJiZe9bEqK1e9VmVJTEyUxWLR0aNHy/U8gJkRZgE3u/Q/q0uLt7e3QkJC1KdPH82aNUvnzp1zyXlOnDih5557TsnJyS45nitV5toc8eKLLyoxMVGPPvqoPvzwQ/31r38ttW+jRo109913V2B1qCiV7fd4wYIFSkhIcHcZQLmr6u4CAPxm6tSpCg8P18WLF5WRkaENGzZo7NixmjFjhj777DO1bt3a1veZZ57RxIkTnTr+iRMnNGXKFDVq1EiRkZEO77d69WqnznMlyqrtX//6l6xWa7nXcDXWrVunjh07avLkye4updIICwvThQsXVK1aNXeXUmGu9D1WXhYsWKC9e/dW2CcFgLsQZoFKom/fvmrXrp1tPS4uTuvWrdPdd9+te+65R/v27ZOPj48kqWrVqqpatXzfvufPn1f16tXl6elZrue5HDOEoVOnTql58+buLqNSufQpQ3kyDEO//vqr7X0B4PrENAOgErvjjjv07LPPKi0tTR999JGtvaQ5s2vWrNFtt92mmjVrys/PT02bNtVTTz0l6bd5rrfeeqskaejQobYpDZfmM3bv3l0tW7bUjh071LVrV1WvXt22b2nzAouKivTUU08pODhYvr6+uueee3Ts2DG7Po0aNVJsbGyxfX9/zMvVVtKc2by8PD3++OMKDQ2Vl5eXmjZtqtdee02GYdj1s1gsGjVqlJYvX66WLVvKy8tLLVq0UFJSUskv+B+cOnVKw4YNU1BQkLy9vdWmTRvNmzfPtv3S/OHU1FR9/vnnttqvdn7jV199pfvvv18NGzaUl5eXQkNDNW7cOF24cKHE/keOHFGfPn3k6+urkJAQTZ06tdhrYbValZCQoBYtWsjb21tBQUEaMWKEzpw5c9l63njjDbVo0ULVq1dXrVq11K5dOy1YsKDMfUqaM3tpju/x48c1cOBA+fn5qW7duvrnP/+poqKiy9ZxaYrGqlWr1K5dO/n4+Oidd96RJJ09e1Zjx461/U5ERETo5ZdfLjaq//HHH6tt27aqUaOG/P391apVK73++uu27aXNR7/c3NXL/R47IiUlRXfccYd8fHzUoEEDPf/88yV+KvHpp5+qX79+CgkJkZeXlxo3bqxp06bZvYbdu3fX559/rrS0NFstl95HBQUFmjRpktq2bauAgAD5+vrq9ttv1/r16x2uFahMGJkFKrm//vWveuqpp7R69WoNHz68xD4pKSm6++671bp1a02dOlVeXl46dOiQNm/eLElq1qyZpk6dqkmTJulvf/ubbr/9dklS586dbcf45Zdf1LdvXz344IP6y1/+oqCgoDLreuGFF2SxWPTkk0/q1KlTSkhIUHR0tJKTk50aKXOktt8zDEP33HOP1q9fr2HDhikyMlKrVq3SE088oePHj2vmzJl2/b/++mstXbpUjz32mGrUqKFZs2bp//7v/5Senq4bbrih1LouXLig7t2769ChQxo1apTCw8O1aNEixcbG6uzZsxozZoyaNWumDz/8UOPGjVODBg30+OOPS5Lq1q3r8PWXZNGiRTp//rweffRR3XDDDdq2bZveeOMN/fTTT1q0aJFd36KiIt15553q2LGjXnnlFSUlJWny5MkqLCzU1KlTbf1GjBihxMREDR06VKNHj1Zqaqpmz56tXbt2afPmzaWOgP/rX//S6NGjdd9992nMmDH69ddftXv3bn377bf685//7PS1FRUVqU+fPurQoYNee+01ffnll5o+fboaN26sRx999LL779+/X4MHD9aIESM0fPhwNW3aVOfPn1e3bt10/PhxjRgxQg0bNtSWLVsUFxenkydP2uaNrlmzRoMHD1bPnj318ssvS5L27dunzZs3a8yYMU5fy+85+3v8RxkZGerRo4cKCws1ceJE+fr66t133y3xvZSYmCg/Pz+NHz9efn5+WrdunSZNmqScnBy9+uqrkqSnn35a2dnZ+umnn2zviUs3C+bk5Oi9997T4MGDNXz4cJ07d07vv/+++vTpo23btlWKKRKAUwwAbjV37lxDkvHdd9+V2icgIMCIioqyrU+ePNn4/dt35syZhiTj559/LvUY3333nSHJmDt3brFt3bp1MyQZc+bMKXFbt27dbOvr1683JBn169c3cnJybO2ffPKJIcl4/fXXbW1hYWHGkCFDLnvMsmobMmSIERYWZltfvny5Icl4/vnn7frdd999hsViMQ4dOmRrk2R4enratX3//feGJOONN94odq7fS0hIMCQZH330ka2toKDA6NSpk+Hn52d37WFhYUa/fv3KPJ4zfc+fP1+sLT4+3rBYLEZaWpqtbciQIYYk4x//+IetzWq1Gv369TM8PT1tvw9fffWVIcn497//bXfMpKSkYu1//NkMGDDAaNGihUPX9nupqanFfqaX6p06dapd36ioKKNt27aXPWZYWJghyUhKSrJrnzZtmuHr62scOHDArn3ixIlGlSpVjPT0dMMwDGPMmDGGv7+/UVhYWOo5/vjeuuTS+zQ1NdXW5szv8eWMHTvWkGR8++23trZTp04ZAQEBxc5b0u/HiBEjjOrVqxu//vqrra1fv352751LCgsLjfz8fLu2M2fOGEFBQcbDDz/sdO2AuzHNADABPz+/Mp9qULNmTUm/ffx4pTdLeXl5aejQoQ73j4mJUY0aNWzr9913n+rVq6cvvvjiis7vqC+++EJVqlTR6NGj7doff/xxGYahlStX2rVHR0ercePGtvXWrVvL399fR44cuex5goODNXjwYFtbtWrVNHr0aOXm5mrjxo0uuJqS/X40Li8vT6dPn1bnzp1lGIZ27dpVrP+oUaNs/31pakVBQYG+/PJLSb+N9AYEBKhXr146ffq0bWnbtq38/PzK/Hi5Zs2a+umnn/Tdd9+57Pr+/ve/263ffvvtl/15XBIeHq4+ffrYtS1atEi33367atWqZXd90dHRKioq0qZNmyT9di15eXlas2aNay7Ehb744gt17NhR7du3t7XVrVtXDz30ULG+v//9OHfunE6fPq3bb79d58+f148//njZc1WpUsU2F95qtSorK0uFhYVq166ddu7c6YKrASrWdR1mN23apP79+yskJEQWi0XLly93+hiGYei1117TTTfdJC8vL9WvX18vvPCC64vFdS03N9cuOP7RoEGD1KVLFz3yyCMKCgrSgw8+qE8++cSpYFu/fn2nbvZq0qSJ3brFYlFERES5Pw8zLS1NISEhxV6PZs2a2bb/XsOGDYsdo1atWpedK5qWlqYmTZrIw8P+z2Rp53Gl9PR0xcbGqnbt2rZ5pd26dZMkZWdn2/X18PDQjTfeaNd20003SZLtZ3Hw4EFlZ2crMDBQdevWtVtyc3N16tSpUmt58skn5efnp/bt26tJkyYaOXKkbfrKlfD29i42DcORn8cl4eHhxdoOHjyopKSkYtcWHR0tSbbre+yxx3TTTTepb9++atCggR5++GGH50+Xt0u/b3/UtGnTYm0pKSn605/+pICAAPn7+6tu3br6y1/+Iqn470dp5s2bp9atW8vb21s33HCD6tatq88//9zh/YHK5LqeM5uXl6c2bdro4Ycf1r333ntFxxgzZoxWr16t1157Ta1atVJWVpaysrJcXCmuZz/99JOys7MVERFRah8fHx9t2rRJ69ev1+eff66kpCQtXLhQd9xxh1avXq0qVapc9jzlcUd4aV/sUFRU5FBNrlDaeYw/3CBVWRQVFalXr17KysrSk08+qZtvvlm+vr46fvy4YmNjr2jk3Wq1KjAwUP/+979L3F7WHN9mzZpp//79WrFihZKSkrRkyRK99dZbmjRpkqZMmeJ0LVf7cy/p99RqtapXr16aMGFCiftcCveBgYFKTk7WqlWrtHLlSq1cuVJz585VTEyM7ca+sn5nK4OzZ8+qW7du8vf319SpU9W4cWN5e3tr586devLJJx36/fjoo48UGxurgQMH6oknnlBgYKCqVKmi+Ph4HT58uAKuAnCt6zrM9u3bV3379i11e35+vp5++mn95z//0dmzZ9WyZUu9/PLLtruw9+3bp7ffflt79+61/eu5pFED4Gp8+OGHklTso9U/8vDwUM+ePdWzZ0/NmDFDL774op5++mmtX79e0dHRLv/GsIMHD9qtG4ahQ4cO2T0Pt1atWjp79myxfdPS0uxGE52pLSwsTF9++aXOnTtnNzp76ePVsLAwh491ufPs3r1bVqvVbnTW1ef5oz179ujAgQOaN2+eYmJibO2lfTRutVp15MgRW2CTpAMHDkiS7e71xo0b68svv1SXLl2u6B8tvr6+GjRokAYNGqSCggLde++9euGFFxQXF1fuj99yROPGjZWbm2sbiS2Lp6en+vfvr/79+8tqteqxxx7TO++8o2effVYRERGqVauWpN9C46XpO5JjI/FX8x4LCwsr9p6Sfrvh7fc2bNigX375RUuXLlXXrl1t7ampqQ7Xs3jxYt14441aunSpXR+ekwyzuq6nGVzOqFGjtHXrVn388cfavXu37r//ft155522Pzj//e9/deONN2rFihUKDw9Xo0aN9MgjjzAyC5dZt26dpk2bpvDw8BLnzl1S0u/cpTuS8/PzJf0WSCSVGC6vxPz58+3m8S5evFgnT560+wdi48aN9c0336igoMDWtmLFimKP8HKmtrvuuktFRUWaPXu2XfvMmTNlsVjK/AeqM+666y5lZGRo4cKFtrbCwkK98cYb8vPzs33s72qXRi5/P3JsGIbd46P+6PevhWEYmj17tqpVq6aePXtKkh544AEVFRVp2rRpxfYtLCws83X/5Zdf7NY9PT3VvHlzGYahixcvOnRN5e2BBx7Q1q1btWrVqmLbzp49q8LCQknFr8XDw8P2j69L75NL86svzbOVfvsU7/ePZCvN1bzH7rrrLn3zzTfatm2bre3nn38uNppe0u9HQUGB3nrrrRLrKWnaQEnH+Pbbb7V161an6wYqg+t6ZLYs6enpmjt3rtLT0xUSEiJJ+uc//6mkpCTNnTtXL774oo4cOaK0tDQtWrRI8+fPV1FRkcaNG6f77rtP69atc/MVwGxWrlypH3/8UYWFhcrMzNS6deu0Zs0ahYWF6bPPPitzBGzq1KnatGmT+vXrp7CwMJ06dUpvvfWWGjRooNtuu03Sb/+TrlmzpubMmaMaNWrI19dXHTp0uOJPE2rXrq3bbrtNQ4cOVWZmphISEhQREWH3+LBHHnlEixcv1p133qkHHnhAhw8f1kcffWR3Q5aztfXv3189evTQ008/raNHj6pNmzZavXq1Pv30U40dO7bYsa/U3/72N73zzjuKjY3Vjh071KhRIy1evFibN29WQkJCmXOYL+fQoUN6/vnni7VHRUWpd+/eaty4sf75z3/q+PHj8vf315IlS0qdU+rt7a2kpCQNGTJEHTp00MqVK/X555/rqaeesk0f6Natm0aMGKH4+HglJyerd+/eqlatmg4ePKhFixbp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VUFBQS4vEAAAACiN02E2ISFBO3fu1KhRo/T0008rIiJCkrR48WJ17tzZ5QUCAAAApanq7A6tW7e2e5rBJa+++qqqVKnikqIAAAAAR1zRc2bPnj2r9957T3FxccrKypIk/fDDDzp16pRLiwMAAADK4vTI7O7du9WzZ0/VrFlTR48e1fDhw1W7dm0tXbpU6enpmj9/fnnUCQAAABTj9Mjs+PHjNXToUB08eFDe3t629rvuukubNm1yaXEAAABAWZwOs999951GjBhRrL1+/frKyMhwSVEAAACAI5wOs15eXsrJySnWfuDAAdWtW9clRQEAAACOcDrM3nPPPZo6daouXrwoSbJYLEpPT9eTTz6p//u//3N5gQAAAEBpnA6z06dPV25urgIDA3XhwgV169ZNERERqlGjhl544YXyqBEAAAAokdNPMwgICNCaNWu0efNmff/998rNzdUtt9yi6Ojo8qgPAAAAKJXTYfaSLl26qEuXLq6sBQAAAHCK09MMRo8erVmzZhVrnz17tsaOHeuKmgAAAACHOB1mlyxZUuKIbOfOnbV48WKXFAUAAAA4wukw+8svvyggIKBYu7+/v06fPu2SogAAAABHOB1mIyIilJSUVKx95cqVuvHGG11SFAAAAOCIK/o62wkTJmjy5MnauHGjNm7cqEmTJmnixIkaN26cU8eKj4/Xrbfeqho1aigwMFADBw7U/v37L7vfokWLdPPNN8vb21utWrXSF1984exlAAAA4BrgdJh9+OGHNX36dL3//vvq0aOHevTooY8++khvv/22hg8f7tSxNm7cqJEjR+qbb77RmjVrdPHiRfXu3Vt5eXml7rNlyxYNHjxYw4YN065duzRw4EANHDhQe/fudfZSAAAAYHIWwzCMK935559/lo+Pj/z8/FxSzM8//6zAwEBt3LhRXbt2LbHPoEGDlJeXpxUrVtjaOnbsqMjISM2ZM6dY//z8fOXn59vWc3JyFBoaquzsbPn7+7uk7st5aRdziYHrwcSoOu4uwW2yp0xxdwkAylnA5MkVdq6cnBwFBAQ4lNecHpn9vbp167osyEpSdna2JKl27dql9tm6dWuxL2jo06ePtm7dWmL/+Ph4BQQE2JbQ0FCX1QsAAAD3cjrMZmZm6q9//atCQkJUtWpVValSxW65UlarVWPHjlWXLl3UsmXLUvtlZGQoKCjIri0o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\n"},"metadata":{}}],"source":["# prompt: Perlihatkan saya gambar distribusi dari jumlah label == 1 dan 0 pada result_data\n","\n","import matplotlib.pyplot as plt\n","\n","label_counts = {}\n","for user_id, user_recommendations in result_data.items():\n"," for bundle_id, recommendation_data in user_recommendations.items():\n"," label = recommendation_data['label']\n"," label_counts[label] = label_counts.get(label, 0) + 1\n","\n","labels, counts = zip(*label_counts.items())\n","\n","plt.figure(figsize=(8, 6))\n","plt.bar(labels, counts, color=['skyblue', 'lightcoral'])\n","plt.xlabel(\"Labels (0 or 1)\")\n","plt.ylabel(\"Number of Occurrences\")\n","plt.title(\"Distribution of Labels in result_data\")\n","plt.xticks(labels)\n","plt.show()"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"u8-EKvH_4y1M"},"outputs":[],"source":["# prompt: Ok sekarang dari result_data terapkan algoritma stocastic gradient descent (SGD) dan gunakan cross validation dan hyperparameter tuning, dan jangan menggunakan data = [] tapi gunakan dictionary agar tidak terlalu berat\n","\n","import pandas as pd\n","from sklearn.model_selection import train_test_split, GridSearchCV, cross_val_score\n","from sklearn.linear_model import SGDClassifier\n","from sklearn.metrics import classification_report, accuracy_score\n","import numpy as np\n","\n","# Prepare data for SGD\n","data = { \"features\": [], \"label\": [], \"identity\": [] }\n","for user_id, user_recommendations in result_data.items():\n"," for bundle_id, recommendation_data in user_recommendations.items():\n"," identity = [\n"," recommendation_data['user_id'],\n"," recommendation_data['bundle_id'],\n"," ]\n"," # features = [\n"," # recommendation_data['average_price_interaction'],\n"," # recommendation_data['average_price_bundle'],\n"," # recommendation_data['i_price_range_q1'],\n"," # recommendation_data['i_price_range_q2'],\n"," # recommendation_data['i_price_range_q3'],\n"," # recommendation_data['i_price_range_q4'],\n"," # recommendation_data['b_price_range_q1'],\n"," # recommendation_data['b_price_range_q2'],\n"," # recommendation_data['b_price_range_q3'],\n"," # recommendation_data['b_price_range_q4'],\n"," # ]\n"," # label = recommendation_data['label']\n"," # data[\"features\"].append(features)\n"," # data[\"label\"].append(label)\n"," data[\"identity\"].append(identity)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"yZfekYqTjlCQ"},"outputs":[],"source":["# X = np.array(data[\"features\"])\n","# y = np.array(data[\"label\"])\n","z = np.array(data[\"identity\"])"]},{"cell_type":"code","source":["len(z[0])"],"metadata":{"id":"nmkVoEF1vXzY","executionInfo":{"status":"ok","timestamp":1735296656849,"user_tz":-420,"elapsed":316,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"b1a4825a-93df-4ded-95aa-8fe77993cb09","colab":{"base_uri":"https://localhost:8080/"}},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["2"]},"metadata":{},"execution_count":48}]},{"cell_type":"code","execution_count":null,"metadata":{"id":"cjoDcRZvjpz8"},"outputs":[],"source":["# Split data\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"]},{"cell_type":"markdown","metadata":{"id":"pAnI6hP91049"},"source":["#### With playtime"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":6190,"status":"ok","timestamp":1734846124392,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"Uxjy-FMz15MD","outputId":"ccdc4d96-731c-47d6-bda4-72a1ef881afb"},"outputs":[{"name":"stdout","output_type":"stream","text":["User 76561197970982479:\n"," Average Playtime: 792.1293103448276\n"," Play Time Range 0-25: Start = 0.0, End = 0.0, Count = 61\n"," Play Time Range 26-50: Start = 0.0, End = 126.5, Count = 55\n"," Play Time Range 51-75: Start = 126.5, End = 607.5, Count = 58\n"," Play Time Range 76-100: Start = 607.5, End = 23532.0, Count = 58\n"]}],"source":["# prompt: create hal yang sama analyze_price_interaction function yang fokusnya pada playtime_forever\n","\n","def analyze_playtime_interaction(user_item_interactions_dict):\n"," \"\"\"\n"," Analyzes user playtime interaction based on user_item_interactions_dict.\n","\n"," Args:\n"," user_item_interactions_dict (dict): Dictionary of user-item interactions.\n","\n"," Returns:\n"," dict: A dictionary containing user playtime interaction data.\n"," \"\"\"\n","\n"," user_playtime_interactions = {}\n"," for user_id, user_data in user_item_interactions_dict.items():\n"," playtimes = []\n"," for item in user_data['items']:\n"," if item[\"item_id\"] in items_dictionary and 'playtime_forever' in item:\n"," playtimes.append(item['playtime_forever'])\n","\n"," if not playtimes:\n"," continue\n","\n"," avg_playtime = np.mean(playtimes)\n"," sorted_playtimes = np.sort(playtimes)\n","\n"," quartiles = np.percentile(sorted_playtimes, [0, 25, 50, 75, 100])\n","\n"," playtime_ranges = {\n"," '0-25': {'start': quartiles[0], 'end': quartiles[1], 'count': 0},\n"," '26-50': {'start': quartiles[1], 'end': quartiles[2], 'count': 0},\n"," '51-75': {'start': quartiles[2], 'end': quartiles[3], 'count': 0},\n"," '76-100': {'start': quartiles[3], 'end': quartiles[4], 'count': 0}\n"," }\n","\n"," for playtime in sorted_playtimes:\n"," if quartiles[0] <= playtime <= quartiles[1]:\n"," playtime_ranges['0-25']['count'] += 1\n"," elif quartiles[1] < playtime <= quartiles[2]:\n"," playtime_ranges['26-50']['count'] += 1\n"," elif quartiles[2] < playtime <= quartiles[3]:\n"," playtime_ranges['51-75']['count'] += 1\n"," elif quartiles[3] < playtime <= quartiles[4]:\n"," playtime_ranges['76-100']['count'] += 1\n","\n"," user_playtime_interactions[user_id] = {\n"," 'avg_playtime': avg_playtime,\n"," 'playtime_ranges': playtime_ranges,\n"," }\n","\n"," return user_playtime_interactions\n","\n","# Example usage\n","user_playtime_data = analyze_playtime_interaction(user_item_interactions_dict)\n","\n","#Print the result\n","for user_id, user_data in user_playtime_data.items():\n"," print(f\"User {user_id}:\")\n"," print(f\" Average Playtime: {user_data['avg_playtime']}\")\n"," for range_name, range_data in user_data['playtime_ranges'].items():\n"," print(f\" Play Time Range {range_name}: Start = {range_data['start']}, End = {range_data['end']}, Count = {range_data['count']}\")\n"," break"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"X3H-gqEN5X1P"},"outputs":[],"source":["# prompt: now sort user_playtime_data based on their count in playtime_ranges and do not change the dictionary format\n","\n","# Sort playtime ranges within each user's data based on count\n","for user_id, user_data in user_playtime_data.items():\n"," sorted_playtime_ranges = dict(sorted(user_data['playtime_ranges'].items(), key=lambda item: item[1]['count'], reverse=True))\n"," user_data['playtime_ranges'] = sorted_playtime_ranges"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":594,"status":"ok","timestamp":1734848085971,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"sjuHzHQI_9Yw","outputId":"dd35ac32-e8ae-443e-b0a9-18a1c891b939"},"outputs":[{"name":"stdout","output_type":"stream","text":["User: 76561197970982479, Item ID: 10, Item Info: {'item_id': '10', 'item_name': 'Counter-Strike', 'playtime_forever': 6, 'playtime_2weeks': 0}\n"]}],"source":["# prompt: buat items pada user_item_interactions_dict menjadi dictionary dengan menggunakan item_id sebagai keynya\n","\n","def transform_user_item_interactions(user_item_interactions_dict):\n"," \"\"\"Transforms the 'items' list in user_item_interactions_dict to a dictionary.\n","\n"," Args:\n"," user_item_interactions_dict (dict): The input dictionary.\n","\n"," Returns:\n"," dict: A new dictionary with 'items' as a dictionary keyed by 'item_id'.\n"," \"\"\"\n"," new_dict = {}\n"," for user_id, user_data in user_item_interactions_dict.items():\n"," new_items = {}\n"," for item in user_data['items']:\n"," new_items[item['item_id']] = item # Use item_id as the key\n"," new_dict[user_id] = {'items': new_items}\n"," return new_dict\n","\n","# Example usage (assuming user_item_interactions_dict is defined)\n","transformed_interactions = transform_user_item_interactions(user_item_interactions_dict)\n","\n","# Accessing item data using the new dictionary\n","for user_id, data in transformed_interactions.items():\n"," for item_id, item_info in data['items'].items():\n"," print(f\"User: {user_id}, Item ID: {item_id}, Item Info: {item_info}\")\n"," break\n"," break"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":233079,"status":"ok","timestamp":1734848579395,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"lS3H6d8n8w7A","outputId":"2c38d0b5-68aa-4909-db80-d87f6e6e71e0","collapsed":true},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[1;30;43mStreaming output truncated to the last 5000 lines.\u001b[0m\n","count: 27132 of 32132\n","count: 27133 of 32132\n","count: 27134 of 32132\n","count: 27135 of 32132\n","count: 27136 of 32132\n","count: 27137 of 32132\n","count: 27138 of 32132\n","count: 27139 of 32132\n","count: 27140 of 32132\n","count: 27141 of 32132\n","count: 27142 of 32132\n","count: 27143 of 32132\n","count: 27144 of 32132\n","count: 27145 of 32132\n","count: 27146 of 32132\n","count: 27147 of 32132\n","count: 27148 of 32132\n","count: 27149 of 32132\n","count: 27150 of 32132\n","count: 27151 of 32132\n","count: 27152 of 32132\n","count: 27153 of 32132\n","count: 27154 of 32132\n","count: 27155 of 32132\n","count: 27156 of 32132\n","count: 27157 of 32132\n","count: 27158 of 32132\n","count: 27159 of 32132\n","count: 27160 of 32132\n","count: 27161 of 32132\n","count: 27162 of 32132\n","count: 27163 of 32132\n","count: 27164 of 32132\n","count: 27165 of 32132\n","count: 27166 of 32132\n","count: 27167 of 32132\n","count: 27168 of 32132\n","count: 27169 of 32132\n","count: 27170 of 32132\n","count: 27171 of 32132\n","count: 27172 of 32132\n","count: 27173 of 32132\n","count: 27174 of 32132\n","count: 27175 of 32132\n","count: 27176 of 32132\n","count: 27177 of 32132\n","count: 27178 of 32132\n","count: 27179 of 32132\n","count: 27180 of 32132\n","count: 27181 of 32132\n","count: 27182 of 32132\n","count: 27183 of 32132\n","count: 27184 of 32132\n","count: 27185 of 32132\n","count: 27186 of 32132\n","count: 27187 of 32132\n","count: 27188 of 32132\n","count: 27189 of 32132\n","count: 27190 of 32132\n","count: 27191 of 32132\n","count: 27192 of 32132\n","count: 27193 of 32132\n","count: 27194 of 32132\n","count: 27195 of 32132\n","count: 27196 of 32132\n","count: 27197 of 32132\n","count: 27198 of 32132\n","count: 27199 of 32132\n","count: 27200 of 32132\n","count: 27201 of 32132\n","count: 27202 of 32132\n","count: 27203 of 32132\n","count: 27204 of 32132\n","count: 27205 of 32132\n","count: 27206 of 32132\n","count: 27207 of 32132\n","count: 27208 of 32132\n","count: 27209 of 32132\n","count: 27210 of 32132\n","count: 27211 of 32132\n","count: 27212 of 32132\n","count: 27213 of 32132\n","count: 27214 of 32132\n","count: 27215 of 32132\n","count: 27216 of 32132\n","count: 27217 of 32132\n","count: 27218 of 32132\n","count: 27219 of 32132\n","count: 27220 of 32132\n","count: 27221 of 32132\n","count: 27222 of 32132\n","count: 27223 of 32132\n","count: 27224 of 32132\n","count: 27225 of 32132\n","count: 27226 of 32132\n","count: 27227 of 32132\n","count: 27228 of 32132\n","count: 27229 of 32132\n","count: 27230 of 32132\n","count: 27231 of 32132\n","count: 27232 of 32132\n","count: 27233 of 32132\n","count: 27234 of 32132\n","count: 27235 of 32132\n","count: 27236 of 32132\n","count: 27237 of 32132\n","count: 27238 of 32132\n","count: 27239 of 32132\n","count: 27240 of 32132\n","count: 27241 of 32132\n","count: 27242 of 32132\n","count: 27243 of 32132\n","count: 27244 of 32132\n","count: 27245 of 32132\n","count: 27246 of 32132\n","count: 27247 of 32132\n","count: 27248 of 32132\n","count: 27249 of 32132\n","count: 27250 of 32132\n","count: 27251 of 32132\n","count: 27252 of 32132\n","count: 27253 of 32132\n","count: 27254 of 32132\n","count: 27255 of 32132\n","count: 27256 of 32132\n","count: 27257 of 32132\n","count: 27258 of 32132\n","count: 27259 of 32132\n","count: 27260 of 32132\n","count: 27261 of 32132\n","count: 27262 of 32132\n","count: 27263 of 32132\n","count: 27264 of 32132\n","count: 27265 of 32132\n","count: 27266 of 32132\n","count: 27267 of 32132\n","count: 27268 of 32132\n","count: 27269 of 32132\n","count: 27270 of 32132\n","count: 27271 of 32132\n","count: 27272 of 32132\n","count: 27273 of 32132\n","count: 27274 of 32132\n","count: 27275 of 32132\n","count: 27276 of 32132\n","count: 27277 of 32132\n","count: 27278 of 32132\n","count: 27279 of 32132\n","count: 27280 of 32132\n","count: 27281 of 32132\n","count: 27282 of 32132\n","count: 27283 of 32132\n","count: 27284 of 32132\n","count: 27285 of 32132\n","count: 27286 of 32132\n","count: 27287 of 32132\n","count: 27288 of 32132\n","count: 27289 of 32132\n","count: 27290 of 32132\n","count: 27291 of 32132\n","count: 27292 of 32132\n","count: 27293 of 32132\n","count: 27294 of 32132\n","count: 27295 of 32132\n","count: 27296 of 32132\n","count: 27297 of 32132\n","count: 27298 of 32132\n","count: 27299 of 32132\n","count: 27300 of 32132\n","count: 27301 of 32132\n","count: 27302 of 32132\n","count: 27303 of 32132\n","count: 27304 of 32132\n","count: 27305 of 32132\n","count: 27306 of 32132\n","count: 27307 of 32132\n","count: 27308 of 32132\n","count: 27309 of 32132\n","count: 27310 of 32132\n","count: 27311 of 32132\n","count: 27312 of 32132\n","count: 27313 of 32132\n","count: 27314 of 32132\n","count: 27315 of 32132\n","count: 27316 of 32132\n","count: 27317 of 32132\n","count: 27318 of 32132\n","count: 27319 of 32132\n","count: 27320 of 32132\n","count: 27321 of 32132\n","count: 27322 of 32132\n","count: 27323 of 32132\n","count: 27324 of 32132\n","count: 27325 of 32132\n","count: 27326 of 32132\n","count: 27327 of 32132\n","count: 27328 of 32132\n","count: 27329 of 32132\n","count: 27330 of 32132\n","count: 27331 of 32132\n","count: 27332 of 32132\n","count: 27333 of 32132\n","count: 27334 of 32132\n","count: 27335 of 32132\n","count: 27336 of 32132\n","count: 27337 of 32132\n","count: 27338 of 32132\n","count: 27339 of 32132\n","count: 27340 of 32132\n","count: 27341 of 32132\n","count: 27342 of 32132\n","count: 27343 of 32132\n","count: 27344 of 32132\n","count: 27345 of 32132\n","count: 27346 of 32132\n","count: 27347 of 32132\n","count: 27348 of 32132\n","count: 27349 of 32132\n","count: 27350 of 32132\n","count: 27351 of 32132\n","count: 27352 of 32132\n","count: 27353 of 32132\n","count: 27354 of 32132\n","count: 27355 of 32132\n","count: 27356 of 32132\n","count: 27357 of 32132\n","count: 27358 of 32132\n","count: 27359 of 32132\n","count: 27360 of 32132\n","count: 27361 of 32132\n","count: 27362 of 32132\n","count: 27363 of 32132\n","count: 27364 of 32132\n","count: 27365 of 32132\n","count: 27366 of 32132\n","count: 27367 of 32132\n","count: 27368 of 32132\n","count: 27369 of 32132\n","count: 27370 of 32132\n","count: 27371 of 32132\n","count: 27372 of 32132\n","count: 27373 of 32132\n","count: 27374 of 32132\n","count: 27375 of 32132\n","count: 27376 of 32132\n","count: 27377 of 32132\n","count: 27378 of 32132\n","count: 27379 of 32132\n","count: 27380 of 32132\n","count: 27381 of 32132\n","count: 27382 of 32132\n","count: 27383 of 32132\n","count: 27384 of 32132\n","count: 27385 of 32132\n","count: 27386 of 32132\n","count: 27387 of 32132\n","count: 27388 of 32132\n","count: 27389 of 32132\n","count: 27390 of 32132\n","count: 27391 of 32132\n","count: 27392 of 32132\n","count: 27393 of 32132\n","count: 27394 of 32132\n","count: 27395 of 32132\n","count: 27396 of 32132\n","count: 27397 of 32132\n","count: 27398 of 32132\n","count: 27399 of 32132\n","count: 27400 of 32132\n","count: 27401 of 32132\n","count: 27402 of 32132\n","count: 27403 of 32132\n","count: 27404 of 32132\n","count: 27405 of 32132\n","count: 27406 of 32132\n","count: 27407 of 32132\n","count: 27408 of 32132\n","count: 27409 of 32132\n","count: 27410 of 32132\n","count: 27411 of 32132\n","count: 27412 of 32132\n","count: 27413 of 32132\n","count: 27414 of 32132\n","count: 27415 of 32132\n","count: 27416 of 32132\n","count: 27417 of 32132\n","count: 27418 of 32132\n","count: 27419 of 32132\n","count: 27420 of 32132\n","count: 27421 of 32132\n","count: 27422 of 32132\n","count: 27423 of 32132\n","count: 27424 of 32132\n","count: 27425 of 32132\n","count: 27426 of 32132\n","count: 27427 of 32132\n","count: 27428 of 32132\n","count: 27429 of 32132\n","count: 27430 of 32132\n","count: 27431 of 32132\n","count: 27432 of 32132\n","count: 27433 of 32132\n","count: 27434 of 32132\n","count: 27435 of 32132\n","count: 27436 of 32132\n","count: 27437 of 32132\n","count: 27438 of 32132\n","count: 27439 of 32132\n","count: 27440 of 32132\n","count: 27441 of 32132\n","count: 27442 of 32132\n","count: 27443 of 32132\n","count: 27444 of 32132\n","count: 27445 of 32132\n","count: 27446 of 32132\n","count: 27447 of 32132\n","count: 27448 of 32132\n","count: 27449 of 32132\n","count: 27450 of 32132\n","count: 27451 of 32132\n","count: 27452 of 32132\n","count: 27453 of 32132\n","count: 27454 of 32132\n","count: 27455 of 32132\n","count: 27456 of 32132\n","count: 27457 of 32132\n","count: 27458 of 32132\n","count: 27459 of 32132\n","count: 27460 of 32132\n","count: 27461 of 32132\n","count: 27462 of 32132\n","count: 27463 of 32132\n","count: 27464 of 32132\n","count: 27465 of 32132\n","count: 27466 of 32132\n","count: 27467 of 32132\n","count: 27468 of 32132\n","count: 27469 of 32132\n","count: 27470 of 32132\n","count: 27471 of 32132\n","count: 27472 of 32132\n","count: 27473 of 32132\n","count: 27474 of 32132\n","count: 27475 of 32132\n","count: 27476 of 32132\n","count: 27477 of 32132\n","count: 27478 of 32132\n","count: 27479 of 32132\n","count: 27480 of 32132\n","count: 27481 of 32132\n","count: 27482 of 32132\n","count: 27483 of 32132\n","count: 27484 of 32132\n","count: 27485 of 32132\n","count: 27486 of 32132\n","count: 27487 of 32132\n","count: 27488 of 32132\n","count: 27489 of 32132\n","count: 27490 of 32132\n","count: 27491 of 32132\n","count: 27492 of 32132\n","count: 27493 of 32132\n","count: 27494 of 32132\n","count: 27495 of 32132\n","count: 27496 of 32132\n","count: 27497 of 32132\n","count: 27498 of 32132\n","count: 27499 of 32132\n","count: 27500 of 32132\n","count: 27501 of 32132\n","count: 27502 of 32132\n","count: 27503 of 32132\n","count: 27504 of 32132\n","count: 27505 of 32132\n","count: 27506 of 32132\n","count: 27507 of 32132\n","count: 27508 of 32132\n","count: 27509 of 32132\n","count: 27510 of 32132\n","count: 27511 of 32132\n","count: 27512 of 32132\n","count: 27513 of 32132\n","count: 27514 of 32132\n","count: 27515 of 32132\n","count: 27516 of 32132\n","count: 27517 of 32132\n","count: 27518 of 32132\n","count: 27519 of 32132\n","count: 27520 of 32132\n","count: 27521 of 32132\n","count: 27522 of 32132\n","count: 27523 of 32132\n","count: 27524 of 32132\n","count: 27525 of 32132\n","count: 27526 of 32132\n","count: 27527 of 32132\n","count: 27528 of 32132\n","count: 27529 of 32132\n","count: 27530 of 32132\n","count: 27531 of 32132\n","count: 27532 of 32132\n","count: 27533 of 32132\n","count: 27534 of 32132\n","count: 27535 of 32132\n","count: 27536 of 32132\n","count: 27537 of 32132\n","count: 27538 of 32132\n","count: 27539 of 32132\n","count: 27540 of 32132\n","count: 27541 of 32132\n","count: 27542 of 32132\n","count: 27543 of 32132\n","count: 27544 of 32132\n","count: 27545 of 32132\n","count: 27546 of 32132\n","count: 27547 of 32132\n","count: 27548 of 32132\n","count: 27549 of 32132\n","count: 27550 of 32132\n","count: 27551 of 32132\n","count: 27552 of 32132\n","count: 27553 of 32132\n","count: 27554 of 32132\n","count: 27555 of 32132\n","count: 27556 of 32132\n","count: 27557 of 32132\n","count: 27558 of 32132\n","count: 27559 of 32132\n","count: 27560 of 32132\n","count: 27561 of 32132\n","count: 27562 of 32132\n","count: 27563 of 32132\n","count: 27564 of 32132\n","count: 27565 of 32132\n","count: 27566 of 32132\n","count: 27567 of 32132\n","count: 27568 of 32132\n","count: 27569 of 32132\n","count: 27570 of 32132\n","count: 27571 of 32132\n","count: 27572 of 32132\n","count: 27573 of 32132\n","count: 27574 of 32132\n","count: 27575 of 32132\n","count: 27576 of 32132\n","count: 27577 of 32132\n","count: 27578 of 32132\n","count: 27579 of 32132\n","count: 27580 of 32132\n","count: 27581 of 32132\n","count: 27582 of 32132\n","count: 27583 of 32132\n","count: 27584 of 32132\n","count: 27585 of 32132\n","count: 27586 of 32132\n","count: 27587 of 32132\n","count: 27588 of 32132\n","count: 27589 of 32132\n","count: 27590 of 32132\n","count: 27591 of 32132\n","count: 27592 of 32132\n","count: 27593 of 32132\n","count: 27594 of 32132\n","count: 27595 of 32132\n","count: 27596 of 32132\n","count: 27597 of 32132\n","count: 27598 of 32132\n","count: 27599 of 32132\n","count: 27600 of 32132\n","count: 27601 of 32132\n","count: 27602 of 32132\n","count: 27603 of 32132\n","count: 27604 of 32132\n","count: 27605 of 32132\n","count: 27606 of 32132\n","count: 27607 of 32132\n","count: 27608 of 32132\n","count: 27609 of 32132\n","count: 27610 of 32132\n","count: 27611 of 32132\n","count: 27612 of 32132\n","count: 27613 of 32132\n","count: 27614 of 32132\n","count: 27615 of 32132\n","count: 27616 of 32132\n","count: 27617 of 32132\n","count: 27618 of 32132\n","count: 27619 of 32132\n","count: 27620 of 32132\n","count: 27621 of 32132\n","count: 27622 of 32132\n","count: 27623 of 32132\n","count: 27624 of 32132\n","count: 27625 of 32132\n","count: 27626 of 32132\n","count: 27627 of 32132\n","count: 27628 of 32132\n","count: 27629 of 32132\n","count: 27630 of 32132\n","count: 27631 of 32132\n","count: 27632 of 32132\n","count: 27633 of 32132\n","count: 27634 of 32132\n","count: 27635 of 32132\n","count: 27636 of 32132\n","count: 27637 of 32132\n","count: 27638 of 32132\n","count: 27639 of 32132\n","count: 27640 of 32132\n","count: 27641 of 32132\n","count: 27642 of 32132\n","count: 27643 of 32132\n","count: 27644 of 32132\n","count: 27645 of 32132\n","count: 27646 of 32132\n","count: 27647 of 32132\n","count: 27648 of 32132\n","count: 27649 of 32132\n","count: 27650 of 32132\n","count: 27651 of 32132\n","count: 27652 of 32132\n","count: 27653 of 32132\n","count: 27654 of 32132\n","count: 27655 of 32132\n","count: 27656 of 32132\n","count: 27657 of 32132\n","count: 27658 of 32132\n","count: 27659 of 32132\n","count: 27660 of 32132\n","count: 27661 of 32132\n","count: 27662 of 32132\n","count: 27663 of 32132\n","count: 27664 of 32132\n","count: 27665 of 32132\n","count: 27666 of 32132\n","count: 27667 of 32132\n","count: 27668 of 32132\n","count: 27669 of 32132\n","count: 27670 of 32132\n","count: 27671 of 32132\n","count: 27672 of 32132\n","count: 27673 of 32132\n","count: 27674 of 32132\n","count: 27675 of 32132\n","count: 27676 of 32132\n","count: 27677 of 32132\n","count: 27678 of 32132\n","count: 27679 of 32132\n","count: 27680 of 32132\n","count: 27681 of 32132\n","count: 27682 of 32132\n","count: 27683 of 32132\n","count: 27684 of 32132\n","count: 27685 of 32132\n","count: 27686 of 32132\n","count: 27687 of 32132\n","count: 27688 of 32132\n","count: 27689 of 32132\n","count: 27690 of 32132\n","count: 27691 of 32132\n","count: 27692 of 32132\n","count: 27693 of 32132\n","count: 27694 of 32132\n","count: 27695 of 32132\n","count: 27696 of 32132\n","count: 27697 of 32132\n","count: 27698 of 32132\n","count: 27699 of 32132\n","count: 27700 of 32132\n","count: 27701 of 32132\n","count: 27702 of 32132\n","count: 27703 of 32132\n","count: 27704 of 32132\n","count: 27705 of 32132\n","count: 27706 of 32132\n","count: 27707 of 32132\n","count: 27708 of 32132\n","count: 27709 of 32132\n","count: 27710 of 32132\n","count: 27711 of 32132\n","count: 27712 of 32132\n","count: 27713 of 32132\n","count: 27714 of 32132\n","count: 27715 of 32132\n","count: 27716 of 32132\n","count: 27717 of 32132\n","count: 27718 of 32132\n","count: 27719 of 32132\n","count: 27720 of 32132\n","count: 27721 of 32132\n","count: 27722 of 32132\n","count: 27723 of 32132\n","count: 27724 of 32132\n","count: 27725 of 32132\n","count: 27726 of 32132\n","count: 27727 of 32132\n","count: 27728 of 32132\n","count: 27729 of 32132\n","count: 27730 of 32132\n","count: 27731 of 32132\n","count: 27732 of 32132\n","count: 27733 of 32132\n","count: 27734 of 32132\n","count: 27735 of 32132\n","count: 27736 of 32132\n","count: 27737 of 32132\n","count: 27738 of 32132\n","count: 27739 of 32132\n","count: 27740 of 32132\n","count: 27741 of 32132\n","count: 27742 of 32132\n","count: 27743 of 32132\n","count: 27744 of 32132\n","count: 27745 of 32132\n","count: 27746 of 32132\n","count: 27747 of 32132\n","count: 27748 of 32132\n","count: 27749 of 32132\n","count: 27750 of 32132\n","count: 27751 of 32132\n","count: 27752 of 32132\n","count: 27753 of 32132\n","count: 27754 of 32132\n","count: 27755 of 32132\n","count: 27756 of 32132\n","count: 27757 of 32132\n","count: 27758 of 32132\n","count: 27759 of 32132\n","count: 27760 of 32132\n","count: 27761 of 32132\n","count: 27762 of 32132\n","count: 27763 of 32132\n","count: 27764 of 32132\n","count: 27765 of 32132\n","count: 27766 of 32132\n","count: 27767 of 32132\n","count: 27768 of 32132\n","count: 27769 of 32132\n","count: 27770 of 32132\n","count: 27771 of 32132\n","count: 27772 of 32132\n","count: 27773 of 32132\n","count: 27774 of 32132\n","count: 27775 of 32132\n","count: 27776 of 32132\n","count: 27777 of 32132\n","count: 27778 of 32132\n","count: 27779 of 32132\n","count: 27780 of 32132\n","count: 27781 of 32132\n","count: 27782 of 32132\n","count: 27783 of 32132\n","count: 27784 of 32132\n","count: 27785 of 32132\n","count: 27786 of 32132\n","count: 27787 of 32132\n","count: 27788 of 32132\n","count: 27789 of 32132\n","count: 27790 of 32132\n","count: 27791 of 32132\n","count: 27792 of 32132\n","count: 27793 of 32132\n","count: 27794 of 32132\n","count: 27795 of 32132\n","count: 27796 of 32132\n","count: 27797 of 32132\n","count: 27798 of 32132\n","count: 27799 of 32132\n","count: 27800 of 32132\n","count: 27801 of 32132\n","count: 27802 of 32132\n","count: 27803 of 32132\n","count: 27804 of 32132\n","count: 27805 of 32132\n","count: 27806 of 32132\n","count: 27807 of 32132\n","count: 27808 of 32132\n","count: 27809 of 32132\n","count: 27810 of 32132\n","count: 27811 of 32132\n","count: 27812 of 32132\n","count: 27813 of 32132\n","count: 27814 of 32132\n","count: 27815 of 32132\n","count: 27816 of 32132\n","count: 27817 of 32132\n","count: 27818 of 32132\n","count: 27819 of 32132\n","count: 27820 of 32132\n","count: 27821 of 32132\n","count: 27822 of 32132\n","count: 27823 of 32132\n","count: 27824 of 32132\n","count: 27825 of 32132\n","count: 27826 of 32132\n","count: 27827 of 32132\n","count: 27828 of 32132\n","count: 27829 of 32132\n","count: 27830 of 32132\n","count: 27831 of 32132\n","count: 27832 of 32132\n","count: 27833 of 32132\n","count: 27834 of 32132\n","count: 27835 of 32132\n","count: 27836 of 32132\n","count: 27837 of 32132\n","count: 27838 of 32132\n","count: 27839 of 32132\n","count: 27840 of 32132\n","count: 27841 of 32132\n","count: 27842 of 32132\n","count: 27843 of 32132\n","count: 27844 of 32132\n","count: 27845 of 32132\n","count: 27846 of 32132\n","count: 27847 of 32132\n","count: 27848 of 32132\n","count: 27849 of 32132\n","count: 27850 of 32132\n","count: 27851 of 32132\n","count: 27852 of 32132\n","count: 27853 of 32132\n","count: 27854 of 32132\n","count: 27855 of 32132\n","count: 27856 of 32132\n","count: 27857 of 32132\n","count: 27858 of 32132\n","count: 27859 of 32132\n","count: 27860 of 32132\n","count: 27861 of 32132\n","count: 27862 of 32132\n","count: 27863 of 32132\n","count: 27864 of 32132\n","count: 27865 of 32132\n","count: 27866 of 32132\n","count: 27867 of 32132\n","count: 27868 of 32132\n","count: 27869 of 32132\n","count: 27870 of 32132\n","count: 27871 of 32132\n","count: 27872 of 32132\n","count: 27873 of 32132\n","count: 27874 of 32132\n","count: 27875 of 32132\n","count: 27876 of 32132\n","count: 27877 of 32132\n","count: 27878 of 32132\n","count: 27879 of 32132\n","count: 27880 of 32132\n","count: 27881 of 32132\n","count: 27882 of 32132\n","count: 27883 of 32132\n","count: 27884 of 32132\n","count: 27885 of 32132\n","count: 27886 of 32132\n","count: 27887 of 32132\n","count: 27888 of 32132\n","count: 27889 of 32132\n","count: 27890 of 32132\n","count: 27891 of 32132\n","count: 27892 of 32132\n","count: 27893 of 32132\n","count: 27894 of 32132\n","count: 27895 of 32132\n","count: 27896 of 32132\n","count: 27897 of 32132\n","count: 27898 of 32132\n","count: 27899 of 32132\n","count: 27900 of 32132\n","count: 27901 of 32132\n","count: 27902 of 32132\n","count: 27903 of 32132\n","count: 27904 of 32132\n","count: 27905 of 32132\n","count: 27906 of 32132\n","count: 27907 of 32132\n","count: 27908 of 32132\n","count: 27909 of 32132\n","count: 27910 of 32132\n","count: 27911 of 32132\n","count: 27912 of 32132\n","count: 27913 of 32132\n","count: 27914 of 32132\n","count: 27915 of 32132\n","count: 27916 of 32132\n","count: 27917 of 32132\n","count: 27918 of 32132\n","count: 27919 of 32132\n","count: 27920 of 32132\n","count: 27921 of 32132\n","count: 27922 of 32132\n","count: 27923 of 32132\n","count: 27924 of 32132\n","count: 27925 of 32132\n","count: 27926 of 32132\n","count: 27927 of 32132\n","count: 27928 of 32132\n","count: 27929 of 32132\n","count: 27930 of 32132\n","count: 27931 of 32132\n","count: 27932 of 32132\n","count: 27933 of 32132\n","count: 27934 of 32132\n","count: 27935 of 32132\n","count: 27936 of 32132\n","count: 27937 of 32132\n","count: 27938 of 32132\n","count: 27939 of 32132\n","count: 27940 of 32132\n","count: 27941 of 32132\n","count: 27942 of 32132\n","count: 27943 of 32132\n","count: 27944 of 32132\n","count: 27945 of 32132\n","count: 27946 of 32132\n","count: 27947 of 32132\n","count: 27948 of 32132\n","count: 27949 of 32132\n","count: 27950 of 32132\n","count: 27951 of 32132\n","count: 27952 of 32132\n","count: 27953 of 32132\n","count: 27954 of 32132\n","count: 27955 of 32132\n","count: 27956 of 32132\n","count: 27957 of 32132\n","count: 27958 of 32132\n","count: 27959 of 32132\n","count: 27960 of 32132\n","count: 27961 of 32132\n","count: 27962 of 32132\n","count: 27963 of 32132\n","count: 27964 of 32132\n","count: 27965 of 32132\n","count: 27966 of 32132\n","count: 27967 of 32132\n","count: 27968 of 32132\n","count: 27969 of 32132\n","count: 27970 of 32132\n","count: 27971 of 32132\n","count: 27972 of 32132\n","count: 27973 of 32132\n","count: 27974 of 32132\n","count: 27975 of 32132\n","count: 27976 of 32132\n","count: 27977 of 32132\n","count: 27978 of 32132\n","count: 27979 of 32132\n","count: 27980 of 32132\n","count: 27981 of 32132\n","count: 27982 of 32132\n","count: 27983 of 32132\n","count: 27984 of 32132\n","count: 27985 of 32132\n","count: 27986 of 32132\n","count: 27987 of 32132\n","count: 27988 of 32132\n","count: 27989 of 32132\n","count: 27990 of 32132\n","count: 27991 of 32132\n","count: 27992 of 32132\n","count: 27993 of 32132\n","count: 27994 of 32132\n","count: 27995 of 32132\n","count: 27996 of 32132\n","count: 27997 of 32132\n","count: 27998 of 32132\n","count: 27999 of 32132\n","count: 28000 of 32132\n","count: 28001 of 32132\n","count: 28002 of 32132\n","count: 28003 of 32132\n","count: 28004 of 32132\n","count: 28005 of 32132\n","count: 28006 of 32132\n","count: 28007 of 32132\n","count: 28008 of 32132\n","count: 28009 of 32132\n","count: 28010 of 32132\n","count: 28011 of 32132\n","count: 28012 of 32132\n","count: 28013 of 32132\n","count: 28014 of 32132\n","count: 28015 of 32132\n","count: 28016 of 32132\n","count: 28017 of 32132\n","count: 28018 of 32132\n","count: 28019 of 32132\n","count: 28020 of 32132\n","count: 28021 of 32132\n","count: 28022 of 32132\n","count: 28023 of 32132\n","count: 28024 of 32132\n","count: 28025 of 32132\n","count: 28026 of 32132\n","count: 28027 of 32132\n","count: 28028 of 32132\n","count: 28029 of 32132\n","count: 28030 of 32132\n","count: 28031 of 32132\n","count: 28032 of 32132\n","count: 28033 of 32132\n","count: 28034 of 32132\n","count: 28035 of 32132\n","count: 28036 of 32132\n","count: 28037 of 32132\n","count: 28038 of 32132\n","count: 28039 of 32132\n","count: 28040 of 32132\n","count: 28041 of 32132\n","count: 28042 of 32132\n","count: 28043 of 32132\n","count: 28044 of 32132\n","count: 28045 of 32132\n","count: 28046 of 32132\n","count: 28047 of 32132\n","count: 28048 of 32132\n","count: 28049 of 32132\n","count: 28050 of 32132\n","count: 28051 of 32132\n","count: 28052 of 32132\n","count: 28053 of 32132\n","count: 28054 of 32132\n","count: 28055 of 32132\n","count: 28056 of 32132\n","count: 28057 of 32132\n","count: 28058 of 32132\n","count: 28059 of 32132\n","count: 28060 of 32132\n","count: 28061 of 32132\n","count: 28062 of 32132\n","count: 28063 of 32132\n","count: 28064 of 32132\n","count: 28065 of 32132\n","count: 28066 of 32132\n","count: 28067 of 32132\n","count: 28068 of 32132\n","count: 28069 of 32132\n","count: 28070 of 32132\n","count: 28071 of 32132\n","count: 28072 of 32132\n","count: 28073 of 32132\n","count: 28074 of 32132\n","count: 28075 of 32132\n","count: 28076 of 32132\n","count: 28077 of 32132\n","count: 28078 of 32132\n","count: 28079 of 32132\n","count: 28080 of 32132\n","count: 28081 of 32132\n","count: 28082 of 32132\n","count: 28083 of 32132\n","count: 28084 of 32132\n","count: 28085 of 32132\n","count: 28086 of 32132\n","count: 28087 of 32132\n","count: 28088 of 32132\n","count: 28089 of 32132\n","count: 28090 of 32132\n","count: 28091 of 32132\n","count: 28092 of 32132\n","count: 28093 of 32132\n","count: 28094 of 32132\n","count: 28095 of 32132\n","count: 28096 of 32132\n","count: 28097 of 32132\n","count: 28098 of 32132\n","count: 28099 of 32132\n","count: 28100 of 32132\n","count: 28101 of 32132\n","count: 28102 of 32132\n","count: 28103 of 32132\n","count: 28104 of 32132\n","count: 28105 of 32132\n","count: 28106 of 32132\n","count: 28107 of 32132\n","count: 28108 of 32132\n","count: 28109 of 32132\n","count: 28110 of 32132\n","count: 28111 of 32132\n","count: 28112 of 32132\n","count: 28113 of 32132\n","count: 28114 of 32132\n","count: 28115 of 32132\n","count: 28116 of 32132\n","count: 28117 of 32132\n","count: 28118 of 32132\n","count: 28119 of 32132\n","count: 28120 of 32132\n","count: 28121 of 32132\n","count: 28122 of 32132\n","count: 28123 of 32132\n","count: 28124 of 32132\n","count: 28125 of 32132\n","count: 28126 of 32132\n","count: 28127 of 32132\n","count: 28128 of 32132\n","count: 28129 of 32132\n","count: 28130 of 32132\n","count: 28131 of 32132\n","count: 28132 of 32132\n","count: 28133 of 32132\n","count: 28134 of 32132\n","count: 28135 of 32132\n","count: 28136 of 32132\n","count: 28137 of 32132\n","count: 28138 of 32132\n","count: 28139 of 32132\n","count: 28140 of 32132\n","count: 28141 of 32132\n","count: 28142 of 32132\n","count: 28143 of 32132\n","count: 28144 of 32132\n","count: 28145 of 32132\n","count: 28146 of 32132\n","count: 28147 of 32132\n","count: 28148 of 32132\n","count: 28149 of 32132\n","count: 28150 of 32132\n","count: 28151 of 32132\n","count: 28152 of 32132\n","count: 28153 of 32132\n","count: 28154 of 32132\n","count: 28155 of 32132\n","count: 28156 of 32132\n","count: 28157 of 32132\n","count: 28158 of 32132\n","count: 28159 of 32132\n","count: 28160 of 32132\n","count: 28161 of 32132\n","count: 28162 of 32132\n","count: 28163 of 32132\n","count: 28164 of 32132\n","count: 28165 of 32132\n","count: 28166 of 32132\n","count: 28167 of 32132\n","count: 28168 of 32132\n","count: 28169 of 32132\n","count: 28170 of 32132\n","count: 28171 of 32132\n","count: 28172 of 32132\n","count: 28173 of 32132\n","count: 28174 of 32132\n","count: 28175 of 32132\n","count: 28176 of 32132\n","count: 28177 of 32132\n","count: 28178 of 32132\n","count: 28179 of 32132\n","count: 28180 of 32132\n","count: 28181 of 32132\n","count: 28182 of 32132\n","count: 28183 of 32132\n","count: 28184 of 32132\n","count: 28185 of 32132\n","count: 28186 of 32132\n","count: 28187 of 32132\n","count: 28188 of 32132\n","count: 28189 of 32132\n","count: 28190 of 32132\n","count: 28191 of 32132\n","count: 28192 of 32132\n","count: 28193 of 32132\n","count: 28194 of 32132\n","count: 28195 of 32132\n","count: 28196 of 32132\n","count: 28197 of 32132\n","count: 28198 of 32132\n","count: 28199 of 32132\n","count: 28200 of 32132\n","count: 28201 of 32132\n","count: 28202 of 32132\n","count: 28203 of 32132\n","count: 28204 of 32132\n","count: 28205 of 32132\n","count: 28206 of 32132\n","count: 28207 of 32132\n","count: 28208 of 32132\n","count: 28209 of 32132\n","count: 28210 of 32132\n","count: 28211 of 32132\n","count: 28212 of 32132\n","count: 28213 of 32132\n","count: 28214 of 32132\n","count: 28215 of 32132\n","count: 28216 of 32132\n","count: 28217 of 32132\n","count: 28218 of 32132\n","count: 28219 of 32132\n","count: 28220 of 32132\n","count: 28221 of 32132\n","count: 28222 of 32132\n","count: 28223 of 32132\n","count: 28224 of 32132\n","count: 28225 of 32132\n","count: 28226 of 32132\n","count: 28227 of 32132\n","count: 28228 of 32132\n","count: 28229 of 32132\n","count: 28230 of 32132\n","count: 28231 of 32132\n","count: 28232 of 32132\n","count: 28233 of 32132\n","count: 28234 of 32132\n","count: 28235 of 32132\n","count: 28236 of 32132\n","count: 28237 of 32132\n","count: 28238 of 32132\n","count: 28239 of 32132\n","count: 28240 of 32132\n","count: 28241 of 32132\n","count: 28242 of 32132\n","count: 28243 of 32132\n","count: 28244 of 32132\n","count: 28245 of 32132\n","count: 28246 of 32132\n","count: 28247 of 32132\n","count: 28248 of 32132\n","count: 28249 of 32132\n","count: 28250 of 32132\n","count: 28251 of 32132\n","count: 28252 of 32132\n","count: 28253 of 32132\n","count: 28254 of 32132\n","count: 28255 of 32132\n","count: 28256 of 32132\n","count: 28257 of 32132\n","count: 28258 of 32132\n","count: 28259 of 32132\n","count: 28260 of 32132\n","count: 28261 of 32132\n","count: 28262 of 32132\n","count: 28263 of 32132\n","count: 28264 of 32132\n","count: 28265 of 32132\n","count: 28266 of 32132\n","count: 28267 of 32132\n","count: 28268 of 32132\n","count: 28269 of 32132\n","count: 28270 of 32132\n","count: 28271 of 32132\n","count: 28272 of 32132\n","count: 28273 of 32132\n","count: 28274 of 32132\n","count: 28275 of 32132\n","count: 28276 of 32132\n","count: 28277 of 32132\n","count: 28278 of 32132\n","count: 28279 of 32132\n","count: 28280 of 32132\n","count: 28281 of 32132\n","count: 28282 of 32132\n","count: 28283 of 32132\n","count: 28284 of 32132\n","count: 28285 of 32132\n","count: 28286 of 32132\n","count: 28287 of 32132\n","count: 28288 of 32132\n","count: 28289 of 32132\n","count: 28290 of 32132\n","count: 28291 of 32132\n","count: 28292 of 32132\n","count: 28293 of 32132\n","count: 28294 of 32132\n","count: 28295 of 32132\n","count: 28296 of 32132\n","count: 28297 of 32132\n","count: 28298 of 32132\n","count: 28299 of 32132\n","count: 28300 of 32132\n","count: 28301 of 32132\n","count: 28302 of 32132\n","count: 28303 of 32132\n","count: 28304 of 32132\n","count: 28305 of 32132\n","count: 28306 of 32132\n","count: 28307 of 32132\n","count: 28308 of 32132\n","count: 28309 of 32132\n","count: 28310 of 32132\n","count: 28311 of 32132\n","count: 28312 of 32132\n","count: 28313 of 32132\n","count: 28314 of 32132\n","count: 28315 of 32132\n","count: 28316 of 32132\n","count: 28317 of 32132\n","count: 28318 of 32132\n","count: 28319 of 32132\n","count: 28320 of 32132\n","count: 28321 of 32132\n","count: 28322 of 32132\n","count: 28323 of 32132\n","count: 28324 of 32132\n","count: 28325 of 32132\n","count: 28326 of 32132\n","count: 28327 of 32132\n","count: 28328 of 32132\n","count: 28329 of 32132\n","count: 28330 of 32132\n","count: 28331 of 32132\n","count: 28332 of 32132\n","count: 28333 of 32132\n","count: 28334 of 32132\n","count: 28335 of 32132\n","count: 28336 of 32132\n","count: 28337 of 32132\n","count: 28338 of 32132\n","count: 28339 of 32132\n","count: 28340 of 32132\n","count: 28341 of 32132\n","count: 28342 of 32132\n","count: 28343 of 32132\n","count: 28344 of 32132\n","count: 28345 of 32132\n","count: 28346 of 32132\n","count: 28347 of 32132\n","count: 28348 of 32132\n","count: 28349 of 32132\n","count: 28350 of 32132\n","count: 28351 of 32132\n","count: 28352 of 32132\n","count: 28353 of 32132\n","count: 28354 of 32132\n","count: 28355 of 32132\n","count: 28356 of 32132\n","count: 28357 of 32132\n","count: 28358 of 32132\n","count: 28359 of 32132\n","count: 28360 of 32132\n","count: 28361 of 32132\n","count: 28362 of 32132\n","count: 28363 of 32132\n","count: 28364 of 32132\n","count: 28365 of 32132\n","count: 28366 of 32132\n","count: 28367 of 32132\n","count: 28368 of 32132\n","count: 28369 of 32132\n","count: 28370 of 32132\n","count: 28371 of 32132\n","count: 28372 of 32132\n","count: 28373 of 32132\n","count: 28374 of 32132\n","count: 28375 of 32132\n","count: 28376 of 32132\n","count: 28377 of 32132\n","count: 28378 of 32132\n","count: 28379 of 32132\n","count: 28380 of 32132\n","count: 28381 of 32132\n","count: 28382 of 32132\n","count: 28383 of 32132\n","count: 28384 of 32132\n","count: 28385 of 32132\n","count: 28386 of 32132\n","count: 28387 of 32132\n","count: 28388 of 32132\n","count: 28389 of 32132\n","count: 28390 of 32132\n","count: 28391 of 32132\n","count: 28392 of 32132\n","count: 28393 of 32132\n","count: 28394 of 32132\n","count: 28395 of 32132\n","count: 28396 of 32132\n","count: 28397 of 32132\n","count: 28398 of 32132\n","count: 28399 of 32132\n","count: 28400 of 32132\n","count: 28401 of 32132\n","count: 28402 of 32132\n","count: 28403 of 32132\n","count: 28404 of 32132\n","count: 28405 of 32132\n","count: 28406 of 32132\n","count: 28407 of 32132\n","count: 28408 of 32132\n","count: 28409 of 32132\n","count: 28410 of 32132\n","count: 28411 of 32132\n","count: 28412 of 32132\n","count: 28413 of 32132\n","count: 28414 of 32132\n","count: 28415 of 32132\n","count: 28416 of 32132\n","count: 28417 of 32132\n","count: 28418 of 32132\n","count: 28419 of 32132\n","count: 28420 of 32132\n","count: 28421 of 32132\n","count: 28422 of 32132\n","count: 28423 of 32132\n","count: 28424 of 32132\n","count: 28425 of 32132\n","count: 28426 of 32132\n","count: 28427 of 32132\n","count: 28428 of 32132\n","count: 28429 of 32132\n","count: 28430 of 32132\n","count: 28431 of 32132\n","count: 28432 of 32132\n","count: 28433 of 32132\n","count: 28434 of 32132\n","count: 28435 of 32132\n","count: 28436 of 32132\n","count: 28437 of 32132\n","count: 28438 of 32132\n","count: 28439 of 32132\n","count: 28440 of 32132\n","count: 28441 of 32132\n","count: 28442 of 32132\n","count: 28443 of 32132\n","count: 28444 of 32132\n","count: 28445 of 32132\n","count: 28446 of 32132\n","count: 28447 of 32132\n","count: 28448 of 32132\n","count: 28449 of 32132\n","count: 28450 of 32132\n","count: 28451 of 32132\n","count: 28452 of 32132\n","count: 28453 of 32132\n","count: 28454 of 32132\n","count: 28455 of 32132\n","count: 28456 of 32132\n","count: 28457 of 32132\n","count: 28458 of 32132\n","count: 28459 of 32132\n","count: 28460 of 32132\n","count: 28461 of 32132\n","count: 28462 of 32132\n","count: 28463 of 32132\n","count: 28464 of 32132\n","count: 28465 of 32132\n","count: 28466 of 32132\n","count: 28467 of 32132\n","count: 28468 of 32132\n","count: 28469 of 32132\n","count: 28470 of 32132\n","count: 28471 of 32132\n","count: 28472 of 32132\n","count: 28473 of 32132\n","count: 28474 of 32132\n","count: 28475 of 32132\n","count: 28476 of 32132\n","count: 28477 of 32132\n","count: 28478 of 32132\n","count: 28479 of 32132\n","count: 28480 of 32132\n","count: 28481 of 32132\n","count: 28482 of 32132\n","count: 28483 of 32132\n","count: 28484 of 32132\n","count: 28485 of 32132\n","count: 28486 of 32132\n","count: 28487 of 32132\n","count: 28488 of 32132\n","count: 28489 of 32132\n","count: 28490 of 32132\n","count: 28491 of 32132\n","count: 28492 of 32132\n","count: 28493 of 32132\n","count: 28494 of 32132\n","count: 28495 of 32132\n","count: 28496 of 32132\n","count: 28497 of 32132\n","count: 28498 of 32132\n","count: 28499 of 32132\n","count: 28500 of 32132\n","count: 28501 of 32132\n","count: 28502 of 32132\n","count: 28503 of 32132\n","count: 28504 of 32132\n","count: 28505 of 32132\n","count: 28506 of 32132\n","count: 28507 of 32132\n","count: 28508 of 32132\n","count: 28509 of 32132\n","count: 28510 of 32132\n","count: 28511 of 32132\n","count: 28512 of 32132\n","count: 28513 of 32132\n","count: 28514 of 32132\n","count: 28515 of 32132\n","count: 28516 of 32132\n","count: 28517 of 32132\n","count: 28518 of 32132\n","count: 28519 of 32132\n","count: 28520 of 32132\n","count: 28521 of 32132\n","count: 28522 of 32132\n","count: 28523 of 32132\n","count: 28524 of 32132\n","count: 28525 of 32132\n","count: 28526 of 32132\n","count: 28527 of 32132\n","count: 28528 of 32132\n","count: 28529 of 32132\n","count: 28530 of 32132\n","count: 28531 of 32132\n","count: 28532 of 32132\n","count: 28533 of 32132\n","count: 28534 of 32132\n","count: 28535 of 32132\n","count: 28536 of 32132\n","count: 28537 of 32132\n","count: 28538 of 32132\n","count: 28539 of 32132\n","count: 28540 of 32132\n","count: 28541 of 32132\n","count: 28542 of 32132\n","count: 28543 of 32132\n","count: 28544 of 32132\n","count: 28545 of 32132\n","count: 28546 of 32132\n","count: 28547 of 32132\n","count: 28548 of 32132\n","count: 28549 of 32132\n","count: 28550 of 32132\n","count: 28551 of 32132\n","count: 28552 of 32132\n","count: 28553 of 32132\n","count: 28554 of 32132\n","count: 28555 of 32132\n","count: 28556 of 32132\n","count: 28557 of 32132\n","count: 28558 of 32132\n","count: 28559 of 32132\n","count: 28560 of 32132\n","count: 28561 of 32132\n","count: 28562 of 32132\n","count: 28563 of 32132\n","count: 28564 of 32132\n","count: 28565 of 32132\n","count: 28566 of 32132\n","count: 28567 of 32132\n","count: 28568 of 32132\n","count: 28569 of 32132\n","count: 28570 of 32132\n","count: 28571 of 32132\n","count: 28572 of 32132\n","count: 28573 of 32132\n","count: 28574 of 32132\n","count: 28575 of 32132\n","count: 28576 of 32132\n","count: 28577 of 32132\n","count: 28578 of 32132\n","count: 28579 of 32132\n","count: 28580 of 32132\n","count: 28581 of 32132\n","count: 28582 of 32132\n","count: 28583 of 32132\n","count: 28584 of 32132\n","count: 28585 of 32132\n","count: 28586 of 32132\n","count: 28587 of 32132\n","count: 28588 of 32132\n","count: 28589 of 32132\n","count: 28590 of 32132\n","count: 28591 of 32132\n","count: 28592 of 32132\n","count: 28593 of 32132\n","count: 28594 of 32132\n","count: 28595 of 32132\n","count: 28596 of 32132\n","count: 28597 of 32132\n","count: 28598 of 32132\n","count: 28599 of 32132\n","count: 28600 of 32132\n","count: 28601 of 32132\n","count: 28602 of 32132\n","count: 28603 of 32132\n","count: 28604 of 32132\n","count: 28605 of 32132\n","count: 28606 of 32132\n","count: 28607 of 32132\n","count: 28608 of 32132\n","count: 28609 of 32132\n","count: 28610 of 32132\n","count: 28611 of 32132\n","count: 28612 of 32132\n","count: 28613 of 32132\n","count: 28614 of 32132\n","count: 28615 of 32132\n","count: 28616 of 32132\n","count: 28617 of 32132\n","count: 28618 of 32132\n","count: 28619 of 32132\n","count: 28620 of 32132\n","count: 28621 of 32132\n","count: 28622 of 32132\n","count: 28623 of 32132\n","count: 28624 of 32132\n","count: 28625 of 32132\n","count: 28626 of 32132\n","count: 28627 of 32132\n","count: 28628 of 32132\n","count: 28629 of 32132\n","count: 28630 of 32132\n","count: 28631 of 32132\n","count: 28632 of 32132\n","count: 28633 of 32132\n","count: 28634 of 32132\n","count: 28635 of 32132\n","count: 28636 of 32132\n","count: 28637 of 32132\n","count: 28638 of 32132\n","count: 28639 of 32132\n","count: 28640 of 32132\n","count: 28641 of 32132\n","count: 28642 of 32132\n","count: 28643 of 32132\n","count: 28644 of 32132\n","count: 28645 of 32132\n","count: 28646 of 32132\n","count: 28647 of 32132\n","count: 28648 of 32132\n","count: 28649 of 32132\n","count: 28650 of 32132\n","count: 28651 of 32132\n","count: 28652 of 32132\n","count: 28653 of 32132\n","count: 28654 of 32132\n","count: 28655 of 32132\n","count: 28656 of 32132\n","count: 28657 of 32132\n","count: 28658 of 32132\n","count: 28659 of 32132\n","count: 28660 of 32132\n","count: 28661 of 32132\n","count: 28662 of 32132\n","count: 28663 of 32132\n","count: 28664 of 32132\n","count: 28665 of 32132\n","count: 28666 of 32132\n","count: 28667 of 32132\n","count: 28668 of 32132\n","count: 28669 of 32132\n","count: 28670 of 32132\n","count: 28671 of 32132\n","count: 28672 of 32132\n","count: 28673 of 32132\n","count: 28674 of 32132\n","count: 28675 of 32132\n","count: 28676 of 32132\n","count: 28677 of 32132\n","count: 28678 of 32132\n","count: 28679 of 32132\n","count: 28680 of 32132\n","count: 28681 of 32132\n","count: 28682 of 32132\n","count: 28683 of 32132\n","count: 28684 of 32132\n","count: 28685 of 32132\n","count: 28686 of 32132\n","count: 28687 of 32132\n","count: 28688 of 32132\n","count: 28689 of 32132\n","count: 28690 of 32132\n","count: 28691 of 32132\n","count: 28692 of 32132\n","count: 28693 of 32132\n","count: 28694 of 32132\n","count: 28695 of 32132\n","count: 28696 of 32132\n","count: 28697 of 32132\n","count: 28698 of 32132\n","count: 28699 of 32132\n","count: 28700 of 32132\n","count: 28701 of 32132\n","count: 28702 of 32132\n","count: 28703 of 32132\n","count: 28704 of 32132\n","count: 28705 of 32132\n","count: 28706 of 32132\n","count: 28707 of 32132\n","count: 28708 of 32132\n","count: 28709 of 32132\n","count: 28710 of 32132\n","count: 28711 of 32132\n","count: 28712 of 32132\n","count: 28713 of 32132\n","count: 28714 of 32132\n","count: 28715 of 32132\n","count: 28716 of 32132\n","count: 28717 of 32132\n","count: 28718 of 32132\n","count: 28719 of 32132\n","count: 28720 of 32132\n","count: 28721 of 32132\n","count: 28722 of 32132\n","count: 28723 of 32132\n","count: 28724 of 32132\n","count: 28725 of 32132\n","count: 28726 of 32132\n","count: 28727 of 32132\n","count: 28728 of 32132\n","count: 28729 of 32132\n","count: 28730 of 32132\n","count: 28731 of 32132\n","count: 28732 of 32132\n","count: 28733 of 32132\n","count: 28734 of 32132\n","count: 28735 of 32132\n","count: 28736 of 32132\n","count: 28737 of 32132\n","count: 28738 of 32132\n","count: 28739 of 32132\n","count: 28740 of 32132\n","count: 28741 of 32132\n","count: 28742 of 32132\n","count: 28743 of 32132\n","count: 28744 of 32132\n","count: 28745 of 32132\n","count: 28746 of 32132\n","count: 28747 of 32132\n","count: 28748 of 32132\n","count: 28749 of 32132\n","count: 28750 of 32132\n","count: 28751 of 32132\n","count: 28752 of 32132\n","count: 28753 of 32132\n","count: 28754 of 32132\n","count: 28755 of 32132\n","count: 28756 of 32132\n","count: 28757 of 32132\n","count: 28758 of 32132\n","count: 28759 of 32132\n","count: 28760 of 32132\n","count: 28761 of 32132\n","count: 28762 of 32132\n","count: 28763 of 32132\n","count: 28764 of 32132\n","count: 28765 of 32132\n","count: 28766 of 32132\n","count: 28767 of 32132\n","count: 28768 of 32132\n","count: 28769 of 32132\n","count: 28770 of 32132\n","count: 28771 of 32132\n","count: 28772 of 32132\n","count: 28773 of 32132\n","count: 28774 of 32132\n","count: 28775 of 32132\n","count: 28776 of 32132\n","count: 28777 of 32132\n","count: 28778 of 32132\n","count: 28779 of 32132\n","count: 28780 of 32132\n","count: 28781 of 32132\n","count: 28782 of 32132\n","count: 28783 of 32132\n","count: 28784 of 32132\n","count: 28785 of 32132\n","count: 28786 of 32132\n","count: 28787 of 32132\n","count: 28788 of 32132\n","count: 28789 of 32132\n","count: 28790 of 32132\n","count: 28791 of 32132\n","count: 28792 of 32132\n","count: 28793 of 32132\n","count: 28794 of 32132\n","count: 28795 of 32132\n","count: 28796 of 32132\n","count: 28797 of 32132\n","count: 28798 of 32132\n","count: 28799 of 32132\n","count: 28800 of 32132\n","count: 28801 of 32132\n","count: 28802 of 32132\n","count: 28803 of 32132\n","count: 28804 of 32132\n","count: 28805 of 32132\n","count: 28806 of 32132\n","count: 28807 of 32132\n","count: 28808 of 32132\n","count: 28809 of 32132\n","count: 28810 of 32132\n","count: 28811 of 32132\n","count: 28812 of 32132\n","count: 28813 of 32132\n","count: 28814 of 32132\n","count: 28815 of 32132\n","count: 28816 of 32132\n","count: 28817 of 32132\n","count: 28818 of 32132\n","count: 28819 of 32132\n","count: 28820 of 32132\n","count: 28821 of 32132\n","count: 28822 of 32132\n","count: 28823 of 32132\n","count: 28824 of 32132\n","count: 28825 of 32132\n","count: 28826 of 32132\n","count: 28827 of 32132\n","count: 28828 of 32132\n","count: 28829 of 32132\n","count: 28830 of 32132\n","count: 28831 of 32132\n","count: 28832 of 32132\n","count: 28833 of 32132\n","count: 28834 of 32132\n","count: 28835 of 32132\n","count: 28836 of 32132\n","count: 28837 of 32132\n","count: 28838 of 32132\n","count: 28839 of 32132\n","count: 28840 of 32132\n","count: 28841 of 32132\n","count: 28842 of 32132\n","count: 28843 of 32132\n","count: 28844 of 32132\n","count: 28845 of 32132\n","count: 28846 of 32132\n","count: 28847 of 32132\n","count: 28848 of 32132\n","count: 28849 of 32132\n","count: 28850 of 32132\n","count: 28851 of 32132\n","count: 28852 of 32132\n","count: 28853 of 32132\n","count: 28854 of 32132\n","count: 28855 of 32132\n","count: 28856 of 32132\n","count: 28857 of 32132\n","count: 28858 of 32132\n","count: 28859 of 32132\n","count: 28860 of 32132\n","count: 28861 of 32132\n","count: 28862 of 32132\n","count: 28863 of 32132\n","count: 28864 of 32132\n","count: 28865 of 32132\n","count: 28866 of 32132\n","count: 28867 of 32132\n","count: 28868 of 32132\n","count: 28869 of 32132\n","count: 28870 of 32132\n","count: 28871 of 32132\n","count: 28872 of 32132\n","count: 28873 of 32132\n","count: 28874 of 32132\n","count: 28875 of 32132\n","count: 28876 of 32132\n","count: 28877 of 32132\n","count: 28878 of 32132\n","count: 28879 of 32132\n","count: 28880 of 32132\n","count: 28881 of 32132\n","count: 28882 of 32132\n","count: 28883 of 32132\n","count: 28884 of 32132\n","count: 28885 of 32132\n","count: 28886 of 32132\n","count: 28887 of 32132\n","count: 28888 of 32132\n","count: 28889 of 32132\n","count: 28890 of 32132\n","count: 28891 of 32132\n","count: 28892 of 32132\n","count: 28893 of 32132\n","count: 28894 of 32132\n","count: 28895 of 32132\n","count: 28896 of 32132\n","count: 28897 of 32132\n","count: 28898 of 32132\n","count: 28899 of 32132\n","count: 28900 of 32132\n","count: 28901 of 32132\n","count: 28902 of 32132\n","count: 28903 of 32132\n","count: 28904 of 32132\n","count: 28905 of 32132\n","count: 28906 of 32132\n","count: 28907 of 32132\n","count: 28908 of 32132\n","count: 28909 of 32132\n","count: 28910 of 32132\n","count: 28911 of 32132\n","count: 28912 of 32132\n","count: 28913 of 32132\n","count: 28914 of 32132\n","count: 28915 of 32132\n","count: 28916 of 32132\n","count: 28917 of 32132\n","count: 28918 of 32132\n","count: 28919 of 32132\n","count: 28920 of 32132\n","count: 28921 of 32132\n","count: 28922 of 32132\n","count: 28923 of 32132\n","count: 28924 of 32132\n","count: 28925 of 32132\n","count: 28926 of 32132\n","count: 28927 of 32132\n","count: 28928 of 32132\n","count: 28929 of 32132\n","count: 28930 of 32132\n","count: 28931 of 32132\n","count: 28932 of 32132\n","count: 28933 of 32132\n","count: 28934 of 32132\n","count: 28935 of 32132\n","count: 28936 of 32132\n","count: 28937 of 32132\n","count: 28938 of 32132\n","count: 28939 of 32132\n","count: 28940 of 32132\n","count: 28941 of 32132\n","count: 28942 of 32132\n","count: 28943 of 32132\n","count: 28944 of 32132\n","count: 28945 of 32132\n","count: 28946 of 32132\n","count: 28947 of 32132\n","count: 28948 of 32132\n","count: 28949 of 32132\n","count: 28950 of 32132\n","count: 28951 of 32132\n","count: 28952 of 32132\n","count: 28953 of 32132\n","count: 28954 of 32132\n","count: 28955 of 32132\n","count: 28956 of 32132\n","count: 28957 of 32132\n","count: 28958 of 32132\n","count: 28959 of 32132\n","count: 28960 of 32132\n","count: 28961 of 32132\n","count: 28962 of 32132\n","count: 28963 of 32132\n","count: 28964 of 32132\n","count: 28965 of 32132\n","count: 28966 of 32132\n","count: 28967 of 32132\n","count: 28968 of 32132\n","count: 28969 of 32132\n","count: 28970 of 32132\n","count: 28971 of 32132\n","count: 28972 of 32132\n","count: 28973 of 32132\n","count: 28974 of 32132\n","count: 28975 of 32132\n","count: 28976 of 32132\n","count: 28977 of 32132\n","count: 28978 of 32132\n","count: 28979 of 32132\n","count: 28980 of 32132\n","count: 28981 of 32132\n","count: 28982 of 32132\n","count: 28983 of 32132\n","count: 28984 of 32132\n","count: 28985 of 32132\n","count: 28986 of 32132\n","count: 28987 of 32132\n","count: 28988 of 32132\n","count: 28989 of 32132\n","count: 28990 of 32132\n","count: 28991 of 32132\n","count: 28992 of 32132\n","count: 28993 of 32132\n","count: 28994 of 32132\n","count: 28995 of 32132\n","count: 28996 of 32132\n","count: 28997 of 32132\n","count: 28998 of 32132\n","count: 28999 of 32132\n","count: 29000 of 32132\n","count: 29001 of 32132\n","count: 29002 of 32132\n","count: 29003 of 32132\n","count: 29004 of 32132\n","count: 29005 of 32132\n","count: 29006 of 32132\n","count: 29007 of 32132\n","count: 29008 of 32132\n","count: 29009 of 32132\n","count: 29010 of 32132\n","count: 29011 of 32132\n","count: 29012 of 32132\n","count: 29013 of 32132\n","count: 29014 of 32132\n","count: 29015 of 32132\n","count: 29016 of 32132\n","count: 29017 of 32132\n","count: 29018 of 32132\n","count: 29019 of 32132\n","count: 29020 of 32132\n","count: 29021 of 32132\n","count: 29022 of 32132\n","count: 29023 of 32132\n","count: 29024 of 32132\n","count: 29025 of 32132\n","count: 29026 of 32132\n","count: 29027 of 32132\n","count: 29028 of 32132\n","count: 29029 of 32132\n","count: 29030 of 32132\n","count: 29031 of 32132\n","count: 29032 of 32132\n","count: 29033 of 32132\n","count: 29034 of 32132\n","count: 29035 of 32132\n","count: 29036 of 32132\n","count: 29037 of 32132\n","count: 29038 of 32132\n","count: 29039 of 32132\n","count: 29040 of 32132\n","count: 29041 of 32132\n","count: 29042 of 32132\n","count: 29043 of 32132\n","count: 29044 of 32132\n","count: 29045 of 32132\n","count: 29046 of 32132\n","count: 29047 of 32132\n","count: 29048 of 32132\n","count: 29049 of 32132\n","count: 29050 of 32132\n","count: 29051 of 32132\n","count: 29052 of 32132\n","count: 29053 of 32132\n","count: 29054 of 32132\n","count: 29055 of 32132\n","count: 29056 of 32132\n","count: 29057 of 32132\n","count: 29058 of 32132\n","count: 29059 of 32132\n","count: 29060 of 32132\n","count: 29061 of 32132\n","count: 29062 of 32132\n","count: 29063 of 32132\n","count: 29064 of 32132\n","count: 29065 of 32132\n","count: 29066 of 32132\n","count: 29067 of 32132\n","count: 29068 of 32132\n","count: 29069 of 32132\n","count: 29070 of 32132\n","count: 29071 of 32132\n","count: 29072 of 32132\n","count: 29073 of 32132\n","count: 29074 of 32132\n","count: 29075 of 32132\n","count: 29076 of 32132\n","count: 29077 of 32132\n","count: 29078 of 32132\n","count: 29079 of 32132\n","count: 29080 of 32132\n","count: 29081 of 32132\n","count: 29082 of 32132\n","count: 29083 of 32132\n","count: 29084 of 32132\n","count: 29085 of 32132\n","count: 29086 of 32132\n","count: 29087 of 32132\n","count: 29088 of 32132\n","count: 29089 of 32132\n","count: 29090 of 32132\n","count: 29091 of 32132\n","count: 29092 of 32132\n","count: 29093 of 32132\n","count: 29094 of 32132\n","count: 29095 of 32132\n","count: 29096 of 32132\n","count: 29097 of 32132\n","count: 29098 of 32132\n","count: 29099 of 32132\n","count: 29100 of 32132\n","count: 29101 of 32132\n","count: 29102 of 32132\n","count: 29103 of 32132\n","count: 29104 of 32132\n","count: 29105 of 32132\n","count: 29106 of 32132\n","count: 29107 of 32132\n","count: 29108 of 32132\n","count: 29109 of 32132\n","count: 29110 of 32132\n","count: 29111 of 32132\n","count: 29112 of 32132\n","count: 29113 of 32132\n","count: 29114 of 32132\n","count: 29115 of 32132\n","count: 29116 of 32132\n","count: 29117 of 32132\n","count: 29118 of 32132\n","count: 29119 of 32132\n","count: 29120 of 32132\n","count: 29121 of 32132\n","count: 29122 of 32132\n","count: 29123 of 32132\n","count: 29124 of 32132\n","count: 29125 of 32132\n","count: 29126 of 32132\n","count: 29127 of 32132\n","count: 29128 of 32132\n","count: 29129 of 32132\n","count: 29130 of 32132\n","count: 29131 of 32132\n","count: 29132 of 32132\n","count: 29133 of 32132\n","count: 29134 of 32132\n","count: 29135 of 32132\n","count: 29136 of 32132\n","count: 29137 of 32132\n","count: 29138 of 32132\n","count: 29139 of 32132\n","count: 29140 of 32132\n","count: 29141 of 32132\n","count: 29142 of 32132\n","count: 29143 of 32132\n","count: 29144 of 32132\n","count: 29145 of 32132\n","count: 29146 of 32132\n","count: 29147 of 32132\n","count: 29148 of 32132\n","count: 29149 of 32132\n","count: 29150 of 32132\n","count: 29151 of 32132\n","count: 29152 of 32132\n","count: 29153 of 32132\n","count: 29154 of 32132\n","count: 29155 of 32132\n","count: 29156 of 32132\n","count: 29157 of 32132\n","count: 29158 of 32132\n","count: 29159 of 32132\n","count: 29160 of 32132\n","count: 29161 of 32132\n","count: 29162 of 32132\n","count: 29163 of 32132\n","count: 29164 of 32132\n","count: 29165 of 32132\n","count: 29166 of 32132\n","count: 29167 of 32132\n","count: 29168 of 32132\n","count: 29169 of 32132\n","count: 29170 of 32132\n","count: 29171 of 32132\n","count: 29172 of 32132\n","count: 29173 of 32132\n","count: 29174 of 32132\n","count: 29175 of 32132\n","count: 29176 of 32132\n","count: 29177 of 32132\n","count: 29178 of 32132\n","count: 29179 of 32132\n","count: 29180 of 32132\n","count: 29181 of 32132\n","count: 29182 of 32132\n","count: 29183 of 32132\n","count: 29184 of 32132\n","count: 29185 of 32132\n","count: 29186 of 32132\n","count: 29187 of 32132\n","count: 29188 of 32132\n","count: 29189 of 32132\n","count: 29190 of 32132\n","count: 29191 of 32132\n","count: 29192 of 32132\n","count: 29193 of 32132\n","count: 29194 of 32132\n","count: 29195 of 32132\n","count: 29196 of 32132\n","count: 29197 of 32132\n","count: 29198 of 32132\n","count: 29199 of 32132\n","count: 29200 of 32132\n","count: 29201 of 32132\n","count: 29202 of 32132\n","count: 29203 of 32132\n","count: 29204 of 32132\n","count: 29205 of 32132\n","count: 29206 of 32132\n","count: 29207 of 32132\n","count: 29208 of 32132\n","count: 29209 of 32132\n","count: 29210 of 32132\n","count: 29211 of 32132\n","count: 29212 of 32132\n","count: 29213 of 32132\n","count: 29214 of 32132\n","count: 29215 of 32132\n","count: 29216 of 32132\n","count: 29217 of 32132\n","count: 29218 of 32132\n","count: 29219 of 32132\n","count: 29220 of 32132\n","count: 29221 of 32132\n","count: 29222 of 32132\n","count: 29223 of 32132\n","count: 29224 of 32132\n","count: 29225 of 32132\n","count: 29226 of 32132\n","count: 29227 of 32132\n","count: 29228 of 32132\n","count: 29229 of 32132\n","count: 29230 of 32132\n","count: 29231 of 32132\n","count: 29232 of 32132\n","count: 29233 of 32132\n","count: 29234 of 32132\n","count: 29235 of 32132\n","count: 29236 of 32132\n","count: 29237 of 32132\n","count: 29238 of 32132\n","count: 29239 of 32132\n","count: 29240 of 32132\n","count: 29241 of 32132\n","count: 29242 of 32132\n","count: 29243 of 32132\n","count: 29244 of 32132\n","count: 29245 of 32132\n","count: 29246 of 32132\n","count: 29247 of 32132\n","count: 29248 of 32132\n","count: 29249 of 32132\n","count: 29250 of 32132\n","count: 29251 of 32132\n","count: 29252 of 32132\n","count: 29253 of 32132\n","count: 29254 of 32132\n","count: 29255 of 32132\n","count: 29256 of 32132\n","count: 29257 of 32132\n","count: 29258 of 32132\n","count: 29259 of 32132\n","count: 29260 of 32132\n","count: 29261 of 32132\n","count: 29262 of 32132\n","count: 29263 of 32132\n","count: 29264 of 32132\n","count: 29265 of 32132\n","count: 29266 of 32132\n","count: 29267 of 32132\n","count: 29268 of 32132\n","count: 29269 of 32132\n","count: 29270 of 32132\n","count: 29271 of 32132\n","count: 29272 of 32132\n","count: 29273 of 32132\n","count: 29274 of 32132\n","count: 29275 of 32132\n","count: 29276 of 32132\n","count: 29277 of 32132\n","count: 29278 of 32132\n","count: 29279 of 32132\n","count: 29280 of 32132\n","count: 29281 of 32132\n","count: 29282 of 32132\n","count: 29283 of 32132\n","count: 29284 of 32132\n","count: 29285 of 32132\n","count: 29286 of 32132\n","count: 29287 of 32132\n","count: 29288 of 32132\n","count: 29289 of 32132\n","count: 29290 of 32132\n","count: 29291 of 32132\n","count: 29292 of 32132\n","count: 29293 of 32132\n","count: 29294 of 32132\n","count: 29295 of 32132\n","count: 29296 of 32132\n","count: 29297 of 32132\n","count: 29298 of 32132\n","count: 29299 of 32132\n","count: 29300 of 32132\n","count: 29301 of 32132\n","count: 29302 of 32132\n","count: 29303 of 32132\n","count: 29304 of 32132\n","count: 29305 of 32132\n","count: 29306 of 32132\n","count: 29307 of 32132\n","count: 29308 of 32132\n","count: 29309 of 32132\n","count: 29310 of 32132\n","count: 29311 of 32132\n","count: 29312 of 32132\n","count: 29313 of 32132\n","count: 29314 of 32132\n","count: 29315 of 32132\n","count: 29316 of 32132\n","count: 29317 of 32132\n","count: 29318 of 32132\n","count: 29319 of 32132\n","count: 29320 of 32132\n","count: 29321 of 32132\n","count: 29322 of 32132\n","count: 29323 of 32132\n","count: 29324 of 32132\n","count: 29325 of 32132\n","count: 29326 of 32132\n","count: 29327 of 32132\n","count: 29328 of 32132\n","count: 29329 of 32132\n","count: 29330 of 32132\n","count: 29331 of 32132\n","count: 29332 of 32132\n","count: 29333 of 32132\n","count: 29334 of 32132\n","count: 29335 of 32132\n","count: 29336 of 32132\n","count: 29337 of 32132\n","count: 29338 of 32132\n","count: 29339 of 32132\n","count: 29340 of 32132\n","count: 29341 of 32132\n","count: 29342 of 32132\n","count: 29343 of 32132\n","count: 29344 of 32132\n","count: 29345 of 32132\n","count: 29346 of 32132\n","count: 29347 of 32132\n","count: 29348 of 32132\n","count: 29349 of 32132\n","count: 29350 of 32132\n","count: 29351 of 32132\n","count: 29352 of 32132\n","count: 29353 of 32132\n","count: 29354 of 32132\n","count: 29355 of 32132\n","count: 29356 of 32132\n","count: 29357 of 32132\n","count: 29358 of 32132\n","count: 29359 of 32132\n","count: 29360 of 32132\n","count: 29361 of 32132\n","count: 29362 of 32132\n","count: 29363 of 32132\n","count: 29364 of 32132\n","count: 29365 of 32132\n","count: 29366 of 32132\n","count: 29367 of 32132\n","count: 29368 of 32132\n","count: 29369 of 32132\n","count: 29370 of 32132\n","count: 29371 of 32132\n","count: 29372 of 32132\n","count: 29373 of 32132\n","count: 29374 of 32132\n","count: 29375 of 32132\n","count: 29376 of 32132\n","count: 29377 of 32132\n","count: 29378 of 32132\n","count: 29379 of 32132\n","count: 29380 of 32132\n","count: 29381 of 32132\n","count: 29382 of 32132\n","count: 29383 of 32132\n","count: 29384 of 32132\n","count: 29385 of 32132\n","count: 29386 of 32132\n","count: 29387 of 32132\n","count: 29388 of 32132\n","count: 29389 of 32132\n","count: 29390 of 32132\n","count: 29391 of 32132\n","count: 29392 of 32132\n","count: 29393 of 32132\n","count: 29394 of 32132\n","count: 29395 of 32132\n","count: 29396 of 32132\n","count: 29397 of 32132\n","count: 29398 of 32132\n","count: 29399 of 32132\n","count: 29400 of 32132\n","count: 29401 of 32132\n","count: 29402 of 32132\n","count: 29403 of 32132\n","count: 29404 of 32132\n","count: 29405 of 32132\n","count: 29406 of 32132\n","count: 29407 of 32132\n","count: 29408 of 32132\n","count: 29409 of 32132\n","count: 29410 of 32132\n","count: 29411 of 32132\n","count: 29412 of 32132\n","count: 29413 of 32132\n","count: 29414 of 32132\n","count: 29415 of 32132\n","count: 29416 of 32132\n","count: 29417 of 32132\n","count: 29418 of 32132\n","count: 29419 of 32132\n","count: 29420 of 32132\n","count: 29421 of 32132\n","count: 29422 of 32132\n","count: 29423 of 32132\n","count: 29424 of 32132\n","count: 29425 of 32132\n","count: 29426 of 32132\n","count: 29427 of 32132\n","count: 29428 of 32132\n","count: 29429 of 32132\n","count: 29430 of 32132\n","count: 29431 of 32132\n","count: 29432 of 32132\n","count: 29433 of 32132\n","count: 29434 of 32132\n","count: 29435 of 32132\n","count: 29436 of 32132\n","count: 29437 of 32132\n","count: 29438 of 32132\n","count: 29439 of 32132\n","count: 29440 of 32132\n","count: 29441 of 32132\n","count: 29442 of 32132\n","count: 29443 of 32132\n","count: 29444 of 32132\n","count: 29445 of 32132\n","count: 29446 of 32132\n","count: 29447 of 32132\n","count: 29448 of 32132\n","count: 29449 of 32132\n","count: 29450 of 32132\n","count: 29451 of 32132\n","count: 29452 of 32132\n","count: 29453 of 32132\n","count: 29454 of 32132\n","count: 29455 of 32132\n","count: 29456 of 32132\n","count: 29457 of 32132\n","count: 29458 of 32132\n","count: 29459 of 32132\n","count: 29460 of 32132\n","count: 29461 of 32132\n","count: 29462 of 32132\n","count: 29463 of 32132\n","count: 29464 of 32132\n","count: 29465 of 32132\n","count: 29466 of 32132\n","count: 29467 of 32132\n","count: 29468 of 32132\n","count: 29469 of 32132\n","count: 29470 of 32132\n","count: 29471 of 32132\n","count: 29472 of 32132\n","count: 29473 of 32132\n","count: 29474 of 32132\n","count: 29475 of 32132\n","count: 29476 of 32132\n","count: 29477 of 32132\n","count: 29478 of 32132\n","count: 29479 of 32132\n","count: 29480 of 32132\n","count: 29481 of 32132\n","count: 29482 of 32132\n","count: 29483 of 32132\n","count: 29484 of 32132\n","count: 29485 of 32132\n","count: 29486 of 32132\n","count: 29487 of 32132\n","count: 29488 of 32132\n","count: 29489 of 32132\n","count: 29490 of 32132\n","count: 29491 of 32132\n","count: 29492 of 32132\n","count: 29493 of 32132\n","count: 29494 of 32132\n","count: 29495 of 32132\n","count: 29496 of 32132\n","count: 29497 of 32132\n","count: 29498 of 32132\n","count: 29499 of 32132\n","count: 29500 of 32132\n","count: 29501 of 32132\n","count: 29502 of 32132\n","count: 29503 of 32132\n","count: 29504 of 32132\n","count: 29505 of 32132\n","count: 29506 of 32132\n","count: 29507 of 32132\n","count: 29508 of 32132\n","count: 29509 of 32132\n","count: 29510 of 32132\n","count: 29511 of 32132\n","count: 29512 of 32132\n","count: 29513 of 32132\n","count: 29514 of 32132\n","count: 29515 of 32132\n","count: 29516 of 32132\n","count: 29517 of 32132\n","count: 29518 of 32132\n","count: 29519 of 32132\n","count: 29520 of 32132\n","count: 29521 of 32132\n","count: 29522 of 32132\n","count: 29523 of 32132\n","count: 29524 of 32132\n","count: 29525 of 32132\n","count: 29526 of 32132\n","count: 29527 of 32132\n","count: 29528 of 32132\n","count: 29529 of 32132\n","count: 29530 of 32132\n","count: 29531 of 32132\n","count: 29532 of 32132\n","count: 29533 of 32132\n","count: 29534 of 32132\n","count: 29535 of 32132\n","count: 29536 of 32132\n","count: 29537 of 32132\n","count: 29538 of 32132\n","count: 29539 of 32132\n","count: 29540 of 32132\n","count: 29541 of 32132\n","count: 29542 of 32132\n","count: 29543 of 32132\n","count: 29544 of 32132\n","count: 29545 of 32132\n","count: 29546 of 32132\n","count: 29547 of 32132\n","count: 29548 of 32132\n","count: 29549 of 32132\n","count: 29550 of 32132\n","count: 29551 of 32132\n","count: 29552 of 32132\n","count: 29553 of 32132\n","count: 29554 of 32132\n","count: 29555 of 32132\n","count: 29556 of 32132\n","count: 29557 of 32132\n","count: 29558 of 32132\n","count: 29559 of 32132\n","count: 29560 of 32132\n","count: 29561 of 32132\n","count: 29562 of 32132\n","count: 29563 of 32132\n","count: 29564 of 32132\n","count: 29565 of 32132\n","count: 29566 of 32132\n","count: 29567 of 32132\n","count: 29568 of 32132\n","count: 29569 of 32132\n","count: 29570 of 32132\n","count: 29571 of 32132\n","count: 29572 of 32132\n","count: 29573 of 32132\n","count: 29574 of 32132\n","count: 29575 of 32132\n","count: 29576 of 32132\n","count: 29577 of 32132\n","count: 29578 of 32132\n","count: 29579 of 32132\n","count: 29580 of 32132\n","count: 29581 of 32132\n","count: 29582 of 32132\n","count: 29583 of 32132\n","count: 29584 of 32132\n","count: 29585 of 32132\n","count: 29586 of 32132\n","count: 29587 of 32132\n","count: 29588 of 32132\n","count: 29589 of 32132\n","count: 29590 of 32132\n","count: 29591 of 32132\n","count: 29592 of 32132\n","count: 29593 of 32132\n","count: 29594 of 32132\n","count: 29595 of 32132\n","count: 29596 of 32132\n","count: 29597 of 32132\n","count: 29598 of 32132\n","count: 29599 of 32132\n","count: 29600 of 32132\n","count: 29601 of 32132\n","count: 29602 of 32132\n","count: 29603 of 32132\n","count: 29604 of 32132\n","count: 29605 of 32132\n","count: 29606 of 32132\n","count: 29607 of 32132\n","count: 29608 of 32132\n","count: 29609 of 32132\n","count: 29610 of 32132\n","count: 29611 of 32132\n","count: 29612 of 32132\n","count: 29613 of 32132\n","count: 29614 of 32132\n","count: 29615 of 32132\n","count: 29616 of 32132\n","count: 29617 of 32132\n","count: 29618 of 32132\n","count: 29619 of 32132\n","count: 29620 of 32132\n","count: 29621 of 32132\n","count: 29622 of 32132\n","count: 29623 of 32132\n","count: 29624 of 32132\n","count: 29625 of 32132\n","count: 29626 of 32132\n","count: 29627 of 32132\n","count: 29628 of 32132\n","count: 29629 of 32132\n","count: 29630 of 32132\n","count: 29631 of 32132\n","count: 29632 of 32132\n","count: 29633 of 32132\n","count: 29634 of 32132\n","count: 29635 of 32132\n","count: 29636 of 32132\n","count: 29637 of 32132\n","count: 29638 of 32132\n","count: 29639 of 32132\n","count: 29640 of 32132\n","count: 29641 of 32132\n","count: 29642 of 32132\n","count: 29643 of 32132\n","count: 29644 of 32132\n","count: 29645 of 32132\n","count: 29646 of 32132\n","count: 29647 of 32132\n","count: 29648 of 32132\n","count: 29649 of 32132\n","count: 29650 of 32132\n","count: 29651 of 32132\n","count: 29652 of 32132\n","count: 29653 of 32132\n","count: 29654 of 32132\n","count: 29655 of 32132\n","count: 29656 of 32132\n","count: 29657 of 32132\n","count: 29658 of 32132\n","count: 29659 of 32132\n","count: 29660 of 32132\n","count: 29661 of 32132\n","count: 29662 of 32132\n","count: 29663 of 32132\n","count: 29664 of 32132\n","count: 29665 of 32132\n","count: 29666 of 32132\n","count: 29667 of 32132\n","count: 29668 of 32132\n","count: 29669 of 32132\n","count: 29670 of 32132\n","count: 29671 of 32132\n","count: 29672 of 32132\n","count: 29673 of 32132\n","count: 29674 of 32132\n","count: 29675 of 32132\n","count: 29676 of 32132\n","count: 29677 of 32132\n","count: 29678 of 32132\n","count: 29679 of 32132\n","count: 29680 of 32132\n","count: 29681 of 32132\n","count: 29682 of 32132\n","count: 29683 of 32132\n","count: 29684 of 32132\n","count: 29685 of 32132\n","count: 29686 of 32132\n","count: 29687 of 32132\n","count: 29688 of 32132\n","count: 29689 of 32132\n","count: 29690 of 32132\n","count: 29691 of 32132\n","count: 29692 of 32132\n","count: 29693 of 32132\n","count: 29694 of 32132\n","count: 29695 of 32132\n","count: 29696 of 32132\n","count: 29697 of 32132\n","count: 29698 of 32132\n","count: 29699 of 32132\n","count: 29700 of 32132\n","count: 29701 of 32132\n","count: 29702 of 32132\n","count: 29703 of 32132\n","count: 29704 of 32132\n","count: 29705 of 32132\n","count: 29706 of 32132\n","count: 29707 of 32132\n","count: 29708 of 32132\n","count: 29709 of 32132\n","count: 29710 of 32132\n","count: 29711 of 32132\n","count: 29712 of 32132\n","count: 29713 of 32132\n","count: 29714 of 32132\n","count: 29715 of 32132\n","count: 29716 of 32132\n","count: 29717 of 32132\n","count: 29718 of 32132\n","count: 29719 of 32132\n","count: 29720 of 32132\n","count: 29721 of 32132\n","count: 29722 of 32132\n","count: 29723 of 32132\n","count: 29724 of 32132\n","count: 29725 of 32132\n","count: 29726 of 32132\n","count: 29727 of 32132\n","count: 29728 of 32132\n","count: 29729 of 32132\n","count: 29730 of 32132\n","count: 29731 of 32132\n","count: 29732 of 32132\n","count: 29733 of 32132\n","count: 29734 of 32132\n","count: 29735 of 32132\n","count: 29736 of 32132\n","count: 29737 of 32132\n","count: 29738 of 32132\n","count: 29739 of 32132\n","count: 29740 of 32132\n","count: 29741 of 32132\n","count: 29742 of 32132\n","count: 29743 of 32132\n","count: 29744 of 32132\n","count: 29745 of 32132\n","count: 29746 of 32132\n","count: 29747 of 32132\n","count: 29748 of 32132\n","count: 29749 of 32132\n","count: 29750 of 32132\n","count: 29751 of 32132\n","count: 29752 of 32132\n","count: 29753 of 32132\n","count: 29754 of 32132\n","count: 29755 of 32132\n","count: 29756 of 32132\n","count: 29757 of 32132\n","count: 29758 of 32132\n","count: 29759 of 32132\n","count: 29760 of 32132\n","count: 29761 of 32132\n","count: 29762 of 32132\n","count: 29763 of 32132\n","count: 29764 of 32132\n","count: 29765 of 32132\n","count: 29766 of 32132\n","count: 29767 of 32132\n","count: 29768 of 32132\n","count: 29769 of 32132\n","count: 29770 of 32132\n","count: 29771 of 32132\n","count: 29772 of 32132\n","count: 29773 of 32132\n","count: 29774 of 32132\n","count: 29775 of 32132\n","count: 29776 of 32132\n","count: 29777 of 32132\n","count: 29778 of 32132\n","count: 29779 of 32132\n","count: 29780 of 32132\n","count: 29781 of 32132\n","count: 29782 of 32132\n","count: 29783 of 32132\n","count: 29784 of 32132\n","count: 29785 of 32132\n","count: 29786 of 32132\n","count: 29787 of 32132\n","count: 29788 of 32132\n","count: 29789 of 32132\n","count: 29790 of 32132\n","count: 29791 of 32132\n","count: 29792 of 32132\n","count: 29793 of 32132\n","count: 29794 of 32132\n","count: 29795 of 32132\n","count: 29796 of 32132\n","count: 29797 of 32132\n","count: 29798 of 32132\n","count: 29799 of 32132\n","count: 29800 of 32132\n","count: 29801 of 32132\n","count: 29802 of 32132\n","count: 29803 of 32132\n","count: 29804 of 32132\n","count: 29805 of 32132\n","count: 29806 of 32132\n","count: 29807 of 32132\n","count: 29808 of 32132\n","count: 29809 of 32132\n","count: 29810 of 32132\n","count: 29811 of 32132\n","count: 29812 of 32132\n","count: 29813 of 32132\n","count: 29814 of 32132\n","count: 29815 of 32132\n","count: 29816 of 32132\n","count: 29817 of 32132\n","count: 29818 of 32132\n","count: 29819 of 32132\n","count: 29820 of 32132\n","count: 29821 of 32132\n","count: 29822 of 32132\n","count: 29823 of 32132\n","count: 29824 of 32132\n","count: 29825 of 32132\n","count: 29826 of 32132\n","count: 29827 of 32132\n","count: 29828 of 32132\n","count: 29829 of 32132\n","count: 29830 of 32132\n","count: 29831 of 32132\n","count: 29832 of 32132\n","count: 29833 of 32132\n","count: 29834 of 32132\n","count: 29835 of 32132\n","count: 29836 of 32132\n","count: 29837 of 32132\n","count: 29838 of 32132\n","count: 29839 of 32132\n","count: 29840 of 32132\n","count: 29841 of 32132\n","count: 29842 of 32132\n","count: 29843 of 32132\n","count: 29844 of 32132\n","count: 29845 of 32132\n","count: 29846 of 32132\n","count: 29847 of 32132\n","count: 29848 of 32132\n","count: 29849 of 32132\n","count: 29850 of 32132\n","count: 29851 of 32132\n","count: 29852 of 32132\n","count: 29853 of 32132\n","count: 29854 of 32132\n","count: 29855 of 32132\n","count: 29856 of 32132\n","count: 29857 of 32132\n","count: 29858 of 32132\n","count: 29859 of 32132\n","count: 29860 of 32132\n","count: 29861 of 32132\n","count: 29862 of 32132\n","count: 29863 of 32132\n","count: 29864 of 32132\n","count: 29865 of 32132\n","count: 29866 of 32132\n","count: 29867 of 32132\n","count: 29868 of 32132\n","count: 29869 of 32132\n","count: 29870 of 32132\n","count: 29871 of 32132\n","count: 29872 of 32132\n","count: 29873 of 32132\n","count: 29874 of 32132\n","count: 29875 of 32132\n","count: 29876 of 32132\n","count: 29877 of 32132\n","count: 29878 of 32132\n","count: 29879 of 32132\n","count: 29880 of 32132\n","count: 29881 of 32132\n","count: 29882 of 32132\n","count: 29883 of 32132\n","count: 29884 of 32132\n","count: 29885 of 32132\n","count: 29886 of 32132\n","count: 29887 of 32132\n","count: 29888 of 32132\n","count: 29889 of 32132\n","count: 29890 of 32132\n","count: 29891 of 32132\n","count: 29892 of 32132\n","count: 29893 of 32132\n","count: 29894 of 32132\n","count: 29895 of 32132\n","count: 29896 of 32132\n","count: 29897 of 32132\n","count: 29898 of 32132\n","count: 29899 of 32132\n","count: 29900 of 32132\n","count: 29901 of 32132\n","count: 29902 of 32132\n","count: 29903 of 32132\n","count: 29904 of 32132\n","count: 29905 of 32132\n","count: 29906 of 32132\n","count: 29907 of 32132\n","count: 29908 of 32132\n","count: 29909 of 32132\n","count: 29910 of 32132\n","count: 29911 of 32132\n","count: 29912 of 32132\n","count: 29913 of 32132\n","count: 29914 of 32132\n","count: 29915 of 32132\n","count: 29916 of 32132\n","count: 29917 of 32132\n","count: 29918 of 32132\n","count: 29919 of 32132\n","count: 29920 of 32132\n","count: 29921 of 32132\n","count: 29922 of 32132\n","count: 29923 of 32132\n","count: 29924 of 32132\n","count: 29925 of 32132\n","count: 29926 of 32132\n","count: 29927 of 32132\n","count: 29928 of 32132\n","count: 29929 of 32132\n","count: 29930 of 32132\n","count: 29931 of 32132\n","count: 29932 of 32132\n","count: 29933 of 32132\n","count: 29934 of 32132\n","count: 29935 of 32132\n","count: 29936 of 32132\n","count: 29937 of 32132\n","count: 29938 of 32132\n","count: 29939 of 32132\n","count: 29940 of 32132\n","count: 29941 of 32132\n","count: 29942 of 32132\n","count: 29943 of 32132\n","count: 29944 of 32132\n","count: 29945 of 32132\n","count: 29946 of 32132\n","count: 29947 of 32132\n","count: 29948 of 32132\n","count: 29949 of 32132\n","count: 29950 of 32132\n","count: 29951 of 32132\n","count: 29952 of 32132\n","count: 29953 of 32132\n","count: 29954 of 32132\n","count: 29955 of 32132\n","count: 29956 of 32132\n","count: 29957 of 32132\n","count: 29958 of 32132\n","count: 29959 of 32132\n","count: 29960 of 32132\n","count: 29961 of 32132\n","count: 29962 of 32132\n","count: 29963 of 32132\n","count: 29964 of 32132\n","count: 29965 of 32132\n","count: 29966 of 32132\n","count: 29967 of 32132\n","count: 29968 of 32132\n","count: 29969 of 32132\n","count: 29970 of 32132\n","count: 29971 of 32132\n","count: 29972 of 32132\n","count: 29973 of 32132\n","count: 29974 of 32132\n","count: 29975 of 32132\n","count: 29976 of 32132\n","count: 29977 of 32132\n","count: 29978 of 32132\n","count: 29979 of 32132\n","count: 29980 of 32132\n","count: 29981 of 32132\n","count: 29982 of 32132\n","count: 29983 of 32132\n","count: 29984 of 32132\n","count: 29985 of 32132\n","count: 29986 of 32132\n","count: 29987 of 32132\n","count: 29988 of 32132\n","count: 29989 of 32132\n","count: 29990 of 32132\n","count: 29991 of 32132\n","count: 29992 of 32132\n","count: 29993 of 32132\n","count: 29994 of 32132\n","count: 29995 of 32132\n","count: 29996 of 32132\n","count: 29997 of 32132\n","count: 29998 of 32132\n","count: 29999 of 32132\n","count: 30000 of 32132\n","count: 30001 of 32132\n","count: 30002 of 32132\n","count: 30003 of 32132\n","count: 30004 of 32132\n","count: 30005 of 32132\n","count: 30006 of 32132\n","count: 30007 of 32132\n","count: 30008 of 32132\n","count: 30009 of 32132\n","count: 30010 of 32132\n","count: 30011 of 32132\n","count: 30012 of 32132\n","count: 30013 of 32132\n","count: 30014 of 32132\n","count: 30015 of 32132\n","count: 30016 of 32132\n","count: 30017 of 32132\n","count: 30018 of 32132\n","count: 30019 of 32132\n","count: 30020 of 32132\n","count: 30021 of 32132\n","count: 30022 of 32132\n","count: 30023 of 32132\n","count: 30024 of 32132\n","count: 30025 of 32132\n","count: 30026 of 32132\n","count: 30027 of 32132\n","count: 30028 of 32132\n","count: 30029 of 32132\n","count: 30030 of 32132\n","count: 30031 of 32132\n","count: 30032 of 32132\n","count: 30033 of 32132\n","count: 30034 of 32132\n","count: 30035 of 32132\n","count: 30036 of 32132\n","count: 30037 of 32132\n","count: 30038 of 32132\n","count: 30039 of 32132\n","count: 30040 of 32132\n","count: 30041 of 32132\n","count: 30042 of 32132\n","count: 30043 of 32132\n","count: 30044 of 32132\n","count: 30045 of 32132\n","count: 30046 of 32132\n","count: 30047 of 32132\n","count: 30048 of 32132\n","count: 30049 of 32132\n","count: 30050 of 32132\n","count: 30051 of 32132\n","count: 30052 of 32132\n","count: 30053 of 32132\n","count: 30054 of 32132\n","count: 30055 of 32132\n","count: 30056 of 32132\n","count: 30057 of 32132\n","count: 30058 of 32132\n","count: 30059 of 32132\n","count: 30060 of 32132\n","count: 30061 of 32132\n","count: 30062 of 32132\n","count: 30063 of 32132\n","count: 30064 of 32132\n","count: 30065 of 32132\n","count: 30066 of 32132\n","count: 30067 of 32132\n","count: 30068 of 32132\n","count: 30069 of 32132\n","count: 30070 of 32132\n","count: 30071 of 32132\n","count: 30072 of 32132\n","count: 30073 of 32132\n","count: 30074 of 32132\n","count: 30075 of 32132\n","count: 30076 of 32132\n","count: 30077 of 32132\n","count: 30078 of 32132\n","count: 30079 of 32132\n","count: 30080 of 32132\n","count: 30081 of 32132\n","count: 30082 of 32132\n","count: 30083 of 32132\n","count: 30084 of 32132\n","count: 30085 of 32132\n","count: 30086 of 32132\n","count: 30087 of 32132\n","count: 30088 of 32132\n","count: 30089 of 32132\n","count: 30090 of 32132\n","count: 30091 of 32132\n","count: 30092 of 32132\n","count: 30093 of 32132\n","count: 30094 of 32132\n","count: 30095 of 32132\n","count: 30096 of 32132\n","count: 30097 of 32132\n","count: 30098 of 32132\n","count: 30099 of 32132\n","count: 30100 of 32132\n","count: 30101 of 32132\n","count: 30102 of 32132\n","count: 30103 of 32132\n","count: 30104 of 32132\n","count: 30105 of 32132\n","count: 30106 of 32132\n","count: 30107 of 32132\n","count: 30108 of 32132\n","count: 30109 of 32132\n","count: 30110 of 32132\n","count: 30111 of 32132\n","count: 30112 of 32132\n","count: 30113 of 32132\n","count: 30114 of 32132\n","count: 30115 of 32132\n","count: 30116 of 32132\n","count: 30117 of 32132\n","count: 30118 of 32132\n","count: 30119 of 32132\n","count: 30120 of 32132\n","count: 30121 of 32132\n","count: 30122 of 32132\n","count: 30123 of 32132\n","count: 30124 of 32132\n","count: 30125 of 32132\n","count: 30126 of 32132\n","count: 30127 of 32132\n","count: 30128 of 32132\n","count: 30129 of 32132\n","count: 30130 of 32132\n","count: 30131 of 32132\n","count: 30132 of 32132\n","count: 30133 of 32132\n","count: 30134 of 32132\n","count: 30135 of 32132\n","count: 30136 of 32132\n","count: 30137 of 32132\n","count: 30138 of 32132\n","count: 30139 of 32132\n","count: 30140 of 32132\n","count: 30141 of 32132\n","count: 30142 of 32132\n","count: 30143 of 32132\n","count: 30144 of 32132\n","count: 30145 of 32132\n","count: 30146 of 32132\n","count: 30147 of 32132\n","count: 30148 of 32132\n","count: 30149 of 32132\n","count: 30150 of 32132\n","count: 30151 of 32132\n","count: 30152 of 32132\n","count: 30153 of 32132\n","count: 30154 of 32132\n","count: 30155 of 32132\n","count: 30156 of 32132\n","count: 30157 of 32132\n","count: 30158 of 32132\n","count: 30159 of 32132\n","count: 30160 of 32132\n","count: 30161 of 32132\n","count: 30162 of 32132\n","count: 30163 of 32132\n","count: 30164 of 32132\n","count: 30165 of 32132\n","count: 30166 of 32132\n","count: 30167 of 32132\n","count: 30168 of 32132\n","count: 30169 of 32132\n","count: 30170 of 32132\n","count: 30171 of 32132\n","count: 30172 of 32132\n","count: 30173 of 32132\n","count: 30174 of 32132\n","count: 30175 of 32132\n","count: 30176 of 32132\n","count: 30177 of 32132\n","count: 30178 of 32132\n","count: 30179 of 32132\n","count: 30180 of 32132\n","count: 30181 of 32132\n","count: 30182 of 32132\n","count: 30183 of 32132\n","count: 30184 of 32132\n","count: 30185 of 32132\n","count: 30186 of 32132\n","count: 30187 of 32132\n","count: 30188 of 32132\n","count: 30189 of 32132\n","count: 30190 of 32132\n","count: 30191 of 32132\n","count: 30192 of 32132\n","count: 30193 of 32132\n","count: 30194 of 32132\n","count: 30195 of 32132\n","count: 30196 of 32132\n","count: 30197 of 32132\n","count: 30198 of 32132\n","count: 30199 of 32132\n","count: 30200 of 32132\n","count: 30201 of 32132\n","count: 30202 of 32132\n","count: 30203 of 32132\n","count: 30204 of 32132\n","count: 30205 of 32132\n","count: 30206 of 32132\n","count: 30207 of 32132\n","count: 30208 of 32132\n","count: 30209 of 32132\n","count: 30210 of 32132\n","count: 30211 of 32132\n","count: 30212 of 32132\n","count: 30213 of 32132\n","count: 30214 of 32132\n","count: 30215 of 32132\n","count: 30216 of 32132\n","count: 30217 of 32132\n","count: 30218 of 32132\n","count: 30219 of 32132\n","count: 30220 of 32132\n","count: 30221 of 32132\n","count: 30222 of 32132\n","count: 30223 of 32132\n","count: 30224 of 32132\n","count: 30225 of 32132\n","count: 30226 of 32132\n","count: 30227 of 32132\n","count: 30228 of 32132\n","count: 30229 of 32132\n","count: 30230 of 32132\n","count: 30231 of 32132\n","count: 30232 of 32132\n","count: 30233 of 32132\n","count: 30234 of 32132\n","count: 30235 of 32132\n","count: 30236 of 32132\n","count: 30237 of 32132\n","count: 30238 of 32132\n","count: 30239 of 32132\n","count: 30240 of 32132\n","count: 30241 of 32132\n","count: 30242 of 32132\n","count: 30243 of 32132\n","count: 30244 of 32132\n","count: 30245 of 32132\n","count: 30246 of 32132\n","count: 30247 of 32132\n","count: 30248 of 32132\n","count: 30249 of 32132\n","count: 30250 of 32132\n","count: 30251 of 32132\n","count: 30252 of 32132\n","count: 30253 of 32132\n","count: 30254 of 32132\n","count: 30255 of 32132\n","count: 30256 of 32132\n","count: 30257 of 32132\n","count: 30258 of 32132\n","count: 30259 of 32132\n","count: 30260 of 32132\n","count: 30261 of 32132\n","count: 30262 of 32132\n","count: 30263 of 32132\n","count: 30264 of 32132\n","count: 30265 of 32132\n","count: 30266 of 32132\n","count: 30267 of 32132\n","count: 30268 of 32132\n","count: 30269 of 32132\n","count: 30270 of 32132\n","count: 30271 of 32132\n","count: 30272 of 32132\n","count: 30273 of 32132\n","count: 30274 of 32132\n","count: 30275 of 32132\n","count: 30276 of 32132\n","count: 30277 of 32132\n","count: 30278 of 32132\n","count: 30279 of 32132\n","count: 30280 of 32132\n","count: 30281 of 32132\n","count: 30282 of 32132\n","count: 30283 of 32132\n","count: 30284 of 32132\n","count: 30285 of 32132\n","count: 30286 of 32132\n","count: 30287 of 32132\n","count: 30288 of 32132\n","count: 30289 of 32132\n","count: 30290 of 32132\n","count: 30291 of 32132\n","count: 30292 of 32132\n","count: 30293 of 32132\n","count: 30294 of 32132\n","count: 30295 of 32132\n","count: 30296 of 32132\n","count: 30297 of 32132\n","count: 30298 of 32132\n","count: 30299 of 32132\n","count: 30300 of 32132\n","count: 30301 of 32132\n","count: 30302 of 32132\n","count: 30303 of 32132\n","count: 30304 of 32132\n","count: 30305 of 32132\n","count: 30306 of 32132\n","count: 30307 of 32132\n","count: 30308 of 32132\n","count: 30309 of 32132\n","count: 30310 of 32132\n","count: 30311 of 32132\n","count: 30312 of 32132\n","count: 30313 of 32132\n","count: 30314 of 32132\n","count: 30315 of 32132\n","count: 30316 of 32132\n","count: 30317 of 32132\n","count: 30318 of 32132\n","count: 30319 of 32132\n","count: 30320 of 32132\n","count: 30321 of 32132\n","count: 30322 of 32132\n","count: 30323 of 32132\n","count: 30324 of 32132\n","count: 30325 of 32132\n","count: 30326 of 32132\n","count: 30327 of 32132\n","count: 30328 of 32132\n","count: 30329 of 32132\n","count: 30330 of 32132\n","count: 30331 of 32132\n","count: 30332 of 32132\n","count: 30333 of 32132\n","count: 30334 of 32132\n","count: 30335 of 32132\n","count: 30336 of 32132\n","count: 30337 of 32132\n","count: 30338 of 32132\n","count: 30339 of 32132\n","count: 30340 of 32132\n","count: 30341 of 32132\n","count: 30342 of 32132\n","count: 30343 of 32132\n","count: 30344 of 32132\n","count: 30345 of 32132\n","count: 30346 of 32132\n","count: 30347 of 32132\n","count: 30348 of 32132\n","count: 30349 of 32132\n","count: 30350 of 32132\n","count: 30351 of 32132\n","count: 30352 of 32132\n","count: 30353 of 32132\n","count: 30354 of 32132\n","count: 30355 of 32132\n","count: 30356 of 32132\n","count: 30357 of 32132\n","count: 30358 of 32132\n","count: 30359 of 32132\n","count: 30360 of 32132\n","count: 30361 of 32132\n","count: 30362 of 32132\n","count: 30363 of 32132\n","count: 30364 of 32132\n","count: 30365 of 32132\n","count: 30366 of 32132\n","count: 30367 of 32132\n","count: 30368 of 32132\n","count: 30369 of 32132\n","count: 30370 of 32132\n","count: 30371 of 32132\n","count: 30372 of 32132\n","count: 30373 of 32132\n","count: 30374 of 32132\n","count: 30375 of 32132\n","count: 30376 of 32132\n","count: 30377 of 32132\n","count: 30378 of 32132\n","count: 30379 of 32132\n","count: 30380 of 32132\n","count: 30381 of 32132\n","count: 30382 of 32132\n","count: 30383 of 32132\n","count: 30384 of 32132\n","count: 30385 of 32132\n","count: 30386 of 32132\n","count: 30387 of 32132\n","count: 30388 of 32132\n","count: 30389 of 32132\n","count: 30390 of 32132\n","count: 30391 of 32132\n","count: 30392 of 32132\n","count: 30393 of 32132\n","count: 30394 of 32132\n","count: 30395 of 32132\n","count: 30396 of 32132\n","count: 30397 of 32132\n","count: 30398 of 32132\n","count: 30399 of 32132\n","count: 30400 of 32132\n","count: 30401 of 32132\n","count: 30402 of 32132\n","count: 30403 of 32132\n","count: 30404 of 32132\n","count: 30405 of 32132\n","count: 30406 of 32132\n","count: 30407 of 32132\n","count: 30408 of 32132\n","count: 30409 of 32132\n","count: 30410 of 32132\n","count: 30411 of 32132\n","count: 30412 of 32132\n","count: 30413 of 32132\n","count: 30414 of 32132\n","count: 30415 of 32132\n","count: 30416 of 32132\n","count: 30417 of 32132\n","count: 30418 of 32132\n","count: 30419 of 32132\n","count: 30420 of 32132\n","count: 30421 of 32132\n","count: 30422 of 32132\n","count: 30423 of 32132\n","count: 30424 of 32132\n","count: 30425 of 32132\n","count: 30426 of 32132\n","count: 30427 of 32132\n","count: 30428 of 32132\n","count: 30429 of 32132\n","count: 30430 of 32132\n","count: 30431 of 32132\n","count: 30432 of 32132\n","count: 30433 of 32132\n","count: 30434 of 32132\n","count: 30435 of 32132\n","count: 30436 of 32132\n","count: 30437 of 32132\n","count: 30438 of 32132\n","count: 30439 of 32132\n","count: 30440 of 32132\n","count: 30441 of 32132\n","count: 30442 of 32132\n","count: 30443 of 32132\n","count: 30444 of 32132\n","count: 30445 of 32132\n","count: 30446 of 32132\n","count: 30447 of 32132\n","count: 30448 of 32132\n","count: 30449 of 32132\n","count: 30450 of 32132\n","count: 30451 of 32132\n","count: 30452 of 32132\n","count: 30453 of 32132\n","count: 30454 of 32132\n","count: 30455 of 32132\n","count: 30456 of 32132\n","count: 30457 of 32132\n","count: 30458 of 32132\n","count: 30459 of 32132\n","count: 30460 of 32132\n","count: 30461 of 32132\n","count: 30462 of 32132\n","count: 30463 of 32132\n","count: 30464 of 32132\n","count: 30465 of 32132\n","count: 30466 of 32132\n","count: 30467 of 32132\n","count: 30468 of 32132\n","count: 30469 of 32132\n","count: 30470 of 32132\n","count: 30471 of 32132\n","count: 30472 of 32132\n","count: 30473 of 32132\n","count: 30474 of 32132\n","count: 30475 of 32132\n","count: 30476 of 32132\n","count: 30477 of 32132\n","count: 30478 of 32132\n","count: 30479 of 32132\n","count: 30480 of 32132\n","count: 30481 of 32132\n","count: 30482 of 32132\n","count: 30483 of 32132\n","count: 30484 of 32132\n","count: 30485 of 32132\n","count: 30486 of 32132\n","count: 30487 of 32132\n","count: 30488 of 32132\n","count: 30489 of 32132\n","count: 30490 of 32132\n","count: 30491 of 32132\n","count: 30492 of 32132\n","count: 30493 of 32132\n","count: 30494 of 32132\n","count: 30495 of 32132\n","count: 30496 of 32132\n","count: 30497 of 32132\n","count: 30498 of 32132\n","count: 30499 of 32132\n","count: 30500 of 32132\n","count: 30501 of 32132\n","count: 30502 of 32132\n","count: 30503 of 32132\n","count: 30504 of 32132\n","count: 30505 of 32132\n","count: 30506 of 32132\n","count: 30507 of 32132\n","count: 30508 of 32132\n","count: 30509 of 32132\n","count: 30510 of 32132\n","count: 30511 of 32132\n","count: 30512 of 32132\n","count: 30513 of 32132\n","count: 30514 of 32132\n","count: 30515 of 32132\n","count: 30516 of 32132\n","count: 30517 of 32132\n","count: 30518 of 32132\n","count: 30519 of 32132\n","count: 30520 of 32132\n","count: 30521 of 32132\n","count: 30522 of 32132\n","count: 30523 of 32132\n","count: 30524 of 32132\n","count: 30525 of 32132\n","count: 30526 of 32132\n","count: 30527 of 32132\n","count: 30528 of 32132\n","count: 30529 of 32132\n","count: 30530 of 32132\n","count: 30531 of 32132\n","count: 30532 of 32132\n","count: 30533 of 32132\n","count: 30534 of 32132\n","count: 30535 of 32132\n","count: 30536 of 32132\n","count: 30537 of 32132\n","count: 30538 of 32132\n","count: 30539 of 32132\n","count: 30540 of 32132\n","count: 30541 of 32132\n","count: 30542 of 32132\n","count: 30543 of 32132\n","count: 30544 of 32132\n","count: 30545 of 32132\n","count: 30546 of 32132\n","count: 30547 of 32132\n","count: 30548 of 32132\n","count: 30549 of 32132\n","count: 30550 of 32132\n","count: 30551 of 32132\n","count: 30552 of 32132\n","count: 30553 of 32132\n","count: 30554 of 32132\n","count: 30555 of 32132\n","count: 30556 of 32132\n","count: 30557 of 32132\n","count: 30558 of 32132\n","count: 30559 of 32132\n","count: 30560 of 32132\n","count: 30561 of 32132\n","count: 30562 of 32132\n","count: 30563 of 32132\n","count: 30564 of 32132\n","count: 30565 of 32132\n","count: 30566 of 32132\n","count: 30567 of 32132\n","count: 30568 of 32132\n","count: 30569 of 32132\n","count: 30570 of 32132\n","count: 30571 of 32132\n","count: 30572 of 32132\n","count: 30573 of 32132\n","count: 30574 of 32132\n","count: 30575 of 32132\n","count: 30576 of 32132\n","count: 30577 of 32132\n","count: 30578 of 32132\n","count: 30579 of 32132\n","count: 30580 of 32132\n","count: 30581 of 32132\n","count: 30582 of 32132\n","count: 30583 of 32132\n","count: 30584 of 32132\n","count: 30585 of 32132\n","count: 30586 of 32132\n","count: 30587 of 32132\n","count: 30588 of 32132\n","count: 30589 of 32132\n","count: 30590 of 32132\n","count: 30591 of 32132\n","count: 30592 of 32132\n","count: 30593 of 32132\n","count: 30594 of 32132\n","count: 30595 of 32132\n","count: 30596 of 32132\n","count: 30597 of 32132\n","count: 30598 of 32132\n","count: 30599 of 32132\n","count: 30600 of 32132\n","count: 30601 of 32132\n","count: 30602 of 32132\n","count: 30603 of 32132\n","count: 30604 of 32132\n","count: 30605 of 32132\n","count: 30606 of 32132\n","count: 30607 of 32132\n","count: 30608 of 32132\n","count: 30609 of 32132\n","count: 30610 of 32132\n","count: 30611 of 32132\n","count: 30612 of 32132\n","count: 30613 of 32132\n","count: 30614 of 32132\n","count: 30615 of 32132\n","count: 30616 of 32132\n","count: 30617 of 32132\n","count: 30618 of 32132\n","count: 30619 of 32132\n","count: 30620 of 32132\n","count: 30621 of 32132\n","count: 30622 of 32132\n","count: 30623 of 32132\n","count: 30624 of 32132\n","count: 30625 of 32132\n","count: 30626 of 32132\n","count: 30627 of 32132\n","count: 30628 of 32132\n","count: 30629 of 32132\n","count: 30630 of 32132\n","count: 30631 of 32132\n","count: 30632 of 32132\n","count: 30633 of 32132\n","count: 30634 of 32132\n","count: 30635 of 32132\n","count: 30636 of 32132\n","count: 30637 of 32132\n","count: 30638 of 32132\n","count: 30639 of 32132\n","count: 30640 of 32132\n","count: 30641 of 32132\n","count: 30642 of 32132\n","count: 30643 of 32132\n","count: 30644 of 32132\n","count: 30645 of 32132\n","count: 30646 of 32132\n","count: 30647 of 32132\n","count: 30648 of 32132\n","count: 30649 of 32132\n","count: 30650 of 32132\n","count: 30651 of 32132\n","count: 30652 of 32132\n","count: 30653 of 32132\n","count: 30654 of 32132\n","count: 30655 of 32132\n","count: 30656 of 32132\n","count: 30657 of 32132\n","count: 30658 of 32132\n","count: 30659 of 32132\n","count: 30660 of 32132\n","count: 30661 of 32132\n","count: 30662 of 32132\n","count: 30663 of 32132\n","count: 30664 of 32132\n","count: 30665 of 32132\n","count: 30666 of 32132\n","count: 30667 of 32132\n","count: 30668 of 32132\n","count: 30669 of 32132\n","count: 30670 of 32132\n","count: 30671 of 32132\n","count: 30672 of 32132\n","count: 30673 of 32132\n","count: 30674 of 32132\n","count: 30675 of 32132\n","count: 30676 of 32132\n","count: 30677 of 32132\n","count: 30678 of 32132\n","count: 30679 of 32132\n","count: 30680 of 32132\n","count: 30681 of 32132\n","count: 30682 of 32132\n","count: 30683 of 32132\n","count: 30684 of 32132\n","count: 30685 of 32132\n","count: 30686 of 32132\n","count: 30687 of 32132\n","count: 30688 of 32132\n","count: 30689 of 32132\n","count: 30690 of 32132\n","count: 30691 of 32132\n","count: 30692 of 32132\n","count: 30693 of 32132\n","count: 30694 of 32132\n","count: 30695 of 32132\n","count: 30696 of 32132\n","count: 30697 of 32132\n","count: 30698 of 32132\n","count: 30699 of 32132\n","count: 30700 of 32132\n","count: 30701 of 32132\n","count: 30702 of 32132\n","count: 30703 of 32132\n","count: 30704 of 32132\n","count: 30705 of 32132\n","count: 30706 of 32132\n","count: 30707 of 32132\n","count: 30708 of 32132\n","count: 30709 of 32132\n","count: 30710 of 32132\n","count: 30711 of 32132\n","count: 30712 of 32132\n","count: 30713 of 32132\n","count: 30714 of 32132\n","count: 30715 of 32132\n","count: 30716 of 32132\n","count: 30717 of 32132\n","count: 30718 of 32132\n","count: 30719 of 32132\n","count: 30720 of 32132\n","count: 30721 of 32132\n","count: 30722 of 32132\n","count: 30723 of 32132\n","count: 30724 of 32132\n","count: 30725 of 32132\n","count: 30726 of 32132\n","count: 30727 of 32132\n","count: 30728 of 32132\n","count: 30729 of 32132\n","count: 30730 of 32132\n","count: 30731 of 32132\n","count: 30732 of 32132\n","count: 30733 of 32132\n","count: 30734 of 32132\n","count: 30735 of 32132\n","count: 30736 of 32132\n","count: 30737 of 32132\n","count: 30738 of 32132\n","count: 30739 of 32132\n","count: 30740 of 32132\n","count: 30741 of 32132\n","count: 30742 of 32132\n","count: 30743 of 32132\n","count: 30744 of 32132\n","count: 30745 of 32132\n","count: 30746 of 32132\n","count: 30747 of 32132\n","count: 30748 of 32132\n","count: 30749 of 32132\n","count: 30750 of 32132\n","count: 30751 of 32132\n","count: 30752 of 32132\n","count: 30753 of 32132\n","count: 30754 of 32132\n","count: 30755 of 32132\n","count: 30756 of 32132\n","count: 30757 of 32132\n","count: 30758 of 32132\n","count: 30759 of 32132\n","count: 30760 of 32132\n","count: 30761 of 32132\n","count: 30762 of 32132\n","count: 30763 of 32132\n","count: 30764 of 32132\n","count: 30765 of 32132\n","count: 30766 of 32132\n","count: 30767 of 32132\n","count: 30768 of 32132\n","count: 30769 of 32132\n","count: 30770 of 32132\n","count: 30771 of 32132\n","count: 30772 of 32132\n","count: 30773 of 32132\n","count: 30774 of 32132\n","count: 30775 of 32132\n","count: 30776 of 32132\n","count: 30777 of 32132\n","count: 30778 of 32132\n","count: 30779 of 32132\n","count: 30780 of 32132\n","count: 30781 of 32132\n","count: 30782 of 32132\n","count: 30783 of 32132\n","count: 30784 of 32132\n","count: 30785 of 32132\n","count: 30786 of 32132\n","count: 30787 of 32132\n","count: 30788 of 32132\n","count: 30789 of 32132\n","count: 30790 of 32132\n","count: 30791 of 32132\n","count: 30792 of 32132\n","count: 30793 of 32132\n","count: 30794 of 32132\n","count: 30795 of 32132\n","count: 30796 of 32132\n","count: 30797 of 32132\n","count: 30798 of 32132\n","count: 30799 of 32132\n","count: 30800 of 32132\n","count: 30801 of 32132\n","count: 30802 of 32132\n","count: 30803 of 32132\n","count: 30804 of 32132\n","count: 30805 of 32132\n","count: 30806 of 32132\n","count: 30807 of 32132\n","count: 30808 of 32132\n","count: 30809 of 32132\n","count: 30810 of 32132\n","count: 30811 of 32132\n","count: 30812 of 32132\n","count: 30813 of 32132\n","count: 30814 of 32132\n","count: 30815 of 32132\n","count: 30816 of 32132\n","count: 30817 of 32132\n","count: 30818 of 32132\n","count: 30819 of 32132\n","count: 30820 of 32132\n","count: 30821 of 32132\n","count: 30822 of 32132\n","count: 30823 of 32132\n","count: 30824 of 32132\n","count: 30825 of 32132\n","count: 30826 of 32132\n","count: 30827 of 32132\n","count: 30828 of 32132\n","count: 30829 of 32132\n","count: 30830 of 32132\n","count: 30831 of 32132\n","count: 30832 of 32132\n","count: 30833 of 32132\n","count: 30834 of 32132\n","count: 30835 of 32132\n","count: 30836 of 32132\n","count: 30837 of 32132\n","count: 30838 of 32132\n","count: 30839 of 32132\n","count: 30840 of 32132\n","count: 30841 of 32132\n","count: 30842 of 32132\n","count: 30843 of 32132\n","count: 30844 of 32132\n","count: 30845 of 32132\n","count: 30846 of 32132\n","count: 30847 of 32132\n","count: 30848 of 32132\n","count: 30849 of 32132\n","count: 30850 of 32132\n","count: 30851 of 32132\n","count: 30852 of 32132\n","count: 30853 of 32132\n","count: 30854 of 32132\n","count: 30855 of 32132\n","count: 30856 of 32132\n","count: 30857 of 32132\n","count: 30858 of 32132\n","count: 30859 of 32132\n","count: 30860 of 32132\n","count: 30861 of 32132\n","count: 30862 of 32132\n","count: 30863 of 32132\n","count: 30864 of 32132\n","count: 30865 of 32132\n","count: 30866 of 32132\n","count: 30867 of 32132\n","count: 30868 of 32132\n","count: 30869 of 32132\n","count: 30870 of 32132\n","count: 30871 of 32132\n","count: 30872 of 32132\n","count: 30873 of 32132\n","count: 30874 of 32132\n","count: 30875 of 32132\n","count: 30876 of 32132\n","count: 30877 of 32132\n","count: 30878 of 32132\n","count: 30879 of 32132\n","count: 30880 of 32132\n","count: 30881 of 32132\n","count: 30882 of 32132\n","count: 30883 of 32132\n","count: 30884 of 32132\n","count: 30885 of 32132\n","count: 30886 of 32132\n","count: 30887 of 32132\n","count: 30888 of 32132\n","count: 30889 of 32132\n","count: 30890 of 32132\n","count: 30891 of 32132\n","count: 30892 of 32132\n","count: 30893 of 32132\n","count: 30894 of 32132\n","count: 30895 of 32132\n","count: 30896 of 32132\n","count: 30897 of 32132\n","count: 30898 of 32132\n","count: 30899 of 32132\n","count: 30900 of 32132\n","count: 30901 of 32132\n","count: 30902 of 32132\n","count: 30903 of 32132\n","count: 30904 of 32132\n","count: 30905 of 32132\n","count: 30906 of 32132\n","count: 30907 of 32132\n","count: 30908 of 32132\n","count: 30909 of 32132\n","count: 30910 of 32132\n","count: 30911 of 32132\n","count: 30912 of 32132\n","count: 30913 of 32132\n","count: 30914 of 32132\n","count: 30915 of 32132\n","count: 30916 of 32132\n","count: 30917 of 32132\n","count: 30918 of 32132\n","count: 30919 of 32132\n","count: 30920 of 32132\n","count: 30921 of 32132\n","count: 30922 of 32132\n","count: 30923 of 32132\n","count: 30924 of 32132\n","count: 30925 of 32132\n","count: 30926 of 32132\n","count: 30927 of 32132\n","count: 30928 of 32132\n","count: 30929 of 32132\n","count: 30930 of 32132\n","count: 30931 of 32132\n","count: 30932 of 32132\n","count: 30933 of 32132\n","count: 30934 of 32132\n","count: 30935 of 32132\n","count: 30936 of 32132\n","count: 30937 of 32132\n","count: 30938 of 32132\n","count: 30939 of 32132\n","count: 30940 of 32132\n","count: 30941 of 32132\n","count: 30942 of 32132\n","count: 30943 of 32132\n","count: 30944 of 32132\n","count: 30945 of 32132\n","count: 30946 of 32132\n","count: 30947 of 32132\n","count: 30948 of 32132\n","count: 30949 of 32132\n","count: 30950 of 32132\n","count: 30951 of 32132\n","count: 30952 of 32132\n","count: 30953 of 32132\n","count: 30954 of 32132\n","count: 30955 of 32132\n","count: 30956 of 32132\n","count: 30957 of 32132\n","count: 30958 of 32132\n","count: 30959 of 32132\n","count: 30960 of 32132\n","count: 30961 of 32132\n","count: 30962 of 32132\n","count: 30963 of 32132\n","count: 30964 of 32132\n","count: 30965 of 32132\n","count: 30966 of 32132\n","count: 30967 of 32132\n","count: 30968 of 32132\n","count: 30969 of 32132\n","count: 30970 of 32132\n","count: 30971 of 32132\n","count: 30972 of 32132\n","count: 30973 of 32132\n","count: 30974 of 32132\n","count: 30975 of 32132\n","count: 30976 of 32132\n","count: 30977 of 32132\n","count: 30978 of 32132\n","count: 30979 of 32132\n","count: 30980 of 32132\n","count: 30981 of 32132\n","count: 30982 of 32132\n","count: 30983 of 32132\n","count: 30984 of 32132\n","count: 30985 of 32132\n","count: 30986 of 32132\n","count: 30987 of 32132\n","count: 30988 of 32132\n","count: 30989 of 32132\n","count: 30990 of 32132\n","count: 30991 of 32132\n","count: 30992 of 32132\n","count: 30993 of 32132\n","count: 30994 of 32132\n","count: 30995 of 32132\n","count: 30996 of 32132\n","count: 30997 of 32132\n","count: 30998 of 32132\n","count: 30999 of 32132\n","count: 31000 of 32132\n","count: 31001 of 32132\n","count: 31002 of 32132\n","count: 31003 of 32132\n","count: 31004 of 32132\n","count: 31005 of 32132\n","count: 31006 of 32132\n","count: 31007 of 32132\n","count: 31008 of 32132\n","count: 31009 of 32132\n","count: 31010 of 32132\n","count: 31011 of 32132\n","count: 31012 of 32132\n","count: 31013 of 32132\n","count: 31014 of 32132\n","count: 31015 of 32132\n","count: 31016 of 32132\n","count: 31017 of 32132\n","count: 31018 of 32132\n","count: 31019 of 32132\n","count: 31020 of 32132\n","count: 31021 of 32132\n","count: 31022 of 32132\n","count: 31023 of 32132\n","count: 31024 of 32132\n","count: 31025 of 32132\n","count: 31026 of 32132\n","count: 31027 of 32132\n","count: 31028 of 32132\n","count: 31029 of 32132\n","count: 31030 of 32132\n","count: 31031 of 32132\n","count: 31032 of 32132\n","count: 31033 of 32132\n","count: 31034 of 32132\n","count: 31035 of 32132\n","count: 31036 of 32132\n","count: 31037 of 32132\n","count: 31038 of 32132\n","count: 31039 of 32132\n","count: 31040 of 32132\n","count: 31041 of 32132\n","count: 31042 of 32132\n","count: 31043 of 32132\n","count: 31044 of 32132\n","count: 31045 of 32132\n","count: 31046 of 32132\n","count: 31047 of 32132\n","count: 31048 of 32132\n","count: 31049 of 32132\n","count: 31050 of 32132\n","count: 31051 of 32132\n","count: 31052 of 32132\n","count: 31053 of 32132\n","count: 31054 of 32132\n","count: 31055 of 32132\n","count: 31056 of 32132\n","count: 31057 of 32132\n","count: 31058 of 32132\n","count: 31059 of 32132\n","count: 31060 of 32132\n","count: 31061 of 32132\n","count: 31062 of 32132\n","count: 31063 of 32132\n","count: 31064 of 32132\n","count: 31065 of 32132\n","count: 31066 of 32132\n","count: 31067 of 32132\n","count: 31068 of 32132\n","count: 31069 of 32132\n","count: 31070 of 32132\n","count: 31071 of 32132\n","count: 31072 of 32132\n","count: 31073 of 32132\n","count: 31074 of 32132\n","count: 31075 of 32132\n","count: 31076 of 32132\n","count: 31077 of 32132\n","count: 31078 of 32132\n","count: 31079 of 32132\n","count: 31080 of 32132\n","count: 31081 of 32132\n","count: 31082 of 32132\n","count: 31083 of 32132\n","count: 31084 of 32132\n","count: 31085 of 32132\n","count: 31086 of 32132\n","count: 31087 of 32132\n","count: 31088 of 32132\n","count: 31089 of 32132\n","count: 31090 of 32132\n","count: 31091 of 32132\n","count: 31092 of 32132\n","count: 31093 of 32132\n","count: 31094 of 32132\n","count: 31095 of 32132\n","count: 31096 of 32132\n","count: 31097 of 32132\n","count: 31098 of 32132\n","count: 31099 of 32132\n","count: 31100 of 32132\n","count: 31101 of 32132\n","count: 31102 of 32132\n","count: 31103 of 32132\n","count: 31104 of 32132\n","count: 31105 of 32132\n","count: 31106 of 32132\n","count: 31107 of 32132\n","count: 31108 of 32132\n","count: 31109 of 32132\n","count: 31110 of 32132\n","count: 31111 of 32132\n","count: 31112 of 32132\n","count: 31113 of 32132\n","count: 31114 of 32132\n","count: 31115 of 32132\n","count: 31116 of 32132\n","count: 31117 of 32132\n","count: 31118 of 32132\n","count: 31119 of 32132\n","count: 31120 of 32132\n","count: 31121 of 32132\n","count: 31122 of 32132\n","count: 31123 of 32132\n","count: 31124 of 32132\n","count: 31125 of 32132\n","count: 31126 of 32132\n","count: 31127 of 32132\n","count: 31128 of 32132\n","count: 31129 of 32132\n","count: 31130 of 32132\n","count: 31131 of 32132\n","count: 31132 of 32132\n","count: 31133 of 32132\n","count: 31134 of 32132\n","count: 31135 of 32132\n","count: 31136 of 32132\n","count: 31137 of 32132\n","count: 31138 of 32132\n","count: 31139 of 32132\n","count: 31140 of 32132\n","count: 31141 of 32132\n","count: 31142 of 32132\n","count: 31143 of 32132\n","count: 31144 of 32132\n","count: 31145 of 32132\n","count: 31146 of 32132\n","count: 31147 of 32132\n","count: 31148 of 32132\n","count: 31149 of 32132\n","count: 31150 of 32132\n","count: 31151 of 32132\n","count: 31152 of 32132\n","count: 31153 of 32132\n","count: 31154 of 32132\n","count: 31155 of 32132\n","count: 31156 of 32132\n","count: 31157 of 32132\n","count: 31158 of 32132\n","count: 31159 of 32132\n","count: 31160 of 32132\n","count: 31161 of 32132\n","count: 31162 of 32132\n","count: 31163 of 32132\n","count: 31164 of 32132\n","count: 31165 of 32132\n","count: 31166 of 32132\n","count: 31167 of 32132\n","count: 31168 of 32132\n","count: 31169 of 32132\n","count: 31170 of 32132\n","count: 31171 of 32132\n","count: 31172 of 32132\n","count: 31173 of 32132\n","count: 31174 of 32132\n","count: 31175 of 32132\n","count: 31176 of 32132\n","count: 31177 of 32132\n","count: 31178 of 32132\n","count: 31179 of 32132\n","count: 31180 of 32132\n","count: 31181 of 32132\n","count: 31182 of 32132\n","count: 31183 of 32132\n","count: 31184 of 32132\n","count: 31185 of 32132\n","count: 31186 of 32132\n","count: 31187 of 32132\n","count: 31188 of 32132\n","count: 31189 of 32132\n","count: 31190 of 32132\n","count: 31191 of 32132\n","count: 31192 of 32132\n","count: 31193 of 32132\n","count: 31194 of 32132\n","count: 31195 of 32132\n","count: 31196 of 32132\n","count: 31197 of 32132\n","count: 31198 of 32132\n","count: 31199 of 32132\n","count: 31200 of 32132\n","count: 31201 of 32132\n","count: 31202 of 32132\n","count: 31203 of 32132\n","count: 31204 of 32132\n","count: 31205 of 32132\n","count: 31206 of 32132\n","count: 31207 of 32132\n","count: 31208 of 32132\n","count: 31209 of 32132\n","count: 31210 of 32132\n","count: 31211 of 32132\n","count: 31212 of 32132\n","count: 31213 of 32132\n","count: 31214 of 32132\n","count: 31215 of 32132\n","count: 31216 of 32132\n","count: 31217 of 32132\n","count: 31218 of 32132\n","count: 31219 of 32132\n","count: 31220 of 32132\n","count: 31221 of 32132\n","count: 31222 of 32132\n","count: 31223 of 32132\n","count: 31224 of 32132\n","count: 31225 of 32132\n","count: 31226 of 32132\n","count: 31227 of 32132\n","count: 31228 of 32132\n","count: 31229 of 32132\n","count: 31230 of 32132\n","count: 31231 of 32132\n","count: 31232 of 32132\n","count: 31233 of 32132\n","count: 31234 of 32132\n","count: 31235 of 32132\n","count: 31236 of 32132\n","count: 31237 of 32132\n","count: 31238 of 32132\n","count: 31239 of 32132\n","count: 31240 of 32132\n","count: 31241 of 32132\n","count: 31242 of 32132\n","count: 31243 of 32132\n","count: 31244 of 32132\n","count: 31245 of 32132\n","count: 31246 of 32132\n","count: 31247 of 32132\n","count: 31248 of 32132\n","count: 31249 of 32132\n","count: 31250 of 32132\n","count: 31251 of 32132\n","count: 31252 of 32132\n","count: 31253 of 32132\n","count: 31254 of 32132\n","count: 31255 of 32132\n","count: 31256 of 32132\n","count: 31257 of 32132\n","count: 31258 of 32132\n","count: 31259 of 32132\n","count: 31260 of 32132\n","count: 31261 of 32132\n","count: 31262 of 32132\n","count: 31263 of 32132\n","count: 31264 of 32132\n","count: 31265 of 32132\n","count: 31266 of 32132\n","count: 31267 of 32132\n","count: 31268 of 32132\n","count: 31269 of 32132\n","count: 31270 of 32132\n","count: 31271 of 32132\n","count: 31272 of 32132\n","count: 31273 of 32132\n","count: 31274 of 32132\n","count: 31275 of 32132\n","count: 31276 of 32132\n","count: 31277 of 32132\n","count: 31278 of 32132\n","count: 31279 of 32132\n","count: 31280 of 32132\n","count: 31281 of 32132\n","count: 31282 of 32132\n","count: 31283 of 32132\n","count: 31284 of 32132\n","count: 31285 of 32132\n","count: 31286 of 32132\n","count: 31287 of 32132\n","count: 31288 of 32132\n","count: 31289 of 32132\n","count: 31290 of 32132\n","count: 31291 of 32132\n","count: 31292 of 32132\n","count: 31293 of 32132\n","count: 31294 of 32132\n","count: 31295 of 32132\n","count: 31296 of 32132\n","count: 31297 of 32132\n","count: 31298 of 32132\n","count: 31299 of 32132\n","count: 31300 of 32132\n","count: 31301 of 32132\n","count: 31302 of 32132\n","count: 31303 of 32132\n","count: 31304 of 32132\n","count: 31305 of 32132\n","count: 31306 of 32132\n","count: 31307 of 32132\n","count: 31308 of 32132\n","count: 31309 of 32132\n","count: 31310 of 32132\n","count: 31311 of 32132\n","count: 31312 of 32132\n","count: 31313 of 32132\n","count: 31314 of 32132\n","count: 31315 of 32132\n","count: 31316 of 32132\n","count: 31317 of 32132\n","count: 31318 of 32132\n","count: 31319 of 32132\n","count: 31320 of 32132\n","count: 31321 of 32132\n","count: 31322 of 32132\n","count: 31323 of 32132\n","count: 31324 of 32132\n","count: 31325 of 32132\n","count: 31326 of 32132\n","count: 31327 of 32132\n","count: 31328 of 32132\n","count: 31329 of 32132\n","count: 31330 of 32132\n","count: 31331 of 32132\n","count: 31332 of 32132\n","count: 31333 of 32132\n","count: 31334 of 32132\n","count: 31335 of 32132\n","count: 31336 of 32132\n","count: 31337 of 32132\n","count: 31338 of 32132\n","count: 31339 of 32132\n","count: 31340 of 32132\n","count: 31341 of 32132\n","count: 31342 of 32132\n","count: 31343 of 32132\n","count: 31344 of 32132\n","count: 31345 of 32132\n","count: 31346 of 32132\n","count: 31347 of 32132\n","count: 31348 of 32132\n","count: 31349 of 32132\n","count: 31350 of 32132\n","count: 31351 of 32132\n","count: 31352 of 32132\n","count: 31353 of 32132\n","count: 31354 of 32132\n","count: 31355 of 32132\n","count: 31356 of 32132\n","count: 31357 of 32132\n","count: 31358 of 32132\n","count: 31359 of 32132\n","count: 31360 of 32132\n","count: 31361 of 32132\n","count: 31362 of 32132\n","count: 31363 of 32132\n","count: 31364 of 32132\n","count: 31365 of 32132\n","count: 31366 of 32132\n","count: 31367 of 32132\n","count: 31368 of 32132\n","count: 31369 of 32132\n","count: 31370 of 32132\n","count: 31371 of 32132\n","count: 31372 of 32132\n","count: 31373 of 32132\n","count: 31374 of 32132\n","count: 31375 of 32132\n","count: 31376 of 32132\n","count: 31377 of 32132\n","count: 31378 of 32132\n","count: 31379 of 32132\n","count: 31380 of 32132\n","count: 31381 of 32132\n","count: 31382 of 32132\n","count: 31383 of 32132\n","count: 31384 of 32132\n","count: 31385 of 32132\n","count: 31386 of 32132\n","count: 31387 of 32132\n","count: 31388 of 32132\n","count: 31389 of 32132\n","count: 31390 of 32132\n","count: 31391 of 32132\n","count: 31392 of 32132\n","count: 31393 of 32132\n","count: 31394 of 32132\n","count: 31395 of 32132\n","count: 31396 of 32132\n","count: 31397 of 32132\n","count: 31398 of 32132\n","count: 31399 of 32132\n","count: 31400 of 32132\n","count: 31401 of 32132\n","count: 31402 of 32132\n","count: 31403 of 32132\n","count: 31404 of 32132\n","count: 31405 of 32132\n","count: 31406 of 32132\n","count: 31407 of 32132\n","count: 31408 of 32132\n","count: 31409 of 32132\n","count: 31410 of 32132\n","count: 31411 of 32132\n","count: 31412 of 32132\n","count: 31413 of 32132\n","count: 31414 of 32132\n","count: 31415 of 32132\n","count: 31416 of 32132\n","count: 31417 of 32132\n","count: 31418 of 32132\n","count: 31419 of 32132\n","count: 31420 of 32132\n","count: 31421 of 32132\n","count: 31422 of 32132\n","count: 31423 of 32132\n","count: 31424 of 32132\n","count: 31425 of 32132\n","count: 31426 of 32132\n","count: 31427 of 32132\n","count: 31428 of 32132\n","count: 31429 of 32132\n","count: 31430 of 32132\n","count: 31431 of 32132\n","count: 31432 of 32132\n","count: 31433 of 32132\n","count: 31434 of 32132\n","count: 31435 of 32132\n","count: 31436 of 32132\n","count: 31437 of 32132\n","count: 31438 of 32132\n","count: 31439 of 32132\n","count: 31440 of 32132\n","count: 31441 of 32132\n","count: 31442 of 32132\n","count: 31443 of 32132\n","count: 31444 of 32132\n","count: 31445 of 32132\n","count: 31446 of 32132\n","count: 31447 of 32132\n","count: 31448 of 32132\n","count: 31449 of 32132\n","count: 31450 of 32132\n","count: 31451 of 32132\n","count: 31452 of 32132\n","count: 31453 of 32132\n","count: 31454 of 32132\n","count: 31455 of 32132\n","count: 31456 of 32132\n","count: 31457 of 32132\n","count: 31458 of 32132\n","count: 31459 of 32132\n","count: 31460 of 32132\n","count: 31461 of 32132\n","count: 31462 of 32132\n","count: 31463 of 32132\n","count: 31464 of 32132\n","count: 31465 of 32132\n","count: 31466 of 32132\n","count: 31467 of 32132\n","count: 31468 of 32132\n","count: 31469 of 32132\n","count: 31470 of 32132\n","count: 31471 of 32132\n","count: 31472 of 32132\n","count: 31473 of 32132\n","count: 31474 of 32132\n","count: 31475 of 32132\n","count: 31476 of 32132\n","count: 31477 of 32132\n","count: 31478 of 32132\n","count: 31479 of 32132\n","count: 31480 of 32132\n","count: 31481 of 32132\n","count: 31482 of 32132\n","count: 31483 of 32132\n","count: 31484 of 32132\n","count: 31485 of 32132\n","count: 31486 of 32132\n","count: 31487 of 32132\n","count: 31488 of 32132\n","count: 31489 of 32132\n","count: 31490 of 32132\n","count: 31491 of 32132\n","count: 31492 of 32132\n","count: 31493 of 32132\n","count: 31494 of 32132\n","count: 31495 of 32132\n","count: 31496 of 32132\n","count: 31497 of 32132\n","count: 31498 of 32132\n","count: 31499 of 32132\n","count: 31500 of 32132\n","count: 31501 of 32132\n","count: 31502 of 32132\n","count: 31503 of 32132\n","count: 31504 of 32132\n","count: 31505 of 32132\n","count: 31506 of 32132\n","count: 31507 of 32132\n","count: 31508 of 32132\n","count: 31509 of 32132\n","count: 31510 of 32132\n","count: 31511 of 32132\n","count: 31512 of 32132\n","count: 31513 of 32132\n","count: 31514 of 32132\n","count: 31515 of 32132\n","count: 31516 of 32132\n","count: 31517 of 32132\n","count: 31518 of 32132\n","count: 31519 of 32132\n","count: 31520 of 32132\n","count: 31521 of 32132\n","count: 31522 of 32132\n","count: 31523 of 32132\n","count: 31524 of 32132\n","count: 31525 of 32132\n","count: 31526 of 32132\n","count: 31527 of 32132\n","count: 31528 of 32132\n","count: 31529 of 32132\n","count: 31530 of 32132\n","count: 31531 of 32132\n","count: 31532 of 32132\n","count: 31533 of 32132\n","count: 31534 of 32132\n","count: 31535 of 32132\n","count: 31536 of 32132\n","count: 31537 of 32132\n","count: 31538 of 32132\n","count: 31539 of 32132\n","count: 31540 of 32132\n","count: 31541 of 32132\n","count: 31542 of 32132\n","count: 31543 of 32132\n","count: 31544 of 32132\n","count: 31545 of 32132\n","count: 31546 of 32132\n","count: 31547 of 32132\n","count: 31548 of 32132\n","count: 31549 of 32132\n","count: 31550 of 32132\n","count: 31551 of 32132\n","count: 31552 of 32132\n","count: 31553 of 32132\n","count: 31554 of 32132\n","count: 31555 of 32132\n","count: 31556 of 32132\n","count: 31557 of 32132\n","count: 31558 of 32132\n","count: 31559 of 32132\n","count: 31560 of 32132\n","count: 31561 of 32132\n","count: 31562 of 32132\n","count: 31563 of 32132\n","count: 31564 of 32132\n","count: 31565 of 32132\n","count: 31566 of 32132\n","count: 31567 of 32132\n","count: 31568 of 32132\n","count: 31569 of 32132\n","count: 31570 of 32132\n","count: 31571 of 32132\n","count: 31572 of 32132\n","count: 31573 of 32132\n","count: 31574 of 32132\n","count: 31575 of 32132\n","count: 31576 of 32132\n","count: 31577 of 32132\n","count: 31578 of 32132\n","count: 31579 of 32132\n","count: 31580 of 32132\n","count: 31581 of 32132\n","count: 31582 of 32132\n","count: 31583 of 32132\n","count: 31584 of 32132\n","count: 31585 of 32132\n","count: 31586 of 32132\n","count: 31587 of 32132\n","count: 31588 of 32132\n","count: 31589 of 32132\n","count: 31590 of 32132\n","count: 31591 of 32132\n","count: 31592 of 32132\n","count: 31593 of 32132\n","count: 31594 of 32132\n","count: 31595 of 32132\n","count: 31596 of 32132\n","count: 31597 of 32132\n","count: 31598 of 32132\n","count: 31599 of 32132\n","count: 31600 of 32132\n","count: 31601 of 32132\n","count: 31602 of 32132\n","count: 31603 of 32132\n","count: 31604 of 32132\n","count: 31605 of 32132\n","count: 31606 of 32132\n","count: 31607 of 32132\n","count: 31608 of 32132\n","count: 31609 of 32132\n","count: 31610 of 32132\n","count: 31611 of 32132\n","count: 31612 of 32132\n","count: 31613 of 32132\n","count: 31614 of 32132\n","count: 31615 of 32132\n","count: 31616 of 32132\n","count: 31617 of 32132\n","count: 31618 of 32132\n","count: 31619 of 32132\n","count: 31620 of 32132\n","count: 31621 of 32132\n","count: 31622 of 32132\n","count: 31623 of 32132\n","count: 31624 of 32132\n","count: 31625 of 32132\n","count: 31626 of 32132\n","count: 31627 of 32132\n","count: 31628 of 32132\n","count: 31629 of 32132\n","count: 31630 of 32132\n","count: 31631 of 32132\n","count: 31632 of 32132\n","count: 31633 of 32132\n","count: 31634 of 32132\n","count: 31635 of 32132\n","count: 31636 of 32132\n","count: 31637 of 32132\n","count: 31638 of 32132\n","count: 31639 of 32132\n","count: 31640 of 32132\n","count: 31641 of 32132\n","count: 31642 of 32132\n","count: 31643 of 32132\n","count: 31644 of 32132\n","count: 31645 of 32132\n","count: 31646 of 32132\n","count: 31647 of 32132\n","count: 31648 of 32132\n","count: 31649 of 32132\n","count: 31650 of 32132\n","count: 31651 of 32132\n","count: 31652 of 32132\n","count: 31653 of 32132\n","count: 31654 of 32132\n","count: 31655 of 32132\n","count: 31656 of 32132\n","count: 31657 of 32132\n","count: 31658 of 32132\n","count: 31659 of 32132\n","count: 31660 of 32132\n","count: 31661 of 32132\n","count: 31662 of 32132\n","count: 31663 of 32132\n","count: 31664 of 32132\n","count: 31665 of 32132\n","count: 31666 of 32132\n","count: 31667 of 32132\n","count: 31668 of 32132\n","count: 31669 of 32132\n","count: 31670 of 32132\n","count: 31671 of 32132\n","count: 31672 of 32132\n","count: 31673 of 32132\n","count: 31674 of 32132\n","count: 31675 of 32132\n","count: 31676 of 32132\n","count: 31677 of 32132\n","count: 31678 of 32132\n","count: 31679 of 32132\n","count: 31680 of 32132\n","count: 31681 of 32132\n","count: 31682 of 32132\n","count: 31683 of 32132\n","count: 31684 of 32132\n","count: 31685 of 32132\n","count: 31686 of 32132\n","count: 31687 of 32132\n","count: 31688 of 32132\n","count: 31689 of 32132\n","count: 31690 of 32132\n","count: 31691 of 32132\n","count: 31692 of 32132\n","count: 31693 of 32132\n","count: 31694 of 32132\n","count: 31695 of 32132\n","count: 31696 of 32132\n","count: 31697 of 32132\n","count: 31698 of 32132\n","count: 31699 of 32132\n","count: 31700 of 32132\n","count: 31701 of 32132\n","count: 31702 of 32132\n","count: 31703 of 32132\n","count: 31704 of 32132\n","count: 31705 of 32132\n","count: 31706 of 32132\n","count: 31707 of 32132\n","count: 31708 of 32132\n","count: 31709 of 32132\n","count: 31710 of 32132\n","count: 31711 of 32132\n","count: 31712 of 32132\n","count: 31713 of 32132\n","count: 31714 of 32132\n","count: 31715 of 32132\n","count: 31716 of 32132\n","count: 31717 of 32132\n","count: 31718 of 32132\n","count: 31719 of 32132\n","count: 31720 of 32132\n","count: 31721 of 32132\n","count: 31722 of 32132\n","count: 31723 of 32132\n","count: 31724 of 32132\n","count: 31725 of 32132\n","count: 31726 of 32132\n","count: 31727 of 32132\n","count: 31728 of 32132\n","count: 31729 of 32132\n","count: 31730 of 32132\n","count: 31731 of 32132\n","count: 31732 of 32132\n","count: 31733 of 32132\n","count: 31734 of 32132\n","count: 31735 of 32132\n","count: 31736 of 32132\n","count: 31737 of 32132\n","count: 31738 of 32132\n","count: 31739 of 32132\n","count: 31740 of 32132\n","count: 31741 of 32132\n","count: 31742 of 32132\n","count: 31743 of 32132\n","count: 31744 of 32132\n","count: 31745 of 32132\n","count: 31746 of 32132\n","count: 31747 of 32132\n","count: 31748 of 32132\n","count: 31749 of 32132\n","count: 31750 of 32132\n","count: 31751 of 32132\n","count: 31752 of 32132\n","count: 31753 of 32132\n","count: 31754 of 32132\n","count: 31755 of 32132\n","count: 31756 of 32132\n","count: 31757 of 32132\n","count: 31758 of 32132\n","count: 31759 of 32132\n","count: 31760 of 32132\n","count: 31761 of 32132\n","count: 31762 of 32132\n","count: 31763 of 32132\n","count: 31764 of 32132\n","count: 31765 of 32132\n","count: 31766 of 32132\n","count: 31767 of 32132\n","count: 31768 of 32132\n","count: 31769 of 32132\n","count: 31770 of 32132\n","count: 31771 of 32132\n","count: 31772 of 32132\n","count: 31773 of 32132\n","count: 31774 of 32132\n","count: 31775 of 32132\n","count: 31776 of 32132\n","count: 31777 of 32132\n","count: 31778 of 32132\n","count: 31779 of 32132\n","count: 31780 of 32132\n","count: 31781 of 32132\n","count: 31782 of 32132\n","count: 31783 of 32132\n","count: 31784 of 32132\n","count: 31785 of 32132\n","count: 31786 of 32132\n","count: 31787 of 32132\n","count: 31788 of 32132\n","count: 31789 of 32132\n","count: 31790 of 32132\n","count: 31791 of 32132\n","count: 31792 of 32132\n","count: 31793 of 32132\n","count: 31794 of 32132\n","count: 31795 of 32132\n","count: 31796 of 32132\n","count: 31797 of 32132\n","count: 31798 of 32132\n","count: 31799 of 32132\n","count: 31800 of 32132\n","count: 31801 of 32132\n","count: 31802 of 32132\n","count: 31803 of 32132\n","count: 31804 of 32132\n","count: 31805 of 32132\n","count: 31806 of 32132\n","count: 31807 of 32132\n","count: 31808 of 32132\n","count: 31809 of 32132\n","count: 31810 of 32132\n","count: 31811 of 32132\n","count: 31812 of 32132\n","count: 31813 of 32132\n","count: 31814 of 32132\n","count: 31815 of 32132\n","count: 31816 of 32132\n","count: 31817 of 32132\n","count: 31818 of 32132\n","count: 31819 of 32132\n","count: 31820 of 32132\n","count: 31821 of 32132\n","count: 31822 of 32132\n","count: 31823 of 32132\n","count: 31824 of 32132\n","count: 31825 of 32132\n","count: 31826 of 32132\n","count: 31827 of 32132\n","count: 31828 of 32132\n","count: 31829 of 32132\n","count: 31830 of 32132\n","count: 31831 of 32132\n","count: 31832 of 32132\n","count: 31833 of 32132\n","count: 31834 of 32132\n","count: 31835 of 32132\n","count: 31836 of 32132\n","count: 31837 of 32132\n","count: 31838 of 32132\n","count: 31839 of 32132\n","count: 31840 of 32132\n","count: 31841 of 32132\n","count: 31842 of 32132\n","count: 31843 of 32132\n","count: 31844 of 32132\n","count: 31845 of 32132\n","count: 31846 of 32132\n","count: 31847 of 32132\n","count: 31848 of 32132\n","count: 31849 of 32132\n","count: 31850 of 32132\n","count: 31851 of 32132\n","count: 31852 of 32132\n","count: 31853 of 32132\n","count: 31854 of 32132\n","count: 31855 of 32132\n","count: 31856 of 32132\n","count: 31857 of 32132\n","count: 31858 of 32132\n","count: 31859 of 32132\n","count: 31860 of 32132\n","count: 31861 of 32132\n","count: 31862 of 32132\n","count: 31863 of 32132\n","count: 31864 of 32132\n","count: 31865 of 32132\n","count: 31866 of 32132\n","count: 31867 of 32132\n","count: 31868 of 32132\n","count: 31869 of 32132\n","count: 31870 of 32132\n","count: 31871 of 32132\n","count: 31872 of 32132\n","count: 31873 of 32132\n","count: 31874 of 32132\n","count: 31875 of 32132\n","count: 31876 of 32132\n","count: 31877 of 32132\n","count: 31878 of 32132\n","count: 31879 of 32132\n","count: 31880 of 32132\n","count: 31881 of 32132\n","count: 31882 of 32132\n","count: 31883 of 32132\n","count: 31884 of 32132\n","count: 31885 of 32132\n","count: 31886 of 32132\n","count: 31887 of 32132\n","count: 31888 of 32132\n","count: 31889 of 32132\n","count: 31890 of 32132\n","count: 31891 of 32132\n","count: 31892 of 32132\n","count: 31893 of 32132\n","count: 31894 of 32132\n","count: 31895 of 32132\n","count: 31896 of 32132\n","count: 31897 of 32132\n","count: 31898 of 32132\n","count: 31899 of 32132\n","count: 31900 of 32132\n","count: 31901 of 32132\n","count: 31902 of 32132\n","count: 31903 of 32132\n","count: 31904 of 32132\n","count: 31905 of 32132\n","count: 31906 of 32132\n","count: 31907 of 32132\n","count: 31908 of 32132\n","count: 31909 of 32132\n","count: 31910 of 32132\n","count: 31911 of 32132\n","count: 31912 of 32132\n","count: 31913 of 32132\n","count: 31914 of 32132\n","count: 31915 of 32132\n","count: 31916 of 32132\n","count: 31917 of 32132\n","count: 31918 of 32132\n","count: 31919 of 32132\n","count: 31920 of 32132\n","count: 31921 of 32132\n","count: 31922 of 32132\n","count: 31923 of 32132\n","count: 31924 of 32132\n","count: 31925 of 32132\n","count: 31926 of 32132\n","count: 31927 of 32132\n","count: 31928 of 32132\n","count: 31929 of 32132\n","count: 31930 of 32132\n","count: 31931 of 32132\n","count: 31932 of 32132\n","count: 31933 of 32132\n","count: 31934 of 32132\n","count: 31935 of 32132\n","count: 31936 of 32132\n","count: 31937 of 32132\n","count: 31938 of 32132\n","count: 31939 of 32132\n","count: 31940 of 32132\n","count: 31941 of 32132\n","count: 31942 of 32132\n","count: 31943 of 32132\n","count: 31944 of 32132\n","count: 31945 of 32132\n","count: 31946 of 32132\n","count: 31947 of 32132\n","count: 31948 of 32132\n","count: 31949 of 32132\n","count: 31950 of 32132\n","count: 31951 of 32132\n","count: 31952 of 32132\n","count: 31953 of 32132\n","count: 31954 of 32132\n","count: 31955 of 32132\n","count: 31956 of 32132\n","count: 31957 of 32132\n","count: 31958 of 32132\n","count: 31959 of 32132\n","count: 31960 of 32132\n","count: 31961 of 32132\n","count: 31962 of 32132\n","count: 31963 of 32132\n","count: 31964 of 32132\n","count: 31965 of 32132\n","count: 31966 of 32132\n","count: 31967 of 32132\n","count: 31968 of 32132\n","count: 31969 of 32132\n","count: 31970 of 32132\n","count: 31971 of 32132\n","count: 31972 of 32132\n","count: 31973 of 32132\n","count: 31974 of 32132\n","count: 31975 of 32132\n","count: 31976 of 32132\n","count: 31977 of 32132\n","count: 31978 of 32132\n","count: 31979 of 32132\n","count: 31980 of 32132\n","count: 31981 of 32132\n","count: 31982 of 32132\n","count: 31983 of 32132\n","count: 31984 of 32132\n","count: 31985 of 32132\n","count: 31986 of 32132\n","count: 31987 of 32132\n","count: 31988 of 32132\n","count: 31989 of 32132\n","count: 31990 of 32132\n","count: 31991 of 32132\n","count: 31992 of 32132\n","count: 31993 of 32132\n","count: 31994 of 32132\n","count: 31995 of 32132\n","count: 31996 of 32132\n","count: 31997 of 32132\n","count: 31998 of 32132\n","count: 31999 of 32132\n","count: 32000 of 32132\n","count: 32001 of 32132\n","count: 32002 of 32132\n","count: 32003 of 32132\n","count: 32004 of 32132\n","count: 32005 of 32132\n","count: 32006 of 32132\n","count: 32007 of 32132\n","count: 32008 of 32132\n","count: 32009 of 32132\n","count: 32010 of 32132\n","count: 32011 of 32132\n","count: 32012 of 32132\n","count: 32013 of 32132\n","count: 32014 of 32132\n","count: 32015 of 32132\n","count: 32016 of 32132\n","count: 32017 of 32132\n","count: 32018 of 32132\n","count: 32019 of 32132\n","count: 32020 of 32132\n","count: 32021 of 32132\n","count: 32022 of 32132\n","count: 32023 of 32132\n","count: 32024 of 32132\n","count: 32025 of 32132\n","count: 32026 of 32132\n","count: 32027 of 32132\n","count: 32028 of 32132\n","count: 32029 of 32132\n","count: 32030 of 32132\n","count: 32031 of 32132\n","count: 32032 of 32132\n","count: 32033 of 32132\n","count: 32034 of 32132\n","count: 32035 of 32132\n","count: 32036 of 32132\n","count: 32037 of 32132\n","count: 32038 of 32132\n","count: 32039 of 32132\n","count: 32040 of 32132\n","count: 32041 of 32132\n","count: 32042 of 32132\n","count: 32043 of 32132\n","count: 32044 of 32132\n","count: 32045 of 32132\n","count: 32046 of 32132\n","count: 32047 of 32132\n","count: 32048 of 32132\n","count: 32049 of 32132\n","count: 32050 of 32132\n","count: 32051 of 32132\n","count: 32052 of 32132\n","count: 32053 of 32132\n","count: 32054 of 32132\n","count: 32055 of 32132\n","count: 32056 of 32132\n","count: 32057 of 32132\n","count: 32058 of 32132\n","count: 32059 of 32132\n","count: 32060 of 32132\n","count: 32061 of 32132\n","count: 32062 of 32132\n","count: 32063 of 32132\n","count: 32064 of 32132\n","count: 32065 of 32132\n","count: 32066 of 32132\n","count: 32067 of 32132\n","count: 32068 of 32132\n","count: 32069 of 32132\n","count: 32070 of 32132\n","count: 32071 of 32132\n","count: 32072 of 32132\n","count: 32073 of 32132\n","count: 32074 of 32132\n","count: 32075 of 32132\n","count: 32076 of 32132\n","count: 32077 of 32132\n","count: 32078 of 32132\n","count: 32079 of 32132\n","count: 32080 of 32132\n","count: 32081 of 32132\n","count: 32082 of 32132\n","count: 32083 of 32132\n","count: 32084 of 32132\n","count: 32085 of 32132\n","count: 32086 of 32132\n","count: 32087 of 32132\n","count: 32088 of 32132\n","count: 32089 of 32132\n","count: 32090 of 32132\n","count: 32091 of 32132\n","count: 32092 of 32132\n","count: 32093 of 32132\n","count: 32094 of 32132\n","count: 32095 of 32132\n","count: 32096 of 32132\n","count: 32097 of 32132\n","count: 32098 of 32132\n","count: 32099 of 32132\n","count: 32100 of 32132\n","count: 32101 of 32132\n","count: 32102 of 32132\n","count: 32103 of 32132\n","count: 32104 of 32132\n","count: 32105 of 32132\n","count: 32106 of 32132\n","count: 32107 of 32132\n","count: 32108 of 32132\n","count: 32109 of 32132\n","count: 32110 of 32132\n","count: 32111 of 32132\n","count: 32112 of 32132\n","count: 32113 of 32132\n","count: 32114 of 32132\n","count: 32115 of 32132\n","count: 32116 of 32132\n","count: 32117 of 32132\n","count: 32118 of 32132\n","count: 32119 of 32132\n","count: 32120 of 32132\n","count: 32121 of 32132\n","count: 32122 of 32132\n","count: 32123 of 32132\n","count: 32124 of 32132\n","count: 32125 of 32132\n","count: 32126 of 32132\n","count: 32127 of 32132\n","count: 32128 of 32132\n","count: 32129 of 32132\n","count: 32130 of 32132\n","count: 32131 of 32132\n"]}],"source":["# prompt: Untuk setiap item pada items_dictionary lakukan loop dan tampung playtime_forever dari transformed_interactions dalam dictionary dengan nama key user_play_times yang terikat pada current items_dictionary dengan format { user_id: playtime_forever }, jika item tidak ada pada transformed_interactions maka set user_play_times dengan {} dan simpan items_dictionary yang sudah mengandung playtime_forever dengan variable items_with_playtime_dictionary\n","\n","items_with_playtime_dictionary = {}\n","count = 0\n","for item_id, item_info in items_dictionary.items():\n"," items_with_playtime_dictionary[item_id] = item_info.copy() # Create a copy to avoid modifying the original\n"," user_play_times = {}\n"," for user_id, user_data in transformed_interactions.items():\n"," if item_id in user_data['items']:\n"," playtime_forever = user_data['items'][item_id].get('playtime_forever', 0)\n"," user_play_times[user_id] = playtime_forever\n"," items_with_playtime_dictionary[item_id]['user_play_times'] = user_play_times\n"," print(f\"count: {count} of {len(items_dictionary)}\")\n"," count += 1"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"zm_f3jdgCQq9","executionInfo":{"status":"ok","timestamp":1734851907402,"user_tz":-420,"elapsed":343,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"20a5374e-c588-4855-b9e4-f49f7fdceb73"},"outputs":[{"output_type":"stream","name":"stdout","text":["Number of items with user_play_times equal to 0: 23602 / 32132\n"]}],"source":["# prompt: How many items that user_play_times is 0\n","\n","zero_playtime_count = 0\n","for item_id, item_data in items_with_playtime_dictionary.items():\n"," if len(item_data['user_play_times']) == 0:\n"," zero_playtime_count += 1\n","\n","print(f\"Number of items with user_play_times equal to 0: {zero_playtime_count} / {len(items_with_playtime_dictionary)}\")"]},{"cell_type":"code","source":["# prompt: Show me distribution of sentiment attribute on items_dictionary\n","\n","import matplotlib.pyplot as plt\n","\n","# Assuming 'items_dictionary' is defined and accessible\n","\n","sentiment_counts = {}\n","for item_id, item_data in items_dictionary.items():\n"," if 'sentiment' in item_data:\n"," sentiment = item_data['sentiment']\n"," sentiment_counts[sentiment] = sentiment_counts.get(sentiment, 0) + 1\n","\n","sentiments, counts = zip(*sentiment_counts.items())\n","\n","plt.figure(figsize=(10, 6))\n","plt.bar(sentiments, counts, color='skyblue')\n","plt.xlabel(\"Sentiment\")\n","plt.ylabel(\"Number of Items\")\n","plt.title(\"Distribution of Sentiment Attribute in items_dictionary\")\n","plt.xticks(rotation=45, ha='right') # Rotate x-axis labels for better readability\n","plt.tight_layout() # Adjust layout to prevent labels from overlapping\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":560},"id":"idS0pAKKSzCc","executionInfo":{"status":"ok","timestamp":1734853020608,"user_tz":-420,"elapsed":1078,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"0ea7b69d-e6c4-4f47-a020-f3a8f3f0cbdd"},"execution_count":null,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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qXr16pKkKlWqOMs4ceKEwsLC1LJlSz399NPKkSPHDeN688035XK51K9fPx07dkzvvfee6tatq40bNzp35G/GzcSWkJnp0Ucf1bJly9S+fXuVLl1aCxcuVJ8+fXTo0CGNHj3arfyqVas0a9YsPffcc8qQIYPef/99NWvWTPv370+U5CZ04cIF1apVS7t371b37t1VoEABzZgxQ23bttXp06f1wgsvqGjRovryyy/Vq1cv5c6dWy+++KIkKVu2bNdcZr58+SRJU6ZMUdWqVW941+vo0aOqXLmy80M2W7Zsmj9/vtq3b6+oqKhEnbUNHz5cfn5+eumllxQZGamRI0eqVatWWrNmjSRpwIABioyM1MGDB519lD59+uuuX7qSIIaFhalGjRoaOXKkpkyZou7duytdunQaMGCAWrVqpaZNm2rChAl65plnFBISogIFCki6cse3Zs2aOnTokDp37qy8efPq119/Vf/+/XXkyJFE7aenTp2qM2fOqHPnznK5XBo5cqSaNm2qv//+W6lSpVLnzp11+PBhLV68WF9++eUN405ozZo12r17tyZOnCh/f381bdpUU6ZMcXvS4Hr7xpfPm6VLlyosLEzlypXToEGD5Ofnp4kTJ6p27dr6+eefVbFixZteV7zY2FiFhoaqUqVKGjVqlH766Se98847KliwoLp27eq12Fu0aKGiRYtq+PDhmjdvnt544w1lzpxZH330kWrXrq0RI0ZoypQpeumll1ShQgXVqFFDkvTJJ5+oR48eat68uV544QVdvHhRmzZt0po1a/TUU0/d1LaYmRo3bqxVq1apS5cuKlq0qGbPnq02bdrc1Odff/11DR48WFWqVNGQIUPk7++vNWvWaOnSpapfv77ee+89Pf/880qfPr0GDBggSTc8xiZNmqR27dqpQoUKGjZsmI4ePaoxY8bol19+0YYNG5QxY0an7M3+PceMGaNHH31UrVq1UnR0tKZNm6bHH39cc+fOVXh4uNv6ly5dqunTp6t79+7KmjWrChQooKefflojR47UyZMnlTlzZqfsnDlzFBUVpaeffvqm9hWAZMK7T7cDwK2Jb9O9du3a65YJCgqyMmXKOO8HDRrk1rZ19OjRJsmOHz9+3WXcqA1lzZo1TZJNmDDhmvMStieMb5t63333WVRUlDN9+vTpJsnGjBnjTMuXL5+1adPmP5d5o9jatGnj1tb2u+++M0n2xhtvuJVr3ry5uVwu2717tzNNkvn7+7tN+/PPP02SffDBB4nWldB7771nkuyrr75ypkVHR1tISIilT5/ebdvz5ctn4eHhN1ye2ZW2svH7OkeOHPbkk0/auHHj7J9//klUtn379pYzZ077999/3aa3bNnSgoKC7Pz582b2f3+PokWLurWZHTNmjEmyzZs3O9Ou1275Wu1P27RpY5LsrbfecqadOnXK0qRJYy6Xy6ZNm+ZM3759u0myQYMGOdOGDh1q6dKls507d7qt6+WXX7YUKVLY/v373dadJUsWO3nypFPu+++/N0k2Z84cZ9qttOnu3r275cmTx+Li4szMbNGiRSbJNmzY4FbuVtp0J9fzJi4uzh544AELDQ11ttvM7Pz581agQAGrV69eomUndKPjYciQIW5ly5QpY+XKlbvh8jwVe3w92KlTJ2daTEyM5c6d21wulw0fPtyZHn/sJtyvjRs3tuLFi/9n7DcSXx+NHDnSLYbq1asn2r6r6+1du3aZn5+fPfbYY4naZSfc9uu16Y4/ppYtW2ZmV+qn7NmzW4kSJdzajs+dO9ck2cCBA51pSfl7xtc18aKjo61EiRJWu3Ztt+mSzM/Pz7Zs2eI2fceOHSbJPvzwQ7fpjz76qOXPn99tWwEkfzxeDuCulT59+hv2Yh5/9+L77793e3Q3KQICAtSuXbubLv/MM88oQ4YMzvvmzZsrZ86c+vHHH29p/Tfrxx9/VIoUKdSjRw+36S+++KLMTPPnz3ebXrduXRUsWNB5X6pUKQUGBurvv//+z/UEBwfrySefdKalSpVKPXr00NmzZ7VixYokx+5yubRw4UK98cYbypQpk77++mt169ZN+fLlU4sWLZxHUs1MM2fOVKNGjWRm+vfff51XaGioIiMj9ccff7gtu127dm7tZuPvHv7Xdv6XDh06OP/PmDGjChcurHTp0umJJ55wphcuXFgZM2Z0W9eMGTNUvXp1ZcqUyS3+unXrKjY2VitXrnRbT4sWLZQpU6bbGn9MTIy++eYbtWjRwnmst3bt2sqePbumTJlyy8tNKDmeNxs3btSuXbv01FNP6cSJE86+P3funOrUqaOVK1fecj3RpUsXt/fVq1f/n4+xhG4l9oTHaIoUKVS+fHmZmdq3b+9Mjz92E8aaMWNGHTx40K0ZQ1L9+OOPSpkypdud4RQpUuj555//z89+9913iouL08CBA+Xn5/4z9laGFlu3bp2OHTum5557zq0ddXh4uIoUKaJ58+Yl+szN/D0TPoFx6tQpRUZGqnr16onqIEmqWbNmov4tHnzwQVWqVMntnDt58qTmz5+vVq1a3bHhLwHcHjxeDuCudfbsWWXPnv2681u0aKFPP/1UHTp00Msvv6w6deqoadOmat68eaIfc9dz3333JamzowceeMDtvcvlUqFCha7bnvl2+eeff5QrVy63xEW68shq/PyE8ubNm2gZmTJl0qlTp/5zPQ888ECi/Xe99dysgIAADRgwQAMGDNCRI0e0YsUKjRkzRtOnT1eqVKn01Vdf6fjx4zp9+rQ+/vhjffzxx9dczrFjx9zeX72d8Qnsf23njaROnTrRo/JBQUHKnTt3oh/KQUFBbuvatWuXNm3adN1H7e9E/IsWLdLx48dVsWJFt/btDz/8sL7++muNGDHips+P60mO582uXbsk6YaPOEdGRrpd5LgZ1zoebuZcSopbif3qYycoKEipU6dW1qxZE00/ceKE875fv3766aefVLFiRRUqVEj169fXU089dc0+F67nn3/+Uc6cORM11ShcuPB/fnbPnj3y8/O7qU4YbzaW6627SJEiWrVqldu0m/17zp07V2+88YY2btyoS5cuOdOvlSzHNy+52jPPPKPu3bvrn3/+Ub58+TRjxgxdvnz5hsMrAkieSLoB3JUOHjyoyMhIFSpU6Lpl0qRJo5UrV2rZsmWaN2+eFixYoG+++Ua1a9fWokWLlCJFiv9cT1Lak96s693BiI2NvamYbofrrceu6nTNG3LmzKmWLVuqWbNmKl68uKZPn65JkyY5d/Kefvrp6yYfpUqVcnvvie283jJvZl1xcXGqV6+e+vbte82yDz74YJKXmVTxd9YS3pVPaMWKFXr44YdveflS8jxv4o+ft99+W6VLl75mmf9qz38td+KcvZXYrxXXzRxPRYsW1Y4dOzR37lwtWLBAM2fO1Pjx4zVw4EC9/vrrt7gFvuNm/p4///yzHn30UdWoUUPjx49Xzpw5lSpVKk2cOPGaHc5d73xo2bKlevXq5fSn8NVXX6l8+fI3dXECQPJC0g3grhTfaVRoaOgNy/n5+alOnTqqU6eO3n33Xb311lsaMGCAli1bprp16972R/ji70jFMzPt3r3bLRnMlCnTNXvx/eeff3T//fc775MSW758+fTTTz/pzJkzbne7t2/f7sy/HfLly6dNmzYpLi7O7W7o7V6PdOWx9VKlSmnXrl36999/lS1bNmXIkEGxsbGqW7fubVvPnXyMs2DBgjp79qzX4j937py+//57tWjRQs2bN080v0ePHpoyZYqTdF9v2b543sQ3pwgMDLyt+/92Si6xp0uXTi1atFCLFi0UHR2tpk2b6s0331T//v1vaqirfPnyacmSJTp79qzbxYAdO3b852cLFiyouLg4bd269boXGKSbPwbj66QdO3aodu3abvN27NhxS3XWzJkzlTp1ai1cuFABAQHO9IkTJyZpOZkzZ1Z4eLimTJmiVq1a6ZdffknUmSIA30CbbgB3naVLl2ro0KEqUKCAWrVqdd1yJ0+eTDQt/kdc/OOA6dKlk6TbNhb0F1984dbO/Ntvv9WRI0cUFhbmTCtYsKB+++03RUdHO9Pmzp2baIikpMTWoEEDxcbGauzYsW7TR48eLZfL5bb+/0WDBg0UERGhb775xpkWExOjDz74QOnTp1fNmjWTvMxdu3Zp//79iaafPn1aq1evVqZMmZQtWzalSJFCzZo108yZM/XXX38lKn/8+PEkr1u6sp8jIyNv6bNJ9cQTT2j16tVauHBhonmnT59WTExMkpeZlONk9uzZOnfunLp166bmzZsnejVs2FAzZ850Oz+utW988bwpV66cChYsqFGjRuns2bOJYrjV4+d2Sg6xJ3zUXLoylnixYsVkZrp8+fJNLaNBgwaKiYnRhx9+6EyLjY3VBx988J+fbdKkifz8/DRkyJBE7dQT3pFPly7dTR1/5cuXV/bs2TVhwgS3x8Dnz5+vbdu2Jepp/GakSJFCLpfLbRixffv26bvvvkvyslq3bq2tW7eqT58+SpEihVq2bJnkZQDwPu50A/Bp8+fP1/bt2xUTE6OjR49q6dKlWrx4sfLly6cffvjhhnddhgwZopUrVyo8PFz58uXTsWPHNH78eOXOnVvVqlWTdOWHfMaMGTVhwgRlyJBB6dKlU6VKla7bBu+/ZM6cWdWqVVO7du109OhRvffeeypUqJDbsGYdOnTQt99+q0ceeURPPPGE9uzZo6+++sqtY7OkxtaoUSM9/PDDGjBggPbt26eHHnpIixYt0vfff6+ePXsmWvat6tSpkz766CO1bdtW69evV/78+fXtt986d2iublN+M/7880899dRTCgsLU/Xq1ZU5c2YdOnRIkydP1uHDh/Xee+85j3wOHz5cy5YtU6VKldSxY0cVK1ZMJ0+e1B9//KGffvrpmhda/ku5cuX0zTffqHfv3qpQoYLSp0+vRo0aJXk5N6NPnz764Ycf1LBhQ7Vt21blypXTuXPntHnzZn377bfat29foja3NxO/dOUudWho6A1/uE+ZMkVZsmS57tBzjz76qD755BPNmzdPTZs2ve6+8dXz5tNPP1VYWJiKFy+udu3a6b777tOhQ4e0bNkyBQYGas6cObcU/+2SHGKvX7++goODVbVqVeXIkUPbtm3T2LFjFR4eftPnd6NGjVS1alW9/PLL2rdvn4oVK6ZZs2bd1MWtQoUKacCAARo6dKiqV6+upk2bKiAgQGvXrlWuXLk0bNgwSVeO+w8//FBvvPGGChUqpOzZsye6ky1deWJmxIgRateunWrWrKknn3zSGTIsf/786tWrV9J2kK50wvbuu+/qkUce0VNPPaVjx45p3LhxKlSokDZt2pTkZWXJkkUzZsxQWFjYDfspAZCMeaXPdAD4H8UPGRb/8vf3t+DgYKtXr56NGTPGbXiheFcPPbNkyRJr3Lix5cqVy/z9/S1Xrlz25JNPJhqu6fvvv7dixYpZypQp3YazqVmz5nWHzrne0Edff/219e/f37Jnz25p0qSx8PDwaw599c4779h9991nAQEBVrVqVVu3bl2iZd4otquHDDMzO3PmjPXq1cty5cplqVKlsgceeMDefvvtREPPSLJu3boliul6QzJd7ejRo9auXTvLmjWr+fv7W8mSJa85dNTNDhl29OhRGz58uNWsWdNy5sxpKVOmtEyZMlnt2rXt22+/vWb5bt26WZ48eSxVqlQWHBxsderUsY8//tgpE//3mDFjhttnrzXs09mzZ+2pp56yjBkzmiRnv15viKh06dIliul6x8q19sGZM2esf//+VqhQIfP397esWbNalSpVbNSoURYdHe227rfffjvRMnXVMGQxMTH2/PPPW7Zs2czlcl13+LCjR49aypQprXXr1tecb3ZlGKS0adPaY489dsN9Y+ab542Z2YYNG6xp06aWJUsWCwgIsHz58tkTTzxhS5Ysue5+MUva8XB1XXQ9nog9ft1XD5V4s8fuRx99ZDVq1HDWUbBgQevTp49FRkb+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sWjRIm3dulU//fSTcuTIodKlS2vo0KHq16+fBg8eLH9/f02YMEEFChTQO++8I0kqWrSoVq1apdGjR5N0AwAAAAA8JsmPl1evXl1ffPGF897lcikuLk4jR47Uww8//D8FExkZKUnKnDmz2/QpU6Yoa9asKlGihPr376/z588781avXq2SJUsqR44czrTQ0FBFRUVpy5YtTpm6deu6LTM0NFSrV6++ZhyXLl1SVFSU2wsAAAAAgKRK8p3ukSNHqk6dOlq3bp2io6PVt29fbdmyRSdPntQvv/xyy4HExcWpZ8+eqlq1qkqUKOFMf+qpp5QvXz7lypVLmzZtUr9+/bRjxw7NmjVLkhQREeGWcEty3kdERNywTFRUlC5cuKA0adK4zRs2bJhef/31W94WAAAAAACkW0i6S5QooZ07d2rs2LHKkCGDzp49q6ZNm6pbt27KmTPnLQfSrVs3/fXXX1q1apXb9E6dOjn/L1mypHLmzKk6depoz549Kliw4C2v70b69++v3r17O++joqKUJ08ej6wLvm34hn+9HUIiL5fJ6u0QAAAAAPx/SU669+/frzx58mjAgAHXnJc3b94kB9G9e3fNnTtXK1euTNRB29UqVaok6co44QULFlRwcLB+//13tzJHjx6VJKcdeHBwsDMtYZnAwMBEd7klKSAgIMnt0wEAAAAAuFqS23QXKFBAx48fTzT9xIkTKlCgQJKWZWbq3r27Zs+eraVLl97U5zdu3ChJzl31kJAQbd68WceOHXPKLF68WIGBgSpWrJhTZsmSJW7LWbx4sUJCQpIULwAAAAAASZHkpNvM5HK5Ek0/e/asUqdOnaRldevWTV999ZWmTp2qDBkyKCIiQhEREbpw4YIkac+ePRo6dKjWr1+vffv26YcfftAzzzyjGjVqqFSpUpKk+vXrq1ixYmrdurX+/PNPLVy4UK+++qq6devm3K3u0qWL/v77b/Xt21fbt2/X+PHjNX36dPXq1Supmw8AAAAAwE276cfL49s4u1wuvfbaa4nGyl6zZo1Kly6dpJV/+OGHkqRatWq5TZ84caLatm0rf39//fTTT3rvvfd07tw55cmTR82aNdOrr77qlE2RIoXmzp2rrl27KiQkROnSpVObNm3cxvUuUKCA5s2bp169emnMmDHKnTu3Pv30U4YLAwAAAAB41E0n3Rs2bJB05U735s2b5e/v78zz9/fXQw89pJdeeilJKzezG87PkyePVqxY8Z/LyZcvn3788ccblqlVq5azDQAAAAAA3Ak3nXQvW7ZMktSuXTuNGTNGgYGBHgsKAAAAAIC7QZJ7L584caIn4gAAAAAA4K5z00l306ZNb6rcrFmzbjkYAAAAAADuJjeddAcFBXkyDgAAAAAA7jo3nXTzWDkAAAAAAEmT5HG6AQAAAADAzSHpBgAAAADAQ0i6AQAAAADwEJJuAAAAAAA85KaS7rJly+rUqVOSpCFDhuj8+fMeDQoAAAAAgLvBTSXd27Zt07lz5yRJr7/+us6ePevRoAAAAAAAuBvc1JBhpUuXVrt27VStWjWZmUaNGqX06dNfs+zAgQNva4AAAAAAAPiqm0q6J02apEGDBmnu3LlyuVyaP3++UqZM/FGXy0XSDQAAAADA/3dTSXfhwoU1bdo0SZKfn5+WLFmi7NmzezQwAAAAAAB83U0l3QnFxcV5Ig4AAAAAAO46SU66JWnPnj167733tG3bNklSsWLF9MILL6hgwYK3NTgAAAAAAHxZksfpXrhwoYoVK6bff/9dpUqVUqlSpbRmzRoVL15cixcv9kSMAAAAAAD4pCTf6X755ZfVq1cvDR8+PNH0fv36qV69erctOAAAAAAAfFmS73Rv27ZN7du3TzT92Wef1datW29LUAAAAAAA3A2SnHRny5ZNGzduTDR948aN9GgOAAAAAEACSX68vGPHjurUqZP+/vtvValSRZL0yy+/aMSIEerdu/dtDxAAAAAAAF+V5KT7tddeU4YMGfTOO++of//+kqRcuXJp8ODB6tGjx20PEAAAAAAAX5XkpNvlcqlXr17q1auXzpw5I0nKkCHDbQ8MAAAAAABfd0vjdMcj2QYAAAAA4PqS3JEaAAAAAAC4OSTdAAAAAAB4CEk3AAAAAAAekqSk+/Lly6pTp4527drlqXgAAAAAALhrJCnpTpUqlTZt2uSpWAAAAAAAuKsk+fHyp59+Wp999pknYgEAAAAA4K6S5CHDYmJi9Pnnn+unn35SuXLllC5dOrf577777m0LDgAAAAAAX5bkpPuvv/5S2bJlJUk7d+50m+dyuW5PVAAAAAAA3AWSnHQvW7bME3EAAAAAAHDXueUhw3bv3q2FCxfqwoULkiQzS/Iyhg0bpgoVKihDhgzKnj27mjRpoh07driVuXjxorp166YsWbIoffr0atasmY4ePepWZv/+/QoPD1fatGmVPXt29enTRzExMW5lli9frrJlyyogIECFChXSpEmTkhwvAAAAAABJkeSk+8SJE6pTp44efPBBNWjQQEeOHJEktW/fXi+++GKSlrVixQp169ZNv/32mxYvXqzLly+rfv36OnfunFOmV69emjNnjmbMmKEVK1bo8OHDatq0qTM/NjZW4eHhio6O1q+//qrJkydr0qRJGjhwoFNm7969Cg8P18MPP6yNGzeqZ8+e6tChgxYuXJjUzQcAAAAA4KYlOenu1auXUqVKpf379ytt2rTO9BYtWmjBggVJWtaCBQvUtm1bFS9eXA899JAmTZqk/fv3a/369ZKkyMhIffbZZ3r33XdVu3ZtlStXThMnTtSvv/6q3377TZK0aNEibd26VV999ZVKly6tsLAwDR06VOPGjVN0dLQkacKECSpQoIDeeecdFS1aVN27d1fz5s01evTopG4+AAAAAAA3LclJ96JFizRixAjlzp3bbfoDDzygf/75538KJjIyUpKUOXNmSdL69et1+fJl1a1b1ylTpEgR5c2bV6tXr5YkrV69WiVLllSOHDmcMqGhoYqKitKWLVucMgmXEV8mfhkAAAAAAHhCkjtSO3funNsd7ngnT55UQEDALQcSFxennj17qmrVqipRooQkKSIiQv7+/sqYMaNb2Rw5cigiIsIpkzDhjp8fP+9GZaKionThwgWlSZPGbd6lS5d06dIl531UVNQtbxcAAAAA4N6V5Dvd1atX1xdffOG8d7lciouL08iRI/Xwww/fciDdunXTX3/9pWnTpt3yMm6XYcOGKSgoyHnlyZPH2yEBAAAAAHxQku90jxw5UnXq1NG6desUHR2tvn37asuWLTp58qR++eWXWwqie/fumjt3rlauXOn22HpwcLCio6N1+vRpt7vdR48eVXBwsFPm999/d1tefO/mCctc3eP50aNHFRgYmOgutyT1799fvXv3dt5HRUWReAMAAAAAkizJd7pLlCihnTt3qlq1amrcuLHOnTunpk2basOGDSpYsGCSlmVm6t69u2bPnq2lS5eqQIECbvPLlSunVKlSacmSJc60HTt2aP/+/QoJCZEkhYSEaPPmzTp27JhTZvHixQoMDFSxYsWcMgmXEV8mfhlXCwgIUGBgoNsLAAAAAICkSvKdbkkK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bNjQ+S5asGCBhYWFWc6cOa1GjRrWsmXLZHF8x4uNjbU9e/ZYlixZnLvAEyZMMJfLZbVr13Yr+8orr1jhwoVt7969Xoj02rZt22bVqlWzSZMmmdmVDuyaNm1qhQoVsn79+tmgQYOsdu3aVqJEiWTxw96X65V4JUuWtAYNGjjvn376aQsMDLQNGzbYgQMHbO/evRYaGposLvr6Sp1yLb4S+9V1YML/t2jRwsqXL+/Uh8uXL7eOHTta/vz5rX79+ta2bVvnGPH2seILSLp93I2+9Hv06GFFihSx48ePm9mVpDYqKspWrFhhe/bscU6s5HBHau7cudagQQMrUaKEPf7447ZgwQIzu/JlkDdvXnvppZfsk08+se7du1vevHmTTTujL774wlwul+XNm9deeOEF++STT+zQoUNWokQJt8eC9+/fnyweL4s3atQoc7lcljp1auvdu7fNmzfPfv31V6tcubJ98sknTrmtW7c6x09y4Uv7/OpzK/58jYyMtCZNmthLL71k58+fN7Mrd5J//vlnmzx5sq1atcop643z8+p1JvwSbteunbVo0cJpd3bmzBnbuXOnzZ492/78889kUa+Y+dZxcjVfPT99Ne6EJk2aZJUqVbLNmzc7086ePWvHjx+3qKgoZ5q3j++r1a1b18LCwpxHgV999VVzuVzWu3dve+mll6x9+/ZOYuUt10uWO3bsaIULF3ber1u3zkaMGGFFixa1xo0b2/PPP59sftj7cr0Sv/+XLl1qJUqUsLlz55rZlfa6YWFhlilTJsuZM6dVqFDBqlSpkiwuLvlyneKLsV/9t166dKlVrlzZ5s2b50yLjY21M2fOuJX19nnpK1xmjGzui5577jl98MEHSpEihSRpxIgRCggIULVq1VS+fHlJ0vr16/Xcc8+pX79+atq0qS5fvqxUqVK5LSfhoPfeEt/T6osvvqg6depowIABOnjwoObMmaOSJUtq0KBBWrt2rbZv367s2bNr/PjxKlu2rFditf/fk2N0dLT8/f0lSf369dNvv/2m8PBwrVq1SocPH1bp0qW1f/9+jRo1SqVKlfJKrAnZNXp679Onjw4cOKCsWbPqxIkTioiIUL58+ZQiRQq99dZbypEjh5eideeL+/yDDz5Q586dnXgnTJigggULqmbNms604cOHa+zYsdqwYcN1Rw+IjY11zvE74bXXXtPAgQOdeuKdd95Rvnz5VLVqVeXMmVOSNGnSJL3++utasGCBChcufM3leKNe8cXjJJ6vnp++FnenTp1Ur149Pf7445KkTz75RKNGjdLYsWNVuHBh5c2bVxcuXFC5cuVUvnx5ffHFF9dczrW2+065+tyKP95nzpypd955R6NHj1alSpUUHR2tL774QtOnT9fly5dVuHBh9ejRQ8WKFfNK3AmdOHFCgYGBTj1z4sQJVa1aVe3atVO/fv2ccgnPZenO14eSb9cr16uHDx06pCeffFIVKlTQO++840xfsGCBLl68qEyZMql69ery8/NTTEyMUqa8cwMd+VqdkpCvxf7UU0+pVq1a6tSpk6Qr9eGrr76qt99+WxUqVFDRokV14cIFhYWFKVOmTJo9e7akxMeVN+tDn+OVVB//k23btlmDBg3cehzv3r27VapUyQoUKGCvvPKKbd++3czMWrVqZdWrV/dWqDcU39Nq3bp17a233jKzK5275c6d255//nm3q2jR0dF2/PjxZNHBxE8//WRt2rSx77//3syuPB707LPP2qxZs+zUqVPWtm1by507t7lcLhs+fHiyaTs3f/586927t/MI08yZM61Dhw62Zs0a27Jliz322GOWIkUKc7lc9tVXX3k5Wne+tM8//fRTa9WqlXP8Hjt2zBo3bmwul8vatGnj1jlQrVq1rF27dt4K1c2cOXPsySefdK5YX7x40Vq3bm3p06e3Bg0a2BtvvOGUbdiwoYWFhXkr1OvypePkar56fvpK3AcOHLCBAwe6fW+uWrXKmjdvbkWKFLGaNWvaZ599ZmZX2hmXK1fOGV85Obi6g679+/e7Hb9nzpyx4sWLW9u2bd3KnTt3zszMayOU1KhRw+l80exK/ZgzZ0576aWXnLbzMTEx1r17d3v00Ufd7q4m3D5vnqu+Vq9MmjTJ7c7ptGnTEo2n/M0331jq1Klv2DGdtx7j95U65Vp8Jfbjx4/buHHj3OqFf/75x5599lmrXLmyPfjgg/buu+9aZGSkbdmyxQoUKGDffvut1+K9W5B0+7iJEyc6FeP27dvtiy++sHz58lmVKlXsueees59//tmyZ89uU6dO9XKk1xYdHW1VqlSxbdu22YEDByxXrlzWqVMnZ/68efPsn3/+8WKEif32229WuXJlq1GjhnXu3NnOnz9vPXr0sGeeecYpM3v2bGvbtq1t3brVi5G6+/HHHy1nzpwWFhbm9MbbpEkTt6Tvww8/tHr16iWruM18a59fvHjRSbh/+uknu3TpkpmZLVy40Dp37mw5cuSwGjVq2OTJk23gwIHWvHnzZHGMR0dHO3XJrFmznMdUV61aZW+88YZlyZLFKleubMOGDbOPP/7Y6tWr53QelFz40nFyNV89P30x7k8//dTpRdjsyg/lAQMGWJo0aaxJkybWtm1bq1atmr333ntejPL/DB482Dp37uyck5s3b7by5ctb7dq17a+//rJjx46Z2ZXtyJcvny1atMj5bMK263daTEyMzZkzx63368uXL9urr75qjRo1sjRp0tgrr7xia9eutcOHD1uaNGmS5W8VX6pXJk2aZPXq1XPq8qNHj1qTJk0sc+bMVrduXZs0aZKdOHHCzMwee+wx69evn126dClZdYDli3VKPF+MfezYsW6jjaxbt85Gjx7t/FZp0aKF1a9f31566SUeI/8fkXT7mIQV45EjRywwMNAqVqzodlf4yJEjNnnyZKtQoYJlyZLFXC6Xvfbaa94I97r27NljZlcSlFKlSlnfvn2tUKFC1qlTJ+fK25EjR6xx48Y2ffp0b4bq9mMl/sfDv//+a9OmTbOCBQtaSEiITZgwwQICAmzkyJFO2fhky1sSxh1fUf7zzz/21ltv2f33329hYWH2/fffW/bs2d16LY1vY+xNvrrPE141/uWXX6xAgQLWo0cP525TVFSU/fPPP9asWTN75JFHLG3atOZyuezLL7/0Vshm5t4e66+//rK8efPaY4895nRgGBcXZ8ePH7cePXpY/fr1zeVymcvlcktcvMFXjxMz3z0/fTHuhN+PFy9etObNm1v58uXdhugzu3Ls9+vXz6pVq3bNjsi8ZfHixfbXX3+Z2ZX4z549a9OnT7fQ0FDLly+fNW/e3ObOnWsHDx600NBQZ4zu5JRIvfnmm9ahQwfn/dmzZ+3zzz+32rVrW758+axz58728MMPW82aNb3eSaov1ytm/3e8r1y50s6dO2exsbH2zz//2GOPPWZVq1a1Bx54wBYuXGjt27e3MmXKeH1caF+sU+L5YuxX1wu9e/e2ggULJuqpfteuXTZu3DgLCQlJVvWhLyPp9iEHDhxw/v/999/b5cuX7ffff7cHH3zQqlWrds3Hxz755JNkd3Vq9+7dljp1alu/fr2ZXRmzOFOmTBYSEuJWLn6Ys3379nkjTDP7vwp1wYIF9txzz1mlSpVs9OjRtnbtWjO7Usm2bt3aGjVqZPfdd5/lzZs3WYyBGh/3kiVLrH///tawYUObMmWK84jigQMHrE6dOla+fHnLkyeP1apVy/7++29vhuzw1X2e8AfXL7/8YnFxcTZw4ECrWrWq9ezZ0+1LNiYmxv7880977bXXrFq1al49PxM22YjvlfzTTz+1ypUr2+OPP+52lyomJsZOnjxpI0eOtKZNmyaLThh97Tgx893z0xfj3rFjh/P/4cOH2x9//GF///23dejQwUJCQhIl3hcvXrTIyEj74IMPksX3ZsIfyEuXLrUnn3zSeSzbzOyrr76yrl27WooUKeyFF16wMmXKWNq0ae3gwYPeCPe6Pv74Y3O5XPbSSy+5TT9w4ID99NNPVrlyZeeHvTcfz/bleiVhXb1mzRpLlSqVDR482DkWLl++bJs3b7auXbta8eLFrXbt2uZyueztt9/2Vsg+WafE88XY//zzTzt9+rSZmfXv39+WLVtmERERNnjwYCtSpIi9/vrriT4TGxtrkydPTnbDJPoikm4fsXTpUqtTp44tX77cevbsaS6Xy44cOWJmZmvXrrX777/fqlev7pwU10rAk8MPCDOzv//+2/LkyeOMy3nw4EF78cUXLUuWLNajRw974403kkVPq/Fmz55t6dKls5deesmGDBliFSpUsPLly7v98Pn++++tVatWljFjxmTzY2fWrFkWGBho7du3txdeeMFy5sxpTZs2dbt489FHH1mNGjUsS5YsXr+7kJCv7fOZM2c641f37NnTChYsaBcuXLDz58/boEGDrFKlStarV69EY84n5I3zc9asWVavXj2LjIy0nj17WoYMGez06dN24cIF+/TTT618+fL2xBNPOD/mrtWLrTfrFV87ThLy1fPTl+LeunWruVwu+/zzz51xcOOPjV27dtmzzz5rISEhbv0sXP3d6Y3jO2GinbCN88qVKy1jxoz27LPPOhet461cudKeeeYZK1mypLlcLq9erF6zZo0zVFavXr1s5syZFhMTY1999ZX5+/snSrzNruznxYsXO3WMN+/S+2K9kvA4/fnnn83MbOjQoZY/f35744033M5PsytDn40dO9bCwsK8/tvQl+qUq/lK7PFDC7pcLhsyZIh17drV0qVL54zScOjQIRs4cKAVKVLE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GDDABg4c6AxpdvHiRZs/f76VKFHCKlWqZH/++afVq1fPbSg2bx0zvlqnmPlu7K+99poFBwfbJ598YuvXr7f77rvP6tevb3PmzHHqvBkzZliXLl3s+eefd36nJ4cLkXcjku5kJGFlOnjwYCtfvrzTdigmJsaGDx9ulStXdku8T506ZSdPnnTrpMRbli1bZn5+flahQgULDw+3H374wS5dumTt2rWzihUruiXeJ0+etGzZsrld7faW2NhYi4iIsMDAQOcRs507d1qDBg2sVq1a9s033zhl9+3bZxcuXHDa63pTXFyc/fPPP5YiRQqnY71NmzZZ0aJFLSwszH7//Xen7F9//WUnT550xmf0Nl/c5wnPz+HDh1v79u3dOlZ57LHHLEuWLDZ37lznCY6TJ0/an3/+6XzW28MPvfnmm/boo486vZaaXelI7erE++TJk/b33397NW4z3zxO4vnq+emrcZtdaedctGhR5y7UihUrnJ7Lq1Sp4nYuJjxOvP0D8+ok6NNPP7V06dJZ7969nWkbN260Zs2aWYoUKaxx48bm5+eXLIbUNDMbNGiQZc+e3b777jvbuHGj1alTx4oVK2bvvPOOU2bevHk2cuRI69u3r9d/2PtyvRKvb9++ljdvXgsLC7NmzZpZ+vTpnfP10qVLtmzZMitXrpzlzZvX6xdPfblO8eXYly1bZiVKlLAVK1aY2ZU+n1KnTm158uSxMmXK2Pz5853EO2H7f2/Xh3czku5kqF+/fhYcHGzffvut/fPPP870+DvelSpVcnvUPJ43x7WM9+yzz1rp0qWtWbNmVqNGDZs7d65b4j127Fin8n/66afdxr30ti5duli5cuWcduV79uyxBg0a2MMPP+w8dpYcPfHEE9a0aVPnePjrr7+saNGi1qBBA7e2OcmRL+7zPn36OI8dXt1G6tFHH3XueCdsz23m/fOzT58+li1bNps9e7bt3bvXbV779u2tUKFC9tFHHyXLesUXj5N4vnp++kLcCe/cxcXF2ZIlS5yhnhYsWGCZM2e2L7/80vbv32+BgYHWrFkztx/JCZfhLfHrX7Nmjc2fP99J7r766isLCAiwXr16OWUPHjxoY8aMsR49eiSb785ffvnFSpUqZcuXLzez/7vQUaNGDStRooS9//771/xccniywFfrlY8++sjy5Mnj3N2eOnWquVwuS5kypc2aNcvM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\n"},"metadata":{}}]},{"cell_type":"code","source":["from google.colab import drive\n","drive.mount('/content/drive')"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"otOFRFHU0-ql","executionInfo":{"status":"ok","timestamp":1735281372817,"user_tz":-420,"elapsed":13973,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"}},"outputId":"67290359-d6f0-4456-e5f9-8cb668320417"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"]}]},{"cell_type":"markdown","metadata":{"id":"h9g0gPIn7smF"},"source":["### Save"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"ZBttusthosDF"},"outputs":[],"source":["# prompt: save user_price_data to /content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data as .json.gz\n","\n","import json\n","import gzip\n","\n","# Assuming user_price_data is defined as in the provided code\n","\n","def save_to_json_gz(data, filepath):\n"," with gzip.open(filepath, 'wt', encoding='utf-8') as f:\n"," json.dump(data, f, ensure_ascii=False, indent=2)\n","\n","# Save user_price_data to the specified file path\n","# save_to_json_gz(user_price_data, '/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_price_data.json.gz')\n","save_to_json_gz(user_bundle_data, '/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_tags_and_specs_data.json.gz')"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":14432,"status":"ok","timestamp":1735296580430,"user":{"displayName":"Fundamental RecSys","userId":"12384593251438087944"},"user_tz":-420},"id":"CDyd0HguqlSL","outputId":"26074a9e-e964-45e9-d346-98074bf062a5"},"outputs":[{"output_type":"stream","name":"stdout","text":["X saved successfully!\n","y saved successfully!\n"]}],"source":["# prompt: save X to /content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data\n","\n","# Assuming 'X' is defined as in the previous code\n","\n","# Save the variable X to the specified path in Google Drive\n","# Assuming X is a numpy array or a pandas DataFrame\n","# np.save('/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_price_features.npy', X)\n","# np.save('/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_tags_and_specs_features.npy', X)\n","# joblib.dump(X, '/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_tags_and_specs_features.pkl')\n","print(\"X saved successfully!\")\n","\n","# np.save('/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_price_label.npy', y)\n","# np.save('/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_tags_and_specs_label.npy', y)\n","# joblib.dump(y, '/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_tags_and_specs_label.pkl')\n","\n","np.save('/content/drive/MyDrive/Projects/Disertation/SOTA Bundle Matching/Processing Data/user_price_identity.npy', z)\n","print(\"y saved successfully!\")"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fBcSzZRrtyAH"},"outputs":[],"source":["# prompt: save X using np.save as user_price_features.npy\n","\n"]}],"metadata":{"colab":{"collapsed_sections":["_T8fPo2P6CFY"],"provenance":[],"mount_file_id":"1-DKrF0h0aW_9nsChNzSvMWlAAdwSxelL","authorship_tag":"ABX9TyNCj1S++YT7IJi3ur9TtvLp"},"kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"name":"python"}},"nbformat":4,"nbformat_minor":0}