[{"data":1,"prerenderedAt":10},["ShallowReactive",2],{"code:sql:14aknw1":3,"code:sql:vkkj91":4,"code:sql:10fn6lp":5,"code:sql:1qnf5a5":6,"code:sql:1624of7":7,"code:sql:t2ibqv":8,"code:bash:1d0ib3x":9},"\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">DESCRIBE \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">SELECT\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> *\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> FROM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> read_parquet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'\u002Fvar\u002Flib\u002Fipscope\u002Fipscope-complete.parquet'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\">-- Run directly via: duckdb -c \"...\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">SELECT\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  asn,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  organization,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  physical_country_code \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> physical_country,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  declared_country_code \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> registered_country,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">  COUNT\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">*\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> total_prefixes,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">  SUM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">CASE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> WHEN\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> is_vpn \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">THEN\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 1\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> ELSE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 0\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> END\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> vpn_prefixes,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">  SUM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">CASE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> WHEN\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> is_proxy \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">THEN\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 1\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> ELSE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 0\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> END\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> proxy_prefixes,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">  ROUND\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">AVG\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(abuse_velocity_score), \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">1\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> avg_abuse_velocity\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">FROM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> read_parquet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'\u002Fvar\u002Flib\u002Fipscope\u002Fipscope-complete.parquet'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">WHERE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> (is_vpn \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> true \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">OR\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> is_proxy \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> true \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">OR\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> is_known_scanner \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> true)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">GROUP BY\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  asn,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  organization,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  physical_country_code,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  declared_country_code\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">ORDER BY\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> vpn_prefixes \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">DESC\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, avg_abuse_velocity \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">DESC\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">LIMIT\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 15\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\">-- Convert dotted-quad IPv4 string to uint32 and join against non-overlapping ipscope leaves\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">WITH\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> parsed_logs \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> (\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  SELECT\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    request_id,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    timestamp\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    client_ip,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\">    -- Convert '198.51.100.7' -> 3325256711 (uint32)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    (\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      (\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">CAST\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(split_part(client_ip, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'.'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">1\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> UBIGINT) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">&#x3C;&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 24\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) |\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      (\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">CAST\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(split_part(client_ip, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'.'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">2\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> UBIGINT) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">&#x3C;&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 16\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) |\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      (\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">CAST\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(split_part(client_ip, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'.'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">3\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> UBIGINT) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">&#x3C;&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 8\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)  |\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">       CAST\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(split_part(client_ip, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'.'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">4\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> UBIGINT)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    )::UINTEGER \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> ip_u32\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  FROM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> read_parquet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'s3:\u002F\u002Fmy-secops-lake\u002FLogs\u002F2026-10-28\u002F*.parquet'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  WHERE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> strpos(client_ip, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">':'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 0\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">ipscope_v4 \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> (\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  SELECT\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    ipv4_start_u32,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    ipv4_end_u32,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    cidr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    physical_country_code,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    declared_country_code,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    is_virtual_location,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    asn,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    organization,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    connection_type,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    is_vpn,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    is_proxy,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    is_tor_exit,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    anonymizer_type,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    abuse_velocity_score\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  FROM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> read_parquet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'\u002Fvar\u002Flib\u002Fipscope\u002Fipscope-complete.parquet'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  WHERE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> ip_version \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 4\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">SELECT\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  l.request_id,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  l.timestamp,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  l.client_ip,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.cidr \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> matched_network,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.physical_country_code,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.declared_country_code,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.is_virtual_location,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.asn,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.organization,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.connection_type,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.anonymizer_type,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  i.abuse_velocity_score\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">FROM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> parsed_logs l\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">ASOF \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">JOIN\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> ipscope_v4 i\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  ON\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> l.ip_u32 \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">>=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> i.ipv4_start_u32\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">WHERE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> l.ip_u32 \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">&#x3C;=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> i.ipv4_end_u32;\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\">-- 1. Create a staging table backed by your downloaded ipscope Parquet file\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">CREATE OR REPLACE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> TABLE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> ipscope_staging\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">ENGINE \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> MergeTree\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">ORDER BY\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> (ip_version, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">cidr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> SELECT\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> *\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">FROM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> file\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'\u002Fvar\u002Flib\u002Fclickhouse\u002Fuser_files\u002Fipscope-complete.parquet'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">Parquet\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\">-- 2. Create the in-memory ip_trie dictionary over both IPv4 and IPv6 CIDRs\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">CREATE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> OR\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> REPLACE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> DICTIONARY ipscope_dict\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  cidr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> String,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  country_code String,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  declared_country_code String,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  physical_country_code String,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  is_virtual_location UInt8,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  city String,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  asn UInt32,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  organization String,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  connection_type String,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  is_vpn UInt8,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  is_proxy UInt8,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  is_tor_exit UInt8,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  anonymizer_type String,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  abuse_velocity_score UInt8\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">PRIMARY KEY\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> cidr\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">SOURCE(CLICKHOUSE(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">TABLE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> 'ipscope_staging'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">LAYOUT(IP_TRIE())\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">LIFETIME\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(MIN \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">3600\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> MAX \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">7200\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">SELECT\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  dictGet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'ipscope_dict'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'physical_country_code'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, toIPv6(client_ip)) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> physical_country,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  dictGet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'ipscope_dict'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'declared_country_code'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, toIPv6(client_ip)) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> declared_country,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  dictGet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'ipscope_dict'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'asn'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, toIPv6(client_ip)) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> asn,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  dictGet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'ipscope_dict'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'organization'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, toIPv6(client_ip)) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> org,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  dictGet(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'ipscope_dict'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'anonymizer_type'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, toIPv6(client_ip)) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> anonymizer,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">  count\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">() \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> request_volume,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  countIf(status_code \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">>=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 400\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">AS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> error_volume\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">FROM\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> default\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.http_access_logs\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">WHERE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> event_date \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">>=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> today() \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">-\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 7\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">GROUP BY\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  physical_country,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  declared_country,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  asn,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  org,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  anonymizer\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">HAVING\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> anonymizer \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">!=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> 'none'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">ORDER BY\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> request_volume \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">DESC\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">LIMIT\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 25\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">CREATE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> TABLE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> IF\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> NOT\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> EXISTS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> ipscope_blocks (\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  cidr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> cidr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> PRIMARY KEY\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  ip_version \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">smallint\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> NOT NULL\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  country_code \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">char\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">2\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  declared_country_code \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">char\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">2\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  physical_country_code \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">char\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">2\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  is_virtual_location \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">boolean\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> NOT NULL\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  asn \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">bigint\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  organization \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">text\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  connection_type \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">text\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  is_vpn \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">boolean\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> NOT NULL\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  is_proxy \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">boolean\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> NOT NULL\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  is_tor_exit \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">boolean\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> NOT NULL\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  anonymizer_type \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">text\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  abuse_velocity_score \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">smallint\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\">-- Fast GiST radix index for IP containment (&#x3C;&#x3C;= and >>=)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">CREATE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> INDEX\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> IF\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> NOT\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> EXISTS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> idx_ipscope_blocks_gist\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  ON\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> ipscope_blocks \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">USING\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> gist (\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">cidr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> inet_ops);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">curl\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> -fsSL\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string)\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Authorization: Bearer ${IPSCOPE_DOWNLOAD_KEY}\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string)\">  -o\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"\u002Fvar\u002Flib\u002Fipscope\u002Fipscope-complete.parquet.tmp\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string-expression)\">  \"https:\u002F\u002Fapi.ipscope.io\u002Fv1\u002Fmmdb\u002Freleases\u002Flatest\u002Fdownload?format=parquet\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">mv\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> -f\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"\u002Fvar\u002Flib\u002Fipscope\u002Fipscope-complete.parquet.tmp\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"\u002Fvar\u002Flib\u002Fipscope\u002Fipscope-complete.parquet\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1793226491804]