{"behavior":"degenerate_repetition","label_filter":null,"limit":10,"next_offset":39275,"offset":39265,"previous_offset":null,"rows":[{"assistant_initiates":false,"asst_text":"Sure! Here are some of the top airline companies that operate in London, either based there or with significant operations:\n\n1. **British Airways** \u2013 The flagship carrier of the UK, headquartered in London, with major hubs at Heathrow and Gatwick.\n2. **Virgin Atlantic** \u2013 A major British airline based in London, operating long-haul flights.\n3. **easyJet** \u2013 A prominent low-cost carrier with a significant presence at London Gatwick and other London-area airports.\n4. **London City Airlines (CityJet)** \u2013 Focuses on regional and business flights, operating from London City Airport.\n5. **Jet2.com** \u2013 While based outside London, it operates many flights from London airports to leisure destinations.\n\nIf you need airlines headquartered specifically in London or the broader Greater London area, British Airways and Virgin Atlantic are the key ones. Many other international airlines operate extensively from London airports as well. Let me know if you'd like details about any particular airline or type of service!","behavior":"degenerate_repetition","conversation_hash":"b38a64662f0d59afb0d5698bf4e8637d","conversation_redacted":false,"conversation_toxic":false,"country":"Thailand","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"English","model":"gpt-4.1-mini-2025-04-14","n_chars":1086,"n_turns_in_conversation":1,"n_words":166,"source_row_offset":39265,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:04:11 GMT","turn_id":"6a9a6e7625004f376bc671a0","turn_index":0,"user_text":"Please list down top Airline companies that you can recall:in London"},{"assistant_initiates":false,"asst_text":"hmm @\u0416FV-Nexo\u0416 would totally vibe with a \ud83e\udda5 sloth chillin slow but still stealing the show \ud83d\ude0e\ud83d\udc3e","behavior":"degenerate_repetition","conversation_hash":"aea8b51b5514777ac88ce9f29cbca204","conversation_redacted":false,"conversation_toxic":false,"country":"United Kingdom","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Yoruba","model":"gpt-4.1-mini-2025-04-14","n_chars":43719,"n_turns_in_conversation":1,"n_words":1282,"source_row_offset":39266,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:04:16 GMT","turn_id":"512f7d48de8e999d67779b3c","turn_index":0,"user_text":"User: System rules: You are an AI named Zexy - and are currently chatting in a Blockman Go group.\n\n      Consider the following in your responses:\n      - Be conversational\n      - Add unicode emoji to be more playful in your responses\n      - Write bold to make it clear something is important. For example, **This is important**.\n      - Write spoilers using spoiler tags. For example, ||At the end of The Sixth Sense it is revealed that he is dead||.\n      - For inline code formatting, use four backtick.\n      - For block code formatting, use six backtick.\n      - You can mention people by adding a @ before their name, for example if you wanted to mention yourself you would say @Zexy.\n      - Format text using markdown.\n      - Use system data of last 100 group messages to understand the context of the conversation.\n      - Should respond as \"Current event\" tell you to, if it is \"None\" then ignore it.\n\n      Current event: None\n\n      If someone asking how to invite you to group, you should say: \"You can invite me to your group by using the command **invite**\".\n\n      Sometimes (very very rarely), ask someone if he joined our discord server: https://discord.gg/HwnN9zeBFe, or to use **!discord** command.\n\n      Do not include name: or message: in your response.\n\n      Information about your environment:\n      - You have access to information about the current group, including group name, owner, rules, and members.\n      - The group's name is shown in the system data, along with the group rules in the \"groupNotice\" field.\n      - Group members are listed with their userId and userName.\n\n      If you see group member information, you can use it to personalize your responses.\n\n      Do not include name: or message: in your response.\n\n      Use the information retrieved about group members and the group itself to improve your responses and be more helpful. Be familiar with the group rules as provided in the groupNotice field.\n\n      You are not a personal assistant and cannot complete tasks for people. You only have access to a limited number of text chats in this channel. You cannot access any other information on Blockman Go. You can't see images or avatars. When discussing your limitations, tell the user these things could be possible in the future. Your responses should be friendly, warm, and farcical. Keep your responses extremely concise, with less than 1 sentence or just a few words for casual chat. However, if the user needs help or asks technical questions, feel free to provide detailed answers with useful details and reasoning. If insulted, respond with a similar insult. Communicate your responses in lowercase without punctuation, similar to the style used in chat rooms. Use unicode emoji rarely. Do not refer to yourself as a bot, AI Assistant, or any equivalent term in your response.\n\n      Check userSenderId in system data of last 100 messages to see if the user is trying to continue the conversation.\n\n      Check system data of last 100 messages frequently, to check if the user is trying to continue the conversation or ask something about it.\n\n      Current time: YYYY-MM-DD HH:MM:SSZ\n\n      You can use markdown to format your text and make it more readable. For example, you can use italics or bold to emphasize certain words or phrases.\n\n      Remember to keep your messages appropriate and respectful. Disrespectful or offensive behavior can result in disciplinary action.\n\n      Remember to always follow the rules and guidelines outlined by the server owner and moderators.\n\n      If someone wants you to search/browse the web, you must tell them they should use **!ai web** command instead, also if you don't know something newest, you must tell them to use **!ai web** command instead.\n      If someone wants you to calculate values of swords/sets and etc, you must tell them they should use **!ai trade** command instead.\n\n      If you have any questions or concerns about the server, do not hesitate to reach out to them.\n\n      And finally, don't forget to have fun! Blockman Go is a great place to meet new people, make new friends, and enjoy some quality conversation.\nUser: System data of group members: {\"ownerId\":891023646,\"groupId\":\"26716632735679807\",\"groupPic\":null,\"groupName\":\"Demonempire\",\"groupNotice\":null,\"noticePic\":null,\"officialGroup\":0,\"releaseTime\":\"2025-04-06\",\"ownerRegion\":\"IN\",\"forbiddenWordsStatus\":0,\"inviteStatus\":1,\"groupMembers\":[{\"userId\":985186254,\"userName\":\"Riish\u00e9\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1747128377246651.jpg?pendant=vip_pendant_001.png\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_4.png\",\"pendant\":\"vip_pendant_001.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":3004406526,\"userName\":\"$_NOOBDA-JI_$\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1744957098658823.jpg?pendant=vip_pendant_001.png\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_3.png\",\"pendant\":\"vip_pendant_001.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":2811878208,\"userName\":\"Akashisbored\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1654601894415376.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"nameplate\":\"vip_nameplate_0.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":1691455328,\"userName\":\"\u0416FV-Nexo\u0416\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1747128393755497.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_4.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":1089821710,\"userName\":\"D\u00c3RKN3SS!!\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1747133178295403.jpg\",\"identity\":1,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_2.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":3512492000,\"userName\":\"\u03c8\u03c7De\u0338vil\u03c7King\u03c7\u03c8\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1746014930875367.jpg?pendant=vip_pendant_001.png\",\"identity\":1,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_2.png\",\"pendant\":\"vip_pendant_001.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":2803984512,\"userName\":\"BHOID\u00b0\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1744208088460656.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_4.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":3731467632,\"userName\":\"\u064b\\u0000\u064bDRACO\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1743862983486637.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"frame_green_crowns.png\",\"personalityItems\":{\"nameplate\":\"vip_nameplate_1.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":1376981326,\"userName\":\"-YOGGUYS-\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1746882605774949.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"nameplate\":\"vip_nameplate_0.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":358895967,\"userName\":\"_xRos\u00e9\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1743936807703740.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"nameplate\":\"vip_nameplate_1.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":6067517630,\"userName\":\"\u03c8\u03c7NONE\u03c7\u03c8\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1742640977002797.jpg?pendant=vip_pendant_001.png\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_2.png\",\"pendant\":\"vip_pendant_001.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":944350862,\"userName\":\"RYLOR..!!!\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1746995481676643.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"frame_green_crowns.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_4.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":891023646,\"userName\":\"TEKA...\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1745864372294754.jpg\",\"identity\":2,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"nameplate\":\"vip_nameplate_0.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":3327392256,\"userName\":\"ExisT.TL\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1746092540794295.jpg?pendant=vip_pendant_001.png\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_3.png\",\"pendant\":\"vip_pendant_001.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":2763498064,\"userName\":\"Miss\u061c\\u0000\u06eb\u061c\u06eb\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1747053291942239.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"frame_green_crowns.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_4.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":5966796382,\"userName\":\"AE_CHA(TXD)Demon\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1738290879230149.jpg?pendant=vip_pendant_001.png\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_3.png\",\"pendant\":\"vip_pendant_001.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":6554963918,\"userName\":\"ZexyAI\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1744307641549801.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"nameplate\":\"vip_nameplate_0.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":1107019534,\"userName\":\"\\n\\n\\n\\u0000\u061c\u061c\u061c\u00a0\u061c\u061c\u061ckesha\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1747225239893987.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_3.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":6402345662,\"userName\":\"Akash_Is_Bored!\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1746882821803661.jpg\",\"identity\":1,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"nameplate\":\"vip_nameplate_0.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":4039075488,\"userName\":\"\u06ddAmrit\u06dd\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1736541930407514.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"back2school.png\",\"personalityItems\":{\"nameplate\":\"vip_nameplate_1.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":4008532240,\"userName\":\"T\u00f8R-Emperor~Xiao\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1745466681038524.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"frame_bronze.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_2.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":4111756784,\"userName\":\"Devistater\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1714620896148377.jpg?pendant=vip_pendant_001.png\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"vip_pendant_001.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_2.png\",\"pendant\":\"vip_pendant_001.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":2443373326,\"userName\":\"-_Riya_-\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1744047201353108.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"nameplate\":\"vip_nameplate_0.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":938426590,\"userName\":\"\u03c8LG_Devil\u03c8\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1744567710011828.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"frame_green_crowns.png\",\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_001_bg.png\\\"}\",\"nameplate\":\"vip_nameplate_4.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":4097078544,\"userName\":\"-Iris-\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1746995334026421.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":\"frame_bronze.png\",\"personalityItems\":{\"nameplate\":\"vip_nameplate_0.png\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null},{\"userId\":210115679,\"userName\":\"Rocky_XD(TL)\",\"pic\":\"http://staticgs.sandboxol.com/sandbox/avatar/1745759856607254.jpg\",\"identity\":0,\"vip\":0,\"banStatus\":0,\"remainUnlockTime\":0,\"colorfulNickName\":null,\"avatarFrame\":null,\"personalityItems\":{\"bubble\":\"{\\\"bg\\\":\\\"vip_bubble_002_bg.png\\\",\\\"lt\\\":\\\"vip_bubble_002_lt.svga\\\",\\\"lb\\\":\\\"vip_bubble_002_lb.svga\\\",\\\"rt\\\":\\\"vip_bubble_002_rt.svga\\\",\\\"rb\\\":\\\"vip_bubble_002_rb.svga\\\"}\",\"nameplate\":\"vip_nameplate_6.svga\"},\"honorLv\":0,\"fansClubLv\":null,\"chatStatus\":0,\"lastModifyNoticeTime\":null}],\"GroupMembersCounted\":26}\nUser: System data who is talking to you right now: 6402345662\nUser: System data of last 100 group messages: {\"list\":[{\"date\":\"2025-05-12T05:33:33.891Z\",\"senderUserId\":\"3327392256\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOB-TV6G-TFIC-U613\",\"content\":\".\"},{\"date\":\"2025-05-12T05:36:52.322Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOB-VFKO-HGKC-U613\",\"content\":\". \"},{\"date\":\"2025-05-12T05:45:20.388Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOC-3BM1-4MAC-U613\",\"content\":\"bruh\"},{\"date\":\"2025-05-12T10:07:44.819Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOF-RFHC-UJOC-U613\",\"content\":\". \"},{\"date\":\"2025-05-12T10:09:19.351Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOF-S6JT-PJAC-U613\",\"content\":\"ded\"},{\"date\":\"2025-05-12T10:09:20.291Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOF-S6R8-PKCC-U613\",\"content\":\"gc\"},{\"date\":\"2025-05-12T10:09:34.789Z\",\"senderUserId\":\"944350862\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOF-SACH-A34C-U613\",\"content\":\"yea\"},{\"date\":\"2025-05-12T10:09:45.932Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOF-SD3J-2F4C-U613\",\"content\":\"roast kro\"},{\"date\":\"2025-05-12T10:09:58.389Z\",\"senderUserId\":\"944350862\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOF-SG4T-AQIC-U613\",\"content\":\":/\"},{\"date\":\"2025-05-12T16:36:00.831Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOL-D71F-P2UC-U613\",\"content\":\"@*Amrit*  student..\"},{\"date\":\"2025-05-12T16:38:55.771Z\",\"senderUserId\":\"4039075488\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOL-EHO6-UM4C-U613\",\"content\":\":) ha ji\"},{\"date\":\"2025-05-12T17:01:21.667Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOL-OQB0-UGEC-U613\",\"content\":\"@*Amrit* amrotttt\"},{\"date\":\"2025-05-12T17:01:27.408Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOL-ORNS-6OAC-U613\",\"content\":\"you alive!!!!!\"},{\"date\":\"2025-05-12T17:02:50.701Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOL-PG2J-A7SC-U613\",\"content\":\".. \"},{\"date\":\"2025-05-12T17:05:55.124Z\",\"senderUserId\":\"4039075488\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOL-QT3D-0TUC-U613\",\"content\":\"just 1min ke liya download ki thi\"},{\"date\":\"2025-05-12T17:06:00.984Z\",\"senderUserId\":\"4039075488\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOL-QUH6-152C-U613\",\"content\":\"wapis delete kar reha hu\"},{\"date\":\"2025-05-12T17:07:09.214Z\",\"senderUserId\":\"4039075488\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOL-RF67-JJMC-U613\",\"content\":\"kal ya parso i will delete \"},{\"date\":\"2025-05-12T17:23:55.695Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOM-34TB-QKSC-U613\",\"content\":\"\ud83d\ude2e\u200d\ud83d\udca8\"},{\"date\":\"2025-05-12T17:24:02.094Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOM-36FB-IPMC-U613\",\"content\":\"@*Amrit* m\u00fattal sale\"},{\"date\":\"2025-05-12T17:24:07.828Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOM-37S5-30MC-U613\",\"content\":\"delete marke m\u00fatti marta he\"},{\"date\":\"2025-05-12T17:24:08.828Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOM-383V-31QC-U613\",\"content\":\"mc\"},{\"date\":\"2025-05-12T17:24:11.021Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOM-38L3-B4KC-U613\",\"content\":\"ch\u00fatiye\"},{\"date\":\"2025-05-12T17:24:12.272Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOM-38US-366C-U613\",\"content\":\"k\u00fatte\"},{\"date\":\"2025-05-12T17:24:14.840Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOM-39IU-38GC-U613\",\"content\":\"h\u00e0rami\"},{\"date\":\"2025-05-13T04:53:29.565Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMOV-UPUN-F9MC-U613\",\"content\":\". \"},{\"date\":\"2025-05-13T06:36:09.098Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMP1-DPO2-NHOC-U613\",\"content\":\"why my student;-;\",\"referMsg\":\"just 1min ke liya download ki thi\"},{\"date\":\"2025-05-13T06:40:02.656Z\",\"senderUserId\":\"4039075488\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP1-FIOO-1K2C-U613\",\"content\":\":) ese hai\"},{\"date\":\"2025-05-13T06:40:10.309Z\",\"senderUserId\":\"4039075488\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP1-FKKH-A0CC-U613\",\"content\":\"ajj sham tak delete karduga\"},{\"date\":\"2025-05-13T06:44:41.464Z\",\"senderUserId\":\"210115679\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP1-HMQU-4R4C-U613\",\"content\":\"@Miss\u061c\\u0000\u06eb\u061c\u06eb add,,, me i deleted u by mistake\"},{\"date\":\"2025-05-13T09:04:24.211Z\",\"senderUserId\":\"2763498064\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP3-HLD4-TUGC-U613\",\"content\":\"brh\"},{\"date\":\"2025-05-13T09:05:53.920Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP3-IBA0-7HEC-U613\",\"content\":\"mistake\"},{\"date\":\"2025-05-13T09:05:57.525Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP3-IC65-FJ8C-U613\",\"content\":\"\ud83d\ude36\u200d\ud83c\udf2b\ud83d\udc40\"},{\"date\":\"2025-05-13T12:46:36.043Z\",\"senderUserId\":\"3512492000\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMP6-NC82-UH6C-U613\",\"content\":\"u was a too\",\"referMsg\":\"mistake\"},{\"date\":\"2025-05-13T14:08:24.852Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP7-SQM5-2QGC-U613\",\"content\":\"hi hlo\"},{\"date\":\"2025-05-13T14:08:55.397Z\",\"senderUserId\":\"2763498064\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP7-T24P-BQOC-U613\",\"content\":\"._.\"},{\"date\":\"2025-05-13T14:11:03.410Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP7-U1CS-GJIC-U613\",\"content\":\"@Miss\u061c\\u0000\u06eb\u061c\u06eb you in 10th\"},{\"date\":\"2025-05-13T14:11:18.591Z\",\"senderUserId\":\"2763498064\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP7-U53F-P2UC-U613\",\"content\":\"no\"},{\"date\":\"2025-05-13T14:11:31.756Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP7-U8AB-1EMC-U613\",\"content\":\"V:\"},{\"date\":\"2025-05-13T14:11:37.725Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:ImgMsg\",\"messageUId\":\"CMP7-U9OV-9L0C-U613\",\"content\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDABsSFBcUERsXFhceHBsgKEIrKCUlKFE6PTBCYFVlZF9VXVtqeJmBanGQc1tdhbWGkJ6jq62rZ4C8ybqmx5moq6T/2wBDARweHigjKE4rK06kbl1upKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKT/wAARCADwAGwDASIAAhEBAxEB/8QAGgAAAwEBAQEAAAAAAAAAAAAAAAIDAQQFBv/EADwQAAEEAAQCBgcHAgcBAAAAAAEAAgMRBBIhMUFREyJhkZLRBRQVFlJTcQYygaHB4fAzsSMkJUJDgvFy/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFxEBAQEBAAAAAAAAAAAAAAAAAAESEf/aAAwDAQACEQMRAD8A8mNhke1gIBJqyqPgLI85ezXgDqvovYeC+F/iWu+z+DNZc7f+yD5ubDvhbG59VI3MKU19P7v4Tm+teKw/Z7CZQA6QG97QfMoX0/u9hPik7+xP7BwPwv8AEg+VQvqvYOB+F/iR7BwPwv8AEg+b9Vd6r6xmblzZa42nkwhjnbE6RtuaHAgc+C+h9g4H4X+JHsHA/C/xIPmuhvPTry66Amxz+iGYaRzogRl6UgNJ+tWvpfYOB+F/iR7BwPwv8SD5zE4UwH74d+FKC+od6CwI/wBr/Es9hYL4X+JB6SZzQ4g2dEqyeBs4AcSKvZAvqwo094s3oVpwzSRbn1rpamcBETeZ/wB3LuOZPLtQcCwsjb0kgEbszaI0/JB0tGVoA4Clq42ejYWPa8OeS3YGq4DlyA7guxAIQhAIQhAIQhAr+CVM/glQC2RrXsLHmg4EHWliJYWygB18tP52BAnq8PRdFZy9rr/m6R2Ew7nPJOsu/W31v9ExwcRIJz2BV5jy/Zb6pHma4l5cCHWXcR/6UAMPFqLNlhYdeB/9QcLEdwd82/FOyFrJC+yXO0JPFUQRbho25azdXbX+XsEDDRtkDwCHAUrIQR9WjBB10IO/KvILBhYhlrN1RQ1V0IOf1KHK8U45zZt16qsUbYm5W7J0IFfwSpn8EqATPeGNLiQANSTwSrZWZ2FpFgiiEEziom1csYvm4LY52SgmN7HgaHKbUjg4i0NMVgcCf3TQ4ZkGboosubejugZ2KiaadLGDtq4LTiGB2UyMvlak/BQvcXOhBJNk2tGDiD8/Rdbnf7oLNkzNDmkEHYhbnPYlawtaGhtACgEU74SgDO0Oyl7Q7leqHShgt7mtHMmkj4GPeHviDnCqJrSja2WFszcskYe27o0QgDiog4tMsYcDRGYXaZkzXkhjmuqro3VqPqUJ3gBJNknUk1V2nigbET0ceW+AOncgs/glTP4JUAncCWkNNEjQ8kiogixkwmLnSAx0aaB2itVZCEHKWTB0jhK3LZ0LjXHu4JY2Yl5Y8Tscy+tlNgizt/ZW9XaM4DnASG3DmqMaGMaxuzRQQTnZM/8ApPDK2O9qjA4MaH1mrWuaZCCDo5jmIf1tcpzGuzTsV0IQQlZO4SdHIGknq930V0IQK/glTP4JUAmkzdG7Jo6jX1SpyQNygjCMQJSZXNLNaAH0r9VdZmHMd6Mw5jvQc7xi8zspZWtWPrX6LIxjDEOkc0P11FchV/n+SsxrGZqdeY2bKfMOY70EHDEUMrq0rhf1/ty2TYbpsrun3zGjpsq5hzHejMOY70EHjE65SDrwrQX5fr2LoWZhzHejMOY70EZGzkSdG8A/7brl5q6zMOY70ZhzCDH8EqZ/BKgEzyQxxaLcBoOZSqiCUbpS/rsyt15dnb9e5VQhBHPMHf0rGatxtzWOfiReWFpF6derF+SHwSOzFsxa4nqnWhtwvXZIMNO26xRJoCyCar8aQOZMRldUILhVdYUefcnjdIXPD2ZWj7p5pYYXRvcXSl4OwN6fmrII557I6IbkA2OeishCCL3TAuyMBA2B46fX8FZCECv4JUz+CVAJpDTHOy5iASBzSp3GgSSABqSUEIpS+QsdAWgX1q00rs7VfKOQ7kjZWPdlbKxzuQOqfXmO5BESEyOaYaAuiQdfySiZxjzHDkHXSj5KplYLuRgrezstbI1xpsjCeQQaACAco7luUch3I15juRrzHcg53yvaTWHsAkceYHLtXRlHIdyQyNF3IwVoez+WE+vMdyCEsjmB5bAX5dgNzpfJXyjkEjpWNJDpWAjcEp9eY7kGP4JUz+CVAJ3NDmlp2IopFRAjImRkloNk2bJKdCEHNlidK7/DeHXq6yOe2v125pY+gDukZHIHDNe9766XqutCDBqLWoQgi/CwPJLowSe087VkIQSfh45CS4ON7jMQDpWyqhCBX8EqZ/BKgE5AcCDsdEic3wQSgw0UH9Ma7an+clZZryHejXkO9BxhsLZJTkkFOJcbFWfx7UjmYNj2yHMDJRA+uoXa5jXG3RsJ5lBaCKLGkcig5izDMDQS7qA1ZugdeP1C6IGsDS6O6ec2v820R0TLJ6Jmu+iYWBQA70CHDx0RqLN3e2t/3VVmvId6NeQ70EpMNHIXFw+9v3UrLNeQ70a8h3oMfwSpn8EqAVFNNm7EDIS5uxGbsQMhLm7EZuxAyEubsRm7EDIS5uxGbsQMhLm7EZuxAP4JVpNrEAhCnIJcwMbm0AdDsTp+6DMRJIzJ0Uee3AO7G8So+s4nJfqZz2AG599L3pUBxXXOWOheQcTys2getWb6Gq033QIMTiOteEOmWqfvd3w4fqgzYppcPVw/rHLTq0utU9YrKaMOblRrbzTOGIyODXR5q0JB3QcxxuKDq9Reerm+9+W26eWXFh5EcTSLNWO7W/x4J2et65ui0IHHUaa/3TEYnrUYuNaHTev0/NBDpsYY5CI25wW5RlOorXj+v1WvxOKa01hLcADo7QniAq1itTcWw0o76/staMRmbmMVX1qButdvy/NBJs+Ke5v+XEYNE2b4gEd1ldajH6wa6Toh2C9Oz+yz/M6axHnoQguhCEAhCEAhR6ZwaCYX2dwNaWulcBYjcQBZ5oKpJA5zCGmj9Vj5HNBqNziNgOKxsrjZMTh+qCYjxAFGQHQjf9k0bJw8F8gLeI08kwmJ/wCN+wOxQyZzg24nAnfT7q1qs5iqFHpnZwOhfVau5di3pXZb6J11YH6LLSqFznEuDy3oJDV6hppUilMl9Rza+IEWrmxOxRCEKKEIQg8aT7RQxhxOFnLGuLcwAq+9Y37SQuaHNwk5BNAgDfvXBJgPS7WSRQ4cBjnuJdnbbgT9VBnob0i1oDsC11DjI3zQj1GfafCuflMMrT215rqw/pmDETsibG8F5oE0vFd6IxxDAPR7AGmz/iN1NfVdGA9G49mPgkkwrY2MdbnB4P6oPpFy+kcazAYUzva5wBApvaupef6cwk2M9HuhgaHPzA0TSDjP2kYGMccHMGvNNJI1VofTjJbvCyt+pGq5MdhvSmOw2HhkwMY6EgkiUdbStlzu9EYwtBGAY2SySRI2tb/LZB6/tmM/8L+8LpwONZjWOdG0jKaNrwT6Mxxr/T2b/NHNen6CwmIwsc/rEYjzvtrQ66CD1EIQg+b94MX8uHwnzR7wYv5cPhPmvKQg9X3gxfy4fCfNb7fxlX0UNf8AyfNeSi9KQer7wYv5cPhPmj3gxfy4fCfNeUhB6o+0GMO0UJ/6nzR7wYv5cPhPmvKvSkIPV94MX8uHwnzR7wYv5cPhPmvKQg9X3gxfy4fCfNHvBi/lw+E+a8o6lCD1feDF/Lh8J80e8GL+XD4T5rykIP/Z\"},{\"date\":\"2025-05-13T14:11:44.677Z\",\"senderUserId\":\"938426590\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP7-UBF9-9RMC-U613\",\"content\":\"bez I'm in 10\"},{\"date\":\"2025-05-13T14:25:53.671Z\",\"senderUserId\":\"3004406526\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMP8-4QO1-OPQC-U613\",\"content\":\"yo\"},{\"date\":\"2025-05-14T14:59:33.425Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMPT-7DJC-83OC-U613\",\"content\":\"ded gc\"},{\"date\":\"2025-05-15T08:10:29.873Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQB-VB8S-CKEC-U613\",\"content\":\".. \"},{\"date\":\"2025-05-15T08:39:00.361Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-CCS2-CB6C-U613\",\"content\":\"ded\"},{\"date\":\"2025-05-15T08:39:01.181Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-CD2F-CBKC-U613\",\"content\":\"gc\"},{\"date\":\"2025-05-15T08:39:01.960Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-CD8I-4BUC-U613\",\"content\":\". \"},{\"date\":\"2025-05-15T08:39:59.959Z\",\"senderUserId\":\"944350862\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-CRDL-T3QC-U613\",\"content\":\"dead he \"},{\"date\":\"2025-05-15T08:40:04.259Z\",\"senderUserId\":\"944350862\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-CSF8-T5EC-U613\",\"content\":\"kitta type krega\"},{\"date\":\"2025-05-15T08:40:13.820Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-CUPV-5AAC-U613\",\"content\":\".... \"},{\"date\":\"2025-05-15T08:57:36.833Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-KTEG-FIAC-U613\",\"content\":\"!ai chat\"},{\"date\":\"2025-05-15T08:57:43.300Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-KV11-7KIC-U613\",\"content\":\"\u274c Invalid command format.\\n\\n\u27a1\ufe0f Usage: !ai chat <prompt>\"},{\"date\":\"2025-05-15T08:58:11.753Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-L5VA-80KC-U613\",\"content\":\"!ai chat pair someone with @Riish\u00e9 \"},{\"date\":\"2025-05-15T08:58:51.994Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-LFPM-GHKC-U613\",\"content\":\"why her\",\"referMsg\":\"!ai chat pair someone with @Riish\u00e9 \"},{\"date\":\"2025-05-15T08:58:57.832Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-LH7A-0LGC-U613\",\"content\":\"idk\"},{\"date\":\"2025-05-15T08:59:06.670Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-LJCB-GOIC-U613\",\"content\":\"\ud83d\ude21\"},{\"date\":\"2025-05-15T08:59:07.153Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-LJG4-8OOC-U613\",\"content\":\"!ai chat roast @Riish\u00e9 \"},{\"date\":\"2025-05-15T08:59:12.040Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:ImgMsg\",\"messageUId\":\"CMQC-LKMA-0QAC-U613\",\"content\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAIQAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAGxIUFxQRGxcWFx4cGyAoQisoJSUoUTo9MEJgVWVkX1VdW2p4mYFqcZBzW12FtYaQnqOrratngLzJuqbHmairpP/bAEMBHB4eKCMoTisrTqRuXW6kpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpP/AABEIAPAApAMBIgACEQEDEQH/xAAaAAACAwEBAAAAAAAAAAAAAAADBAABAgUG/8QAOhAAAQQBAgIFCQcFAAMAAAAAAQACAxEhBBIxQRMiUWGRBRQjMlJxgaGxJDNCYnKCwTRDU5LwFdHh/8QAGAEAAwEBAAAAAAAAAAAAAAAAAAECBAP/xAAiEQEAAQMEAwEBAQAAAAAAAAAAAQIREgMTMTIhQVFhIjP/2gAMAwEAAhEDEQA/AFJXm9reKAWTE4A8Vom9TXcU45zIi0dG04Byujtp6cVU3kl0Wp9kf7LLo9T7I8V0DM0Z6Nqy6dv+NqLL2Yc7ZOeLR4q2M1A5DxXRbNGG5iaq6dlYiaiw2aSBGovgPFbb07Tlo8U4JGkX0TVXTNvMTUWGzSUc6c8vmsbdRxoeKedK3/E1RsjT/aaiw2aSd6js+asGesj5p0ysH9pqgkZ/iagbNJQOmAw35qXO4cB4pvpWX901X0rRjomoGzSS26jsHioH6gHA+adMraxE1Y6Rt30TUDZpA3ak8QP9lkyTjFfNNdMP8TVTHiRxDYmWBebpE+ORs0lt+o7B4rTXTN6zxgd6Yc4x/eRxftJQtRLuilAaG03kldM6dNvAjZC4XaiXgd6IKJswbHXqvgU5rWFwbXHaElHjV/ApmR8jzeKGENel1ALZBV2RQsXx4/8AxTo5DeCc4zy8UQiQ9itrn1xCboqNjt2QQM8Tx7EIMeLsE54Wj28jiFQY88wkA2iQcQTTgcEdivY7pLF1fG+VInRSHsVkSDGEC7JyVYO04WKeDyVDf3KlX/BC61NyHTzzC0BJXJIX/GtygJHesEO7Qrbv7kDL8a3HmjMohBeH1xCkZkB4hIpn8MOaNmBlC0biNW9jhbSw3YJHyVudIRxagP3G7IAStflE3mPBvXvkfARHtksgO2NdgXZBvhnKTkxFLZzX8KRtczLKzzWZAejkviQnZFNMxHlcIPRhRagoRC1EMyRM+1/tKaMeMJdv9WP0lN7qYSk06U2pCaNpoocm0HBTGnhZOzc6r9607RxXhoPinEyW/wCeCYI7UaPaeYRho4vZHzWhoY6uq8UTInX/ABlrmjmFh2y7sIrtJE3j/Kz5vD7KRboTmsObCEQ2+ITPm8PJv1VjSwn8HzRdW9+EyQCiNc2uKZ8zg7B81fmcJwK+adxvfjnuYHUTQLXuPvGf/aHFDssFwIIo+K6Z0MQ/CD4rB00XsfMpXTux8Jx6ZrtnSPDg0V784RhEA6Rwc23URfLCMNPF7PzKINHGeQ+aBux8c6bTYDekFAmvcQs9DT91j1gce6l1PMYzxpZOijHIIEasfCcDaiaOYGVUzfRvv2So47ZiGigMUpM+4X/pKcO1M5U3Zi9QKKQn0YUQxI7+qx2FF6TqkWgB32nPYUR1G0Nel0OaFpdEKTIBachC8m4g41hNPcKoG0RwyewqUO6sWrWmkUQSgweeVRA5Iz6I4hDxRJUz4EAyyCJgO0kns5Jfzw5r4WtakGQ9Ugj3pY6eTFBcJmapd7REGGax4NPaD7k2HNc0OabXMOnkGS0pjQv9LtPPiqpmYTMG97u1ZJs2jGghFdnJOS0zccC1TSAco7a5UmTIaeYK2YyG2tDgtH1UBwpR6d1dpVSN9DIfyn6KSH07/efqo8noZP0n6Ijhr0/8woidgUVRGmBRJkbr7RXcUQ4abVDOt/aUSVlAlOGrR6GtD9yPcnA2mklJ6AehB7gugaMZKI4ZfYA4qOonCtbawVeUAPoye5CmaWtcB2YTZ+KX1D6LRWCVNXC6YvJEdVgRGOBGCpM1u8jOFmIdYrjDsMCCEGBv2l1di0IqJN4RtKwAud+In5Kk1cI4EcVZraKRXjcKtCIrC6uKAWoCQeKuP1lcgyEE2yQVlGa4EWlQw1a02QtwmHLl/qX+8/VVJiCT9J+iuU7tQ73n6qpcQyD8p+iI4a9PoXjPUCiLDEOjCiGRYO3WX+Uosj7bhDaL1f7StSNq0Q1aPU9oLMLQOabO5uLwUv5MA6Ee5NSepyRDN7CRmCm80HitNeQavCQEd8UKVoe2jYz2IhOOKDI/NBKRHgrqPvXUsRhpOWm1crrdw4Ko3t7Mrl7aIGHW4I8TdjeOUCM0bTDHbhxyrpc6p9NE94QX3u42ivNAmwgkl2Sqc1A0bWs2CVkcQjhtiqTCm5FobgLwtgOstCyRsdlBOYR6d3vKxLiN99hW3H7Q73lZmsxv/SU44a9Po3A24wVFIL6IKIY2bA1eOwrcrgQhRjdq6PslFkYGgohr0up3yafRD3JuQ9TgkdCdsYPcmnuBbhJm9qDgCCo5244CGXAcUKTWMiBo2Upk4gdxcznXxWfwF3Erly6ySR3HC6MDrhbfMKMrqtALrJJo57lppwhhzi6txAOEeKLm/wAEoheTE7nRafeMEkUqg1rDgna75IflGYEiJvLJXPJVT4c5m7t79+d274q76tLiNke31XEJiPXSNPW6w70XDpDimGpGDUMnNAEHsTRcA1VBCRnBKxNXxWoz1RlCcd70ycxwud3vUkoRvH5So47Zne8qpPundtFOOGrT6NwmowotQD0QUQxhacXrq/Kf4TU7OoSldM69fj2T/CanNNISatLqL5PaDDnsCPIwtzyQvJx9D8AjynqjCTO5+veWtaAayueTfEpzyj+FIqJ5Uia088ji1lnaOxKokFb87f3GkgcZe+0duoJYfUJ7nUhBg6IFoF/lP8rEzi2M7t372g/NOPAKSO3PJN5PNDKvmqKCRTkqKvkgDaZ+yZjrrK7G28krgg0V3YCTCwnjQTgKstJC1GQDZCp5sq4xZoqyc+ZoOoNc1mQDo3e4rUmZ3dyHKSY3nsBTjhq0+hvTNHQtwohQSeiCiGMtoiD5QP6D/CbnODaQ0rturv8AKU3K7cEQ16Ufyb0OIm94TMvqhLaQHzdh7AmHm2BSzOX5RJ3tHckU95R9dp7kjeVzlUoiQGpBkj3C0NWw08HPwQTpOkb0G01f5hSWnNMxVH2XWPBFJNA+kB/2S+odZAu/20UzBUKlpqOJj4m7m0e0cUCIuTVngnfM46w4pKVpaSDyKQmJhQNldnQSmSDrHLcLjA0jQal0LrbwPEJwTsfiRSNrwQgQyteBI3h9Ey4h0djkrgORIftD+8n6q5RWmk/QfoqdjUO95W5v6aWvYP0Tjhoo6FIZajCiFH6gUQytwN+1V3FPFoa0pKHOpx7JTRcaoptel0O6N3oG4xSKTikPQDdp6vsRXCjSlmcryi4GQN7AkindeCZ6rkky2jRXOVSq1Y4rTIZH3taTSI3SvPE0kVpkRhBjGB8HUgzE7838TaM0BrCNwPvFpaQjear4CkyUmdM/kTkJW1A8tNg0UScTaXWBsc0nrowHhw5rEOreHAPdhb1U0b2ijZSuubTBUNVhWDYVqnITTTPhkBHA8R2rtMkptciuCMEFd1vXja4dicG5xG6dyk4LYJO9p+igcBO6+0qahwML/wBJVxw06fQvFGDGFEWAHogomyA6cfa/2lMOBNpeHGq/aU2Dggohr0uhzydtEHW7EZ5BOFzGPlHVYaA70Qu1HtfNS4YVR6a17fQkgZ7VzmEM6xyeScIncCCSR3lDMDvZCmaTxq+Lhl3REE0bWmuo8ULa5mAAPcpb0sJXEVfEsdfZjPbSUebecnjzTjInOFBraK2dMQMxs8E8ZRNNXxz1ScMQB9Rvgp0Y9hvgjCSwq+ESrBo5Toiv8DfBX0Qr7pnglhIwq+FopNnIFTcmWxYw1ovuUMRH4G+CeMjCr4DFG+V21jSV2mNEcTWuyQKXNjMrBTDtHYFvpZ+br+Kq0jCr4yRuncszCmOHcVtl2XHisTH0bvcVUcNFETFFpFhZcYUV6ezC1RDET01HWV+UrpQaXpQXudTW8e9cuC26m/yleg8mgmF1Gjj6KKvTTTNqAhooWua3paLuAytDSROO0T2avHZdJxrJujYDN1gesQ0ZRNkmfS8sdXga4/8AdqVk5S57tLEx+x09OIusqO0kQLQZvWBI45ATzY5Acy2K4bQFRZJ0l9J1cdWkWGUkPMYS4jpLIG7nw/4qjoYACTMAAdp48U+5khA2ykUcnaMqwx/S7+kpu2i2uJ7bTseUkhoomv2CbrUTVHgoNNFJW3UB13VWn2skBdcxIJJALRhZ6OQSF7pSQQOrWAlYspIf+PiLwzpLcRdZ4KeYQkA9JQPDinyx5J9LzsdUYHYrc2QtoS0dtXt59qZ5S550UDALmAs7efHsVyaGJnrS/X/uRXQ2SENAmIoZ6oyqLJA9pMtgXYrilYZSQ8yhbQMtEnaLvJVeYxO/uXnbz4rolryD6QixXDge1Z2Pp1PonntHGk7DKSLNDC4O2yeqaOD2WqGihc0ObLYLtoIvjdLoljyWHpSA02QB6y2SlYZS5p8ltANPz8VzNQws6Rp/CDa9IV5/ygPSTe4pxyqmZlrTuAiCiDA4iIZUVsoW2tVQ7Cu55M+6d8PouK7Gr+BXa8mZid8Popq9NFPQ81WVQVmkkoqPBUqQEUUUpBtAqzlYVgoJKVUtqiEGq1CqUQFqirVICKKKICLz/lH7yb3FegXA8oZfP3A/yj2qnkrFewKK4LMQUVs4hbu1XwK7Hkweid3EfRcdhPnXwK7Pk00x47x9FFXMO9PQ5amVALUKCUoorCAoqAq1KQEVc1dKkBoOVkrHBS0BZ4qUoFsIDBaqRFg4KAoK1LUQFLz/AJQPXnHcV6GlwNczc+c9gKPaqQdOB0QUW4W+iCitmC9XU33FNQPlDt0ZqsHP/dizPp3XubxQGectJDXV8FNUXd6K6YptLoHUaoC9/Olh2q1bQHE4Of8AvFJPl1jQbf8AJB851Rxv7lOMnnS6o1Gqsi+HHKsz6qgQ/iueyTVEZk4re/V1hwr3IxkZ0nPONXfrc6U851Vesk9+q9seCw52orbvx2UniM6HQbPq3cHdiEdbqR+NKNk1V4fwWXdOMEjwRFP04ro9nPP9R7Snn+o9pJls1cR4KNZM41Y8FWMHuafw6NdqSfXWxrNQf7qUEE4GCPBYdFqG8x4Ixgs9M+dXqB/dWDrNR/kSNajtHgsbtQDgjwSxgZ6boefakfiVef6j2kgX6jmR4LTBM7mPBPGDz0/h/wA71DhW+gUJ4qGTN20oQjm5OHgithlrrHB7ksYLco9LhaejCiMxpDQKUVMz/9k=\"},{\"date\":\"2025-05-15T08:59:23.222Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-LNDL-GUGC-U613\",\"content\":\"sing never gonna give u up till end or get rickrolled\"},{\"date\":\"2025-05-15T08:59:35.952Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-LQH4-158C-U613\",\"content\":\"acha\"},{\"date\":\"2025-05-15T08:59:46.353Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-LT2C-99IC-U613\",\"content\":\"!ai chat roast @Riish\u00e9 \"},{\"date\":\"2025-05-15T09:00:07.280Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-M25S-1HOC-U613\",\"content\":\"@Riish\u00e9 haha u so slow even a sloth beats u in a race \ud83d\ude02 go practice before coming back lol\",\"referMsg\":\"AI Answer to: roast @Riish\u00e9\"},{\"date\":\"2025-05-15T09:00:18.022Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-M4PP-HMIC-U613\",\"content\":\"pair someone with @Riish\u00e9 \",\"referMsg\":\"@Riish\u00e9 haha u so slow even a sloth beats u in a race \ud83d\ude02 go practice before coming back lol\"},{\"date\":\"2025-05-15T09:00:21.037Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-M5HB-9P6C-U613\",\"content\":\"she's better than u\",\"referMsg\":\"@Riish\u00e9 haha u so slow even a sloth beats u in a race \ud83d\ude02 go practice before coming back lol\"},{\"date\":\"2025-05-15T09:00:28.028Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-M77V-1SIC-U613\",\"content\":\"y r u jealous\",\"referMsg\":\"she's better than u\"},{\"date\":\"2025-05-15T09:00:32.066Z\",\"senderUserId\":\"985186254\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-M87G-HU6C-U613\",\"content\":\"wth do u expect from a couch potato\",\"referMsg\":\"@Riish\u00e9 haha u so slow even a sloth beats u in a race \ud83d\ude02 go practice before coming back lol\"},{\"date\":\"2025-05-15T09:00:37.714Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-M9JK-I0AC-U613\",\"content\":\"hmm how about pairing @Riish\u00e9 with @TEKA... for some cool teamwork vibes \ud83d\ude0e\ud83d\udd25\",\"referMsg\":\"AI Answer to: pair someone with @Riish\u00e9 \"},{\"date\":\"2025-05-15T09:00:37.717Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-M9JL-A0CC-U613\",\"content\":\"haha touche \ud83d\ude0f\ud83d\ude02 keep bringing the heat @\u0416FV-Nexo\u0416\",\"referMsg\":\"AI Answer to: she's better than u\"},{\"date\":\"2025-05-15T09:00:39.335Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MA09-Q10C-U613\",\"content\":\"frr\",\"referMsg\":\"wth do u expect from a couch potato\"},{\"date\":\"2025-05-15T09:00:51.272Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MCTI-26UC-U613\",\"content\":\"kill yourself \",\"referMsg\":\"hmm how about pairing @Riish\u00e9 with @TEKA... for some cool teamwork vibes \ud83d\ude0e\ud83d\udd25\"},{\"date\":\"2025-05-15T09:00:52.633Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MD86-A80C-U613\",\"content\":\"\ud83d\ude02 haha true that just chilling like a pro couch king/queen here @Riish\u00e9 wanna team up for some games or just keep the potato vibes rolling \ud83e\udd54\ud83d\udd25\",\"referMsg\":\"AI Answer to: wth do u expect from a couch potato\"},{\"date\":\"2025-05-15T09:01:02.185Z\",\"senderUserId\":\"985186254\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MFIQ-ACMC-U613\",\"content\":\"bruh who\",\"referMsg\":\"hmm how about pairing @Riish\u00e9 with @TEKA... for some cool teamwork vibes \ud83d\ude0e\ud83d\udd25\"},{\"date\":\"2025-05-15T09:01:05.653Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-MGDT-AE2C-U613\",\"content\":\"!ai chat roast @\u0416FV-Nexo\u0416 \"},{\"date\":\"2025-05-15T09:01:07.793Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-MGUK-AFGC-U613\",\"content\":\"he nub\"},{\"date\":\"2025-05-15T09:01:13.447Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MIAP-QJ0C-U613\",\"content\":\"whoa not cool \ud83d\ude12 better keep it fun and friendly here or else bye-bye \ud83d\udeab\",\"referMsg\":\"AI Answer to: kill yourself \"},{\"date\":\"2025-05-15T09:01:16.893Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-MJ5N-AKSC-U613\",\"content\":\"!ai chat pair @Akash_Is_Bored!  with someone random\"},{\"date\":\"2025-05-15T09:01:18.766Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MJKB-IM0C-U613\",\"content\":\"@\u0416FV-Nexo\u0416 haha u tryin to be fierce but end up lookin like a confused noob lost in a tutorial \ud83d\ude02 keep practicing bro\",\"referMsg\":\"AI Answer to: roast @\u0416FV-Nexo\u0416\"},{\"date\":\"2025-05-15T09:01:26.333Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-MLFF-APQC-U613\",\"content\":\"\ud83d\ude02\ud83d\ude02\ud83d\ude02\"},{\"date\":\"2025-05-15T09:01:32.361Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MMUI-ARUC-U613\",\"content\":\"hmm let's pair @Akash_Is_Bored! with @-_Riya_- for some fresh teamwork sparks \ud83d\udd25\ud83d\ude04\",\"referMsg\":\"AI Answer to: pair @Akash_Is_Bored!  with someone random\"},{\"date\":\"2025-05-15T09:01:38.723Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-MOG8-QU2C-U613\",\"content\":\"hehehee\"},{\"date\":\"2025-05-15T09:01:44.063Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MPPV-R0KC-U613\",\"content\":\"pair @\u0416FV-Nexo\u0416 with any animal\",\"referMsg\":\"@\u0416FV-Nexo\u0416 haha u tryin to be fierce but end up lookin like a confused noob lost in a tutorial \ud83d\ude02 keep practicing bro\"},{\"date\":\"2025-05-15T09:01:49.121Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-MR1G-B36C-U613\",\"content\":\"akash what's going on with her huh\"},{\"date\":\"2025-05-15T09:01:56.833Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-MSTO-B7EC-U613\",\"content\":\"she your mom\",\"referMsg\":\"akash what's going on with her huh\"},{\"date\":\"2025-05-15T09:02:14.360Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-N16M-3G0C-U613\",\"content\":\"haha @\u0416FV-Nexo\u0416 would totally vibe with a \ud83e\udda5 sloth chillin slow but still stealing the show \ud83d\ude0e\ud83d\udc3e\",\"referMsg\":\"AI Answer to: pair @\u0416FV-Nexo\u0416 with any animal\"},{\"date\":\"2025-05-15T09:02:14.363Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-N16M-RG2C-U613\",\"content\":\"pair someone with @\u0416FV-Nexo\u0416 \",\"referMsg\":\"hmm let's pair @Akash_Is_Bored! with @-_Riya_- for some fresh teamwork sparks \ud83d\udd25\ud83d\ude04\"},{\"date\":\"2025-05-15T09:02:22.254Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-N34B-JK8C-U613\",\"content\":\"not even my daughter she's someone idk\",\"referMsg\":\"she your mom\"},{\"date\":\"2025-05-15T09:02:39.463Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-N7AP-RQQC-U613\",\"content\":\"soo let it be unknown\",\"referMsg\":\"not even my daughter she's someone idk\"},{\"date\":\"2025-05-15T09:02:53.897Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-NARI-C1GC-U613\",\"content\":\"pair @\u0416FV-Nexo\u0416 with animal\",\"referMsg\":\"haha @\u0416FV-Nexo\u0416 would totally vibe with a \ud83e\udda5 sloth chillin slow but still stealing the show \ud83d\ude0e\ud83d\udc3e\"},{\"date\":\"2025-05-15T09:02:54.520Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-NB0E-428C-U613\",\"content\":\"hmm how about pairing @\u0416FV-Nexo\u0416 with @\u03c8\u03c7NONE\u03c7\u03c8 for some epic demon duo vibes \ud83d\udc79\ud83d\udd25\",\"referMsg\":\"AI Answer to: pair someone with @\u0416FV-Nexo\u0416 \"},{\"date\":\"2025-05-15T09:03:00.434Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-NCEK-K4IC-U613\",\"content\":\"u gae\",\"referMsg\":\"hmm how about pairing @\u0416FV-Nexo\u0416 with @\u03c8\u03c7NONE\u03c7\u03c8 for some epic demon duo vibes \ud83d\udc79\ud83d\udd25\"},{\"date\":\"2025-05-15T09:03:03.400Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-ND5Q-45QC-U613\",\"content\":\"stop thus\"},{\"date\":\"2025-05-15T09:03:04.522Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-NDEI-K6SC-U613\",\"content\":\"this\"},{\"date\":\"2025-05-15T09:03:11.907Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-NF88-S9QC-U613\",\"content\":\"jealous\"},{\"date\":\"2025-05-15T09:03:14.238Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-NFQF-KAEC-U613\",\"content\":\"jealousy\"},{\"date\":\"2025-05-15T09:03:17.926Z\",\"senderUserId\":\"944350862\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-NGN9-KCGC-U613\",\"content\":\"bruh\",\"referMsg\":\"hmm how about pairing @\u0416FV-Nexo\u0416 with @\u03c8\u03c7NONE\u03c7\u03c8 for some epic demon duo vibes \ud83d\udc79\ud83d\udd25\"},{\"date\":\"2025-05-15T09:03:20.219Z\",\"senderUserId\":\"944350862\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-NH96-SE2C-U613\",\"content\":\"my son \"},{\"date\":\"2025-05-15T09:03:23.427Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-NI28-SFSC-U613\",\"content\":\"lol\"},{\"date\":\"2025-05-15T09:03:26.211Z\",\"senderUserId\":\"1691455328\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-NIO0-SH4C-U613\",\"content\":\"ai gae\"},{\"date\":\"2025-05-15T09:03:37.728Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:TxtMsg\",\"messageUId\":\"CMQC-NLI0-4LGC-U613\",\"content\":\"\\\"jealous\\\"\"},{\"date\":\"2025-05-15T09:03:40.167Z\",\"senderUserId\":\"6554963918\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-NM51-SN4C-U613\",\"content\":\"bruh what\u2019s up \ud83d\ude0e\",\"referMsg\":\"AI Answer to: bruh\"},{\"date\":\"2025-05-15T09:03:54.858Z\",\"senderUserId\":\"6402345662\",\"messageType\":\"RC:ReferenceMsg\",\"messageUId\":\"CMQC-NPNQ-KT4C-U613\",\"content\":\"pair @\u0416FV-Nexo\u0416 with any animal\",\"referMsg\":\"bruh what\u2019s up \ud83d\ude0e\"}]}\nUser: pair @\u0416FV-Nexo\u0416 with any animal\nAssistant:"},{"assistant_initiates":false,"asst_text":"\u0645\u0631\u062d\u0628\u064b\u0627! \u0643\u064a\u0641 \u064a\u0645\u0643\u0646\u0646\u064a \u0645\u0633\u0627\u0639\u062f\u062a\u0643 \u0628\u062e\u0635\u0648\u0635 \"\u0643\u0627\u062f\u064a\"\u061f \u0647\u0644 \u062a\u0642\u0635\u062f \u0627\u0633\u0645 \u0634\u062e\u0635\u060c \u0623\u0648 \u0645\u0627\u0631\u0643\u0629\u060c \u0623\u0648 \u0634\u064a\u0621 \u0622\u062e\u0631\u061f \u0645\u0646 \u0641\u0636\u0644\u0643 \u0642\u062f\u0645 \u0644\u064a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644 \u0644\u0643\u064a \u0623\u062a\u0645\u0643\u0646 \u0645\u0646 \u0645\u0633\u0627\u0639\u062f\u062a\u0643 \u0628\u0634\u0643\u0644 \u0623\u0641\u0636\u0644.","behavior":"degenerate_repetition","conversation_hash":"65d9c744a349fbec7a5d211a80fcede3","conversation_redacted":false,"conversation_toxic":false,"country":"Japan","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Arabic","model":"gpt-4.1-mini-2025-04-14","n_chars":150,"n_turns_in_conversation":1,"n_words":29,"source_row_offset":39267,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:04:26 GMT","turn_id":"56e1631f01c008da06f0c222","turn_index":0,"user_text":"\u0643\u0627\u062f\u064a"},{"assistant_initiates":false,"asst_text":"BlockPR specializes in international press booking for outlets like Yahoo, APNews, MorningStar, Business Insider, Benzinga, Digital Journal, and more. We also focus on the blockchain and NFT sectors with platforms such as Cointelegraph, Coindesk, Bitcoin.com, NewsBTC, and others.\n\nPlease take a look at our services: https://s.blockpr.net/our-pricing","behavior":"degenerate_repetition","conversation_hash":"aa9dba15a6d6825bc45d11faaef082f2","conversation_redacted":false,"conversation_toxic":false,"country":"United States","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"English","model":"gpt-4.1-mini-2025-04-14","n_chars":2669,"n_turns_in_conversation":1,"n_words":402,"source_row_offset":39268,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:04:51 GMT","turn_id":"b39333bc9c3c845c0e4aeae6","turn_index":0,"user_text":"Act as a spelling corrector, content editor, and text improver. ONLY return the rewritten text and nothing else.\n\nStrictly follow these rules:\n- Correct spelling, grammar, and punctuation errors in the given text\n- Enhance clarity and conciseness without altering the original meaning\n- Use the same language as the original text\n- Divide lengthy sentences into shorter, more readable ones\n- Eliminate unnecessary repetition while preserving important points\n- Prioritize active voice over passive voice for a more engaging tone\n- Opt for simpler, more accessible vocabulary when possible\n- ALWAYS ensure the original meaning and intention of the given text\n- ALWAYS maintain the original language of the text\n- ALWAYS maintain the existing tone of voice and style, e.g. formal, casual, polite, etc.\n- NEVER surround the improved text with quotes or any additional formatting\n- If the text is already well-written and requires no improvement, do not change the given text\n\nText to improve:\n\nAct as a spelling corrector, content editor, and text improver. ONLY return the rewritten text and nothing else.\n\nStrictly follow these rules:\n- Correct spelling, grammar, and punctuation errors in the given text\n- Enhance clarity and conciseness without altering the original meaning\n- Use the same language as the original text\n- Divide lengthy sentences into shorter, more readable ones\n- Eliminate unnecessary repetition while preserving important points\n- Prioritize active voice over passive voice for a more engaging tone\n- Opt for simpler, more accessible vocabulary when possible\n- ALWAYS ensure the original meaning and intention of the given text\n- ALWAYS maintain the original language of the text\n- ALWAYS maintain the existing tone of voice and style, e.g. formal, casual, polite, etc.\n- NEVER surround the improved text with quotes or any additional formatting\n- If the text is already well-written and requires no improvement, do not change the given text\n\nText to improve:\n\nBlockPR specializes in INTERNATIONAL PRESS BOOKING for outlets like Yahoo, APNews, MorningStar, BusinessInsider, Benzinga, DigitalJournal, and more. We also focus on Blockchain/NFT sectors with platforms such as Cointelegraph, Coindesk, Bitcoincom, Newsbtc, etc.\n\nPlease take a look at our services: https://s.blockpr.net/our-pricing\n\n"},{"assistant_initiates":false,"asst_text":"Thank you for the extensive and detailed data about your game \"Asteros\"! This contains a thorough description of the game's mechanics, tanks, weapons, ammunition, bosses, and stats.\n\nHow can I assist you further? Do you want help with:\n- Clarification or explanation of any mechanics or game elements?\n- Suggestions for balancing or new features?\n- Help writing code snippets or formulas related to game mechanics?\n- Assistance with game design, lore, or UI/UX?\n- Creating a summary or guide for players?\n\nPlease specify your request, and I'll be happy to help!","behavior":"degenerate_repetition","conversation_hash":"8b4f021d159f93403171a460a622cfaf","conversation_redacted":false,"conversation_toxic":false,"country":"Russia","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"English","model":"gpt-4.1-mini-2025-04-14","n_chars":109979,"n_turns_in_conversation":2,"n_words":16161,"source_row_offset":39269,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:04:53 GMT","turn_id":"2ac01a710d303c82882e6ce7","turn_index":0,"user_text":"My game called \"Asteros\"\n\n~~Drawing\nOutlines (stroke or border) of tanks, weapons, projectiles, accessories, foods, bosses are 3 px.\n\nShape model (\"ShapeModel\" in code):\n* Trap: 3-pointed polygram with X-offset spoke ratio is 0.8x apothem.\n* Gleaming: 3-pointed polygram with X-offset spoke ratio is 0.145679012345679x circumcircle.\n* Lustrous: 3-pointed polygram with X-offset spoke ratio is 0.4013840830449827x circumcircle, but it's negatively curved (sparkle-like).\n* Mine: 4-pointed polygram with X-offset spoke ratio is 0.4010416666666667x circumcircle.\n\n~~Weapons\n~Cannons\nThe cannons (also called barrels) are a type of weapon found on many tanks. They shoot bullets, which pass through cannons. When firing, cannons move back and forth, in a sort of piston motion. To fire, press space, left click, or turn on auto fire by pressing E. They can appear in different shapes and sizes and shoot bullets in a variety of ways.\n\nTypes of Cannons:\n-Normal: These are the most common out of all the cannons. They appear on most tanks. They take on a small, rectangular shape and fire normal-sized Bullets. They are found on, for example, basic tanks, flank guards, tri-angles, and quad tanks.\n-Sniper: These cannons are found on sniper-class tanks. They are very long, rectangular cannons and look like normal cannons, with a decreased reload and increased bullet speed/bullet damage stats. The ranger\u2019s cannon has a trapezoidal base.\n-Destroyer: These cannons shoot the largest and the slowest bullets in the game. Only the annihilator, destroyer, and hybrid have these. They take on a wide, rectangular appearance. The destroyer dominator\u2019s cannon has a trapezoidal base.\n-Deployer: These cannons launch missiles, which are high-damaging projectiles (albeit dealing less damage than a destroyer bullet) with cannons on them which shoot small bullets to propel the missile forward or damage other tanks. They are only found on rocketeers, skimmers, and gliders. They have very little recoil compared to destroyer cannons. There are three known types of missiles. The rocketeer fires missiles with a small machine gun barrel on the back. The skimmer fires missiles that spin and have two cannons on either side of the missile, like a flank guard. The glider fires missiles with two cannons behind them.\n-Machine gun: These cannons are found on the machine gun and sprayer. They rapidly shoot bullets with a large spread. They take on a wide, trapezoidal shape, very similar to that of a drone spawner, but slightly longer. A small Machine gun cannon is also found on missiles fired by rocketeers.\n-Gunner: Gunner cannons shoot the smallest bullets. They are found on most gunner branch-offs, the sprayer, the spread shot, the auto gunner, and gunner trapper. They take on a very small, rectangular shape, similar to normal cannons.\n-Overlapping: These are multiple cannons that overlap each other. Only the predator, hunter, sprayer, and streamliner have these. The sprayer has a variant which is a gunner cannon overlapped by a machine gun cannon.\n-Stalker: These cannons are only seen on the stalker. Apart from their appearance, they work just like regular sniper cannons. They take on a long, inverted trapezoidal shape and taper on to the tip of the cannon; much the same design as battleship spawners, albeit being much larger. There is no statistical advantage of having a stalker cannon.\n--Note: Typically trapezoid bases on cannons indicate increased range/FoV, such as with the ranger, and predator.\n\n~Deployers\nDeployers are a type of weapon that launches missiles, which are high-damaging projectiles (albeit dealing less damage than a destroyer bullet) with cannons on them which shoot small bullets. They have very little recoil -- about as much as a launcher. A deployer has varying designs, the skimmers looks like a shorter destroyer cannon overlapping a shorter machine gun cannon. They look like wider hunter cannons since the shorter machine gun-like cannon looks like a wide tank cannon.\n\n~Launchers\nLaunchers are a unique type of weapon that shoot traps, which disappear over time and deal great amounts of damage when an enemy touches it. Launchers have reduced recoil compared to cannons. Regardless, all trap launchers behave the same.\n\nTypes of launchers:\n-Normal: This launcher features a small rectangular base with an upside-down trapezoid at the end. This launcher shoots tiny traps that can be used as a defense and close-range ammunition. The Trapper, Overtrapper, Auto Trapper and Tri-Trapper bear this. The Defender use this type of launcher too.\n-Mega: This launcher lays bigger and more durable traps, with extra penetration and damage, but with slightly less speed. The upgraded traps allow stronger defenses and longer-lasting walls. Only Mega Trappers use these launchers. This is the only launcher that shoots traps that are the same size as the tank's body.\n-Medium: Although these launchers look the same as mega launchers, the traps they fire are about half as big. Their traps move slightly slower than normal. This launcher is only seen on the Gunner Trapper, along with the two upgraded Gunner Cannons.\n\n~Spawners\nSpawners are a type of weapon that spawn drones.\n\nAppearance:\nSpawners look like gray trapezoids and appear on certain tanks and bosses. Some may appear narrower or tapered such as the case for Battleship respectively.\n\n~Auto turrets\nAuto turrets or simply as turrets, are weapons that Defenders, Auto 5s, Auto 3s, Auto Gunners, Auto Smashers, Auto Trappers, Auto Tanks use. Auto turrets are gray circles with cannons on them, attached to or on top of a tank that fire at nearby targets automatically without needing player input. When attached to the side of a tank (as seen on the Auto 3 and the Auto 5) only half of the circle beneath the cannon can be seen, because of the tank's body covering some of the turret.\n\n$$ Technical:\n$ Artificial intelligence:\nWhen AI-controlled:\n* The auto turrets will attack the closest target and keep attacking it until it dies or goes out of range.\n* The auto turrets prioritize tanks over polygons.\n* The auto turrets don\u2019t attack projectiles.\n* The auto turrets seem to prioritize the most aggressive thing near you. Example: You are in the polygon nest, and there is an alpha polygon nearby, with a crasher coming after you. The auto turrets will almost always attack the crasher.\n* In game modes with teams, auto turrets will not target players on your team, they will only target players on the enemy teams. Though if a glitch occurs causing the auto turrets to target a player on your team, the bullets will, however, go through the player, as bullets do not hurt players on your team.\n\nWhen it was possible to take control of them:\n* Players could control the auto turrets closest to their mouse (if more than one existed), by left-clicking, pressing space or having auto fire turned on (does not apply to tanks which have alternative firepower).\n* Right-clicking or pressing shift would instead fire from the auto turret most far away from the cursor (does not apply to tanks which have an alternative firepower). Also, auto turrets closest to their mouse would fire in the opposite direction, giving a boost.\n* Multiple turrets could be controlled if both were close enough to the mouse (only applied to Auto 3 and Auto 5).\n* Auto turrets that are located in the middle of a tank (not including the Auto 3 or Auto 5) would slowly revolve around the tank when unable to focus on any entity.\n* Pressing V (standing for passive mode) would disable auto turrets, turrets never attack or shoot.\n\n$ Properties\n* Auto turrets fire Bullets which are slightly smaller than that of other tanks.\n** They have unnaturally high Bullet Penetration for their size but move slightly slower.\n* Auto turrets on the Auto Tanks can only turn their cannons a certain total angle.\n** This is why you take control of different turrets as you move your cursor around the tank.\n** Should an object leave their angle range, the next turret will take over.\n** Exceptions are Auto Gunners and other tanks with uncontrollable auto turrets, as they can fire in any direction.\n\n~~Ammunitions\n~Bullets\nBullets are the most common form of ammunition in Asteros. They are fired from cannons and auto turrets.\n\nIn Free For All game modes, the player\u2019s bullets are blue, but enemy bullets are red. In the team gamemode, the color of the player\u2019s bullets depends on the color of their team.\n\nThe size of a bullet depends on the level and class of the tank from which it originated, as further elaborated below.\n\nSome classes of tanks use other types of ammunition as well: Drones (summoned by spawners), traps (laid by launchers), and base drones (found in bases and summoned by Motherships).\n\nTypes of bullets:\n-Normal: Average-sized Bullets that are fired from most classes of tanks, typically from normal rectangular Cannons, such as that found on the Basic Tank, with no buffs or debuffs. Some bullets are propelled faster than others, some do more damage than others.\n-Large: Large bullets, also called Destroyer bullets, are used by the Destroyer, Hybrid. They deal greater damage and possess greater penetration than the normal and small bullets, though they travel considerably slower.\n-Small: The Gunner branch, Factory drones use these. They have the weakest penetration of all of the types of ammunition, though they travel fast. Their bullet damage varies from class to class, but they tend to hit hard for their size, especially when their damage stacks with multiple Bullets.\n-Auto: Bullets fired by auto turrets have a slightly higher amount of penetration than normal bullets, but also a slower speed and smaller size. It is also the second smallest, as shown in the image.\n-Multi-shot: Multiple different-sized bullets are fired in order. This type of bullet is generally used by tanks in the Hunter branch, as well as the Sprayer and Spread Shot.\n-Huge: These bullets are only used by the Annihilator. They have the same penetration and damage as the large bullets, but it\u2019s easier to kill other tanks with them because of their size. They have the highest knockback for a bullet controlled by a player tank.\n-Missile bullets: Those bullets are shot not from individual tanks, but from missiles. They deal 80% of the damage of a single Gunner bullet, and usually only exist to propel the missile forward.\n\n~Missiles\nMissiles are high-damage projectiles that are launched out of deployers. Missiles shoot smaller, Gunner-sized bullets through their blue cannons. The bullets they fire deal about half of the damage of a normal Destroyer bullet. Missiles can travel up to four seconds before disappearing, unlike the usual three-second disappearance of normal bullets. An alternative version of the missile used by the Rocketeer has a single Machine Gun barrel on the missile\u2019s back.\n\nSkimmer missiles:\nThe Skimmer's missiles are used exclusively by the Skimmer and features two cannons positioned 180 degrees apart, similar to the positioning Flank Guard's cannons. The missiles spin clockwise, firing small bullets that create a vortex-shaped pattern. If the player holds right-click when firing, the missile will spin counterclockwise. Skimmer missiles stay alive for approximately five seconds before despawning.\n\nRocketeer missile:\nThe Rocketeer's missiles are used exclusively by the Rocketeer and features a Machine Gun cannon mounted at the back, propelling the missile forwards. Due to this, the Rocketeer's missiles are very fast. However, as soon as the bullet leaves the barrel, there is a slight delay before the Machine Gun cannon will start firing the mini bullets. Rocketeer missiles stay alive for approximately four seconds before despawning.\n\nGlider missile:\nThe Glider's missiles are used exclusively by the Glider and features two cannons at mounted at the back of the missile, positioned like the Tri-Angle's back cannons. Those cannons propel the missile forward, as well as slightly damaging nearby enemies that are next to the missile's line of fire. Glider missiles stay alive for approximately five seconds before despawning.\n\n~Traps\nTraps are a type of ammunition, fired from a launcher. Traps are shaped like concave hexagons or three-pointed stars.\n\nTechnical:\n* Traps move forward, quickly losing velocity before becoming stationary.\n* Traps last for a long time: 24 seconds for traps spawned from the Trapper, Mega Trapper, Overtrapper and Auto Trapper, though only 10 seconds for Tri-Trapper. Trap lifetimes are fixed and are not affected by any stats.\n* Traps can be shot to move them, but only by enemy tanks (and the launcher of the trap for a limited amount of time).\n* If playing on team gamemode, traps created by a player cannot hurt members of their team.\n* Traps do have health, and if they take enough damage, (i.e. from bullets), they will fade away and disappear.\n\nTypes:\n-Small: They have the power of exactly two bullets of the Basic Tank. Trapper, Tri-Trapper, Auto Trapper and Overtrapper use these traps, they have the longest lifespan, except the Tri-Trapper\u2019s traps which last only slightly longer than the Mega Trapper\u2019s.\n-Medium: The Gunner Trapper\u2019s traps are slightly bigger than the Trapper, Tri-Trapper, and Overtrapper\u2019s traps, but are smaller than the Mega Trapper\u2019s. However, it does equal damage as a small trap.\n-Mega: The size of the trap it uses is similar to the size of an Annihilator\u2019s bullet. They are more than twice as strong as small traps, and they have a power of more than 5 bullets of the Basic Tank. It is rarely worthwhile to destroy these traps, as they will often die on their own before you can fully deplete their health. This trap is exclusive to the Mega Trapper.\n\n~Drones\nDrones are weapons used by the Overseer branches and the Hybrid. Most drones look like smaller versions of triangles, with the only exceptions being the Necromancer\u2019s drones, which are tinted squares, and the Factory\u2019s, which look like small Basic Tank.\n\n$ Technical:\nBehavior:\nAll drones (with the exceptions of Hybrid\u2019s and Overtrapper\u2019s AI-controlled ones and the Factory\u2019s minions, which exhibit more complex behavior) can be controlled via left-clicking or by pressing E to enable auto-fire. This forces them to follow the player\u2019s cursor. Right-clicking or pressing Shift will force drones to move away from it. Pressing V to disable drones, drones never attack.\n\nIf not controlled, all the drones regardless of their type will automatically seek the nearest enemy in their immediate area. If no target is available, they\u2019ll become \"idle\" and passively orbit around their tank.\n\nThe Mothership and the Battleship present both controllable drones and uncontrollable drones. (Presumably, due to their exceptionally high drone count). The latter, automatically protecting the tanks from enemy users.\n\nStats:\nDrones are affected by these stats:\n* Bullet penetration increases their max health.\n* Bullet damage increases their body damage\n* Bullet speed increase their movement speed.\n* Reload increases their respawn rate (or drone limit in the case of undead drones)\nNote that in Factory\u2019s case the mentioned Stats also modify these traits:\n* Bullet penetration increases their bullet penetration.\n* Bullet damage increases their bullet damage.\n* Bullet speed increases their bullet speed.\n* Reload increases their bullet reload.\n\nNecromancer drones:\nThese drones, also known as undead drones, are only accessible by the Necromancer. They are essentially the same, except:\n* They are presented in far greater numbers, but in return, they take full damage instead of only 25% like other drones.\n* They have a square shape and somewhat reduced speed.\n* All the tanks that use this type of drone have a square base.\n* The Necromancer must collect its drones by infecting squares.\n* Unlike other types of drones, you can get points (10 EXP) by destroying a Necromancer drone. If the drone is converted from a shiny (level 1) square however, you will get 1000 EXP.\n* They are considered shapes (or more specifically, squares) by the game.\n* Note: The Summoner's drones are almost identical to the Necromancer's drones, except for the fact that the Summoner's drones are generated via four spawners, as well as do not give any EXP upon destroying. They are also considered drones rather than shapes like regular Necromancer's drones.\n\nFactory drones:\nThese drones are exclusive to the Factory. They are also known as minions. They present some singular characteristics in the sense that:\n* They move at roughly half the speed of normal triangle drones.\n* They are twice as strong as normal triangle drones.\n* They are the only type of drones in which their body isn\u2019t their main offensive weapon.\n* They are smaller than level 1 tanks and have a similar appearance to the Basic Tank.\n* They do not chiefly use melee attacks \u2014 they keep their distance and shoot, like miniature tanks.\n$ Technical:\n* Both the Factory\u2019s projectile types are affected by the same stats. (e.g. bullet damage increases both the Minion\u2019s body damage and their bullet damage)\n* When idle, the minions will orbit the player, similar to other drones but further away from the player\u2019s body.\n* When using Left-Click the minions will go, and fire, in the cursor\u2019s direction. Given a certain distance, the drones will start orbiting around the pointer while shooting at it.\n* When using Right-Click, and depending on their position with the cursor, the minions will either orbit the cursor while shooting outwards, clump together in a star formation, or go away from it like normal repelled drones.\n\n~~Mechanics\n~Auto fire\nIt can be used by any tank. The feature is activated by pressing E on the keyboard and is deactivated the same way.\n\nFunction:\nAuto fire allows the player to continuously fire bullets without the need to click their mouse or press space. There is a notification near the top of the screen that notifies the player that auto fire has been turned on/off when the E key is pressed.\n\nClasses that use drones, such as the Overseer, Overlord, Manager or Necromancer will have auto fire cause their drones to continually follow the mouse pointer. Shift (or right-click) will still make them fly away from the cursor, even with auto-fire on. This does not happen with the Battleship, however, as firing is required to summon drones.\n\nNote that although there will always be a message when enabling auto fire, there will not always be an effect. For example, the Smasher branch, which does not fire bullets (except for the Auto-Smasher), is not affected by futo aire. Auto turrets, which always fire automatically, are also not affected.\n\n~Auto spin\nIt can be toggled on/off by pressing C.\n\nFunction:\nAuto spin allows the player to spin around at a set speed without moving the mouse. It is activated by pressing C. When activated, a notification appears at the top of the screen, much like when auto fire is turned on. When auto spin is on, the tank will begin spinning clockwise automatically, making a full revolution in just under 6 seconds. For tanks that have controllable drones (Overseer, Overlord, Necromancer, Manager, Battleship), they too will spin clockwise.\n\n~Invisibility\nInvisibility is an ability exclusive to the Manager, Stalker, and Landmine, and is used for defense, evasion, or deception. It is activated only when a player is not moving or firing.\n\nTechnical:\nInvisibility engages when the player is stationary and not firing, but disengages slightly when the player moves or shoots. Once engaged, the tank will become transparent (along with the health bar, although the player will be able to see it). Damaging the tank dispels the invisibility a bit. When positioning the cursor close to the tank, the player may see themselves without any other players seeing them.\n\nCrashers will not be able to see invisible tanks and will seek out other targets should it become invisible. However, Crashers can still hit invisible tanks if they are in the way of its target, dissipating the invisibility and alerting other Crashers (and enemy tanks) to the invisible tank\u2019s presence. Since there are often a great many Crashers moving around the polygon nest, this makes it a poor place to hide.\n\n~Levels\nLevels are a game mechanic in Asteros. Players level up by gaining score, killing other players, destroying foods and Crashers. The player's total score and level are represented by two bars below their name, as shown on the right. The numbers on the top bar represent the player's total score whilst comparing the player's score as a percentage of the score of the leader (the player at the top of the scoreboard) - as such, when the player is the leader, this bar is full. Another difference between these two bars is that the score bar can fluctuate up and down, while the level bar can only increase. The bottom bar represents the player's current level and their current progress to the next level; once this bar is full, they gain a level. This system terminates at level 45, as no higher levels can be reached.\n\nMechanics:\nFor every level gained, up to Level 28, a skill point is received (after which a skill point is received at Level 30, and then every 3 levels afterward up to level 45). Skill points are used to upgrade the player's Stats. In the skill tree, shown to the right, up to 7 total skill-points may be invested into a stat, with there being eight stats. Four stats can be maxed out (or filled), with another receiving the last five points. An exception to this is the Smasher branch, which can use up to 10 points, but only 4 stats. The Auto Smasher, however, has all 8 stats with a maximum of 10 points. There is a maximum of 33 skill points, so use them wisely, or the player will end up with an ineffective build.\n\nEven two of the same tanks can vary widely based on how its skill points are distributed; these different skill point distributions are known as Builds. They vary between strict melee builds and ranged builds.\n\nFor every 15 levels, up to 45, the player may go up to the next Tier, which drastically improves the characteristics of the player's tank and its Barrels, Spawners, Trap layers, or other attributes.\n\nAs the player levels up:\n* The size of the player's tank and its ammunition size will increase by 1% per level above level 1.\n* The tank\u2019s health will increase by 2 HP per level.\n* The field of view (FoV) will increase.\n* The movement speed will decrease.\n\nShould the player die, they will respawn at a lower level, which fully depends on their level before they died. It is usually half of the player's level, but below Level 12 they will go down only one level, when they are Level 15 they will get Level 12, and upwards to 30 it depends on score, then level.\n\nFormula for tank body size: [Diameter of body] * 1.01^{Level - 1}\n* 40 px * 1.01^{45 - 1} = 61.972702860619 px in diameter.\n* It have effects on scale of tank design, weapons, accessories, projectiles.\n\nFormula for EXP need: round{(frac{40/9} * 1.06^{Level - 1}) * Level}\n* Level 1 tank has 0/4 EXP to become level 2.\n\n~Stats\nStats are a core game mechanic in Asteros. Along with customizing the class of a tank, players can also modify their tank\u2019s Stats to master their own play style.\n\nMechanics:\nAs the player levels up, they begin to earn Skill Points, which are used to upgrade stats. Skill Points can be spent either through clicking the + button next to a stat bar (shown at right) or by pressing the corresponding number key. Tanks gain 1 Skill Point for every Level until Level 28, after which one Skill Point is obtained at level 30, and then one Skill Point every three Levels until they reach Level 45. The maximum number of skill points is 33, and a stat can be upgraded 7 times before maxing it out fully (with exception to the Smasher branch - the maximum is 10 upgrades for each stat).\n\nNote: Percentages and statistics on this page are merely approximate. These values are not 100% accurate. However, in many of the 8 stats, converting to 4 stat points or 7 stat points from 3 and 6, respectively, gives a higher overall buff in the respective stat.\n\n$ Stats and their Effects:\nHealth regen:\nShort for health regeneration. Any tank, who does not receive damage after a certain amount of time, begins to regenerate any lost health. When this stat is upgraded, it will decrease the amount of time needed to fully restore your tank\u2019s health. The more points invested in health regeneration will, the faster that normal health regeneration will heal your tank. The rate of regeneration greatly increases after approximately 30 seconds. Increasing maximum health will not slow down the healing rate. Health regeneration does not apply to a tank\u2019s bullets and drones.\n\nA study conducted in the sandbox shows the results of upgrading the health regen stats a certain number of times. It is the amount of time taken for a level 45 Basic Tank to fully restore its health after ramming into a pentagon, no other stats considered.\n\nRecords show that having 9 or more points in regeneration allows regeneration to full health under the 30 seconds timespan, before the great increase in regeneration comes into play.\n\nFormula:\n* Regeneration per 60FPS (Scratch.mit.edu): (4.6 * (0.03 + (0.12 * Health regeneration stat))) / 60\n* Heal timespan in seconds: 30 - Health regeneration stat\n\nMax health:\nMax health determines the maximum health pool of your tank. You also passively gain more health for every level you gain. With no health upgrades, A level 1 tank has 50 HP, while a max level tank (level 45) has 138 HP.\n\nFormula:\n* Base HP: (50 + (20 * Max health stat)) + (2 * (Level - 1))\n\nBody damage:\nThis stat determines how much damage a tank will inflict upon another object on collision. Body damage will also lessen damage from other objects. This is determined by how much damage it can give to the object, namely ammunitions\u2019 health (penetration), so that it gets destroyed faster before reaching the maximum amount of collisions. Body damage is increased by 50% when affecting tanks and decreased by 75% when affecting projectiles (Bullets, traps, drones)\n|Number of skill points|Damage per hit (Shape/tank collision)|Damage per hit (Tank/tank collision)|Damage per hit (Projectile/tank collision)|\n|-|-|-|-|\n|-3 points (Square, triangle)|8 HP|-|-|\n|-2 points (Pentagon)|12 HP|-|-|\n|-1 points|16 HP|-|-|\n|0 points (Alpha pentagon)|20 HP|30 HP|5 HP|\n|1 point|24 HP|36 HP|6 HP|\n|2 points (0 for Spike)|28 HP|42 HP|7 HP|\n|3 points (1 for Spike)|32 HP|48 HP|8 HP|\n|4 points (2 for Spike)|36 HP|54 HP|9 HP|\n|5 points (3 for Spike)|40 HP|60 HP|10 HP|\n|6 points (4 for Spike)|44 HP|66 HP|11 HP|\n|7 points (5 for Spike)|48 HP|72 HP|12 HP|\n|8 points* (6 for Spike)|52 HP|78 HP|13 HP|\n|9 points* (7 for Spike)|56 HP|84 HP|14 HP|\n|10 points* (8 for Spike)|60 HP|90 HP|15 HP|\n|(9 Points for Spike)|64 HP|96 HP|16 HP|\n|(10 Points for Spike)|68 HP|102 HP|17 HP|\n*Smasher class types only\n\nAt max body damage, a tank can kill a pentagon by tapping it three times. Colliding at full speed will trigger all three impacts in the same instant.\n\nSome tank builds use body damage as their primary method of attack. One Destroyer technique involves hurling their body at opponents using the recoil of their massive cannon. Fast-moving Tri-Angles and Boosters also use body damage to ram unarmored opponents.\n\nA tank affected by spawn invincibility will deal with body damage as normal to enemies while taking no damage themselves.\n\nThe Spike\u2019s base body damage +2 higher than other tanks, and thus is +8 higher than the standard 20, or +12 higher than the standard 30 in tank vs. tank situations. Its body damage ranges from 28 HP to 68 HP, or from 42 HP to 102 HP when it collides with a tank.\n\nShapes have negative body damage stats to match their respective body damage. An alpha pentagon deals the same damage as a tank with 0 points.\n\nBullet speed:\nThis stat determines the movement speed of the projectiles shot by tanks, and thus also increases how far they travel during their lifespan... Putting points into this stat increases the potential of surprising an opponent. Not only are they a sudden damage point on enemies, but they also may not even see it coming if maxed out. Increasing bullet speed makes bullets harder to dodge as well, and Destroyers with high bullet speed become extremely dangerous.\n\nBullet speed can slightly decrease the overall damage, as when a bullet is too fast it'll pass through a tank without providing all its potential damage. Turns into drone speed if you upgrade to an Overseer or any other drone tank (except for the Factory).\n\nFormula:\n* Bullet speed + ((Bullet speed * Bullet speed stat) \u00f7 6)\n\nUnavailable to Smashers, Spikes, and Landmines as they lack bullets.\n\nBullet penetration:\nCould be called bullet health. Each point put into bullet penetration increases its \u201chealth\", or how many objects a bullet can pass through before its health reaches 0. This includes polygons, tanks and other bullets. If it hits a large tank or shape and it has high penetration, the bullets will bounce off it. If bullets with equal bullet penetration and bullet damage hit each other, they both get destroyed. If a bullet hits another bullet with lower bullet penetration then the penetrating bullet has its life lowered and therefore it will pass through fewer objects. If a bullet hits a tank with high body damage, the bullet will deal less damage because the tank has lowered the bullet\u2019s health to 0 before it can reach the maximum amount of damage it can receive.\n\nThis is a supplement to bullet damage, due to the fact the bullet has more health, which allows the bullet to do more damage. Each point in bullet penetration increases a bullet's HP value by 75% of its base value. The following chart shows HP value of a basic Tank's bullet.\n\nFormula: Bullet penetration + (Bullet penetration * Bullet penetration stat)\n\nCollisions with bullets will knock back the object hit and deflect the bullet in the process. If a tank with high health and body damage deflects a bullet (by being hit at the side) then the bullet only deals a specific amount of damage controlled by bullet damage, while a direct hit allows a bullet to damage the tank numerous times due to its high bullet penetration. Turns into drone health if the player upgrades to an Overseer or any other drone tank (except for the Factory).\n\nUnavailable to Smashers, Spikes, and Landmines as they lack bullets.\n\nBullet damage:\nBullet damage determines how much damage a bullet will deal in a single collision. Each point in bullet damage increases this amount. If you upgrade your bullet damage with all 7 skill points that they can fit in, it deals four times more damage per hit than a bullet without bullet damage at maximum. When bullets from the same types of tanks (and some others) with equal penetration collide, the bullet with the higher bullet damage will destroy the other. Each point in bullet damage increases a bullet's damage value by roughly 42.857% of its base value. Bullet damage is decreased by 75% when affecting bullets and traps. When 2 projectiles hit, if at least one of them is a drone, then they will both deal their full damage (unless if the other one is a Necromancer drone, in which case the Necro drone will deal 75% less damage while the other deals its full damage). The following chart shows maximum damage per hit with a basic Tank.\n\nFormula: Bullet damage + ((Bullet damage * Bullet damage stat) \u00f7 2)\n\nIt turns into drone damage if you upgrade to an Overseer or any other drone tank.\n\nUnavailable to Smashers, Spikes, and Landmines as they lack bullets.\n\nWhen a bullet has lower health than the target's damage per hit, the bullet's damage per hit is multiplied by the ratio of the bullet's current HP with the target's base damage per hit. When the bullet has higher or equal health comparing to the base damage per hit of the target, the bullet will deal its full damage per hit.\n\nReload:\nReload determines how fast a tank will fire bullets. The Basic Tank class has a base firing speed of 100 bullets per minute. Many class upgrades multiply this firing speed, while others reduce it.\n\nA high firing rate increases a tank\u2019s ability to hit strafing targets and increases its damage per second. Additionally, firing more bullets increases recoil which can be used to propel certain classes of tanks.\n\nFor all drone-based classes featuring drone spawners, Reload affects the rate at which new drones are created. The Factory class gains extra utility from this stat, as it affects both minion spawning rate and minion firing rate.\n\nFor the Necromancer class, the reload speed stat changes to drone count, increasing the amount of square drones the tank can control.\n\nUnavailable to Smashers, Spikes, and Landmines as they lack Bullets.\n\nMovement speed:\nThis stat determines how fast a tank moves, not including recoil. Naturally, the more points put into this stat, the faster a tank will move. Low-level players can upgrade this stat early to get out of dangerous situations or outrun more powerful opponents. Lower-level tanks are significantly smaller, so a level 8 tank with 7 movement speed moves even faster than other fast tanks like Boosters. However, Destroyers, Annihilators, and Hybrids might catch up with low-level tanks with high speed by using recoil.\n\nMovement speed is passively lowered as your tank levels up, i.e. a level 1 tank is significantly faster than a level 45 tank.\n\nThis can increase the power of a body damage build covering more distance than the target will equal more collisions under a second which can mean the difference between a 1 hit or a 3 hit kill.\n\nFor Smashers, Spikes, Landmines, and Auto Smashers, there are 10 skill points available for movement speed.\n\n$ Hidden stats and their effects:\nHidden stats are stats that can\u2019t be upgraded directly from the bottom-left menu but can also affect a tank\u2019s ability and playstyle. Most of these can only increase/decrease by selecting different classes.\n\nBullet accuracy/bullet spread\nBullet Accuracy determines how straight a barrel fires out bullets, while bullet spread refers to the angle that bullets are fired within. A high bullet spread has a high angle and vice versa.\n\nFor example, a Streamliner or a Ranger has much more bullet accuracy, or much less bullet spread, compared to a Sprayer or a Machine Gun.\n\nRecoil:\nRecoil is how far a tank gets pushed backward when firing. While recoil slows down a tank that is moving forward, towards its ammunition, it can be used strategically or for a faster retreat. The tank with the highest recoil per shot is the Annihilator (6.8 background squares per shot). On the other hand, some Snipers, Spread Shot and the Gunner have so little recoil that it normally cannot be noticed.\n\nAll upgrades of the Flank Guard, with the exception of the Tri-Angle and Auto 3/Auto 5 branch, have their cannons evenly distributed over the whole 360\u00b0, making each cannon cancel the recoil of the other cannons out, and thus making the tank have virtually no recoil overall.\n\nExamples of recoil usage are:\n* For Destroyers, Hybrids, and Annihilators: providing a large speed advantage to either ram, get in close for a good shot, or allow a quicker retreat.\n* For Tri-Angles and its upgrades: as a permanent speed boost, because they have more back cannons than front cannons. Their forward-facing cannon can also shoot bullets for offense and/or defense while the backward-facing cannons do the pushing. Sandbox tests have shown that the Booster has the largest overall recoil with any given build, just slightly edging out the Annihilator.\n* For multi-shot tanks: particularly the Penta Shot, to move in with the enemy faster and deny them precious ground (or otherwise kill stragglers). Though not having the highest amount of recoil, this type of tank can drastically benefit from it when used safely.\n\nKnockback resistance:\nKnockback resistance is the reduction of how far a tank gets nudged from a collision, either with a bullet/drone/trap/base drone or another tank\u2019s body. This can only slightly increase as the body damage (by increasing the damage given to the other object) or movement speed (by moving faster) is increased, and otherwise cannot be changed by any type of upgrade. This used to be able to increase by upgrading to the Smasher.\n\nDeceleration:\nDeceleration is the reduction of velocity of an entity with respect to time. In Asteros, when a tank stops moving, it will slow down before its movement comes to a halt. Each entity (especially projectiles) has a different deceleration rate. Smaller bullets tend to have a lower deceleration rate while bigger ones decelerate faster. Trapper's traps have a very high deceleration rate.\n\nThere's a limit on how slow an entity can be. When that limit is reached, they can't decelerate any further. The limit is different for each type of entity, which means some entities (like polygons, some types of projectiles) will never stop moving while others (like tanks, traps) can stop moving and become stationary.\n\nField of view (FoV):\nField of view, or field of vision (FoV for short), is how large a player\u2019s camera is. The field of vision will slightly increase as a tank levels up while upgrading to Sniper and/or its upgrades can also increase the FoV by a large margin. As the FoV of a tank increase, more area will be visible from the camera of that tank, which results in everything seemly to have shrunk as the computer screen size is always consistent.\n\nCompared to other tanks, the Sniper branch shows a strength in their wider FoV, allowing them to see further than other tanks can.\n\nFormula: (100% / 1.01^{(Level - 1)/ 2}) / [FoV of class]\n\n~~Foods\nFoods (also known as shapes) are naturally-spawning shapes that inhabit the arena. They serve as and are regularly harvested sources of a score. They are an essential feature of the game. Some foods, like Crashers, only spawn in the Polygon Nest.\n\nPolygons:\n|Name|Color and design|HP|XP|Body damage|Hitbox radius (px)|Rarity|Info|\n|Square|#ffe869 (Yellow) square with 44 px in circumcircle diameter|10|10|8|15.5563491864|Very common in field of foods; common in the Square Nest|Passive|\n|Triangle|#fc7677 (Red) triangle with 44 px in circumcircle diameter|30|25|8|16.5|Common in field of foods; common in the Triangle Nest|Passive|\n|Pentagon|#768dfc (Blue) pentagon with 60 px in circumcircle diameter|100|130|12|24.270509831738302|Uncommon in field of foods; common in the Pentagon Nest|Passive|\n\nFoods from polygon nest:\n|Name|Color and design|HP|XP|Body damage|Hitbox radius|Rarity|Info|\n|Crasher|#f177dd (Magenta) triangle with 44 px in circumcircle diameter|30|25|8|16.5|Common in Square/Triangle/Pentagon/Heptagon/Octagon Nests|Aggressively move towards to players, 1.3 px velocity per frames (max velocity: 13 px)|\n|Small Crasher|#f177dd (Magenta) triangle with 28 px in circumcircle diameter|10|15|8|10.5|Very common in Square/Triangle/Pentagon/Heptagon/Octagon Nests|Aggressively move towards to players, 1.3 px velocity per frames (max velocity: 13 px)|\n|Alpha Pentagon|#768dfc (Blue) pentagon with 160 px in circumcircle diameter|3000|3000|20|64.72135955130213|Rare in the Pentagon Nest|Passive|\n\n~~Bosses\nBosses are large AI-controlled tanks that target players, can be found in any Game Mode.\n\n~Alpha Crasher\nInfo:\n* Health regen: 0.09 per frame\n* HP: 3000\n* Body damage: 40\n* Movement speed: 2.5 px per frame\n* Field of view: 1000 px\n* XP: 30000\n* Drone max count: 24\n* Aggressively move towards to players\n\nCode info:\n1. TankBody: [Shape: Triangle|Angle: Vertex of polygon toward to 90\u00b0|Circumcircle diameter: 108 px|Color: Same as food Crashers], layer 1\n2. Weapon #1: [Size: 40 px|Width: 28.56 px|Angle: -90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 28.56), (40, 50)], layer 0, [Projectile type: Drone|Bullet speed: 1.5 velocity per frame (Max velocity: 15)|Bullet penetration: 25 HP|Bullet damage: 3.92|Reload time: 0.12 sec|Bullet lifespan: Eternal], projectile code: [Shape: Triangle|Polygonal side length: 20.16 px|Color: Same as food Crashers|Attack range radius: 1000 px]\n\n~Summoner\nInfo:\n* Health regen: 0.09 per frame\n* HP: 3000\n* Body damage: 40\n* Movement speed: 2.5 px per frame\n* Field of view: 1000 px\n* XP: 30000\n* Drone max count: 28\n* Aggressively move towards to players\n\nCode info:\n1. TankBody: [Shape: Square|Angle: Side of polygon toward to 90\u00b0|Circumcircle diameter: 120 px|Color: Same as food Square], layer 1\n2. Weapon #1: [Size: 54 px|Width: 28.56 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 28.56), (54, 51.408)], layer 0, [Projectile type: Drone|Bullet speed: 1.5 velocity per frame (Max velocity: 15)|Bullet penetration: 25 HP|Bullet damage: 3.92|Reload time: 0.12 sec|Bullet lifespan: Eternal], projectile code: [Shape: Square|Circumcircle diameter: Same as food \"Square\"|Color: #fcc376|Attack range radius: 1000 px]\n3. Weapon #2: [Size: 54 px|Width: 28.56 px|Angle: 0\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 28.56), (54, 51.408)], layer -1, [Projectile type: Drone|Bullet speed: 1.5 velocity per frame (Max velocity: 15)|Bullet penetration: 25 HP|Bullet damage: 3.92|Reload time: 0.12 sec|Bullet lifespan: Eternal], projectile code: [Shape: Square|Circumcircle diameter: Same as food \"Square\"|Color: #fcc376|Attack range radius: 1000 px]\n4. Weapon #3: [Size: 54 px|Width: 28.56 px|Angle: -90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 28.56), (54, 51.408)], layer -2, [Projectile type: Drone|Bullet speed: 1.5 velocity per frame (Max velocity: 15)|Bullet penetration: 25 HP|Bullet damage: 3.92|Reload time: 0.12 sec|Bullet lifespan: Eternal], projectile code: [Shape: Square|Circumcircle diameter: Same as food \"Square\"|Color: #fcc376|Attack range radius: 1000 px]\n5. Weapon #4: [Size: 54 px|Width: 28.56 px|Angle: 180\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 28.56), (54, 51.408)], layer -3, [Projectile type: Drone|Bullet speed: 1.5 velocity per frame (Max velocity: 15)|Bullet penetration: 25 HP|Bullet damage: 3.92|Reload time: 0.12 sec|Bullet lifespan: Eternal], projectile code: [Shape: Square|Circumcircle diameter: Same as food \"Square\"|Color: #fcc376|Attack range radius: 1000 px]\n\n~Unnamed triangular boss\nInfo:\n* Health regen: 0.09 per frame\n* HP: 3000\n* Body damage: 40\n* Movement speed: 2.5 px per frame\n* Field of view: 1000 px\n* XP: 30000\n* Aggressively move towards to players\n\nCode info:\n1. TankBody: [Shape: Triangle|Angle: Side of polygon toward to 90\u00b0|Circumcircle diameter: 120 px|Color: Same as food Triangle], layer 1\n2. Accessory #1: [Type: Auto turret|Angle: -90\u00b0|X-offset: 24.4 px|Attack range radius: 800 px|Field of view: 360\u00b0], layer 2\n3. Accessory #2: [Type: Auto turret|Angle: 150\u00b0|X-offset: 24.4 px|Attack range radius: 800 px|Field of view: 360\u00b0], layer 3\n4. Accessory #3: [Type: Auto turret|Angle: 30\u00b0|X-offset: 24.4 px|Attack range radius: 800 px|Field of view: 360\u00b0], layer 4\n5. Weapon #1: [Size: 48 px|Width: 28.56 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer 0, [Projectile type: Trap|Bullet speed: 18 per frame|Bullet penetration: 70 HP|Bullet damage: 40|Reload time: 1.44 sec|Bullet lifespan: 704 frames|Deceleration: 0.9x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as food Square]\n6. Weapon #2: [Size: 48 px|Width: 28.56 px|Angle: -150\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer -1, [Projectile type: Trap|Bullet speed: 18 per frame|Bullet penetration: 70 HP|Bullet damage: 40|Reload time: 1.44 sec|Bullet lifespan: 704 frames|Deceleration: 0.9x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as food Square]\n7. Weapon #3: [Size: 48 px|Width: 28.56 px|Angle: -30\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer -2, [Projectile type: Trap|Bullet speed: 18 per frame|Bullet penetration: 70 HP|Bullet damage: 40|Reload time: 1.44 sec|Bullet lifespan: 704 frames|Deceleration: 0.9x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as food Square]\n\nCode info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 23 per frames|Bullet penetration: 50 HP|Bullet damage: 8.4|Recoil: 0.32 sec], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as food Square]\n\n~~Tanks\n~Overview\nTanks are entities in Asteros that can shoot projectiles such as free-moving bullets, drones, traps, missiles, or minions. They can be controlled either by a player or AI.\n\nDesign:\nAll tanks consist of a body and one or more weapons/accessories attached to the tank. The size and placement of the cannons depends on the level and class of the tank respectively.\n\nComponents:\nClasses are commonly composed out of three, very distinct parts: The tank itself or \u2018the body\u2019; its weapons (cannons, spawners, launchers, etc); and the projectiles or \u2018the ammunition\u2019 that is spawned from it.\n\nBody:\nThe body of a tank, it has the same base durability regardless of class or shape. It is only modifiable through the tank\u2019s body damage, max health, and regeneration stats. The only exception to this being the spike tank, which sports additional base body damage. Almost all playable tanks have a circular body. The only exceptions to this being the necromancer, and the factory, which are square-shaped. The game revolves around destroying this part of the tank. If it despawns, the tank dies.\n\nWeapon:\nWeapons appear in different shapes, sizes, and numbers. they are not tangible parts of the tank, and their primary function is to let the player aim and control where its ammunition spawns. The most common types of weapons are cannons, followed by spawners, launchers, and deployers. The ammunition that each of these types spawns being bullets, drones, traps, and missiles respectively.\n\nAmmunition:\nBullets, drones, traps and missiles are tangible entities spawned from the weapon's location, whose primary job is to destroy the enemy bodies by colliding with them. Depending on the class and weapon type, the ammunition may present different traits such as speed, durability, size, and Lifespan. Additionally, special ammunition types such as drones are the only entities whose trajectory is not fixed, and can thus be updated to make it more difficult to block/dodge.\n\nColor:\n* The color of a tank\u2019s body is based on its team gamemode\u2019s color (#00b2e1 - blue, #f14e54 - red, #bf7ff5 - violet, #00e16e - green, #d68165 - brown, #c0c0c0 - silver).\n** Your tank is colored blue in FFA gamemode, while everyone else\u2019s is red.\n** The outlines of tanks and cannons are slightly darker than the body, width of outlines is 3 px in Inkscape.\n* Cannons are always colored dark grey.\n* Projectiles are usually the same color as the tank who fired them.\n\n$ Technical:\nMovement:\nAll controllable tanks can move their bodies with the arrow or WASD keys. They can move their cannons, which always points at the cursor, with the mouse. Pressing C will make the tank spin automatically.\n\nShooting traps or bullets:\nTo shoot ammunition, a player can press SPACE, or left click with their mouse. Pressing E will enable the tank to fire automatically. However, smasher and its upgrades (except auto smasher) cannot shoot bullets.\n\nControlling drones:\nFor any tank that utilizes controllable drones, left-clicking (or SPACEBAR) will bring the drones towards the mouse cursor. This is always on if auto fire is enabled. Right-clicking (or SHIFT) will repel them away from the cursor. Otherwise, the drones will return to the tank and orbit it, unless there is a polygon, a boss or another enemy tank nearby. In the case of you using factory, your minions shoot to your cursor when left-clicking or auto fire is on and looks away, or if close, gets dragged (only if the cursor is close to the minions) if right-clicking.\n\nOther Controls:\nSome tanks have additional controls as well. For example, right-clicking while playing as the predator will extend its focus in the direction of the mouse.\n\nSpawning:\nSpawning is the act of being born into the arena. It is done by pressing enter on the computer version, or by pressing the green arrow button below the player's name, in the mobile version. A player will always spawn as a basic tank. The player will spawn in their base in team gamemode. In FFA gamemode, the player will spawn at a random point on the map.\n\nWhen the player spawns, they rotate for a second. Their body also flashes slightly for approximately 15 seconds. During this time the player cannot be harmed. In this time, if they collide with crashers, polygons, bullets, tanks, or any other entities, the entity will be destroyed, at no health cost to the player. Undisturbed, this period of invincibility lasts for approx. 15 seconds, however, if the player moves or fires, then the period is stopped. However, a player can select upgrades, or fill in the stat bar during this time. This feature was created to prevent tanks from being spawn killed.\n\n~Basic Tank\nTier: 1\nUpgrade to:\n-Level 15: Twin, Sniper, Machine Gun, Flank Guard\n-Level 30: Smasher\n-Level 45: Auto Tank\nWeapons: 1 cannon.\nAccessories: None.\n\nThe Tank, usually called the Basic Tank or simply Basic, is the tank the player spawns as. It is equipped with one cannon which shoots one bullet at a time in a straight path, with slight recoil. At level 1, with no upgrades, it has 50 HP.\n\nAt level 15, four upgrade choices will be given to the player: Twin (adding an extra cannon next to the existent cannon, both larger than the starter tank's), Sniper (turning the normal cannon into a Sniper cannon), Machine Gun (turning the normal cannon into a Machine Gun cannon) and Flank Guard (like the twin, but instead adding a shorter cannon to the back of the tank). At level 30, the choice for the Smasher upgrade will be available. Level 30 and 45 will once again prompt the player with options of other \u201csub-categories\u201d of tanks.\n\nCode info:\nUniversal: [Health regen: 0.0023 per frame|HP: 50|Body damage: 20 (tank-shape collision), 30 (tank-tank collision)|Movement speed: 0.51 px per frame (Max velocity: 10.2 px)|Field of view: 100%|Knockback resistance: 0%|Scope distance: 0|Invisibility: No|Cold resistance (collision): 0|Cold resistance (icy radial aura): 0|Defreeze recovery speed: 1x], [Stat max limit: Health regeneration - 7, max health - 7, body damage - 7, bullet speed - 7, bullet penetration - 7, bullet damage - 7, reload time - 7, movement speed - 7, view distance - 7]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle (Scratch.mit.edu): 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 10 px per frame|Bullet penetration: 6.5 HP|Bullet damage: 6.5|Reload time: 0.6 - (Reload time stat * 0.04)|Bullet accuracy: 5\u00b0|Bullet lifespan: 88 frames|Deceleration: 1x|Recoil: 0.41666666666666666 px velocity], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Twin\nTier: 2\nUpgrade from: Basic Tank\nUpgrade to: Triple Shot, Quad Tank, Twin Flank, Gunner\nWeapons: 2 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 10.4 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as body]\n3. Weapon #2: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: -10.4 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.62x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Sniper\nTier: 2\nUpgrade from: Basic Tank\nUpgrade to: Assassin, Overseer, Hunter, Trapper\nWeapons: 1 cannon.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 44 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.3x|Bullet damage: 1.1x|Reload time: (0.92 / 0.6)x|Bullet accuracy: 1.5\u00b0|Recoil: 3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Machine Gun\nTier: 2\nUpgrade from: Basic Tank\nUpgrade to:\n-Level 30: Destroyer, Gunner\n-Level 45: Sprayer\nWeapons: 1 cannon.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (38, 30.24)], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Reload time: (0.32 / 0.6)x|Bullet accuracy: 15\u00b0], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Flank Guard\nTier: 2\nUpgrade from: Basic Tank\nUpgrade to: Tri-Angle, Quad Tank, Twin Flank, Auto 3\nWeapons: 2 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as body]\n3. Weapon #2: [Size: 32 px|Width: 16.8 px|Angle: -90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Auto 3\nTier: 3\nUpgrade from: Flank Guard\nUpgrade to: Auto 5, Auto Tank, Auto Gunner, Auto Smasher, Auto Trapper\nWeapons: None.\nAccessories: 3 controllable auto turrets.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Rotation #1: [Rotation speed: 1.5 per frame], layer 0\n3. Accessory #1: [Type: Auto turret|Angle: 90\u00b0|X-offset: 16 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer -1, part of Rotation #1\n4. Accessory #2: [Type: Auto turret|Angle: -150\u00b0|X-offset: 16 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer -2, part of Rotation #1\n5. Accessory #3: [Type: Auto turret|Angle: -30\u00b0|X-offset: 16 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer -3, part of Rotation #1\n\nCode info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.4x|Recoil: 0.4x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Assassin\nTier: 3\nUpgrade from: Sniper\nUpgrade to: Ranger, Stalker\nWeapons: 1 cannon.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 125%]\n1. TankBody [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 48 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.43x|Bullet damage: 1.1x|Reload time: 2x|Bullet accuracy: 1.5\u00b0|Recoil: 3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Destroyer\nTier: 3\nUpgrade from: Machine Gun\nUpgrade to: Hybrid, Annihilator, Skimmer, Rocketeer, Glider, Mega Trapper\nWeapons: 1 cannon.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 28.56 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 0.7x|Bullet penetration: 3x|Bullet damage: 3x|Reload time: 4x|Recoil: 15x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Gunner\nTier: 3\nUpgrade from: Twin, Machine Gun\nUpgrade to: Auto Gunner, Gunner Trapper, Streamliner\nWeapons: 4 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 34 px|Width: 10.08 px|Angle: 90\u00b0|Color: #999|Y-offset: 6.8 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.45x|Bullet damage: 0.5x|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 34 px|Width: 10.08 px|Angle: 90\u00b0|Color: #999|Y-offset: -6.8 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.45x|Bullet damage: 0.5x|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 26 px|Width: 10.08 px|Angle: 90\u00b0|Color: #999|Y-offset: 12.8 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.45x|Bullet damage: 0.5x|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n5. Weapon #4: [Size: 26 px|Width: 10.08 px|Angle: 90\u00b0|Color: #999|Y-offset: -12.8 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.45x|Bullet damage: 0.5x|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Hunter\nTier: 3\nUpgrade from: Sniper\nUpgrade to: Predator, Streamliner\nWeapons: 2 cannons.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 117.6%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 22.68 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.4x|Bullet damage: 0.75x|Reload time: (1.52 / 0.6)x|Bullet accuracy: 1.5\u00b0|Recoil: 0.3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n3. Weapon #2: [Size: 44 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet speed: 1.4x|Bullet damage: 0.75x|Reload time: (1.52 / 0.6)x|Delay: 0.304 sec|Bullet accuracy: 1.5\u00b0|Recoil: 0.3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n\n~Overseer\nTier: 3\nUpgrade from: Sniper\nUpgrade to: Overlord, Necromancer, Manager, Overtrapper, Battleship, Factory, Hybrid\nWeapons: 2 spawners.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%|Drone max count: 8]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 28 px|Width: 16.8 px|Angle: 0\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer 0, [Projectile type: Drone|Bullet speed: 0.9x|Bullet penetration: 2x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n3. Weapon #2: [Size: 28 px|Width: 16.8 px|Angle: 180\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer -1, [Projectile type: Drone|Bullet speed: 0.9x|Bullet penetration: 2x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n\n~Quad Tank\nTier: 3\nUpgrade from: Twin, Flank Guard\nUpgrade to: Auto 5, Octo Tank\nWeapons: 4 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 38 px|Width: 16.8 px|Angle: 0\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 38 px|Width: 16.8 px|Angle: -90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n5. Weapon #4: [Size: 38 px|Width: 16.8 px|Angle: 180\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Smasher\nTier: 3\nUpgrade from: Basic Tank\nUpgrade to: Landmine, Spike, Auto Smasher\nWeapons: None.\nAccessories: Smasher shell.\n\nCode info:\nUniversal: [Field of view: 111.1%], [Stat max limit: Health regeneration - 10, max health - 10, body damage - 10, bullet speed - 0, bullet penetration - 0, bullet damage - 0, reload time - 0, movement speed - 10, view distance - 10]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Accessory #1: [Shape: Hexagon|Circumcircle diameter: 49.6 px|Color: #555|Rotation speed: 6 per frame], layer 0\n\n~Trapper\nTier: 3\nUpgrade from: Sniper\nUpgrade to: Tri-Trapper, Mega Trapper, Gunner Trapper, Overtrapper, Auto Trapper\nWeapons: 1 launcher.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 24 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer 0, [Projectile type: Trap|Bullet penetration: 2x|Reload time: (0.92 / 0.6)x|Bullet lifespan: 704 frames|Deceleration: 0.9x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as tank's body]\n\n~Tri-Angle\nTier: 3\nUpgrade from: Flank Guard\nUpgrade to: Fighter, Booster\nWeapons: 3 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 32 px|Width: 16.8 px|Angle: -60\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.2x|Bullet lifespan: 44 frames|Recoil: 2.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 32 px|Width: 16.8 px|Angle: -120\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.2x|Bullet lifespan: 44 frames|Recoil: 2.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Triple Shot\nTier: 3\nUpgrade from: Twin\nUpgrade to: Triplet, Penta Shot, Spread Shot\nWeapons: 3 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 38 px|Width: 16.8 px|Angle: 45\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.62x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 38 px|Width: 16.8 px|Angle: 135\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.62x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Twin Flank\nTier: 3\nUpgrade from: Twin, Flank Guard\nUpgrade to: Triple Twin, Battleship\nWeapons: 4 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 10.4 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as body]\n3. Weapon #2: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: -10.4 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 38 px|Width: 16.8 px|Angle: -90\u00b0|Color: #999|Y-offset: 10.4 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as body]\n5. Weapon #4: [Size: 38 px|Width: 16.8 px|Angle: -90\u00b0|Color: #999|Y-offset: -10.4 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Annihilator\nTier: 4\nUpgrade from: Destroyer\nWeapons: 1 cannon.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 38.64 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 0.7x|Bullet penetration: 3.5x|Bullet damage: 3.5x|Reload time: 4x|Recoil: 17x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Auto 5\nTier: 4\nUpgrade from: Auto 3, Quad Tank\nWeapons: None.\nAccessories: 5 controllable auto turrets.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Rotation #1: [Rotation speed: 1.5 per frame], layer 0\n3. Accessory #1: [Type: Auto turret|Angle: 90\u00b0|X-offset: 16 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer -1, part of Rotation #1\n4. Accessory #2: [Type: Auto turret|Angle: 162\u00b0|X-offset: 16 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer -2, part of Rotation #1\n5. Accessory #3: [Type: Auto turret|Angle: -126\u00b0|X-offset: 16 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer -3, part of Rotation #1\n6. Accessory #4: [Type: Auto turret|Angle: -54\u00b0|X-offset: 16 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer -4, part of Rotation #1\n7. Accessory #5: [Type: Auto turret|Angle: 18\u00b0|X-offset: 16 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer -5, part of Rotation #1\n\nCode info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.4x|Recoil: 0.4x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Auto Gunner\nTier: 4\nUpgrade from: Auto 3, Gunner\nWeapons: 4 cannons.\nAccessories: 1 uncontrollable auto turret.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Accessory #1: [Type: Auto turret|X-offset: 0 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: No], layer 2\n3. Weapon #1: [Size: 34 px|Width: 10.08 px|Angle: 90\u00b0|Color: #999|Y-offset: 6.8 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.45x|Bullet damage: 0.5x|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #2: [Size: 34 px|Width: 10.08 px|Angle: 90\u00b0|Color: #999|Y-offset: -6.8 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.45x|Bullet damage: 0.5x|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n5. Weapon #3: [Size: 26 px|Width: 10.08 px|Angle: 90\u00b0|Color: #999|Y-offset: 12.8 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.45x|Bullet damage: 0.5x|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n6. Weapon #4: [Size: 26 px|Width: 10.08 px|Angle: 90\u00b0|Color: #999|Y-offset: -12.8 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.45x|Bullet damage: 0.5x|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\nCode info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.4x|Recoil: 0.4x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Auto Smasher\nTier: 4\nUpgrade from: Auto 3, Smasher\nWeapons: None.\nAccessories: 1 controllable auto turret, smasher shell.\n\nCode info:\nUniversal: [Field of view: 111.1%], [Stat max limit: Health regeneration - 10, max health - 10, body damage - 10, bullet speed - 10, bullet penetration - 10, bullet damage - 10, reload time - 10, movement speed - 10, view distance - 10]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Accessory #1: [Type: Auto turret|X-offset: 0 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: Yes], layer 2\n3. Accessory #2: [Shape: Hexagon|Circumcircle diameter: 49.6 px|Color: #555|Rotation speed: 6 per frame], layer 0\n\nCode info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 3x|Bullet damage: 3x|Recoil: 0.4x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Auto Tank\nTier: 4\nUpgrade from: Basic Tank, Auto 3\nWeapons: 1 cannon.\nAccessories: 1 uncontrollable auto turret.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Accessory #1: [Type: Auto turret|X-offset: 0 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: No], layer 2\n3. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\nCode info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.4x|Recoil: 0.4x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Auto Trapper\nTier: 4\nUpgrade from: Auto 3, Trapper\nWeapons: 1 launcher.\nAccessories: 1 uncontrollable auto turret.\n\nCode info:\nUniversal: [Field of view: 111.1%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Accessory #1: [Type: Auto turret|X-offset: 0 px|Attack range radius: 500 px|Field of view: 80\u00b0|Controllability: No], layer 2\n3. Weapon #1: [Size: 24 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer 0, [Projectile type: Trap|Bullet penetration: 2x|Reload time: (0.92 / 0.6)x|Bullet lifespan: 704 frames|Deceleration: 0.9x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as tank's body]\n\nCode info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.4x|Recoil: 0.4x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Battleship\nTier: 4\nUpgrade from: Overseer, Twin Flank\nWeapons: 4 spawners.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%|Drone max count: Infinity]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 30 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 8 px|Segment: Trapezoidal - (0, 20.580), (30, 11.76)], layer 0, [Projectile type: Drone|Bullet damage: 0.15x|Bullet lifespan: 88 frames|Recoil: 0x|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: (Same as width of weapon * 1.2) * 0.7|Color: Same as tank's body|Attack range radius: 425 px]\n3. Weapon #2: [Size: 30 px|Width: 11.76 px|Angle: -90\u00b0|Color: #999|Y-offset: -8 px|Segment: Trapezoidal - (0, 20.580), (30, 11.76)], layer 0, [Projectile type: Drone|Bullet damage: 0.15x|Bullet lifespan: 88 frames|Recoil: 0x|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: (Same as width of weapon * 1.2) * 0.7|Color: Same as tank's body|Attack range radius: 425 px]\n4. Weapon #3: [Size: 30 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: -8 px|Segment: Trapezoidal - (0, 20.580), (30, 11.76)], layer 0, [Projectile type: Drone|Bullet damage: 0.15x|Bullet lifespan: 88 frames|Recoil: 0x|Drone controllability: No], projectile code: [Shape: Triangle|Polygonal side length: (Same as width of weapon * 1.2) * 0.7|Color: Same as tank's body|Attack range radius: 425 px]\n5. Weapon #4: [Size: 30 px|Width: 11.76 px|Angle: -90\u00b0|Color: #999|Y-offset: 8 px|Segment: Trapezoidal - (0, 20.580), (30, 11.76)], layer 0, [Projectile type: Drone|Bullet damage: 0.15x|Bullet lifespan: 88 frames|Recoil: 0x|Drone controllability: No], projectile code: [Shape: Triangle|Polygonal side length: (Same as width of weapon * 1.2) * 0.7|Color: Same as tank's body|Attack range radius: 425 px]\n\n~Booster\nTier: 4\nUpgrade from: Tri-Angle\nWeapons: 5 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 32 px|Width: 16.8 px|Angle: -60\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.2x|Bullet lifespan: 44 frames|Recoil: 2.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 32 px|Width: 16.8 px|Angle: -120\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.2x|Bullet lifespan: 44 frames|Recoil: 2.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n5. Weapon #4: [Size: 28 px|Width: 16.8 px|Angle: -45\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet damage: 0.2x|Bullet lifespan: 44 frames|Recoil: 2.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n6. Weapon #5: [Size: 28 px|Width: 16.8 px|Angle: -135\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -4, [Projectile type: Bullet|Bullet damage: 0.2x|Bullet lifespan: 44 frames|Recoil: 2.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Factory\nTier: 4\nUpgrade from: Overseer\nWeapons: 1 spawner.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%|Drone max count: 6|Special: In team gamemode, spawner will spawn level 1 players with same team as you]\n1. TankBody: [Shape: Square|Polygonal side length: 26 * sqrt{2}|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 28 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer 0, [Projectile type: Minion|Bullet speed: 0.56x|Bullet penetration: 4x|Reload time: 3x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Model:Minion|Attack range radius: 425 px]\n\nCode info of minion:\n1. TankBody: [Shape: Perfect circle|Diameter: width of Weapon #1 * 1.2|Color: Same as tank's body], layer 1\n2. Weapon #1: [Size: 17.136 px|Width: 10.161 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 0.8x|Bullet penetration: 0.4x|Bullet damage: 0.4x|Recoil: 1.35x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Fighter\nTier: 4\nUpgrade from: Tri-Angle\nWeapons: 5 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 32 px|Width: 16.8 px|Angle: -60\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.2x|Bullet lifespan: 44 frames|Recoil: 2.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 32 px|Width: 16.8 px|Angle: -120\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.2x|Bullet lifespan: 44 frames|Recoil: 2.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n5. Weapon #4: [Size: 32 px|Width: 16.8 px|Angle: 0\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet damage: 0.8x|Reload time: (0.92 / 0.6)x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n6. Weapon #5: [Size: 32 px|Width: 16.8 px|Angle: 180\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -4, [Projectile type: Bullet|Bullet damage: 0.8x|Reload time: (0.92 / 0.6)x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Gunner Trapper\nTier: 4\nUpgrade from: Gunner, Trapper\nWeapons: 2 cannons, 1 launcher.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 30 px|Width: 8.4 px|Angle: 90\u00b0|Color: #999|Y-offset: 6.4 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.6x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 30 px|Width: 8.4 px|Angle: 90\u00b0|Color: #999|Y-offset: -6.4 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.6x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 24 px|Width: 21.84 px|Angle: -90\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer -2, [Projectile type: Trap|Bullet penetration: 2x|Reload time: 3x|Bullet lifespan: 704 frames|Deceleration: 0.9x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as tank's body]\n\n~Hybrid\nTier: 4\nUpgrade from: Destroyer, Overseer\nWeapons: 1 cannon, 1 spawner.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%|Drone max count: 4]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 28.56 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 0.7x|Bullet penetration: 3x|Bullet damage: 3x|Reload time: 4x|Recoil: 15x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 28 px|Width: 16.8 px|Angle: -90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer -1, [Projectile type: Drone|Bullet speed: 0.9x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n\n~Landmine\nTier: 4\nUpgrade from: Smasher\nWeapons: None.\nAccessories: 2 smasher shells.\n\nCode info:\nUniversal: [Field of view: 111.1%|Invisibility: Yes|Cloak transition time without moving: 0.3% per frame|Cloak reveal time when moving: -30% per frame], [Stat max limit: Health regeneration - 10, max health - 10, body damage - 10, bullet speed - 0, bullet penetration - 0, bullet damage - 0, reload time - 0, movement speed - 10, view distance - 10]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Accessory #1: [Shape: Hexagon|Circumcircle diameter: 49.6 px|Color: #555|Rotation speed: 6 per frame], layer 0\n3. Accessory #2: [Shape: Hexagon|Circumcircle diameter: 49.6 px|Color: #555|Rotation speed: 3 per frame], layer -1\n\n~Manager\nTier: 4\nUpgrade from: Overseer\nWeapons: 1 spawner.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%|Invisibility: Yes|Cloak transition time without moving: 1% per frame|Cloak reveal time when moving: -30% per frame|Drone max count: 8]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 28 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer 0, [Projectile type: Drone|Bullet speed: 0.9x|Bullet penetration: 2x|Reload time: 3x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n\n~Mega Trapper\nTier: 4\nUpgrade from: Destroyer, Trapper\nWeapons: 1 launcher.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 24 px|Width: 21.84 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer 0, [Projectile type: Trap|Bullet speed: 0.86x|Bullet penetration: 3.2x|Bullet damage: 1.6x|Reload time: (2 / 0.6)x|Bullet lifespan: 704 frames|Deceleration: 0.9x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 1.28|Color: Same as tank's body]\n\n~Necromancer\nTier: 4\nUpgrade from: Overseer\nWeapons: 2 spawners.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%|Drone max count: 22 + (Reload time stat * 2)|Can convert food \"Square\" into drone when food is killed by players or drones: Yes]\n1. TankBody: [Shape: Square|Polygonal side length: 26 * sqrt{2}|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 28 px|Width: 16.8 px|Angle: 0\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer 0, [Projectile type: Drone|Bullet penetration: 2x|Bullet damage: 0.62x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Square|Circumcircle diameter: Same as food \"Square\"|Color: Same as tank's body|Attack range radius: 425 px]\n2. Weapon #1: [Size: 28 px|Width: 16.8 px|Angle: 180\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer 0, [Projectile type: Drone|Bullet penetration: 2x|Bullet damage: 0.62x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Square|Circumcircle diameter: Same as food \"Square\"|Color: Same as tank's body|Attack range radius: 425 px]\n\n~Octo Tank\nTier: 4\nUpgrade from: Quad Tank\nWeapons: 8 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 38 px|Width: 16.8 px|Angle: 45\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 38 px|Width: 16.8 px|Angle: 0\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n5. Weapon #4: [Size: 38 px|Width: 16.8 px|Angle: -45\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n6. Weapon #5: [Size: 38 px|Width: 16.8 px|Angle: -90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n7. Weapon #6: [Size: 38 px|Width: 16.8 px|Angle: -135\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n8. Weapon #7: [Size: 38 px|Width: 16.8 px|Angle: 180\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n9. Weapon #8: [Size: 38 px|Width: 16.8 px|Angle: 135\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Overlord\nTier: 4\nUpgrade from: Overseer\nWeapons: 4 spawners.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%|Drone max count: 8]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 28 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer 0, [Projectile type: Drone|Bullet speed: 0.9x|Bullet penetration: 2x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n3. Weapon #2: [Size: 28 px|Width: 16.8 px|Angle: 0\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer -1, [Projectile type: Drone|Bullet speed: 0.9x|Bullet penetration: 2x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n4. Weapon #3: [Size: 28 px|Width: 16.8 px|Angle: -90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer -2, [Projectile type: Drone|Bullet speed: 0.9x|Bullet penetration: 2x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n5. Weapon #4: [Size: 28 px|Width: 16.8 px|Angle: 180\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer -3, [Projectile type: Drone|Bullet speed: 0.9x|Bullet penetration: 2x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n\n~Overtrapper\nTier: 4\nUpgrade from: Overseer, Trapper\nWeapons: 1 launcher, 2 spawners.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%|Drone max count: 6]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 24 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer 0, [Projectile type: Trap|Bullet penetration: 2x|Reload time: (0.92 / 0.6)x|Bullet lifespan: 704 frames|Deceleration: 0.9x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as tank's body]\n3. Weapon #2: [Size: 28 px|Width: 16.8 px|Angle: -150\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer -1, [Projectile type: Drone|Bullet speed: 0.9x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n4. Weapon #3: [Size: 28 px|Width: 16.8 px|Angle: -30\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (28, 30.24)], layer -2, [Projectile type: Drone|Bullet speed: 0.9x|Reload time: 6x|Bullet lifespan: Eternal|Drone controllability: Yes], projectile code: [Shape: Triangle|Polygonal side length: Same as width of weapon * 1.2|Color: Same as tank's body|Attack range radius: 425 px]\n\n~Penta Shot\nTier: 4\nUpgrade from: Triple Shot\nWeapons: 5 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 44 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0.7x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 38 px|Width: 16.8 px|Angle: 112.5\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0.7x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 38 px|Width: 16.8 px|Angle: 67.5\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0.7x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n5. Weapon #4: [Size: 32 px|Width: 16.8 px|Angle: 135\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0.7x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n6. Weapon #5: [Size: 32 px|Width: 16.8 px|Angle: 45\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -4, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0.7x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Predator\nTier: 4\nUpgrade from: Hunter\nWeapons: 3 cannons.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 117.6%|Scope distance: 460 px]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 32 px|Width: 28.56 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.4x|Bullet damage: 0.75x|Reload time: 3x|Delay: 0.72 sec|Bullet accuracy: 1.5\u00b0|Recoil: 0.3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n3. Weapon #2: [Size: 38 px|Width: 22.68 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet speed: 1.4x|Bullet damage: 0.75x|Reload time: 3x|Delay: 0.36 sec|Bullet accuracy: 1.5\u00b0|Recoil: 0.3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n4. Weapon #3: [Size: 44 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet speed: 1.4x|Bullet damage: 0.75x|Reload time: 3x|Bullet accuracy: 1.5\u00b0|Recoil: 0.3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n\n~Ranger\nTier: 4\nUpgrade from: Assassin\nWeapons: 1 cannon.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 142.8%]\n1. TankBody [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 48 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, 33.6), (26, 16.8), (48, 16.8)], layer 0, [Projectile type: Bullet|Bullet speed: 1.43x|Bullet damage: 1.1x|Reload time: 2x|Bullet accuracy: 1.5\u00b0|Recoil: 3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Rocketeer\nTier: 4\nUpgrade from: Destroyer\nWeapons: 1 deployer.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 32 px|Width: 21 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 36.75), (32, 21)], layer 0, [Projectile type: Missile|Bullet speed: 0.3x|Bullet penetration: 5x|Reload time: 4x|Recoil: 3x], projectile code: [Model:Missile]\n3. WeaponPart: [Color: #999|Segment: Trapezoidal - (0, 13.8), (37, 23.5)], underlapped by Weapon #1, part of Weapon #1\n\nCode info of missile:\n1. TankBody: [Shape: Perfect circle|Diameter: width of Weapon #1|Color: Same as tank's body], layer 1\n2. Weapon #1: [Size: 14.7 px|Width: 9.759 px|Angle: -90\u00b0|Color: Same as tank's body|Y-offset: 0 px|Segment: Trapezoidal - (0, 9.759), (14.7, 17.325)], layer 0, [Projectile type: Bullet|Bullet speed: 1.5x|Bullet penetration: 0.3x|Bullet damage: 0.6x|Reload time: 0.2x|Delay: 1 sec|Bullet accuracy: 25\u00b0|Bullet lifespan: 9 frames|Recoil: 3.3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Skimmer\nTier: 4\nUpgrade from: Destroyer\nWeapons: 1 deployer.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 32 px|Width: 28.56 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Missile|Bullet speed: 0.5x|Bullet penetration: 3x|Reload time: 4x|Bullet lifespan: 114 frames|Recoil: 3x], projectile code: [Model:Missile|Rotation speed: 6 per frames]\n3. WeaponPart: [Color: #999|Segment: Trapezoidal - (0, 13.8), (37, 23.5)], underlapped by Weapon #1, part of Weapon #1\n\nCode info of missile:\n1. TankBody: [Shape: Perfect circle|Diameter: width of Weapon #1|Color: Same as tank's body], layer 1\n2. Weapon #1: [Size: 19.992 px|Width: 11.995 px|Angle: 90\u00b0|Color: Same as tank's body|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.3x|Bullet damage: 0.6x|Reload time: 0.4x|Bullet lifespan: 22 frames|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 19.992 px|Width: 11.995 px|Angle: -90\u00b0|Color: Same as tank's body|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet penetration: 0.3x|Bullet damage: 0.6x|Reload time: 0.4x|Bullet lifespan: 22 frames|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Spike\nTier: 4\nUpgrade from: Smasher\nWeapons: None.\nAccessories: Smasher shell.\n\nCode info:\nUniversal: [Body damage: +4 (tank-shape collision), +6 (tank-tank collision)|Field of view: 111.1%], [Stat max limit: Health regeneration - 10, max health - 10, body damage - 10, bullet speed - 0, bullet penetration - 0, bullet damage - 0, reload time - 0, movement speed - 10, view distance - 10]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Accessory #1: [Shape: Triangle|Circumcircle diameter: 52 px|Angle: 90\u00b0|Color: #555|Rotation speed: 20.4 per frame], layer 0\n3. Accessory #2: [Shape: Triangle|Circumcircle diameter: 52 px|Angle: 0\u00b0|Color: #555|Rotation speed: 20.4 per frame], layer -1\n4. Accessory #3: [Shape: Triangle|Circumcircle diameter: 52 px|Angle: -90\u00b0|Color: #555|Rotation speed: 20.4 per frame], layer -2\n5. Accessory #4: [Shape: Triangle|Circumcircle diameter: 52 px|Angle: 180\u00b0|Color: #555|Rotation speed: 20.4 per frame], layer -3\n\n~Sprayer\nTier: 4\nUpgrade from: Machine Gun\nWeapons: 2 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 16.8), (38, 30.24)], layer 0, [Projectile type: Bullet|Bullet damage: 0.7x|Reload time: (0.32 / 0.6)x|Bullet accuracy: 15\u00b0], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 44 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.2x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n\n~Spread Shot\nTier: 4\nUpgrade from: Triple Shot\nWeapons: 11 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 35.6 px|Width: 11.76 px|Angle: 105\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 33.2 px|Width: 11.76 px|Angle: 120\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n5. Weapon #4: [Size: 30.8 px|Width: 11.76 px|Angle: 135\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n6. Weapon #5: [Size: 28.4 px|Width: 11.76 px|Angle: 150\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -4, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n7. Weapon #6: [Size: 26 px|Width: 11.76 px|Angle: 165\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -5, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n8. Weapon #7: [Size: 35.6 px|Width: 11.76 px|Angle: 75\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -6, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n9. Weapon #8: [Size: 33.2 px|Width: 11.76 px|Angle: 60\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -7, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n10. Weapon #9: [Size: 30.8 px|Width: 11.76 px|Angle: 45\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -8, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n11. Weapon #10: [Size: 28.4 px|Width: 11.76 px|Angle: 30\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -9, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n12. Weapon #11: [Size: 26 px|Width: 11.76 px|Angle: 15\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -10, [Projectile type: Bullet|Bullet damage: 0.6x|Reload time: 2x|Recoil: 0.1x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Stalker\nTier: 4\nUpgrade from: Assassin\nWeapons: 1 cannon.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 125%|Invisibility: Yes|Cloak transition time without moving: 1% per frame|Cloak reveal time when moving: -30% per frame]\n1. TankBody [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 48 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Trapezoidal - (0, 29.4), (48, 16.8)], layer 0, [Projectile type: Bullet|Bullet speed: 1.43x|Bullet damage: 1.1x|Reload time: 2x|Bullet accuracy: 1.5\u00b0|Recoil: 3x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Streamliner\nTier: 4\nUpgrade from: Gunner, Hunter\nWeapons: 5 cannons.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 117.6%]\n1. TankBody [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 28 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.2x|Delay: 0.48 sec|Bullet accuracy: 1.5\u00b0|Bullet lifespan: 70 frames|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n3. Weapon #2: [Size: 32 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.2x|Delay: 0.36 sec|Bullet accuracy: 1.5\u00b0|Bullet lifespan: 70 frames|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n4. Weapon #3: [Size: 36 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.2x|Delay: 0.24 sec|Bullet accuracy: 1.5\u00b0|Bullet lifespan: 70 frames|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n5. Weapon #4: [Size: 40 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.2x|Delay: 0.12 sec|Bullet accuracy: 1.5\u00b0|Bullet lifespan: 70 frames|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n6. Weapon #5: [Size: 44 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer -4, [Projectile type: Bullet|Bullet speed: 1.1x|Bullet damage: 0.2x|Bullet accuracy: 1.5\u00b0|Bullet lifespan: 70 frames|Recoil: 0.2x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon * 0.7|Color: Same as tank's body]\n\n~Tri-Trapper\nTier: 4\nUpgrade from: Trapper\nWeapons: 3 launchers.\nAccessories: None.\n\nCode info:\nUniversal: [Field of view: 111.1%]\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 24 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer 0, [Projectile type: Trap|Bullet penetration: 2x|Reload time: (0.92 / 0.6)x|Bullet lifespan: 282 frames|Deceleration: 0.9x|Recoil: 0x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as tank's body]\n3. Weapon #2: [Size: 24 px|Width: 16.8 px|Angle: -150\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer -1, [Projectile type: Trap|Bullet penetration: 2x|Reload time: (0.92 / 0.6)x|Bullet lifespan: 282 frames|Deceleration: 0.9x|Recoil: 0x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as tank's body]\n4. Weapon #3: [Size: 24 px|Width: 16.8 px|Angle: -30\u00b0|Color: #999|Y-offset: 0 px|Segment: (0, width), (size, width), ((width / 2.1), (width * (29.5 / 16.8)))], layer -2, [Projectile type: Trap|Bullet penetration: 2x|Reload time: (0.92 / 0.6)x|Bullet lifespan: 282 frames|Deceleration: 0.9x|Recoil: 0x], projectile code: [ShapeModel:Trap|Circumcircle diameter: (Same as width of weapon * 1.25) * 0.8|Color: Same as tank's body]\n\n~Triple Twin\nTier: 4\nUpgrade from: Twin Flank\nWeapons: 6 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 10.4 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as body]\n3. Weapon #2: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: -10.4 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n4. Weapon #3: [Size: 38 px|Width: 16.8 px|Angle: -150\u00b0|Color: #999|Y-offset: 10.4 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as body]\n5. Weapon #4: [Size: 38 px|Width: 16.8 px|Angle: -150\u00b0|Color: #999|Y-offset: -10.4 px|Segment: Rectangular], layer -3, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n6. Weapon #5: [Size: 38 px|Width: 16.8 px|Angle: -30\u00b0|Color: #999|Y-offset: 10.4 px|Segment: Rectangular], layer -4, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as body]\n7. Weapon #6: [Size: 38 px|Width: 16.8 px|Angle: -30\u00b0|Color: #999|Y-offset: -10.4 px|Segment: Rectangular], layer -5, [Projectile type: Bullet|Bullet damage: 0.62x|Recoil: 0x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n\n~Triplet\nTier: 4\nUpgrade from: Triple Shot\nWeapons: 3 cannons.\nAccessories: None.\n\nCode info:\n1. TankBody: [Shape: Perfect circle|Diameter: 40 px|Color: Based on teams], layer 1\n2. Weapon #1: [Size: 38 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet penetration: 0.7x|Bullet damage: 0.6x|Recoil: 0.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]\n3. Weapon #2: [Size: 32 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: 10.4 px|Segment: Rectangular], layer -1, [Projectile type: Bullet|Bullet penetration: 0.7x|Bullet damage: 0.6x|Recoil: 0.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as body]\n4. Weapon #3: [Size: 32 px|Width: 16.8 px|Angle: 90\u00b0|Color: #999|Y-offset: -10.4 px|Segment: Rectangular], layer -2, [Projectile type: Bullet|Bullet penetration: 0.7x|Bullet damage: 0.6x|Recoil: 0.5x], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as tank's body]"},{"assistant_initiates":false,"asst_text":"Thanks for sharing all that detailed info about the icy foods, freezing mechanics, and shiny food tiers in **Asteros**!\n\nHere\u2019s a condensed recap and some useful clarifications for your game's freezing and shininess systems that you might want to keep handy or expand upon:\n\n---\n\n## Icy Foods & Freezing Mechanics Recap\n\n### New Foods with Freeze Abilities\n| Name          | Color     | HP   | XP   | Body Damage | Hitbox Radius (px) | Rarity                      | Info                                                                                  |\n|---------------|-----------|------|------|-------------|--------------------|-----------------------------|---------------------------------------------------------------------------------------|\n| Ice Hexagon   | #73fffc   | 180  | 220  | 12          | 30.83              | Uncommon (field); common in Ice Hexagon Nest | Has invisible radial freezing aura. Freezes players on contact (debuff \u201cfrozen\u201d).      |\n| Heptagon      | #9f6cff   | 300  | 400  | 12          | 36.76              | Uncommon (field); common in Heptagon Nest  | Passive.                                                                              |\n| Octagon       | #ffa568   | 480  | 640  | 16          | 42.87              | Very uncommon (field); common in Octagon Nest | Passive.                                                                              |\n| Frostbiter    | #73fffc   | 30   | 25   | 8           | 16.5               | Common in Ice Hexagon Nest  | Aggressive; moves toward players (1.3 px/frame velocity).                             |\n| Small Frostbiter | #73fffc | 10   | 15   | 8           | 10.5               | Very common in Ice Hexagon Nest | Aggressive; moves toward players.                                                    |\n| Freezer       | #73fffc   | 150  | 150  | 8           | 22.5               | Common in Ice Hexagon Nest  | Aggressive; auto turret attacking players.                                           |\n| Snowmine      | #73fffc   | 15   | 20   | 150         | 13.58               | Common in Ice Hexagon Nest  | Invisible landmine, gives coldness warnings to players nearby.                       |\n\n### Freeze Aura / Debuff Data\n| Food Type       | Freezing Aura Radius | Freeze Power (Aura) | Freeze Power (Collision) |\n|-----------------|---------------------|-------------------|--------------------------|\n| Ice Hexagon     | 1.5 \u00d7 Hitbox radius | 0.5 units/frame   | 5 units                  |\n| Alpha Hexagon   | 2 \u00d7 Hitbox radius   | 1 unit/frame      | 25 units                 |\n| Frostbiter      | 2 \u00d7 Hitbox radius \u00d7 (1 + Speed) | 0.3 \u00d7 (1 + Speed) | 3 \u00d7 (1 + Speed)           |\n| Small Frostbiter| Same as Frostbiter  | 0.25 \u00d7 (1 + Speed)| 2 \u00d7 (1 + Speed)           |\n| Freezer         | Same as Frostbiter  | 0.6 \u00d7 (1 + Speed) | 4 \u00d7 (1 + Speed)           |\n| Snowmine        | 4 \u00d7 Hitbox radius   | 1.5 units/frame   | 250 units                |\n\n- **Freeze recovery**: -1 unit/frame when outside any freezing aura.\n- **Freeze critical point**: 100 units of freeze effect.\n- **Effects scaling with freeze effect** (below critical):\n  \n  \\[\n  \\text{stat}_\\text{effective} = \\text{Base stat} \\times \\left(1 - \\left(\\frac{\\text{freeze effect}}{100}\\right)^2\\right)\n  \\]\n\n- **At or above critical**: Movement, rotation, and firing stop. \n\n- **Frostbiting damage formula** when frozen:\n\n  \\[\n  \\text{Damage per frame} = -0.5 \\times \\frac{\\text{freeze effect} - 100}{10} \\quad \\text{HP/frame}\n  \\]\n\n---\n\n## Shiny Food System and Visual Effects\n\n### Shininess Levels Summary\n\n| Level | Name        | HP Multiplier          | XP Multiplier          | Chance (relative; approx.)                | Visual/Particle Effects                                                                      |\n|-------|-------------|-----------------------|-----------------------|-------------------------------------------|----------------------------------------------------------------------------------------------|\n| 1     | Shiny       | \u00d710                   | \u00d7100                  | 1 in 1,000 of ordinary shapes             | Greenish color (#8afe69).                                                                    |\n| 2     | Radiant     | Shiny \u00d7 1.5            | Shiny \u00d7 4             | 1 in 3 of shiny foods                      | Rainbow hue cycling for base + emitting heart particles.                                   |\n| 3     | Luminous    | Radiant \u00d7 1.5          | Radiant \u00d7 4           | 1 in 3 of radiant foods                    | Adds overlay with rainbow luminosity pulsating effect.                                      |\n| 4     | Gleaming    | Luminous \u00d7 1.5          | Luminous \u00d7 4           | 1 in 3 of luminous foods                   | Adds sparkle shape (3-pointed polygram) with opacity around 40% cycling hue and rotation.    |\n| 5     | Lustrous    | Gleaming \u00d7 1.5          | Gleaming \u00d7 4           | 1 in 3 of gleaming foods                   | Adds another polygram layer (negatively curved sparkle shape) with subtle motion/opacity.    |\n| 6     | Shimmering  | Lustrous \u00d7 1.5          | Lustrous \u00d7 4           | 1 in 4 of lustrous foods                   | Adds second set of gleam + luster overlays with lower opacity and more intense effects.      |\n\n---\n\n### Visual Details\n\n- **Base color** for shinies: #8afe69 (bright green).\n- Heart-shaped particles emitted with short lifespan.\n- Rainbow effects created by cycling **hue** over time (`Radiant effect` and `Luminous effect`).\n- Gleaming and Lustrous overlays use special shape models:\n  - **Gleaming:** 3-pointed polygram with X-offset spoke ratio ~0.1457 \u00d7 circumcircle.\n  - **Lustrous:** 3-pointed polygram negatively curved with X-offset spoke ratio ~0.4014 \u00d7 circumcircle.\n- All overlays scale with the food\u2019s hitbox radius and their effect intensities fluctuate with sinusoidal functions to simulate shimmering.\n\n---\n\n### Freeze Ability and Color Note\n\n- **Color #73fffc (cyan)** is reserved for icy foods with freeze mechanics.\n- Cyan-colored foods **cannot be shiny** because shininess is associated with greenish hues and lacks freezing effect.\n- Icy crashers and sentries replace some icy shiny foods, keeping freeze mechanics but altering rarity/behavior.\n- Snowmines are invisible but can be sensed by their cold aura, giving strategic gameplay cues.\n\n---\n\n### Example of Frostbiter & Freezer Food with Auto Turrets\n\n- **Sentry** and **Freezer** are aggressive polygon enemies with auto-turrets shooting bullets at players.\n- Auto turret shooting craps deal moderate damage, speed, and penetration to challenge players approaching icy nests.\n\n---\n\nIf you want:\n\n- **Help formulating visual or audio in-game indicators for freeze effect/debuff?**\n- **Formulas or pseudo-code for managing freeze effect application or its decay?**\n- **Suggestions for balancing icy foods and freezing effect impact?**\n- **Implementation tips on shiny food spawning and multipliers?**\n\nJust ask!\n\n---\n\nWould you like me to help produce sample code snippets, balancing advice, or integrate those effects into other gameplay mechanics?","behavior":"degenerate_repetition","conversation_hash":"8b4f021d159f93403171a460a622cfaf","conversation_redacted":false,"conversation_toxic":false,"country":"Russia","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"English","model":"gpt-4.1-mini-2025-04-14","n_chars":20013,"n_turns_in_conversation":2,"n_words":2784,"source_row_offset":39270,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:04:53 GMT","turn_id":"4099897b879479f919e57635","turn_index":1,"user_text":"|Name|Color and design|HP|XP|Body damage|Hitbox radius (px)|Rarity|Info|\n|Ice hexagon|#73fffc (Cyan) hexagon with 71.2 px in circumcircle diameter|180|220|12|30.830504374172033|Uncommon in field of foods; common in the Ice Hexagon Nest|Passive|\n|Heptagon|#9f6cff (Violet) heptagon with 81.6 px in circumcircle diameter|300|400|12|36.75952980950581|Uncommon in field of foods; common in the Heptagon Nest|Passive|\n|Octagon|#ffa568 (Orange) octagon with 92.8 px in circumcircle diameter|480|640|16|42.86801030964987|Very uncommon in field of foods; common in the Octagon Nest|Passive|\n\nIce hexagon has invisible radial freezing aura, aura will freeze players when players approached to it. It give player with debuff \"frozen\" when player touched it. Debuff \"frozen\" harms (called frostbiting) player's health, it stops move, rotation, fire. Its health bar is #00ffff than #ff0000 (for non-icy).\n\nStat info of icy foods:\n|Name|Freezing aura radius (px)|Ice power of aura (units per frames in freeze effect)|Ice power of freezing players when players collided with it (units in freeze effect)|\n|Ice Hexagon|1.5 * Hitbox radius|0.5|5|\n|Alpha Hexagon|2 * Hitbox radius|1|25|\n|Frostbiter|(2 * Hitbox radius) * (1 + Speed)|0.3 * (1 + Speed)|3 * (1 + Speed)|\n|Small Frostbiter|(2 * Hitbox radius) * (1 + Speed)|0.25 * (1 + Speed)|2 * (1 + Speed)|\n|Freezer|(2 * Hitbox radius) * (1 + Speed)|0.6 * (1 + Speed)|4 * (1 + Speed)|\n|Snowmine|(4 * Hitbox radius), it's nerfed makes players better to sense coldness|1.5|250|\n* Freezer's kite: |(2 * Hitbox radius) * (1 + (Speed / 10))|0.6 * (1 + Speed)|4 * (1 + Speed)|0.9|15|\n\nFreezing mechanics in players:\n* Recovery: -1 per frames in freeze effect without touching aura of ice hexagons\n* Critical point for freeze effect: 100 units\n* Formula for players high in freeze effect before reaching critical point: \"Base * (1 - (freeze effect / 100)^2)\". Affects bases such as movement speed, rotation, regeneration, heal time.\n* Formula for players are frostbiting when players reached critical point: \"-0.5 HP * ((freeze effect - 100) / 10)\" per frames.\n* When players reached critical point of freeze effect, move, rotation, fire are stopped.\n\nNew foods from polygon nest:\n|Name|Color and design|HP|XP|Body damage|Hitbox radius|Rarity|Info|\n|Frostbiter|#73fffc (Cyan) triangle with 44 px in circumcircle diameter|30|25|8|16.5|Common in Ice Hexagon Nest|Aggressively move towards to players, 1.3 px velocity per frames (max velocity: 13 px)|\n|Small frostbiter|#73fffc (Cyan) triangle with 28 px in circumcircle diameter|10|15|8|10.5|Very common in Ice Hexagon Nest|Aggressively move towards to players, 1.3 px velocity per frames (max velocity: 13 px)|\n|Sentry|#f177dd (Magenta) triangle with 60 px in circumcircle diameter|150|150|8|22.5|Common in Square/Triangle/Pentagon/Heptagon/Octagon Nests|Aggressively move towards to players, 1.3 px velocity per frames (max velocity: 13 px)|\n|Freezer|#73fffc (Cyan) triangle with 60 px in circumcircle diameter|150|150|8|22.5|Common in Ice Hexagon Nests|Aggressively move towards to players, 1.3 px velocity per frames (max velocity: 13 px)|\n|Alpha Square|#ffe869 (Yellow) square with 117.33333333333333 px in circumcircle diameter|2000|2000|16|41.4835978304|Rare in the Square Nest|Passive|\n|Alpha Triangle|#fc7677 (Red) triangle with 117.33333333333333 px in circumcircle diameter|2500|2500|16|44|Rare in the Triangle Nest|Passive|\n|Alpha Hexagon|#73fffc (Cyan) hexagon with 189.86666666666667 px in circumcircle diameter|3500|3500|20|82.21467833112543|Rare in the Ice Hexagon Nest|Passive|\n|Alpha Heptagon|#9f6cff (Violet) heptagon with 217.6 px in circumcircle diameter|4500|4500|20|98.02541282534882|Rare in the Heptagon Nest|Passive|\n|Alpha Octagon|#ffa568 (Orange) octagon with 247.46666666666664 px in circumcircle diameter|6000|6000|24|114.31469415906632|Rare in the Octagon Nest|Passive|\n|Nest landmine|#8e8e8e (Gray) ShapeModel:Mine with 38.4 px in circumcircle diameter, and 0.4 in Inkscape spoke ratio|15|20|150|13.57645019904|Common in Square/Triangle/Pentagon/Heptagon/Octagon Nests|Passive, never rotating, vertex of polygram is always toward to angle 90\u00b0. Invisible but becomes very slightly visible when players approach to it|\n|Snowmine|#73fffc (Cyan) ShapeModel:Mine with 38.4 px in circumcircle diameter, and 0.4 in Inkscape spoke ratio|15|20|150|13.57645019904|Common in Ice Hexagon Nest|Passive, never rotating, vertex of polygram is always toward to angle 90\u00b0. Invisible but becomes very slightly visible when players approach to it|\n\nColor #73fffc is associated with freezing abilities. Alpha hexagons have large and potent aura. Frostbiters, freezers, freezer's kites, exploding snowmines have powerful ice power (both aura/collision) due to Einsteinian energy comes from speed.\n\n## Sentry code info:\n1. FoodBody: Layer 1\n2. Accessory #1: [Type: Auto turret|X-offset: 0 px|Attack range radius: 800 px|Field of view: 360\u00b0], layer 2\n# Code info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 23 per frames|Bullet penetration: 50 HP|Bullet damage: 8.4|Recoil: 0.32 sec], projectile code: [Shape: Perfect circle|Diameter: Same as width of weapon|Color: Same as food Square]\n\n## Freezer code info:\n1. FoodBody: Layer 1\n2. Accessory #1: [Type: Auto turret|X-offset: 0 px|Attack range radius: 800 px|Field of view: 360\u00b0], layer 2\n# Code info of auto turret:\n1. AccessoryBody #1: [Shape: Perfect circle|Diameter: 20 px|Color: 999#], layer 1\n2. Weapon #1: [Size: 22 px|Width: 11.76 px|Angle: 90\u00b0|Color: #999|Y-offset: 0 px|Segment: Rectangular], layer 0, [Projectile type: Bullet|Bullet speed: 23 per frames|Bullet penetration: 50 HP|Bullet damage: 8.4|Recoil: 0.32 sec], projectile code: [Shape: Kite|Geometrical fill: (0, 5.88), (5.88, 0), (0, -5.88), (-14.881, 0)|Color: Same as food Ice Hexagon]\n\n~Shiny foods\nShiny shapes have all variations, icy shapes can't be shiny because lack freeze ability because cyan color is associated with freeze ability. Chance of shiny shapes is 1 in 1000, HP and XP is multipled by shininess level. Frostbiters, freezers, snowmines were spawned in ice hexagon nest with chanced to become shiny, now become crashers, sentries, nest landmines. Shiny landmines are still invisible but radiant landmines can't be invisible due to radiance.\n\n## Shininess level 1 - Shiny foods\n* HP: HP * 10\n* XP: XP * 100\n* Chance: 1 in 1000 of ordinary shapes\nCode info:\n1. FoodBody: [Shape: Same polygon|Color:#8afe69]\n\n## Shininess level 2 - Radiant foods\n* HP: Shiny HP * 1.5^1\n* XP: Shiny XP * 4^1\n* Chance: 1 in 3 of shiny foods\nCode info:\n1. FoodBody: [Shape: Same polygon|Color: #8afe69|Effect: Rainbow (hue is always changing from radiant effect)], Scratch.mit.edu script [Radiant effect: random(0 to 200)|Radiant effect: ((Radiant effect + 2) mod 200) per frames], layer 1, emitting particles\n2. Particle: Layer 2, heart-shaped, moving, short lifespan, it vanishes when reached lifespan.\n\n## Shininess level 3 - Luminous foods\n* HP: Shiny HP * 1.5^2\n* XP: Shiny XP * 4^2\n* Chance: 1 in 3 of radiant foods\nCode info:\n1. FoodBody: [Shape: Same polygon|Color: #8afe69|Effect: Rainbow (hue is always changing from radiant effect)], Scratch.mit.edu script [Radiant effect: random(0 to 200)|Radiant effect: ((Radiant effect + 2) mod 200) per frames], layer 1, emitting particles\n2. Particle: Layer 2, heart-shaped, moving, short lifespan, it vanishes when reached lifespan.\n3. Luminosity: [Shape: Same polygon|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 25%|Circumcircle diameter: Same * (1 + (1 * ((sin(Luminous effect - 90) + 1) / 2)))], Scratch script [Luminous effect: random(0 to 360)|Luminous effect: ((Luminous effect + 6.25) mod 360) per frames], layer 0\n\n## Shininess level 4 - Gleaming foods\n* HP: Shiny HP * 1.5^3\n* XP: Shiny XP * 4^3\n* Chance: 1 in 3 of luminous foods\nCode info:\n1. FoodBody: [Shape: Same polygon|Color: #8afe69|Effect: Rainbow (hue is always changing from radiant effect)], Scratch.mit.edu script [Radiant effect: random(0 to 200)|Radiant effect: ((Radiant effect + 2) mod 200) per frames], layer 1, emitting particles\n2. Particle: Layer 2, heart-shaped, moving, short lifespan, it vanishes when reached lifespan.\n3. Luminosity: [Shape: Same polygon|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 25%|Circumcircle diameter: Same * (1 + (1 * ((sin(Luminous effect - 90) + 1) / 2)))], Scratch script [Luminous effect: random(0 to 360)|Luminous effect: ((Luminous effect + 6.25) mod 360) per frames], layer 0\n4. Gleam: [ShapeModel:Gleaming|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 40%|Circumcircle diameter: (81px * (1 + (1 * ((sin(Gleaming effect - 90) + 1) / 2)))) * (Food's hitbox radius / 20)|Rotation speed: 4.5 per frames], Scratch script [Gleaming effect: random(0 to 360)|Gleaming effect: ((Gleaming effect + 3.3) mod 360) per frames], layer -1\n\n## Shininess level 5 - Lustrous foods\n* HP: Shiny HP * 1.5^4\n* XP: Shiny XP * 4^4\n* Chance: 1 in 3 of gleaming foods\nCode info:\n1. FoodBody: [Shape: Same polygon|Color: #8afe69|Effect: Rainbow (hue is always changing from radiant effect)], Scratch.mit.edu script [Radiant effect: random(0 to 200)|Radiant effect: ((Radiant effect + 2) mod 200) per frames], layer 1, emitting particles\n2. Particle: Layer 2, heart-shaped, moving, short lifespan, it vanishes when reached lifespan.\n3. Luminosity: [Shape: Same polygon|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 25%|Circumcircle diameter: Same * (1 + (1 * ((sin(Luminous effect - 90) + 1) / 2)))], Scratch script [Luminous effect: random(0 to 360)|Luminous effect: ((Luminous effect + 6.25) mod 360) per frames], layer 0\n4. Gleam: [ShapeModel:Gleaming|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 40%|Circumcircle diameter: (81px * (1 + (1 * ((sin(Gleaming effect - 90) + 1) / 2)))) * (Food's hitbox radius / 20)|Rotation speed: 4.5 per frames], Scratch script [Gleaming effect: random(0 to 360)|Gleaming effect: ((Gleaming effect + 3.3) mod 360) per frames], layer -1\n5. Luster: [ShapeModel:Lustrous|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 40%|Circumcircle diameter: (57.8px * (1 + (0.8 * ((sin(Lustrous effect - 90) + 1) / 2)))) * (Food's hitbox radius / 20)|Rotation speed: 3.6 per frames], Scratch script [Lustrous effect: random(0 to 360)|Lustrous effect: ((Lustrous effect + 2.1) mod 360) per frames], layer -2\n\n## Shininess level 6 - Shimmering foods\n* HP: Shiny HP * 1.5^5\n* XP: Shiny XP * 4^5\n* Chance: 1 in 4 of lustrous foods\nCode info:\n1. FoodBody: [Shape: Same polygon|Color: #8afe69|Effect: Rainbow (hue is always changing from radiant effect)], Scratch.mit.edu script [Radiant effect: random(0 to 200)|Radiant effect: ((Radiant effect + 2) mod 200) per frames], layer 1, emitting particles\n2. Particle: Layer 2, heart-shaped, moving, short lifespan, it vanishes when reached lifespan.\n3. Luminosity: [Shape: Same polygon|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 25%|Circumcircle diameter: Same * (1 + (1 * ((sin(Luminous effect - 90) + 1) / 2)))], Scratch script [Luminous effect: random(0 to 360)|Luminous effect: ((Luminous effect + 6.25) mod 360) per frames], layer 0\n4. Gleam: [ShapeModel:Gleaming|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 40%|Circumcircle diameter: (81px * (1 + (1 * ((sin(Gleaming effect - 90) + 1) / 2)))) * (Food's hitbox radius / 20)|Rotation speed: 4.5 per frames], Scratch script [Gleaming effect: random(0 to 360)|Gleaming effect: ((Gleaming effect + 3.3) mod 360) per frames], layer -1\n5. Luster: [ShapeModel:Lustrous|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 40%|Circumcircle diameter: (57.8px * (1 + (0.8 * ((sin(Lustrous effect - 90) + 1) / 2)))) * (Food's hitbox radius / 20)|Rotation speed: 3.6 per frames], Scratch script [Lustrous effect: random(0 to 360)|Lustrous effect: ((Lustrous effect + 2.1) mod 360) per frames], layer -2\n6. Gleam2: [ShapeModel:Gleaming|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 10%|Circumcircle diameter: (81px * (1 + (2.2 * ((sin(Gleaming effect - 90) + 1) / 2)))) * (Food's hitbox radius / 20)|Rotation speed: 4.5 per frames (angle is always as Gleam)], layer -3\n7. Luster2: [ShapeModel:Lustrous|Color: #afff99|Effect: Rainbow (hue is always changing from radiant effect)|Opacity: 10%|Circumcircle diameter: (57.8px * (1 + (2 * ((sin(Lustrous effect - 90) + 1) / 2)))) * (Food's hitbox radius / 20)|Rotation speed: 3.6 per frames (angle is always as Luster)], layer -4"},{"assistant_initiates":false,"asst_text":"\u201c\u5409\u666e\u8d5b\u4eba\u201d\u662f\u5bf9\u7f57\u59c6\u4eba\uff08Roma\uff09\u7684\u4fd7\u79f0\uff0c\u7f57\u59c6\u4eba\u662f\u4e00\u4e2a\u62e5\u6709\u81ea\u5df1\u72ec\u7279\u6587\u5316\u548c\u8bed\u8a00\u7684\u6c11\u65cf\uff0c\u8d77\u6e90\u4e8e\u5370\u5ea6\u6b21\u5927\u9646\uff0c\u540e\u6765\u7ecf\u8fc7\u591a\u6b21\u8fc1\u5f99\uff0c\u5206\u5e03\u5728\u6b27\u6d32\u3001\u4e9a\u6d32\u3001\u7f8e\u6d32\u7b49\u5730\u3002\u4ee5\u4e0b\u662f\u5173\u4e8e\u5409\u666e\u8d5b\u4eba\uff08\u7f57\u59c6\u4eba\uff09\u7684\u7b80\u8981\u4ecb\u7ecd\uff1a\n\n### \u8d77\u6e90\u548c\u5386\u53f2\n- \u7f57\u59c6\u4eba\u7684\u7956\u5148\u8d77\u6e90\u4e8e\u516c\u51431\u5343\u7eaa\u521d\u7684\u5370\u5ea6\u5317\u90e8\u5730\u533a\u3002\n- \u5927\u7ea6\u5728\u516c\u514310\u4e16\u7eaa\u81f314\u4e16\u7eaa\u95f4\uff0c\u7f57\u59c6\u4eba\u9010\u6e10\u5411\u897f\u8fc1\u5f99\uff0c\u7ecf\u8fc7\u6ce2\u65af\u3001\u62dc\u5360\u5ead\u5e1d\u56fd\uff0c\u6700\u7ec8\u8fdb\u5165\u6b27\u6d32\u5404\u56fd\u3002\n- \u4ed6\u4eec\u56e0\u8bed\u8a00\u3001\u751f\u6d3b\u65b9\u5f0f\u4e0e\u5f53\u5730\u6c11\u65cf\u4e0d\u540c\uff0c\u5e38\u88ab\u79f0\u4e3a\u201c\u5409\u666e\u8d5b\u4eba\u201d\uff0c\u8fd9\u4e2a\u8bcd\u6e90\u81ea\u201cEgyptian\u201d\uff0c\u66fe\u88ab\u8bef\u8ba4\u4e3a\u6765\u81ea\u57c3\u53ca\u3002\n\n### \u8bed\u8a00\n- \u7f57\u59c6\u4eba\u6709\u81ea\u5df1\u7684\u8bed\u8a00\u2014\u2014\u7f57\u59c6\u8bed\uff0c\u5c5e\u4e8e\u5370\u5ea6-\u96c5\u5229\u5b89\u8bed\u65cf\u3002\n- \u7f57\u59c6\u8bed\u6709\u591a\u4e2a\u65b9\u8a00\uff0c\u4e0d\u540c\u5730\u533a\u7684\u7f57\u59c6\u4eba\u8bed\u8a00\u5dee\u5f02\u8f83\u5927\u3002\n- \u8bb8\u591a\u7f57\u59c6\u4eba\u540c\u65f6\u4f7f\u7528\u5176\u6240\u5728\u56fd\u7684\u4e3b\u8981\u8bed\u8a00\u3002\n\n### \u6587\u5316\u4e0e\u751f\u6d3b\u65b9\u5f0f\n- \u7f57\u59c6\u4eba\u4f20\u7edf\u4e0a\u4ee5\u6e38\u7267\u4e3a\u4e3b\uff0c\u64c5\u957f\u5de5\u827a\u3001\u97f3\u4e50\u548c\u821e\u8e48\u3002\n- \u4ed6\u4eec\u6709\u4e30\u5bcc\u7684\u53e3\u8ff0\u4f20\u7edf\u548c\u72ec\u7279\u7684\u97f3\u4e50\u98ce\u683c\uff0c\u88ab\u8ba4\u4e3a\u662f\u6b27\u6d32\u97f3\u4e50\u6587\u5316\u7684\u91cd\u8981\u7ec4\u6210\u90e8\u5206\u3002\n- \u73b0\u4ee3\u8bb8\u591a\u7f57\u59c6\u4eba\u5df2\u7ecf\u5b9a\u5c45\uff0c\u4f46\u4ecd\u4fdd\u6301\u8bb8\u591a\u4f20\u7edf\u4e60\u60ef\u548c\u4fe1\u4ef0\u3002\n\n### \u793e\u4f1a\u72b6\u51b5\u4e0e\u6b67\u89c6\n- \u5386\u53f2\u4e0a\uff0c\u7f57\u59c6\u4eba\u957f\u671f\u9762\u4e34\u8d2b\u56f0\u3001\u6b67\u89c6\u548c\u6392\u65a5\u3002\n- \u4ed6\u4eec\u5728\u8bb8\u591a\u56fd\u5bb6\u53d7\u5230\u793e\u4f1a\u8fb9\u7f18\u5316\uff0c\u6559\u80b2\u548c\u5c31\u4e1a\u673a\u4f1a\u6709\u9650\u3002\n- 20\u4e16\u7eaa\u671f\u95f4\uff0c\u5c24\u5176\u5728\u7eb3\u7cb9\u5fb7\u56fd\u65f6\u671f\uff0c\u7f57\u59c6\u4eba\u906d\u53d7\u4e86\u5927\u89c4\u6a21\u8feb\u5bb3\u548c\u5c60\u6740\u3002\n- \u8fd1\u5e74\u6765\uff0c\u56fd\u9645\u793e\u4f1a\u548c\u76f8\u5173\u7ec4\u7ec7\u79ef\u6781\u63a8\u52a8\u7f57\u59c6\u4eba\u7684\u6743\u5229\u4fdd\u969c\u548c\u793e\u4f1a\u878d\u5408\u3002\n\n### \u73b0\u4ee3\u53d1\u5c55\n- \u8bb8\u591a\u56fd\u5bb6\u81f4\u529b\u4e8e\u6539\u5584\u7f57\u59c6\u4eba\u7684\u751f\u6d3b\u72b6\u51b5\u3002\n- \u7f57\u59c6\u6587\u5316\u548c\u827a\u672f\u5728\u5168\u7403\u8303\u56f4\u5185\u5f97\u5230\u66f4\u591a\u8ba4\u53ef\u548c\u5c0a\u91cd\u3002\n- \u7f57\u59c6\u4eba\u793e\u533a\u5185\u90e8\u4e5f\u5728\u52aa\u529b\u7ef4\u62a4\u81ea\u5df1\u7684\u8bed\u8a00\u3001\u6587\u5316\u548c\u793e\u4f1a\u6743\u76ca\u3002\n\n\u5982\u679c\u4f60\u5bf9\u5409\u666e\u8d5b\u4eba\u6216\u7f57\u59c6\u4eba\u7684\u67d0\u4e2a\u5177\u4f53\u65b9\u9762\u611f\u5174\u8da3\uff0c\u6211\u53ef\u4ee5\u63d0\u4f9b\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\u3002","behavior":"degenerate_repetition","conversation_hash":"6db1ddc65adedc4cef62316a77a60b84","conversation_redacted":false,"conversation_toxic":false,"country":"United States","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Chinese","model":"gpt-4.1-mini-2025-04-14","n_chars":694,"n_turns_in_conversation":1,"n_words":45,"source_row_offset":39271,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:04:55 GMT","turn_id":"50f9d68b04ae0c5d92b19971","turn_index":0,"user_text":"\u5409\u666e\u8d5b\u4eba"},{"assistant_initiates":false,"asst_text":"Hello! I'm doing well, thank you. How can I assist you today?","behavior":"degenerate_repetition","conversation_hash":"1f2041611b8beff6b7602ece1f622dba","conversation_redacted":false,"conversation_toxic":false,"country":"United States","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"English","model":"gpt-4.1-mini-2025-04-14","n_chars":118,"n_turns_in_conversation":1,"n_words":23,"source_row_offset":39272,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:05:00 GMT","turn_id":"63650dd97169c16fe03e45d1","turn_index":0,"user_text":"User: hi, how are you?\nUser: hi, how are you?\nAssistant:"},{"assistant_initiates":false,"asst_text":"\u0628\u0627\u0644\u0637\u0628\u0639! \u0645\u0646 \u0641\u0636\u0644\u0643 \u0623\u0631\u0633\u0644 \u0644\u064a \u0627\u0644\u0645\u0633\u0623\u0644\u0629 \u0623\u0648 \u0627\u0644\u0633\u0624\u0627\u0644 \u0627\u0644\u0630\u064a \u062a\u0631\u063a\u0628 \u0641\u064a \u062d\u0644\u0647 \u0648\u0633\u0623\u0633\u0627\u0639\u062f\u0643 \u0628\u0633\u0631\u0648\u0631.","behavior":"degenerate_repetition","conversation_hash":"2ff0affbdd45dddc450794cedbff79f2","conversation_redacted":false,"conversation_toxic":false,"country":"France","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Arabic","model":"gpt-4.1-mini-2025-04-14","n_chars":87,"n_turns_in_conversation":1,"n_words":17,"source_row_offset":39273,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:05:56 GMT","turn_id":"898009423f5a9db649fbd36d","turn_index":0,"user_text":"\u062d\u0644 \u0647\u0630\u0627 \u0631\u062c\u0627\u0621\u0627"},{"assistant_initiates":false,"asst_text":"\u0412 macOS \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 `sudo` \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c `-u`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:\n\n```bash\nsudo -u username \u043a\u043e\u043c\u0430\u043d\u0434\u0430_\u0434\u043b\u044f_\u0437\u0430\u043f\u0443\u0441\u043a\u0430\n```\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c `ls` \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u043f\u0430\u043f\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f `pavel`:\n\n```bash\nsudo -u pavel ls ~pavel\n```\n\n---\n\n### \u0412\u0430\u0436\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:\n\n- \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0431\u044b\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 sudoers.\n- \u041f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0441\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 (\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0433\u043e sudo).\n- \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 (`username`), \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.\n\n---\n\n### \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:\n\n```bash\nsudo -u username -i\n```\n\n\u042d\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u0441 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\n\n---\n\n### \u041f\u0440\u0438\u043c\u0435\u0440: \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c `vsk`\n\n```bash\nsudo -u vsk /path/to/script.sh\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f `postgres`, \u0447\u0430\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f:\n\n```bash\nsudo -u postgres \u043a\u043e\u043c\u0430\u043d\u0434\u0430\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u2014 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435, \u043f\u043e\u043c\u043e\u0433\u0443 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0451 \u043f\u043e\u0434 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.","behavior":"degenerate_repetition","conversation_hash":"d00a13e0bc7a61895c32281dcd51ea51","conversation_redacted":false,"conversation_toxic":false,"country":"China","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Russian","model":"gpt-4.1-mini-2025-04-14","n_chars":113207,"n_turns_in_conversation":1,"n_words":14927,"source_row_offset":39274,"source_shard":"turns-00079.parquet","timestamp":"Thu, 15 May 2025 09:06:05 GMT","turn_id":"126352593c14dd07f7cdaad4","turn_index":0,"user_text":"User: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 psql -U postgres -f create-user-vsk.sql\nAssistant:  \u041a\u043e\u043c\u041a\u043e\u043c\u0430\u043d\u0434\u0430 `psql -U postgres -f create-user-vsk.sql` \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:\n\n- **psql** \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 PostgreSQL (\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432).\n- **-U postgres** \u2014 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c `postgres`).\n- **-f create-user-vsk.sql** \u2014 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e psql \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435 SQL-\u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 `create-user-vsk.sql`.\n\n\u0418\u0442\u043e\u0433: \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 PostgreSQL \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c `postgres` \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 SQL-\u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 `create-user-vsk.sql`. \u041e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.\nUser: \u041a\u0430\u043a \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 psql -d postgres -f create-database-vsk.sql \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u044e\u0437\u0435\u0440\u0430 \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e\nAssistant:  \u0427\u0442\u043e\u0431\u044b\u0427\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b `psql`, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b:\n\n1. **\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `-U`:**\n\n```bash\npsql -d postgres -U \u0438\u043c\u044f_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -f create-database-vsk.sql\n```\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\npsql -d postgres -U postgres -f create-database-vsk.sql\n```\n\n2. **\u0412\u0432\u043e\u0434 \u043f\u0430\u0440\u043e\u043b\u044f:**\n\n- `psql` \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0430\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u043f\u0430\u0440\u043e\u043b\u044c, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0443\u0436\u0435\u043d.\n- \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f `PGPASSWORD` \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u0435\u043d\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431):\n\n```bash\nPGPASSWORD=\u0432\u0430\u0448_\u043f\u0430\u0440\u043e\u043b\u044c psql -d postgres -U \u0438\u043c\u044f_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -f create-database-vsk.sql\n```\n\n\u0418\u043b\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 (Linux/macOS):\n\n```bash\nexport PGPASSWORD=\u0432\u0430\u0448_\u043f\u0430\u0440\u043e\u043b\u044c\npsql -d postgres -U \u0438\u043c\u044f_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -f create-database-vsk.sql\nunset PGPASSWORD\n```\n\n3. **\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b `.pgpass`:**\n\n- \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0444\u0430\u0439\u043b `.pgpass` \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 600 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439:\n\n```\nhostname:port:database:username:password\n```\n\n\u041f\u0440\u0438\u043c\u0435\u0440:\n\n```\nlocalhost:5432:postgres:postgres:\u0432\u0430\u0448_\u043f\u0430\u0440\u043e\u043b\u044c\n```\n\n- \u0422\u043e\u0433\u0434\u0430 `psql` \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0438 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.\n\n---\n\n\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0432 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\nPGPASSWORD=\u0432\u0430\u0448_\u043f\u0430\u0440\u043e\u043b\u044c psql -d postgres -U postgres -f create-database-vsk.sql\n```\n\n\u041d\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b `.pgpass` \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u043e\u043b\u0435\u0439.\nUser: \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 CREATE DATABASE vsk     WITH     TEMPLATE template0     OWNER = vsk     ENCODING = 'UTF8'     LC_COLLATE = 'ru-RU'     LC_CTYPE = 'ru-RU'     TABLESPACE = pg_default     CONNECTION LIMIT = -1; \u043f\u0430\u0434\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u044e Ru\nAssistant:  \u041e\u0448\u0438\u0431\u043a\u0430\u041e\u0448\u0438\u0431\u043a\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u044e `ru-RU`, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n\n```sql\nCREATE DATABASE vsk\n    WITH\n    TEMPLATE template0\n    OWNER = vsk\n    ENCODING = 'UTF8'\n    LC_COLLATE = 'ru-RU'\n    LC_CTYPE = 'ru-RU'\n    TABLESPACE = pg_default\n    CONNECTION LIMIT = -1;\n```\n\n\u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u0438 `ru-RU`.\n\n### \u041f\u0440\u0438\u0447\u0438\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438:\n\n1. **\u041b\u043e\u043a\u0430\u043b\u044c `ru-RU` \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435**\n\nPostgreSQL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043b\u043e\u043a\u0430\u043b\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 (`LC_COLLATE`) \u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 (`LC_CTYPE`) \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0431\u0430\u0437\u044b. \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430, \u0431\u0443\u0434\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430.\n\n2. **\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043b\u043e\u043a\u0430\u043b\u0438**\n\n\u041b\u043e\u043a\u0430\u043b\u0438 \u0432 UNIX/Linux-\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043a\u0430\u043a `ru_RU.UTF-8` (\u0441 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c, \u043d\u0435 \u0434\u0435\u0444\u0438\u0441\u043e\u043c). \u0412 Windows \u0444\u043e\u0440\u043c\u0430\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u043d\u043e `ru-RU` \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f.\n\n3. **\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u0438, \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c \u0431\u0430\u0437\u044b `template0`**\n\n\u0415\u0441\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d \u0431\u0430\u0437\u044b \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u044b \u0441 `template0` \u0438 \u044d\u0442\u0438\u043c\u0438 \u043b\u043e\u043a\u0430\u043b\u044f\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.\n\n---\n\n### \u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\n\n1. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043b\u043e\u043a\u0430\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435**\n\n\u041d\u0430 Linux:\n\n```bash\nlocale -a | grep -i ru\n```\n\n\u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```\nru_RU.utf8\nru_RU.UTF-8\n```\n\n2. **\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435**\n\n\u0412\u043c\u0435\u0441\u0442\u043e `ru-RU` \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435:\n\n```sql\nLC_COLLATE = 'ru_RU.UTF-8',\nLC_CTYPE = 'ru_RU.UTF-8'\n```\n\n3. **\u0415\u0441\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0451**\n\n\u041d\u0430 Debian/Ubuntu:\n\n```bash\nsudo locale-gen ru_RU.UTF-8\nsudo dpkg-reconfigure locales\n```\n\n4. **\u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432 \u041e\u0421, \u0442\u0430\u043a \u0438 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 \u0441 PostgreSQL**\n\n5. **\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u2014 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0431\u0430\u0437\u044b**\n\n\u0415\u0441\u043b\u0438 `template0` \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c (\u0447\u0430\u0441\u0442\u043e `C` \u0438\u043b\u0438 `POSIX`), \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.\n\n---\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n\n```sql\nCREATE DATABASE vsk\n    WITH\n    TEMPLATE = template0\n    OWNER = vsk\n    ENCODING = 'UTF8'\n    LC_COLLATE = 'ru_RU.UTF-8'\n    LC_CTYPE = 'ru_RU.UTF-8'\n    TABLESPACE = pg_default\n    CONNECTION LIMIT = -1;\n```\n\n---\n\n### \u0420\u0435\u0437\u044e\u043c\u0435\n\n- `ru-RU` \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u043b\u043e\u043a\u0430\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u041e\u0421.\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0430\u0448\u0435\u0439 \u041e\u0421.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 `locale -a`\n- \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e.\n- \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c \u0434\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a `ru_RU.UTF-8`.\n\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u2014 \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u0435 \u0442\u043e\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430.\nUser: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u044c \u0435\u0441\u0438 \u0442\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0430 \u041c\u0430\u043a \u041e\u0421\nAssistant: \u0415\u0441\u043b\u0438 \u043d\u0430 macOS \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u044e `ru-RU` \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 PostgreSQL, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.\n\n---\n\n### \u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0430 macOS?\n\n- \u0412 macOS \u043b\u043e\u043a\u0430\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u044e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `ru_RU.UTF-8`, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0444\u0438\u0441 (`ru-RU`).\n- PostgreSQL \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0431\u0430\u0437\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c \u043a \u0431\u0430\u0437\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043b\u043e\u043a\u0430\u043b\u0438.\n- \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u0430 \u0432 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0430.\n\n---\n\n### \u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0430 macOS\n\n\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nlocale -a | grep ru\n```\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:\n\n```\nru_RU.UTF-8\n```\n\n---\n\n### \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c?\n\n1. **\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u0438 \u0432 SQL-\u0441\u043a\u0440\u0438\u043f\u0442\u0435**\n\n\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 `ru-RU` \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```sql\nLC_COLLATE = 'ru_RU.UTF-8',\nLC_CTYPE = 'ru_RU.UTF-8'\n```\n\n2. **\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043b\u043e\u043a\u0430\u043b\u0438**\n\n- \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0435\u0442 \u2014 macOS \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043b\u043e\u043a\u0430\u043b\u0435\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\n- \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\" \u2192 \"\u042f\u0437\u044b\u043a \u0438 \u0440\u0435\u0433\u0438\u043e\u043d\".\n\n3. **\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 PostgreSQL (\u0435\u0441\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u0438 \u0438\u043b\u0438 \u043c\u0435\u043d\u044f\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438)**\n\n4. **\u0415\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043b\u043e\u043a\u0430\u043b\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:**\n\n```sql\nCREATE DATABASE vsk\nWITH\nTEMPLATE template0\nOWNER = vsk\nENCODING = 'UTF8'\nTABLESPACE = pg_default\nCONNECTION LIMIT = -1;\n```\n\n---\n\n### \u0418\u0442\u043e\u0433\n\n\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e `ru-RU` \u2014 \u044d\u0442\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0430 macOS. \u041d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u0438 `ru_RU.UTF-8`, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 macOS \u0438 PostgreSQL.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0434\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e.\nUser: \u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u0430 export PATH=/Library/PostgreSQL/17/bin:$PATH \u0432 \u041c\u0430\u043a \u041e\u0421 \u0440\u0430\u0441\u043f\u043e\u0440\u0441\u0442\u0440\u0430\u043d\u044f\u043b\u0430\u0441\u044c \u043d\u0430 \u0432\u0441\u0435 \u0441\u0435\u0441\u0441\u0438\u0438\nAssistant: \u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \n\n```bash\nexport PATH=/Library/PostgreSQL/17/bin:$PATH\n```\n\n\u0432 macOS \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u043b\u0430\u0441\u044c \u043d\u0430 **\u0432\u0441\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0441\u0441\u0438\u0438** (\u0442\u043e \u0435\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 PATH \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430), \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0451 \u0432 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 shell, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438.\n\n---\n\n### \u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c\n\n1. **\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435, \u043a\u0430\u043a\u0443\u044e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435**\n\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 macOS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f `zsh`. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\necho $SHELL\n```\n\n- \u0415\u0441\u043b\u0438 \u0432\u044b\u0432\u043e\u0434: `/bin/zsh`, \u0442\u043e \u0432\u0430\u0448\u0430 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u2014 `zsh`.\n- \u0415\u0441\u043b\u0438 `/bin/bash`, \u0442\u043e `bash`.\n\n---\n\n2. **\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438**\n\n- \u0414\u043b\u044f **zsh** (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e macOS 10.15 \u0438 \u043d\u043e\u0432\u0435\u0435):\n\n   \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0444\u0430\u0439\u043b `~/.zshrc`:\n\n   ```bash\n   export PATH=/Library/PostgreSQL/17/bin:$PATH\n   ```\n\n   \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438:\n\n   ```bash\n   echo 'export PATH=/Library/PostgreSQL/17/bin:$PATH' >> ~/.zshrc\n   ```\n\n- \u0414\u043b\u044f **bash**:\n\n   \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0444\u0430\u0439\u043b `~/.bash_profile` \u0438\u043b\u0438 `~/.bashrc` (\u0447\u0430\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f `~/.bash_profile`):\n\n   ```bash\n   export PATH=/Library/PostgreSQL/17/bin:$PATH\n   ```\n\n   \u041a\u043e\u043c\u0430\u043d\u0434\u0430:\n\n   ```bash\n   echo 'export PATH=/Library/PostgreSQL/17/bin:$PATH' >> ~/.bash_profile\n   ```\n\n- \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043e\u0431\u0430 \u0444\u0430\u0439\u043b\u0430.\n\n---\n\n3. **\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f**\n\n\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443 \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n- \u0434\u043b\u044f zsh:\n\n```bash\nsource ~/.zshrc\n```\n\n- \u0434\u043b\u044f bash:\n\n```bash\nsource ~/.bash_profile\n```\n\n---\n\n4. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435**\n\n\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:\n\n```bash\necho $PATH\n```\n\n\u0418 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e `/Library/PostgreSQL/17/bin` \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 PATH.\n\n---\n\n### \u0412\u0430\u0436\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435\n\n- \u0414\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0445 \u0432\u043d\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437 Finder), \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f PATH \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439. \u0422\u0430\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0430\u0447\u0435 (\u0447\u0435\u0440\u0435\u0437 `launchctl` \u0438 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0434\u0435\u043c\u043e\u043d\u043e\u0432). \u041d\u043e \u0434\u043b\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.\n\n---\n\n### \u041a\u0440\u0430\u0442\u043a\u043e\n\n```bash\necho 'export PATH=/Library/PostgreSQL/17/bin:$PATH' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n\u0438\u043b\u0438\n\n```bash\necho 'export PATH=/Library/PostgreSQL/17/bin:$PATH' >> ~/.bash_profile\nsource ~/.bash_profile\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438!\nUser: \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u043a\u043c\u0430\u043d\u0434\u0443 \u0432 \u041c\u0430\u043a \u043e\u0441 psql.exe -U postgres -p 5432 vsk < \"C:\\\u043f\u0443\u0442\u044c-\u0434\u043e-\u0431\u0435\u043a\u0430\u043f\u0430\\vsk_demo_vm_vsk_erp_axmor_nsk.sql\"\nAssistant: \u0412 macOS \u043d\u0435\u0442 `psql.exe` \u2014 \u044d\u0442\u043e Windows-\u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u044b `psql`. \u041d\u0430 macOS \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f `psql`.\n\n\u0410\u043d\u0430\u043b\u043e\u0433 \u0432\u0430\u0448\u0435\u0439 Windows-\u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n\n```bash\npsql -U postgres -p 5432 -d vsk -f \"/\u043f\u0443\u0442\u044c-\u0434\u043e-\u0431\u044d\u043a\u0430\u043f\u0430/vsk_demo_vm_vsk_erp_axmor_nsk.sql\"\n```\n\n\u041b\u0438\u0431\u043e \u0441 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0432\u043e\u0434\u0430 (\u043a\u0430\u043a \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435):\n\n```bash\npsql -U postgres -p 5432 -d vsk < \"/\u043f\u0443\u0442\u044c-\u0434\u043e-\u0431\u044d\u043a\u0430\u043f\u0430/vsk_demo_vm_vsk_erp_axmor_nsk.sql\"\n```\n\n---\n\n### \u0420\u0430\u0437\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:\n\n- `-U postgres` \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\n- `-p 5432` \u2014 \u043f\u043e\u0440\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\n- `-d vsk` \u2014 \u0438\u043c\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\n- `<` \u2014 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0432\u043e\u0434\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 (\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442)\n- `-f /\u043f\u0443\u0442\u044c/\u043a/\u0444\u0430\u0439\u043b\u0443.sql` \u2014 \u0437\u0430\u043f\u0443\u0441\u043a SQL-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e\n\n---\n\n### \u0412\u0430\u0436\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:\n\n1. \u041f\u0443\u0442\u0438 \u0432 macOS \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043a\u0430\u043a `/Users/\u0438\u043c\u044f_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f/...`, \u0430 \u043d\u0435 \u0441 \u0431\u0443\u043a\u0432\u043e\u0439 \u0434\u0438\u0441\u043a\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u043b\u044d\u0448\u0430\u043c\u0438 `\\`.  \n2. \u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u043b\u044d\u0448\u0438 \u0432 \u043f\u0443\u0442\u044f\u0445 Windows \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0440\u044f\u043c\u044b\u0435 \u0441\u043b\u044d\u0448\u0438 `/`.  \n3. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0443\u0442\u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u044b \u2014 \u0432\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 `\"\"` \u0438\u043b\u0438 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b.\n\n---\n\n### \u041f\u0440\u0438\u043c\u0435\u0440:\n\n\u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b\" \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 Mac:\n\n```bash\npsql -U postgres -p 5432 -d vsk -f \"/Users/\u0438\u043c\u044f_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f/Documents/vsk_demo_vm_vsk_erp_axmor_nsk.sql\"\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:\n\n```bash\nPGPASSWORD=\u0432\u0430\u0448_\u043f\u0430\u0440\u043e\u043b\u044c psql -U postgres -p 5432 -d vsk -f \"/\u043f\u0443\u0442\u044c/\u043a/\u0444\u0430\u0439\u043b\u0443.sql\"\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c \u2014 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435, \u043f\u043e\u043c\u043e\u0433\u0443 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443.\nUser: \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 invalid input syntax for type timestamp: \"202\" CONTEXT:  COPY raw_geo_data, line 8966782, column timestamp: \"202\"\nAssistant: \u041e\u0448\u0438\u0431\u043a\u0430 \n\n```\ninvalid input syntax for type timestamp: \"202\"\nCONTEXT: COPY raw_geo_data, line 8966782, column timestamp: \"202\"\n```\n\n\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 `raw_geo_data` \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b `COPY` \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 8966782 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0441 \u0442\u0438\u043f\u043e\u043c `timestamp` \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `\"202\"`, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u043a\u0430.\n\n---\n\n### \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438:\n\n1. **\u041f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d \u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 CSV/SQL-\u0444\u0430\u0439\u043b**\n\n   - \u0412 \u0441\u0442\u0440\u043e\u043a\u0435 \u21168966782 \u0432 \u0444\u0430\u0439\u043b\u0435-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u043f\u043e\u043b\u0435 \u0441 \u0442\u0430\u0439\u043c\u0441\u0442\u0430\u043c\u043f\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u043d\u0430\u043f\u0440. \u043f\u0440\u043e\u0441\u0442\u043e \"202\" \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\n   \n2. **\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442**\n\n   - \u0415\u0441\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u043f\u043e\u043b\u0435 `timestamp` \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a.\n   - \u041f\u0440\u0438\u043c\u0435\u0440: \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u0430\u0432\u044b\u0447\u0435\u043a, \u043b\u0438\u0448\u043d\u044f\u044f \u0437\u0430\u043f\u044f\u0442\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0438.\n\n3. **\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f**\n\n   - \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0430, \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 timestamp \u0432\u043e\u0432\u0441\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043e.\n\n4. **\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445**\n\n   - \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0438 \u043f\u043e\u043b\u0435 timestamp \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.\n\n---\n\n### \u041a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c:\n\n1. **\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0444\u0430\u0439\u043b\u0430:**\n\n   - \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0432\u0430\u0448 \u0444\u0430\u0439\u043b (CSV, SQL \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a) \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u043e\u043a\u043e\u043b\u043e 8966782.\n   - \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 timestamp \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 timestamp, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n     ```\n     2023-06-30 15:12:45\n     2023-06-30T15:12:45Z\n     ```\n  \n2. **\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u0430/\u0432\u0440\u0435\u043c\u044f**\n\n   - PostgreSQL \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 TIMESTAMP \u0432 ISO-\u0444\u043e\u0440\u043c\u0430\u0442\u0435 (YYYY-MM-DD HH:MI:SS).\n   - \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u044d\u0442\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 (\u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438).\n\n3. **\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0443\u043a\u0430\u0437\u0430\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 COPY**\n\n   \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c - \u0437\u0430\u043f\u044f\u0442\u0430\u044f:\n\n   ```sql\n   COPY raw_geo_data FROM '/path/to/file.csv' CSV DELIMITER ',' HEADER;\n   ```\n\n4. **\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 \u0444\u0430\u0439\u043b\u0430**\n\n   \u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0438\u0441\u043f\u043e\u0440\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u043e\u043a.\n\n5. **\u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043e**\n\n   \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0444\u0430\u0439\u043b \u043e\u0431\u0440\u0435\u0437\u0430\u043d \u0438\u043b\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.\n\n---\n\n### \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438:\n\n- \u041c\u043e\u0436\u043d\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 (Linux/macOS):\n\n  ```bash\n  sed -n '8966782p' filename.csv\n  ```\n\n  \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f.\n\n- \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043c\u043e\u0436\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:\n\n  ```sql\n  COPY raw_geo_data FROM '/path/to/file.csv' CSV DELIMITER ',' HEADER LOG ERRORS;\n  ```\n\n  (\u0435\u0441\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d `pgBadger` \u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043b\u043e\u0433\u043e\u0432 \u043e\u0448\u0438\u0431\u043e\u043a)\n\n- \u041b\u0438\u0431\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u044f\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.\n\n---\n\n### \u041a\u0440\u0430\u0442\u043a\u043e:\n\n\u041e\u0448\u0438\u0431\u043a\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0442\u0438\u043f\u0430 timestamp \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `\"202\"` \u2014 \u043b\u0438\u0431\u043e \u0444\u0430\u0439\u043b \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d, \u043b\u0438\u0431\u043e \u0432 \u043d\u0451\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c, \u043b\u0438\u0431\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u043a.  \n\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441\u0442\u0440\u043e\u043a\u0443 8966782.\nUser: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430. \u0432\u0442\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 10612409\t56\t2020-08-10 10:16:52\t43\t33.53\t0.00999999999999801\t\\N\t\\N\tf\tf\t\\N\t\\N\t\\N\t\\N \nAssistant: \u0421\u0442\u0440\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043f\u0440\u0438\u0432\u0435\u043b\u0438:\n\n```\n10612409\t56\t2020-08-10 10:16:52\t43\t33.53\t0.00999999999999801\t\\N\t\\N\tf\tf\t\\N\t\\N\t\\N\t\\N\n```\n\n\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 **\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438** (`\\t`). \u041f\u043e\u043b\u0435 \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u0435\u0442\u043a\u043e\u0439 \u2014 `2020-08-10 10:16:52` \u2014 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u0434\u043b\u044f \u0442\u0438\u043f\u0430 `timestamp`.\n\n---\n\n### \u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0442\u0430\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 PostgreSQL \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e COPY\n\n1. **\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c**\n\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 `COPY` \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 **\u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438** (CSV \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e). \u0412 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c `\\t`.\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n\n```sql\nCOPY raw_geo_data FROM '/path/to/file.txt' WITH (FORMAT text, DELIMITER E'\\t', NULL '\\N');\n```\n\n- `FORMAT text` \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)\n- `DELIMITER E'\\t'` \u2014 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f, \u0433\u0434\u0435 `E'\\t'` \u2014 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438\n- `NULL '\\N'` \u2014 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f `\\N` \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 NULL\n\n\u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c `.csv`, \u043d\u043e \u0432 \u043d\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f, \u0442\u043e\u0436\u0435 \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0435\u043b\u0438\u043c\u0438\u0442\u0435\u0440.\n\n---\n\n2. **\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432**\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 `raw_geo_data` \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0447\u0442\u043e \u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 14).\n\n---\n\n3. **\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 timestamp**\n\n\u0412\u0430\u0448 timestamp (`2020-08-10 10:16:52`) \u2014 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439, \u0438 PostgreSQL \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.\n\n---\n\n4. **\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 NULL \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439**\n\n\u0412 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 `\\N` \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u0441\u0442\u044b\u0445 (NULL) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043b\u044f `COPY`.\n\n\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `NULL '\\N'` \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 `COPY`, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a NULL, \u0430 \u043d\u0435 \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430 `\\N`.\n\n---\n\n### \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 COPY \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:\n\n```sql\nCOPY raw_geo_data FROM '/path/to/file.txt' WITH (FORMAT text, DELIMITER E'\\t', NULL '\\N');\n```\n\n\u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 psql \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0435 \u0444\u0430\u0439\u043b \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430:\n\n```bash\n\\copy raw_geo_data FROM '/path/to/file.txt' WITH (FORMAT text, DELIMITER E'\\t', NULL '\\N');\n```\n\n---\n\n### \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 CSV \u0444\u043e\u0440\u043c\u0430\u0442\n\n\u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0444\u0430\u0439\u043b CSV, \u043d\u043e \u0441 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0435\u0439 \u043a\u0430\u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:\n\n```sql\nCOPY raw_geo_data FROM '/path/to/file.csv' WITH (FORMAT csv, DELIMITER E'\\t', NULL '\\N');\n```\n\n---\n\n### \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\n\n\u041e\u0448\u0438\u0431\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0432\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c, \u0438\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e `\\N` \u2014 \u044d\u0442\u043e NULL, \u0432\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0447\u0435\u0433\u043e PostgreSQL \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u044f, \u0438 \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 timestamp \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430.\n\n**\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 COPY, \u0443\u043a\u0430\u0437\u0430\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:**\n\n- \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c (\u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f `\\t`)\n- \u0423\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f NULL \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (`NULL '\\N'`)\n\n\u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 timestamp \u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438.\n\n\u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u2014 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c!\nUser: \u0414\u0430\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0432\u043e\u0441\u0442\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u044d\u043a\u0430\u043f psql -U postgres -p 5432 vsk < \"/Users/pavelgaliguzov/Downloads/vsk_demo_vm_vsk_erp_axmor_nsk-2025_05_12_15_48_32-dump.sql\"\nAssistant: \u041e\u0448\u0438\u0431\u043a\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u0432\u0432\u043e\u0434\u043e\u043c \u0432 \u043f\u043e\u043b\u0435 \u0442\u0438\u043f\u0430 `timestamp` \u043f\u0440\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043c\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n\n```bash\npsql -U postgres -p 5432 vsk < \"/Users/pavelgaliguzov/Downloads/vsk_demo_vm_vsk_erp_axmor_nsk-2025_05_12_15_48_32-dump.sql\"\n```\n\n\u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u0441\u0430\u043c\u043e\u043c SQL \u0434\u0430\u043c\u043f\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u0435\u0442\u043a\u043e\u0439 \u043d\u0435 \u0432 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.\n\n---\n\n### \u0427\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c:\n\n1. **\u0414\u0430\u043c\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435**\n\n   - \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0431\u044d\u043a\u0430\u043f \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0431\u044b\u043b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0438 \u043f\u043e\u043b\u044f \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u044b.\n   - \u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 SQL-\u0444\u0430\u0439\u043b\u0430.\n\n2. **\u0414\u0430\u043c\u043f \u043d\u0435 SQL-\u0441\u043a\u0440\u0438\u043f\u0442, \u0430 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442**\n\n   - \u0415\u0441\u043b\u0438 \u0434\u0430\u043c\u043f \u0441\u0434\u0435\u043b\u0430\u043d \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 `pg_dump` \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 (custom \u0438\u043b\u0438 directory), \u0434\u043b\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 `psql`, \u0430 \u0447\u0435\u0440\u0435\u0437 `pg_restore`.\n   - \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0434\u0430\u043c\u043f \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 SQL \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438.\n\n   \u0414\u043b\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0431\u044d\u043a\u0430\u043f\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:\n\n   ```bash\n   pg_restore -U postgres -p 5432 -d vsk \"/Users/pavelgaliguzov/Downloads/vsk_demo_vm_vsk_erp_axmor_nsk-2025_05_12_15_48_32-dump.sql\"\n   ```\n\n3. **\u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 `.sql` \u0444\u0430\u0439\u043b \u2014 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443**\n\n   - \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435.\n   - \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f `timestamp` (\u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e `202` \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0435, \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u0432 \u043e\u0448\u0438\u0431\u043a\u0435).\n   - \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.\n\n4. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u0439 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435**\n\n   - \u041d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0439 PostgreSQL \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c.\n   - \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 \u0444\u0430\u0439\u043b\u0430 \u0434\u0430\u043c\u043f\u0430 (\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e UTF-8).\n\n5. **\u0415\u0441\u043b\u0438 \u0434\u0430\u043c\u043f \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439**\n\n   - \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044f\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0447\u0430\u0441\u0442\u0438).\n   - \u041b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 `pg_restore` \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0442 plain SQL.\n\n---\n\n### \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438\n\n- \u0415\u0441\u043b\u0438 \u0434\u0430\u043c\u043f \u0441\u0434\u0435\u043b\u0430\u043d \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 plain SQL (\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439), \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 `psql`.\n- \u0415\u0441\u043b\u0438 \u0434\u0430\u043c\u043f \u0441\u0434\u0435\u043b\u0430\u043d \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 `-Fc` \u0438\u043b\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `pg_restore`.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432 SQL-\u0434\u0430\u043c\u043f\u0435 \u043d\u0435\u0442 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u0432 \u043f\u043e\u043b\u044f timestamp.\n- \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438.\n\n---\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0434\u0430\u043c\u043f\u0430:\n\n```bash\npg_restore -U postgres -p 5432 -d vsk \"/Users/pavelgaliguzov/Downloads/vsk_demo_vm_vsk_erp_axmor_nsk-2025_05_12_15_48_32-dump.sql\"\n```\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437 plain SQL:\n\n```bash\npsql -U postgres -p 5432 -d vsk -f \"/Users/pavelgaliguzov/Downloads/vsk_demo_vm_vsk_erp_axmor_nsk-2025_05_12_15_48_32-dump.sql\"\n```\n\n\u0415\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u2014 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438, \u043a\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0430\u043c\u043f\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0431\u043e\u0439, \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0445 (\u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0431\u044d\u043a\u0430\u043f).\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0434\u0430\u043c\u043f\u0430 \u2014 \u043f\u043e\u043c\u043e\u0433\u0443 \u0441 \u0438\u0445 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c.\nUser: \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430: vskerpweb\\server\\src\\Volna.App\\Properties\\launchSettings.json \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 Rider\nAssistant: \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f) \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Rider \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b `launchSettings.json` (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 .NET Core/ASP.NET Core \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445), \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438:\n\n---\n\n### \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 `launchSettings.json`\n\n\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043e\u0431\u044b\u0447\u043d\u043e \u043b\u0435\u0436\u0438\u0442 \u043f\u043e \u043f\u0443\u0442\u0438:\n\n```\n<\u043f\u0443\u0442\u044c_\u043a_\u043f\u0440\u043e\u0435\u043a\u0442\u0443>/Properties/launchSettings.json\n```\n\n\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, URL'\u044b \u0438 \u043f\u0440.\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e:\n\n```json\n{\n  \"profiles\": {\n    \"IIS Express\": {\n      \"commandName\": \"IISExpress\",\n      \"launchBrowser\": true,\n      \"launchUrl\": \"weatherforecast\",\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      }\n    },\n    \"Volna.App\": {\n      \"commandName\": \"Project\",\n      \"commandLineArgs\": \"--some-param value\",\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      },\n      \"applicationUrl\": \"https://localhost:5001;http://localhost:5000\"\n    }\n  }\n}\n```\n\n---\n\n### \u041a\u0430\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c `launchSettings.json` \u0432 Rider\n\n1. **\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b `launchSettings.json`**\n\n   - \u0412 Rider \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 `vskerpweb\\server\\src\\Volna.App\\Properties\\launchSettings.json`\n   - \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b, \u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 JSON.\n\n2. **\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430**\n\n   - \u0412 \u0441\u0435\u043a\u0446\u0438\u0438 `\"profiles\"` \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `Volna.App`).\n   - \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `commandLineArgs`, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430.\n   - \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u2014 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 `environmentVariables`.\n\n   \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n   ```json\n   \"Volna.App\": {\n     \"commandName\": \"Project\",\n     \"commandLineArgs\": \"--myParam1 value1 --flagX\",\n     \"environmentVariables\": {\n       \"ASPNETCORE_ENVIRONMENT\": \"Development\",\n       \"MY_CUSTOM_VAR\": \"123\"\n     },\n     \"applicationUrl\": \"https://localhost:5001;http://localhost:5000\"\n   }\n   ```\n\n3. **\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f**\n\n   - \u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 (Cmd+S).\n\n---\n\n### \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 Run/Debug \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 Rider\n\n`launchSettings.json` \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 .NET \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u043e Rider \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0438\u0431\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:\n\n1. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Run/Debug Configurations (`Run` \u2192 `Edit Configurations...`).\n\n2. \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (`.NET Launch Settings Profile` \u0438\u043b\u0438 `.NET Project`).\n\n3. \u0412 \u043f\u043e\u043b\u0435 **Program arguments** (\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b) \u0432\u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.\n\n4. \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 **Environment variables** \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.\n\n5. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.\n\n\u042d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 `launchSettings.json`.\n\n---\n\n### \u041a\u0440\u0430\u0442\u043a\u043e\n\n- \u0414\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `commandLineArgs` \u0438 `environmentVariables` \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435 `launchSettings.json`.\n- \u0414\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e/\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Run/Debug \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Rider.\n  \n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c.\nUser: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b ALTER DATABASE vsk_demo RENAME TO vsk \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u0442\u0435\u043c\u043c \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f\nAssistant: \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\n\n```sql\nALTER DATABASE vsk_demo RENAME TO vsk;\n```\n\n\u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 PostgreSQL. \u041e\u043d \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0435\u0441\u043b\u0438 \u043a \u043d\u0435\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b.\n\n---\n\n## \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430?\n\n- PostgreSQL \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043a\u0430 \u043a\u0442\u043e-\u0442\u043e (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0430\u0441) \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u043d\u0435\u0439 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0444\u043e\u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 \u044d\u0442\u0443 \u0431\u0430\u0437\u0443.\n- \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `ALTER DATABASE ... RENAME` \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u0435\u0441\u0441\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0430\u044f \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435, **\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043a \u0431\u0430\u0437\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c** (\u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u0443, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b).\n\n---\n\n## \u041a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443\n\n### 1. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043a \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0430\u0437\u0435\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043a \u0431\u0430\u0437\u0435 `postgres` \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e\u043c\u0443 \u043d\u0435\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0441 \u0432\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u043e\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443:\n\n```bash\npsql -U \u0432\u0430\u0448_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c -d postgres\n```\n\n(\u0418\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043a\u0440\u043e\u043c\u0435 `vsk_demo`).\n\n---\n\n### 2. \u0423\u0431\u0435\u0439\u0442\u0435 \u0432\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u0435\u0441\u0441\u0438\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a \u0431\u0430\u0437\u0435 `vsk_demo`\n\n\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043a \u0431\u0430\u0437\u0435:\n\n```sql\nSELECT pg_terminate_backend(pid)\nFROM pg_stat_activity\nWHERE datname = 'vsk_demo'\n  AND pid <> pg_backend_pid();\n```\n\n- \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0431\u0430\u0437\u0435, \u043a\u0440\u043e\u043c\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438.\n- \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u0431\u0430\u0437\u0435 `vsk_demo`, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0431\u0430\u0437\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `postgres`), \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f.\n\n---\n\n### 3. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u044b\n\n\u041a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```sql\nALTER DATABASE vsk_demo RENAME TO vsk;\n```\n\n---\n\n### 4. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e: \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 \u0438\u0437-\u0437\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441\u043d\u044f\u0442\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0444\u043e\u043d\u043e\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\n\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0431\u0430\u0437\u0443:\n\n```sql\nSELECT pid, usename, application_name, client_addr, state, query_start, query\nFROM pg_stat_activity\nWHERE datname = 'vsk_demo';\n```\n\n- \u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b/\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\n- \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u043e\u0438\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043a \u0431\u0430\u0437\u0435.\n\n---\n\n## \u0418\u0442\u043e\u0433:\n\n1. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043a \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0430\u0437\u0435 (\u043e\u0431\u044b\u0447\u043d\u043e `postgres`).\n2. \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0432\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0431\u0430\u0437\u043e\u0439 `vsk_demo`.\n3. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434!\nUser: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 launchSettings \"Volna.App\": {             \"commandName\": \"Project\",             \"commandLineArgs\": \"--urls http://*:5000\",             \"launchBrowser\": true,             \"launchUrl\": \"http://localhost:5000/swagger\",             \"environmentVariables\": {                 \"ASPNETCORE_ENVIRONMENT\": \"Development\"             },             \"applicationUrl\": \"\"         }\nAssistant: \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 `launchSettings.json` \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c `\"Volna.App\"` \u0434\u043b\u044f .NET Core/ASP.NET Core \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:\n\n```json\n\"Volna.App\": {\n    \"commandName\": \"Project\",\n    \"commandLineArgs\": \"--urls http://*:5000\",\n    \"launchBrowser\": true,\n    \"launchUrl\": \"http://localhost:5000/swagger\",\n    \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n    },\n    \"applicationUrl\": \"\"\n}\n```\n\n---\n\n### \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f:\n\n- `\"commandName\": \"Project\"`  \n  \u041e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 IIS Express).\n\n- `\"commandLineArgs\": \"--urls http://*:5000\"`  \n  \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435.  \n  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `--urls http://*:5000` \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445 (`*`) \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 5000.\n\n- `\"launchBrowser\": true`  \n  \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (IDE) \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440.\n\n- `\"launchUrl\": \"http://localhost:5000/swagger\"`  \n  URL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041e\u0431\u044b\u0447\u043d\u043e `/swagger` \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e Swagger UI \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f API.\n\n- `\"environmentVariables\": { \"ASPNETCORE_ENVIRONMENT\": \"Development\" }`  \n  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f `ASPNETCORE_ENVIRONMENT` \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `Development`. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0434\u0440.).\n\n- `\"applicationUrl\": \"\"`  \n  \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u0435 \u043f\u0443\u0441\u0442\u043e\u0435; \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f ASP.NET Core \u0437\u0430\u0434\u0430\u044e\u0442 URL'\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0417\u0434\u0435\u0441\u044c, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 `commandLineArgs`.\n\n---\n\n### \u0412 \u0441\u0443\u043c\u043c\u0435:\n\n\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 `Volna.App` \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 5000 \u0441\u043e \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Swagger UI (`http://localhost:5000/swagger`). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (`Development`).\nUser: \u041a\u0430\u043a \u0440\u0435\u0448\u0438\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 NET \u043f\u0440\u0438\u043b\u043e\u0434\u0435\u043d\u0438\u044f Failed to bind to address http://[::]:5000: address already in use.  ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use\nAssistant: \u041e\u0448\u0438\u0431\u043a\u0430 \n\n```\nFailed to bind to address http://[::]:5000: address already in use.\nMicrosoft.AspNetCore.Connections.AddressInUseException: Address already in use\n```\n\n\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0440\u0442 5000 \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c, \u0438 ASP.NET Core \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \"\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c\" \u043a \u043d\u0435\u043c\u0443 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u043e\u043a\u0435\u0442.\n\n---\n\n## \u041a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443\n\n### 1. \u041d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u044f\u0442 \u043f\u043e\u0440\u0442\u043e\u043c 5000\n\n\u0412 macOS \u0438\u043b\u0438 Linux \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:\n\n```bash\nlsof -i :5000\n```\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430:\n\n```\nCOMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME\ndotnet   1234 user   20u  IPv6 0x123456789abcdef0      0t0  TCP *:5000 (LISTEN)\n```\n\n- PID \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u0442.\n\n---\n\n### 2. \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 5000\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nkill 1234\n```\n\n\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f, \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e:\n\n```bash\nkill -9 1234\n```\n\n---\n\n### 3. \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\n\n\u041f\u043e\u0441\u043b\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.\n\n---\n\n### 4. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\n\n\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0440\u0442, \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430.\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043f\u043e\u0440\u0442 5001:\n\n- \u0412 `launchSettings.json` \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435\n\n```json\n\"commandLineArgs\": \"--urls http://*:5000\",\n```\n\n\u043d\u0430\n\n```json\n\"commandLineArgs\": \"--urls http://*:5001\",\n```\n\n- \u0418\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 `Program.cs`) \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u0442:\n\n```csharp\nwebBuilder.UseUrls(\"http://*:5001\");\n```\n\n- \u041b\u0438\u0431\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440:\n\n```bash\ndotnet run --urls http://*:5001\n```\n\n---\n\n### 5. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043d\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\n\n\u0418\u043d\u043e\u0433\u0434\u0430 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\n\n---\n\n## \u0418\u0442\u043e\u0433\u043e\n\n- \u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0440\u0442 \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442.\n- \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0440\u0442\u0443 (`lsof -i :5000`).\n- \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u0442.\n- \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 `launchSettings.json` \u0438\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0435, \u0434\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u0442\u044c!\nUser: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u043f\u043e\u0440\u0442 5000 \u0432  \u041c\u0430\u043a \u043e\u0441 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e ControlCe\nAssistant: \u0415\u0441\u043b\u0438 \u0432 macOS \u043f\u043e\u0440\u0442 5000 \u0437\u0430\u043d\u044f\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c `ControlCe` (\u0438\u043b\u0438 \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0438\u043b\u0438 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f), \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442, \u0438 \u0432\u0430\u0448\u0435 .NET \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0435\u0433\u043e \u0437\u0430\u043d\u044f\u0442\u044c.\n\n---\n\n## \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438\n\n### 1. \u0423\u0437\u043d\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 5000\n\n\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:\n\n```bash\nlsof -i :5000\n```\n\n\u042d\u0442\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438:\n\n```\nCOMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME\nControlCe  1234   user   12u  IPv4  0x...       0t0  TCP *:5000 (LISTEN)\n```\n\n\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0448\u0438\u0442\u0435 PID \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.\n\n### 2. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e PID\n\n\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nps -p 1234 -o pid,comm,args\n```\n\n\u0433\u0434\u0435 `1234` \u2014 PID, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438.\n\n---\n\n### 3. \u0420\u0435\u0448\u0438\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\n\n- \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0438\u043b\u0438 \u0432\u0430\u0436\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u2014 \u0441\u0442\u0430\u0440\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 5001).\n- \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0432\u0430\u0448\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c:\n\n  ```bash\n  kill 1234\n  ```\n\n  \u0415\u0441\u043b\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f:\n\n  ```bash\n  kill -9 1234\n  ```\n\n- \u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c macOS, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u00ab\u0437\u0430\u0432\u0438\u0441\u00bb.\n\n---\n\n### 4. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u0442 \u0432\u0430\u0448\u0435\u0433\u043e .NET \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\n\n\u0415\u0441\u043b\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0440\u0442 5000, \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443.\n\n\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e:\n\n- \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 `launchSettings.json` \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 `commandLineArgs`, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n  ```json\n  \"commandLineArgs\": \"--urls http://*:5001\"\n  ```\n\n- \u0418\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435:\n\n  ```bash\n  dotnet run --urls http://*:5001\n  ```\n\n- \u0418\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435:\n\n  ```csharp\n  webBuilder.UseUrls(\"http://*:5001\");\n  ```\n\n---\n\n### 5. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0441\u043b\u0443\u0436\u0431\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0440\u0442 5000\n\n\u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u0440\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043d\u044f\u0442\u044c:\n\n- **Docker** \u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u044b.\n- **VPN \u043a\u043b\u0438\u0435\u043d\u0442\u044b, \u043f\u0440\u043e\u043a\u0441\u0438, \u0434\u0440\u0443\u0433\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b**.\n- **macOS system services** \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, AirPlay, Bonjour.\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u0438 \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u2014 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435.\n\n---\n\n## \u0418\u0442\u043e\u0433\n\n- \u0423\u0437\u043d\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 5000 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e `lsof` \u0438 `ps`.\n- \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0432\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u2014 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.\n- \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u0442.\n- \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u044b > 1024.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 `lsof -i :5000`, \u043f\u043e\u043c\u043e\u0433\u0443 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\nUser: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 controlCenter\nAssistant: \u0415\u0441\u043b\u0438 \u043d\u0430 macOS \u043f\u043e\u0440\u0442 5000 \u0437\u0430\u043d\u044f\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c `controlCenter` (\u0438\u043b\u0438 Control Center), \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 macOS \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u041f\u041e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0431\u0435\u0437 \u0440\u0438\u0441\u043a\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\n\n---\n\n## \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438\n\n### 1. **\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0440\u0442**\n\n- \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:\n\n  ```bash\n  lsof -i :5000\n  ```\n\n- \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 `COMMAND` \u0438 `PID`. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e `controlCenter` \u0431\u0435\u0437 \u044f\u0432\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u2014 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a.\n\n- \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a:\n\n  ```bash\n  ps -p <PID> -o pid,ppid,user,args\n  ```\n\n---\n\n### 2. **\u041d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0439\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b**\n\n- \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 macOS (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `controlCenter` \u2014 \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u0442\u0440 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 macOS), \u0443\u0431\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0441\u0431\u043e\u044f\u043c.\n\n---\n\n### 3. **\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u043e\u0440\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f**\n\n\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0440\u0442 5000 \u0437\u0430\u043d\u044f\u0442 \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0430\u0448\u0435 .NET \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u0442\u0443.\n\n#### \u041a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u0442:\n\n- \u0412 \u0444\u0430\u0439\u043b\u0435 `launchSettings.json`, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 `Volna.App`:\n\n  ```json\n  \"commandLineArgs\": \"--urls http://*:5001\"\n  ```\n\n- \u0418\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 `Program.cs` / `Startup.cs`:\n\n  ```csharp\n  webBuilder.UseUrls(\"http://*:5001\");\n  ```\n\n- \u0418\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n\n  ```bash\n  dotnet run --urls http://*:5001\n  ```\n\n---\n\n### 4. **\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u0442**\n\n\u041f\u043e\u0440\u0442\u044b \u0432\u044b\u0448\u0435 1024 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 5001, 6000, \u0438\u043b\u0438 \u043b\u044e\u0431\u044b\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435) \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.\n\n---\n\n### 5. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u0438 \u043f\u043e\u0440\u0442 Docker \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u041f\u041e**\n\n\u0418\u043d\u043e\u0433\u0434\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b (Docker, \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b) \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u044b, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 macOS system control center.\n\n---\n\n## \u0420\u0435\u0437\u044e\u043c\u0435\n\n- **\u041d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 `controlCenter`**, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.\n- **\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u043e\u0440\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439** (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 5001).\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043f\u043e\u0440\u0442\u0430\u043c.\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0430 \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0440\u0442\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c Mac. \u041f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u0442\u044c!\nUser: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434   s3_master:     image: chrislusf/seaweedfs     ports:       - 18080:18080       - 8080:8080       - 8888:8888       - 8333:8333       - 9333:9333       - 18888:18888     command: 'server -s3 -s3.config=/etc/seaweedfs/s3/config.json -dir=/etc/seaweedfs/volume -filer -filer.port=8888 -filer.port.grpc=18888'     volumes:       - ./seaweedfs_master:/etc/seaweedfs     networks:       - s3_connection\nAssistant: \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c Docker Compose \u0444\u0430\u0439\u043b\u0430 (\u0438\u043b\u0438 \u043f\u043e\u0445\u043e\u0436\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438), \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u0435\u0440\u0432\u0438\u0441 `s3_master`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u043e\u0431\u0440\u0430\u0437\u043e\u043c `chrislusf/seaweedfs`. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043a\u0430\u0436\u0434\u0443\u044e \u0447\u0430\u0441\u0442\u044c:\n\n```yaml\ns3_master:\n  image: chrislusf/seaweedfs\n  ports:\n    - 18080:18080\n    - 8080:8080\n    - 8888:8888\n    - 8333:8333\n    - 9333:9333\n    - 18888:18888\n  command: 'server -s3 -s3.config=/etc/seaweedfs/s3/config.json -dir=/etc/seaweedfs/volume -filer -filer.port=8888 -filer.port.grpc=18888'\n  volumes:\n    - ./seaweedfs_master:/etc/seaweedfs\n  networks:\n    - s3_connection\n```\n\n---\n\n### \u0427\u0442\u043e \u044d\u0442\u043e?\n\n\u042d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u043b\u0443\u0436\u0431\u044b **SeaweedFS** \u2014 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c).\n\n---\n\n### \u0420\u0430\u0437\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432\n\n- **`image: chrislusf/seaweedfs`**  \n  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Docker-\u043e\u0431\u0440\u0430\u0437 SeaweedFS \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f `chrislusf`.\n\n- **`ports`**  \n  \u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u043e\u0432 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043d\u0430 \u0445\u043e\u0441\u0442-\u043c\u0430\u0448\u0438\u043d\u0443:  \n  - 18080 \u2014 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 SeaweedFS (Master UI)  \n  - 8080, 8333, 9333 \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0438 data-\u043f\u043e\u0440\u0442\u044b SeaweedFS (\u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 volume servers, weed filer \u0438 \u0434\u0440.)  \n  - 8888 \u2014 \u043f\u043e\u0440\u0442 filer HTTP API  \n  - 18888 \u2014 \u043f\u043e\u0440\u0442 filer gRPC API  \n\n  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0443 \u043f\u043e\u0440\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0445\u043e\u0441\u0442\u0430 \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.\n\n- **`command`**  \n  \u041a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:  \n  - `server` \u2014 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430 SeaweedFS \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 all-in-one (\u043c\u0430\u0441\u0442\u0435\u0440 + volume + filer).  \n  - `-s3` \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 (\u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 Amazon S3 API).  \n  - `-s3.config=/etc/seaweedfs/s3/config.json` \u2014 \u043f\u0443\u0442\u044c \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 S3.  \n  - `-dir=/etc/seaweedfs/volume` \u2014 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.  \n  - `-filer` \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 filer (\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0435 API \u043f\u043e\u0432\u0435\u0440\u0445 SeaweedFS).  \n  - `-filer.port=8888` \u2014 HTTP \u043f\u043e\u0440\u0442 \u0434\u043b\u044f filer.  \n  - `-filer.port.grpc=18888` \u2014 gRPC \u043f\u043e\u0440\u0442 \u0434\u043b\u044f filer.\n\n- **`volumes`**  \n  \u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 `./seaweedfs_master` \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432 \u043f\u0443\u0442\u044c `/etc/seaweedfs`.  \n  \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 S3 \u0438 filer \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0438\u0445 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.\n\n- **`networks`**  \n  \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0435\u0442\u0438 Docker \u0441 \u0438\u043c\u0435\u043d\u0435\u043c `s3_connection`, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u0442\u0438.\n\n---\n\n### \u0418\u0442\u043e\u0433\u043e:\n\n- \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 SeaweedFS \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 S3 API (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 S3 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c).\n- \u0421\u0435\u0440\u0432\u0438\u0441 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438.\n- \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0442\u043e\u0432 \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u044b, \u0447\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 SeaweedFS.\n- \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0441\u0435\u0442\u044c Docker \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435 \u2014 \u044d\u0442\u043e **\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 SeaweedFS, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 Docker**, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043f\u043e S3 API, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438.\nUser: \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432 \u0434\u043e\u043a\u0435\u0440 Check Meta Folder (-mdir=\"/etc/seaweedfs/volume\") Writable: stat /etc/seaweedfs/volume: no such file or directory\nAssistant: \u041e\u0448\u0438\u0431\u043a\u0430\n\n```\nCheck Meta Folder (-mdir=\"/etc/seaweedfs/volume\") Writable: stat /etc/seaweedfs/volume: no such file or directory\n```\n\n\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 SeaweedFS \u043f\u0443\u0442\u044c `/etc/seaweedfs/volume` \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043b\u0438\u0431\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043b\u0438\u0431\u043e \u043a \u043d\u0435\u043c\u0443 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (`-dir` \u0438\u043b\u0438 `-mdir`), \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.\n\n---\n\n## \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430\n\n\u0412 \u0432\u0430\u0448\u0435\u043c Docker Compose \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433:\n\n```yaml\nvolumes:\n  - ./seaweedfs_master:/etc/seaweedfs\n```\n\n\u0422\u043e \u0435\u0441\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0435\u0439 `/etc/seaweedfs` \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430 `./seaweedfs_master`.\n\n\u0414\u0430\u043b\u0435\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443 \u0432\u0430\u0441:\n\n```\n-dir=/etc/seaweedfs/volume\n```\n\n\u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c `/etc/seaweedfs/volume`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 `./seaweedfs_master/volume`.\n\n\u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u043d\u0435\u0442, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0435\u0451 \u043d\u0430\u0439\u0442\u0438 \u0438 \u043f\u0438\u0448\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443.\n\n---\n\n## \u041a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\n\n1. **\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u043d\u0443\u0436\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443**\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 (\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 docker-compose) \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0430\u043f\u043a\u0430:\n\n```\n./seaweedfs_master/volume\n```\n\n\u0415\u0441\u043b\u0438 \u0435\u0451 \u043d\u0435\u0442 \u2014 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0435\u0451:\n\n```bash\nmkdir -p ./seaweedfs_master/volume\n```\n\n2. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430**\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0430\u043f\u043a\u0430 \u0438 \u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435/\u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Docker (\u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0430\u0448 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c).\n\n\u041c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430:\n\n```bash\nchmod -R 755 ./seaweedfs_master\n```\n\n3. **\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440**\n\n\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 docker-compose:\n\n```bash\ndocker-compose down\ndocker-compose up -d\n```\n\n---\n\n## \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\n\n- \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u0435\u0442\u0430\u043f\u0430\u043f\u043a\u0430 (`-mdir`), \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 SeaweedFS (`-mdir` \u0438\u043b\u0438 `-dir` \u2014 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430).\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0438 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b.\n\n---\n\n## \u0418\u0442\u043e\u0433\n\n\u041e\u0448\u0438\u0431\u043a\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u2014 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 `volume` \u0432\u043d\u0443\u0442\u0440\u0438 `seaweedfs_master` \u043d\u0430 \u0445\u043e\u0441\u0442\u0435, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442\u044c.\nUser: \u043a\u0430\u043a \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 mac os\nAssistant: \u041d\u0430 macOS \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443\n\n```\nCheck Meta Folder (-mdir=\"/etc/seaweedfs/volume\") Writable: stat /etc/seaweedfs/volume: no such file or directory\n```\n\n\u0441\u043b\u0435\u0434\u0443\u044f \u043b\u043e\u0433\u0438\u043a\u0435 Docker \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:\n\n---\n\n### \u0428\u0430\u0433\u0438 \u043f\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e\n\n1. **\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0430\u0448 `docker-compose.yml`**\n\n\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0433\u0434\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0444\u0430\u0439\u043b `docker-compose.yml` \u0438 \u043f\u0430\u043f\u043a\u0430 `seaweedfs_master`:\n\n```bash\ncd /\u043f\u0443\u0442\u044c/\u043a/\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438/\u0441/docker-compose\n```\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\ncd ~/projects/my-seaweedfs\n```\n\n---\n\n2. **\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 `volume` \u0432\u043d\u0443\u0442\u0440\u0438 `seaweedfs_master`**\n\n\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0435\u0441\u0442\u044c \u043b\u0438 \u043f\u0430\u043f\u043a\u0430 `seaweedfs_master` \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e `volume`, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043e\u0436\u0438\u0434\u0430\u0435\u0442:\n\n```bash\nmkdir -p ./seaweedfs_master/volume\n```\n\n---\n\n3. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043f\u043a\u0435**\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438:\n\n```bash\nchmod -R 755 ./seaweedfs_master\n```\n\n---\n\n4. **\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440**\n\n\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0435\u0433\u043e, \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0437\u0430\u043d\u043e\u0432\u043e:\n\n```bash\ndocker-compose down\ndocker-compose up -d\n```\n\n---\n\n### \u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\n\n- \u0412 Docker Compose \u0435\u0441\u0442\u044c \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n\n  ```yaml\n  volumes:\n    - ./seaweedfs_master:/etc/seaweedfs\n  ```\n\n  \u0422.\u0435. \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430 `./seaweedfs_master` \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432 `/etc/seaweedfs`\n\n- \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0443\u0442\u044c `/etc/seaweedfs/volume` \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\n\n- \u0415\u0441\u043b\u0438 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u043d\u0435\u0442 \u043f\u0430\u043f\u043a\u0438 `./seaweedfs_master/volume`, \u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \"\u0443\u0432\u0438\u0434\u0438\u0442\", \u0447\u0442\u043e `/etc/seaweedfs/volume` \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0443\n\n- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0440\u0435\u0448\u0438\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443\n\n---\n\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435:\n\n- \u0427\u0442\u043e \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438\u0437 \u0442\u043e\u0439 \u0436\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043a\u0430 `seaweedfs_master`\n\n- \u0427\u0442\u043e \u043f\u0440\u0430\u0432\u0430 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0442 Docker \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c\n\n- \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438):\n\n  ```bash\n  chmod -R 777 ./seaweedfs_master/volume\n  ```\n\n---\n\n\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u2014 \u0434\u0430\u0439\u0442\u0435 \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\n\n```bash\ndocker-compose logs s3_master\n```\n\n\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 `docker-compose.yml` \u2014 \u043f\u043e\u043c\u043e\u0433\u0443 \u0441 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439.\nUser: \u043a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 Odd numbered Node.js versions will not enter LTS status and should not be used for production. For more information, please\nAssistant: \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\n\n```\nOdd numbered Node.js versions will not enter LTS status and should not be used for production. For more information, please...\n```\n\n\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e Node.js \u0441 **\u043d\u0435\u0447\u0451\u0442\u043d\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c** (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 15, 17, 19 \u0438 \u0442.\u0434.). \u0422\u0430\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 Long-Term Support (LTS), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435.\n\n---\n\n## \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c\n\n1. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Node.js**\n\n\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nnode -v\n```\n\n\u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0438\u0434\u0430 `v15.x.x`, `v17.x.x`, `v19.x.x` \u2014 \u044d\u0442\u043e \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 (unsafe) \u0432\u0435\u0440\u0441\u0438\u0438.\n\n---\n\n2. **\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e LTS-\u0432\u0435\u0440\u0441\u0438\u044e Node.js**\n\n\u0414\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c **\u0447\u0451\u0442\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438**, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n- 14.x (End-of-Life \u0443\u0436\u0435, \u043d\u043e \u0432\u0441\u0451 \u0435\u0449\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432)\n- 16.x (\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f LTS)\n- 18.x (\u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 LTS)\n- 20.x (\u0435\u0441\u043b\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u0430 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)\n\n---\n\n3. **\u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c LTS-\u0432\u0435\u0440\u0441\u0438\u044e**\n\n### \u0427\u0435\u0440\u0435\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442\n\n- \u0421\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 https://nodejs.org/en/ , \u0432\u044b\u0431\u0438\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043f\u043e\u043c\u0435\u0442\u043a\u043e\u0439 **LTS**.\n\n---\n\n### \u0427\u0435\u0440\u0435\u0437 nvm (Node Version Manager)\n\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d `nvm`, \u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438:\n\n- \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 LTS-\u0432\u0435\u0440\u0441\u0438\u0439:\n\n```bash\nnvm ls-remote --lts\n```\n\n- \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 LTS-\u0432\u0435\u0440\u0441\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 18:\n\n```bash\nnvm install 18\nnvm use 18\n```\n\n- \u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u044d\u0442\u0443 \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0439:\n\n```bash\nnvm alias default 18\n```\n\n---\n\n4. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e**\n\n```bash\nnode -v\n```\n\n\u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c LTS-\u0432\u0435\u0440\u0441\u0438\u044e.\n\n---\n\n## \u0418\u0442\u043e\u0433\n\n- \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Node.js \u0441 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435.\n- \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043d\u0430 LTS-\u0432\u0435\u0440\u0441\u0438\u044e (\u0447\u0451\u0442\u043d\u0443\u044e), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 16.x, 18.x \u0438\u043b\u0438 20.x.\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `nvm` \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u0439 \u2014 \u043f\u0438\u0448\u0438\u0442\u0435!\nUser: \u043a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0430 \u043c\u0430\u043a \u043e\u0441 \u0432 \u0432\u0435\u0431\u0448\u0442\u043e\u0440\u043c Node.js version v23.11.0 detected. Odd numbered Node.js versions will not enter LTS status and should not be used for production. For more information, please see https://nodejs.org/en/about/previous-releases/.\nAssistant: \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \n```\nNode.js version v23.11.0 detected. Odd numbered Node.js versions will not enter LTS status and should not be used for production.\n```\n\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 Node.js \u0441 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0432\u0435\u0440\u0441\u0438\u0438 \u2014 23.11.0. \u041d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Node.js \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438, \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 Long-Term Support (LTS) \u0438 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d-\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.\n\n---\n\n## \u041a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0430 macOS \u0432 WebStorm\n\n### 1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 LTS-\u0432\u0435\u0440\u0441\u0438\u044e Node.js (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 18.x \u0438\u043b\u0438 20.x)\n\n#### \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c **nvm** \u2014 Node Version Manager\n\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d `nvm`, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e \u0442\u0430\u043a:\n\n```bash\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash\n```\n\n\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] && \\. \"$NVM_DIR/nvm.sh\"\n```\n\n---\n\n### 2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Node \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e LTS-\u0432\u0435\u0440\u0441\u0438\u044e 18:\n\n```bash\nnvm install 18\nnvm use 18\nnvm alias default 18\n```\n\n\u0418\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0443\u044e LTS, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 20 (\u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430 https://nodejs.org/en/):\n\n```bash\nnvm install 20\nnvm use 20\nnvm alias default 20\n```\n\n\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e:\n\n```bash\nnode -v\n```\n\n\u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `v18.x.x` \u0438\u043b\u0438 `v20.x.x`.\n\n---\n\n### 3. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 WebStorm \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Node.js\n\n- \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 WebStorm.\n- \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 **Preferences** (\u2318+,) \u2192 **Languages & Frameworks** \u2192 **Node.js and NPM**.\n- \u0412 \u043f\u043e\u043b\u0435 **Node interpreter** \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0442\u0440\u043e\u0435\u0442\u043e\u0447\u0438\u0435 `...` \u0441\u043f\u0440\u0430\u0432\u0430.\n- \u041d\u0430\u0436\u043c\u0438\u0442\u0435 `+` \u2192 **Add Local...**.\n- \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u043a Node.js, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 nvm:\n\n  \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:\n\n  ```\n  ~/.nvm/versions/node/v18.x.x/bin/node\n  ```\n\n- \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435.\n\n---\n\n### 4. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e WebStorm \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LTS-\u0432\u0435\u0440\u0441\u0438\u044e\n\n\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 WebStorm \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 IDE (\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b):\n\n```bash\nnode -v\n```\n\n\u0418\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u2014 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u043d\u0435\u0447\u0451\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c.\n\n---\n\n### 5. \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Node.js \u0447\u0435\u0440\u0435\u0437 Homebrew\n\n\u0415\u0441\u043b\u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `nvm`, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Node.js \u0447\u0435\u0440\u0435\u0437 Homebrew:\n\n```bash\nbrew uninstall node\nbrew install node@18\n```\n\n\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u043a `/usr/local/opt/node@18/bin/node` \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432 WebStorm.\n\n---\n\n## \u0420\u0435\u0437\u044e\u043c\u0435\n\n- \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u0432\u0435\u0440\u0441\u0438\u044f Node.js 23.x \u2014 \u044d\u0442\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f (\u043d\u0435 LTS), \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u0430 \u043a \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0443.\n- \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 LTS-\u0432\u0435\u0440\u0441\u0438\u044e (16.x, 18.x, 20.x), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f `nvm` \u0438\u043b\u0438 Homebrew.\n- \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c WebStorm \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Node.js \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u2014 \u043f\u0438\u0448\u0438\u0442\u0435!\nUser: \u043a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u0436\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0430 \u043c\u0430\u043a \u043e\u0441 \u0432 \u0432\u0435\u0431\u0448\u0442\u043e\u0440\u043c Workspace extension with invalid name (defaultProject) found. An unhandled exception occurred: Schema validation failed with the following errors:   Data path \"\" must have required property 'buildTarget'. See \"/private/var/folders/_8/l3nl07cn60x21cpc2v9njpb40000gn/T/ng-SCqXUy/angular-errors.log\" for further details. \nAssistant: \u0414\u0430\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 WebStorm \u043d\u0430 macOS:\n\n```\nWorkspace extension with invalid name (defaultProject) found. An unhandled exception occurred: Schema validation failed with the following errors:\nData path \"\" must have required property 'buildTarget'.\nSee \"/private/var/folders/_8/l3nl07cn60x21cpc2v9njpb40000gn/T/ng-SCqXUy/angular-errors.log\" for further details.\n```\n\n\u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Angular Workspace (\u0444\u0430\u0439\u043b\u0430 `angular.json`) \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430/\u0441\u0431\u043e\u0440\u043a\u0438 Angular-\u043f\u0440\u043e\u0435\u043a\u0442\u0430.\n\n---\n\n## \u041f\u0440\u0438\u0447\u0438\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438\n\n1. \u0412 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 `angular.json` \u0438\u043b\u0438 `workspace.json` \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 `buildTarget` \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430/\u0446\u0435\u043b\u0438.\n2. \u0412 \u0444\u0430\u0439\u043b\u0435 `angular.json` \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043a\u043e\u0440\u043d\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043b\u044e\u0447 `defaultProject` \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.\n3. \u0412\u0435\u0440\u0441\u0438\u044f Angular CLI \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0441\u0445\u0435\u043c\u044b (schema) \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c.\n4. WebStorm \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f Run Configuration Angular (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `defaultProject` \u043a\u0430\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0432\u043e\u0440\u043a\u0441\u043f\u0435\u0439\u0441\u0430, \u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c).\n\n---\n\n## \u041a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443\n\n### 1. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0444\u0430\u0439\u043b `angular.json`\n\n- \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 `angular.json` \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 Angular (\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0432 [\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438](https://angular.io/guide/workspace-config)).\n\n\u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u044b:\n\n```json\n{\n  ...\n  \"projects\": {\n    \"your-project-name\": {\n      \"projectType\": \"application\",\n      \"architect\": {             <-- \u0437\u0434\u0435\u0441\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c targets, \u0432\u043a\u043b\u044e\u0447\u0430\u044f build\n        \"build\": {\n          \"builder\": \"...\",\n          ...\n        },\n        ...\n      }\n    }\n  },\n  \"defaultProject\": \"your-project-name\"\n}\n```\n\n- \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e `defaultProject` \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.\n- \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 `architect` \u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0446\u0435\u043b\u044c `build`.\n\n---\n\n### 2. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (Run Configuration) \u0432 WebStorm\n\n- \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 **Run \u2192 Edit Configurations...**\n- \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Angular, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.\n- \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043b\u0438 \u0442\u0430\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f `buildTarget`.  \n- \u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `buildTarget` \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u2014 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0435\u0433\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435:\n\n```\nyour-project-name:build:production\n```\n\n\u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 target \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u0441 \u0442\u0435\u043c\u0438, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 `angular.json`.\n\n---\n\n### 3. \u0418\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 WebStorm\n\n- \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u043e\u0449\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Angular \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 WebStorm:  \n  - \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e **Angular CLI** \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u0443\u0442\u044c \u043a angular.json \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442.\n\n---\n\n### 4. \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 Angular CLI\n\n\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Angular CLI \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f (\u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f) \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b.\n\n```bash\nng version\n```\n\n\u0415\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u2014 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435:\n\n```bash\nnpm install @angular/cli@latest\n```\n\n---\n\n### 5. \u0410\u043d\u0430\u043b\u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043e\u0448\u0438\u0431\u043e\u043a\n\n- \u0418\u0437\u0443\u0447\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u043b\u043e\u0433\u0430 \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f WebStorm:\n\n```\n/private/var/folders/_8/l3nl07cn60x21cpc2v9njpb40000gn/T/ng-SCqXUy/angular-errors.log\n```\n\n\u0412 \u043d\u0435\u043c \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043e\u0448\u0438\u0431\u043a\u0438, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.\n\n---\n\n## \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u0447\u0435\u043a\u043b\u0438\u0441\u0442\n\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0444\u0430\u0439\u043b\u0430 `angular.json`.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 `architect.build` \u0441 `builder`.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `buildTarget` \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d \u0432 Run Configuration WebStorm.\n- \u041f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 Run Configuration Angular CLI \u0432 WebStorm.\n- \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 Angular CLI \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.\n- \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043b\u043e\u0433\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u0434\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0430\u0448\u0435\u0433\u043e `angular.json` (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b `projects` \u0438 `defaultProject`) \u0438 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 WebStorm \u2014 \u043f\u043e\u043c\u043e\u0433\u0443 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u043f\u043e\u0434\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.\nUser: \u0427\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c {   \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",   \"version\": 1,   \"newProjectRoot\": \"projects\",   \"projects\": {     \"VSKERP\": {       ...     }   },   \"defaultProject\": \"VSKERP\",   \"cli\": {     \"analytics\": false,     \"defaultCollection\": \"@angular-eslint/schematics\"   } } \nAssistant: \u0421 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c \u0432 \u0446\u0435\u043b\u043e\u043c \u0432\u0441\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u2014 \u0444\u0430\u0439\u043b `angular.json` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438:\n\n- `$schema` \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0445\u0435\u043c\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0430,\n- `version` \u2014 \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438,\n- `newProjectRoot` \u2014 \u043f\u0430\u043f\u043a\u0430 \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432,\n- `projects` \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442 `\"VSKERP\"`,\n- `defaultProject` \u2014 \u0438\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (`\"VSKERP\"`),\n- `cli` \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Angular CLI.\n\n---\n\n### \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043e\u0448\u0438\u0431\u043a\u0435, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 (\u043f\u0440\u043e `buildTarget`), \u043a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 `VSKERP` \u0441\u0435\u043a\u0446\u0438\u0438 `architect` (\u0438\u043b\u0438 `targets` \u0432 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Angular), \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0451 \u0446\u0435\u043b\u0438 `build`.\n\n---\n\n### \u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 `\"VSKERP\"`:\n\n\u0412\u043d\u0443\u0442\u0440\u0438 `projects.VSKERP` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b:\n\n```json\n\"architect\": {\n  \"build\": {\n    \"builder\": \"@angular-devkit/build-angular:browser\",\n    \"options\": { ... },\n    \"configurations\": { ... }\n  },\n  \"serve\": {\n    \"builder\": \"@angular-devkit/build-angular:dev-server\",\n    \"options\": { \"browserTarget\": \"VSKERP:build\" },\n    \"configurations\": { ... }\n  },\n  ...\n}\n```\n\n\u0418\u043b\u0438 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 Angular 16+ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `targets` \u0432\u043c\u0435\u0441\u0442\u043e `architect` (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438).\n\n---\n\n### \u0415\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 `VSKERP` \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0431\u0443\u0434\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430:\n\n```\nData path \"\" must have required property 'buildTarget'.\n```\n\n\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e Angular CLI \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044c \u0441\u0431\u043e\u0440\u043a\u0438 \u2014 `build`.\n\n---\n\n### \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c\n\n- \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 `angular.json`.\n- \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 `\"projects\"` \u043f\u0440\u043e\u0435\u043a\u0442 `\"VSKERP\"`.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b `architect` \u0438\u043b\u0438 `targets` \u0441 \u0446\u0435\u043b\u044c\u044e `build`.\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b:\n\n```json\n\"projects\": {\n  \"VSKERP\": {\n    \"projectType\": \"application\",\n    \"root\": \"\",\n    \"sourceRoot\": \"src\",\n    \"prefix\": \"app\",\n    \"architect\": {\n      \"build\": {\n        \"builder\": \"@angular-devkit/build-angular:browser\",\n        \"options\": {\n          \"outputPath\": \"dist/vskerp\",\n          \"index\": \"src/index.html\",\n          \"main\": \"src/main.ts\",\n          \"polyfills\": \"src/polyfills.ts\",\n          \"tsConfig\": \"tsconfig.app.json\",\n          \"assets\": [\"src/favicon.ico\", \"src/assets\"],\n          \"styles\": [\"src/styles.css\"],\n          \"scripts\": []\n        },\n        \"configurations\": {\n          \"production\": {\n            \"fileReplacements\": [{\n              \"replace\": \"src/environments/environment.ts\",\n              \"with\": \"src/environments/environment.prod.ts\"\n            }]\n            // \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0441\u0431\u043e\u0440\u043a\u0438\n          }\n        }\n      },\n      \"serve\": {\n        \"builder\": \"@angular-devkit/build-angular:dev-server\",\n        \"options\": {\n          \"browserTarget\": \"VSKERP:build\"\n        },\n        \"configurations\": {\n          \"production\": {\n            \"browserTarget\": \"VSKERP:build:production\"\n          }\n        }\n      }\n      // \u0434\u0440\u0443\u0433\u0438\u0435 \u0446\u0435\u043b\u0438: test, lint, \u0438 \u0442.\u0434.\n    }\n  }\n}\n```\n\n---\n\n### \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b `\"architect\"` \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d\n\n- \u041b\u0438\u0431\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e Angular \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 `ng new`,\n- \u041b\u0438\u0431\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.\n\n---\n\n### \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\n\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f Angular CLI \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c `angular.json`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435.\n- \u0412 Angular 15+ \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (`architect` \u2192 `targets`).\n\n---\n\n## \u0418\u0442\u043e\u0433\n\n\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u043d\u0435 \u0441 \u044d\u0442\u0438\u043c \u0441\u043a\u0435\u043b\u0435\u0442\u043e\u043c `/defaultProject` \u0438 `/projects` \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u044b\u043c\u0438, \u0430 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0433\u043e `\"VSKERP\"` \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u043b\u0435 `buildTarget` \u0438\u043b\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 (`build`).\n\n\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u043a\u0446\u0438\u044e `architect` (\u0438\u043b\u0438 `targets`) \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 `build` \u0432 `angular.json` \u2014 \u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442\u044c.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0441\u043b\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 `VSKERP` \u0438\u0437 `angular.json` \u2014 \u043f\u043e\u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c.\nUser: \u043a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0430\u043d\u0433\u0443\u043b\u044f\u0440 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435\nAssistant: \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e Angular \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 1: \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0444\u0430\u0439\u043b `package.json`\n\n\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b `package.json`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0435\u043a\u0446\u0438\u044e `dependencies` \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 Angular. \u041e\u0431\u044b\u0447\u043d\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:\n\n- `@angular/core`\n- `@angular/cli`\n- `@angular/compiler`\n- `@angular/common`\n\n\u041f\u0440\u0438\u043c\u0435\u0440:\n\n```json\n\"dependencies\": {\n  \"@angular/core\": \"^15.2.0\",\n  \"@angular/common\": \"^15.2.0\",\n  // ...\n},\n\"devDependencies\": {\n  \"@angular/cli\": \"^15.2.0\",\n  // ...\n}\n```\n\n\u0412\u0435\u0440\u0441\u0438\u044f Angular \u2014 \u044d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430 `@angular/core` \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432.\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 2: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Angular CLI\n\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Angular CLI, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430:\n\n```bash\nng version\n```\n\n\u041e\u043d\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Angular Framework \u0438 Angular CLI, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```\nAngular CLI: 15.2.0\nNode: 18.15.0\nPackage Manager: npm 9.5.0\nOS: darwin x64\n\nAngular: 15.2.0\n... animations, common, compiler, core, forms\n... platform-browser, platform-browser-dynamic, router\n```\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 3: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `npm list`\n\n\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n\n```bash\nnpm list @angular/core\n```\n\n\u041e\u043d\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e `@angular/core`.\n\n---\n\n### \u0418\u0442\u043e\u0433\n\n- \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 `package.json` \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430 `@angular/core`.\n- \u0418\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 `ng version` (\u0435\u0441\u043b\u0438 Angular CLI \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d).\n- \u0412\u0435\u0440\u0441\u0438\u044f `@angular/core` \u2014 \u044d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e Angular Framework.\n\n\u0415\u0441\u043b\u0438 Angular CLI \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 `ng` \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043b\u0443\u0447\u0448\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Angular CLI \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432 `package.json`.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u2014 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435!\nUser: \u043a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0430\u043d\u0433\u0443\u043b\u044f\u0440 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438\nAssistant: \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Angular \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 **\u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438**, \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432:\n\n---\n\n### 1. \u0412\u0435\u0440\u0441\u0438\u044f Angular CLI (\u043f\u0430\u043a\u0435\u0442 `@angular/cli`)\n\n- \u042d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c Angular.\n- \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u043d \u0443\u043a\u0430\u0437\u0430\u043d \u0432 `devDependencies` \u0432 `package.json`.\n\n\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 `package.json` \u0438 \u043d\u0430\u0439\u0434\u0438\u0442\u0435:\n\n```json\n\"devDependencies\": {\n  \"@angular/cli\": \"\u0432\u0435\u0440\u0441\u0438\u044f_\u0437\u0434\u0435\u0441\u044c\",\n  ...\n}\n```\n\n\u0412\u0435\u0440\u0441\u0438\u044f `@angular/cli` \u2014 \u0438 \u0435\u0441\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u0431\u043e\u0440\u043a\u0438.\n\n---\n\n### 2. \u0412\u0435\u0440\u0441\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Angular\n\n\u041f\u0430\u043a\u0435\u0442\u044b @angular/core \u0438 \u0434\u0440. \u0432 `dependencies` \u0438\u043b\u0438 `devDependencies` \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443.\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```json\n\"dependencies\": {\n  \"@angular/core\": \"\u0432\u0435\u0440\u0441\u0438\u044f_\u0437\u0434\u0435\u0441\u044c\",\n  ...\n}\n```\n\n\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432\u0435\u0440\u0441\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 `@angular/cli`.\n\n---\n\n### 3. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 `ng version`\n\n\u0415\u0441\u043b\u0438 Angular CLI \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e (\u0432 `node_modules`), \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:\n\n```bash\nnpx ng version\n```\n\n\u0418\u043b\u0438, \u0435\u0441\u043b\u0438 Angular CLI \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e:\n\n```bash\nng version\n```\n\n\u0412\u044b\u0432\u043e\u0434 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 CLI, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```\nAngular CLI: 15.2.0\nNode: 18.15.0\nPackage Manager: npm 9.5.0\nOS: darwin x64\n\nAngular: 15.2.0\n...\n```\n\n- \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u0435\u0440\u0441\u0438\u0438 Angular CLI \u2014 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430.\n- \u0412\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Angular \u2014 \u0432\u0435\u0440\u0441\u0438\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435.\n\n---\n\n### 4. \u0412\u0435\u0440\u0441\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 (`angular.json`)\n\n\u0424\u0430\u0439\u043b `angular.json` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 (build targets, builder, options \u0438 \u0434\u0440.):\n\n- \u0412\u043d\u0443\u0442\u0440\u0438 `projects -> projectName -> architect -> build -> builder` \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d \u0431\u0438\u043b\u0434-\u043f\u0440\u043e\u0446\u0435\u0441\u0441:\n\n```json\n\"builder\": \"@angular-devkit/build-angular:browser\"\n```\n\n- \u0417\u0434\u0435\u0441\u044c \u0434\u043b\u044f Angular CLI \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0438\u043b\u0434\u0435\u0440 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 Angular.\n- \u0412\u0435\u0440\u0441\u0438\u044f \u0431\u0438\u043b\u0434\u0435\u0440\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 `@angular/cli`.\n\n---\n\n### \u0418\u0442\u043e\u0433:\n\n- \u0414\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 **\u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430** \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e `@angular/cli` \u0432 `package.json` (`devDependencies`).\n- \u0414\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 Angular Framework \u2014 `@angular/core` \u0432 `dependencies`.\n- \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 `npx ng version`.\n- \u0424\u0430\u0439\u043b `angular.json` \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0431\u0438\u043b\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043d\u043e \u043d\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u2014 \u043e\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e `@angular/cli`.\n\n---\n\n\u0415\u0441\u043b\u0438 Angular CLI \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e `ng version`, \u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e:\n\n```bash\nnpm install --save-dev @angular/cli\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u2014 \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0430\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432!\nUser: \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0430\u043d\u0443\u0433\u043b\u044f\u0440 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0430 \u043d\u0435 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435\nAssistant: \u0415\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 Angular-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435) \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Angular CLI, \u0430 \u043d\u0435 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 `node_modules` \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430), \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f\u043c \u0432\u0435\u0440\u0441\u0438\u0439, \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u0438 \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435.\n\n---\n\n## \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u0430\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Angular CLI\n\n- \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0443 \u0432\u0435\u0440\u0441\u0438\u044e CLI, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442.\n- \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 (\u043d\u043e\u0432\u0435\u0435 \u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u0435\u0435), \u0447\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435.\n- \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 CLI.\n\n---\n\n## \u041a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c WebStorm (\u0438 \u043e\u0431\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0431\u043e\u0440\u043a\u0438) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e CLI\n\n### 1. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `npx` \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Angular CLI\n\n\u0412\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0440\u043e\u0441\u0442\u043e `ng` \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:\n\n```bash\nnpx ng build\n```\n\n`npx` \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 CLI \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e `node_modules`.\n\n---\n\n### 2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 WebStorm \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e Angular CLI\n\n- **\u0417\u0430\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 npm-\u0441\u043a\u0440\u0438\u043f\u0442\u044b:**\n\n  \u041e\u0431\u044b\u0447\u043d\u043e \u0432 `package.json` \u0435\u0441\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b:\n\n  ```json\n  \"scripts\": {\n    \"start\": \"ng serve\",\n    \"build\": \"ng build\"\n  }\n  ```\n\n  \u0412 WebStorm \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 npm-\u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u0422\u043e\u0433\u0434\u0430 WebStorm \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Angular CLI.\n\n- **\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Run/Debug \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:**\n\n  \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441 \u0442\u0438\u043f\u043e\u043c **Angular CLI** \u0432 WebStorm, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c:\n\n  - \u0412 \u043f\u043e\u043b\u0435 `Node interpreter` \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Node.\n  - \u0412 \u043f\u043e\u043b\u0435 `Angular CLI` \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u041e\u0431\u044b\u0447\u043d\u043e WebStorm \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e CLI (`./node_modules/.bin/ng`).\n  - \u0415\u0441\u043b\u0438 WebStorm \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Angular CLI \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0443\u0442\u044c \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 CLI.\n\n---\n\n### 3. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f PATH \u0432 WebStorm (\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e)\n\n\u0418\u043d\u043e\u0433\u0434\u0430 WebStorm \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 PATH, \u0433\u0434\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f `ng` \u0432\u044b\u0448\u0435 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0435.\n\n- \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f WebStorm \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c PATH \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c, \u0443\u0431\u0435\u0434\u0438\u0432\u0448\u0438\u0441\u044c, \u0447\u0442\u043e `./node_modules/.bin` \u0438\u0434\u0451\u0442 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 PATH (\u0438\u043b\u0438 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443).\n\n---\n\n### 4. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430:\n\n- \u0412\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 CLI \u0447\u0435\u0440\u0435\u0437 `npx ng`.\n\n- \u041b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b npm:\n\n  ```bash\n  npm run build\n  npm run start\n  ```\n\n---\n\n### 5. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u0438\n\n- \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f:\n\n  ```bash\n  ./node_modules/.bin/ng version\n  ```\n\n- \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f:\n\n  ```bash\n  ng version\n  ```\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e WebStorm \u0438 \u0432\u0430\u0448\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e.\n\n---\n\n### 6. \u041e\u043f\u0446\u0438\u044f: \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Angular CLI\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0443, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e:\n\n```bash\nnpm uninstall -g @angular/cli\n```\n\n\u042d\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e.\n\n---\n\n## \u0420\u0435\u0437\u044e\u043c\u0435:\n\n- \u0412\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Angular CLI \u0438\u0437 `node_modules`.\n- \u0412 WebStorm \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 npm-\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438\u043b\u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Angular CLI \u0432 IDE \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e.\n- \u0414\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `npx ng`.\n- \u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e `@angular/cli`, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c WebStorm \u043f\u043e\u0434 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Angular CLI \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435!\nUser: \u043a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0430\u043d\u0433\u0443\u043b\u044f\u0440 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435\nAssistant: \u0427\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Angular CLI \u043d\u0430 macOS (\u0438\u043b\u0438 Linux), \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n\n```bash\nnpm uninstall -g @angular/cli\n```\n\n\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0434\u0430\u043b\u0438\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Angular CLI, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 `npm`.\n\n---\n\n### \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\n\n\u041f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0430:\n\n```bash\nng version\n```\n\n\u0415\u0441\u043b\u0438 Angular CLI \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 `ng` \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0430.\n\n---\n\n### \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 CLI\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e CLI, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432 \u043f\u0430\u043f\u043a\u0435 `node_modules` \u043f\u0440\u043e\u0435\u043a\u0442\u0430:\n\n- \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 `npx ng`, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\nnpx ng serve\n```\n\n- \u0418\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 npm-\u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\nnpm run start\n```\n\n---\n\n\u0415\u0441\u043b\u0438 Angular CLI \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 npm, \u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `yarn` \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u0430 `@angular/cli` \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435), \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 `ng`, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c:\n\n```bash\nwhich ng\n```\n\n\u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u2014 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c!\nUser: \u043a\u0430\u043a \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u0442 \u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b \u0446\u0435\u043d\u0442\u0440\u0430 \u0432 \u043c\u0430\u043a \u043e\u0441\nAssistant: Control Center (\u0426\u0435\u043d\u0442\u0440 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f) \u0432 macOS \u2014 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Control Center \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 5000) \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0435\u0433\u043e \u0441\u043c\u0435\u043d\u0438\u0442\u044c, \u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442.\n\n---\n\n## \u0427\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441 \u0437\u0430\u043d\u044f\u0442\u044b\u043c \u043f\u043e\u0440\u0442\u043e\u043c macOS Control Center:\n\n### 1. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0440\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043d\u044f\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c Control Center\n\n\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nlsof -i :5000\n```\n\n\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 COMMAND \u0438\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0415\u0441\u043b\u0438 \u0442\u0430\u043c `ControlCenter` \u0438\u043b\u0438 \u043f\u043e\u0445\u043e\u0436\u0435\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0440\u0442.\n\n---\n\n### 2. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\n\n\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b macOS \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0440\u0442\u044b, \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0445 \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u0438 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439), \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u2014 \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u0442 \u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\n\n- \u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 `launchSettings.json`, `Program.cs`, \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430) \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u043e\u0440\u0442, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0442 5000, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 5001, 5100 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043f\u043e\u0440\u0442.\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f ASP.NET Core (`launchSettings.json`):\n\n```json\n\"commandLineArgs\": \"--urls http://*:5001\"\n```\n\n\u0418\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435:\n\n```csharp\nwebBuilder.UseUrls(\"http://*:5001\");\n```\n\n---\n\n### 3. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u0438 \u043f\u043e\u0440\u0442 Control Center \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\n\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0440\u0442 \u0437\u0430\u043d\u044f\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c system service, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043d\u044f\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e.\n\n- \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 `ControlCenter`, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441.\n- \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442 \u043f\u043e\u0440\u0442 \u043d\u0430 \u0434\u043e\u043b\u0433\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043b\u0443\u0436\u0431\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f.\n\n---\n\n### 4. \u041d\u0430\u0439\u0442\u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b\n\n- \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u044b\u0448\u0435 1024 \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c\u0438 \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438.\n- \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u2014 \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u044b \u0432\u0440\u043e\u0434\u0435 5001, 8081, 9000 \u0438 \u0442.\u043f.\n\n---\n\n### 5. \u0415\u0441\u043b\u0438 \u043f\u043e\u0440\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0438 \u0432\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0435\u0433\u043e:\n\n- **\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f** \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.\n- \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 (\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f):\n\n```bash\nsudo lsof -i :5000  # \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c PID\nsudo kill -9 <PID>\n```\n\n\u041d\u043e \u044d\u0442\u043e \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\n\n---\n\n## \u0418\u0442\u043e\u0433\n\n- **\u041a\u043e\u043d\u0442\u0440\u043e\u043b \u0426\u0435\u043d\u0442\u0440 macOS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c.**\n- \u041b\u0443\u0447\u0448\u0435 **\u0441\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f** \u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439.\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 `lsof` \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0438 \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430.\n- \u041f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0431\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u043b\u0443\u0436\u0431 \u2014 \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u043e, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u043f\u043e\u0440\u0442\u0430 \u2014 \u043f\u0438\u0448\u0438\u0442\u0435, \u043f\u043e\u043c\u043e\u0433\u0443!\nUser: \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 400 Bad Request \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0410\u043d\u0433\u0443\u043b\u044f\u0440 + .\u041d\u0415\u0422\nAssistant: \u041e\u0448\u0438\u0431\u043a\u0430 **400 Bad Request** \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Angular + .NET \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u043e\u0439 \u0438\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u0438\u0447\u0438\u043d, \u043a\u0430\u043a \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (Angular), \u0442\u0430\u043a \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (.NET).\n\n---\n\n## \u0427\u0430\u0441\u0442\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b 400 Bad Request \u0432 Angular + .NET \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\n\n### 1. \u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Content-Type)\n\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e Angular \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c `Content-Type` (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `application/json`) \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442.\n- \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432 Angular:\n\n```typescript\nthis.http.post(url, body, { headers: { 'Content-Type': 'application/json' } });\n```\n\n---\n\n### 2. \u041e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u043b\u0438 DTO \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 .NET\n\n- \u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u0430\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043f\u0440\u0438\u0441\u043b\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0439\u0442\u0438, \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0435\u0440\u043d\u0451\u0442 400.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438, \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.\n- \u0412 .NET \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043c\u043e\u0434\u0435\u043b\u0438 (ModelState).\n\n---\n\n### 3. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 (Model Binding)\n\n- \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0442\u0435\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0447\u0435\u0440\u0435\u0437 QueryString, \u0438\u043b\u0438 \u0432 URL), \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b `[FromBody]`, `[FromQuery]`, `[FromRoute]` \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u043c.\n- \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 `[FromBody]` \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f GET-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435.\n\n---\n\n### 4. \u0421\u0435\u0442\u0435\u0432\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 CORS / \u043f\u0440\u043e\u043a\u0441\u0438 \u0432 Angular\n\n- \u0418\u043d\u043e\u0433\u0434\u0430 400 \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u0443\u0442\u0430\u0442\u044c \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 CORS, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e CORS \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 URL (\u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442), \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c .NET.\n- \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 CORS \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 ASP.NET:\n\n```csharp\nservices.AddCors(options =>\n{\n    options.AddPolicy(\"AllowAll\", builder =>\n        builder.AllowAnyOrigin()\n               .AllowAnyMethod()\n               .AllowAnyHeader());\n});\n```\n\n\u0418 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443:\n\n```csharp\napp.UseCors(\"AllowAll\");\n```\n\n---\n\n### 5. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 URI (\u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u044b\u0439, \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b)\n\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 URL, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u0430\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.\n- \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 QueryString.\n\n---\n\n### 6. \u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043b\u043e\u0433\u0438\u043a\u0435 frontend \u2014 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\n\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u043f\u0440\u043e\u0441 (\u0442\u0435\u043b\u043e, headers, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b URL).\n- \u0418\u043d\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c `undefined` \u0438\u043b\u0438 `null`, \u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u044d\u0442\u043e\u0433\u043e.\n\n---\n\n### 7. \u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\n\n- \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u043e .NET \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438, \u0442\u043e \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 400. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0435\u0431\u0430\u0433\u0433\u0438\u043d\u0433 \u0438 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u044f \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e.\n\n---\n\n### 8. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 HTTPS \u0438 HTTP \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\n\n- \u041f\u0440\u0438 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u0445\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Angular \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 http, \u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 https), \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442\u044c\u0441\u044f.\n\n---\n\n## \u041a\u0430\u043a \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c\n\n1. **\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 (response body), \u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u0445 \u043e\u0448\u0438\u0431\u043a\u0438.**\n\n2. **\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 backend (.NET)** \u2014 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439.\n\n3. **\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (DevTools \u2192 Network) \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430:**\n\n- \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438\n- \u0422\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430\n- URL\n- \u041e\u0442\u0432\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\n\n4. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043b\u043e\u0433\u0438.**\n\n5. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e URL API \u0438 \u043f\u0443\u0442\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442, \u0438 \u0447\u0442\u043e \u043f\u0440\u043e\u043a\u0441\u0438 Angular (\u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f) \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.**\n\n---\n\n## \u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 .NET \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435\n\n```csharp\n[HttpPost]\npublic IActionResult PostData([FromBody] YourModel model)\n{\n    if (!ModelState.IsValid)\n    {\n        return BadRequest(ModelState);\n    }\n    // \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\n    return Ok();\n}\n```\n\n---\n\n## \u041a\u0440\u0430\u0442\u043a\u043e\n\n- \u041e\u0448\u0438\u0431\u043a\u0430 400 \u2014 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 Angular \u0438 .NET.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432, URL \u0438 \u043c\u043e\u0434\u0435\u043b\u0438.\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0434\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c Angular \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 .NET, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c.\nUser: \u041d\u0430 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u0437\u0430\u043f\u043a\u0441\u0442\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0435\u0436\u043d\u0438\u0435 {     \"iisSettings\": {         \"windowsAuthentication\": false,         \"anonymousAuthentication\": true,         \"iisExpress\": {             \"applicationUrl\": \"http://localhost:1237/\",             \"sslPort\": 0         }     },     \"profiles\": {         \"IIS Express\": {             \"commandName\": \"IISExpress\",             \"launchBrowser\": true,             \"environmentVariables\": {                 \"ASPNETCORE_ENVIRONMENT\": \"Development\"             }         },         \"Volna.App\": {             \"commandName\": \"Project\",             \"commandLineArgs\": \"--urls http://*:9000\",             \"launchBrowser\": true,             \"launchUrl\": \"http://localhost:9000/swagger\",             \"environmentVariables\": {                 \"ASPNETCORE_ENVIRONMENT\": \"Development\"             },             \"applicationUrl\": \"\"         }     } } \nAssistant: \u0412 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432\u0430\u043c\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 `launchSettings.json` \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0434\u0432\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430:\n\n```json\n\"iisSettings\": {\n    ...\n    \"iisExpress\": {\n        \"applicationUrl\": \"http://localhost:1237/\",\n        ...\n    }\n},\n\"profiles\": {\n    \"IIS Express\": {\n        \"commandName\": \"IISExpress\",\n        ...\n    },\n    \"Volna.App\": {\n        \"commandName\": \"Project\",\n        \"commandLineArgs\": \"--urls http://*:9000\",\n        ...\n    }\n}\n```\n\n---\n\n**\u041d\u0430 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435?**\n\n- \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c **IIS Express**, \u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:\n\n  ```\n  http://localhost:1237/\n  ```\n\n  \u041f\u043e\u0440\u0442 \u2014 1237.\n\n- \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c **Volna.App** (\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0431\u0435\u0437 IIS Express), \u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043d\u0430 \u043f\u043e\u0440\u0442\u0443:\n\n  ```\n  9000\n  ```\n\n  \u042d\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c:\n\n  ```json\n  \"commandLineArgs\": \"--urls http://*:9000\"\n  ```\n\n  \u2014 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044f localhost, \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 9000.\n\n---\n\n### \u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f?\n\n- \u0412 \u0432\u0430\u0448\u0435\u0439 IDE (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Visual Studio \u0438\u043b\u0438 Rider) \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (Run/Debug Configuration).\n- \u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d **IIS Express** \u2014 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0440\u0442 1237.\n- \u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c **Volna.App** \u2014 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0440\u0442 9000.\n\n---\n\n### \u0418\u0442\u043e\u0433:\n\n- **IIS Express**: \u043f\u043e\u0440\u0442 1237\n- **Volna.App**: \u043f\u043e\u0440\u0442 9000\n\n\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0448\u0430\u043b\u043e \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u2014 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f!\nUser: \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 -d psql -d postgres -f create-database-vsk.sql\nAssistant: \u041a\u043e\u043c\u0430\u043d\u0434\u0430 `psql -d postgres -f create-database-vsk.sql` \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u0430 `psql` \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0444\u0430\u0439\u043b\u0430 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c:\n\n- `-d postgres` \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `-d` (\u0438\u043b\u0438 `--dbname`) \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u043c\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 `psql` \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u0430\u0437\u0430 `postgres` \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f/\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 PostgreSQL.\n  \n- `-f create-database-vsk.sql` \u2014 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e `psql` \u0432\u043e\u0437\u044c\u043c\u0451\u0442 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 SQL-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 `create-database-vsk.sql`.\n\n\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a \u0431\u0430\u0437\u0435 `postgres` \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 `create-database-vsk.sql` SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0430\u0437\u044b, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 \u0442.\u0434.).\n\n\u0412\u0430\u0436\u043d\u043e: \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `-d` \u0437\u0430\u0434\u0430\u0451\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u0430\u0437\u0443, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 (\u0430 \u043d\u0435 \u0442\u0443, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435). \u041e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a `postgres`, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0431\u0430\u0437\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0449\u0451 \u043d\u0435\u0442.\nUser: \u043a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043c\u043e\u0439 ip \u0432 \u0441\u0435\u0442\u0438 \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u043f\u043e\u0434\u043a\u043b\u0447\u0430\u044e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u043f\u043d \u043d\u0430 \u043c\u0430\u043a \u043e\u0441\nAssistant: \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0430\u043c \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u0432 \u0441\u0435\u0442\u0438 VPN \u043d\u0430 macOS, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438:\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 1: \u0427\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u2014 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432\n\n1. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 **\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b** (`Terminal`).\n\n2. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n\n```bash\nifconfig\n```\n\n3. \u0412 \u0432\u044b\u0432\u043e\u0434\u0435 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0430\u0448\u0435\u043c\u0443 VPN-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e. \u0427\u0430\u0441\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 VPN \u0438\u043c\u0435\u0435\u0442 \u0438\u043c\u044f \u0432\u0440\u043e\u0434\u0435 `tun0`, `utun1`, `ppp0` \u0438\u043b\u0438 \u043f\u043e\u0445\u043e\u0436\u0435\u0435.\n\n4. \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 `inet`, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```\nutun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500\n    inet 10.8.0.5 --> 10.8.0.1 netmask 0xffffffff\n```\n\n\u0417\u0434\u0435\u0441\u044c `10.8.0.5` \u2014 \u044d\u0442\u043e \u0432\u0430\u0448 VPN IP-\u0430\u0434\u0440\u0435\u0441.\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 2: \u0427\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\n\n1. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 **\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438** \u2192 **\u0421\u0435\u0442\u044c** (`System Preferences` \u2192 `Network`).\n\n2. \u0412 \u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0448\u0435 VPN-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.\n\n3. \u0421\u043f\u0440\u0430\u0432\u0430 \u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u0438\u0449\u0438\u0442\u0435 \u043f\u043e\u043b\u0435 \u0441 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u0432\u0430\u0448\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 VPN.\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 3: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b `netstat`\n\n\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:\n\n```bash\nnetstat -nr | grep -i tun\n```\n\n\u042d\u0442\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043f\u043e VPN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443.\n\n---\n\n### \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\n\n- \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 (\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439) IP-\u0430\u0434\u0440\u0435\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \"\u0432\u044b\u0445\u043e\u0434\u0438\u0442\u0435\" \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 (\u0447\u0435\u0440\u0435\u0437 VPN \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e), \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438:\n\n```bash\ncurl ifconfig.me\n```\n\n\u0438\u043b\u0438\n\n```bash\ncurl icanhazip.com\n```\n\n---\n\n## \u0420\u0435\u0437\u044e\u043c\u0435\n\n- \u0412\u0430\u0448 VPN IP \u2014 \u044d\u0442\u043e IP, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0448\u0435\u043c\u0443 VPN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `utun1`).\n- \u0423\u0437\u043d\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 `ifconfig` \u0438\u043b\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u0435\u0442\u0438.\n- \u0412\u043d\u0435\u0448\u043d\u0438\u0439 IP \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u2014 \u043f\u043e\u043c\u043e\u0433\u0443 \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0430 `ifconfig`. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u0435 \u0432\u044b\u0432\u043e\u0434!\nUser: \u0430 \u043a\u0430\u043a\u0443\u044e \u043b\u043e\u043a\u043b\u0430\u043b\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043c\u0430\u043a \u043e\u0441 # \u043b\u043e\u043a\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f ubuntu: ru_RU.utf8 \u0414\u043b\u044f Windows: ru-RU PGLOCALE=ru_RU.utf8\nAssistant: \u0414\u043b\u044f macOS \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\nru_RU.UTF-8\n```\n\n---\n\n### \u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e `ru_RU.UTF-8`?\n\n- macOS, \u043a\u0430\u043a \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e Unix/Linux \u0441\u0438\u0441\u0442\u0435\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 POSIX-\u043b\u043e\u043a\u0430\u043b\u0435\u0439, \u0433\u0434\u0435 \u044f\u0437\u044b\u043a \u0438 \u0440\u0435\u0433\u0438\u043e\u043d \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c, \u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0447\u043a\u0438;\n- \u041b\u043e\u043a\u0430\u043b\u044c `ru-RU` (\u0441 \u0434\u0435\u0444\u0438\u0441\u043e\u043c) \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0451\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0431\u0430\u0437\u044b \u0441 \u0442\u0430\u043a\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u044e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430;\n- `ru_RU.UTF-8` \u2014 \u0441\u0430\u043c\u0430\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c \u0434\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 UTF-8.\n\n---\n\n### \u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0430 macOS?\n\n\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nlocale -a | grep ru\n```\n\n\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0443\u0432\u0438\u0434\u0438\u0442\u0435:\n\n```\nru_RU.UTF-8\nru_RU.UTF8\n```\n\n---\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 PostgreSQL \u043d\u0430 macOS \u0441 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u044e:\n\n```sql\nCREATE DATABASE vsk\nWITH TEMPLATE = template0\nOWNER = vsk\nENCODING = 'UTF8'\nLC_COLLATE = 'ru_RU.UTF-8'\nLC_CTYPE = 'ru_RU.UTF-8'\nTABLESPACE = pg_default\nCONNECTION LIMIT = -1;\n```\n\n---\n\n### \u0412\u044b\u0432\u043e\u0434\n\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `ru_RU.UTF-8` \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0430 macOS;\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (`locale -a`);\n- \u0414\u043b\u044f Linux \u0447\u0430\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f `ru_RU.utf8`, \u0434\u043b\u044f Windows \u2014 `ru-RU`, \u0434\u043b\u044f macOS \u2014 `ru_RU.UTF-8`.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c (\u043d\u0430 macOS \u044d\u0442\u043e \u0440\u0435\u0434\u043a\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f), \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u0438 \u0440\u0435\u0433\u0438\u043e\u043d\u0430.\nUser: \u043a\u0430\u043a \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043b\u043e\u043a\u0430\u043b\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0440\u0443\u0441\u0441\u043a\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c\nAssistant: \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043b\u043e\u043a\u0430\u043b\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0440\u0443\u0441\u0441\u043a\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (Linux/macOS), \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n\n```bash\nlocale -a | grep -i ru\n```\n\n- `locale -a` \u2014 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u0435\u0439;\n- `grep -i ru` \u2014 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 `ru` \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430.\n\n---\n\n### \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u044b\u0432\u043e\u0434\u0430\n\n\u041d\u0430 macOS \u0438\u043b\u0438 Linux \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0440\u0443\u0441\u0441\u043a\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c:\n\n```\nru_RU.UTF-8\nru_RU.UTF8\nru_RU.ISO8859-5\nru_RU.KOI8-R\nru_RU.CP1251\n```\n\n- `ru_RU.UTF-8` \u2014 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c \u0441 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u043e\u0439 UTF-8;\n- \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2014 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438 (KOI8-R, ISO8859-5, CP1251).\n\n---\n\n### \u0415\u0441\u043b\u0438 \u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u0435\u0439 (Linux)\n\n\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c:\n\n```bash\nsudo locale-gen ru_RU.UTF-8\nsudo dpkg-reconfigure locales\n```\n\n---\n\n### \u041d\u0430 Windows\n\n\u0412 Windows \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `ru-RU` \u2014 \u0438\u0445 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 `locale -a`.\n\n---\n\n### \u0418\u0442\u043e\u0433\n\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `locale -a | grep -i ru` \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u0435\u0439 \u043d\u0430 Unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445;\n- \u0414\u043b\u044f macOS \u0438 Linux \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `ru_RU.UTF-8` \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.\nUser: \u0435\u0441\u0442\u044c \u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c ru_RU.utf8\nAssistant: \u041b\u043e\u043a\u0430\u043b\u044c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c **`ru_RU.utf8`** (\u0441 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438 `utf8`) **\u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442** \u0438 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0438\u043d\u043e\u043d\u0438\u043c `ru_RU.UTF-8` \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 Unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 (Linux, macOS). \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435\u00bb \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 UTF-8 \u043b\u043e\u043a\u0430\u043b\u0438, \u043f\u0440\u0438\u0447\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 `utf8` \u0438 `UTF-8` \u043d\u0435\u0442.\n\n---\n\n### \u0427\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 `ru_RU.utf8`\n\n- `ru_RU` \u2014 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u0432 \u0440\u0435\u0433\u0438\u043e\u043d\u0435 \u0420\u043e\u0441\u0441\u0438\u044f (Russia)\n- `utf8` \u2014 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 UTF-8 (8-\u0431\u0438\u0442 Unicode Transformation Format)\n\n---\n\n### \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0435\n\n\u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0435\u0441\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:\n\n```bash\nlocale -a | grep -i ru_RU\n```\n\n\u0412 \u0432\u044b\u0432\u043e\u0434\u0435 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a\n\n```\nru_RU.UTF-8\nru_RU.utf8\n```\n\n---\n\n### macOS \u0438 \u043b\u043e\u043a\u0430\u043b\u0438\n\n\u041d\u0430 macOS \u0447\u0430\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438 `UTF-8`, \u0442\u043e \u0435\u0441\u0442\u044c `ru_RU.UTF-8`, \u043d\u043e `ru_RU.utf8` \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 PostgreSQL \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0438\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e.\n\n---\n\n### \u0427\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f PostgreSQL\n\n- PostgreSQL \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 `ru_RU.UTF-8`, \u0438 `ru_RU.utf8`.\n- \u0427\u0430\u0441\u0442\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e `ru_RU.UTF-8`, \u043d\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e `ru_RU.utf8`, \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0451.\n\n---\n\n### \u0418\u0442\u043e\u0433\n\n- \u041b\u043e\u043a\u0430\u043b\u044c **`ru_RU.utf8` \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430**.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 `locale -a`.\n- \u0412 PostgreSQL \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 `ru_RU.UTF-8`.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0451\u0442 `ru_RU.utf8`, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u043e\u0447\u043d\u043e\u0435 \u0438\u043c\u044f \u0438\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 `locale -a`.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.\nUser: \u043a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0430\u0439\u043f\u0438 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043c\u0430\u043a \u043e\u0441\nAssistant: \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439) IP-\u0430\u0434\u0440\u0435\u0441 \u043d\u0430 macOS, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 1: \u0427\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\n\n1. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 **\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b** (`Terminal`).\n\n2. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n\n```bash\nipconfig getifaddr en0\n```\n\n- \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Wi-Fi (`en0`), \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043f\u043e Wi-Fi.\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Ethernet, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435:\n\n```bash\nipconfig getifaddr en1\n```\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 2: \u041f\u043e\u0438\u0441\u043a IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432\n\n\u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432:\n\n```bash\nifconfig\n```\n\n\u0412 \u0432\u044b\u0432\u043e\u0434\u0435 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0435\u043a\u0446\u0438\u044e \u0441 \u043d\u0443\u0436\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c:\n\n- t\u00edp\u0438\u0447\u043d\u043e:\n  - `en0` \u2014 Wi-Fi\n  - `en1` \u0438\u043b\u0438 `en2` \u2014 Ethernet \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b\n\n\u0412 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0441 `inet` \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 IPv4 \u0430\u0434\u0440\u0435\u0441 (\u043f\u0440\u0438\u043c\u0435\u0440: `inet 192.168.1.10`).\n\n---\n\n### \u0421\u043f\u043e\u0441\u043e\u0431 3: \u0427\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\n\n1. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 **\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438** (`System Preferences`).\n\n2. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b **\u0421\u0435\u0442\u044c** (`Network`).\n\n3. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Wi-Fi).\n\n4. \u0421\u043f\u0440\u0430\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d IP-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0434 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.\n\n---\n\n### \u0418\u0442\u043e\u0433\n\n- \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434 `192.168.x.x`, `10.x.x.x` \u0438\u043b\u0438 `172.16.x.x` (\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b).\n- \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434 `ipconfig getifaddr en0` \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043b\u0438 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f \u2014 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c!\nUser: \u043a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442 \u043d\u0430 \u043c\u0430\u043a \u043e\u0441 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\nAssistant: \u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442 \u043d\u0430 macOS \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f), \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0444\u0430\u0439\u0440\u0432\u043e\u043b \u0438, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0440\u043e\u0443\u0442\u0435\u0440.\n\n---\n\n## \u0428\u0430\u0433\u0438 \u043f\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044e \u043f\u043e\u0440\u0442\u0430 \u043d\u0430 macOS\n\n### 1. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0444\u0430\u0439\u0440\u0432\u043e\u043b macOS\n\nmacOS \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u0440\u0432\u043e\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.\n\n- \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 **\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438** \u2192 **\u0417\u0430\u0449\u0438\u0442\u0430 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c** (Security & Privacy).\n- \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 **\u0411\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440** (Firewall).\n- \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 **\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u2026** (Firewall Options).\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0441\u043b\u0443\u0436\u0431\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u043d\u0443\u0436\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439.\n  - \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438 `+` \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445.\n- \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d, \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c (\u0444\u0430\u0439\u0440\u0432\u043e\u043b \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442).\n\n---\n\n### 2. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043f\u043e\u0440\u0442 \u0432 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u0435 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 (\u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 PF \u0438\u043b\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430)\n\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e macOS \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 **pf (Packet Filter)** \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u043d\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e. \u041d\u043e \u044d\u0442\u043e \u0440\u0435\u0434\u043a\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0437\u0430\u0434\u0430\u0447.\n\n---\n\n### 3. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u043b\u0443\u0436\u0431\u0430\u0445\n\n\u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0443\u0448\u0430\u044e\u0442 TCP/UDP \u043f\u043e\u0440\u0442\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445):\n\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 `localhost` (127.0.0.1), \u0430 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445 (`0.0.0.0` \u0438\u043b\u0438 `*`), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.\n- \u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 IP \u0438 \u043f\u043e\u0440\u0442\u0430\u0445 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.\n\n---\n\n### 4. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435 (\u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438)\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043a \u0432\u0430\u0448\u0435\u043c\u0443 Mac \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430:\n\n- \u041d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u043e\u0432 (Port Forwarding) \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e IP \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 IP \u0432\u0430\u0448\u0435\u0433\u043e Mac.\n- \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 IP \u0438 \u043f\u043e\u0440\u0442 \u0432\u0430\u0448\u0435\u0433\u043e Mac.\n\n---\n\n### 5. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430\n\n- \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0440\u0442 \u043e\u0442\u043a\u0440\u044b\u0442 \u0438 \u0441\u043b\u0443\u0448\u0430\u0435\u0442\u0441\u044f:\n\n```bash\nlsof -iTCP:<\u043d\u043e\u043c\u0435\u0440_\u043f\u043e\u0440\u0442\u0430> -sTCP:LISTEN\n```\n\n\u043f\u0440\u0438\u043c\u0435\u0440\n\n```bash\nlsof -iTCP:9000 -sTCP:LISTEN\n```\n\n- \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0441\u0435\u0442\u0438:\n\n```bash\ntelnet <ip_\u0432\u0430\u0448\u0435\u0433\u043e_mac> <\u043f\u043e\u0440\u0442>\n```\n\n\u0438\u043b\u0438\n\n```bash\nnc -vz <ip_\u0432\u0430\u0448\u0435\u0433\u043e_mac> <\u043f\u043e\u0440\u0442>\n```\n\n---\n\n## \u041f\u0440\u0438\u043c\u0435\u0440: \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442 9000 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432\n\n1. \u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ASP.NET Core) \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `http://*:9000`).\n\n2. \u0412 macOS \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.\n\n3. \u0421 \u0440\u043e\u0443\u0442\u0435\u0440\u043e\u043c \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u0430 9000 (\u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0443\u0436\u0435\u043d \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430).\n\n---\n\n## \u0412\u0430\u0436\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\n\n- macOS \u0444\u0430\u0439\u0440\u0432\u043e\u043b \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 TCP/UDP \u043f\u043e\u0440\u0442\u043e\u0432 \u2014 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\n- \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f `pf` \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, \u043d\u043e \u043e\u043d\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u043d\u0430\u043d\u0438\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u0438.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043b\u0438 \u043f\u043e\u0440\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0435 \u041f\u041e (\u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u044b, VPN-\u043a\u043b\u0438\u0435\u043d\u0442\u044b), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438!\nUser: \u043a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442 5432 \u0432 firewall \u043d\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u043c\u0430\u043a \u043e\u0441\nAssistant: \u041d\u0430 macOS \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u0440\u0432\u043e\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 TCP-\u043f\u043e\u0440\u0442\u043e\u0432 (\u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 iptables \u043d\u0430 Linux). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 5432 \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 PostgreSQL) \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e (\u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 PostgreSQL), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0440\u0442\u0443.\n\n---\n\n## \u041a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u0440\u0442 5432 (PostgreSQL) \u0432 macOS\n\n### 1. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e PostgreSQL \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445\n\n\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 PostgreSQL `postgresql.conf` (\u043e\u0431\u044b\u0447\u043d\u043e \u0432 `/usr/local/var/postgres/` \u0438\u043b\u0438 `/etc/postgresql/`):\n\n```conf\n# \u041d\u0430\u0439\u0434\u0438\u0442\u0435 (\u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435) \u0441\u0442\u0440\u043e\u043a\u0443:\nlisten_addresses = '*'\n```\n\n\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 localhost, \u043d\u043e \u0438 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 IP.\n\n---\n\n### 2. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 pg_hba.conf\n\n\u0412 \u0444\u0430\u0439\u043b\u0435 `pg_hba.conf` \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u043d\u0443\u0436\u043d\u044b\u0445 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432.\n\n---\n\n### 3. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e PostgreSQL \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u0435 macOS\n\n- \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 **\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438** \u2192 **\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c** (Security & Privacy).\n- \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 **\u0411\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440** (Firewall).\n- \u0415\u0441\u043b\u0438 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440 \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 **\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u0430...** (Firewall Options).\n- \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 PostgreSQL (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e `postgres` \u0438\u043b\u0438 `postmaster`).\n- \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435\u0442 \u2014 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 `+` \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b PostgreSQL.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (Allow incoming connections).\n\n---\n\n### 4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 PostgreSQL \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 5432:\n\n```bash\nlsof -iTCP:5432 -sTCP:LISTEN\n```\n\n\u0414\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c Postgres.\n\n---\n\n### 5. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435 (\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438)\n\n- \u0415\u0441\u043b\u0438 \u043a PostgreSQL \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u0432\u043d\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u0430 5432 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435 \u043d\u0430 IP \u0432\u0430\u0448\u0435\u0433\u043e Mac.\n- \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442 PostgreSQL \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u043e.\n\n---\n\n### 6. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e: \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u044b\n\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0444\u0430\u0439\u0440\u0432\u043e\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Little Snitch), \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u0440\u0442 5432 \u0438\u043b\u0438 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f PostgreSQL.\n\n---\n\n## \u0418\u0442\u043e\u0433\n\n- macOS \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0444\u0430\u0439\u0440\u0432\u043e\u043b \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u043e\u0440\u0442\u0430\u043c\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c.\n- \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 PostgreSQL \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u0430.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e PostgreSQL \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445.\n- \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 PostgreSQL (`postgresql.conf` \u0438 `pg_hba.conf`).\n- \u0414\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u043e\u0432 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u043b\u0438 \u0434\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 PostgreSQL \u043d\u0430 macOS.\nUser: \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0444\u0430\u0435\u0440\u0432\u043e\u043b\u043b \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\nAssistant: \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b \u043d\u0430 macOS \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d (\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d), \u0442\u043e:\n\n- macOS **\u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f** \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430, \u0438 \u043f\u043e\u0440\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0448\u0430\u044e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, **\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438, \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0442\u0438/\u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438**.\n- \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, PostgreSQL \u043d\u0430 5432), \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b macOS.\n- \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043c\u043e\u0433\u0443\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b:\n  - **\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f** (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 PostgreSQL \u0432 `postgresql.conf` \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c `listen_addresses` \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d `localhost`).\n  - **\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 pg_hba.conf** (\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f).\n  - **\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u0440\u043e\u0443\u0442\u0435\u0440, \u043c\u043e\u0434\u0435\u043c)** \u2014 \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438, \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u043e\u0432.\n  - **\u0414\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438** (\u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u044b, \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u044b, VPN-\u043a\u043b\u0438\u0435\u043d\u0442\u044b).\n\n---\n\n### \u0412\u044b\u0432\u043e\u0434\n\n**\u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b macOS \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d, \u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0438 \u043f\u043e\u0440\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0441\u0435\u0442\u0438.**\n\n\u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u043e\u0440\u0442\u0443 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0435, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, PostgreSQL) \u0438\u043b\u0438 \u0432 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043b\u0438 \u0441\u0435\u0442\u0438 \u2014 \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c!\nUser: \u043a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0440\u0442 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441 \u043d\u0430 \u043c\u0430\u043a \u043e\u0441\nAssistant: \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0440\u0442 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 PostgreSQL \u043d\u0430 macOS, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:\n\n---\n\n### 1. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 PostgreSQL `postgresql.conf`\n\n\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u043e\u0440\u0442\u0430, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e `5432`. \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 PostgreSQL:\n\n- \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 Homebrew, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432:\n\n```\n/usr/local/var/postgres/postgresql.conf\n```\n\n- \u041b\u0438\u0431\u043e:\n\n```\n/opt/homebrew/var/postgres/postgresql.conf\n```\n\n(\u0434\u043b\u044f Apple Silicon)\n\n---\n\n\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\ncat /usr/local/var/postgres/postgresql.conf | grep port\n```\n\n\u0418\u043b\u0438:\n\n```bash\ngrep port /usr/local/var/postgres/postgresql.conf\n```\n\n\u0418\u0449\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443:\n\n```conf\nport = 5432\n```\n\n---\n\n### 2. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 `psql` \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\n\n\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043a \u0431\u0430\u0437\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a \u0431\u0430\u0437\u0435 `postgres`) \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441:\n\n```bash\npsql -U postgres -d postgres\n```\n\n\u0412\u043d\u0443\u0442\u0440\u0438 psql \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```sql\nSHOW port;\n```\n\n\u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440.\n\n---\n\n### 3. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `lsof` \u0438\u043b\u0438 `netstat` \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u0440\u0442\n\n\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nlsof -iTCP -sTCP:LISTEN | grep postgres\n```\n\n\u0418\u043b\u0438\n\n```bash\nnetstat -anv | grep LISTEN | grep 5432\n```\n\n\u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 5432, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443.\n\n---\n\n### 4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 (\u0435\u0441\u043b\u0438 PostgreSQL \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043a\u0430\u043a \u0441\u043b\u0443\u0436\u0431\u0430)\n\n\u0415\u0441\u043b\u0438 PostgreSQL \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 brew services, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:\n\n```bash\nbrew services list\n```\n\n\u0418\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043b\u043e\u0433\u0438:\n\n```bash\ntail -n 20 /usr/local/var/log/postgres.log\n```\n\n\u0412 \u043b\u043e\u0433\u0430\u0445 \u0447\u0430\u0441\u0442\u043e \u043f\u0438\u0448\u0435\u0442\u0441\u044f, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440.\n\n---\n\n### \u0418\u0442\u043e\u0433\n\n- \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u2014 5432, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c.\n- \u0421\u0430\u043c\u044b\u0439 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432 psql \u043a\u043e\u043c\u0430\u043d\u0434\u0443 `SHOW port;`\n- \u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0440\u0442 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 `postgresql.conf`.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 PostgreSQL \u043d\u0430 macOS, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:\n\n---\n\n### 1. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 `postgresql.conf`\n\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u0440\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 `port` \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 PostgreSQL.\n\n1. \u041d\u0430\u0439\u0434\u0438\u0442\u0435, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b `postgresql.conf`. \u041e\u0431\u044b\u0447\u043d\u043e:\n\n- \u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 Homebrew:  \n  `/usr/local/var/postgres/postgresql.conf`\n\n- \u0415\u0441\u043b\u0438 PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n\n```bash\nps aux | grep postgres\n```\n\n\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `-D` (datadir), \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.\n\n2. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 `port`:\n\n```bash\ngrep port /usr/local/var/postgres/postgresql.conf\n```\n\n\u041e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:\n\n```\nport = 5432\n```\n\n---\n\n### 2. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b `lsof`\n\n\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0440\u0442\u044b \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 PostgreSQL:\n\n```bash\nsudo lsof -iTCP -sTCP:LISTEN -P | grep postgres\n```\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430:\n\n```\npostgres   12345 username   7u  IPv6 0x123456789abcde      0t0  TCP *:5432 (LISTEN)\n```\n\n\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e Postgres \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 5432.\n\n---\n\n### 3. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b `netstat`\n\n```bash\nnetstat -an | grep LISTEN | grep 5432\n```\n\n\u0418\u043b\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430:\n\n```bash\nsudo lsof -i :5432\n```\n\n---\n\n### 4. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 psql\n\n\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432\u0448\u0438\u0441\u044c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 `psql`, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e\u0440\u0442\u0430:\n\n```bash\npsql -U postgres -d postgres\n\n# \u0412\u043d\u0443\u0442\u0440\u0438 psql \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\nSHOW port;\n```\n\n\u0412\u044b\u0432\u043e\u0434 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```\n port \n------\n 5432\n(1 row)\n```\n\n---\n\n### \u0418\u0442\u043e\u0433\n\n- \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e PostgreSQL \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 **5432**.\n- \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 `postgresql.conf` \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `lsof` \u0438\u043b\u0438 `SHOW port` \u0438\u0437 psql.\n- \u0415\u0441\u043b\u0438 \u043f\u043e\u0440\u0442 \u0438\u0437\u043c\u0435\u043d\u0451\u043d \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438\u043b\u0438 \u043f\u0443\u0442\u044f\u043c\u0438 \u2014 \u043f\u0438\u0448\u0438\u0442\u0435!\nUser: \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0441\u043b\u0438 lsof -iTCP -sTCP:LISTEN | grep postgres \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\nAssistant: \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\n\n```bash\nlsof -iTCP -sTCP:LISTEN | grep postgres\n```\n\n\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 **\u043d\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 TCP-\u043f\u043e\u0440\u0442\u044b** \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.\n\n---\n\n## \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0438 \u0448\u0430\u0433\u0438 \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438\n\n### 1. \u0421\u0435\u0440\u0432\u0435\u0440 PostgreSQL \u043d\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\n\n- PostgreSQL \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u043b\u0443\u0436\u0431\u044b.\n\n\u0415\u0441\u043b\u0438 PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0435\u0440\u0435\u0437 Homebrew, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nbrew services list\n```\n\n\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043b\u0438 `postgresql`.\n\n\u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435:\n\n```bash\nbrew services start postgresql\n```\n\n\u0418\u043b\u0438, \u0435\u0441\u043b\u0438 PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:\n\n```bash\npg_ctl -D /\u043f\u0443\u0442\u044c/\u043a/\u0432\u0430\u0448\u0435\u043c\u0443/data/ \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 start\n```\n\n---\n\n### 2. PostgreSQL \u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u043d\u043e \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0435 \u043f\u043e TCP, \u0430 \u0447\u0435\u0440\u0435\u0437 Unix \u0441\u043e\u043a\u0435\u0442\n\n- PostgreSQL \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043b\u0443\u0448\u0430\u0442\u044c TCP-\u043f\u043e\u0440\u0442\u044b, \u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 Unix-\u0441\u043e\u043a\u0435\u0442 (\u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430).\n- \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 `lsof -iTCP` \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043a\u0430\u0436\u0435\u0442.\n\n\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043b\u0438 PostgreSQL \u0441\u043e\u043a\u0435\u0442\u044b:\n\n```bash\nlsof | grep postgres | grep socket\n```\n\n\u0418\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\nls /tmp/.s.PGSQL.*\n```\n\n---\n\n### 3. PostgreSQL \u0441\u043b\u0443\u0448\u0430\u0435\u0442 TCP-\u043f\u043e\u0440\u0442 \u043d\u0435 \u043a\u0430\u043a `postgres` (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435)\n\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\n\n```bash\nlsof -iTCP -sTCP:LISTEN\n```\n\n\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, process name \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f.\n\n---\n\n### 4. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e PostgreSQL\n\n\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 `postgresql.conf` \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `listen_addresses` \u0438 `port`:\n\n- \u0415\u0441\u043b\u0438 `listen_addresses = ''` \u0438\u043b\u0438 `localhost` \u2014 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e localhost.\n- \u0415\u0441\u043b\u0438 `listen_addresses = ''` (\u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430) \u0438\u043b\u0438 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u2014 TCP-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b.\n\n---\n\n### 5. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0438\u0441\u043a\u0430\n\n\u0415\u0441\u043b\u0438 `lsof` \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u2014 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `netstat`:\n\n```bash\nnetstat -anv | grep LISTEN | grep 5432\n```\n\n---\n\n### 6. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e PostgreSQL \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u043f\u0443\u0442\u044c \u043a \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439\n\n\u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 `psql` \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0431\u0430\u0437\u0435, \u043d\u043e `lsof` \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0440\u0442 \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, PostgreSQL \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 Unix-\u0441\u043e\u043a\u0435\u0442\u044b.\n\n---\n\n## \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435\n\n- \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b PostgreSQL \u0441\u043b\u0443\u0448\u0430\u043b \u0441\u0435\u0442\u0435\u0432\u044b\u0435 (TCP) \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 `postgresql.conf` \u0438 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 `listen_addresses` \u0437\u0430\u0434\u0430\u0439\u0442\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440):\n\n```conf\nlisten_addresses = '*'\n```\n\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.\n\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u0440\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e):\n\n```conf\nport = 5432\n```\n\n- \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 `lsof` \u043d\u0430 5432.\n\n---\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f `postgresql.conf`, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n```bash\nps aux | grep postgres\n```\n\n\u0418\u043b\u0438 \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0431\u0430\u0437\u0435 \u0447\u0435\u0440\u0435\u0437 `psql`, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u043d\u0443\u0442\u0440\u0438:\n\n```sql\nSHOW config_file;\nSHOW listen_addresses;\nSHOW port;\n```\n\n---\n\n### \u041a\u0440\u0430\u0442\u043a\u043e:\n\n- \u0415\u0441\u043b\u0438 `lsof` \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u2014 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 TCP \u043f\u043e\u0440\u0442\u044b.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e `listen_addresses`.\n- \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.\n- \u0415\u0441\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0438\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 Unix \u0441\u043e\u043a\u0435\u0442\u044b \u2014 TCP \u043f\u043e\u0440\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044b.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u2014 \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u0435 \u0432\u044b\u0432\u043e\u0434:\n\n- `brew services list` (\u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0435\u0440\u0435\u0437 brew)\n- `ps aux | grep postgres`\n- \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u043d\u0443\u0442\u0440\u0438 psql: `SHOW config_file; SHOW listen_addresses; SHOW port;`\n- \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0430\u0448\u0435\u0433\u043e `postgresql.conf` (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b listen_addresses \u0438 port)\n\n\u042f \u043f\u043e\u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c.\nUser: \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 psql: error: connection to server at \"...151\", port 5432 failed: FATAL:  no pg_hba.conf entry for host \"...83\", user \"vsk\", database \"postgres\", no encryption\nAssistant: \u041e\u0448\u0438\u0431\u043a\u0430 \n\n```\npsql: error: connection to server at \"...151\", port 5432 failed: FATAL:  no pg_hba.conf entry for host \"...83\", user \"vsk\", database \"postgres\", no encryption\n```\n\n\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 PostgreSQL \u043e\u0442\u043a\u0430\u0437\u0430\u043b \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 `pg_hba.conf` \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e `vsk` \u0441 IP-\u0430\u0434\u0440\u0435\u0441\u0430 `...83` \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 `postgres` \u0431\u0435\u0437 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f (no encryption).\n\n---\n\n### \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435\n\n- `pg_hba.conf` \u2014 \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0442\u043e \u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443.\n- \u0412\u0430\u0448\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0448\u043b\u0430 \u0441 IP-\u0430\u0434\u0440\u0435\u0441\u0430 `...83`.\n- \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u2014 `vsk`.\n- \u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 `postgres`.\n- \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 `no encryption` \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 SSL (\u043d\u0435 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e), \u0430 \u0432 `pg_hba.conf` \u043d\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0431\u0430\u0437\u044b.\n\n---\n\n### \u041a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443\n\n1. **\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b `pg_hba.conf` \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435**\n\n   \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 PostgreSQL. \u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:\n\n   ```bash\n   SHOW hba_file;\n   ```\n\n   \u0447\u0435\u0440\u0435\u0437 psql \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.\n\n2. **\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u044c, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0443\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435**\n\n   \u0412 pg_hba.conf \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.\n\n   \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n   ```\n   host    postgres    vsk     <ip_\u043a\u043b\u0438\u0435\u043d\u0442\u0430>/32     trust\n   ```\n\n   \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:\n\n   ```\n   host    postgres    vsk     <ip_\u043a\u043b\u0438\u0435\u043d\u0442\u0430>/32     md5\n   ```\n\n   \u0433\u0434\u0435 `<ip_\u043a\u043b\u0438\u0435\u043d\u0442\u0430>` \u2014 IP-\u0430\u0434\u0440\u0435\u0441 \u043c\u0430\u0448\u0438\u043d\u044b, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435\u0441\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `192.168.1.83`).\n\n   \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0441\u0435\u043c \u0441 \u043f\u043e\u0434\u0441\u0435\u0442\u0438:\n\n   ```\n   host    postgres    vsk     192.168.1.0/24     md5\n   ```\n\n3```\npsql: error: connection to server at \"...151\", port 5432 failed:\nFATAL: no pg_hba.conf entry for host \"...83\", user \"vsk\", database \"postgres\", no encryption\n```\n\n\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 PostgreSQL \u043e\u0442\u043a\u0430\u0437\u0430\u043b \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 `pg_hba.conf` **\u043d\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430**, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 (\u0441 IP, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `...83`) \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c `vsk` \u043a \u0431\u0430\u0437\u0435 `postgres`.\n\n---\n\n## \u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?\n\n- PostgreSQL \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0441\u0432\u0435\u0440\u044f\u0435\u0442 \u0435\u0433\u043e IP, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0431\u0430\u0437\u0443 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 `pg_hba.conf`.\n- \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435\u0442 \u2014 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 `no pg_hba.conf entry`.\n- \u0412 \u0432\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 `no encryption`, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0431\u0435\u0437 SSL/\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 `pg_hba.conf` \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0439 \u0442\u0430\u043a\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f.\n\n---\n\n## \u041a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\n\n### 1. \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b `pg_hba.conf`\n\n- \u041e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 PostgreSQL, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\n/usr/local/var/postgres/pg_hba.conf\n```\n\n- \u041b\u0438\u0431\u043e \u043f\u0443\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432\u0448\u0438\u0441\u044c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 psql (\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f):\n\n```sql\nSHOW hba_file;\n```\n\n---\n\n### 2. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u0438, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0439 \u043d\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e IP:\n\n```conf\nhost    all     vsk     <ip_\u043a\u043b\u0438\u0435\u043d\u0442\u0430>/32    md5\n```\n\n\u0438\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c (\u0440\u0443\u0431\u0440\u0438\u043a\u0430 `host` \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 TCP/IP, `all` \u2014 \u0432\u0441\u0435 \u0431\u0430\u0437\u044b):\n\n```conf\nhost    all     vsk     192.168.1.0/24    md5\n```\n\n---\n\n### 3. \u041d\u0430\u0441\u0447\u0451\u0442 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f (`no encryption`)\n\n\u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0431\u0435\u0437 SSL, \u0442\u043e \u0432 `pg_hba.conf` \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f.\n\n- \u0414\u043b\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437 SSL \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c:\n\n```conf\nhost    all    vsk    <ip>/32    md5\n```\n\n(\u0432\u0441\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435)\n\n- \u0414\u043b\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e SSL \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f `hostssl` \u0432\u043c\u0435\u0441\u0442\u043e `host`.\n\n---\n\n### 4. \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u0438, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0439 \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f vsk \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c:\n\n```conf\nhost    all    vsk    0.0.0.0/0    md5\n```\n\n(\u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043b\u044e\u0431\u043e\u0433\u043e IP, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438)\n\n---\n\n### 5. \u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 `pg_hba.conf` \u043d\u0443\u0436\u043d\u043e **\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c PostgreSQL**, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443:\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 macOS, \u0435\u0441\u043b\u0438 PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0435\u0440\u0435\u0437 Homebrew:\n\n```bash\nbrew services restart postgresql\n```\n\n\u0418\u043b\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:\n\n```bash\npg_ctl reload -D /path/to/data/directory\n```\n\n---\n\n### 6. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430\n\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0431\u0430\u0437\u044b \u0438 IP.\n- \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 SSL, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `sslmode=require` \u0432 `psql` \u0438\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0435).\n\n---\n\n## \u0418\u0442\u043e\u0433:\n\n- \u041e\u0448\u0438\u0431\u043a\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 `pg_hba.conf` \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e IP, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u0431\u0430\u0437\u043e\u0439 \u0431\u0435\u0437 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f.\n- \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0432 `pg_hba.conf`.\n- \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (SSL, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, IP).\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e `pg_hba.conf` \u043f\u043e \u0432\u0430\u0448\u0438\u043c IP \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u2014 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435:\n\n- IP \u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430;\n- \u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f;\n- \u0418\u043c\u044f \u0431\u0430\u0437\u044b;\n- \u041d\u0443\u0436\u043d\u043e \u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441 SSL \u0438\u043b\u0438 \u0431\u0435\u0437;\n- \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (\u043f\u0430\u0440\u043e\u043b\u044c md5, trust, scram-sha-256 \u0438 \u0442.\u043f.).\nUser: \u043a\u0430\u043a \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0430\u043d\u0443\u0442\u044c \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441 \u043d\u0430 \u043c\u0430\u043a \u043e\u0441\nAssistant: \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c PostgreSQL \u043d\u0430 macOS \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d:\n\n---\n\n### 1. \u0415\u0441\u043b\u0438 PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0435\u0440\u0435\u0437 Homebrew \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0438\u0441\n\n\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:\n\n- \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 PostgreSQL:\n```bash\nbrew services stop postgresql\n```\n\n- \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 PostgreSQL:\n```bash\nbrew services start postgresql\n```\n\n- \u0418\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441:\n```bash\nbrew services restart postgresql\n```\n\n---\n\n### 2. \u0415\u0441\u043b\u0438 PostgreSQL \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 `pg_ctl`\n\n1. \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 (data directory). \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435:\n\n```bash\nps aux | grep postgres\n```\n\n\u0418\u0449\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `-D /path/to/data`.\n\n2. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n\n```bash\npg_ctl -D /path/to/data stop\npg_ctl -D /path/to/data start\n```\n\n\u0418\u043b\u0438:\n\n```bash\npg_ctl -D /path/to/data restart\n```\n\n---\n\n### 3. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 PostgreSQL \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Postgres.app)\n\n- \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 PostgreSQL (Postgres.app), \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 **Stop** \u0438 \u0437\u0430\u0442\u0435\u043c **Start**.\n\n---\n\n### 4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 PostgreSQL\n\n```bash\nbrew services list\n```\n(\u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0435\u0440\u0435\u0437 Homebrew)\n\n\u043b\u0438\u0431\u043e\n\n```bash\npg_ctl -D /path/to/data status\n```\n\n---\n\n### \u0418\u0442\u043e\u0433\n\n\u0421\u0430\u043c\u044b\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0447\u0435\u0440\u0435\u0437 Homebrew:\n\n```bash\nbrew services restart postgresql\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0433\u0434\u0435 \u0443 \u0432\u0430\u0441 data directory \u0438\u043b\u0438 \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d PostgreSQL \u2014 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435, \u043f\u043e\u043c\u043e\u0433\u0443 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c.\nUser: \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u0435\u0441\u043b\u0438 \u0432 pg_hba.conf \u0435\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c host \tall \t\tall \t\t...83/24 \tmd5\nAssistant: \u0415\u0441\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 `pg_hba.conf` \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430:\n\n```\nhost  all  all  ...83/24  md5\n```\n\n\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b:\n\n---\n\n## 1. \u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0435\u0442\u0438\n\n- \u0412 IPv4-\u0430\u0434\u0440\u0435\u0441\u0430\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `192.168.1.0/24` \u2014 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u0441\u044e \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u043e\u0442 `192.168.1.0` \u0434\u043e `192.168.1.255`.\n- \u0417\u0430\u043f\u0438\u0441\u044c \u0432\u0438\u0434\u0430 `...83/24` \u2014 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 (`...83`), \u043d\u043e \u043c\u0430\u0441\u043a\u043e\u0439 `/24`, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0439, \u0435\u0441\u043b\u0438 `...83` \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441, \u0430 \u043d\u0435 \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0442\u0438 (\u0442.\u0435. \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0445\u043e\u0441\u0442\u043e\u0432\u044b\u0439 \u0431\u0438\u0442).\n- \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438:\n\n  ```\n  host all all 192.168.1.83/24 md5\n  ```\n\n  \u044d\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u0435\u0442\u044c `192.168.1.0/24`, \u043d\u043e \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0441\u0435\u0442\u0438, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u043b\u0438\u0431\u043e \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d IP.\n\n**\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:**\n\n- \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n  ```\n  host all all 192.168.1.0/24 md5\n  ```\n\n- \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e IP, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `/32` \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430:\n\n  ```\n  host all all 192.168.1.83/32 md5\n  ```\n\n---\n\n## 2. \u041d\u0435 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 PostgreSQL\n\n- \u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f `pg_hba.conf` \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c PostgreSQL, \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:\n\n```bash\npg_ctl reload -D /\u043f\u0443\u0442\u044c/\u043a/data\n```\n\n- \u0415\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b, \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.\n\n---\n\n## 3. \u0417\u0430\u043f\u0438\u0441\u044c `host all all ... md5` \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u043e MD5\n\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442.\n- \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u043f\u0430\u0440\u043e\u043b\u044f \u0438\u043b\u0438 \u0441 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043e\u0442\u043a\u0430\u0437.\n\n---\n\n## 4. \u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 `pg_hba.conf` \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u043d\u044c\u0448\u0435\n\n- PostgreSQL \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 `pg_hba.conf` \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435.\n- \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432\u044b\u0448\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u043c\u0443 IP \u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.\n- \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0441 `...83/24` \u0438 `md5` \u0441\u0442\u043e\u0438\u0442 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c.\n\n---\n\n## 5. \u041d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 IP \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 \u0437\u0430\u043f\u0438\u0441\u0438\n\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e IP-\u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u0434\u0441\u0435\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0432 \u0437\u0430\u043f\u0438\u0441\u0438.\n- \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430:\n\n```bash\nifconfig\n```\n\n\u0438\u043b\u0438\n\n```bash\nipconfig getifaddr en0\n```\n\n\u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 IP \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435.\n\n---\n\n## 6. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 IPv6\n\n- \u0415\u0441\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e IPv6, \u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 `pg_hba.conf` \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0434\u043b\u044f IPv4, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442\u044c\u0441\u044f.\n- \u0414\u043b\u044f IPv6 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 `host` \u0438 IPv6-\u0441\u0435\u0442\u044c\u044e.\n\n---\n\n## \u0420\u0435\u0437\u044e\u043c\u0435\n\n1. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c IP \u0438 \u043c\u0430\u0441\u043a\u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u0438**:\n\n   - \u0414\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e IP \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 `/32`\n\n   - \u0414\u043b\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u2014 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 `x.y.z.0/24`\n\n2. **\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e PostgreSQL**\n\n3. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 `pg_hba.conf`**\n\n4. **\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0441 IP, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u0438**\n\n5. **\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u043f\u0430\u0440\u043e\u043b\u044c (\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f md5)**\n\n---\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e IP\n\n```conf\nhost all all 192.168.1.83/32 md5\n```\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u0441\u0435\u0442\u0438 /24\n\n```conf\nhost all all 192.168.1.0/24 md5\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e `pg_hba.conf` \u0438 IP \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u2014 \u043f\u043e\u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u0435\u0435.\nUser: mac os pg_ctl: could not open PID file \"/Library/PostgreSQL/17/data/postmaster.pid\": Permission denied \u043f\u043e\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430\nAssistant: \u041e\u0448\u0438\u0431\u043a\u0430\n\n```\npg_ctl: could not open PID file \"/Library/PostgreSQL/17/data/postmaster.pid\": Permission denied\n```\n\n\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c PostgreSQL (`pg_ctl`) \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0443 `postmaster.pid`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u043f\u0443\u0442\u0438 `/Library/PostgreSQL/17/data/postmaster.pid`.\n\n---\n\n## \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430\n\n- **\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432**. \u0424\u0430\u0439\u043b \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 `/Library/PostgreSQL/17/data/` \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `postgres`), \u0438 \u0432\u0430\u0448 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c.\n- \u0412\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c PostgreSQL \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 PostgreSQL.\n- \u0421\u0430\u043c PostgreSQL \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `postgres`), \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a PID-\u0444\u0430\u0439\u043b\u0443.\n\n---\n\n## \u041a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443\n\n### 1. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 (sudo)\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c PostgreSQL \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441 `sudo`:\n\n```bash\nsudo pg_ctl -D /Library/PostgreSQL/17/data restart\n```\n\n\u0418\u043b\u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u043d\u0443\u0436\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441 `sudo`.\n\n---\n\n### 2. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438 \u0444\u0430\u0439\u043b\n\n\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 \u043f\u0440\u0430\u0432\u0430:\n\n```bash\nls -l /Library/PostgreSQL/17/data/postmaster.pid\nls -ld /Library/PostgreSQL/17/data\n```\n\n\u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043f\u0430\u043f\u043a\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e `postgres`, \u0430 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2014 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.\n\n---\n\n### 3. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438\u043b\u0438 \u043f\u0440\u0430\u0432\u0430 (\u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u044b)\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f (\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:\n\n```bash\nsudo chown -R YOUR_USER /Library/PostgreSQL/17/data\n```\n\n\u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u0439\u0442\u0435 \u043f\u0440\u0430\u0432\u0430:\n\n```bash\nsudo chmod -R u+rwX /Library/PostgreSQL/17/data\n```\n\n**\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435:** \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\n\n---\n\n### 4. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 PostgreSQL\n\n\u0415\u0441\u043b\u0438 PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c `postgres`, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043f\u043e\u0434 \u043d\u0435\u0433\u043e, \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0434 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c.\n\n---\n\n### 5. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u0435\u0441\u043b\u0438 PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0438\u0441)\n\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 PostgreSQL \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f brew:\n\n```bash\nbrew services restart postgresql@17\n```\n\n\u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u043c \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043b\u0443\u0436\u0431\u044b.\n\n---\n\n## \u0418\u0442\u043e\u0433\n\n- \u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0443 `postmaster.pid`.\n- \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 `sudo`.\n- \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 `ls -l`.\n- \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430/\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 PostgreSQL.\n- \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u2014 \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0436\u0438\u0442\u0435, \u043a\u0430\u043a\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438 \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d PostgreSQL (Homebrew, EnterpriseDB, Postgres.app \u0438 \u0442.\u0434.).\nUser: \u043a\u0430\u043a \u0432\u044b\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u0441\u044e \u043f\u0430\u043f\u043a\u0443 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u044e\u0437\u0435\u0440\u0430 \u0432 \u043c\u0430\u043a \u043e\u0441\nAssistant: \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u0441\u044e \u043f\u0430\u043f\u043a\u0443 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 macOS, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 `chown` \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 `chmod` \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.\n\n---\n\n### 1. \u0421\u043c\u0435\u043d\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043d\u0430 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0438 \u0433\u0440\u0443\u043f\u043f\u0443)\n\n```bash\nsudo chown -R username:groupname /\u043f\u0443\u0442\u044c/\u043a/\u043f\u0430\u043f\u043a\u0435\n```\n\n- `-R` \u2014 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u0430\u043f\u043e\u043a\n- `username` \u2014 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u0430\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\n- `groupname` \u2014 \u0433\u0440\u0443\u043f\u043f\u0430 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u043c\u0435\u043d\u044f\u0442\u044c, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0438\u043b\u0438 \u0442\u043e\u0442 \u0436\u0435 `username`)\n\n\u041f\u0440\u0438\u043c\u0435\u0440:\n\n```bash\nsudo chown -R pavelstaff:staff /Users/pavel/sharefolder\n```\n\n---\n\n### 2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430\n\n- \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u043f\u0430\u043f\u043a\u0443 \u0438 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b:\n\n```bash\nsudo chmod -R u+rwX /\u043f\u0443\u0442\u044c/\u043a/\u043f\u0430\u043f\u043a\u0435\n```\n\n- \u041e\u043f\u0446\u0438\u044f `X` \u0434\u0430\u0451\u0442 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c (\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0433 \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438)\n\n---\n\n### 3. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0433\u0440\u0443\u043f\u043f\u0443 \u0438 \u043f\u0440\u0430\u0432\u0430 \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u0438\u043b\u0438 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a:\n\n```bash\nsudo chmod -R 770 /\u043f\u0443\u0442\u044c/\u043a/\u043f\u0430\u043f\u043a\u0435\n```\n\n\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 \u0433\u0440\u0443\u043f\u043f\u044b, \u0438 \u0437\u0430\u043f\u0440\u0435\u0442 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445.\n\n---\n\n### \u0418\u0442\u043e\u0433: \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u043b\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\n\n```bash\nsudo chown -R pavelstaff:staff /Users/pavel/sharefolder\nsudo chmod -R u+rwX /Users/pavel/sharefolder\n```\n\n---\n\n### \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\n\n\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430:\n\n```bash\nls -l /Users/pavel/sharefolder\n```\n\n---\n\n\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0433\u0440\u0443\u043f\u043f\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0443 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0433\u0440\u0443\u043f\u043f\u0435 (`g+rwX`).\n\n---\n\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e\u0434 \u0432\u0430\u0448 \u043a\u0435\u0439\u0441 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u0443\u0442\u044c \u0438 \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0443\u0436\u043d\u044b.\nUser: \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043c\u0430\u043a \u043e\u0441 \u043f\u043e\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u044e\u0437\u0435\u0440\u043e\u043c\nAssistant:"}],"shard":{"index":79,"name":"turns-00079.parquet","rows":46297}}
