diff --git a/attributes/maestro-core-yaml.h b/attributes/maestro-core-yaml.h
index 42dc7e7c2644744d6d526924d26b87b8898ea7df..fbd848bf6a6039ce343cec8b9d35a46d6dc53e24 100644
--- a/attributes/maestro-core-yaml.h
+++ b/attributes/maestro-core-yaml.h
@@ -106,250 +106,310 @@ unsigned char maestro_core_yaml[] = {
   0x62, 0x6c, 0x65, 0x3b, 0x20, 0x69, 0x74, 0x27, 0x73, 0x20, 0x73, 0x79,
   0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x64, 0x75,
   0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66,
-  0x6c, 0x6f, 0x77, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79,
-  0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x63,
-  0x61, 0x74, 0x65, 0x2d, 0x6e, 0x6f, 0x77, 0x22, 0x20, 0x23, 0x20, 0x6e,
-  0x6f, 0x74, 0x65, 0x3a, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73,
-  0x20, 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20,
-  0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x6e, 0x61,
-  0x6d, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a,
-  0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61,
-  0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61,
-  0x75, 0x6c, 0x74, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61,
-  0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72,
-  0x6d, 0x20, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20,
-  0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66,
-  0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x0a, 0x0a,
-  0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64,
-  0x6f, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x22, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x62, 0x6f, 0x6f,
-  0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75,
-  0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a,
-  0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-  0x3a, 0x20, 0x45, 0x6e, 0x73, 0x75, 0x72, 0x65, 0x20, 0x61, 0x20, 0x70,
-  0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x6f,
-  0x70, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44,
-  0x4f, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
-  0x65, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68,
-  0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20,
-  0x63, 0x6f, 0x70, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
-  0x43, 0x44, 0x4f, 0x20, 0x69, 0x73, 0x20, 0x57, 0x49, 0x54, 0x48, 0x44,
-  0x52, 0x41, 0x57, 0x4e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68,
-  0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6f, 0x6f,
-  0x6c, 0x2e, 0x20, 0x28, 0x4e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65,
-  0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x74, 0x72, 0x69, 0x76, 0x69, 0x61, 0x6c,
-  0x20, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x20, 0x69, 0x6e,
-  0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20,
+  0x6c, 0x6f, 0x77, 0x2c, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+  0x74, 0x65, 0x64, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x6f, 0x6e, 0x6c,
+  0x79, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a,
+  0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x69, 0x64, 0x22, 0x0a, 0x20, 0x20,
+  0x23, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x63, 0x64,
+  0x6f, 0x69, 0x64, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x72, 0x65,
+  0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x54, 0x72, 0x75, 0x65,
+  0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d,
+  0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x54, 0x68,
+  0x65, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x49, 0x44, 0x20,
+  0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x69,
+  0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c,
+  0x6f, 0x77, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a,
+  0x20, 0x63, 0x64, 0x6f, 0x2e, 0x72, 0x61, 0x77, 0x2d, 0x70, 0x74, 0x72,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x70,
+  0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46,
+  0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66,
+  0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20, 0x4e, 0x49, 0x4c, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
+  0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x41, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2d,
+  0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x69,
+  0x6e, 0x74, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x61, 0x73,
+  0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74,
+  0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x2e, 0x0a, 0x0a,
+  0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x63, 0x64, 0x6f,
+  0x2e, 0x6d, 0x61, 0x6d, 0x62, 0x61, 0x2d, 0x61, 0x72, 0x72, 0x61, 0x79,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x70,
+  0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46,
+  0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66,
+  0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20, 0x4e, 0x49, 0x4c, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
+  0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x41, 0x20, 0x6d, 0x61, 0x6d, 0x62, 0x61,
+  0x2d, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63,
+  0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74,
+  0x68, 0x65, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x74, 0x6f,
+  0x72, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x2e, 0x20,
+  0x45, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x28, 0x31, 0x2d,
+  0x64, 0x2c, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x70, 0x61, 0x64, 0x64, 0x65,
+  0x64, 0x2c, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x65,
+  0x6e, 0x64, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77,
+  0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e,
+  0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x64, 0x6f, 0x2e, 0x72, 0x61,
+  0x77, 0x2d, 0x70, 0x74, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
+  0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2c, 0x20, 0x6f,
+  0x72, 0x20, 0x6d, 0x61, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x2d, 0x61, 0x6c,
+  0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72,
+  0x61, 0x67, 0x65, 0x20, 0x28, 0x69, 0x66, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68,
-  0x65, 0x20, 0x63, 0x64, 0x6f, 0x2e, 0x64, 0x65, 0x73, 0x69, 0x73, 0x74,
-  0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x29,
-  0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22,
-  0x63, 0x64, 0x6f, 0x2e, 0x64, 0x65, 0x73, 0x69, 0x73, 0x74, 0x22, 0x0a,
+  0x20, 0x20, 0x20, 0x63, 0x64, 0x6f, 0x2e, 0x6d, 0x61, 0x65, 0x73, 0x74,
+  0x72, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2d,
+  0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74,
+  0x72, 0x75, 0x65, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65,
+  0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x61, 0x6c, 0x6c, 0x6f,
+  0x63, 0x61, 0x74, 0x65, 0x2d, 0x6e, 0x6f, 0x77, 0x22, 0x20, 0x23, 0x20,
+  0x6e, 0x6f, 0x74, 0x65, 0x3a, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69,
+  0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65,
+  0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x6e,
+  0x61, 0x6d, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65,
+  0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46,
+  0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66,
+  0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+  0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x50, 0x65, 0x72, 0x66, 0x6f,
+  0x72, 0x6d, 0x20, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65,
+  0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+  0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x0a,
+  0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63,
+  0x64, 0x6f, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x22, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x62, 0x6f,
   0x6f, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71,
   0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65,
   0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-  0x3a, 0x20, 0x54, 0x72, 0x75, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-  0x3a, 0x20, 0x45, 0x6e, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61,
-  0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73,
-  0x74, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x70, 0x69, 0x65, 0x73, 0x20,
-  0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x61,
-  0x72, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-  0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x70,
-  0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x74,
-  0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74,
-  0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f,
+  0x6e, 0x3a, 0x20, 0x45, 0x6e, 0x73, 0x75, 0x72, 0x65, 0x20, 0x61, 0x20,
+  0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x63,
+  0x6f, 0x70, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43,
+  0x44, 0x4f, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72,
+  0x76, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77,
+  0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74,
+  0x20, 0x63, 0x6f, 0x70, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+  0x20, 0x43, 0x44, 0x4f, 0x20, 0x69, 0x73, 0x20, 0x57, 0x49, 0x54, 0x48,
+  0x44, 0x52, 0x41, 0x57, 0x4e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74,
+  0x68, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6f,
+  0x6f, 0x6c, 0x2e, 0x20, 0x28, 0x4e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68,
+  0x65, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x74, 0x72, 0x69, 0x76, 0x69, 0x61,
+  0x6c, 0x20, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x20, 0x69,
+  0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
-  0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x20,
-  0x69, 0x73, 0x20, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x6e,
-  0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74,
+  0x68, 0x65, 0x20, 0x63, 0x64, 0x6f, 0x2e, 0x64, 0x65, 0x73, 0x69, 0x73,
+  0x74, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e,
+  0x29, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20,
+  0x22, 0x63, 0x64, 0x6f, 0x2e, 0x64, 0x65, 0x73, 0x69, 0x73, 0x74, 0x22,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x62,
+  0x6f, 0x6f, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
+  0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73,
+  0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+  0x74, 0x3a, 0x20, 0x54, 0x72, 0x75, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f,
+  0x6e, 0x3a, 0x20, 0x45, 0x6e, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68,
+  0x61, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x73, 0x69,
+  0x73, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x70, 0x69, 0x65, 0x73,
+  0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x20,
+  0x61, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72,
+  0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20,
+  0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x73,
+  0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20,
+  0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x0a, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x20, 0x28,
-  0x4e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x6f, 0x6e,
-  0x2d, 0x74, 0x72, 0x69, 0x76, 0x69, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x6d,
-  0x61, 0x6e, 0x74, 0x69, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61,
-  0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+  0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f,
+  0x20, 0x69, 0x73, 0x20, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57,
+  0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x64,
-  0x6f, 0x2e, 0x64, 0x65, 0x73, 0x69, 0x73, 0x74, 0x20, 0x61, 0x74, 0x74,
-  0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x29, 0x0a, 0x0a, 0x20, 0x20,
-  0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e,
-  0x6d, 0x61, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x76,
-  0x69, 0x64, 0x65, 0x64, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
-  0x22, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a,
-  0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61,
-  0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61,
-  0x75, 0x6c, 0x74, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61,
-  0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-  0x74, 0x2f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x65, 0x20, 0x6d, 0x61, 0x65,
-  0x73, 0x74, 0x72, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
-  0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20,
-  0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x20,
+  0x28, 0x4e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x6f,
+  0x6e, 0x2d, 0x74, 0x72, 0x69, 0x76, 0x69, 0x61, 0x6c, 0x20, 0x73, 0x65,
+  0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72,
+  0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x28, 0x6e, 0x6f, 0x20, 0x52,
-  0x41, 0x57, 0x2d, 0x50, 0x54, 0x52, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20,
-  0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20,
-  0x6f, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x6f, 0x62,
-  0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x23,
+  0x20, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63,
+  0x64, 0x6f, 0x2e, 0x64, 0x65, 0x73, 0x69, 0x73, 0x74, 0x20, 0x61, 0x74,
+  0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x29, 0x0a, 0x0a, 0x20,
   0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f,
-  0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x6d, 0x6f, 0x64, 0x65,
-  0x22, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65,
-  0x3a, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x6d, 0x6f, 0x64,
-  0x65, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75,
-  0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a,
-  0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-  0x74, 0x3a, 0x20, 0x2a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x6d,
-  0x6f, 0x64, 0x65, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x0a, 0x20,
-  0x20, 0x23, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
-  0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x49, 0x6e, 0x64, 0x69,
-  0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68,
+  0x2e, 0x6d, 0x61, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x2d, 0x70, 0x72, 0x6f,
+  0x76, 0x69, 0x64, 0x65, 0x64, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,
+  0x65, 0x22, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65,
+  0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46,
+  0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66,
+  0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+  0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65,
+  0x73, 0x74, 0x2f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x65, 0x20, 0x6d, 0x61,
+  0x65, 0x73, 0x74, 0x72, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,
+  0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+  0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x28, 0x6e, 0x6f, 0x20,
+  0x52, 0x41, 0x57, 0x2d, 0x50, 0x54, 0x52, 0x20, 0x77, 0x69, 0x6c, 0x6c,
+  0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64,
+  0x20, 0x6f, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x6f,
+  0x62, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x29, 0x0a, 0x0a, 0x20, 0x20,
+  0x23, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64,
+  0x6f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x6d, 0x6f, 0x64,
+  0x65, 0x22, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70,
+  0x65, 0x3a, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x6d, 0x6f,
+  0x64, 0x65, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71,
+  0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65,
+  0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75,
+  0x6c, 0x74, 0x3a, 0x20, 0x2a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d,
+  0x6d, 0x6f, 0x64, 0x65, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x0a,
+  0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+  0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x49, 0x6e, 0x64,
+  0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74,
+  0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20,
+  0x62, 0x65, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20,
+  0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x0a,
+  0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x72, 0x65,
+  0x61, 0x64, 0x2d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x2c, 0x20, 0x72, 0x65,
+  0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x20, 0x65, 0x74, 0x63,
+  0x2e, 0x29, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79,
+  0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73,
+  0x66, 0x65, 0x72, 0x2d, 0x61, 0x73, 0x61, 0x70, 0x22, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c,
+  0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69,
+  0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20,
+  0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a,
+  0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74,
+  0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x20,
+  0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e,
+  0x73, 0x66, 0x65, 0x72, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x73, 0x6f,
+  0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x73,
+  0x20, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a,
+  0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64,
+  0x6f, 0x2e, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x2d, 0x70, 0x6f, 0x6f, 0x6c,
+  0x65, 0x64, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65,
+  0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46,
+  0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66,
+  0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+  0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63,
+  0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68,
   0x65, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62,
-  0x65, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x62,
-  0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x0a, 0x20,
-  0x20, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x72, 0x65, 0x61,
-  0x64, 0x2d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x2c, 0x20, 0x72, 0x65, 0x61,
-  0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x2e,
-  0x29, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a,
-  0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
-  0x65, 0x72, 0x2d, 0x61, 0x73, 0x61, 0x70, 0x22, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28,
-  0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
-  0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20, 0x46,
-  0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63,
-  0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20,
-  0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68,
-  0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x6d,
-  0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73,
-  0x66, 0x65, 0x72, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x73, 0x6f, 0x6f,
-  0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x73, 0x20,
-  0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x20,
+  0x65, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x75,
+  0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x4f, 0x46, 0x46, 0x45, 0x52, 0x2f, 0x44, 0x45, 0x4d, 0x41,
+  0x4e, 0x44, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x70, 0x6f,
+  0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x70, 0x65,
+  0x72, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f,
+  0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d,
+  0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x20,
+  0x20, 0x23, 0x23, 0x20, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65,
+  0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x23,
   0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f,
-  0x2e, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x2d, 0x70, 0x6f, 0x6f, 0x6c, 0x65,
-  0x64, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a,
-  0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x2e, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x0a, 0x20,
+  0x20, 0x23, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x6c,
+  0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x69, 0x6e, 0x74, 0x65,
+  0x72, 0x76, 0x61, 0x6c, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x72,
+  0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c,
+  0x73, 0x65, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63,
+  0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20,
+  0x43, 0x44, 0x4f, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65,
+  0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+  0x6f, 0x6e, 0x2e, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x2d, 0x20, 0x6b, 0x65,
+  0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x6c, 0x69, 0x66, 0x65,
+  0x74, 0x69, 0x6d, 0x65, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6e,
+  0x65, 0x73, 0x73, 0x22, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x74,
+  0x79, 0x70, 0x65, 0x3a, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d,
+  0x65, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73,
+  0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69,
+  0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20,
+  0x20, 0x23, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+  0x3a, 0x20, 0x2a, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x2d,
+  0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2d, 0x76,
+  0x61, 0x6c, 0x75, 0x65, 0x73, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f,
+  0x6e, 0x3a, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x74,
+  0x69, 0x6d, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63,
+  0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x0a, 0x20, 0x20, 0x23, 0x23, 0x20, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x20,
+  0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x2d, 0x20,
+  0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x73, 0x63,
+  0x6f, 0x70, 0x65, 0x2e, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x28,
+  0x6d, 0x69, 0x6e, 0x3d, 0x2d, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61,
   0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61,
-  0x75, 0x6c, 0x74, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20,
+  0x75, 0x6c, 0x74, 0x3a, 0x20, 0x2d, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f,
+  0x6e, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+  0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+  0x20, 0x43, 0x44, 0x4f, 0x2e, 0x20, 0x2d, 0x31, 0x20, 0x69, 0x6e, 0x64,
+  0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x55, 0x6e, 0x6b, 0x6e, 0x6f,
+  0x77, 0x6e, 0x2f, 0x55, 0x6e, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+  0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79,
+  0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x73, 0x63, 0x6f, 0x70, 0x65,
+  0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x22,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69,
+  0x6e, 0x74, 0x28, 0x6d, 0x69, 0x6e, 0x3d, 0x2d, 0x31, 0x29, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a,
+  0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20, 0x2d, 0x31, 0x0a, 0x20,
   0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61,
-  0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
-  0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65,
-  0x20, 0x43, 0x44, 0x4f, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65,
-  0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73,
-  0x65, 0x64, 0x20, 0x69, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x4f, 0x46, 0x46, 0x45, 0x52, 0x2f, 0x44, 0x45, 0x4d, 0x41, 0x4e,
-  0x44, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x70, 0x6f, 0x74,
-  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x70, 0x65, 0x72,
-  0x6d, 0x69, 0x74, 0x73, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72,
-  0x6d, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69,
-  0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x20, 0x20,
-  0x23, 0x23, 0x20, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x20,
-  0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x23, 0x20,
-  0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e,
-  0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x0a, 0x20, 0x20,
-  0x23, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x6c, 0x69,
-  0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72,
-  0x76, 0x61, 0x6c, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x72, 0x65,
-  0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73,
-  0x65, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75,
-  0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x43,
-  0x44, 0x4f, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x20,
-  0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
-  0x6e, 0x2e, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79,
-  0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x6c, 0x69, 0x66, 0x65, 0x74,
-  0x69, 0x6d, 0x65, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6e, 0x65,
-  0x73, 0x73, 0x22, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x74, 0x79,
-  0x70, 0x65, 0x3a, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65,
-  0x2d, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x0a,
-  0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
-  0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20,
-  0x23, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a,
-  0x20, 0x2a, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x73,
-  0x74, 0x72, 0x69, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2d, 0x76, 0x61,
-  0x6c, 0x75, 0x65, 0x73, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-  0x3a, 0x20, 0x43, 0x44, 0x4f, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69,
-  0x6d, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61,
-  0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a,
-  0x20, 0x20, 0x23, 0x23, 0x20, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x20, 0x72,
-  0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b,
-  0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x73, 0x63, 0x6f,
-  0x70, 0x65, 0x2e, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x6d,
-  0x69, 0x6e, 0x3d, 0x2d, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c,
-  0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75,
-  0x6c, 0x74, 0x3a, 0x20, 0x2d, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-  0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20,
-  0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
-  0x43, 0x44, 0x4f, 0x2e, 0x20, 0x2d, 0x31, 0x20, 0x69, 0x6e, 0x64, 0x69,
-  0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77,
-  0x6e, 0x2f, 0x55, 0x6e, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65,
-  0x64, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b, 0x65, 0x79, 0x3a,
-  0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x2e,
-  0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6e,
-  0x74, 0x28, 0x6d, 0x69, 0x6e, 0x3d, 0x2d, 0x31, 0x29, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20,
-  0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65,
-  0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x20, 0x2d, 0x31, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
-  0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x63,
-  0x61, 0x6c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74,
-  0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x2e, 0x20, 0x2d, 0x31, 0x20, 0x69,
-  0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x55, 0x6e, 0x6b,
-  0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x55, 0x6e, 0x61, 0x6c, 0x6c, 0x6f, 0x63,
-  0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x4c,
-  0x61, 0x79, 0x6f, 0x75, 0x74, 0x73, 0x0a, 0x20, 0x20, 0x2d, 0x20, 0x6b,
-  0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x73, 0x63, 0x6f,
-  0x70, 0x65, 0x2e, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x2e, 0x72, 0x65,
-  0x67, 0x75, 0x6c, 0x61, 0x72, 0x2d, 0x31, 0x64, 0x2e, 0x65, 0x6c, 0x65,
-  0x6d, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x75, 0x69, 0x6e,
-  0x74, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75,
-  0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a,
-  0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d,
-  0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x45, 0x6c,
-  0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x69,
-  0x6e, 0x20, 0x61, 0x20, 0x31, 0x2d, 0x64, 0x20, 0x72, 0x65, 0x67, 0x75,
-  0x6c, 0x61, 0x72, 0x20, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x0a, 0x0a,
-  0x20, 0x20, 0x23, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x64, 0x69, 0x6d,
-  0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x61, 0x79,
-  0x6f, 0x75, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x77, 0x69,
-  0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20,
-  0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x61, 0x6d, 0x62, 0x61, 0x0a, 0x20,
-  0x20, 0x23, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69,
-  0x6c, 0x69, 0x74, 0x79, 0x3b, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6e,
-  0x65, 0x65, 0x64, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x20, 0x61, 0x6e,
-  0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e,
-  0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72,
-  0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x6e, 0x61, 0x6d,
-  0x65, 0x64, 0x20, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x20, 0x73, 0x74,
-  0x79, 0x6c, 0x65, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x72, 0x6f,
-  0x77, 0x2d, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x2f, 0x63, 0x6f, 0x6c, 0x75,
-  0x6d, 0x6e, 0x2d, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x0a, 0x0a, 0x20, 0x20,
-  0x23, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69,
-  0x6f, 0x6e, 0x73, 0x0a, 0x0a, 0x0a, 0x23, 0x20, 0x28, 0x65, 0x6e, 0x64,
-  0x20, 0x6f, 0x66, 0x20, 0x6d, 0x61, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x2d,
-  0x63, 0x6f, 0x72, 0x65, 0x2e, 0x79, 0x61, 0x6d, 0x6c, 0x29, 0x0a, 0x0a
+  0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x6f,
+  0x63, 0x61, 0x6c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, 0x66, 0x20,
+  0x74, 0x68, 0x65, 0x20, 0x43, 0x44, 0x4f, 0x2e, 0x20, 0x2d, 0x31, 0x20,
+  0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x55, 0x6e,
+  0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x55, 0x6e, 0x61, 0x6c, 0x6c, 0x6f,
+  0x63, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x23, 0x20,
+  0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x73, 0x0a, 0x20, 0x20, 0x2d, 0x20,
+  0x6b, 0x65, 0x79, 0x3a, 0x20, 0x22, 0x63, 0x64, 0x6f, 0x2e, 0x73, 0x63,
+  0x6f, 0x70, 0x65, 0x2e, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x2e, 0x72,
+  0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2d, 0x31, 0x64, 0x2e, 0x65, 0x6c,
+  0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x75, 0x69,
+  0x6e, 0x74, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x71,
+  0x75, 0x69, 0x72, 0x65, 0x64, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+  0x3a, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75,
+  0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x45,
+  0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20,
+  0x69, 0x6e, 0x20, 0x61, 0x20, 0x31, 0x2d, 0x64, 0x20, 0x72, 0x65, 0x67,
+  0x75, 0x6c, 0x61, 0x72, 0x20, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x0a,
+  0x0a, 0x20, 0x20, 0x23, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x64, 0x69,
+  0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x61,
+  0x79, 0x6f, 0x75, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x77,
+  0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64,
+  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x61, 0x6d, 0x62, 0x61, 0x0a,
+  0x20, 0x20, 0x23, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62,
+  0x69, 0x6c, 0x69, 0x74, 0x79, 0x3b, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20,
+  0x6e, 0x65, 0x65, 0x64, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x20, 0x61,
+  0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2d, 0x64, 0x65, 0x66, 0x69,
+  0x6e, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x66, 0x6f,
+  0x72, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20, 0x23, 0x20, 0x6e, 0x61,
+  0x6d, 0x65, 0x64, 0x20, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x20, 0x73,
+  0x74, 0x79, 0x6c, 0x65, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x72,
+  0x6f, 0x77, 0x2d, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x2f, 0x63, 0x6f, 0x6c,
+  0x75, 0x6d, 0x6e, 0x2d, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x0a, 0x0a, 0x20,
+  0x20, 0x23, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+  0x69, 0x6f, 0x6e, 0x73, 0x0a, 0x0a, 0x0a, 0x23, 0x20, 0x28, 0x65, 0x6e,
+  0x64, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x61, 0x65, 0x73, 0x74, 0x72, 0x6f,
+  0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x79, 0x61, 0x6d, 0x6c, 0x29, 0x0a,
+  0x0a
 };
