@doctorus/common 0.0.41 → 0.0.42

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 CHANGED
@@ -51,10 +51,10 @@ Defines typed actions, resources, and `Operation` pairs used for authorization,
51
51
  ```ts
52
52
  import { Action, Operation, Resource, getOperationLabel } from '@doctorus/common';
53
53
 
54
- const operation = new Operation(Action.CREATE, Resource.PRESCRIPTION);
54
+ const operation = new Operation(Resource.PRESCRIPTION, Action.CREATE);
55
55
 
56
56
  getOperationLabel(operation, 'us-EN'); // "Create Prescription"
57
- getOperationLabel(operation, 'fr-FR'); // "Créer Ordonnance"
57
+ getOperationLabel(operation, 'fr-FR'); // "Creer Ordonnance"
58
58
  ```
59
59
 
60
60
  [Operations documentation](src/operations/README.md)
@@ -1,61 +1,35 @@
1
1
  /**
2
- * Action types for operations.
3
- *
4
- * The GraphQL schema's ActionType enum is intentionally not treated as the
5
- * source of truth here. This package keeps a richer application-level action
6
- * vocabulary for authorization, audit logging, and UI labels.
2
+ * Action types aligned with the permission catalog architecture.
7
3
  */
8
4
  export declare enum Action {
9
5
  CREATE = "CREATE",
10
- READ = "READ",
11
6
  DELETE = "DELETE",
12
- RETRIEVE = "RETRIEVE",
13
- UPDATE = "UPDATE",
14
- PUT = "PUT",
15
- LIST = "LIST",
16
- MANAGE = "MANAGE",
7
+ DISABLE = "DISABLE",
8
+ ENABLE = "ENABLE",
9
+ RECOVER = "RECOVER",
10
+ TRANSFER_OWNERSHIP = "TRANSFER_OWNERSHIP",
17
11
  VIEW = "VIEW",
18
- SEARCH = "SEARCH",
19
- GRANT = "GRANT",
20
- REVOKE = "REVOKE",
21
- PRESCRIBE = "PRESCRIBE",
22
- DIAGNOSE = "DIAGNOSE",
23
- SCHEDULE = "SCHEDULE",
12
+ UPDATE = "UPDATE",
13
+ ROTATE_TOKEN = "ROTATE_TOKEN",
14
+ GENERATE = "GENERATE",
15
+ PREVIEW = "PREVIEW",
24
16
  CANCEL = "CANCEL",
25
- APPROVE = "APPROVE",
26
- REJECT = "REJECT",
27
- SIGN = "SIGN",
28
- VERIFY = "VERIFY",
29
- RECOVER = "RECOVER",
30
- DISABLE = "DISABLE",
31
- SET_MEDICAL_SERVICE_STATUS = "SET_MEDICAL_SERVICE_STATUS",
32
- SET_MEDICAL_SERVICE_FEES = "SET_MEDICAL_SERVICE_FEES",
33
17
  CHECK_IN = "CHECK_IN",
18
+ COMPLETE = "COMPLETE",
19
+ REOPEN = "REOPEN",
20
+ RESET = "RESET",
21
+ START = "START",
22
+ UNDO_CANCEL = "UNDO_CANCEL",
34
23
  UNDO_CHECK_IN = "UNDO_CHECK_IN",
35
- START_SERVICE = "START_SERVICE",
36
- UNSTART_SERVICE = "UNSTART_SERVICE",
37
- COMPLETE_SERVICE = "COMPLETE_SERVICE",
38
- REOPEN_COMPLETED_SERVICE = "REOPEN_COMPLETED_SERVICE",
39
- CANCEL_SERVICE = "CANCEL_SERVICE",
40
- UNDO_CANCEL_SERVICE = "UNDO_CANCEL_SERVICE",
41
- FORCE_RESET_STATUS = "FORCE_RESET_STATUS",
42
- CORRECT_TIMESTAMPS = "CORRECT_TIMESTAMPS",
24
+ UNSTART = "UNSTART",
25
+ ASSIGN = "ASSIGN",
43
26
  UPDATE_STATUS = "UPDATE_STATUS",
44
- VIEW_PATIENTS = "VIEW_PATIENTS",
45
- PUT_PATIENT_PAYMENT = "PUT_PATIENT_PAYMENT",
46
- DELETE_PATIENT_PAYMENT = "DELETE_PATIENT_PAYMENT",
47
- EXPORT = "EXPORT",
48
- IMPORT = "IMPORT",
49
- ARCHIVE = "ARCHIVE",
50
- RESTORE = "RESTORE",
51
- SHARE = "SHARE",
52
- DOWNLOAD = "DOWNLOAD",
53
- UPLOAD = "UPLOAD",
54
- ENABLE_CALENDAR_SYNC = "ENABLE_CALENDAR_SYNC",
55
- DISABLE_CALENDAR_SYNC = "DISABLE_CALENDAR_SYNC",
56
- REGENERATE_CALENDAR_LINK = "REGENERATE_CALENDAR_LINK",
57
- LOGIN = "LOGIN",
58
- LOGOUT = "LOGOUT",
59
- CONFIGURE = "CONFIGURE",
60
- AUDIT = "AUDIT"
27
+ UPDATE_SCHEDULE = "UPDATE_SCHEDULE",
28
+ CORRECT_TIMESTAMPS = "CORRECT_TIMESTAMPS",
29
+ UPDATE_TYPE = "UPDATE_TYPE",
30
+ SEARCH = "SEARCH",
31
+ ASSIGN_ROLES = "ASSIGN_ROLES",
32
+ INVITE = "INVITE",
33
+ REMOVE = "REMOVE",
34
+ UPLOAD = "UPLOAD"
61
35
  }
@@ -2,65 +2,39 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Action = void 0;
4
4
  /**
5
- * Action types for operations.
6
- *
7
- * The GraphQL schema's ActionType enum is intentionally not treated as the
8
- * source of truth here. This package keeps a richer application-level action
9
- * vocabulary for authorization, audit logging, and UI labels.
5
+ * Action types aligned with the permission catalog architecture.
10
6
  */
11
7
  var Action;
