1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3091],{16602:(n,e,t)=>{t.d(e,{Ew:()=>A,HZ:()=>k,ID:()=>q});var i=t(3648),r=t(59425);function o(){let n=(0,i._)(["\n fragment PostDetail on Post {\n __typename\n id\n cuid\n title\n subtitle\n slug\n brief\n featured\n publishedAt\n updatedAt\n url\n readTimeInMinutes\n views\n reactionCount\n responseCount\n replyCount\n author {\n __typename\n id\n name\n username\n deactivated\n profilePicture\n bio {\n html\n }\n socialMediaLinks {\n website\n github\n twitter\n facebook\n stackoverflow\n linkedin\n }\n }\n coAuthors {\n __typename\n id\n name\n username\n deactivated\n profilePicture\n bio {\n html\n }\n socialMediaLinks {\n website\n github\n twitter\n facebook\n stackoverflow\n linkedin\n }\n }\n seo {\n title\n description\n }\n coverImage {\n url\n isPortrait\n attribution\n isAttributionHidden\n photographer\n }\n content {\n html\n markdown\n }\n preferences {\n pinnedToBlog\n disableComments\n stickCoverToBottom\n isDelisted\n }\n series {\n id\n name\n slug\n }\n tags {\n id\n slug\n name\n }\n ogMetaData {\n image\n }\n canonicalUrl\n hasLatexInPost\n faq {\n question\n answer\n }\n features {\n tableOfContents {\n isEnabled\n items {\n __typename\n id\n level\n slug\n title\n parentId\n }\n }\n }\n}\n "]);return o=function(){return n},n}function s(){let n=(0,i._)(["\n fragment PostThumbnail on Post {\n __typename\n id\n title\n slug\n publishedAt\n cuid\n url\n subtitle\n brief\n readTimeInMinutes\n views\n tags {\n id\n slug\n name\n }\n author {\n __typename\n id\n username\n name\n profilePicture\n followersCount\n }\n coverImage {\n __typename\n url\n isPortrait\n isAttributionHidden\n }\n}\n "]);return s=function(){return n},n}function a(){let n=(0,i._)(["\n fragment RequiredPublicationFields on Publication {\n __typename\n id\n url\n canonicalURL\n urlPattern\n title\n displayTitle\n hasBadges\n descriptionSEO\n seo {\n title\n description\n }\n publicMembers(page: 0, pageSize: 0) {\n totalDocuments\n }\n about {\n html\n text\n }\n features {\n proTeam {\n isEnabled\n }\n newsletter {\n isEnabled\n }\n viewCount {\n isEnabled\n }\n readTime {\n isEnabled\n }\n textSelectionSharer {\n isEnabled\n }\n gptBotCrawling {\n __typename\n isEnabled\n }\n headlessCMS {\n isEnabled\n }\n }\n aeoSettings {\n isEnabled\n llmsTxtEnabled\n crawlers {\n gptBot\n claudeBot\n perplexityBot\n googleExtended\n ccBot\n }\n }\n metaTags\n ogMetaData {\n image\n }\n author {\n __typename\n id\n name\n username\n profilePicture\n }\n preferences {\n __typename\n logo\n darkMode {\n __typename\n logo\n enabled\n }\n navbarItems {\n __typename\n id\n label\n url\n type\n series {\n __typename\n id\n slug\n }\n page {\n __typename\n id\n slug\n }\n }\n enabledPages {\n __typename\n badges\n newsletter\n members\n }\n layout\n disableFooterBranding\n isSubscriptionModalDisabled\n }\n favicon\n headerColor\n integrations {\n fbPixelID\n fathomSiteID\n fathomCustomDomainEnabled\n fathomCustomDomain\n hotjarSiteID\n matomoSiteID\n matomoURL\n gaTrackingID\n gTagManagerID\n plausibleAnalyticsEnabled\n wmPaymentPointer\n koalaPublicKey\n msClarityID\n openPanelClientId\n consentManagement {\n enabled\n version\n privacyPolicyURL\n }\n }\n imprintV2 {\n __typename\n html\n }\n postsCount: posts(first: 0) {\n totalDocuments\n }\n isTeam\n links {\n twitter\n instagram\n github\n website\n hashnode\n youtube\n dailydev\n linkedin\n mastodon\n facebook\n bluesky\n }\n domainInfo {\n __typename\n hashnodeSubdomain\n domain {\n __typename\n host\n ready\n }\n wwwPrefixedDomain {\n __typename\n host\n ready\n }\n }\n redirectionRules {\n source\n destination\n type\n }\n customRules {\n type\n path\n destination\n }\n totalRecommendedPublications\n allowContributorEdits\n}\n "]);return a=function(){return n},n}function u(){let n=(0,i._)(["\n query ArchivePage($host: String!, $first: Int!, $after: String) {\n publication(host: $host) {\n ...RequiredPublicationFields\n posts(first: $first, after: $after) {\n edges {\n node {\n ...PostThumbnail\n }\n cursor\n }\n pageInfo {\n hasNextPage\n endCursor\n totalDocuments\n }\n totalDocuments\n }\n }\n}\n ","\n",""]);return u=function(){return n},n}function l(){let n=(0,i._)(["\n query DraftPreview($host: String!, $draftId: ObjectId!) {\n publication(host: $host) {\n ...RequiredPublicationFields\n }\n draft(id: $draftId) {\n id\n slug\n title\n subtitle\n author {\n __typename\n id\n name\n username\n profilePicture\n }\n publishAs {\n __typename\n id\n name\n username\n profilePicture\n }\n settings {\n stickCoverToBottom\n }\n features {\n tableOfContents {\n isEnabled\n }\n }\n coverImage {\n url\n attribution\n isAttributionHidden\n photographer\n }\n content {\n html\n markdown\n }\n tags {\n id\n slug\n name\n }\n updatedAt\n }\n}\n ",""]);return l=function(){return n},n}function d(){let n=(0,i._)(["\n query HomePageInitial($host: String!) {\n publication(host: $host) {\n ...RequiredPublicationFields\n about {\n markdown\n html\n }\n followersCount\n author {\n id\n followersCount\n profilePicture\n }\n pinnedPost {\n ...PostThumbnail\n }\n seriesList(first: 50) {\n edges {\n node {\n id\n name\n slug\n coverImage\n }\n }\n }\n members(first: 20) {\n edges {\n node {\n id\n role\n user {\n id\n name\n username\n profilePicture\n }\n }\n }\n }\n }\n}\n ","\n",""]);return d=function(){return n},n}function c(){let n=(0,i._)(["\n query HomePagePosts($host: String!, $after: String, $first: Int!, $filter: PublicationPostConnectionFilter) {\n publication(host: $host) {\n id\n posts(after: $after, first: $first, filter: $filter) {\n edges {\n node {\n ...PostThumbnail\n }\n cursor\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n}\n ",""]);return c=function(){return n},n}function g(){let n=(0,i._)(["\n query MembersPage($host: String!, $first: Int!, $after: String, $page: Int!, $pageSize: Int!) {\n publication(host: $host) {\n ...RequiredPublicationFields\n isTeam\n members(first: $first, after: $after) {\n edges {\n node {\n id\n role\n user {\n id\n name\n username\n profilePicture\n tagline\n followersCount\n posts(first: 2) {\n edges {\n node {\n id\n title\n slug\n publishedAt\n }\n }\n }\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n membersCount: publicMembers(page: $page, pageSize: $pageSize) {\n totalDocuments\n }\n }\n}\n ",""]);return g=function(){return n},n}function m(){let n=(0,i._)(["\n query NewsletterPage($host: String!) {\n publication(host: $host) {\n ...RequiredPublicationFields\n recentPosts: posts(first: 3) {\n edges {\n node {\n ...PostThumbnail\n }\n }\n }\n }\n}\n ","\n",""]);return m=function(){return n},n}function f(){let n=(0,i._)(["\n query PostComments($host: String!, $slug: String!, $first: Int!, $after: String) {\n publication(host: $host) {\n post(slug: $slug) {\n comments(first: $first, after: $after) {\n edges {\n cursor\n node {\n id\n content {\n html\n }\n dateAdded\n totalReactions\n author {\n id\n name\n username\n profilePicture\n }\n replies(first: 50) {\n edges {\n cursor\n node {\n id\n content {\n html\n }\n dateAdded\n totalReactions\n author {\n id\n name\n username\n profilePicture\n }\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n totalDocuments\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n totalDocuments\n }\n }\n }\n }\n}\n "]);return f=function(){return n},n}function p(){let n=(0,i._)(["\n query PostPage($host: String!, $slug: String!) {\n publication(host: $host) {\n ...RequiredPublicationFields\n widgets {\n id\n widgetId\n content\n isPinned\n pinLocation\n }\n post(slug: $slug) {\n ...PostDetail\n }
1\n posts(first: 5) {\n edges {\n node {\n ...PostThumbnail\n }\n }\n }\n redirectedPost(slug: $slug) {\n id\n slug\n }\n staticPage(slug: $slug) {\n id\n slug\n }\n }\n}\n ","\n","\n",""]);return p=function(){return n},n}function b(){let n=(0,i._)(["\n query RecommendationsPage($host: String!) {\n publication(host: $host) {\n ...RequiredPublicationFields\n recommendedPublications {\n node {\n id\n title\n isTeam\n favicon\n url\n author {\n id\n username\n name\n profilePicture\n }\n domainInfo {\n domain {\n host\n }\n hashnodeSubdomain\n }\n preferences {\n logo\n }\n }\n }\n }\n}\n ",""]);return b=function(){return n},n}function h(){let n=(0,i._)(["\n query SearchPosts($publicationId: ObjectId!, $query: String!, $first: Int!, $after: String) {\n searchPostsOfPublication(\n first: $first\n after: $after\n filter: {publicationId: $publicationId, query: $query}\n ) {\n edges {\n node {\n ...PostThumbnail\n }\n cursor\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n}\n ",""]);return h=function(){return n},n}function P(){let n=(0,i._)(["\n query SeriesPage($host: String!, $slug: String!, $first: Int!, $after: String) {\n publication(host: $host) {\n ...RequiredPublicationFields\n series(slug: $slug) {\n id\n name\n coverImage\n slug\n description {\n html\n markdown\n text\n }\n cuid\n author {\n id\n name\n username\n }\n posts(first: $first, after: $after) {\n edges {\n node {\n ...PostThumbnail\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n ","\n",""]);return P=function(){return n},n}function $(){let n=(0,i._)(["\n query SeriesPagePosts($host: String!, $slug: String!, $first: Int!, $after: String) {\n publication(host: $host) {\n id\n series(slug: $slug) {\n id\n posts(first: $first, after: $after) {\n edges {\n node {\n ...PostThumbnail\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n ",""]);return $=function(){return n},n}function y(){let n=(0,i._)(["\n query StaticPage($host: String!, $slug: String!) {\n publication(host: $host) {\n ...RequiredPublicationFields\n staticPage(slug: $slug) {\n id\n slug\n title\n content {\n html\n markdown\n text\n }\n hidden\n ogMetaData {\n image\n }\n seo {\n title\n description\n }\n }\n }\n}\n ",""]);return y=function(){return n},n}function _(){let n=(0,i._)(["\n query TagPage($slug: String!, $host: String!, $first: Int!, $after: String) {\n tag(slug: $slug) {\n id\n name\n logo\n slug\n tagline\n }\n publication(host: $host) {\n ...RequiredPublicationFields\n posts(first: $first, after: $after, filter: {tagSlugs: [$slug]}) {\n edges {\n node {\n ...PostThumbnail\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n}\n ","\n",""]);return _=function(){return n},n}function S(){let n=(0,i._)(["\n query UserSocialLinks($username: String!) {\n user(username: $username) {\n socialMediaLinks {\n twitter\n linkedin\n }\n }\n}\n "]);return S=function(){return n},n}let I=(0,r.Ay)(o()),w=(0,r.Ay)(s()),C=(0,r.Ay)(a());(0,r.Ay)(u(),C,w),(0,r.Ay)(l(),C);let A=(0,r.Ay)(d(),C,w);(0,r.Ay)(c(),w),(0,r.Ay)(g(),C),(0,r.Ay)(m(),C,w);let q=(0,r.Ay)(f());(0,r.Ay)(p(),C,I,w),(0,r.Ay)(b(),C);let k=(0,r.Ay)(h(),w);(0,r.Ay)(P(),C,w),(0,r.Ay)($(),w),(0,r.Ay)(y(),C),(0,r.Ay)(_(),C,w),(0,r.Ay)(S())},25016:(n,e,t)=>{t.d(e,{cn:()=>o,hr:()=>s});
1var i=t(2821),r=t(75889);function o(){for(var n=arguments.length,e=Array(n),t=0;t<n;t++)e[t]=arguments[t];return(0,r.QP)((0,i.$)(e))}function s(n){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!n)return n;let t=e?["noopener","noreferrer","nofollow","ugc"]:["noopener","ugc"];return n.replace(/<a\s+([^>]*?)>/gi,(n,e)=>{let i=/\btarget\s*=/i.test(e),r=/\brel\s*=/i.test(e),o=e;return i||(o+=' target="_blank"'),r?o=o.replace(/\brel\s*=\s*["']([^"']*)["']/i,(n,e)=>{let i=e;for(let n of t)RegExp("\\b".concat(n,"\\b"),"i").test(i)||(i+=" ".concat(n));return'rel="'.concat(i.trim(),'"')}):o+=' rel="'.concat(t.join(" "),'"'),"<a ".concat(o.trim(),">")})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.