-const unsigned int maestro_core_yaml_len = 4224;
+const unsigned int maestro_core_yaml_len = 4933;
diff --git a/attributes/maestro-core.yaml b/attributes/maestro-core.yaml
index 7097c7685acbc87e7491da9e943ed13960fc157b..4e35705cc7d99147108a3efde774ea3986580687 100644
--- a/attributes/maestro-core.yaml
+++ b/attributes/maestro-core.yaml
@@ -38,7 +38,27 @@ maestro-attributes:
     required: True
     documentation: The unique name of the CDO
 
-  # note: the ID is not user-visible; it's synthetized during a workflow
+  # note: the ID is not user-visible; it's synthetized during a workflow, documented here only
+  # - key: "cdo.id"
+  #   type: cdoid
+  #   required: True
+  #   documentation: The unique ID of the CDO in the workflow
+
+  - key: cdo.raw-ptr
+    type: pointer()
+    required: False
+    default: NIL
+    documentation: A user-provided pointer of local storage associated with the CDO.
+
+  - key: cdo.mamba-array
+    type: pointer()
+    required: False
+    default: NIL
+    documentation: A mamba-array associated with the local storage of
+                   the CDO. Either a (1-d, non-padded, non-aligend)
+                   wrapper around the cdo.raw-ptr provided by the
+                   user, or maestro-allocated storage (if
+                   cdo.maestro-provided-storage is true)
 
   - key: "cdo.allocate-now" # note: this is a relative attribute name
     type: bool()
