{"workflow":{"id":14673,"name":"Send scheduled IELTS grammar, writing and reading practice via Telegram with Gemini AI","views":0,"recentViews":0,"totalViews":0,"createdAt":"2026-04-03T14:02:22.535Z","description":"## 🚀 Overview\n\nThis workflow automatically generates IELTS practice content using AI and sends it to Telegram on a schedule.\n\nIt covers three key IELTS skills:\n- 🧠 Grammar Practice (Monday)\n- ✍️ Writing Task (Wednesday)\n- 📘 Reading Practice (Friday)\n\nThe workflow is designed to deliver structured, clean, and readable exercises directly to your Telegram chat.\n\n---\n\n## ⚙️ How it works\n\n1. The Schedule Trigger runs the workflow on specific days\n2. The \"Select Test by Day\" node determines which practice to generate\n3. AI generates structured IELTS content in JSON format\n4. The output is parsed and formatted into readable messages\n5. Long messages are split into chunks\n6. The content is sent to Telegram\n\n---\n\n## 🧩 Features\n\n- AI-powered IELTS content generation\n- Clean JSON parsing and formatting\n- Telegram-ready message delivery\n- Automatic scheduling by day\n- Supports multiple IELTS skills in one workflow\n\n---\n\n## 🛠 Setup\n\n1. Create a Telegram Bot via @BotFather\n2. Copy your Bot Token\n3. Add Telegram credentials in n8n\n4. Add your AI credentials (Gemini or OpenAI)\n5. Replace the Chat ID in the \"Send\" nodes with your own\n\n---\n\n## 📩 Telegram Setup\n\nTo get your Chat ID:\n1. Send a message to your bot\n2. Open:\n   https://api.telegram.org/bot&lt;TOKEN&gt;/getUpdates\n3. Copy the `chat.id`\n\n---\n\n## ⚠️ Important Notes\n\n- This workflow uses a fixed Chat ID for scheduled messages\n- Make sure to replace the Chat ID before running\n- Do not hardcode sensitive credentials\n- Ensure the AI output format remains consistent (JSON)\n\n---\n\n## 💡 Customization\n\nYou can easily customize:\n- Topics and difficulty level\n- Message format\n- Schedule timing\n- Add new modules (e.g., Speaking, Vocabulary)\n\n---\n\n## 🎯 Use Cases\n\n- IELTS learners who want daily practice\n- Teachers sharing exercises with students\n- Automated English learning systems\n- AI-powered educational bots\n\n---\n\n## 🚀 Creator Note\n\nThis workflow demonstrates how to combine AI generation, structured parsing, and messaging automation into a scalable learning system.\n\nFeel free to adapt and extend it for your own use case.","workflow":{"id":"sz0OoW5pAdSjMHvD","meta":{"instanceId":"2520466d9c3d9fefa1f0de187dccb90dd2315525a0d3abdc2f6667311468a3fe","templateCredsSetupCompleted":true},"name":"AI-powered IELTS Practice Bot that automatically delivers Grammar, Writing, and Reading exercises via Telegram.","tags":[],"nodes":[{"id":"b9aaaaa5-6d7e-4359-8545-a163026ec006","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-656,272],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.2},{"id":"30e8a8a9-75b4-4ae6-bc3e-508df0237649","name":"Parse Grammar JSON","type":"n8n-nodes-base.code","position":[496,32],"parameters":{"jsCode":"const raw = $input.first().json.content.parts[0].text;\n\nlet parsed;\n\ntry {\n  parsed = JSON.parse(raw);\n} catch (e) {\n  throw new Error(\"Invalid JSON from Gemini\");\n}\n\nreturn [{\n  json: parsed\n}];"},"typeVersion":2},{"id":"27926908-a37c-417f-b170-5b99cb1bb579","name":"Parse Writing JSON","type":"n8n-nodes-base.code","position":[496,272],"parameters":{"jsCode":"const raw = $input.first().json.content.parts[0].text;\n\nlet parsed;\n\ntry {\n  parsed = JSON.parse(raw);\n} catch (e) {\n  throw new Error(\"Invalid JSON from Gemini\");\n}\n\nreturn [{\n  json: parsed\n}];"},"typeVersion":2},{"id":"90baa690-58e6-44f4-91e8-5ea77e80c736","name":"Parse Reading JSON","type":"n8n-nodes-base.code","position":[512,496],"parameters":{"jsCode":"const raw = $input.first().json.content.parts[0].text;\n\nlet parsed;\n\ntry {\n  parsed = JSON.parse(raw);\n} catch (e) {\n  throw new Error(\"Invalid JSON from Gemini\");\n}\n\nreturn [{\n  json: parsed\n}];"},"typeVersion":2},{"id":"70220773-c31e-4282-8f65-c99005cc52ef","name":"Format Grammar Message","type":"n8n-nodes-base.code","position":[768,32],"parameters":{"jsCode":"const data = $input.first().json;\n\nlet message = `<b>📘 ${data.title}</b>\\n\\n`;\nmessage += `<b>📌 Topic:</b> ${data.topic}\\n\\n`;\n\nif (data.grammar_focus && data.grammar_focus.length) {\n  message += `<b>🎯 Grammar Focus:</b>\\n`;\n  data.grammar_focus.forEach((item) => {\n    message += `• ${item}\\n`;\n  });\n  message += `\\n`;\n}\n\nmessage += `<b>📝 Questions</b>\\n`;\n\nif (data.questions && data.questions.length) {\n  data.questions.forEach((q) => {\n    message += `\\n<b>${q.number}. [${q.type}]</b>\\n`;\n    message += `${q.question}\\n`;\n\n    if (q.options && q.options.length) {\n      q.options.forEach((opt, i) => {\n        const label = String.fromCharCode(65 + i); // A, B, C, D\n        message += `${label}. ${opt}\\n`;\n      });\n    }\n\n    if (q.instruction) {\n      message += `<i>${q.instruction}</i>\\n`;\n    }\n  });\n} else {\n  message += `No questions available.\\n`;\n}\n\nreturn [\n  {\n    json: {\n      telegram_message: message\n    }\n  }\n];"},"typeVersion":2},{"id":"7bb780af-c504-4b61-a39f-bd438308be10","name":"Format Writing Message","type":"n8n-nodes-base.code","position":[768,272],"parameters":{"jsCode":"const data = $input.first().json;\n\nfunction esc(str = '') {\n  return String(str)\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;');\n}\n\nlet message = `<b>✍️ ${esc(data.title || 'IELTS Writing Practice')}</b>\\n\\n`;\n\nif (data.task_type) {\n  message += `<b>🗂 Task Type:</b> ${esc(data.task_type)}\\n\\n`;\n}\n\nif (data.question) {\n  const cleanQuestion = String(data.question).replace(/\\n{3,}/g, '\\n\\n').trim();\n  message += `<b>📌 Question</b>\\n${esc(cleanQuestion)}\\n\\n`;\n}\n\nif (data.instructions) {\n  message += `<b>📏 Instructions:</b> ${esc(data.instructions)}\\n\\n`;\n}\n\nif (data.tips && data.tips.length) {\n  message += `<b>💡 Tips</b>\\n`;\n  data.tips.forEach((tip, index) => {\n    message += `${index + 1}. ${esc(tip)}\\n`;\n  });\n  message += `\\n`;\n}\n\nmessage += `<b>📝 Your Task</b>\\nWrite your answer and send it back to the bot for review.`;\n\nreturn [\n  {\n    json: {\n      telegram_message: message\n    }\n  }\n];"},"typeVersion":2},{"id":"c822a6c3-b9cc-4895-b3c3-38a2ad7448ef","name":"Format Reading Message","type":"n8n-nodes-base.code","position":[784,496],"parameters":{"jsCode":"const data = $input.first().json;\n\nlet message = `<b>📘 ${data.title}</b>\\n\\n`;\nmessage += `<b>📌 Topic:</b> ${data.topic}\\n\\n`;\n\n// Passage (dipotong biar tidak terlalu panjang)\nmessage += `<b>📖 Passage</b>\\n`;\nmessage += `${data.passage.slice(0, 800)}...\\n\\n`;\n\nmessage += `<b>📝 Questions</b>\\n`;\n\ndata.questions.forEach(q => {\n  message += `\\n${q.number}. ${q.question}\\n`;\n});\n\nreturn [{\n  json: {\n    telegram_message: message\n  }\n}];"},"typeVersion":2},{"id":"c88c8292-ad89-4028-8969-883021f1fa5e","name":"Split Grammar Message","type":"n8n-nodes-base.code","position":[1024,32],"parameters":{"jsCode":"const text = $input.first().json.telegram_message;\nconst chunkSize = 3500;\n\nconst chunks = [];\n\nfor (let i = 0; i < text.length; i += chunkSize) {\n  chunks.push({\n    json: {\n      telegram_message: text.slice(i, i + chunkSize)\n    }\n  });\n}\n\nreturn chunks;"},"typeVersion":2},{"id":"e48d61df-e86d-47c3-83b7-0925b290990a","name":"Split Writing Message","type":"n8n-nodes-base.code","position":[1024,272],"parameters":{"jsCode":"const text = $input.first().json.telegram_message;\nconst chunkSize = 3500;\n\nconst chunks = [];\n\nfor (let i = 0; i < text.length; i += chunkSize) {\n  chunks.push({\n    json: {\n      telegram_message: text.slice(i, i + chunkSize)\n    }\n  });\n}\n\nreturn chunks;"},"typeVersion":2},{"id":"e70875a8-ba2c-4812-88bd-8b8b26da0604","name":"Split Reading Message","type":"n8n-nodes-base.code","position":[1040,496],"parameters":{"jsCode":"const text = $input.first().json.telegram_message;\nconst chunkSize = 3500;\n\nconst chunks = [];\n\nfor (let i = 0; i < text.length; i += chunkSize) {\n  chunks.push({\n    json: {\n      telegram_message: text.slice(i, i + chunkSize)\n    }\n  });\n}\n\nreturn chunks;"},"typeVersion":2},{"id":"1521f1e7-c531-46fb-b79c-8d27be4ea2fa","name":"Send Grammar","type":"n8n-nodes-base.telegram","position":[1264,32],"webhookId":"8e7a2a06-1ce8-4ec8-b514-20de70527175","parameters":{"text":"={{ $json.telegram_message }}","chatId":"=REPLACE_WITH_YOUR_CHAT_ID","additionalFields":{"parse_mode":"HTML"}},"credentials":{"telegramApi":{"id":"aiJa3cejXNVXWNnC","name":"Telegram account"}},"typeVersion":1.2},{"id":"07002824-e293-4d19-b801-2edc7290e0c2","name":"Send Writing","type":"n8n-nodes-base.telegram","position":[1264,272],"webhookId":"8e7a2a06-1ce8-4ec8-b514-20de70527175","parameters":{"text":"={{ $json.telegram_message }}","chatId":"=REPLACE_WITH_YOUR_CHAT_ID","additionalFields":{"parse_mode":"HTML"}},"credentials":{"telegramApi":{"id":"aiJa3cejXNVXWNnC","name":"Telegram account"}},"typeVersion":1.2},{"id":"19aad316-6aab-4963-810f-bf0dadff7e65","name":"Send Reading","type":"n8n-nodes-base.telegram","position":[1264,496],"webhookId":"8e7a2a06-1ce8-4ec8-b514-20de70527175","parameters":{"text":"={{ $json.telegram_message }}","chatId":"=REPLACE_WITH_YOUR_CHAT_ID","additionalFields":{"parse_mode":"HTML"}},"credentials":{"telegramApi":{"id":"aiJa3cejXNVXWNnC","name":"Telegram account"}},"typeVersion":1.2},{"id":"a7fcad5c-8273-4076-bf91-6e7026691f30","name":"Select Test by Day","type":"n8n-nodes-base.switch","position":[-256,256],"parameters":{"rules":{"values":[{"outputKey":"Monday","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9f245046-bd87-48d1-a3d4-f4d73e7d5c40","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json['Day of week'] }}","rightValue":"Monday"}]},"renameOutput":true},{"outputKey":"Wednesday","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"4639f1b3-3d10-43f5-92a4-29c03ae90100","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json['Day of week'] }}","rightValue":"Wednesday"}]},"renameOutput":true},{"outputKey":"Friday","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"ba76c005-4b7b-4774-bf3c-8db82ff17089","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json['Day of week'] }}","rightValue":"Friday"}]},"renameOutput":true}]},"options":{}},"typeVersion":3.2},{"id":"4267c86d-d14d-445c-a775-1cfb51864e84","name":"Generate Grammar","type":"@n8n/n8n-nodes-langchain.googleGemini","position":[64,32],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"models/gemini-2.5-flash","cachedResultName":"models/gemini-2.5-flash"},"options":{},"messages":{"values":[{"content":"=You are an expert IELTS examiner with Band 9 proficiency, specializing in English grammar assessment.\n\nYour task is to generate a complete IELTS-style grammar practice exercise.\n\nTOPIC:\n[INSERT TOPIC HERE]\n\n========================\nGRAMMAR FOCUS\n========================\nFocus on common IELTS grammar areas such as:\n- Tenses (past, present, perfect)\n- Subject-verb agreement\n- Articles (a, an, the)\n- Prepositions\n- Conditionals\n- Passive voice\n- Relative clauses\n- Modals\n- Sentence structure\n\n========================\nEXERCISE REQUIREMENTS\n========================\nCreate EXACTLY 10 questions.\n\nInclude a mix of these types:\n- Fill in the blanks\n- Error correction\n- Sentence transformation\n- Multiple choice (grammar-based)\n- Sentence rewriting\n\nEach question must:\n- Be clear and unambiguous\n- Focus on ONE grammar concept\n- Be suitable for Band 6.0–7.5 level\n- Use natural English (not robotic)\n\n========================\nOUTPUT RULES (VERY IMPORTANT)\n========================\n- Return ONLY valid JSON\n- Do NOT include any explanation outside JSON\n- Do NOT include markdown formatting\n\n========================\nOUTPUT FORMAT\n========================\n\n{\n  \"title\": \"IELTS Grammar Practice\",\n  \"topic\": \"[INSERT TOPIC HERE]\",\n  \"grammar_focus\": [\"Tenses\", \"Articles\", \"Prepositions\"],\n  \"questions\": [\n    {\n      \"number\": 1,\n      \"type\": \"Fill in the blank\",\n      \"question\": \"She _____ (go) to the market yesterday.\",\n      \"options\": [],\n      \"instruction\": \"Write the correct form of the verb\"\n    },\n    {\n      \"number\": 2,\n      \"type\": \"Multiple Choice\",\n      \"question\": \"He has lived here _____ 2010.\",\n      \"options\": [\"since\", \"for\", \"during\", \"at\"],\n      \"instruction\": \"Choose the correct answer\"\n    }\n  ],\n  \"answer_key\": [\n    {\n      \"number\": 1,\n      \"answer\": \"went\"\n    },\n    {\n      \"number\": 2,\n      \"answer\": \"since\"\n    }\n  ],\n  \"explanations\": [\n    {\n      \"number\": 1,\n      \"explanation\": \"Past simple is used because the action happened yesterday.\"\n    },\n    {\n      \"number\": 2,\n      \"explanation\": \"'Since' is used with a specific point in time.\"\n    }\n  ],\n  \"next_exercise\": \"Create 3 similar sentences using past tense and time expressions.\"\n}"}]},"jsonOutput":true},"credentials":{"googlePalmApi":{"id":"WOvTzSt3FXQod4J6","name":"Google Gemini(PaLM) Api account"}},"typeVersion":1},{"id":"1aa2d22d-681e-4b72-9184-73242cb72eab","name":"Generate Writing","type":"@n8n/n8n-nodes-langchain.googleGemini","position":[64,272],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"models/gemini-2.5-flash","cachedResultName":"models/gemini-2.5-flash"},"options":{},"messages":{"values":[{"content":"=You are an expert IELTS Writing examiner.\n\nGenerate one IELTS Writing task.\n\n========================\nREQUIREMENTS\n========================\n- Task type: Task 1 or Task 2\n- Use realistic IELTS question style\n- Clear instructions\n- Suitable for Band 6–7.5\n\n========================\nOUTPUT RULES\n========================\n- Return ONLY valid JSON\n- No markdown\n\n========================\nOUTPUT FORMAT\n========================\n\n{\n  \"title\": \"IELTS Writing Practice\",\n  \"task_type\": \"Task 2\",\n  \"question\": \"Some people believe that technology makes life easier, while others think it creates more problems. Discuss both views and give your opinion.\",\n  \"instructions\": \"Write at least 250 words.\",\n  \"tips\": [\n    \"State your opinion clearly\",\n    \"Use examples to support your ideas\",\n    \"Organize your essay into clear paragraphs\"\n  ]\n}"}]}},"credentials":{"googlePalmApi":{"id":"WOvTzSt3FXQod4J6","name":"Google Gemini(PaLM) Api account"}},"typeVersion":1},{"id":"bf1f34e2-a3e5-4dcb-a3be-ff7d066a1623","name":"Generate Reading","type":"@n8n/n8n-nodes-langchain.googleGemini","position":[64,496],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"models/gemini-2.5-flash","cachedResultName":"models/gemini-2.5-flash"},"options":{},"messages":{"values":[{"content":"=You are an expert IELTS Academic Reading examiner with Band 9 proficiency.\n\nYour task is to generate a complete IELTS Academic Reading practice set.\n\nTOPIC:\n[INSERT TOPIC HERE]\n\n========================\nPASSAGE REQUIREMENTS\n========================\n- Length: 650–850 words\n- Use formal academic tone\n- Use natural and varied academic vocabulary\n- Organize into clear paragraphs (3–5 paragraphs)\n- Match the style and difficulty of Cambridge IELTS tests\n\n========================\nQUESTION REQUIREMENTS\n========================\nCreate EXACTLY 13 questions.\n\n- Include at least 5 different IELTS question types:\n  • Matching Headings  \n  • True / False / Not Given  \n  • Multiple Choice  \n  • Sentence Completion  \n  • Summary Completion  \n  • Short Answer Questions  \n  • Matching Information / Features / Sentence Endings  \n  • Table / Flow-chart / Note Completion  \n\n- Questions must:\n  • Be fair and not ambiguous  \n  • Follow official IELTS format  \n  • Avoid trick questions  \n  • Be aligned with passage content  \n  • Target difficulty: Band 6.5–7.5  \n\n========================\nOUTPUT RULES (VERY IMPORTANT)\n========================\n- Return ONLY valid JSON\n- Do NOT include any explanation outside JSON\n- Do NOT include markdown formatting (no **, no #, no ```)\n\n========================\nOUTPUT FORMAT\n========================\n\n{\n  \"title\": \"IELTS Academic Reading Practice\",\n  \"topic\": \"[INSERT TOPIC HERE]\",\n  \"passage\": \"Full reading passage here...\",\n  \"questions\": [\n    {\n      \"number\": 1,\n      \"type\": \"Matching Headings\",\n      \"question\": \"Question text...\",\n      \"options\": [\"A\", \"B\", \"C\", \"D\"],\n      \"answer_format\": \"Write the correct letter...\"\n    }\n  ],\n  \"answer_key\": [\n    {\n      \"number\": 1,\n      \"answer\": \"B\"\n    }\n  ],\n  \"explanations\": [\n    {\n      \"number\": 1,\n      \"explanation\": \"Brief explanation for difficult questions...\"\n    }\n  ]\n}"}]},"jsonOutput":true},"credentials":{"googlePalmApi":{"id":"WOvTzSt3FXQod4J6","name":"Google Gemini(PaLM) Api account"}},"typeVersion":1},{"id":"a511d3aa-ebeb-49d9-9b7b-1918f466516a","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-1456,16],"parameters":{"width":624,"height":784,"content":"📘 IELTS Practice Bot (Telegram + AI)\n\nThis workflow automatically generates IELTS practice content:\n- Monday → Grammar Practice\n- Wednesday → Writing Task\n- Friday → Reading Practice\n\nThe content is generated using AI and delivered via Telegram.\n\nFlow:\nSchedule Trigger → Select Test by Day → AI → Parse → Format → Split → Send Telegram\n\n\n⚙️ Create Telegram BOT\n\n1. Create a Telegram Bot using @BotFather\n2. Copy your Bot Token\n3. Add Telegram credentials in n8n\n4. Add your AI (Gemini/OpenAI) credentials\n5. Activate the workflow\n\nMake sure your bot has started and received at least one message.\n\n⚠️ Important:\n\nYou must replace the Chat ID in the Send nodes.\n\nExample:\n- Find: REPLACE_WITH_YOUR_CHAT_ID\n- Replace with your own Chat ID\n\nTo get your Chat ID:\n1. Send a message to your bot\n2. Open:\nhttps://api.telegram.org/bot<TOKEN>/getUpdates\n3. Copy \"chat.id\""},"typeVersion":1},{"id":"056ff272-7f0a-4ac4-a808-216bd3b3e3f2","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-736,144],"parameters":{"color":7,"width":688,"height":336,"content":"## Schedule Triggered\n\nThis workflow runs every day on a schedule. The output type changes depending on the day."},"typeVersion":1},{"id":"f1113c60-7602-45f8-80b9-4f750c5c9199","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[16,-208],"parameters":{"color":7,"width":336,"height":896,"content":"## AI Generated\n\nThis workflow uses AI to generate IELTS content.\n\nMake sure to Connect your AI credentials (Gemini / OpenAI)"},"typeVersion":1},{"id":"6ee4a005-5e8b-411d-97f5-d1b6e0b62035","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[400,-208],"parameters":{"color":7,"width":272,"height":896,"content":"## Parse\n\nParse AI output (Gemini) from raw text into valid JSON.\nThrows error if the response is not valid JSON"},"typeVersion":1},{"id":"86bdc87d-a5b3-4c42-9b47-c7f477ffe337","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[704,-208],"parameters":{"color":7,"height":896,"content":"## Format Data into Telegram Message\n\nConvert AI output into a readable Telegram message with formatting and question list"},"typeVersion":1},{"id":"6096e460-6bfa-4059-b808-61d764734645","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[960,-208],"parameters":{"color":7,"height":896,"content":"## Split Long Data\n\nSplit long Telegram message into smaller chunks to avoid message length limits."},"typeVersion":1},{"id":"42f41d9f-389f-409f-b7e8-4a2b8942af22","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[1216,-208],"parameters":{"color":7,"width":320,"height":896,"content":"## Send data to Telegram\n\nSend the formatted grammar message to Telegram.\n\nDon't forget to replace the Chat ID in the Send nodes.\n\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"21019972-bf5a-4f89-bc5b-ea5d0ee1a9c3","connections":{"Send Reading":{"main":[[]]},"Generate Grammar":{"main":[[{"node":"Parse Grammar JSON","type":"main","index":0}]]},"Generate Reading":{"main":[[{"node":"Parse Reading JSON","type":"main","index":0}]]},"Generate Writing":{"main":[[{"node":"Parse Writing JSON","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Select Test by Day","type":"main","index":0}]]},"Parse Grammar JSON":{"main":[[{"node":"Format Grammar Message","type":"main","index":0}]]},"Parse Reading JSON":{"main":[[{"node":"Format Reading Message","type":"main","index":0}]]},"Parse Writing JSON":{"main":[[{"node":"Format Writing Message","type":"main","index":0}]]},"Select Test by Day":{"main":[[{"node":"Generate Grammar","type":"main","index":0}],[{"node":"Generate Writing","type":"main","index":0}],[{"node":"Generate Reading","type":"main","index":0}]]},"Split Grammar Message":{"main":[[{"node":"Send Grammar","type":"main","index":0}]]},"Split Reading Message":{"main":[[{"node":"Send Reading","type":"main","index":0}]]},"Split Writing Message":{"main":[[{"node":"Send Writing","type":"main","index":0}]]},"Format Grammar Message":{"main":[[{"node":"Split Grammar Message","type":"main","index":0}]]},"Format Reading Message":{"main":[[{"node":"Split Reading Message","type":"main","index":0}]]},"Format Writing Message":{"main":[[{"node":"Split Writing Message","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":24,"nodeTypes":{"n8n-nodes-base.code":{"count":9},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.telegram":{"count":3},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.googleGemini":{"count":3}}},"status":"published","readyToDemo":null,"user":{"name":"ARofiqi Maulana","username":"arofiqimaulana","bio":"A Data Scientist with a background in Statistics.\nPassionate about math, computation, and automation.\n\nExperienced in building data-driven solutions using Python, SQL, and modern tools like Docker, Airflow, and n8n.\nFocused on turning data into actionable insights and scalable workflows.","verified":false,"links":["https://rofiqi.com/"],"avatar":"https://gravatar.com/avatar/e7e09b84103f021fc1ba96907e5b43afca22b9322b968059472f6287a8d6f7a0?r=pg&d=retro&size=200"},"nodes":[{"id":49,"icon":"file:telegram.svg","name":"n8n-nodes-base.telegram","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/creating-telegram-bots-with-n8n-a-no-code-platform/","icon":"💬","label":"Creating Telegram Bots with n8n, a No-Code Platform"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/telegram/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Telegram"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Telegram","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1309,"icon":"file:gemini.svg","name":"@n8n/n8n-nodes-langchain.googleGemini","codex":{"data":{"alias":["LangChain","video","document","audio","transcribe","assistant"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.googlegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Miscellaneous","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iX2Zvb3RlclNwYXJrXzk4dWR0XzE1MSIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTU3LjA2NjcgMjguNjEwM0M1Mi4xMzU5IDI2LjQ4NzggNDcuODIxNyAyMy41NzYgNDQuMTIyMyAxOS44Nzg0QzQwLjQyNDcgMTYuMTgwOCAzNy41MTI4IDExLjg2NDkgMzUuMzkwMiA2LjkzNDJDMzQuNTc1NCA1LjA0NDQ5IDMzLjkyMDYgMy4xMDIwNCAzMy40MTg2IDEuMTEwNDlDMzMuMjU0OSAwLjQ1OTM2OCAzMi42NzExIDAuMDAxMDM3NiAzMiAwLjAwMTAzNzZDMzEuMzI4OCAwLjAwMTAzNzYgMzAuNzQ1IDAuNDU5MzY4IDMwLjU4MTMgMS4xMTA0OUMzMC4wNzkzIDMuMTAyMDQgMjkuNDI0NiA1LjA0MjY3IDI4LjYwOTcgNi45MzQyQzI2LjQ4NzIgMTEuODY0OSAyMy41NzUzIDE2LjE4MDggMTkuODc3NyAxOS44Nzg0QzE2LjE4IDIzLjU3NiAxMS44NjQgMjYuNDg3OCA2LjkzMzI3IDI4LjYxMDNDNS4wNDM1MyAyOS40MjUxIDMuMTAxMDUgMzAuMDc5OSAxLjEwOTQ3IDMwLjU4MTlDMC40NTgzMzggMzAuNzQ1NiAwIDMxLjMyOTQgMCAzMi4wMDA1QzAgMzIuNjcxNiAwLjQ1ODMzOCAzMy4yNTU1IDEuMTA5NDcgMzMuNDE5MUMzLjEwMTA1IDMzLjkyMTEgNS4wNDE3MiAzNC41NzU5IDYuOTMzMjcgMzUuMzkwN0MxMS44NjQgMzcuNTEzMiAxNi4xNzgyIDQwLjQyNTEgMTkuODc3NyA0NC4xMjI2QzIzLjU3NzEgNDcuODIwMiAyNi40ODcyIDUyLjEzNjEgMjguNjA5NyA1Ny4wNjY4QzI5LjQyNDYgNTguOTU2NSAzMC4wNzkzIDYwLjg5OSAzMC41ODEzIDYyLjg5MDVDMzAuNzQ1IDYzLjU0MTYgMzEuMzI4OCA2NCAzMiA2NEMzMi42NzExIDY0IDMzLjI1NDkgNjMuNTQxNiAzMy40MTg2IDYyLjg5MDVDMzMuOTIwNiA2MC44OTkgMzQuNTc1NCA1OC45NTgzIDM1LjM5MDIgNTcuMDY2OEMzNy41MTI4IDUyLjEzNjEgNDAuNDI0NyA0Ny44MjIgNDQuMTIyMyA0NC4xMjI2QzQ3LjgxOTkgNDAuNDI1MSA1Mi4xMzU5IDM3LjUxMzIgNTcuMDY2NyAzNS4zOTA3QzU4Ljk1NjQgMzQuNTc1OSA2MC44OTg5IDMzLjkyMTEgNjIuODkwNSAzMy40MTkxQzYzLjU0MTYgMzMuMjU1NSA2NCAzMi42NzE2IDY0IDMyLjAwMDVDNjQgMzEuMzI5NCA2My41NDE2IDMwLjc0NTYgNjIuODkwNSAzMC41ODE5QzYwLjg5ODkgMzAuMDc5OSA1OC45NTgyIDI5LjQyNTEgNTcuMDY2NyAyOC42MTAzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48bWFzayBpZD0ibWFzazBfMTA4NTlfNDg5NCIgc3R5bGU9Im1hc2stdHlwZTphbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij48cGF0aCBkPSJNMzIgMEMzMi42NzExIDEuMTQ0ZS0wNSAzMy4yNTUzIDAuNDU4MjYzIDMzLjQxODkgMS4xMDkzOEMzMy45MjA5IDMuMTAwOTMgMzQuNTc1OCA1LjA0Mzg5IDM1LjM5MDYgNi45MzM1OUMzNy41MTMxIDExLjg2MzkgNDAuNDI0NyAxNi4xNzk2IDQ0LjEyMjEgMTkuODc3QzQ3LjgyMTUgMjMuNTc0NSA1Mi4xMzU3IDI2LjQ4NjkgNTcuMDY2NCAyOC42MDk0QzU4Ljk1OCAyOS40MjQyIDYwLjg5OSAzMC4wNzkxIDYyLjg5MDYgMzAuNTgxMUM2My41NDE1IDMwLjc0NDggNjMuOTk5OCAzMS4zMjgxIDY0IDMxLjk5OUM2NCAzMi42NzAxIDYzLjU0MTcgMzMuMjU0MiA2Mi44OTA2IDMzLjQxOEM2MC44OTkgMzMuOTE5OSA1OC45NTYxIDM0LjU3NDggNTcuMDY2NCAzNS4zODk2QzUyLjEzNTggMzcuNTEyMSA0Ny44MTk2IDQwLjQyMzcgNDQuMTIyMSA0NC4xMjExQzQwLjQyNDYgNDcuODIwNCAzNy41MTMxIDUyLjEzNDkgMzUuMzkwNiA1Ny4wNjU0QzM0LjU3NTggNTguOTU3IDMzLjkyMDkgNjAuODk4MSAzMy40MTg5IDYyLjg4OTZDMzMuMjU1MiA2My41NDA3IDMyLjY3MTEgNjMuOTk5IDMyIDYzLjk5OUMzMS4zMjg5IDYzLjk5OSAzMC43NDQ4IDYzLjU0MDcgMzAuNTgxMSA2Mi44ODk2QzMwLjA3OTEgNjAuODk4MSAyOS40MjQyIDU4Ljk1NTEgMjguNjA5NCA1Ny4wNjU0QzI2LjQ4NjkgNTIuMTM0OSAyMy41NzczIDQ3LjgxODYgMTkuODc3OSA0NC4xMjExQzE2LjE3ODYgNDAuNDIzNyAxMS44NjQyIDM3LjUxMjEgNi45MzM1OSAzNS4zODk2QzUuMDQyMDQgMzQuNTc0OCAzLjEwMDk2IDMzLjkxOTkgMS4xMDkzOCAzMy40MThDMC40NTgzMDkgMzMuMjU0MiAwIDMyLjY3MDEgMCAzMS45OTlDMC4wMDAyMDE1NDggMzEuMzI4MSAwLjQ1ODQ2MyAzMC43NDQ4IDEuMTA5MzggMzAuNTgxMUMzLjEwMDk2IDMwLjA3OTEgNS4wNDM4NiAyOS40MjQyIDYuOTMzNTkgMjguNjA5NEMxMS44NjQzIDI2LjQ4NjkgMTYuMTgwNCAyMy41NzQ1IDE5Ljg3NzkgMTkuODc3QzIzLjU3NTMgMTYuMTc5NiAyNi40ODY5IDExLjg2MzkgMjguNjA5NCA2LjkzMzU5QzI5LjQyNDIgNS4wNDIwNyAzMC4wNzkxIDMuMTAwOTMgMzAuNTgxMSAxLjEwOTM4QzMwLjc0NDggMC40NTgyNiAzMS4zMjg5IDAgMzIgMFoiIGZpbGw9ImJsYWNrIj48L3BhdGg+PHBhdGggZD0iTTMyIDBDMzIuNjcxMSAxLjE0NGUtMDUgMzMuMjU1MyAwLjQ1ODI2MyAzMy40MTg5IDEuMTA5MzhDMzMuOTIwOSAzLjEwMDkzIDM0LjU3NTggNS4wNDM4OSAzNS4zOTA2IDYuOTMzNTlDMzcuNTEzMSAxMS44NjM5IDQwLjQyNDcgMTYuMTc5NiA0NC4xMjIxIDE5Ljg3N0M0Ny44MjE1IDIzLjU3NDUgNTIuMTM1NyAyNi40ODY5IDU3LjA2NjQgMjguNjA5NEM1OC45NTggMjkuNDI0MiA2MC44OTkgMzAuMDc5MSA2Mi44OTA2IDMwLjU4MTFDNjMuNTQxNSAzMC43NDQ4IDYzLjk5OTggMzEuMzI4MSA2NCAzMS45OTlDNjQgMzIuNjcwMSA2My41NDE3IDMzLjI1NDIgNjIuODkwNiAzMy40MThDNjAuODk5IDMzLjkxOTkgNTguOTU2MSAzNC41NzQ4IDU3LjA2NjQgMzUuMzg5NkM1Mi4xMzU4IDM3LjUxMjEgNDcuODE5NiA0MC40MjM3IDQ0LjEyMjEgNDQuMTIxMUM0MC40MjQ2IDQ3LjgyMDQgMzcuNTEzMSA1Mi4xMzQ5IDM1LjM5MDYgNTcuMDY1NEMzNC41NzU4IDU4Ljk1NyAzMy45MjA5IDYwLjg5ODEgMzMuNDE4OSA2Mi44ODk2QzMzLjI1NTIgNjMuNTQwNyAzMi42NzExIDYzLjk5OSAzMiA2My45OTlDMzEuMzI4OSA2My45OTkgMzAuNzQ0OCA2My41NDA3IDMwLjU4MTEgNjIuODg5NkMzMC4wNzkxIDYwLjg5ODEgMjkuNDI0MiA1OC45NTUxIDI4LjYwOTQgNTcuMDY1NEMyNi40ODY5IDUyLjEzNDkgMjMuNTc3MyA0Ny44MTg2IDE5Ljg3NzkgNDQuMTIxMUMxNi4xNzg2IDQwLjQyMzcgMTEuODY0MiAzNy41MTIxIDYuOTMzNTkgMzUuMzg5NkM1LjA0MjA0IDM0LjU3NDggMy4xMDA5NiAzMy45MTk5IDEuMTA5MzggMzMuNDE4QzAuNDU4MzA5IDMzLjI1NDIgMCAzMi42NzAxIDAgMzEuOTk5QzAuMDAwMjAxNTQ4IDMxLjMyODEgMC40NTg0NjMgMzAuNzQ0OCAxLjEwOTM4IDMwLjU4MTFDMy4xMDA5NiAzMC4wNzkxIDUuMDQzODYgMjkuNDI0MiA2LjkzMzU5IDI4LjYwOTRDMTEuODY0MyAyNi40ODY5IDE2LjE4MDQgMjMuNTc0NSAxOS44Nzc5IDE5Ljg3N0MyMy41NzUzIDE2LjE3OTYgMjYuNDg2OSAxMS44NjM5IDI4LjYwOTQgNi45MzM1OUMyOS40MjQyIDUuMDQyMDcgMzAuMDc5MSAzLjEwMDkzIDMwLjU4MTEgMS4xMDkzOEMzMC43NDQ4IDAuNDU4MjYgMzEuMzI4OSAwIDMyIDBaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMTA4NTlfNDg5NCkiPjwvcGF0aD48L21hc2s+PGcgbWFzaz0idXJsKCNtYXNrMF8xMDg1OV80ODk0KSI+PGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjBfZl8xMDg1OV80ODk0KSI+PGVsbGlwc2UgY3g9IjE0LjIwODQiIGN5PSIxNi43MTY0IiByeD0iMTQuMjA4NCIgcnk9IjE2LjcxNjQiIHRyYW5zZm9ybT0ibWF0cml4KDAuOTQyMzQzIDAuMzM0NjQ5IC0wLjMzNDY1NiAwLjk0MjM0IC03Ljk3OSAxMy43NzM1KSIgZmlsbD0iI0ZGRTQzMiI+PC9lbGxpcHNlPjwvZz48ZyBmaWx0ZXI9InVybCgjZmlsdGVyMV9mXzEwODU5XzQ4OTQpIj48ZWxsaXBzZSBjeD0iMjcuMDU0MyIgY3k9IjIuNTUxMTQiIHJ4PSIxOC4zOTQ0IiByeT0iMTguNzk4NSIgZmlsbD0iI0ZDNDEzRCI+PC9lbGxpcHNlPjwvZz48ZyBmaWx0ZXI9InVybCgjZmlsdGVyMl9mXzEwODU5XzQ4OTQpIj48ZWxsaXBzZSBjeD0iMTkuMjI0NSIgY3k9IjI0LjkwNDIiIHJ4PSIxOS4yMjQ1IiByeT0iMjQuOTA0MiIgdHJhbnNmb3JtPSJtYXRyaXgoMC45OTg4MDcgLTAuMDQ4ODI1NCAwLjA0ODgyNjYgMC45OTg4MDcgLTEuNzI3NzggMzIuNjU3MykiIGZpbGw9IiMwMEI5NUMiPjwvZWxsaXBzZT48L2c+PGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjNfZl8xMDg1OV80ODk0KSI+PGVsbGlwc2UgY3g9IjE5LjIyNDUiIGN5PSIyNC45MDQyIiByeD0iMTkuMjI0NSIgcnk9IjI0LjkwNDIiIHRyYW5zZm9ybT0ibWF0cml4KDAuOTk4ODA3IC0wLjA0ODgyNTQgMC4wNDg4MjY2IDAuOTk4ODA3IC0xLjcyNzc4IDMyLjY1NzMpIiBmaWxsPSIjMDBCOTVDIj48L2VsbGlwc2U+PC9nPjxnIGZpbHRlcj0idXJsKCNmaWx0ZXI0X2ZfMTA4NTlfNDg5NCkiPjxlbGxpcHNlIGN4PSIxOC44NDI5IiBjeT0iMjAuNzQ0MSIgcng9IjE4Ljg0MjkiIHJ5PSIyMC43NDQxIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg1NDMwMSAtMC41MTk3NzkgMC41MTk3OSAwLjg1NDI5NCAtNy4xMzU3NCA0Ny41MDc4KSIgZmlsbD0iIzAwQjk1QyI+PC9lbGxpcHNlPjwvZz48ZyBmaWx0ZXI9InVybCgjZmlsdGVyNV9mXzEwODU5XzQ4OTQpIj48ZWxsaXBzZSBjeD0iNjYuNDYxNyIgY3k9IjI0Ljk3NyIgcng9IjE4LjA5MzMiIHJ5PSIxNy40MjI5IiBmaWxsPSIjMzE4NkZGIj48L2VsbGlwc2U+PC9nPjxnIGZpbHRlcj0idXJsKCNmaWx0ZXI2X2ZfMTA4NTlfNDg5NCkiPjxlbGxpcHNlIGN4PSIyMC45MjkyIiBjeT0iMjIuMDc1MiIgcng9IjIwLjkyOTIiIHJ5PSIyMi4wNzUyIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjc5NTk5IDAuNjA1MzEgLTAuNjA1MzIgMC43OTU5ODIgLTIuODE4ODUgLTcuNDMzMjMpIiBmaWxsPSIjRkJCQzA0Ij48L2VsbGlwc2U+PC9nPjxnIGZpbHRlcj0idXJsKCNmaWx0ZXI3X2ZfMTA4NTlfNDg5NCkiPjxlbGxpcHNlIGN4PSIyNC4xMzExIiBjeT0iMjIuMjkxOSIgcng9IjI0LjEzMTEiIHJ5PSIyMi4yOTE5IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjgyNDAzNyAwLjU2NjUzNiAtMC41NjY1NDYgMC44MjQwMyAzOS42MzM4IDAuMzEwNjA4KSIgZmlsbD0iIzMxODZGRiI+PC9lbGxpcHNlPjwvZz48ZyBmaWx0ZXI9InVybCgjZmlsdGVyOF9mXzEwODU5XzQ4OTQpIj48cGF0aCBkPSJNNTQuMjI1NSAtMi4zMDQwM0M1Ny4wMTk1IDEuNDk0NjIgNTMuNDI5NCA4Ljg4MDQgNDYuMjA2OCAxNC4xOTI2QzM4Ljk4NDIgMTkuNTA0OCAzMC44NjQyIDIwLjczMTggMjguMDcwMiAxNi45MzMxQzI1LjI3NjIgMTMuMTM0NSAyOC44NjYzIDUuNzQ4NjcgMzYuMDg4OSAwLjQzNjQ4NkM0My4zMTE1IC00Ljg3NTcgNTEuNDMxNSAtNi4xMDI2NyA1NC4yMjU1IC0yLjMwNDAzWiIgZmlsbD0iIzc0OUJGRiI+PC9wYXRoPjwvZz48ZyBmaWx0ZXI9InVybCgjZmlsdGVyOV9mXzEwODU5XzQ4OTQpIj48ZWxsaXBzZSBjeD0iMjcuNTg1MyIgY3k9IjE3LjE0NzgiIHJ4PSIyNy41ODUzIiByeT0iMTcuMTQ3OCIgdHJhbnNmb3JtPSJtYXRyaXgoMC43MzMxNjYgLTAuNjgwMDQ5IDAuNjgwMDYxIDAuNzMzMTU1IC0xMi4yNTgzIDkuNDk2OTUpIiBmaWxsPSIjRkM0MTNEIj48L2VsbGlwc2U+PC9nPjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIxMF9mXzEwODU5XzQ4OTQpIj48ZWxsaXBzZSBjeD0iMTQuNzgxOSIgY3k9IjguNTk2MzciIHJ4PSIxNC43ODE5IiByeT0iOC41OTYzNyIgdHJhbnNmb3JtPSJtYXRyaXgoMC44MTMxODYgMC41ODIwMDQgLTAuNTgyMDE2IDAuODEzMTc3IDYuMzc4NDIgMzAuNTExKSIgZmlsbD0iI0ZGRUU0OCI+PC9lbGxpcHNlPjwvZz48L2c+PGRlZnM+PGZpbHRlciBpZD0iZmlsdGVyMF9mXzEwODU5XzQ4OTQiIHg9Ii0xOS42MTgiIHk9IjEyLjkwMjciIHdpZHRoPSIzOC44NjgxIiBoZWlnaHQ9IjQyLjc1NjIiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCI+PC9mZUZsb29kPjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIj48L2ZlQmxlbmQ+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMi40NTk2NSIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzEwODU5XzQ4OTQiPjwvZmVHYXVzc2lhbkJsdXI+PC9maWx0ZXI+PGZpbHRlciBpZD0iZmlsdGVyMV9mXzEwODU5XzQ4OTQiIHg9Ii0xNS4xMjIzIiB5PSItNDAuMDI5NiIgd2lkdGg9Ijg0LjM1MzMiIGhlaWdodD0iODUuMTYxNSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ij48L2ZlRmxvb2Q+PGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiPjwvZmVCbGVuZD48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIxMS44OTExIiByZXN1bHQ9ImVmZmVjdDFfZm9yZWdyb3VuZEJsdXJfMTA4NTlfNDg5NCI+PC9mZUdhdXNzaWFuQmx1cj48L2ZpbHRlcj48ZmlsdGVyIGlkPSJmaWx0ZXIyX2ZfMTA4NTlfNDg5NCIgeD0iLTIwLjc2ODIiIHk9IjExLjQ4MzUiIHdpZHRoPSI3OC45MTYxIiBoZWlnaHQ9IjkwLjIxOTYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCI+PC9mZUZsb29kPjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIj48L2ZlQmxlbmQ+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMTAuMTA4NiIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzEwODU5XzQ4OTQiPjwvZmVHYXVzc2lhbkJsdXI+PC9maWx0ZXI+PGZpbHRlciBpZD0iZmlsdGVyM19mXzEwODU5XzQ4OTQiIHg9Ii0yMC43NjgyIiB5PSIxMS40ODM1IiB3aWR0aD0iNzguOTE2MSIgaGVpZ2h0PSI5MC4yMTk2IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+PGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiPjwvZmVGbG9vZD48ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSI+PC9mZUJsZW5kPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEwLjEwODYiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl8xMDg1OV80ODk0Ij48L2ZlR2F1c3NpYW5CbHVyPjwvZmlsdGVyPjxmaWx0ZXIgaWQ9ImZpbHRlcjRfZl8xMDg1OV80ODk0IiB4PSItMTkuODUiIHk9IjE0Ljk2NjQiIHdpZHRoPSI3OS4xODg2IiBoZWlnaHQ9IjgwLjkzNzgiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCI+PC9mZUZsb29kPjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIj48L2ZlQmxlbmQ+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMTAuMTA4NiIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzEwODU5XzQ4OTQiPjwvZmVHYXVzc2lhbkJsdXI+PC9maWx0ZXI+PGZpbHRlciBpZD0iZmlsdGVyNV9mXzEwODU5XzQ4OTQiIHg9IjI5LjE1NjEiIHk9Ii0xMS42NTgyIiB3aWR0aD0iNzQuNjExMSIgaGVpZ2h0PSI3My4yNzAzIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+PGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiPjwvZmVGbG9vZD48ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSI+PC9mZUJsZW5kPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjkuNjA2MTMiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl8xMDg1OV80ODk0Ij48L2ZlR2F1c3NpYW5CbHVyPjwvZmlsdGVyPjxmaWx0ZXIgaWQ9ImZpbHRlcjZfZl8xMDg1OV80ODk0IiB4PSItMzguMjkxIiB5PSItMTYuMjY4NyIgd2lkdGg9Ijc3LjUzOCIgaGVpZ2h0PSI3OC4xNTEzIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+PGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiPjwvZmVGbG9vZD48ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSI+PC9mZUJsZW5kPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjguNzA1OTEiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl8xMDg1OV80ODk0Ij48L2ZlR2F1c3NpYW5CbHVyPjwvZmlsdGVyPjxmaWx0ZXIgaWQ9ImZpbHRlcjdfZl8xMDg1OV80ODk0IiB4PSI3Ljc4MDM4IiB5PSItNi4wOTgxIiB3aWR0aD0iNzguMjE4MSIgaGVpZ2h0PSI3Ni44OTgyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+PGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiPjwvZmVGbG9vZD48ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSI+PC9mZUJsZW5kPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjcuNzc0NzMiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl8xMDg1OV80ODk0Ij48L2ZlR2F1c3NpYW5CbHVyPjwvZmlsdGVyPjxmaWx0ZXIgaWQ9ImZpbHRlcjhfZl8xMDg1OV80ODk0IiB4PSIxMy4yMDgyIiB5PSItMTguNDI1IiB3aWR0aD0iNTUuODc5MyIgaGVpZ2h0PSI1MS40NzkxIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+PGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiPjwvZmVGbG9vZD48ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSI+PC9mZUJsZW5kPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjYuOTU2OTQiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl8xMDg1OV80ODk0Ij48L2ZlR2F1c3NpYW5CbHVyPjwvZmlsdGVyPjxmaWx0ZXIgaWQ9ImZpbHRlcjlfZl8xMDg1OV80ODk0IiB4PSItMTUuNDczOSIgeT0iLTMxLjAyNzIiIHdpZHRoPSI3MC4yMDM0IiBoZWlnaHQ9IjY4LjY3MzUiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCI+PC9mZUZsb29kPjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIj48L2ZlQmxlbmQ+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNS44NzU5OCIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzEwODU5XzQ4OTQiPjwvZmVHYXVzc2lhbkJsdXI+PC9maWx0ZXI+PGZpbHRlciBpZD0iZmlsdGVyMTBfZl8xMDg1OV80ODk0IiB4PSItMTQuMTczIiB5PSIyMC40NzQiIHdpZHRoPSI1NS4xMzczIiBoZWlnaHQ9IjUxLjI2MSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ij48L2ZlRmxvb2Q+PGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiPjwvZmVCbGVuZD48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI3LjI3MjUzIiByZXN1bHQ9ImVmZmVjdDFfZm9yZWdyb3VuZEJsdXJfMTA4NTlfNDg5NCI+PC9mZUdhdXNzaWFuQmx1cj48L2ZpbHRlcj48bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTA4NTlfNDg5NCIgeDE9IjE4LjE5MzEiIHkxPSI0Mi44MjEiIHgyPSI1MS40MzM1IiB5Mj0iMTQuNzk1OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM0ODkzRkMiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjAuMjciIHN0b3AtY29sb3I9IiM0ODkzRkMiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjAuNzc2OTgxIiBzdG9wLWNvbG9yPSIjOTY5REZGIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkQ5OUZFIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+Cg=="},"displayName":"Google Gemini","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":47,"name":"AI Chatbot"}],"image":[]}}