12
8
  (function (Action) {
13
9
  Action["CREATE"] = "CREATE";
14
- Action["READ"] = "READ";
15
10
  Action["DELETE"] = "DELETE";
16
- Action["RETRIEVE"] = "RETRIEVE";
17
- Action["UPDATE"] = "UPDATE";
18
- Action["PUT"] = "PUT";
19
- Action["LIST"] = "LIST";
20
- Action["MANAGE"] = "MANAGE";
11
+ Action["DISABLE"] = "DISABLE";
12
+ Action["ENABLE"] = "ENABLE";
13
+ Action["RECOVER"] = "RECOVER";
14
+ Action["TRANSFER_OWNERSHIP"] = "TRANSFER_OWNERSHIP";
21
15
  Action["VIEW"] = "VIEW";
22
- Action["SEARCH"] = "SEARCH";
23
- Action["GRANT"] = "GRANT";
24
- Action["REVOKE"] = "REVOKE";
25
- Action["PRESCRIBE"] = "PRESCRIBE";
26
- Action["DIAGNOSE"] = "DIAGNOSE";
27
- Action["SCHEDULE"] = "SCHEDULE";
16
+ Action["UPDATE"] = "UPDATE";
17
+ Action["ROTATE_TOKEN"] = "ROTATE_TOKEN";
18
+ Action["GENERATE"] = "GENERATE";
19
+ Action["PREVIEW"] = "PREVIEW";
28
20
  Action["CANCEL"] = "CANCEL";
29
- Action["APPROVE"] = "APPROVE";
30
- Action["REJECT"] = "REJECT";
31
- Action["SIGN"] = "SIGN";
32
- Action["VERIFY"] = "VERIFY";
33
- Action["RECOVER"] = "RECOVER";
34
- Action["DISABLE"] = "DISABLE";
35
- Action["SET_MEDICAL_SERVICE_STATUS"] = "SET_MEDICAL_SERVICE_STATUS";
36
- Action["SET_MEDICAL_SERVICE_FEES"] = "SET_MEDICAL_SERVICE_FEES";
37
21
  Action["CHECK_IN"] = "CHECK_IN";
22
+ Action["COMPLETE"] = "COMPLETE";
23
+ Action["REOPEN"] = "REOPEN";
24
+ Action["RESET"] = "RESET";
25
+ Action["START"] = "START";
26
+ Action["UNDO_CANCEL"] = "UNDO_CANCEL";
38
27
  Action["UNDO_CHECK_IN"] = "UNDO_CHECK_IN";
39
- Action["START_SERVICE"] = "START_SERVICE";
40
- Action["UNSTART_SERVICE"] = "UNSTART_SERVICE";
41
- Action["COMPLETE_SERVICE"] = "COMPLETE_SERVICE";
42
- Action["REOPEN_COMPLETED_SERVICE"] = "REOPEN_COMPLETED_SERVICE";
43
- Action["CANCEL_SERVICE"] = "CANCEL_SERVICE";
44
- Action["UNDO_CANCEL_SERVICE"] = "UNDO_CANCEL_SERVICE";
45
- Action["FORCE_RESET_STATUS"] = "FORCE_RESET_STATUS";
46
- Action["CORRECT_TIMESTAMPS"] = "CORRECT_TIMESTAMPS";
28
+ Action["UNSTART"] = "UNSTART";
29
+ Action["ASSIGN"] = "ASSIGN";
47
30
  Action["UPDATE_STATUS"] = "UPDATE_STATUS";
48
- Action["VIEW_PATIENTS"] = "VIEW_PATIENTS";
49
- Action["PUT_PATIENT_PAYMENT"] = "PUT_PATIENT_PAYMENT";
50
- Action["DELETE_PATIENT_PAYMENT"] = "DELETE_PATIENT_PAYMENT";
51
- Action["EXPORT"] = "EXPORT";
52
- Action["IMPORT"] = "IMPORT";
53
- Action["ARCHIVE"] = "ARCHIVE";
54
- Action["RESTORE"] = "RESTORE";
55
- Action["SHARE"] = "SHARE";
56
- Action["DOWNLOAD"] = "DOWNLOAD";
31
+ Action["UPDATE_SCHEDULE"] = "UPDATE_SCHEDULE";
32
+ Action["CORRECT_TIMESTAMPS"] = "CORRECT_TIMESTAMPS";
33
+ Action["UPDATE_TYPE"] = "UPDATE_TYPE";
34
+ Action["SEARCH"] = "SEARCH";
35
+ Action["ASSIGN_ROLES"] = "ASSIGN_ROLES";
36
+ Action["INVITE"] = "INVITE";
37
+ Action["REMOVE"] = "REMOVE";
57
38
  Action["UPLOAD"] = "UPLOAD";
58
- Action["ENABLE_CALENDAR_SYNC"] = "ENABLE_CALENDAR_SYNC";
59
- Action["DISABLE_CALENDAR_SYNC"] = "DISABLE_CALENDAR_SYNC";
60
- Action["REGENERATE_CALENDAR_LINK"] = "REGENERATE_CALENDAR_LINK";
61
- Action["LOGIN"] = "LOGIN";
62
- Action["LOGOUT"] = "LOGOUT";
63
- Action["CONFIGURE"] = "CONFIGURE";
64
- Action["AUDIT"] = "AUDIT";
65
39
  })(Action || (exports.Action = Action = {}));
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb25zL2FjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7OztHQU1HO0FBQ0gsSUFBWSxNQThEWDtBQTlERCxXQUFZLE1BQU07SUFDaEIsMkJBQWlCLENBQUE7SUFDakIsdUJBQWEsQ0FBQTtJQUNiLDJCQUFpQixDQUFBO0lBQ2pCLCtCQUFxQixDQUFBO0lBQ3JCLDJCQUFpQixDQUFBO0lBQ2pCLHFCQUFXLENBQUE7SUFDWCx1QkFBYSxDQUFBO0lBRWIsMkJBQWlCLENBQUE7SUFDakIsdUJBQWEsQ0FBQTtJQUNiLDJCQUFpQixDQUFBO0lBRWpCLHlCQUFlLENBQUE7SUFDZiwyQkFBaUIsQ0FBQTtJQUVqQixpQ0FBdUIsQ0FBQTtJQUN2QiwrQkFBcUIsQ0FBQTtJQUNyQiwrQkFBcUIsQ0FBQTtJQUNyQiwyQkFBaUIsQ0FBQTtJQUNqQiw2QkFBbUIsQ0FBQTtJQUNuQiwyQkFBaUIsQ0FBQTtJQUNqQix1QkFBYSxDQUFBO0lBQ2IsMkJBQWlCLENBQUE7SUFFakIsNkJBQW1CLENBQUE7SUFDbkIsNkJBQW1CLENBQUE7SUFFbkIsbUVBQXlELENBQUE7SUFDekQsK0RBQXFELENBQUE7SUFDckQsK0JBQXFCLENBQUE7SUFDckIseUNBQStCLENBQUE7SUFDL0IseUNBQStCLENBQUE7SUFDL0IsNkNBQW1DLENBQUE7SUFDbkMsK0NBQXFDLENBQUE7SUFDckMsK0RBQXFELENBQUE7SUFDckQsMkNBQWlDLENBQUE7SUFDakMscURBQTJDLENBQUE7SUFDM0MsbURBQXlDLENBQUE7SUFDekMsbURBQXlDLENBQUE7SUFFekMseUNBQStCLENBQUE7SUFDL0IseUNBQStCLENBQUE7SUFDL0IscURBQTJDLENBQUE7SUFDM0MsMkRBQWlELENBQUE7SUFFakQsMkJBQWlCLENBQUE7SUFDakIsMkJBQWlCLENBQUE7SUFDakIsNkJBQW1CLENBQUE7SUFDbkIsNkJBQW1CLENBQUE7SUFDbkIseUJBQWUsQ0FBQTtJQUNmLCtCQUFxQixDQUFBO0lBQ3JCLDJCQUFpQixDQUFBO0lBRWpCLHVEQUE2QyxDQUFBO0lBQzdDLHlEQUErQyxDQUFBO0lBQy9DLCtEQUFxRCxDQUFBO0lBRXJELHlCQUFlLENBQUE7SUFDZiwyQkFBaUIsQ0FBQTtJQUNqQixpQ0FBdUIsQ0FBQTtJQUN2Qix5QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUE5RFcsTUFBTSxzQkFBTixNQUFNLFFBOERqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWN0aW9uIHR5cGVzIGZvciBvcGVyYXRpb25zLlxuICpcbiAqIFRoZSBHcmFwaFFMIHNjaGVtYSdzIEFjdGlvblR5cGUgZW51bSBpcyBpbnRlbnRpb25hbGx5IG5vdCB0cmVhdGVkIGFzIHRoZVxuICogc291cmNlIG9mIHRydXRoIGhlcmUuIFRoaXMgcGFja2FnZSBrZWVwcyBhIHJpY2hlciBhcHBsaWNhdGlvbi1sZXZlbCBhY3Rpb25cbiAqIHZvY2FidWxhcnkgZm9yIGF1dGhvcml6YXRpb24sIGF1ZGl0IGxvZ2dpbmcsIGFuZCBVSSBsYWJlbHMuXG4gKi9cbmV4cG9ydCBlbnVtIEFjdGlvbiB7XG4gIENSRUFURSA9ICdDUkVBVEUnLFxuICBSRUFEID0gJ1JFQUQnLFxuICBERUxFVEUgPSAnREVMRVRFJyxcbiAgUkVUUklFVkUgPSAnUkVUUklFVkUnLFxuICBVUERBVEUgPSAnVVBEQVRFJyxcbiAgUFVUID0gJ1BVVCcsXG4gIExJU1QgPSAnTElTVCcsXG5cbiAgTUFOQUdFID0gJ01BTkFHRScsXG4gIFZJRVcgPSAnVklFVycsXG4gIFNFQVJDSCA9ICdTRUFSQ0gnLFxuXG4gIEdSQU5UID0gJ0dSQU5UJyxcbiAgUkVWT0tFID0gJ1JFVk9LRScsXG5cbiAgUFJFU0NSSUJFID0gJ1BSRVNDUklCRScsXG4gIERJQUdOT1NFID0gJ0RJQUdOT1NFJyxcbiAgU0NIRURVTEUgPSAnU0NIRURVTEUnLFxuICBDQU5DRUwgPSAnQ0FOQ0VMJyxcbiAgQVBQUk9WRSA9ICdBUFBST1ZFJyxcbiAgUkVKRUNUID0gJ1JFSkVDVCcsXG4gIFNJR04gPSAnU0lHTicsXG4gIFZFUklGWSA9ICdWRVJJRlknLFxuXG4gIFJFQ09WRVIgPSAnUkVDT1ZFUicsXG4gIERJU0FCTEUgPSAnRElTQUJMRScsXG5cbiAgU0VUX01FRElDQUxfU0VSVklDRV9TVEFUVVMgPSAnU0VUX01FRElDQUxfU0VSVklDRV9TVEFUVVMnLFxuICBTRVRfTUVESUNBTF9TRVJWSUNFX0ZFRVMgPSAnU0VUX01FRElDQUxfU0VSVklDRV9GRUVTJyxcbiAgQ0hFQ0tfSU4gPSAnQ0hFQ0tfSU4nLFxuICBVTkRPX0NIRUNLX0lOID0gJ1VORE9fQ0hFQ0tfSU4nLFxuICBTVEFSVF9TRVJWSUNFID0gJ1NUQVJUX1NFUlZJQ0UnLFxuICBVTlNUQVJUX1NFUlZJQ0UgPSAnVU5TVEFSVF9TRVJWSUNFJyxcbiAgQ09NUExFVEVfU0VSVklDRSA9ICdDT01QTEVURV9TRVJWSUNFJyxcbiAgUkVPUEVOX0NPTVBMRVRFRF9TRVJWSUNFID0gJ1JFT1BFTl9DT01QTEVURURfU0VSVklDRScsXG4gIENBTkNFTF9TRVJWSUNFID0gJ0NBTkNFTF9TRVJWSUNFJyxcbiAgVU5ET19DQU5DRUxfU0VSVklDRSA9ICdVTkRPX0NBTkNFTF9TRVJWSUNFJyxcbiAgRk9SQ0VfUkVTRVRfU1RBVFVTID0gJ0ZPUkNFX1JFU0VUX1NUQVRVUycsXG4gIENPUlJFQ1RfVElNRVNUQU1QUyA9ICdDT1JSRUNUX1RJTUVTVEFNUFMnLFxuXG4gIFVQREFURV9TVEFUVVMgPSAnVVBEQVRFX1NUQVRVUycsXG4gIFZJRVdfUEFUSUVOVFMgPSAnVklFV19QQVRJRU5UUycsXG4gIFBVVF9QQVRJRU5UX1BBWU1FTlQgPSAnUFVUX1BBVElFTlRfUEFZTUVOVCcsXG4gIERFTEVURV9QQVRJRU5UX1BBWU1FTlQgPSAnREVMRVRFX1BBVElFTlRfUEFZTUVOVCcsXG5cbiAgRVhQT1JUID0gJ0VYUE9SVCcsXG4gIElNUE9SVCA9ICdJTVBPUlQnLFxuICBBUkNISVZFID0gJ0FSQ0hJVkUnLFxuICBSRVNUT1JFID0gJ1JFU1RPUkUnLFxuICBTSEFSRSA9ICdTSEFSRScsXG4gIERPV05MT0FEID0gJ0RPV05MT0FEJyxcbiAgVVBMT0FEID0gJ1VQTE9BRCcsXG5cbiAgRU5BQkxFX0NBTEVOREFSX1NZTkMgPSAnRU5BQkxFX0NBTEVOREFSX1NZTkMnLFxuICBESVNBQkxFX0NBTEVOREFSX1NZTkMgPSAnRElTQUJMRV9DQUxFTkRBUl9TWU5DJyxcbiAgUkVHRU5FUkFURV9DQUxFTkRBUl9MSU5LID0gJ1JFR0VORVJBVEVfQ0FMRU5EQVJfTElOSycsXG5cbiAgTE9HSU4gPSAnTE9HSU4nLFxuICBMT0dPVVQgPSAnTE9HT1VUJyxcbiAgQ09ORklHVVJFID0gJ0NPTkZJR1VSRScsXG4gIEFVRElUID0gJ0FVRElUJyxcbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb25zL2FjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFZLE1BbUNYO0FBbkNELFdBQVksTUFBTTtJQUNoQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtJQUNqQiw2QkFBbUIsQ0FBQTtJQUNuQiwyQkFBaUIsQ0FBQTtJQUNqQiw2QkFBbUIsQ0FBQTtJQUNuQixtREFBeUMsQ0FBQTtJQUN6Qyx1QkFBYSxDQUFBO0lBQ2IsMkJBQWlCLENBQUE7SUFFakIsdUNBQTZCLENBQUE7SUFDN0IsK0JBQXFCLENBQUE7SUFDckIsNkJBQW1CLENBQUE7SUFFbkIsMkJBQWlCLENBQUE7SUFDakIsK0JBQXFCLENBQUE7SUFDckIsK0JBQXFCLENBQUE7SUFDckIsMkJBQWlCLENBQUE7SUFDakIseUJBQWUsQ0FBQTtJQUNmLHlCQUFlLENBQUE7SUFDZixxQ0FBMkIsQ0FBQTtJQUMzQix5Q0FBK0IsQ0FBQTtJQUMvQiw2QkFBbUIsQ0FBQTtJQUVuQiwyQkFBaUIsQ0FBQTtJQUNqQix5Q0FBK0IsQ0FBQTtJQUMvQiw2Q0FBbUMsQ0FBQTtJQUNuQyxtREFBeUMsQ0FBQTtJQUN6QyxxQ0FBMkIsQ0FBQTtJQUUzQiwyQkFBaUIsQ0FBQTtJQUNqQix1Q0FBNkIsQ0FBQTtJQUM3QiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBbkNXLE1BQU0sc0JBQU4sTUFBTSxRQW1DakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFjdGlvbiB0eXBlcyBhbGlnbmVkIHdpdGggdGhlIHBlcm1pc3Npb24gY2F0YWxvZyBhcmNoaXRlY3R1cmUuXG4gKi9cbmV4cG9ydCBlbnVtIEFjdGlvbiB7XG4gIENSRUFURSA9ICdDUkVBVEUnLFxuICBERUxFVEUgPSAnREVMRVRFJyxcbiAgRElTQUJMRSA9ICdESVNBQkxFJyxcbiAgRU5BQkxFID0gJ0VOQUJMRScsXG4gIFJFQ09WRVIgPSAnUkVDT1ZFUicsXG4gIFRSQU5TRkVSX09XTkVSU0hJUCA9ICdUUkFOU0ZFUl9PV05FUlNISVAnLFxuICBWSUVXID0gJ1ZJRVcnLFxuICBVUERBVEUgPSAnVVBEQVRFJyxcblxuICBST1RBVEVfVE9LRU4gPSAnUk9UQVRFX1RPS0VOJyxcbiAgR0VORVJBVEUgPSAnR0VORVJBVEUnLFxuICBQUkVWSUVXID0gJ1BSRVZJRVcnLFxuXG4gIENBTkNFTCA9ICdDQU5DRUwnLFxuICBDSEVDS19JTiA9ICdDSEVDS19JTicsXG4gIENPTVBMRVRFID0gJ0NPTVBMRVRFJyxcbiAgUkVPUEVOID0gJ1JFT1BFTicsXG4gIFJFU0VUID0gJ1JFU0VUJyxcbiAgU1RBUlQgPSAnU1RBUlQnLFxuICBVTkRPX0NBTkNFTCA9ICdVTkRPX0NBTkNFTCcsXG4gIFVORE9fQ0hFQ0tfSU4gPSAnVU5ET19DSEVDS19JTicsXG4gIFVOU1RBUlQgPSAnVU5TVEFSVCcsXG5cbiAgQVNTSUdOID0gJ0FTU0lHTicsXG4gIFVQREFURV9TVEFUVVMgPSAnVVBEQVRFX1NUQVRVUycsXG4gIFVQREFURV9TQ0hFRFVMRSA9ICdVUERBVEVfU0NIRURVTEUnLFxuICBDT1JSRUNUX1RJTUVTVEFNUFMgPSAnQ09SUkVDVF9USU1FU1RBTVBTJyxcbiAgVVBEQVRFX1RZUEUgPSAnVVBEQVRFX1RZUEUnLFxuXG4gIFNFQVJDSCA9ICdTRUFSQ0gnLFxuICBBU1NJR05fUk9MRVMgPSAnQVNTSUdOX1JPTEVTJyxcbiAgSU5WSVRFID0gJ0lOVklURScsXG4gIFJFTU9WRSA9ICdSRU1PVkUnLFxuICBVUExPQUQgPSAnVVBMT0FEJyxcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- export { Resource, MEDICAL_RESOURCES, PUBLIC_RESOURCES, isMedicalResource, isPublicResource } from './resources';
1
+ export { Resource, ResourceCategory, MEDICAL_RESOURCES, PUBLIC_RESOURCES, CORE_RESOURCES, CLINICAL_RESOURCES, DOCUMENT_RESOURCES, BILLING_RESOURCES, MEMBERSHIP_RESOURCES, INTEGRATION_RESOURCES, SETTINGS_RESOURCES, SCHEDULING_RESOURCES, EXTERNAL_RESOURCES, SYSTEM_RESOURCES, isMedicalResource, isPublicResource, getResourceCategories, getResourcesByCategory, } from './resources';
2
2
  export { Action } from './actions';
