rtr-bench 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +181 -52
- package/data/splits/v1.json +184 -0
- package/dist/cli.js +1349 -56
- package/docs/distribution.md +102 -0
- package/docs/learn-room.md +186 -0
- package/docs/npm-release.md +37 -0
- package/package.json +9 -2
- package/results/leaderboard-scatter.png +0 -0
- package/tests/fixtures/distribution-pilot.json +7 -0
- package/tests/fixtures/learn-room-four-strategies.json +58 -0
- package/tests/fixtures/learn-room-pilot.json +16 -0
package/README.md
CHANGED
|
@@ -1,101 +1,230 @@
|
|
|
1
1
|
# RTR-bench
|
|
2
2
|
|
|
3
|
-
**RTR-bench** is
|
|
3
|
+
**RTR-bench** is an exploratory benchmark that tests whether language models can predict how a crowd interprets an ambiguous prompt, and whether examples from that crowd help them improve. It investigates one aspect of cultural fluency: anticipating how people assign meaning to words, people, institutions, and ideas. Its source is [Mixed Messages](https://mixedmessages.fyi), a generative art project where participants respond to a daily prompt by placing a coordinate on a 2×2 grid: Honest vs Performed on one axis, Uniting vs Dividing on the other. The dataset used here contains 39,828 submissions across 165 closed windows.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
These submissions were collected through participation in a generative art project. Participants were not trained to apply an annotation rubric or converge on a correct answer. Each placement recorded an interpretation, and together those placements formed a distribution. That distribution preserves both agreement and disagreement: how strongly one reading prevailed, which alternatives attracted people, and where the crowd split.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Commonly cited benchmarks such as [HLE](https://lastexam.ai/) and [SWE-bench](https://www.swebench.com/) evaluate expert answers or software changes against defined criteria for success. RTR-bench evaluates a model against an observed social response. A crowd’s interpretation can be contradictory, unfamiliar, or difficult to anticipate, and accurately predicting it requires distinguishing what a prompt means to that audience from the reading the model would otherwise produce.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
For each prompt, the model estimates the share of human submissions in all four quadrants. **`Predict`** asks for this distribution without historical examples. **`Learn`** lets the model choose and inspect up to three historical examples before submitting its prediction. Both tracks score the prediction against the recorded crowd distribution, out of 100. Learn also reports its gain or loss against Predict, showing whether gathering evidence improved the answer.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The scores are one way to compare models; their patterns of agreement and error are another. Which interpretations do models consistently anticipate? Where do different models make the same mistake? Which examples do they seek out, and when does that evidence help or mislead them? RTR-bench uses these questions to examine what it means for a model to read the room—with the room here defined by the participants in Mixed Messages.
|
|
12
|
+
|
|
13
|
+
RTR-bench is intended to surface patterns of agreement, disagreement, and adaptation that warrant further investigation. Its results describe performance on this audience and prompt set; broader claims about cultural fluency require validation across other audiences and settings. Recorded submissions provide an observable prediction target, but do not establish participants’ underlying beliefs or subjective experiences.
|
|
12
14
|
|
|
13
15
|
## How it works
|
|
14
16
|
|
|
15
|
-
[Mixed Messages](https://mixedmessages.fyi) publishes one prompt, every day. Over a 24-hour submission period, participants interpret that prompt by placing a coordinate on the grid. When the window closes, a rendering algorithm uses the (x, y) coordinates to create an artwork which depicts the day
|
|
17
|
+
[Mixed Messages](https://mixedmessages.fyi) publishes one prompt, every day. Over a 24-hour submission period, participants interpret that prompt by placing a coordinate on the grid. When the window closes, a rendering algorithm uses the (x, y) coordinates to create an artwork which depicts the day’s collective interpretation. Each window has a distribution across four quadrants, along with conviction and polarization scores. The 2×2 grid gives us the following readings and coordinates:
|
|
16
18
|
|
|
17
19
|
| Quadrant | Reading | Coordinates | Color |
|
|
18
20
|
|---|---|---|---|
|
|
19
|
-
| Honest
|
|
20
|
-
| Honest
|
|
21
|
-
| Performed
|
|
22
|
-
| Performed
|
|
21
|
+
| Honest × Uniting | Bringing us together, authentically | x ≥ 5,000, y < 5,000 | Green |
|
|
22
|
+
| Honest × Dividing | Fracturing us, truthfully | x ≥ 5,000, y ≥ 5,000 | Purple |
|
|
23
|
+
| Performed × Uniting | Creating false unity among us | x < 5,000, y < 5,000 | Cyan |
|
|
24
|
+
| Performed × Dividing | Exploiting our divisions, deliberately | x < 5,000, y ≥ 5,000 | Red |
|
|
25
|
+
|
|
26
|
+
**The dataset.** 39,828 submissions across 165 of the 174 closed windows, from the November 12, 2026 export. Only windows with at least 25 submissions are included. `data/windows.json` holds everything: the prompt, submission counts by quadrant, center of mass, and conviction and polarization scores. The latter measures are not used in scoring.
|
|
27
|
+
|
|
28
|
+
The dataset is divided chronologically into 90 reference windows, 30 development windows, and 45 evaluation windows. Every reference window predates every target. Development outcomes are never added to the reference pool. The same data and frozen splits are available on [Hugging Face](https://huggingface.co/datasets/noahmclaughlin/RTR-bench).
|
|
29
|
+
|
|
30
|
+
**The tasks.** In **`Predict`**, the model receives the target prompt, audience description, and quadrant definitions, then returns four probabilities totaling one. A prediction of 0.10, 0.50, 0.25, and 0.15 means it expects 10%, 50%, 25%, and 15% of the crowd’s submissions in the respective quadrants. It sees no historical examples or target outcomes. In **`Learn`**, the model can first request a catalog containing the names and IDs of the 90 reference prompts. It chooses an example to inspect and receives that example’s actual distribution and submission count. It can then choose another example or submit its prediction, up to three distinct inspections. The choices are sequential: evidence from one example can influence what it inspects next.
|
|
31
|
+
|
|
32
|
+
Note that each **`Learn`** episode starts a fresh conversation. The model receives no target score or correctness feedback during the episode, and it can submit before exhausting its inspection budget. The environment allows eight actions and eight model turns. Learning happens through the conversation; the model’s weights are not updated.
|
|
33
|
+
|
|
34
|
+
**Scoring.** For each target, sum the squared differences between the predicted and observed shares across all four quadrants. Average those errors equally across the declared targets, then calculate:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
Score = 100 × (1 − mean error / 2)
|
|
38
|
+
Learn gain = Learn score − Predict score
|
|
39
|
+
```
|
|
23
40
|
|
|
24
|
-
|
|
41
|
+
An exact match scores 100. Invalid or missing terminal predictions receive zero and remain in the denominator. Pending targets keep the run incomplete, without an aggregate headline score. Probabilities must be finite values between zero and one; sums within 0.001 of one are normalized.
|
|
25
42
|
|
|
26
|
-
|
|
43
|
+
These scores are not percentage accuracy. Reports include uniform predictions and a constant distribution calculated from the reference windows, so a model’s score can be interpreted against simple baselines. Learn’s final score and its gain should be read together: improvement from a weak starting point does not necessarily produce a strong final prediction.
|
|
27
44
|
|
|
28
|
-
**
|
|
45
|
+
**Consistency.** Repeated runs record fresh predictions under the same declared settings. Their observed ranges describe variation between runs. Reports also include confidence intervals obtained by resampling target entity groups, preserving matched targets when calculating Learn’s gain. These intervals describe variation across targets; they do not measure repeated-run variability or uncertainty about independent people.
|
|
46
|
+
|
|
47
|
+
The full comparison includes randomly selected examples and examples selected by a fixed text-similarity method. These are controls for Learn, not additional tracks. Predict supplies the no-example control without duplicate calls. See the [Predict protocol](docs/distribution.md) and [Learn protocol](docs/learn-room.md) for the exact prompts, limits, failure handling, and reproducibility rules.
|
|
29
48
|
|
|
30
49
|
## Quickstart
|
|
31
50
|
|
|
32
|
-
|
|
51
|
+
Run RTR-bench from Terminal using one of these three commands:
|
|
33
52
|
|
|
34
|
-
|
|
53
|
+
| Command | What it runs |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `npx rtr-bench read-the-room <model>` | **Predict and Learn**, plus Learn's gain or loss against Predict |
|
|
56
|
+
| `npx rtr-bench predict <model>` | **Predict only**: predict the crowd's distribution without examples |
|
|
57
|
+
| `npx rtr-bench learn <model>` | **Learn only**: inspect historical examples, then predict; does not calculate Learn gain |
|
|
35
58
|
|
|
36
|
-
|
|
59
|
+
`<model>` is a placeholder for the model's OpenRouter ID. Each command also needs the provider and run settings. **After the one-time setup below**, this complete example runs both tracks on **five development prompts**, with a **$0.25 spending cap**:
|
|
37
60
|
|
|
38
61
|
```bash
|
|
39
|
-
|
|
40
|
-
|
|
62
|
+
npx rtr-bench read-the-room z-ai/glm-5.3-flash \
|
|
63
|
+
--provider Relace \
|
|
64
|
+
--split development \
|
|
65
|
+
--limit 5 \
|
|
66
|
+
--max-usd 0.25
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
To run only one track, replace `read-the-room` with `predict` or `learn` and keep the rest of the command. `--limit 5` means five target prompts per selected track. The backslashes let one command continue across several lines; copy the whole block into Terminal.
|
|
70
|
+
|
|
71
|
+
### Before your first run
|
|
72
|
+
|
|
73
|
+
1. Install [Node.js](https://nodejs.org/) **22.18 or newer**, which includes `npx`. `npx` downloads and starts RTR-bench for you. You do not need to clone GitHub or run `npm install` or `npm ci` for this path. The dataset is included; no GPU or database setup is needed.
|
|
74
|
+
2. Open Terminal in a folder where you want to keep your results. Any folder you choose is fine. Creating a new folder is optional and does not start an evaluation.
|
|
75
|
+
3. Get an [OpenRouter API key](https://openrouter.ai/settings/keys) and add credits to that account. In your chosen folder, create a plain-text file named `.env` containing the line below, replacing `sk-or-your-key` with your key. Keep this file private.
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
OPENROUTER_API_KEY=sk-or-your-key
|
|
79
|
+
```
|
|
41
80
|
|
|
42
|
-
|
|
43
|
-
npx --yes rtr-bench catalog --limit 20
|
|
81
|
+
Keep Terminal in that same folder and run the complete command above. The benchmark reads `.env`, sends requests through OpenRouter, and charges your OpenRouter account for model usage. `--max-usd` is a spending limit, not a fixed price; the run stops incomplete if it cannot continue within that limit.
|
|
44
82
|
|
|
45
|
-
|
|
46
|
-
|
|
83
|
+
These commands require RTR-bench **0.2.0 or newer** on npm. To select that exact release, replace `npx rtr-bench` with `npx rtr-bench@0.2.0`. GitHub updates and npm releases are published separately.
|
|
84
|
+
|
|
85
|
+
### Read the results
|
|
86
|
+
|
|
87
|
+
When the run finishes, Terminal prints each selected track's score and the path to `report.html`. Open that file in a browser to inspect the results. A combined `read-the-room` run also prints Learn's gain or loss against Predict.
|
|
88
|
+
|
|
89
|
+
The benchmark automatically creates `results/learn-room/` inside your current folder and saves reports, requests, responses, action traces, and spending records there. You do not need to create the results folders yourself.
|
|
90
|
+
|
|
91
|
+
Running the identical command again resumes its saved run rather than starting a fresh evaluation. Changing the model, selected tracks, target set, or settings creates a separate run and spending ledger. A small development run's predictions and budget are not carried into a larger run.
|
|
92
|
+
|
|
93
|
+
### Run the final evaluation
|
|
94
|
+
|
|
95
|
+
Use development prompts to check the setup. Once the settings are fixed, the following command runs **Predict, Learn, and both comparison controls on all 45 final evaluation prompts**, matching the conditions in the results table:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
npx rtr-bench read-the-room z-ai/glm-5.3-flash \
|
|
99
|
+
--provider Relace \
|
|
100
|
+
--controls \
|
|
101
|
+
--split evaluation \
|
|
102
|
+
--limit 45 \
|
|
103
|
+
--max-usd 0.25
|
|
47
104
|
```
|
|
48
105
|
|
|
49
|
-
`--
|
|
106
|
+
`--controls` adds two comparisons: one supplies randomly selected historical examples, and the other supplies examples selected by text similarity. Without this flag, `read-the-room` runs only Predict and Learn. A development run is not comparable with the final evaluation results.
|
|
50
107
|
|
|
51
|
-
|
|
108
|
+
To evaluate another model, replace `z-ai/glm-5.3-flash` with its OpenRouter model ID and select a provider that serves it. You can list models and inspect a model's providers with:
|
|
52
109
|
|
|
53
110
|
```bash
|
|
54
|
-
npx
|
|
111
|
+
npx rtr-bench catalog --limit 20
|
|
112
|
+
npx rtr-bench providers z-ai/glm-5.3-flash
|
|
55
113
|
```
|
|
56
114
|
|
|
57
|
-
|
|
115
|
+
Provider availability and pricing can change. Choose a spending cap appropriate for the selected model and provider; $0.25 is the cap for the GLM example, not a recommended budget for every model.
|
|
58
116
|
|
|
59
|
-
###
|
|
117
|
+
### Use the GitHub source instead (optional)
|
|
60
118
|
|
|
61
|
-
|
|
119
|
+
If you want to inspect or change the code, install [Git](https://git-scm.com/) and run:
|
|
62
120
|
|
|
63
121
|
```bash
|
|
64
122
|
git clone https://github.com/1999labs/RTR-bench
|
|
65
123
|
cd RTR-bench
|
|
66
|
-
npm
|
|
67
|
-
echo 'OPENROUTER_API_KEY=sk-or-your-key' > .env
|
|
68
|
-
node src/cli.ts catalog --limit 20
|
|
69
|
-
node src/cli.ts run --models z-ai/glm-5.3-flash --concurrency 8
|
|
70
|
-
node src/cli.ts report
|
|
124
|
+
npm ci
|
|
71
125
|
```
|
|
72
126
|
|
|
73
|
-
|
|
127
|
+
These commands download the project, enter its folder, and install its supporting software. If you already have a checkout, use that folder. Create `.env` there as described above, then replace `npx rtr-bench` with `node src/cli.ts` in the evaluation commands. `src/cli.ts` is the source file that starts the benchmark. This is an alternative to the npm path, not an additional setup step.
|
|
74
128
|
|
|
75
129
|
## Results
|
|
76
130
|
|
|
77
|
-
| Model | Provider |
|
|
78
|
-
|
|
79
|
-
| z-ai/glm-5.3-flash |
|
|
80
|
-
| z-ai/glm-5.3 |
|
|
81
|
-
| minimax/minimax-m3.1-flash |
|
|
82
|
-
| xiaomi/mimo-v2.6-flash |
|
|
83
|
-
| deepseek/deepseek-v4.1-flash-1017 |
|
|
84
|
-
| tencent/hy3 |
|
|
85
|
-
| google/gemini-3.8-flash |
|
|
86
|
-
| openai/gpt-6-luna |
|
|
87
|
-
| anthropic/claude-haiku-5.5 |
|
|
88
|
-
| thinkingmachines/inkling-small |
|
|
89
|
-
| openai/gpt-oss-120b |
|
|
131
|
+
| Model | Provider | Predict | Learn | Learn gain | Full run cost (including controls) |
|
|
132
|
+
|---|---|---:|---:|---:|---:|
|
|
133
|
+
| z-ai/glm-5.3-flash | Relace (fp4) | 87.93 | 85.57 | −2.37 | $0.03150 |
|
|
134
|
+
| z-ai/glm-5.3 | TBD | TBD | TBD | TBD | TBD |
|
|
135
|
+
| minimax/minimax-m3.1-flash | TBD | TBD | TBD | TBD | TBD |
|
|
136
|
+
| xiaomi/mimo-v2.6-flash | TBD | TBD | TBD | TBD | TBD |
|
|
137
|
+
| deepseek/deepseek-v4.1-flash-1017 | TBD | TBD | TBD | TBD | TBD |
|
|
138
|
+
| tencent/hy3 | TBD | TBD | TBD | TBD | TBD |
|
|
139
|
+
| google/gemini-3.8-flash | TBD | TBD | TBD | TBD | TBD |
|
|
140
|
+
| openai/gpt-6-luna | TBD | TBD | TBD | TBD | TBD |
|
|
141
|
+
| anthropic/claude-haiku-5.5 | TBD | TBD | TBD | TBD | TBD |
|
|
142
|
+
| thinkingmachines/inkling-small | TBD | TBD | TBD | TBD | TBD |
|
|
143
|
+
| openai/gpt-oss-120b | TBD | TBD | TBD | TBD | TBD |
|
|
144
|
+
|
|
145
|
+
## Optional usage
|
|
146
|
+
|
|
147
|
+
The examples below use the GitHub source checkout. For model evaluations through the npm package, replace `node src/cli.ts` with `npx rtr-bench`. The synthetic examples use fixture paths from the source checkout.
|
|
148
|
+
|
|
149
|
+
### Run one track
|
|
150
|
+
|
|
151
|
+
To run Predict alone:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
node src/cli.ts predict z-ai/glm-5.3-flash \
|
|
155
|
+
--provider Relace \
|
|
156
|
+
--split development \
|
|
157
|
+
--limit 5 \
|
|
158
|
+
--max-usd 0.25
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Replace `predict` with `learn` to run Learn alone. Each reports its own score; Learn’s gain requires the matching Predict result, which `read-the-room` calculates automatically. The standalone commands use the same prompts and scorer as their conditions in the combined run.
|
|
162
|
+
|
|
163
|
+
Separate commands and changes to `--controls` create separate runs and spending ledgers; saved predictions are not automatically shared between them. Use `read-the-room --controls` from the outset when you want both tracks and the controls.
|
|
164
|
+
|
|
165
|
+
The legacy `learn-room` and `distribution` commands remain available with their original defaults and saved-run formats. In particular, legacy `learn-room` without `--strategy` runs the no-example and random conditions. New commands use the existing `results/learn-room/` storage and report format; internal strategy labels are `none` (Predict), `agent` (Learn), `random`, and `similar`.
|
|
166
|
+
|
|
167
|
+
### Synthetic runs
|
|
168
|
+
|
|
169
|
+
Try Predict on the five-target fixture without an API key or any API spending:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
node src/cli.ts predict \
|
|
173
|
+
--fixture tests/fixtures/learn-room-four-strategies.json \
|
|
174
|
+
--limit 5
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
To exercise Learn and all comparison conditions:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
node src/cli.ts read-the-room \
|
|
181
|
+
--fixture tests/fixtures/learn-room-four-strategies.json \
|
|
182
|
+
--controls \
|
|
183
|
+
--limit 5
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
These commands write explicitly labeled synthetic reports with saved outputs and browsable traces. They demonstrate the pipeline, not model performance.
|
|
187
|
+
|
|
188
|
+
Synthetic run directories are ignored by Git. Fixture inputs and tests stay tracked; regenerate the reports locally with the commands above. Published benchmark reports remain tracked and are marked as generated in `.gitattributes`.
|
|
90
189
|
|
|
91
|
-
|
|
190
|
+
### Providers and concurrency
|
|
191
|
+
|
|
192
|
+
OpenRouter may route calls to different providers serving the same model. To list providers, token prices, and numerical precision:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
node src/cli.ts providers z-ai/glm-5.3-flash
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Use `--provider` to select a provider from that list. A pinned run refuses to fall back to another provider, and reports name the providers that served the calls. Provider availability can change.
|
|
199
|
+
|
|
200
|
+
Predict and Learn currently execute requests sequentially. Each Learn episode contains a sequence of decisions, with the next request depending on the previous observation. Time and cost depend on the model, provider, token usage, and number of turns.
|
|
201
|
+
|
|
202
|
+
On 45 targets, Predict and Learn together typically use about 270 model calls. Adding `--controls` brings that to about 360: 45 for Predict, 45 for each automatic control, and approximately five calls per Learn episode. Early stopping can reduce that number; additional agent turns and transport retries can increase it. The first final GLM run used 347 calls.
|
|
203
|
+
|
|
204
|
+
The public commands default to 4,000 output tokens per response. Learn uses the published `transfer-check-v1` policy, up to three inspected examples, and eight model turns. Advanced runs can override `--max-tokens` and, for Learn, `--agent-policy`.
|
|
205
|
+
|
|
206
|
+
The current client uses OpenRouter. Direct connections to other hosted or local endpoints are not yet implemented.
|
|
207
|
+
|
|
208
|
+
## Development
|
|
209
|
+
|
|
210
|
+
After the GitHub source setup in [Quickstart](#quickstart), use these commands from the project folder to check changes and build the distributable program. Source commands run TypeScript directly and require Node.js 22.18 or newer.
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
npm test
|
|
214
|
+
npm run build
|
|
215
|
+
|
|
216
|
+
node src/cli.ts read-the-room \
|
|
217
|
+
--fixture tests/fixtures/learn-room-four-strategies.json \
|
|
218
|
+
--controls \
|
|
219
|
+
--limit 5
|
|
220
|
+
```
|
|
92
221
|
|
|
93
|
-
|
|
222
|
+
`npm test` checks the implementation. `npm run build` bundles the source into `dist/cli.js`, the program included in the npm package. The fixture command generates a synthetic report without making model API calls. For paid runs, use the Quickstart commands. See the [npm release instructions](docs/npm-release.md) for packaging and publishing.
|
|
94
223
|
|
|
95
|
-
|
|
224
|
+
Rebuilding the original dataset requires the project’s database connection and the configuration in `scripts/export.mjs`. The exported dataset is already included, so running the benchmark does not require database access. The Hugging Face export and validator preserve the frozen source data and split assignments.
|
|
96
225
|
|
|
97
|
-
|
|
226
|
+
RTR-bench previously evaluated dominant-quadrant predictions. Those scores use a different protocol and are not directly comparable with Predict and Learn. See the [original benchmark README and results](results/history/original-benchmark/README.md).
|
|
98
227
|
|
|
99
228
|
## License
|
|
100
229
|
|
|
101
|
-
MIT for the code. CC0 for `data/windows.json
|
|
230
|
+
MIT for the code. CC0 for `data/windows.json` and its derived dataset exports.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "chronological-v1",
|
|
3
|
+
"datasetSha256": "ec9d7582b5610a24f4e14dbbb05d13c636b692ec9e133b9381db0fdf483ffb2b",
|
|
4
|
+
"rule": "Reference: day <= 99; development: days 100..129; evaluation: day >= 130. All reference windows precede all targets. No labels used to choose boundaries.",
|
|
5
|
+
"grouping": {
|
|
6
|
+
"method": "Trim, lowercase, collapse whitespace; manually reviewed prompt list for entity aliases.",
|
|
7
|
+
"aliases": {},
|
|
8
|
+
"decisions": [
|
|
9
|
+
"ELON MUSK (days 30 and 99) stays entirely in reference.",
|
|
10
|
+
"Related but distinct prompts (such as CONTENT CREATORS and INFLUENCERS) remain distinct; grouping prevents same-entity retrieval, not thematic overlap."
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"reference": [
|
|
14
|
+
1,
|
|
15
|
+
2,
|
|
16
|
+
3,
|
|
17
|
+
4,
|
|
18
|
+
5,
|
|
19
|
+
6,
|
|
20
|
+
7,
|
|
21
|
+
8,
|
|
22
|
+
9,
|
|
23
|
+
10,
|
|
24
|
+
11,
|
|
25
|
+
12,
|
|
26
|
+
13,
|
|
27
|
+
14,
|
|
28
|
+
15,
|
|
29
|
+
16,
|
|
30
|
+
17,
|
|
31
|
+
18,
|
|
32
|
+
19,
|
|
33
|
+
20,
|
|
34
|
+
21,
|
|
35
|
+
22,
|
|
36
|
+
23,
|
|
37
|
+
24,
|
|
38
|
+
25,
|
|
39
|
+
28,
|
|
40
|
+
29,
|
|
41
|
+
30,
|
|
42
|
+
31,
|
|
43
|
+
35,
|
|
44
|
+
36,
|
|
45
|
+
37,
|
|
46
|
+
38,
|
|
47
|
+
39,
|
|
48
|
+
42,
|
|
49
|
+
43,
|
|
50
|
+
44,
|
|
51
|
+
45,
|
|
52
|
+
46,
|
|
53
|
+
47,
|
|
54
|
+
48,
|
|
55
|
+
49,
|
|
56
|
+
50,
|
|
57
|
+
51,
|
|
58
|
+
52,
|
|
59
|
+
53,
|
|
60
|
+
54,
|
|
61
|
+
55,
|
|
62
|
+
56,
|
|
63
|
+
57,
|
|
64
|
+
58,
|
|
65
|
+
59,
|
|
66
|
+
60,
|
|
67
|
+
61,
|
|
68
|
+
62,
|
|
69
|
+
63,
|
|
70
|
+
64,
|
|
71
|
+
65,
|
|
72
|
+
66,
|
|
73
|
+
67,
|
|
74
|
+
68,
|
|
75
|
+
69,
|
|
76
|
+
70,
|
|
77
|
+
71,
|
|
78
|
+
72,
|
|
79
|
+
73,
|
|
80
|
+
74,
|
|
81
|
+
77,
|
|
82
|
+
78,
|
|
83
|
+
79,
|
|
84
|
+
80,
|
|
85
|
+
81,
|
|
86
|
+
82,
|
|
87
|
+
83,
|
|
88
|
+
84,
|
|
89
|
+
85,
|
|
90
|
+
86,
|
|
91
|
+
87,
|
|
92
|
+
88,
|
|
93
|
+
89,
|
|
94
|
+
90,
|
|
95
|
+
91,
|
|
96
|
+
92,
|
|
97
|
+
93,
|
|
98
|
+
94,
|
|
99
|
+
95,
|
|
100
|
+
96,
|
|
101
|
+
97,
|
|
102
|
+
98,
|
|
103
|
+
99
|
|
104
|
+
],
|
|
105
|
+
"development": [
|
|
106
|
+
100,
|
|
107
|
+
101,
|
|
108
|
+
102,
|
|
109
|
+
103,
|
|
110
|
+
104,
|
|
111
|
+
105,
|
|
112
|
+
106,
|
|
113
|
+
107,
|
|
114
|
+
108,
|
|
115
|
+
109,
|
|
116
|
+
110,
|
|
117
|
+
111,
|
|
118
|
+
112,
|
|
119
|
+
113,
|
|
120
|
+
114,
|
|
121
|
+
115,
|
|
122
|
+
116,
|
|
123
|
+
117,
|
|
124
|
+
118,
|
|
125
|
+
119,
|
|
126
|
+
120,
|
|
127
|
+
121,
|
|
128
|
+
122,
|
|
129
|
+
123,
|
|
130
|
+
124,
|
|
131
|
+
125,
|
|
132
|
+
126,
|
|
133
|
+
127,
|
|
134
|
+
128,
|
|
135
|
+
129
|
|
136
|
+
],
|
|
137
|
+
"evaluation": [
|
|
138
|
+
130,
|
|
139
|
+
131,
|
|
140
|
+
132,
|
|
141
|
+
133,
|
|
142
|
+
134,
|
|
143
|
+
135,
|
|
144
|
+
136,
|
|
145
|
+
137,
|
|
146
|
+
138,
|
|
147
|
+
139,
|
|
148
|
+
140,
|
|
149
|
+
141,
|
|
150
|
+
142,
|
|
151
|
+
143,
|
|
152
|
+
144,
|
|
153
|
+
145,
|
|
154
|
+
146,
|
|
155
|
+
147,
|
|
156
|
+
148,
|
|
157
|
+
149,
|
|
158
|
+
150,
|
|
159
|
+
151,
|
|
160
|
+
152,
|
|
161
|
+
153,
|
|
162
|
+
154,
|
|
163
|
+
155,
|
|
164
|
+
156,
|
|
165
|
+
157,
|
|
166
|
+
158,
|
|
167
|
+
159,
|
|
168
|
+
160,
|
|
169
|
+
161,
|
|
170
|
+
162,
|
|
171
|
+
163,
|
|
172
|
+
164,
|
|
173
|
+
165,
|
|
174
|
+
166,
|
|
175
|
+
167,
|
|
176
|
+
168,
|
|
177
|
+
169,
|
|
178
|
+
170,
|
|
179
|
+
171,
|
|
180
|
+
172,
|
|
181
|
+
173,
|
|
182
|
+
174
|
|
183
|
+
]
|
|
184
|
+
}
|