diff --git a/attributes/maestro-schema.c b/attributes/maestro-schema.c
index adc1a7ad61b7ab0f288cbe75e6d1d9b383407f3d..52b1088b3803d2383659f9aab4b7e0bb9e91b562 100644
--- a/attributes/maestro-schema.c
+++ b/attributes/maestro-schema.c
@@ -580,6 +580,9 @@ mstro_attribute_val__compute_size(enum mstro_stp_val_kind kind,
         *val_size = ((mstro_blob*)val)->len;
       }
       break;
+    case MSTRO_STP_POINTER:
+      *val_size = sizeof(void*);
+      break;
     default:
       ERR("Unexpected parsed type %d\n", kind);
       status=MSTRO_UNIMPL;
@@ -587,6 +590,7 @@ mstro_attribute_val__compute_size(enum mstro_stp_val_kind kind,
   return status;
 }
 
+#define POINTER_PATTERN ("NIL|NULL|((0x)?[0-9]+)")
 /* parse a string according to type specification of the attribute.
  * Store freshly-allocated value in **val_p, and the size in *val_size.
  */
@@ -689,6 +693,10 @@ mstro_attribute_val_parse(const struct mstro_stp_val *parsed_type, const char *s
     case MSTRO_STP_TIMESTAMP:
       err = regcomp(&(regex[0]), RFC3339_PATTERN, REG_EXTENDED);
       break;
+      
+    case MSTRO_STP_POINTER:
+      err = regcomp(&(regex[0]), POINTER_PATTERN, REG_EXTENDED|REG_ICASE);
+      break;
 
     default:
       ERR("Unexpected parsed type %d\n", parsed_type->kind);
@@ -785,8 +793,19 @@ mstro_attribute_val_parse(const struct mstro_stp_val *parsed_type, const char *s
           ERR("Failed to parse timestamp value |%s| as rfc3339-timestamp\n");
         }
         break;
-
-    default:
+      case MSTRO_STP_POINTER: {
+        uintptr_t val;
+        if(strcasecmp(string, "NIL")==0)
+          val=0;
+        else if(strcasecmp(string, "NULL")==0)
+          val=0;
+        else 
+          val= strtoumax((const char*)string, NULL, 0);
+        *val_p = (void*)val;
+        DEBUG("parsed val %s as pointer %p\n", string, *val_p);
+        break;
+      }
+      default:
         ERR("Unexpected parsed type %d\n", parsed_type->kind);
         s=MSTRO_UNIMPL;
     }
