{"snippet": "def committee_init(info, args):\n assert args['f'] == 'committee_init'\n sender = info['sender']\n addr = handle_lookup(sender)\n committee_members, _ = get('committee', 'members', [])\n assert not committee_members\n put(addr, 'committee', 'members', [addr])\n event('CommitteeInit', [addr])\n\n\ndef committee_add_member(info, args):\n assert args['f'] == 'committee_add_member'\n sender = info['sender']\n addr = handle_lookup(sender)\n committee_members, _ = get('committee', 'members', [])\n committee_members = set(committee_members)\n assert addr in committee_members\n\n user = args['a'][0]\n votes, _ = get('committee', 'proposal_add', [], user)\n votes = set(votes)\n votes.add(addr)\n votes = list(votes)\n event('CommitteeAddVote', [user, addr])\n\n if len(votes) >= len(committee_members) * 2 // 3:\n committee_members.add(user)\n put(addr, 'committee', 'members', list(committee_members))\n event('CommitteeAddMember', [user])\n votes = None\n put(addr, 'committee', 'proposal_add', votes, user)\n\n\ndef committee_remove_member(info, args):\n assert args['f'] == 'committee_remove_member'\n sender = info['sender']\n addr = handle_lookup(sender)\n committee_members, _ = get('committee', 'members', [])\n committee_members = set(committee_members)\n assert addr in committee_members\n\n user = args['a'][0]\n votes, _ = get('committee', 'proposal_remove', [], user)\n votes = set(votes)\n votes.add(addr)\n votes = list(votes)\n event('CommitteeRemoveVote', [user, addr])\n\n if len(votes) >= len(committee_members)*2//3:\n committee_members.remove(user)\n put(addr, 'committee', 'members', list(committee_members))\n event('CommitteeRemoveMember', [user])\n votes = None\n put(addr, 'committee', 'proposal_remove', votes, user)\n", "functions": ["committee_init", "committee_add_member", "committee_remove_member"]}