3
3
  export { Operation, OPERATION, getResourceFromOperation, getActionFromOperation } from './operation';
4
4
  export * from './labels';
@@ -14,13 +14,26 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getOperationsByAction = exports.getOperationsByResource = exports.getAllOperations = exports.Operations = exports.getActionFromOperation = exports.getResourceFromOperation = exports.Operation = exports.Action = exports.isPublicResource = exports.isMedicalResource = exports.PUBLIC_RESOURCES = exports.MEDICAL_RESOURCES = exports.Resource = void 0;
17
+ exports.getOperationsByAction = exports.getOperationsByResource = exports.getAllOperations = exports.Operations = exports.getActionFromOperation = exports.getResourceFromOperation = exports.Operation = exports.Action = exports.getResourcesByCategory = exports.getResourceCategories = exports.isPublicResource = exports.isMedicalResource = exports.SYSTEM_RESOURCES = exports.EXTERNAL_RESOURCES = exports.SCHEDULING_RESOURCES = exports.SETTINGS_RESOURCES = exports.INTEGRATION_RESOURCES = exports.MEMBERSHIP_RESOURCES = exports.BILLING_RESOURCES = exports.DOCUMENT_RESOURCES = exports.CLINICAL_RESOURCES = exports.CORE_RESOURCES = exports.PUBLIC_RESOURCES = exports.MEDICAL_RESOURCES = exports.ResourceCategory = exports.Resource = void 0;
18
18
  var resources_1 = require("./resources");
19
19
  Object.defineProperty(exports, "Resource", { enumerable: true, get: function () { return resources_1.Resource; } });
20
+ Object.defineProperty(exports, "ResourceCategory", { enumerable: true, get: function () { return resources_1.ResourceCategory; } });
20
21
  Object.defineProperty(exports, "MEDICAL_RESOURCES", { enumerable: true, get: function () { return resources_1.MEDICAL_RESOURCES; } });
21
22
  Object.defineProperty(exports, "PUBLIC_RESOURCES", { enumerable: true, get: function () { return resources_1.PUBLIC_RESOURCES; } });
23
+ Object.defineProperty(exports, "CORE_RESOURCES", { enumerable: true, get: function () { return resources_1.CORE_RESOURCES; } });
24
+ Object.defineProperty(exports, "CLINICAL_RESOURCES", { enumerable: true, get: function () { return resources_1.CLINICAL_RESOURCES; } });
25
+ Object.defineProperty(exports, "DOCUMENT_RESOURCES", { enumerable: true, get: function () { return resources_1.DOCUMENT_RESOURCES; } });
26
+ Object.defineProperty(exports, "BILLING_RESOURCES", { enumerable: true, get: function () { return resources_1.BILLING_RESOURCES; } });
27
+ Object.defineProperty(exports, "MEMBERSHIP_RESOURCES", { enumerable: true, get: function () { return resources_1.MEMBERSHIP_RESOURCES; } });
28
+ Object.defineProperty(exports, "INTEGRATION_RESOURCES", { enumerable: true, get: function () { return resources_1.INTEGRATION_RESOURCES; } });
29
+ Object.defineProperty(exports, "SETTINGS_RESOURCES", { enumerable: true, get: function () { return resources_1.SETTINGS_RESOURCES; } });
30
+ Object.defineProperty(exports, "SCHEDULING_RESOURCES", { enumerable: true, get: function () { return resources_1.SCHEDULING_RESOURCES; } });
31
+ Object.defineProperty(exports, "EXTERNAL_RESOURCES", { enumerable: true, get: function () { return resources_1.EXTERNAL_RESOURCES; } });
32
+ Object.defineProperty(exports, "SYSTEM_RESOURCES", { enumerable: true, get: function () { return resources_1.SYSTEM_RESOURCES; } });
22
33
  Object.defineProperty(exports, "isMedicalResource", { enumerable: true, get: function () { return resources_1.isMedicalResource; } });
23
34
  Object.defineProperty(exports, "isPublicResource", { enumerable: true, get: function () { return resources_1.isPublicResource; } });
35
+ Object.defineProperty(exports, "getResourceCategories", { enumerable: true, get: function () { return resources_1.getResourceCategories; } });
36
+ Object.defineProperty(exports, "getResourcesByCategory", { enumerable: true, get: function () { return resources_1.getResourcesByCategory; } });
24
37
  var actions_1 = require("./actions");
25
38
  Object.defineProperty(exports, "Action", { enumerable: true, get: function () { return actions_1.Action; } });
26
39
  var operation_1 = require("./operation");
