#! /usr/bin/perl

use strict;
use warnings;

use JSON::XS qw/encode_json/;

my %data;
my $last_group;

sub try_as_number {
    my $str = shift;

    return $1 + 0 if $str =~ /^(-?\d+(?:.\d+)?)/;

    return $str;
}

while (<>) {
    chomp(my $line = $_);
    utf8::decode($line);

    if ($line eq '') {
        $last_group = undef;

        next;
    } elsif ($line =~ /^-+$/) {
        next;
    }

    if ($line =~ /^(\d+) ([^:]+): (.*)/) {
        $data{$last_group}->{$2} = try_as_number($3);
    } elsif ($line =~ /^([^:]+): (.*)/) {
        $data{$1} = try_as_number($2);
    } else {
        $last_group = $line;
        $data{$last_group} = {};
    }
}

print encode_json(\%data);