@@ -967,13 +986,13 @@ mstro_schema_validate_and_instantiate(mstro_schema schema)
     }
         
     /* check that attribute has value type */
-    DEBUG("Attribute |%s| type |%s|, required %s, default %s [parsed %s], doc: %s\n",
+    DEBUG("Attribute |%s| type |%s|, required %s, default %s [parsed as %p], doc: %s\n",
           mstro_symbol_name(current->key_symbol),
           current->typespec,
           current->required ? "YES" : "NO",
           //"?"//
           current->defaultval_string ? current->defaultval_string : "(none)",
-          current->defaultval == NULL ? "NOT OK" : "ok",
+          current->defaultval,
           current->documentation ? current->documentation : "(none)"
           );
   }
@@ -1126,6 +1145,7 @@ enum mstro_schema_builtin_type {
   MSTRO_SCHEMA_BUILTIN_REGEX,
   MSTRO_SCHEMA_BUILTIN_BLOB,
   MSTRO_SCHEMA_BUILTIN_TIMESTAMP,
+  MSTRO_SCHEMA_BUILTIN_POINTER,
   MSTRO_SCHEMA_BUILTIN_TYPE__MAX
 };
   
@@ -1159,8 +1179,11 @@ static struct {
                                     .basename = "blob",
                                     .stp_kind = MSTRO_STP_BLOB},
   [MSTRO_SCHEMA_BUILTIN_TIMESTAMP] = { .type = MSTRO_SCHEMA_BUILTIN_TIMESTAMP,
-                                    .basename = "timestamp",
-                                    .stp_kind = MSTRO_STP_TIMESTAMP}
+                                       .basename = "timestamp",
+                                       .stp_kind = MSTRO_STP_TIMESTAMP},
+  [MSTRO_SCHEMA_BUILTIN_POINTER] = { .type = MSTRO_SCHEMA_BUILTIN_POINTER,
+                                     .basename = "pointer",
+                                     .stp_kind = MSTRO_STP_POINTER},
 };
 
 /** lookup or create builtin type */