@@ -33,4 +46,4 @@ Object.defineProperty(exports, "Operations", { enumerable: true, get: function (
33
46
  Object.defineProperty(exports, "getAllOperations", { enumerable: true, get: function () { return predefined_1.getAllOperations; } });
34
47
  Object.defineProperty(exports, "getOperationsByResource", { enumerable: true, get: function () { return predefined_1.getOperationsByResource; } });
35
48
  Object.defineProperty(exports, "getOperationsByAction", { enumerable: true, get: function () { return predefined_1.getOperationsByAction; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlcmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUFpSDtBQUF4RyxxR0FBQSxRQUFRLE9BQUE7QUFBRSw4R0FBQSxpQkFBaUIsT0FBQTtBQUFFLDZHQUFBLGdCQUFnQixPQUFBO0FBQUUsOEdBQUEsaUJBQWlCLE9BQUE7QUFBRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUMzRixxQ0FBbUM7QUFBMUIsaUdBQUEsTUFBTSxPQUFBO0FBQ2YseUNBQXFHO0FBQTVGLHNHQUFBLFNBQVMsT0FBQTtBQUFhLHFIQUFBLHdCQUF3QixPQUFBO0FBQUUsbUhBQUEsc0JBQXNCLE9BQUE7QUFDL0UsMkNBQXlCO0FBQ3pCLDJDQUE0RztBQUFuRyx3R0FBQSxVQUFVLE9BQUE7QUFBRSw4R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLHFIQUFBLHVCQUF1QixPQUFBO0FBQUUsbUhBQUEscUJBQXFCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBSZXNvdXJjZSwgTUVESUNBTF9SRVNPVVJDRVMsIFBVQkxJQ19SRVNPVVJDRVMsIGlzTWVkaWNhbFJlc291cmNlLCBpc1B1YmxpY1Jlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZXMnO1xuZXhwb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zJztcbmV4cG9ydCB7IE9wZXJhdGlvbiwgT1BFUkFUSU9OLCBnZXRSZXNvdXJjZUZyb21PcGVyYXRpb24sIGdldEFjdGlvbkZyb21PcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xhYmVscyc7XG5leHBvcnQgeyBPcGVyYXRpb25zLCBnZXRBbGxPcGVyYXRpb25zLCBnZXRPcGVyYXRpb25zQnlSZXNvdXJjZSwgZ2V0T3BlcmF0aW9uc0J5QWN0aW9uIH0gZnJvbSAnLi9wcmVkZWZpbmVkJztcbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlcmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQW1CcUI7QUFsQm5CLHFHQUFBLFFBQVEsT0FBQTtBQUNSLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLGNBQWMsT0FBQTtBQUNkLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDhHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLGlIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGlIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLG1IQUFBLHNCQUFzQixPQUFBO0FBRXhCLHFDQUFtQztBQUExQixpR0FBQSxNQUFNLE9BQUE7QUFDZix5Q0FBcUc7QUFBNUYsc0dBQUEsU0FBUyxPQUFBO0FBQWEscUhBQUEsd0JBQXdCLE9BQUE7QUFBRSxtSEFBQSxzQkFBc0IsT0FBQTtBQUMvRSwyQ0FBeUI7QUFDekIsMkNBQTRHO0FBQW5HLHdHQUFBLFVBQVUsT0FBQTtBQUFFLDhHQUFBLGdCQUFnQixPQUFBO0FBQUUscUhBQUEsdUJBQXVCLE9BQUE7QUFBRSxtSEFBQSxxQkFBcUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIFJlc291cmNlLFxuICBSZXNvdXJjZUNhdGVnb3J5LFxuICBNRURJQ0FMX1JFU09VUkNFUyxcbiAgUFVCTElDX1JFU09VUkNFUyxcbiAgQ09SRV9SRVNPVVJDRVMsXG4gIENMSU5JQ0FMX1JFU09VUkNFUyxcbiAgRE9DVU1FTlRfUkVTT1VSQ0VTLFxuICBCSUxMSU5HX1JFU09VUkNFUyxcbiAgTUVNQkVSU0hJUF9SRVNPVVJDRVMsXG4gIElOVEVHUkFUSU9OX1JFU09VUkNFUyxcbiAgU0VUVElOR1NfUkVTT1VSQ0VTLFxuICBTQ0hFRFVMSU5HX1JFU09VUkNFUyxcbiAgRVhURVJOQUxfUkVTT1VSQ0VTLFxuICBTWVNURU1fUkVTT1VSQ0VTLFxuICBpc01lZGljYWxSZXNvdXJjZSxcbiAgaXNQdWJsaWNSZXNvdXJjZSxcbiAgZ2V0UmVzb3VyY2VDYXRlZ29yaWVzLFxuICBnZXRSZXNvdXJjZXNCeUNhdGVnb3J5LFxufSBmcm9tICcuL3Jlc291cmNlcyc7XG5leHBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL2FjdGlvbnMnO1xuZXhwb3J0IHsgT3BlcmF0aW9uLCBPUEVSQVRJT04sIGdldFJlc291cmNlRnJvbU9wZXJhdGlvbiwgZ2V0QWN0aW9uRnJvbU9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGFiZWxzJztcbmV4cG9ydCB7IE9wZXJhdGlvbnMsIGdldEFsbE9wZXJhdGlvbnMsIGdldE9wZXJhdGlvbnNCeVJlc291cmNlLCBnZXRPcGVyYXRpb25zQnlBY3Rpb24gfSBmcm9tICcuL3ByZWRlZmluZWQnO1xuIl19
@@ -1,9 +1,10 @@
1
1
  import { Action } from './actions';
2
2
  import { Operation } from './operation';
3
- import { Resource } from './resources';
3
+ import { Resource, ResourceCategory } from './resources';
4
4
  export type Locale = 'fr-FR' | 'us-EN';
5
5
  export declare function getActionLabel(action: Action, locale?: Locale): string;
6
6
  export declare function getResourceLabel(resource: Resource, locale?: Locale): string;
7
+ export declare function getResourceCategoryLabel(category: ResourceCategory, locale?: Locale): string;
7
8
  export declare function getOperationLabel(operation: Operation | string, locale?: Locale, opts?: {
8
9
  order?: 'action-resource' | 'resource-action';
9
10
  separator?: string;
@@ -2,162 +2,128 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getActionLabel = getActionLabel;
4
4
  exports.getResourceLabel = getResourceLabel;
5
+ exports.getResourceCategoryLabel = getResourceCategoryLabel;
5
6
  exports.getOperationLabel = getOperationLabel;
6
7
  const actions_1 = require("./actions");
7
8
  const operation_1 = require("./operation");
8
9
  const resources_1 = require("./resources");
9
10
  const enAction = {
10
11
  [actions_1.Action.CREATE]: 'Create',
11
- [actions_1.Action.READ]: 'Read',
12
12
  [actions_1.Action.DELETE]: 'Delete',
13
- [actions_1.Action.RETRIEVE]: 'Retrieve',
14
- [actions_1.Action.UPDATE]: 'Update',
15
- [actions_1.Action.PUT]: 'Put',
16
- [actions_1.Action.LIST]: 'List',
17
- [actions_1.Action.MANAGE]: 'Manage',
13
+ [actions_1.Action.DISABLE]: 'Disable',
14
+ [actions_1.Action.ENABLE]: 'Enable',
15
+ [actions_1.Action.RECOVER]: 'Recover',
16
+ [actions_1.Action.TRANSFER_OWNERSHIP]: 'Transfer Ownership',
18
17
  [actions_1.Action.VIEW]: 'View',
19
- [actions_1.Action.SEARCH]: 'Search',
20
- [actions_1.Action.GRANT]: 'Grant',
21
- [actions_1.Action.REVOKE]: 'Revoke',
22
- [actions_1.Action.PRESCRIBE]: 'Prescribe',
23
- [actions_1.Action.DIAGNOSE]: 'Diagnose',
24
- [actions_1.Action.SCHEDULE]: 'Schedule',
18
+ [actions_1.Action.UPDATE]: 'Update',
19
+ [actions_1.Action.ROTATE_TOKEN]: 'Rotate Token',
20
+ [actions_1.Action.GENERATE]: 'Generate',
21
+ [actions_1.Action.PREVIEW]: 'Preview',
25
22
  [actions_1.Action.CANCEL]: 'Cancel',
26
- [actions_1.Action.APPROVE]: 'Approve',
27
- [actions_1.Action.REJECT]: 'Reject',
28
- [actions_1.Action.SIGN]: 'Sign',
29
- [actions_1.Action.VERIFY]: 'Verify',
30
- [actions_1.Action.RECOVER]: 'Recover',
31
- [actions_1.Action.DISABLE]: 'Disable',
32
- [actions_1.Action.SET_MEDICAL_SERVICE_STATUS]: 'Set Medical Service Status',
33
- [actions_1.Action.SET_MEDICAL_SERVICE_FEES]: 'Set Medical Service Fees',
34
23
  [actions_1.Action.CHECK_IN]: 'Check In',
24
+ [actions_1.Action.COMPLETE]: 'Complete',
25
+ [actions_1.Action.REOPEN]: 'Reopen',
26
+ [actions_1.Action.RESET]: 'Reset',
27
+ [actions_1.Action.START]: 'Start',
28
+ [actions_1.Action.UNDO_CANCEL]: 'Undo Cancel',
35
29
  [actions_1.Action.UNDO_CHECK_IN]: 'Undo Check In',
36
- [actions_1.Action.START_SERVICE]: 'Start Service',
37
- [actions_1.Action.UNSTART_SERVICE]: 'Undo Start Service',
38
- [actions_1.Action.COMPLETE_SERVICE]: 'Complete Service',
39
- [actions_1.Action.REOPEN_COMPLETED_SERVICE]: 'Reopen Completed Service',
40
- [actions_1.Action.CANCEL_SERVICE]: 'Cancel Service',
41
- [actions_1.Action.UNDO_CANCEL_SERVICE]: 'Undo Cancel Service',
42
- [actions_1.Action.FORCE_RESET_STATUS]: 'Force Reset Status',
43
- [actions_1.Action.CORRECT_TIMESTAMPS]: 'Correct Timestamps',
30
+ [actions_1.Action.UNSTART]: 'Unstart',
31
+ [actions_1.Action.ASSIGN]: 'Assign',
44
32
  [actions_1.Action.UPDATE_STATUS]: 'Update Status',
45
- [actions_1.Action.VIEW_PATIENTS]: 'View Patients',
46
- [actions_1.Action.PUT_PATIENT_PAYMENT]: 'Put Patient Payment',
47
- [actions_1.Action.DELETE_PATIENT_PAYMENT]: 'Delete Patient Payment',
48
- [actions_1.Action.EXPORT]: 'Export',
49
- [actions_1.Action.IMPORT]: 'Import',
50
- [actions_1.Action.ARCHIVE]: 'Archive',
51
- [actions_1.Action.RESTORE]: 'Restore',
52
- [actions_1.Action.SHARE]: 'Share',
53
- [actions_1.Action.DOWNLOAD]: 'Download',
33
+ [actions_1.Action.UPDATE_SCHEDULE]: 'Update Schedule',
34
+ [actions_1.Action.CORRECT_TIMESTAMPS]: 'Correct Timestamps',
35
+ [actions_1.Action.UPDATE_TYPE]: 'Update Type',
36
+ [actions_1.Action.SEARCH]: 'Search',
37
+ [actions_1.Action.ASSIGN_ROLES]: 'Assign Roles',
38
+ [actions_1.Action.INVITE]: 'Invite',
39
+ [actions_1.Action.REMOVE]: 'Remove',
54
40
  [actions_1.Action.UPLOAD]: 'Upload',
55
- [actions_1.Action.ENABLE_CALENDAR_SYNC]: 'Enable Calendar Sync',
56
- [actions_1.Action.DISABLE_CALENDAR_SYNC]: 'Disable Calendar Sync',
57
- [actions_1.Action.REGENERATE_CALENDAR_LINK]: 'Regenerate Calendar Link',
58
- [actions_1.Action.LOGIN]: 'Login',
59
- [actions_1.Action.LOGOUT]: 'Logout',
60
- [actions_1.Action.CONFIGURE]: 'Configure',
61
- [actions_1.Action.AUDIT]: 'Audit',
62
41
  };
63
42
  const frAction = {
64
43
  [actions_1.Action.CREATE]: 'Creer',
65
- [actions_1.Action.READ]: 'Lire',
66
44
  [actions_1.Action.DELETE]: 'Supprimer',
67
- [actions_1.Action.RETRIEVE]: 'Recuperer',
68
- [actions_1.Action.UPDATE]: 'Mettre a jour',
69
- [actions_1.Action.PUT]: 'Mettre',
70
- [actions_1.Action.LIST]: 'Lister',
71
- [actions_1.Action.MANAGE]: 'Gerer',
45
+ [actions_1.Action.DISABLE]: 'Desactiver',
46
+ [actions_1.Action.ENABLE]: 'Activer',
47
+ [actions_1.Action.RECOVER]: 'Recuperer',
48
+ [actions_1.Action.TRANSFER_OWNERSHIP]: 'Transferer la propriete',
72
49
  [actions_1.Action.VIEW]: 'Voir',
73
- [actions_1.Action.SEARCH]: 'Rechercher',
74
- [actions_1.Action.GRANT]: 'Accorder',
75
- [actions_1.Action.REVOKE]: 'Revoquer',
76
- [actions_1.Action.PRESCRIBE]: 'Prescrire',
77
- [actions_1.Action.DIAGNOSE]: 'Diagnostiquer',
78
- [actions_1.Action.SCHEDULE]: 'Planifier',
50
+ [actions_1.Action.UPDATE]: 'Mettre a jour',
51
+ [actions_1.Action.ROTATE_TOKEN]: 'Renouveler le jeton',
52
+ [actions_1.Action.GENERATE]: 'Generer',
53
+ [actions_1.Action.PREVIEW]: 'Previsualiser',
79
54
  [actions_1.Action.CANCEL]: 'Annuler',
80
- [actions_1.Action.APPROVE]: 'Approuver',
81
- [actions_1.Action.REJECT]: 'Rejeter',
82
- [actions_1.Action.SIGN]: 'Signer',
83
- [actions_1.Action.VERIFY]: 'Verifier',
84
- [actions_1.Action.RECOVER]: 'Recuperer',
85
- [actions_1.Action.DISABLE]: 'Desactiver',
86
- [actions_1.Action.SET_MEDICAL_SERVICE_STATUS]: 'Definir le statut du service medical',
87
- [actions_1.Action.SET_MEDICAL_SERVICE_FEES]: 'Definir les frais du service medical',
88
- [actions_1.Action.CHECK_IN]: 'Enregistrement a l arrivee',
55
+ [actions_1.Action.CHECK_IN]: 'Enregistrer l arrivee',
56
+ [actions_1.Action.COMPLETE]: 'Terminer',
57
+ [actions_1.Action.REOPEN]: 'Reouvrir',
58
+ [actions_1.Action.RESET]: 'Reinitialiser',
59
+ [actions_1.Action.START]: 'Demarrer',
60
+ [actions_1.Action.UNDO_CANCEL]: 'Annuler l annulation',
89
61
  [actions_1.Action.UNDO_CHECK_IN]: 'Annuler l enregistrement',
90
- [actions_1.Action.START_SERVICE]: 'Commencer le service',
91
- [actions_1.Action.UNSTART_SERVICE]: 'Annuler le debut du service',
92
- [actions_1.Action.COMPLETE_SERVICE]: 'Terminer le service',
93
- [actions_1.Action.REOPEN_COMPLETED_SERVICE]: 'Reouvrir le service termine',
94
- [actions_1.Action.CANCEL_SERVICE]: 'Annuler le service',
95
- [actions_1.Action.UNDO_CANCEL_SERVICE]: 'Annuler l annulation du service',
96
- [actions_1.Action.FORCE_RESET_STATUS]: 'Reinitialiser le statut',
62
+ [actions_1.Action.UNSTART]: 'Annuler le demarrage',
63
+ [actions_1.Action.ASSIGN]: 'Assigner',
97
64
  [actions_1.Action.CORRECT_TIMESTAMPS]: 'Corriger les horodatages',
98
65
  [actions_1.Action.UPDATE_STATUS]: 'Mettre a jour le statut',
99
- [actions_1.Action.VIEW_PATIENTS]: 'Voir les patients',
100
- [actions_1.Action.PUT_PATIENT_PAYMENT]: 'Enregistrer le paiement patient',
101
- [actions_1.Action.DELETE_PATIENT_PAYMENT]: 'Supprimer le paiement patient',
102
- [actions_1.Action.EXPORT]: 'Exporter',
103
- [actions_1.Action.IMPORT]: 'Importer',
104
- [actions_1.Action.ARCHIVE]: 'Archiver',
105
- [actions_1.Action.RESTORE]: 'Restaurer',
106
- [actions_1.Action.SHARE]: 'Partager',
107
- [actions_1.Action.DOWNLOAD]: 'Telecharger',
66
+ [actions_1.Action.UPDATE_SCHEDULE]: 'Mettre a jour le planning',
67
+ [actions_1.Action.UPDATE_TYPE]: 'Mettre a jour le type',
68
+ [actions_1.Action.SEARCH]: 'Rechercher',
69
+ [actions_1.Action.ASSIGN_ROLES]: 'Assigner les roles',
70
+ [actions_1.Action.INVITE]: 'Inviter',
71
+ [actions_1.Action.REMOVE]: 'Retirer',
108
72
  [actions_1.Action.UPLOAD]: 'Televerser',
109
- [actions_1.Action.ENABLE_CALENDAR_SYNC]: 'Activer la synchronisation du calendrier',
110
- [actions_1.Action.DISABLE_CALENDAR_SYNC]: 'Desactiver la synchronisation du calendrier',
111
- [actions_1.Action.REGENERATE_CALENDAR_LINK]: 'Regenerer le lien du calendrier',
112
- [actions_1.Action.LOGIN]: 'Connexion',
113
- [actions_1.Action.LOGOUT]: 'Deconnexion',
114
- [actions_1.Action.CONFIGURE]: 'Configurer',
115
- [actions_1.Action.AUDIT]: 'Auditer',
116
73
  };
117
74
  const frResourceOverrides = {
118
75
  [resources_1.Resource.ACCOUNT]: 'Compte',
119
- [resources_1.Resource.ACCOUNT_GENERAL_SETTINGS]: 'Parametres generaux du compte',
120
- [resources_1.Resource.ACCOUNT_LOCATION]: 'Lieu du compte',
121
- [resources_1.Resource.ACCOUNT_PREFERENCES]: 'Preferences du compte',
122
- [resources_1.Resource.ACCOUNT_SUMMARY]: 'Resume du compte',
123
- [resources_1.Resource.AVAILABLE_SLOT]: 'Creneau disponible',
124
76
  [resources_1.Resource.CALCULATED_MEASURE_MODEL]: 'Modele de mesure calculee',
77
+ [resources_1.Resource.CALENDAR_SETTINGS]: 'Parametres du calendrier',
125
78
  [resources_1.Resource.CALENDAR_SYNC]: 'Synchronisation du calendrier',
126
79
  [resources_1.Resource.CALENDAR_TOKEN]: 'Jeton de calendrier',
127
- [resources_1.Resource.CONTACT]: 'Contact',
128
80
  [resources_1.Resource.DOCUMENT_LAYOUT]: 'Mise en page du document',
129
81
  [resources_1.Resource.DOCUMENT_MODEL]: 'Modele de document',
82
+ [resources_1.Resource.GENERAL_SETTINGS]: 'Parametres generaux',
130
83
  [resources_1.Resource.GENERATED_DOCUMENT]: 'Document genere',
131
- [resources_1.Resource.LOG_RECORD]: 'Journal',
84
+ [resources_1.Resource.LOG_RECORDS]: 'Journaux',
85
+ [resources_1.Resource.LOCATION]: 'Lieu',
132
86
  [resources_1.Resource.MEASURE_MODEL]: 'Modele de mesure',
87
+ [resources_1.Resource.MEDICATION_SEARCH]: 'Recherche de medicaments',
133
88
  [resources_1.Resource.MEDICAL_HISTORY]: 'Antecedents medicaux',
134
89
  [resources_1.Resource.MEDICAL_HISTORY_MODEL]: "Modele d'antecedents medicaux",
135
90
  [resources_1.Resource.MEDICAL_SERVICE]: 'Service medical',
136
- [resources_1.Resource.MEDICAL_SERVICE_ASSIGNEES]: 'Assignations du service medical',
137
- [resources_1.Resource.MEDICAL_SERVICE_DESCRIPTION]: 'Description du service medical',
138
- [resources_1.Resource.MEDICAL_SERVICE_FEES]: 'Frais du service medical',
139
- [resources_1.Resource.MEDICAL_SERVICE_LOCATION]: 'Lieu du service medical',
140
91
  [resources_1.Resource.MEDICAL_SERVICE_NOTE]: 'Note du service medical',
141
- [resources_1.Resource.MEDICAL_SERVICE_SCHEDULE]: 'Planning du service medical',
142
- [resources_1.Resource.MEDICAL_SERVICE_STATUS]: 'Statut du service medical',
143
- [resources_1.Resource.MEDICAL_SERVICE_TIMESTAMPS]: 'Horodatages du service medical',
144
92
  [resources_1.Resource.MEMBERSHIP]: 'Adhesion',
145
- [resources_1.Resource.MEDICATION]: 'Medicament',
146
93
  [resources_1.Resource.OBSERVATION]: 'Observation',
147
94
  [resources_1.Resource.PATIENT]: 'Patient',
148
- [resources_1.Resource.PATIENT_MEDICAL_NOTES]: 'Notes medicales du patient',
149
- [resources_1.Resource.PATIENT_MEDICAL_PROPERTIES]: 'Proprietes medicales du patient',
150
95
  [resources_1.Resource.PATIENT_PAYMENT]: 'Paiement du patient',
151
- [resources_1.Resource.PATIENT_PROFILE]: 'Profil du patient',
152
- [resources_1.Resource.PATIENT_PUBLIC_PROPERTIES]: 'Proprietes publiques du patient',
153
- [resources_1.Resource.PATIENT_STATUS]: 'Statut du patient',
96
+ [resources_1.Resource.PREFERENCES]: 'Preferences',
154
97
  [resources_1.Resource.PRESCRIPTION]: 'Ordonnance',
155
98
  [resources_1.Resource.PRESCRIPTION_MODEL]: "Modele d'ordonnance",
156
99
  [resources_1.Resource.TASK_TYPE]: 'Type de tache',
157
100
  [resources_1.Resource.UPLOAD_DOCUMENT]: 'Document televerse',
158
101
  [resources_1.Resource.USER]: 'Utilisateur',
159
- [resources_1.Resource.USER_CALENDAR_PREFERENCES]: 'Preferences de calendrier utilisateur',
160
- [resources_1.Resource.USER_PREFERENCES]: 'Preferences utilisateur',
102
+ [resources_1.Resource.AVAILABLE_SLOTS]: 'Creneaux disponibles',
103
+ };
104
+ const enResourceCategory = {
105
+ [resources_1.ResourceCategory.CORE]: 'Core',
106
+ [resources_1.ResourceCategory.CLINICAL]: 'Clinical',
107
+ [resources_1.ResourceCategory.DOCUMENTS]: 'Documents',
108
+ [resources_1.ResourceCategory.BILLING]: 'Billing',
109
+ [resources_1.ResourceCategory.MEMBERSHIP]: 'Membership',
110
+ [resources_1.ResourceCategory.INTEGRATION]: 'Integration',
111
+ [resources_1.ResourceCategory.SETTINGS]: 'Settings',
112
+ [resources_1.ResourceCategory.SCHEDULING]: 'Scheduling',
113
+ [resources_1.ResourceCategory.EXTERNAL]: 'External',
114
+ [resources_1.ResourceCategory.SYSTEM]: 'System',
115
+ };
116
+ const frResourceCategory = {
117
+ [resources_1.ResourceCategory.CORE]: 'Noyau',
118
+ [resources_1.ResourceCategory.CLINICAL]: 'Clinique',
119
+ [resources_1.ResourceCategory.DOCUMENTS]: 'Documents',
120
+ [resources_1.ResourceCategory.BILLING]: 'Facturation',
121
+ [resources_1.ResourceCategory.MEMBERSHIP]: 'Adhesion',
122
+ [resources_1.ResourceCategory.INTEGRATION]: 'Integration',
123
+ [resources_1.ResourceCategory.SETTINGS]: 'Parametres',
124
+ [resources_1.ResourceCategory.SCHEDULING]: 'Planification',
125
+ [resources_1.ResourceCategory.EXTERNAL]: 'Externe',
126
+ [resources_1.ResourceCategory.SYSTEM]: 'Systeme',
161
127
  };
162
128
  function humanizeKey(key) {
163
129
  return key
@@ -174,6 +140,9 @@ function getResourceLabel(resource, locale = 'us-EN') {
174
140
  return frResourceOverrides[resource] ?? humanizeKey(resource);
175
141
  return humanizeKey(resource);
176
142
  }
143
+ function getResourceCategoryLabel(category, locale = 'us-EN') {
144
+ return locale === 'fr-FR' ? frResourceCategory[category] : enResourceCategory[category];
145
+ }
177
146
  function getOperationLabel(operation, locale = 'us-EN', opts) {
178
147
  const order = opts?.order ?? 'action-resource';
179
148
  const sep = opts?.separator ?? ' ';
@@ -184,4 +153,4 @@ function getOperationLabel(operation, locale = 'us-EN', opts) {
184
153
  const r = getResourceLabel(op.resource, locale);
185
154
  return order === 'resource-action' ? `${r}${sep}${a}` : `${a}${sep}${r}`;
186
155
  }
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvbGFiZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMEtBLHdDQUVDO0FBRUQsNENBR0M7QUFFRCw4Q0FhQztBQWhNRCx1Q0FBbUM7QUFDbkMsMkNBQXdDO0FBQ3hDLDJDQUF1QztBQUl2QyxNQUFNLFFBQVEsR0FBMkI7SUFDdkMsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDbkIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU87SUFDdkIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVc7SUFDL0IsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFB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QUMsUUFBUSxDQUFDLENBQUM7SUFDdEYsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUMvQixTQUE2QixFQUM3QixTQUFpQixPQUFPLEVBQ3hCLElBQTRFO0lBRTVFLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLElBQUksaUJBQWlCLENBQUM7SUFDL0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxFQUFFLFNBQVMsSUFBSSxHQUFHLENBQUM7SUFFbkMsTUFBTSxFQUFFLEdBQUcsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxxQkFBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZGLElBQUksQ0FBQyxFQUFFO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDbkIsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxPQUFPLEtBQUssS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbic7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4vcmVzb3VyY2VzJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlID0gJ2ZyLUZSJyB8ICd1cy1FTic7XG5cbmNvbnN0IGVuQWN0aW9uOiBSZWNvcmQ8QWN0aW9uLCBzdHJpbmc+ID0ge1xuICBbQWN0aW9uLkNSRUFURV06ICdDcmVhdGUnLFxuICBbQWN0aW9uLlJFQURdOiAnUmVhZCcsXG4gIFtBY3Rpb24uREVMRVRFXTogJ0RlbGV0ZScsXG4gIFtBY3Rpb24uUkVUUklFVkVdOiAnUmV0cmlldmUnLFxuICBbQWN0aW9uLlVQREFURV06ICdVcGRhdGUnLFxuICBbQWN0aW9uLlBVVF06ICdQdXQnLFxuICBbQWN0aW9uLkxJU1RdOiAnTGlzdCcsXG4gIFtBY3Rpb24uTUFOQUdFXTogJ01hbmFnZScsXG4gIFtBY3Rpb24uVklFV106ICdWaWV3JyxcbiAgW0FjdGlvbi5TRUFSQ0hdOiAnU2VhcmNoJyxcbiAgW0FjdGlvbi5HUkFOVF06ICdHcmFudCcsXG4gIFtBY3Rpb24uUkVWT0tFXTogJ1Jldm9rZScsXG4gIFtBY3Rpb24uUFJFU0NSSUJFXTogJ1ByZXNjcmliZScsXG4gIFtBY3Rpb24uRElBR05PU0VdOiAnRGlhZ25vc2UnLFxuICBbQWN0aW9uLlNDSEVEVUxFXTogJ1NjaGVkdWxlJyxcbiAgW0FjdGlvbi5DQU5DRUxdOiAnQ2FuY2VsJyxcbiAgW0FjdGlvbi5BUFBST1ZFXTogJ0FwcHJvdmUnLFxuICBbQWN0aW9uLlJFSkVDVF06ICdSZWplY3QnLFxuICBbQWN0aW9uLlNJR05dOiAnU2lnbicsXG4gIFtBY3Rpb24uVkVSSUZZXTogJ1ZlcmlmeScsXG4gIFtBY3Rpb24uUkVDT1ZFUl06ICdSZWNvdmVyJyxcbiAgW0FjdGlvbi5ESVNBQkxFXTogJ0Rpc2FibGUnLFxuICBbQWN0aW9uLlNFVF9NRURJQ0FMX1NFUlZJQ0VfU1RBVFVTXTogJ1NldCBNZWRpY2FsIFNlcnZpY2UgU3RhdHVzJyxcbiAgW0FjdGlvbi5TRVRfTUVESUNBTF9TRVJWSUNFX0ZFRVNdOiAnU2V0IE1lZGljYWwgU2VydmljZSBGZWVzJyxcbiAgW0FjdGlvbi5DSEVDS19JTl06ICdDaGVjayBJbicsXG4gIFtBY3Rpb24uVU5ET19DSEVDS19JTl06ICdVbmRvIENoZWNrIEluJyxcbiAgW0FjdGlvbi5TVEFSVF9TRVJWSUNFXTogJ1N0YXJ0IFNlcnZpY2UnLFxuICBbQWN0aW9uLlVOU1RBUlRfU0VSVklDRV06ICdVbmRvIFN0YXJ0IFNlcnZpY2UnLFxuICBbQWN0aW9uLkNPTVBMRVRFX1NFUlZJQ0VdOiAnQ29tcGxldGUgU2VydmljZScsXG4gIFtBY3Rpb24uUkVPUEVOX0NPTVBMRVRFRF9TRVJWSUNFXTogJ1Jlb3BlbiBDb21wbGV0ZWQgU2VydmljZScsXG4gIFtBY3Rpb24uQ0FOQ0VMX1NFUlZJQ0VdOiAnQ2FuY2VsIFNlcnZpY2UnLFxuICBbQWN0aW9uLlVORE9fQ0FOQ0VMX1NFUlZJQ0VdOiAnVW5kbyBDYW5jZWwgU2VydmljZScsXG4gIFtBY3Rpb24uRk9SQ0VfUkVTRVRfU1RBVFVTXTogJ0ZvcmNlIFJlc2V0IFN0YXR1cycsXG4gIFtBY3Rpb24uQ09SUkVDVF9USU1FU1RBTVBTXTogJ0NvcnJlY3QgVGltZXN0YW1wcycsXG4gIFtBY3Rpb24uVVBEQVRFX1NUQVRVU106ICdVcGRhdGUgU3RhdHVzJyxcbiAgW0FjdGlvbi5WSUVXX1BBVElFTlRTXTogJ1ZpZXcgUGF0aWVudHMnLFxuICBbQWN0aW9uLlBVVF9QQVRJRU5UX1BBWU1FTlRdOiAnUHV0IFBhdGllbnQgUGF5bWVudCcsXG4gIFtBY3Rpb24uREVMRVRFX1BBVElFTlRfUEFZTUVOVF06ICdEZWxldGUgUGF0aWVudCBQYXltZW50JyxcbiAgW0FjdGlvbi5FWFBPUlRdOiAnRXhwb3J0JyxcbiAgW0FjdGlvbi5JTVBPUlRdOiAnSW1wb3J0JyxcbiAgW0FjdGlvbi5BUkNISVZFXTogJ0FyY2hpdmUnLFxuICBbQWN0aW9uLlJFU1RPUkVdOiAnUmVzdG9yZScsXG4gIFtBY3Rpb24uU0hBUkVdOiAnU2hhcmUnLFxuICBbQWN0aW9uLkRPV05MT0FEXTogJ0Rvd25sb2FkJyxcbiAgW0FjdGlvbi5VUExPQURdOiAnVXBsb2FkJyxcbiAgW0FjdGlvbi5FTkFCTEVfQ0FMRU5EQVJfU1lOQ106ICdFbmFibGUgQ2FsZW5kYXIgU3luYycsXG4gIFtBY3Rpb24uRElTQUJMRV9DQUxFTkRBUl9TWU5DXTogJ0Rpc2FibGUgQ2FsZW5kYXIgU3luYycsXG4gIFtBY3Rpb24uUkVHRU5FUkFURV9DQUxFTkRBUl9MSU5LXTogJ1JlZ2VuZXJhdGUgQ2FsZW5kYXIgTGluaycsXG4gIFtBY3Rpb24uTE9HSU5dOiAnTG9naW4nLFxuICBbQWN0aW9uLkxPR09VVF06ICdMb2dvdXQnLFxuICBbQWN0aW9uLkNPTkZJR1VSRV06ICdDb25maWd1cmUnLFxuICBbQWN0aW9uLkFVRElUXTogJ0F1ZGl0Jyxcbn07XG5cbmNvbnN0IGZyQWN0aW9uOiBSZWNvcmQ8QWN0aW9uLCBzdHJpbmc+ID0ge1xuICBbQWN0aW9uLkNSRUFURV06ICdDcmVlcicsXG4gIFtBY3Rpb24uUkVBRF06ICdMaXJlJyxcbiAgW0FjdGlvbi5ERUxFVEVdOiAnU3VwcHJpbWVyJyxcbiAgW0FjdGlvbi5SRVRSSUVWRV06ICdSZWN1cGVyZXInLFxuICBbQWN0aW9uLlVQREFURV06ICdNZXR0cmUgYSBqb3VyJyxcbiAgW0FjdGlvbi5QVVRdOiAnTWV0dHJlJyxcbiAgW0FjdGlvbi5MSVNUXTogJ0xpc3RlcicsXG4gIFtBY3Rpb24uTUFOQUdFXTogJ0dlcmVyJyxcbiAgW0FjdGlvbi5WSUVXXTogJ1ZvaXInLFxuICBbQWN0aW9uLlNFQVJDSF06ICdSZWNoZXJjaGVyJyxcbiAgW0FjdGlvbi5HUkFOVF06ICdBY2NvcmRlcicsXG4gIFtBY3Rpb24uUkVWT0tFXTogJ1Jldm9xdWVyJyxcbiAgW0FjdGlvbi5QUkVTQ1JJQkVdOiAnUHJlc2NyaXJlJyxcbiAgW0FjdGlvbi5ESUFHTk9TRV06ICdEaWFnbm9zdGlxdWVyJyxcbiAgW0FjdGlvbi5TQ0hFRFVMRV06ICdQbGFuaWZpZXInLFxuICBbQWN0aW9uLkNBTkNFTF06ICdBbm51bGVyJyxcbiAgW0FjdGlvbi5BUFBST1ZFXTogJ0FwcHJvdXZlcicsXG4gIFtBY3Rpb24uUkVKRUNUXTogJ1JlamV0ZXInLFxuICBbQWN0aW9uLlNJR05dOiAnU2lnbmVyJyxcbiAgW0FjdGlvbi5WRVJJRlldOiAnVmVyaWZpZXInLFxuICBbQWN0aW9uLlJFQ09WRVJdOiAnUmVjdXBlcmVyJyxcbiAgW0FjdGlvbi5ESVNBQkxFXTogJ0Rlc2FjdGl2ZXInLFxuICBbQWN0aW9uLlNFVF9NRURJQ0FMX1NFUlZJQ0VfU1RBVFVTXTogJ0RlZmluaXIgbGUgc3RhdHV0IGR1IHNlcnZpY2UgbWVkaWNhbCcsXG4gIFtBY3Rpb24uU0VUX01FRElDQUxfU0VSVklDRV9GRUVTXTogJ0RlZmluaXIgbGVzIGZyYWlzIGR1IHNlcnZpY2UgbWVkaWNhbCcsXG4gIFtBY3Rpb24uQ0hFQ0tfSU5dOiAnRW5yZWdpc3RyZW1lbnQgYSBsIGFycml2ZWUnLFxuICBbQWN0aW9uLlVORE9fQ0hFQ0tfSU5dOiAnQW5udWxlciBsIGVucmVnaXN0cmVtZW50JyxcbiAgW0FjdGlvbi5TVEFSVF9TRVJWSUNFXTogJ0NvbW1lbmNlciBsZSBzZXJ2aWNlJyxcbiAgW0FjdGlvbi5VTlNUQVJUX1NFUlZJQ0VdOiAnQW5udWxlciBsZSBkZWJ1dCBkdSBzZXJ2aWNlJyxcbiAgW0FjdGlvbi5DT01QTEVURV9TRVJWSUNFXTogJ1Rlcm1pbmVyIGxlIHNlcnZpY2UnLFxuICBbQWN0aW9uLlJFT1BFTl9DT01QTEVURURfU0VSVklDRV06ICdSZW91dnJpciBsZSBzZXJ2aWNlIHRlcm1pbmUnLFxuICBbQWN0aW9uLkNBTkNFTF9TRVJWSUNFXTogJ0FubnVsZXIgbGUgc2VydmljZScsXG4gIFtBY3Rpb24uVU5ET19DQU5DRUxfU0VSVklDRV06ICdBbm51bGVyIGwgYW5udWxhdGlvbiBkdSBzZXJ2aWNlJyxcbiAgW0FjdGlvbi5GT1JDRV9SRVNFVF9TVEFUVVNdOiAnUmVpbml0aWFsaXNlciBsZSBzdGF0dXQnLFxuICBbQWN0aW9uLkNPUlJFQ1RfVElNRVNUQU1QU106ICdDb3JyaWdlciBsZXMgaG9yb2RhdGFnZXMnLFxuICBbQWN0aW9uLlVQREFURV9TVEFUVVNdOiAnTWV0dHJlIGEgam91ciBsZSBzdGF0dXQnLFxuICBbQWN0aW9uLlZJRVdfUEFUSUVOVFNdOiAnVm9pciBsZXMgcGF0aWVudHMnLFxuICBbQWN0aW9uLlBVVF9QQVRJRU5UX1BBWU1FTlRdOiAnRW5yZWdpc3RyZXIgbGUgcGFpZW1lbnQgcGF0aWVudCcsXG4gIFtBY3Rpb24uREVMRVRFX1BBVElFTlRfUEFZTUVOVF06ICdTdXBwcmltZXIgbGUgcGFpZW1lbnQgcGF0aWVudCcsXG4gIFtBY3Rpb24uRVhQT1JUXTogJ0V4cG9ydGVyJyxcbiAgW0FjdGlvbi5JTVBPUlRdOiAnSW1wb3J0ZXInLFxuICBbQWN0aW9uLkFSQ0hJVkVdOiAnQXJjaGl2ZXInLFxuICBbQWN0aW9uLlJFU1RPUkVdOiAnUmVzdGF1cmVyJyxcbiAgW0FjdGlvbi5TSEFSRV06ICdQYXJ0YWdlcicsXG4gIFtBY3Rpb24uRE9XTkxPQURdOiAnVGVsZWNoYXJnZXInLFxuICBbQWN0aW9uLlVQTE9BRF06ICdUZWxldmVyc2VyJyxcbiAgW0FjdGlvbi5FTkFCTEVfQ0FMRU5EQVJfU1lOQ106ICdBY3RpdmVyIGxhIHN5bmNocm9uaXNhdGlvbiBkdSBjYWxlbmRyaWVyJyxcbiAgW0FjdGlvbi5ESVNBQkxFX0NBTEVOREFSX1NZTkNdOiAnRGVzYWN0aXZlciBsYSBzeW5jaHJvbmlzYXRpb24gZHUgY2FsZW5kcmllcicsXG4gIFtBY3Rpb24uUkVHRU5FUkFURV9DQUxFTkRBUl9MSU5LXTogJ1JlZ2VuZXJlciBsZSBsaWVuIGR1IGNhbGVuZHJpZXInLFxuICBbQWN0aW9uLkxPR0lOXTogJ0Nvbm5leGlvbicsXG4gIFtBY3Rpb24uTE9HT1VUXTogJ0RlY29ubmV4aW9uJyxcbiAgW0FjdGlvbi5DT05GSUdVUkVdOiAnQ29uZmlndXJlcicsXG4gIFtBY3Rpb24uQVVESVRdOiAnQXVkaXRlcicsXG59O1xuXG5jb25zdCBmclJlc291cmNlT3ZlcnJpZGVzOiBQYXJ0aWFsPFJlY29yZDxSZXNvdXJjZSwgc3RyaW5nPj4gPSB7XG4gIFtSZXNvdXJjZS5BQ0NPVU5UXTogJ0NvbXB0ZScsXG4gIFtSZXNvdXJjZS5BQ0NPVU5UX0dFTkVSQUxfU0VUVElOR1NdOiAnUGFyYW1ldHJlcyBnZW5lcmF1eCBkdSBjb21wdGUnLFxuICBbUmVzb3VyY2UuQUNDT1VOVF9MT0NBVElPTl06ICdMaWV1IGR1IGNvbXB0ZScsXG4gIFtSZXNvdXJjZS5BQ0NPVU5UX1BSRUZFUkVOQ0VTXTogJ1ByZWZlcmVuY2VzIGR1IGNvbXB0ZScsXG4gIFtSZXNvdXJjZS5BQ0NPVU5UX1NVTU1BUlldOiAnUmVzdW1lIGR1IGNvbXB0ZScsXG4gIFtSZXNvdXJjZS5BVkFJTEFCTEVfU0xPVF06ICdDcmVuZWF1IGRpc3BvbmlibGUnLFxuICBbUmVzb3VyY2UuQ0FMQ1VMQVRFRF9NRUFTVVJFX01PREVMXTogJ01vZGVsZSBkZSBtZXN1cmUgY2FsY3VsZWUnLFxuICBbUmVzb3VyY2UuQ0FMRU5EQVJfU1lOQ106ICdTeW5jaHJvbmlzYXRpb24gZHUgY2FsZW5kcmllcicsXG4gIFtSZXNvdXJjZS5DQUxFTkRBUl9UT0tFTl06ICdKZXRvbiBkZSBjYWxlbmRyaWVyJyxcbiAgW1Jlc291cmNlLkNPTlRBQ1RdOiAnQ29udGFjdCcsXG4gIFtSZXNvdXJjZS5ET0NVTUVOVF9MQVlPVVRdOiAnTWlzZSBlbiBwYWdlIGR1IGRvY3VtZW50JyxcbiAgW1Jlc291cmNlLkRPQ1VNRU5UX01PREVMXTogJ01vZGVsZSBkZSBkb2N1bWVudCcsXG4gIFtSZXNvdXJjZS5HRU5FUkFURURfRE9DVU1FTlRdOiAnRG9jdW1lbnQgZ2VuZXJlJyxcbiAgW1Jlc291cmNlLkxPR19SRUNPUkRdOiAnSm91cm5hbCcsXG4gIFtSZXNvdXJjZS5NRUFTVVJFX01PREVMXTogJ01vZGVsZSBkZSBtZXN1cmUnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9ISVNUT1JZXTogJ0FudGVjZWRlbnRzIG1lZGljYXV4JyxcbiAgW1Jlc291cmNlLk1FRElDQUxfSElTVE9SWV9NT0RFTF06IFwiTW9kZWxlIGQnYW50ZWNlZGVudHMgbWVkaWNhdXhcIixcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV06ICdTZXJ2aWNlIG1lZGljYWwnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFX0FTU0lHTkVFU106ICdBc3NpZ25hdGlvbnMgZHUgc2VydmljZSBtZWRpY2FsJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV9ERVNDUklQVElPTl06ICdEZXNjcmlwdGlvbiBkdSBzZXJ2aWNlIG1lZGljYWwnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFX0ZFRVNdOiAnRnJhaXMgZHUgc2VydmljZSBtZWRpY2FsJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV9MT0NBVElPTl06ICdMaWV1IGR1IHNlcnZpY2UgbWVkaWNhbCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VfTk9URV06ICdOb3RlIGR1IHNlcnZpY2UgbWVkaWNhbCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VfU0NIRURVTEVdOiAnUGxhbm5pbmcgZHUgc2VydmljZSBtZWRpY2FsJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV9TVEFUVVNdOiAnU3RhdHV0IGR1IHNlcnZpY2UgbWVkaWNhbCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VfVElNRVNUQU1QU106ICdIb3JvZGF0YWdlcyBkdSBzZXJ2aWNlIG1lZGljYWwnLFxuICBbUmVzb3VyY2UuTUVNQkVSU0hJUF06ICdBZGhlc2lvbicsXG4gIFtSZXNvdXJjZS5NRURJQ0FUSU9OXTogJ01lZGljYW1lbnQnLFxuICBbUmVzb3VyY2UuT0JTRVJWQVRJT05dOiAnT2JzZXJ2YXRpb24nLFxuICBbUmVzb3VyY2UuUEFUSUVOVF06ICdQYXRpZW50JyxcbiAgW1Jlc291cmNlLlBBVElFTlRfTUVESUNBTF9OT1RFU106ICdOb3RlcyBtZWRpY2FsZXMgZHUgcGF0aWVudCcsXG4gIFtSZXNvdXJjZS5QQVRJRU5UX01FRElDQUxfUFJPUEVSVElFU106ICdQcm9wcmlldGVzIG1lZGljYWxlcyBkdSBwYXRpZW50JyxcbiAgW1Jlc291cmNlLlBBVElFTlRfUEFZTUVOVF06ICdQYWllbWVudCBkdSBwYXRpZW50JyxcbiAgW1Jlc291cmNlLlBBVElFTlRfUFJPRklMRV06ICdQcm9maWwgZHUgcGF0aWVudCcsXG4gIFtSZXNvdXJjZS5QQVRJRU5UX1BVQkxJQ19QUk9QRVJUSUVTXTogJ1Byb3ByaWV0ZXMgcHVibGlxdWVzIGR1IHBhdGllbnQnLFxuICBbUmVzb3VyY2UuUEFUSUVOVF9TVEFUVVNdOiAnU3RhdHV0IGR1IHBhdGllbnQnLFxuICBbUmVzb3VyY2UuUFJFU0NSSVBUSU9OXTogJ09yZG9ubmFuY2UnLFxuICBbUmVzb3VyY2UuUFJFU0NSSVBUSU9OX01PREVMXTogXCJNb2RlbGUgZCdvcmRvbm5hbmNlXCIsXG4gIFtSZXNvdXJjZS5UQVNLX1RZUEVdOiAnVHlwZSBkZSB0YWNoZScsXG4gIFtSZXNvdXJjZS5VUExPQURfRE9DVU1FTlRdOiAnRG9jdW1lbnQgdGVsZXZlcnNlJyxcbiAgW1Jlc291cmNlLlVTRVJdOiAnVXRpbGlzYXRldXInLFxuICBbUmVzb3VyY2UuVVNFUl9DQUxFTkRBUl9QUkVGRVJFTkNFU106ICdQcmVmZXJlbmNlcyBkZSBjYWxlbmRyaWVyIHV0aWxpc2F0ZXVyJyxcbiAgW1Jlc291cmNlLlVTRVJfUFJFRkVSRU5DRVNdOiAnUHJlZmVyZW5jZXMgdXRpbGlzYXRldXInLFxufTtcblxuZnVuY3Rpb24gaHVtYW5pemVLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4ga2V5XG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3BsaXQoJ18nKVxuICAgIC5tYXAoKHcpID0+IHcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3LnNsaWNlKDEpKVxuICAgIC5qb2luKCcgJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpb25MYWJlbChhY3Rpb246IEFjdGlvbiwgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGxvY2FsZSA9PT0gJ2ZyLUZSJyA/IGZyQWN0aW9uW2FjdGlvbl0gOiBlbkFjdGlvblthY3Rpb25dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMYWJlbChyZXNvdXJjZTogUmVzb3VyY2UsIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyk6IHN0cmluZyB7XG4gIGlmIChsb2NhbGUgPT09ICdmci1GUicpIHJldHVybiBmclJlc291cmNlT3ZlcnJpZGVzW3Jlc291cmNlXSA/PyBodW1hbml6ZUtleShyZXNvdXJjZSk7XG4gIHJldHVybiBodW1hbml6ZUtleShyZXNvdXJjZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRpb25MYWJlbChcbiAgb3BlcmF0aW9uOiBPcGVyYXRpb24gfCBzdHJpbmcsXG4gIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyxcbiAgb3B0cz86IHsgb3JkZXI/OiAnYWN0aW9uLXJlc291cmNlJyB8ICdyZXNvdXJjZS1hY3Rpb24nOyBzZXBhcmF0b3I/OiBzdHJpbmcgfSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG9yZGVyID0gb3B0cz8ub3JkZXIgPz8gJ2FjdGlvbi1yZXNvdXJjZSc7XG4gIGNvbnN0IHNlcCA9IG9wdHM/LnNlcGFyYXRvciA/PyAnICc7XG5cbiAgY29uc3Qgb3AgPSB0eXBlb2Ygb3BlcmF0aW9uID09PSAnc3RyaW5nJyA/IE9wZXJhdGlvbi5mcm9tU3RyaW5nKG9wZXJhdGlvbikgOiBvcGVyYXRpb247XG4gIGlmICghb3ApIHJldHVybiAnJztcbiAgY29uc3QgYSA9IGdldEFjdGlvbkxhYmVsKG9wLmFjdGlvbiwgbG9jYWxlKTtcbiAgY29uc3QgciA9IGdldFJlc291cmNlTGFiZWwob3AucmVzb3VyY2UsIGxvY2FsZSk7XG4gIHJldHVybiBvcmRlciA9PT0gJ3Jlc291cmNlLWFjdGlvbicgPyBgJHtyfSR7c2VwfSR7YX1gIDogYCR7YX0ke3NlcH0ke3J9YDtcbn1cbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvbGFiZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUpBLHdDQUVDO0FBRUQsNENBR0M7QUFFRCw0REFFQztBQUVELDhDQWFDO0FBM0tELHVDQUFtQztBQUNuQywyQ0FBd0M7QUFDeEMsMkNBQXlEO0FBSXpELE1BQU0sUUFBUSxHQUEyQjtJQUN2QyxDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUTtJQUN6QixDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUTtJQUN6QixDQUFDLGdCQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUztJQUMzQixDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUTtJQUN6QixDQUFDLGdCQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUztJQUMzQixDQUFDLGdCQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSxvQkFBb0I7SUFDakQsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFFekIsQ0FBQyxnQkFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLGNBQWM7SUFDckMsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVM7SUFFM0IsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU87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QUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlLCBSZXNvdXJjZUNhdGVnb3J5IH0gZnJvbSAnLi9yZXNvdXJjZXMnO1xuXG5leHBvcnQgdHlwZSBMb2NhbGUgPSAnZnItRlInIHwgJ3VzLUVOJztcblxuY29uc3QgZW5BY3Rpb246IFJlY29yZDxBY3Rpb24sIHN0cmluZz4gPSB7XG4gIFtBY3Rpb24uQ1JFQVRFXTogJ0NyZWF0ZScsXG4gIFtBY3Rpb24uREVMRVRFXTogJ0RlbGV0ZScsXG4gIFtBY3Rpb24uRElTQUJMRV06ICdEaXNhYmxlJyxcbiAgW0FjdGlvbi5FTkFCTEVdOiAnRW5hYmxlJyxcbiAgW0FjdGlvbi5SRUNPVkVSXTogJ1JlY292ZXInLFxuICBbQWN0aW9uLlRSQU5TRkVSX09XTkVSU0hJUF06ICdUcmFuc2ZlciBPd25lcnNoaXAnLFxuICBbQWN0aW9uLlZJRVddOiAnVmlldycsXG4gIFtBY3Rpb24uVVBEQVRFXTogJ1VwZGF0ZScsXG5cbiAgW0FjdGlvbi5ST1RBVEVfVE9LRU5dOiAnUm90YXRlIFRva2VuJyxcbiAgW0FjdGlvbi5HRU5FUkFURV06ICdHZW5lcmF0ZScsXG4gIFtBY3Rpb24uUFJFVklFV106ICdQcmV2aWV3JyxcblxuICBbQWN0aW9uLkNBTkNFTF06ICdDYW5jZWwnLFxuICBbQWN0aW9uLkNIRUNLX0lOXTogJ0NoZWNrIEluJyxcbiAgW0FjdGlvbi5DT01QTEVURV06ICdDb21wbGV0ZScsXG4gIFtBY3Rpb24uUkVPUEVOXTogJ1Jlb3BlbicsXG4gIFtBY3Rpb24uUkVTRVRdOiAnUmVzZXQnLFxuICBbQWN0aW9uLlNUQVJUXTogJ1N0YXJ0JyxcbiAgW0FjdGlvbi5VTkRPX0NBTkNFTF06ICdVbmRvIENhbmNlbCcsXG4gIFtBY3Rpb24uVU5ET19DSEVDS19JTl06ICdVbmRvIENoZWNrIEluJyxcbiAgW0FjdGlvbi5VTlNUQVJUXTogJ1Vuc3RhcnQnLFxuXG4gIFtBY3Rpb24uQVNTSUdOXTogJ0Fzc2lnbicsXG4gIFtBY3Rpb24uVVBEQVRFX1NUQVRVU106ICdVcGRhdGUgU3RhdHVzJyxcbiAgW0FjdGlvbi5VUERBVEVfU0NIRURVTEVdOiAnVXBkYXRlIFNjaGVkdWxlJyxcbiAgW0FjdGlvbi5DT1JSRUNUX1RJTUVTVEFNUFNdOiAnQ29ycmVjdCBUaW1lc3RhbXBzJyxcbiAgW0FjdGlvbi5VUERBVEVfVFlQRV06ICdVcGRhdGUgVHlwZScsXG5cbiAgW0FjdGlvbi5TRUFSQ0hdOiAnU2VhcmNoJyxcbiAgW0FjdGlvbi5BU1NJR05fUk9MRVNdOiAnQXNzaWduIFJvbGVzJyxcbiAgW0FjdGlvbi5JTlZJVEVdOiAnSW52aXRlJyxcbiAgW0FjdGlvbi5SRU1PVkVdOiAnUmVtb3ZlJyxcbiAgW0FjdGlvbi5VUExPQURdOiAnVXBsb2FkJyxcbn07XG5cbmNvbnN0IGZyQWN0aW9uOiBSZWNvcmQ8QWN0aW9uLCBzdHJpbmc+ID0ge1xuICBbQWN0aW9uLkNSRUFURV06ICdDcmVlcicsXG4gIFtBY3Rpb24uREVMRVRFXTogJ1N1cHByaW1lcicsXG4gIFtBY3Rpb24uRElTQUJMRV06ICdEZXNhY3RpdmVyJyxcbiAgW0FjdGlvbi5FTkFCTEVdOiAnQWN0aXZlcicsXG4gIFtBY3Rpb24uUkVDT1ZFUl06ICdSZWN1cGVyZXInLFxuICBbQWN0aW9uLlRSQU5TRkVSX09XTkVSU0hJUF06ICdUcmFuc2ZlcmVyIGxhIHByb3ByaWV0ZScsXG4gIFtBY3Rpb24uVklFV106ICdWb2lyJyxcbiAgW0FjdGlvbi5VUERBVEVdOiAnTWV0dHJlIGEgam91cicsXG5cbiAgW0FjdGlvbi5ST1RBVEVfVE9LRU5dOiAnUmVub3V2ZWxlciBsZSBqZXRvbicsXG4gIFtBY3Rpb24uR0VORVJBVEVdOiAnR2VuZXJlcicsXG4gIFtBY3Rpb24uUFJFVklFV106ICdQcmV2aXN1YWxpc2VyJyxcblxuICBbQWN0aW9uLkNBTkNFTF06ICdBbm51bGVyJyxcbiAgW0FjdGlvbi5DSEVDS19JTl06ICdFbnJlZ2lzdHJlciBsIGFycml2ZWUnLFxuICBbQWN0aW9uLkNPTVBMRVRFXTogJ1Rlcm1pbmVyJyxcbiAgW0FjdGlvbi5SRU9QRU5dOiAnUmVvdXZyaXInLFxuICBbQWN0aW9uLlJFU0VUXTogJ1JlaW5pdGlhbGlzZXInLFxuICBbQWN0aW9uLlNUQVJUXTogJ0RlbWFycmVyJyxcbiAgW0FjdGlvbi5VTkRPX0NBTkNFTF06ICdBbm51bGVyIGwgYW5udWxhdGlvbicsXG4gIFtBY3Rpb24uVU5ET19DSEVDS19JTl06ICdBbm51bGVyIGwgZW5yZWdpc3RyZW1lbnQnLFxuICBbQWN0aW9uLlVOU1RBUlRdOiAnQW5udWxlciBsZSBkZW1hcnJhZ2UnLFxuXG4gIFtBY3Rpb24uQVNTSUdOXTogJ0Fzc2lnbmVyJyxcbiAgW0FjdGlvbi5DT1JSRUNUX1RJTUVTVEFNUFNdOiAnQ29ycmlnZXIgbGVzIGhvcm9kYXRhZ2VzJyxcbiAgW0FjdGlvbi5VUERBVEVfU1RBVFVTXTogJ01ldHRyZSBhIGpvdXIgbGUgc3RhdHV0JyxcbiAgW0FjdGlvbi5VUERBVEVfU0NIRURVTEVdOiAnTWV0dHJlIGEgam91ciBsZSBwbGFubmluZycsXG4gIFtBY3Rpb24uVVBEQVRFX1RZUEVdOiAnTWV0dHJlIGEgam91ciBsZSB0eXBlJyxcblxuICBbQWN0aW9uLlNFQVJDSF06ICdSZWNoZXJjaGVyJyxcbiAgW0FjdGlvbi5BU1NJR05fUk9MRVNdOiAnQXNzaWduZXIgbGVzIHJvbGVzJyxcbiAgW0FjdGlvbi5JTlZJVEVdOiAnSW52aXRlcicsXG4gIFtBY3Rpb24uUkVNT1ZFXTogJ1JldGlyZXInLFxuICBbQWN0aW9uLlVQTE9BRF06ICdUZWxldmVyc2VyJyxcbn07XG5cbmNvbnN0IGZyUmVzb3VyY2VPdmVycmlkZXM6IFBhcnRpYWw8UmVjb3JkPFJlc291cmNlLCBzdHJpbmc+PiA9IHtcbiAgW1Jlc291cmNlLkFDQ09VTlRdOiAnQ29tcHRlJyxcbiAgW1Jlc291cmNlLkNBTENVTEFURURfTUVBU1VSRV9NT0RFTF06ICdNb2RlbGUgZGUgbWVzdXJlIGNhbGN1bGVlJyxcbiAgW1Jlc291cmNlLkNBTEVOREFSX1NFVFRJTkdTXTogJ1BhcmFtZXRyZXMgZHUgY2FsZW5kcmllcicsXG4gIFtSZXNvdXJjZS5DQUxFTkRBUl9TWU5DXTogJ1N5bmNocm9uaXNhdGlvbiBkdSBjYWxlbmRyaWVyJyxcbiAgW1Jlc291cmNlLkNBTEVOREFSX1RPS0VOXTogJ0pldG9uIGRlIGNhbGVuZHJpZXInLFxuICBbUmVzb3VyY2UuRE9DVU1FTlRfTEFZT1VUXTogJ01pc2UgZW4gcGFnZSBkdSBkb2N1bWVudCcsXG4gIFtSZXNvdXJjZS5ET0NVTUVOVF9NT0RFTF06ICdNb2RlbGUgZGUgZG9jdW1lbnQnLFxuICBbUmVzb3VyY2UuR0VORVJBTF9TRVRUSU5HU106ICdQYXJhbWV0cmVzIGdlbmVyYXV4JyxcbiAgW1Jlc291cmNlLkdFTkVSQVRFRF9ET0NVTUVOVF06ICdEb2N1bWVudCBnZW5lcmUnLFxuICBbUmVzb3VyY2UuTE9HX1JFQ09SRFNdOiAnSm91cm5hdXgnLFxuICBbUmVzb3VyY2UuTE9DQVRJT05dOiAnTGlldScsXG4gIFtSZXNvdXJjZS5NRUFTVVJFX01PREVMXTogJ01vZGVsZSBkZSBtZXN1cmUnLFxuICBbUmVzb3VyY2UuTUVESUNBVElPTl9TRUFSQ0hdOiAnUmVjaGVyY2hlIGRlIG1lZGljYW1lbnRzJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfSElTVE9SWV06ICdBbnRlY2VkZW50cyBtZWRpY2F1eCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX0hJU1RPUllfTU9ERUxdOiBcIk1vZGVsZSBkJ2FudGVjZWRlbnRzIG1lZGljYXV4XCIsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VdOiAnU2VydmljZSBtZWRpY2FsJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV9OT1RFXTogJ05vdGUgZHUgc2VydmljZSBtZWRpY2FsJyxcbiAgW1Jlc291cmNlLk1FTUJFUlNISVBdOiAnQWRoZXNpb24nLFxuICBbUmVzb3VyY2UuT0JTRVJWQVRJT05dOiAnT2JzZXJ2YXRpb24nLFxuICBbUmVzb3VyY2UuUEFUSUVOVF06ICdQYXRpZW50JyxcbiAgW1Jlc291cmNlLlBBVElFTlRfUEFZTUVOVF06ICdQYWllbWVudCBkdSBwYXRpZW50JyxcbiAgW1Jlc291cmNlLlBSRUZFUkVOQ0VTXTogJ1ByZWZlcmVuY2VzJyxcbiAgW1Jlc291cmNlLlBSRVNDUklQVElPTl06ICdPcmRvbm5hbmNlJyxcbiAgW1Jlc291cmNlLlBSRVNDUklQVElPTl9NT0RFTF06IFwiTW9kZWxlIGQnb3Jkb25uYW5jZVwiLFxuICBbUmVzb3VyY2UuVEFTS19UWVBFXTogJ1R5cGUgZGUgdGFjaGUnLFxuICBbUmVzb3VyY2UuVVBMT0FEX0RPQ1VNRU5UXTogJ0RvY3VtZW50IHRlbGV2ZXJzZScsXG4gIFtSZXNvdXJjZS5VU0VSXTogJ1V0aWxpc2F0ZXVyJyxcbiAgW1Jlc291cmNlLkFWQUlMQUJMRV9TTE9UU106ICdDcmVuZWF1eCBkaXNwb25pYmxlcycsXG59O1xuXG5jb25zdCBlblJlc291cmNlQ2F0ZWdvcnk6IFJlY29yZDxSZXNvdXJjZUNhdGVnb3J5LCBzdHJpbmc+ID0ge1xuICBbUmVzb3VyY2VDYXRlZ29yeS5DT1JFXTogJ0NvcmUnLFxuICBbUmVzb3VyY2VDYXRlZ29yeS5DTElOSUNBTF06ICdDbGluaWNhbCcsXG4gIFtSZXNvdXJjZUNhdGVnb3J5LkRPQ1VNRU5UU106ICdEb2N1bWVudHMnLFxuICBbUmVzb3VyY2VDYXRlZ29yeS5CSUxMSU5HXTogJ0JpbGxpbmcnLFxuICBbUmVzb3VyY2VDYXRlZ29yeS5NRU1CRVJTSElQXTogJ01lbWJlcnNoaXAnLFxuICBbUmVzb3VyY2VDYXRlZ29yeS5JTlRFR1JBVElPTl06ICdJbnRlZ3JhdGlvbicsXG4gIFtSZXNvdXJjZUNhdGVnb3J5LlNFVFRJTkdTXTogJ1NldHRpbmdzJyxcbiAgW1Jlc291cmNlQ2F0ZWdvcnkuU0NIRURVTElOR106ICdTY2hlZHVsaW5nJyxcbiAgW1Jlc291cmNlQ2F0ZWdvcnkuRVhURVJOQUxdOiAnRXh0ZXJuYWwnLFxuICBbUmVzb3VyY2VDYXRlZ29yeS5TWVNURU1dOiAnU3lzdGVtJyxcbn07XG5cbmNvbnN0IGZyUmVzb3VyY2VDYXRlZ29yeTogUmVjb3JkPFJlc291cmNlQ2F0ZWdvcnksIHN0cmluZz4gPSB7XG4gIFtSZXNvdXJjZUNhdGVnb3J5LkNPUkVdOiAnTm95YXUnLFxuICBbUmVzb3VyY2VDYXRlZ29yeS5DTElOSUNBTF06ICdDbGluaXF1ZScsXG4gIFtSZXNvdXJjZUNhdGVnb3J5LkRPQ1VNRU5UU106ICdEb2N1bWVudHMnLFxuICBbUmVzb3VyY2VDYXRlZ29yeS5CSUxMSU5HXTogJ0ZhY3R1cmF0aW9uJyxcbiAgW1Jlc291cmNlQ2F0ZWdvcnkuTUVNQkVSU0hJUF06ICdBZGhlc2lvbicsXG4gIFtSZXNvdXJjZUNhdGVnb3J5LklOVEVHUkFUSU9OXTogJ0ludGVncmF0aW9uJyxcbiAgW1Jlc291cmNlQ2F0ZWdvcnkuU0VUVElOR1NdOiAnUGFyYW1ldHJlcycsXG4gIFtSZXNvdXJjZUNhdGVnb3J5LlNDSEVEVUxJTkddOiAnUGxhbmlmaWNhdGlvbicsXG4gIFtSZXNvdXJjZUNhdGVnb3J5LkVYVEVSTkFMXTogJ0V4dGVybmUnLFxuICBbUmVzb3VyY2VDYXRlZ29yeS5TWVNURU1dOiAnU3lzdGVtZScsXG59O1xuXG5mdW5jdGlvbiBodW1hbml6ZUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBrZXlcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5zcGxpdCgnXycpXG4gICAgLm1hcCgodykgPT4gdy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHcuc2xpY2UoMSkpXG4gICAgLmpvaW4oJyAnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGlvbkxhYmVsKGFjdGlvbjogQWN0aW9uLCBsb2NhbGU6IExvY2FsZSA9ICd1cy1FTicpOiBzdHJpbmcge1xuICByZXR1cm4gbG9jYWxlID09PSAnZnItRlInID8gZnJBY3Rpb25bYWN0aW9uXSA6IGVuQWN0aW9uW2FjdGlvbl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZUxhYmVsKHJlc291cmNlOiBSZXNvdXJjZSwgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nKTogc3RyaW5nIHtcbiAgaWYgKGxvY2FsZSA9PT0gJ2ZyLUZSJykgcmV0dXJuIGZyUmVzb3VyY2VPdmVycmlkZXNbcmVzb3VyY2VdID8/IGh1bWFuaXplS2V5KHJlc291cmNlKTtcbiAgcmV0dXJuIGh1bWFuaXplS2V5KHJlc291cmNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlQ2F0ZWdvcnlMYWJlbChjYXRlZ29yeTogUmVzb3VyY2VDYXRlZ29yeSwgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGxvY2FsZSA9PT0gJ2ZyLUZSJyA/IGZyUmVzb3VyY2VDYXRlZ29yeVtjYXRlZ29yeV0gOiBlblJlc291cmNlQ2F0ZWdvcnlbY2F0ZWdvcnldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3BlcmF0aW9uTGFiZWwoXG4gIG9wZXJhdGlvbjogT3BlcmF0aW9uIHwgc3RyaW5nLFxuICBsb2NhbGU6IExvY2FsZSA9ICd1cy1FTicsXG4gIG9wdHM/OiB7IG9yZGVyPzogJ2FjdGlvbi1yZXNvdXJjZScgfCAncmVzb3VyY2UtYWN0aW9uJzsgc2VwYXJhdG9yPzogc3RyaW5nIH0sXG4pOiBzdHJpbmcge1xuICBjb25zdCBvcmRlciA9IG9wdHM/Lm9yZGVyID8/ICdhY3Rpb24tcmVzb3VyY2UnO1xuICBjb25zdCBzZXAgPSBvcHRzPy5zZXBhcmF0b3IgPz8gJyAnO1xuXG4gIGNvbnN0IG9wID0gdHlwZW9mIG9wZXJhdGlvbiA9PT0gJ3N0cmluZycgPyBPcGVyYXRpb24uZnJvbVN0cmluZyhvcGVyYXRpb24pIDogb3BlcmF0aW9uO1xuICBpZiAoIW9wKSByZXR1cm4gJyc7XG4gIGNvbnN0IGEgPSBnZXRBY3Rpb25MYWJlbChvcC5hY3Rpb24sIGxvY2FsZSk7XG4gIGNvbnN0IHIgPSBnZXRSZXNvdXJjZUxhYmVsKG9wLnJlc291cmNlLCBsb2NhbGUpO1xuICByZXR1cm4gb3JkZXIgPT09ICdyZXNvdXJjZS1hY3Rpb24nID8gYCR7cn0ke3NlcH0ke2F9YCA6IGAke2F9JHtzZXB9JHtyfWA7XG59XG4iXX0=