{
   "comment": "Surface ID to Layer ID mapping",

   "main_surface": {
      "surface_id": 1000,
      "surface_role": "HomeScreen",
      "comment": "This surface should never be made invisible (The HomeScreen)"
   },

   "dynamic_ids_start": 16777216,

   "layers": [
      {
         "name": "HomeScreen",
         "layer_id": 1000,
         "area": { "type": "full" }
      },
      {
         "name": "Apps",
         "layer_id": 1001,
         "area": { "type": "rect", "rect": { "x": 0, "y": 100, "width": -1, "height": -201 } }
      },
      {
         "name": "Popups",
         "layer_id": 9999,
         "area": { "type": "rect", "rect": { "x": 0, "y": 100, "width": -1, "height": -201 } }
      }
   ],

   "mappings": [
      {
         "type": "single",
         "surface_id": 1000,
         "role": "^HomeScreen$",
         "name": "HomeScreen",
         "layer_id": 1000,
         "area": { "type": "full" },
         "comment": "Single layer map for the HomeScreen, XXX: type is redundant, could also check existence of id/first_id+last_id"
      },
      {
         "type": "range",
         "first_surface_id": 2000,
         "last_surface_id": 2999,
         "role": "^App.*",
         "name": "apps",
         "layer_id": 1001,
         "area": { "type": "rect", "rect": { "x": 0, "y": 100, "width": -1, "height": -201 } },
         "comment": "Range of IDs that will always be placed on layer 1001, negative rect values are interpreted as output_size.dimension - $value"
      },
      {
         "type": "range",
         "first_surface_id": 3000,
         "last_surface_id": 3999,
         "role": "^OnScreen.*",
         "name": "popups",
         "layer_id": 9999,
         "area": { "type": "rect", "rect": { "x": 0, "y": 100, "width": -1, "height": -201 } },
         "comment": "Range of IDs that will always be placed on the popup layer, that gets a very high 'dummy' id of 9999"
      }
   ],

   "tests": [
      { "surface_id": 1000, "expect_layer_id": 1000 },
      { "surface_id": 1001, "expect_layer_id": -1, "comment": "check against -1 for not found entries" },
      { "surface_id": 1999, "expect_layer_id": -1 },
      { "surface_id": 2000, "expect_layer_id": 1001 },
      { "surface_id": 2500, "expect_layer_id": 1001 },
      { "surface_id": 2999, "expect_layer_id": 1001 },
      { "surface_id": 3000, "expect_layer_id": 9999 },
      { "surface_id": 3500, "expect_layer_id": 9999 },
      { "surface_id": 3999, "expect_layer_id": 9999 },
      { "surface_id": 4711, "expect_layer_id": -1 }
   ]
}