@@ -2009,7 +2032,8 @@ mstro_attribute_dict__insert_default(mstro_attribute_dict dict,
     case MSTRO_STP_STR:
     case MSTRO_STP_REGEX: 
     case MSTRO_STP_BLOB:
-    case MSTRO_STP_TIMESTAMP: 
+    case MSTRO_STP_TIMESTAMP:
+    case MSTRO_STP_POINTER:
       memcpy(entry->val, attr->defaultval, entry->valsize);
       break;
     default:
@@ -2107,8 +2131,10 @@ mstro_attribute_dict_get(mstro_attribute_dict dict,
   /* return value */
   if(entry_p) 
     *entry_p = entry;
-  if(val_p)
+  if(val_p) {
     *val_p = entry->val;
+    DEBUG("returning val %p\n", entry->val);
+  }
   if(valtype) {
     switch(entry->kind) {
       case MSTRO_STP_BOOL:
@@ -2136,6 +2162,9 @@ mstro_attribute_dict_get(mstro_attribute_dict dict,
       case MSTRO_STP_TIMESTAMP:
         *valtype = MSTRO_CDO_ATTR_VALUE_timestamp;
         break;
+      case MSTRO_STP_POINTER:
+        *valtype = MSTRO_CDO_ATTR_VALUE_pointer;
+        break;
       default:
         ERR("Unhandled MSTRO_STP attribute type %d\n", entry->kind);
         status=MSTRO_UNIMPL;
@@ -2305,7 +2334,7 @@ mstro_attribute_dict_set(mstro_attribute_dict dict, const char *key,
     goto BAILOUT;
   }
 
-  DEBUG("Set value on entry |%s|\n", fqkey);
+  DEBUG("Set value on entry |%s| (val: %p)\n", fqkey, entry->val);
 
   switch(entry->kind) {
     case MSTRO_STP_STR:
diff --git a/attributes/schema_type_parse.c b/attributes/schema_type_parse.c
index 3738e65278928147e45d1317441b5341dcff6758..bb1d3d442e12faf6c6935babed6bc96dbbae42f6 100644
--- a/attributes/schema_type_parse.c
+++ b/attributes/schema_type_parse.c
@@ -145,6 +145,9 @@ mstro_stp_val_alloc(enum mstro_stp_val_kind kind)
         case MSTRO_STP_DOUBLEVAL:
         case MSTRO_STP_BOOLVAL:
         case MSTRO_STP_TIMESTAMP:
+        case MSTRO_STP_POINTER:
+        break;
+
         break;
 
       default:
@@ -1228,6 +1231,20 @@ static void pcc_action_builtin_type_name_8(mstro_stp_context_t *__pcc_ctx, pcc_t
 #undef auxil
 }
 
+static void pcc_action_builtin_type_name_9(mstro_stp_context_t *__pcc_ctx, pcc_thunk_t *__pcc_in, pcc_value_t *__pcc_out) {
+#define auxil (__pcc_ctx->auxil)
+#define __ (*__pcc_out)
+#define _0 pcc_get_capture_string(__pcc_ctx, &__pcc_in->data.leaf.capt0)
+#define _0s ((const)__pcc_in->data.leaf.capt0.range.start)
+#define _0e ((const)__pcc_in->data.leaf.capt0.range.end)
+    __ = mstro_stp_val_alloc(MSTRO_STP_POINTER);   DEBUG("found pointer\n"); 
+#undef _0e
+#undef _0s
+#undef _0
+#undef __
+#undef auxil
+}
+
 static void pcc_action_user_type_name_0(mstro_stp_context_t *__pcc_ctx, pcc_thunk_t *__pcc_in, pcc_value_t *__pcc_out) {
 #define auxil (__pcc_ctx->auxil)
 #define __ (*__pcc_out)
@@ -2209,6 +2226,29 @@ static pcc_thunk_chunk_t *pcc_evaluate_rule_builtin_type_name(mstro_stp_context_
         }
         goto L0001;
     L0010:;
+        ctx->pos = p;
+        pcc_thunk_array__revert(ctx->auxil, &chunk->thunks, n);
+        {
+            if (
+                pcc_refill_buffer(ctx, 7) < 7 ||
+                (ctx->buffer.buf + ctx->pos)[0] != 'p' ||
+                (ctx->buffer.buf + ctx->pos)[1] != 'o' ||
+                (ctx->buffer.buf + ctx->pos)[2] != 'i' ||
+                (ctx->buffer.buf + ctx->pos)[3] != 'n' ||
+                (ctx->buffer.buf + ctx->pos)[4] != 't' ||
+                (ctx->buffer.buf + ctx->pos)[5] != 'e' ||
+                (ctx->buffer.buf + ctx->pos)[6] != 'r'
+            ) goto L0011;
+            ctx->pos += 7;
+        }
+        {
+            pcc_thunk_t *const thunk = pcc_thunk__create_leaf(ctx->auxil, pcc_action_builtin_type_name_9, 0, 0);
+            thunk->data.leaf.capt0.range.start = chunk->pos;
+            thunk->data.leaf.capt0.range.end = ctx->pos;
+            pcc_thunk_array__add(ctx->auxil, &chunk->thunks, thunk);
+        }
+        goto L0001;
+    L0011:;
         ctx->pos = p;
         pcc_thunk_array__revert(ctx->auxil, &chunk->thunks, n);
         goto L0000;
@@ -3724,6 +3764,8 @@ mstro_stp_val__describe(const struct mstro_stp_val *v)
     case MSTRO_STP_TIMESTAMP:
       DEBUG("v kind: TIMESTAMP\n");
       break;
+    case MSTRO_STP_POINTER:
+      DEBUG("v kind: POINTER\n"); break;
 
     case MSTRO_STP_BOOLVAL:
     case MSTRO_STP_MININT:
@@ -3766,6 +3808,12 @@ mstro_stp_val__build_restricted_type(
         leftovers = args;
       };
       break;
+    case MSTRO_STP_POINTER:
+      if(args!=NULL) {
+        ERR("pointer type does not accept type restrictions, ignoring them\n");
+        leftovers = args;
+      };
+      break;
  
    /* pick out the ones we understand, accumulate the rest in leftovers */
     case MSTRO_STP_UINT: {
diff --git a/attributes/schema_type_parse.h b/attributes/schema_type_parse.h
index 2ab578d227e41ada69890c51ce92d033e0eccee8..06010e6d5e20596371efc716658f0c474f509f23 100644
--- a/attributes/schema_type_parse.h
+++ b/attributes/schema_type_parse.h
@@ -43,7 +43,9 @@ enum mstro_stp_val_kind {
   MSTRO_STP_DOUBLE,
   MSTRO_STP_STR,
   MSTRO_STP_REGEX,
-  MSTRO_STP_BLOB
+  MSTRO_STP_BLOB,
+  MSTRO_STP_POINTER
+
 };
 
 /** User-facing: Protobuf imposes a size limit on strings and blobs
diff --git a/attributes/schema_type_parse.peg b/attributes/schema_type_parse.peg
index 2c9e9f38764390f0115d54ef7f77989172978733..739d3dcd9f88bab535627e6ed6c9bafaceffedac 100644
--- a/attributes/schema_type_parse.peg
+++ b/attributes/schema_type_parse.peg
@@ -131,6 +131,9 @@ mstro_stp_val_alloc(enum mstro_stp_val_kind kind)
 	case MSTRO_STP_DOUBLEVAL:
 	case MSTRO_STP_BOOLVAL:
 	case MSTRO_STP_TIMESTAMP:
+	case MSTRO_STP_POINTER:
+        break;
+
 	break;
 	  
       default:
@@ -205,7 +208,9 @@ enum mstro_stp_val_kind {
   MSTRO_STP_DOUBLE,
   MSTRO_STP_STR,
   MSTRO_STP_REGEX,
-  MSTRO_STP_BLOB
+  MSTRO_STP_BLOB,
+  MSTRO_STP_POINTER
+  
 };
 
 /** User-facing: Protobuf imposes a size limit on strings and blobs
@@ -326,6 +331,7 @@ builtin_type_name <-
 		  / "str"    { $$ = mstro_stp_val_alloc(MSTRO_STP_STR);    DEBUG("found str\n");   }
 		  / "blob"   { $$ = mstro_stp_val_alloc(MSTRO_STP_BLOB);   DEBUG("found blob\n");  }
 		  / "timestamp" { $$ = mstro_stp_val_alloc(MSTRO_STP_TIMESTAMP); DEBUG("found timestamp\n"); }
+		  / "pointer"   { $$ = mstro_stp_val_alloc(MSTRO_STP_POINTER);   DEBUG("found pointer\n"); }
 
 ## user-defined types are a name suitable for a maestro schema yaml
 ##   attribute key, possibly including (parts of) a namespace prefix
@@ -674,6 +680,8 @@ mstro_stp_val__describe(const struct mstro_stp_val *v)
     case MSTRO_STP_TIMESTAMP:
       DEBUG("v kind: TIMESTAMP\n");
       break;
+    case MSTRO_STP_POINTER:
+      DEBUG("v kind: POINTER\n"); break;
 
     case MSTRO_STP_BOOLVAL:
     case MSTRO_STP_MININT:
@@ -716,6 +724,12 @@ mstro_stp_val__build_restricted_type(
         leftovers = args;
       };
       break;
+    case MSTRO_STP_POINTER:
+      if(args!=NULL) {
+        ERR("pointer type does not accept type restrictions, ignoring them\n");
+        leftovers = args;
+      };
+      break;
  
    /* pick out the ones we understand, accumulate the rest in leftovers */
     case MSTRO_STP_UINT: {
diff --git a/include/maestro/attributes.h b/include/maestro/attributes.h
index ed2d3e64c904ac45579b6dfdf5c19d660d8c937f..3bbaddb01a38df7815204d325446d3c643ad62a7 100644
--- a/include/maestro/attributes.h
+++ b/include/maestro/attributes.h
@@ -230,6 +230,8 @@ enum mstro_cdo_attr_value_type {
   MSTRO_CDO_ATTR_VALUE_timestamp, /**< castable to mstro_timestamp */
   MSTRO_CDO_ATTR_VALUE_cdoid,     /**< castable to mstro_cdo_id */
 
+  MSTRO_CDO_ATTR_VALUE_pointer,   /**< castable to void*. Not transmitted to other localities. */
+
   /* WIP: */
   /* Mamba layout spec */
   MSTRO_CDO_ATTR_VALUE_layout,
diff --git a/include/maestro/cdo.h b/include/maestro/cdo.h
index 5ae0f24e90aca2f05c24009b82394a4ce82eeacb..c9a185e216f132904013a90ca4f50be9ea9e09ef 100644
--- a/include/maestro/cdo.h
+++ b/include/maestro/cdo.h
@@ -110,7 +110,7 @@ mstro_cdo_declare(const char *name,
  ** @returns A status code, ::MSTRO_OK on success.
  **/
 mstro_status
-mstro_cdo_access_ptr(mstro_cdo cdo, void **data, uint64_t *data_len);
+mstro_cdo_access_ptr(mstro_cdo cdo, void **data, int64_t *data_len);
 
 /** @brief Access the mamba-array view of the buffer of a CDO
  **
diff --git a/include/maestro/i_cdo.h b/include/maestro/i_cdo.h
index d4095bed7f71bf331e63b492369052cebec951d4..36eda4bdad0dffb588783f9d88a618ca40715e6e 100644
--- a/include/maestro/i_cdo.h
+++ b/include/maestro/i_cdo.h
@@ -278,7 +278,9 @@ struct mstro_cdo_ {
 
   char *name;                    /**< user-provided name */
 
-  /* data related */
+  /* Cached copies of the data attributes. Caching occirs at SEAL
+   * time, after which the attribute setters will refuse chaning the
+   * dictionary entries, so caching is safe */
   void *raw_ptr;                 /**< user-provided pointer (if any) */
   mmbArray *mamba_array;         /**< the mamba array for handling content (if any) */
   
diff --git a/maestro/cdo.c b/maestro/cdo.c
index 76e7d92a527c7b490740e7b2cfd7030bba01512a..059f44799e8f17bb8d04a552c7881bad6d2cce5a 100644
--- a/maestro/cdo.c
+++ b/maestro/cdo.c
@@ -384,48 +384,78 @@ mstro_cdo_declaration_seal(mstro_cdo cdo)
     return MSTRO_INVARG;
   }
 
+  void *raw_ptr=NULL;
+  mmbArray *mamba_array=NULL;
+
+  mstro_status s_rawptr = mstro_attribute_dict_get(
+      cdo->attributes, MSTRO_ATTR_CORE_CDO_RAW_PTR,
+      NULL, (const void**)&raw_ptr, NULL);
+  mstro_status s_marray = mstro_attribute_dict_get(
+      cdo->attributes, MSTRO_ATTR_CORE_CDO_MAMBA_ARRAY,
+      NULL, (const void**)&mamba_array, NULL);
+
+  if(s_rawptr!=MSTRO_OK) {
+    if(s_rawptr==MSTRO_NOENT) {
+      ; /* maybe ok */
+    } else {
+      ERR("Cannot retrieve CDO raw-ptr: %d\n", s_rawptr);
+      return s_rawptr;
+    }
+  }
+  if(s_marray!=MSTRO_OK) {
+    if(s_marray==MSTRO_NOENT) {
+      ; /* maybe ok */
+    } else {
+      ERR("Cannot retrieve CDO mamba-array: %d\n", s_marray);
+      return s_marray;
+    }
+  }
 
-  /* /\* Parse once and for all attributes yaml string. *\/ */
-  /*   status = mstro_cdo_attributes_parse_string(cdo); */
-  /* if (status != MSTRO_OK) { */
-  /*   ERR("CDO `%s` yaml attribute parse failed\n", cdo->name); */
-  /*   goto BAILOUT; */
-  /* } */
-  void *raw_ptr;
-  mmbArray *mamba_array;
-
-  if(cdo->raw_ptr!=NULL && cdo->mamba_array!=NULL) {
-    ERR("CDO `%s` has both raw_ptr and existing mamba_array, unsupported\n",
+  DEBUG("Raw ptr %p, mamba_array %p\n", raw_ptr, mamba_array);
+  if(raw_ptr!=NULL && mamba_array!=NULL) {
+    ERR("CDO `%s` has both raw-ptr and existing mamba-array set at SEAL time, unsupported\n",
         cdo->name);
     status=MSTRO_FAIL;
     goto BAILOUT;
   }
 
+  /* we will cache these two attributes, as the user can not change
+   * them anymore and we'd like all mamba core code to be able to
+   * avoid dictionary lookups for them */
+  assert(cdo->raw_ptr==NULL && cdo->mamba_array==NULL);
+  
+  /* one of the two will be NULL; both means type-0 CDO, which is also ok */
+  cdo->raw_ptr = raw_ptr;
+  cdo->mamba_array = mamba_array;
+  
   if(cdo->mamba_array!=NULL) {
     DEBUG("CDO `%s` has mamba_array set already\n", cdo->name);
   } else if(cdo->raw_ptr!=NULL) {
-    uint64_t raw_ptr_size; /* size_t is not portable enough, so the schema says '64 bit' */
-    void * val;
-    enum mstro_cdo_attr_value_type type;
-    status = mstro_cdo_attr_table__lookup(
-        cdo,
-        /* FIXME: should use the well-defined one FQAN */
-        "local_size",
-        &type, &val);
-    /* DEBUG("Retrieved size attribute: type %d, val %p, *val %" PRIu64 "\n", */
-    /*       type, val, *((uint64_t *)val)); */
+    /* create mamba array for raw ptr */
+    int64_t raw_ptr_size; /* size_t is not portable enough, so the schema says '64 bit int' */
+    const int64_t * val;
+    status = mstro_cdo_attribute_get(cdo, MSTRO_ATTR_CORE_CDO_SCOPE_LOCAL_SIZE, NULL, (const void**)&val);
+    
+    /* DEBUG("Retrieved size attribute: type %d, val %p, *val %" PRIi64 "\n", */
+    /*       type, val, *((int64_t *)val)); */
     if(status!=MSTRO_OK) {
-      ERR("Failed to find size attribute but have raw-ptr\n");
+      ERR("CDO %s has raw-ptr attribute but no local-size, unsupported\n",
+          cdo->name);
       goto BAILOUT;
     }
 
-    raw_ptr_size = *((uint64_t* const) val);
+    raw_ptr_size = *val;
+    if(raw_ptr_size<0 && cdo->raw_ptr!=NULL) {
+      ERR("CDO %s has negative local-size but non-NULL raw-ptr, unsupported\n", cdo->name);
+      return MSTRO_FAIL;
+    }
+          
     /*DEBUG("CDO `%s' has raw-ptr %p and local size %zu\n",
      *     cdo->name, cdo->raw_ptr, raw_ptr_size); */
     
     mmbLayout *layout=NULL;
 
-    assert(sizeof(uint64_t)<=sizeof(size_t));
+    assert(sizeof(int64_t)<=sizeof(size_t));
     size_t size = (size_t) raw_ptr_size;
     mmbDimensions dims = {1, &size};
     mmbError stat = mmb_layout_create_regular_1d(sizeof(char), MMB_PADDING_NONE, &layout);
@@ -458,10 +488,15 @@ mstro_cdo_declaration_seal(mstro_cdo cdo)
       status = MSTRO_FAIL;
       goto BAILOUT;
     }
+    status = mstro_cdo_attribute_set(cdo, MSTRO_ATTR_CORE_CDO_MAMBA_ARRAY, cdo->mamba_array);
+    if(status!=MSTRO_OK) {
+      ERR("Failed to store mamba-array attribute for CDO %s\n", cdo->name);
+      return status;
+    }
   } else {
     ; /* WARN("Sealing CDO `%s`, but no raw-ptr\n"); */
   }
-
+  
   /* we're done, but we need to ensure we've seen the DECLARE_ACK with
    * the global ID by now */
   mstro_cdo_block_until(cdo, MSTRO_CDO_STATE_DECLARED, "DECLARE");
@@ -998,7 +1033,7 @@ mstro_cdo_accessible(mstro_cdo cdo)
 
 
 mstro_status
-mstro_cdo_access_ptr(mstro_cdo cdo, void **data, uint64_t *data_len)
+mstro_cdo_access_ptr(mstro_cdo cdo, void **data, int64_t *data_len)
 {
   if(cdo==NULL)
     return MSTRO_INVARG;
@@ -1009,21 +1044,32 @@ mstro_cdo_access_ptr(mstro_cdo cdo, void **data, uint64_t *data_len)
     ERR("CDO not currently accessible\n");
     return MSTRO_INVARG;
   }
-    
+
+  mstro_status s=MSTRO_OK;
+
+  /* we can't simply use cdo->raw_ptr, as we may not have a sealed CDO */
   
+  /* we need a r/w ref, so don't call the public CDO API. FIXME: do not cast away constness here... */
   if(data!=NULL) {
-    *data = cdo->raw_ptr;
+    void *ptr=NULL;
+    
+    s = mstro_attribute_dict_get(cdo->attributes,
+                                 MSTRO_ATTR_CORE_CDO_RAW_PTR,
+                                 NULL, (const void**)&ptr, NULL);
+    if(s!=MSTRO_OK) {
+      ERR("Cannot retrieve the raw-ptr on CDO\n");
+      return s;
+    }
+    *data = ptr;
   }
   if(data_len!=NULL) {
-    void *len;
-    mstro_status s = mstro_cdo_attr_table__lookup(
-        cdo,
-        /* FIXME: should use the well-defined one FQAN */
-        "local_size",
-        NULL, &len);
-    *data_len = *((uint64_t*)len);
+    const int64_t *tmp;
+    s = mstro_attribute_dict_get(cdo->attributes,
+                                 MSTRO_ATTR_CORE_CDO_SCOPE_LOCAL_SIZE,
+                                 NULL,(const void**)&tmp, NULL);
+    *data_len = *tmp;
   }
-  return MSTRO_OK;
+  return s;
 }
 
 mstro_status
diff --git a/tests/check_pool_local_rawptr.c b/tests/check_pool_local_rawptr.c
index a5e2e9c809122fc874a001601b7326a36f390ad3..37d8f7bbea22f6d07f834923cc40baaf0405e8f9 100644
--- a/tests/check_pool_local_rawptr.c
+++ b/tests/check_pool_local_rawptr.c
@@ -66,7 +66,7 @@ CHEAT_TEST(cdo_local_pool_works,
            char scope_string[128];
            snprintf(scope_string, 128,
                     "scope:\n"
-                    "  local_size: %zu", sizeof(src_data));
+                    "  local-size: %zu", sizeof(src_data));
            fprintf(stdout, "Using scope string: `%s`\n", scope_string);
                     
            cheat_assert(MSTRO_OK == mstro_cdo_attribute_set_yaml(src_cdo, scope_string));
diff --git a/tests/check_pool_mamba.c b/tests/check_pool_mamba.c
index ed21aff915c332d361da8f7a441c1c91fd8fb97b..387c0c36c796cc8df01c38f15184509d2a2e82de 100644
--- a/tests/check_pool_mamba.c
+++ b/tests/check_pool_mamba.c
@@ -64,13 +64,45 @@ CHEAT_TEST(cdo_local_pool_mamba_works,
            cheat_assert(MSTRO_OK
                         == mstro_cdo_attribute_set(
                             cdo, ".maestro.core.cdo.scope.local-size", &size));
+           
+           mmbArray *mamba_ptr=NULL;
+           /* mamba array not automatically available */
+           mstro_status s1 = mstro_cdo_attribute_get(
+               cdo, ".maestro.core.cdo.mamba-array", &type, (const void**)&mamba_ptr);
+           
+           fprintf(stderr,"Mamba array fetch stat 1: %d, val %p\n", s1, mamba_ptr);
+           
+           cheat_assert(MSTRO_NOENT==s1);
 
+           /* requesting it does not create it */
+           mmbArray *tmp=NULL;
+           cheat_assert(MSTRO_OK==mstro_cdo_access_mamba_array(cdo,&tmp));
+           cheat_assert(tmp==NULL);
+           
+           /* now seal */
            cheat_assert(MSTRO_OK == mstro_cdo_declaration_seal(cdo));
+           
 
            cheat_assert(MSTRO_OK
                         == mstro_cdo_access_ptr(
                             cdo, &rec, NULL));
            fprintf(stderr, "rec: %p\n", (float*)rec);
+           cheat_assert(rec==buf);
+
+           /* afterwards we can also get mamba array as an attribute */                        
+           cheat_assert(MSTRO_OK
+                        == mstro_cdo_attribute_get(
+                            cdo, ".maestro.core.cdo.mamba-array", &type, (const void**)&mamba_ptr));
+           cheat_assert(type==MSTRO_CDO_ATTR_VALUE_pointer);
+           cheat_assert(mamba_ptr!=NULL);
+
+           /* and through mamba-array API */
+           cheat_assert(MSTRO_OK==mstro_cdo_access_mamba_array(cdo,&tmp));
+           cheat_assert(tmp!=NULL);
+
+           /* an they are the same */
+           cheat_assert(tmp==mamba_ptr);
+
 
            cheat_assert(MSTRO_OK == mstro_cdo_offer(cdo));
            cheat_assert(MSTRO_OK == mstro_cdo_withdraw(cdo));